[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v3 5/6] xen/arm: unpopulate memory when domain is static
- To: Penny Zheng <Penny.Zheng@xxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>
- From: Julien Grall <julien@xxxxxxx>
- Date: Wed, 27 Apr 2022 11:23:25 +0100
- Cc: Wei Chen <Wei.Chen@xxxxxxx>, Henry Wang <Henry.Wang@xxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Bertrand Marquis <Bertrand.Marquis@xxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, George Dunlap <george.dunlap@xxxxxxxxxx>, Jan Beulich <jbeulich@xxxxxxxx>, Wei Liu <wl@xxxxxxx>
- Delivery-date: Wed, 27 Apr 2022 10:23:35 +0000
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
Hi Penny,
On 27/04/2022 11:19, Penny Zheng wrote:
+/*
+ * Put free pages on the resv page list after having taken them
+ * off the "normal" page list, when pages from static memory */
+#ifdef CONFIG_STATIC_MEMORY
+#define arch_free_heap_page(d, pg) ({ \
+ page_list_del(pg, page_to_list(d, pg)); \
+ if ( (pg)->count_info & PGC_reserved ) \
+ page_list_add_tail(pg, &(d)->resv_page_list); \
+})
+#endif
I am a bit puzzled how this is meant to work.
Looking at the code, arch_free_heap_page() will be called from
free_domheap_pages(). If I am not mistaken, reserved pages are not
considered as xen heap pages, so we would go in the else which will end up to
call free_heap_pages().
free_heap_pages() will end up to add the page in the heap allocator and
corrupt the d->resv_page_list because there are only one link list.
What did I miss?
In my first commit "do not free reserved memory into heap", I've changed the
behavior
for reserved pages in free_heap_pages()
+ if ( pg->count_info & PGC_reserved )
+ /* Reserved page shall not go back to the heap. */
+ return free_staticmem_pages(pg, 1UL << order, need_scrub);
+
Hmmm... somehow this e-mail is neither in my inbox nor in the archives
on lore.kernel.org.
Cheers,
--
Julien Grall
|