From 4474460377bfb3df16d23c28fb561e892a14b062 Mon Sep 17 00:00:00 2001 From: Alexander Boettcher Date: Tue, 25 Jan 2022 11:24:24 +0100 Subject: [PATCH] lx_emul: __alloc_pages support in shadow/mm/page_alloc.c --- .../src/lib/lx_emul/shadow/mm/page_alloc.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/repos/dde_linux/src/lib/lx_emul/shadow/mm/page_alloc.c b/repos/dde_linux/src/lib/lx_emul/shadow/mm/page_alloc.c index 91294c70c0..8fbd9a8dd2 100644 --- a/repos/dde_linux/src/lib/lx_emul/shadow/mm/page_alloc.c +++ b/repos/dde_linux/src/lib/lx_emul/shadow/mm/page_alloc.c @@ -12,6 +12,7 @@ */ #include +#include #include unsigned long __alloc_pages_bulk(gfp_t gfp,int preferred_nid, @@ -51,3 +52,20 @@ void __free_pages(struct page * page, unsigned int order) lx_emul_mem_free(virt_addr); lx_emul_mem_free(page); } + + +/* + * In earlier kernel versions, '__alloc_pages' was an inline function. + */ +#if LINUX_VERSION_CODE > KERNEL_VERSION(5,12,0) +struct page * __alloc_pages(gfp_t gfp, unsigned int order, int preferred_nid, + nodemask_t * nodemask) +{ + unsigned const nr_pages = (1u << order); + + void const *ptr = lx_emul_mem_alloc_aligned(PAGE_SIZE*nr_pages, PAGE_SIZE); + struct page *page = lx_emul_virt_to_pages(ptr, nr_pages); + + return page; +} +#endif