On 01/02/2019 09:39, Oleksandr Andrushchenko wrote: > On 1/31/19 11:44 PM, Stefano Stabellini wrote: >> On Thu, 31 Jan 2019, Oleksandr Andrushchenko wrote: >>> Hello, >>> >>> I am working on porting an out-of-tree kernel driver to the kernel >>> 5.0 and that driver uses functionality provided by >>> drivers/xen/mem-reservation.c >>> module. Since commit [1] it is not possible to build a kernel module >>> which uses mem-reservation API as xen_scrub_pages variable, which is >>> checked in >>> xenmem_reservation_scrub_page, became a kernel module parameter and is >>> now only >>> accessible for built-in modules: >>> >>> static inline void xenmem_reservation_scrub_page(struct page *page) >>> ^^^^^^^^^^^^^ >>> { >>> if (xen_scrub_pages) >>> ^^^^^^^^^^^^^^^ >>> clear_highpage(page); >>> } >>> >>> This results in link-time warning: >>> >>> WARNING: "xen_scrub_pages" [yourmodule.ko] undefined! >>> >>> and thus not allowing the module to run. At the moment I can only see a >>> possible fix >>> for this by making the following change: >>> >>> diff --git a/drivers/xen/mem-reservation.c b/drivers/xen/mem-reservation.c >>> index 3782cf070338..85fecfec50e1 100644 >>> --- a/drivers/xen/mem-reservation.c >>> +++ b/drivers/xen/mem-reservation.c >>> @@ -18,6 +18,7 @@ >>> >>> bool __read_mostly xen_scrub_pages = >>> IS_ENABLED(CONFIG_XEN_SCRUB_PAGES_DEFAULT); >>> core_param(xen_scrub_pages, xen_scrub_pages, bool, 0); >>> +EXPORT_SYMBOL(xen_scrub_pages); >>> >>> but this looks a bit unusual for the kernel? >>> >>> I am looking for community advice here and help >>> >>> Thank you, >>> Oleksandr >>> >>> [1] >>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=197ecb3802c04499d8ff4f8cb28f6efa008067db >> The alternative would be to turn xenmem_reservation_scrub_page into a >> regular function (not a static inline)? > Yes, it seems there is no other reasonable solution to this, but > a regular function. I'll send a patch for that
What would you gain? This function would need to be exported. So its either the variable or the function. Juergen