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. -boris