On 05/30/2018 10:24 PM, Boris Ostrovsky wrote: > On 05/30/2018 01:46 PM, Oleksandr Andrushchenko wrote: >> On 05/30/2018 06:54 PM, Boris Ostrovsky wrote: >>> >>> BTW, I also think you can further simplify >>> xenmem_reservation_va_mapping_* routines by bailing out right away if >>> xen_feature(XENFEAT_auto_translated_physmap). In fact, you might even >>> make them inlines, along the lines of >>> >>> 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(...) >>> #endif >>> } >> How about: >> >> #ifdef CONFIG_XEN_HAVE_PVMMU >> static inline __xenmem_reservation_va_mapping_reset(struct page *page) >> { >> [...] >> } >> #endif >> >> and >> >> void xenmem_reservation_va_mapping_reset(unsigned long count, >>                      struct page **pages) >> { >> #ifdef CONFIG_XEN_HAVE_PVMMU >>     if (!xen_feature(XENFEAT_auto_translated_physmap)) { >>         int i; >> >>         for (i = 0; i < count; i++) >>             __xenmem_reservation_va_mapping_reset(pages[i]); >>     } >> #endif >> } >> >> This way I can use __xenmem_reservation_va_mapping_reset(page); >> instead of xenmem_reservation_va_mapping_reset(1, &page); > > Sure, this also works. Could you please take look at the patch attached if this is what we want? > -boris > Thank you, Oleksandr