Messages in this thread | | | Subject | Re: [PATCH v3 3/9] xen/balloon: Share common memory reservation routines | From | Oleksandr Andrushchenko <> | Date | Wed, 13 Jun 2018 15:27:20 +0300 |
| |
On 06/13/2018 03:03 PM, Oleksandr Andrushchenko wrote: > On 06/13/2018 03:02 PM, Boris Ostrovsky wrote: >> >> >> On 06/13/2018 02:26 AM, Oleksandr Andrushchenko wrote: >>> On 06/13/2018 03:47 AM, Boris Ostrovsky wrote: >>>> >>>> >>>> On 06/12/2018 09:41 AM, Oleksandr Andrushchenko wrote: >>>>> From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com> >>>> >>>>> diff --git a/include/xen/mem-reservation.h >>>>> b/include/xen/mem-reservation.h >>>>> new file mode 100644 >>>>> index 000000000000..e0939387278d >>>>> --- /dev/null >>>>> +++ b/include/xen/mem-reservation.h >>>>> @@ -0,0 +1,64 @@ >>>>> +/* SPDX-License-Identifier: GPL-2.0 */ >>>>> + >>>>> +/* >>>>> + * Xen memory reservation utilities. >>>>> + * >>>>> + * Copyright (c) 2003, B Dragovic >>>>> + * Copyright (c) 2003-2004, M Williamson, K Fraser >>>>> + * Copyright (c) 2005 Dan M. Smith, IBM Corporation >>>>> + * Copyright (c) 2010 Daniel Kiper >>>>> + * Copyright (c) 2018 Oleksandr Andrushchenko, EPAM Systems Inc. >>>>> + */ >>>>> + >>>>> +#ifndef _XENMEM_RESERVATION_H >>>>> +#define _XENMEM_RESERVATION_H >>>>> + >>>>> +#include <linux/kernel.h> >>>>> +#include <linux/slab.h> >>>>> + >>>>> +#include <asm/xen/hypercall.h> >>>>> +#include <asm/tlb.h> >>>>> + >>>>> +#include <xen/interface/memory.h> >>>>> +#include <xen/page.h> >>>> >>>> >>>> I should have noticed this in the previous post but I suspect most >>>> of these includes belong in the C file. For example, there is no >>>> reason for hypercall.h here. >>>> >>> Yes, it seems that the header can only have >>> #include <xen/page.h> >>> Will move the rest into the .c file >> >> >> You may need something for clear_highpage() and maybe for Xen feature >> flags. But you'll find out for sure when you try to build. ;-) >> > #include <asm/tlb.h> > Or even #include <linux/highmem.h> according to [1] > ;) >> -boris >> >> >> >>>> -boris >>>> >>>> >>>>> + >>>>> +static inline void xenmem_reservation_scrub_page(struct page *page) >>>>> +{ >>>>> +#ifdef CONFIG_XEN_SCRUB_PAGES >>>>> + clear_highpage(page); >>>>> +#endif >>>>> +} >>>>> + >>>>> +#ifdef CONFIG_XEN_HAVE_PVMMU >>>>> +void __xenmem_reservation_va_mapping_update(unsigned long count, >>>>> + struct page **pages, >>>>> + xen_pfn_t *frames); >>>>> + >>>>> +void __xenmem_reservation_va_mapping_reset(unsigned long count, >>>>> + struct page **pages); >>>>> +#endif >>>>> + >>>>> +static inline void xenmem_reservation_va_mapping_update(unsigned >>>>> long count, >>>>> + struct page **pages, >>>>> + xen_pfn_t *frames) >>>>> +{ >>>>> +#ifdef CONFIG_XEN_HAVE_PVMMU >>>>> + if (!xen_feature(XENFEAT_auto_translated_physmap)) >>>>> + __xenmem_reservation_va_mapping_update(count, pages, >>>>> frames); >>>>> +#endif >>>>> +} >>>>> + >>>>> +static inline void xenmem_reservation_va_mapping_reset(unsigned >>>>> long count, >>>>> + struct page **pages) >>>>> +{ >>>>> +#ifdef CONFIG_XEN_HAVE_PVMMU >>>>> + if (!xen_feature(XENFEAT_auto_translated_physmap)) >>>>> + __xenmem_reservation_va_mapping_reset(count, pages); >>>>> +#endif >>>>> +} >>>>> + >>>>> +int xenmem_reservation_increase(int count, xen_pfn_t *frames); >>>>> + >>>>> +int xenmem_reservation_decrease(int count, xen_pfn_t *frames); >>>>> + >>>>> +#endif >>>>> >>> > [1] https://elixir.bootlin.com/linux/v4.17.1/ident/clear_highpage
| |