|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v8 7/9] xen/arm: unpopulate memory when domain is static
On 07.07.2022 11:22, Penny Zheng wrote:
> @@ -2692,6 +2690,14 @@ void free_domstatic_page(struct page_info *page)
>
> free_staticmem_pages(page, 1, need_scrub);
>
> + if ( likely(d) )
> + {
> + /* Add page on the resv_page_list *after* it has been freed. */
> + if ( !drop_dom_ref )
> + put_static_page(d, page);
I'm not happy about this name - it suggests similarity with put_page(),
but is entirely different. But: Do we really need an helper macro here
in the first place? This is static-mem specific code and hence ...
> --- a/xen/include/xen/mm.h
> +++ b/xen/include/xen/mm.h
> @@ -91,6 +91,12 @@ void free_staticmem_pages(struct page_info *pg, unsigned
> long nr_mfns,
> void free_domstatic_page(struct page_info *page);
> int acquire_domstatic_pages(struct domain *d, mfn_t smfn, unsigned int
> nr_mfns,
> unsigned int memflags);
> +#ifdef CONFIG_STATIC_MEMORY
> +#define put_static_page(d, page) \
> + page_list_add_tail((page), &(d)->resv_page_list)
... this can live right at the use site since ...
> --- a/xen/include/xen/sched.h
> +++ b/xen/include/xen/sched.h
> @@ -381,6 +381,9 @@ struct domain
> struct page_list_head page_list; /* linked list */
> struct page_list_head extra_page_list; /* linked list (size extra_pages)
> */
> struct page_list_head xenpage_list; /* linked list (size xenheap_pages)
> */
> +#ifdef CONFIG_STATIC_MEMORY
> + struct page_list_head resv_page_list; /* linked list */
> +#endif
... this field is consistently available (i.e. it's all the same config
option that controls things).
Otherwise a nit on the macro: While the parentheses around d are needed,
the ones around page are not.
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |