On 05/30/2018 01:46 PM, Oleksandr Andrushchenko wrote:Could you please take look at the patch attached if this is what we want?
On 05/30/2018 06:54 PM, Boris Ostrovsky wrote:
How about:
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
}
#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.
-borisThank you,