|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] RE: [PATCH 08/10] xen/arm: introduce reserved_page_list
Hi Jan
> -----Original Message-----
> From: Jan Beulich <jbeulich@xxxxxxxx>
> Sent: Tuesday, May 18, 2021 3:39 PM
> To: Penny Zheng <Penny.Zheng@xxxxxxx>
> Cc: Bertrand Marquis <Bertrand.Marquis@xxxxxxx>; Wei Chen
> <Wei.Chen@xxxxxxx>; nd <nd@xxxxxxx>; xen-devel@xxxxxxxxxxxxxxxxxxxx;
> sstabellini@xxxxxxxxxx; julien@xxxxxxx
> Subject: Re: [PATCH 08/10] xen/arm: introduce reserved_page_list
>
> On 18.05.2021 07:21, Penny Zheng wrote:
> > Since page_list under struct domain refers to linked pages as gueast
> > RAM allocated from heap, it should not include reserved pages of static
> memory.
> >
> > The number of PGC_reserved pages assigned to a domain is tracked in a
> > new 'reserved_pages' counter. Also introduce a new reserved_page_list
> > to link pages of static memory. Let page_to_list return
> > reserved_page_list, when flag is PGC_reserved.
> >
> > Later, when domain get destroyed or restarted, those new values will
> > help relinquish memory to proper place, not been given back to heap.
> >
> > Signed-off-by: Penny Zheng <penny.zheng@xxxxxxx>
> > ---
> > xen/common/domain.c | 1 +
> > xen/common/page_alloc.c | 7 +++++--
> > xen/include/xen/sched.h | 5 +++++
> > 3 files changed, 11 insertions(+), 2 deletions(-)
>
> This contradicts the title's prefix: There's no Arm-specific change here at
> all.
> But imo the title is correct, and the changes should be Arm-specific. There's
> no point having struct domain fields on e.g. x86 which aren't used there at
> all.
>
Yep, you're right.
I'll add ifdefs in the following changes.
> > --- a/xen/common/page_alloc.c
> > +++ b/xen/common/page_alloc.c
> > @@ -2410,7 +2410,7 @@ int assign_pages(
> >
> > for ( i = 0; i < nr_pfns; i++ )
> > {
> > - ASSERT(!(pg[i].count_info & ~PGC_extra));
> > + ASSERT(!(pg[i].count_info & ~(PGC_extra |
> > + PGC_reserved)));
> > if ( pg[i].count_info & PGC_extra )
> > extra_pages++;
> > }
> > @@ -2439,6 +2439,9 @@ int assign_pages(
> > }
> > }
> >
> > + if ( pg[0].count_info & PGC_reserved )
> > + d->reserved_pages += nr_pfns;
>
> I guess this again will fail to build on x86.
>
> > @@ -588,6 +590,9 @@ static inline struct page_list_head *page_to_list(
> > if ( pg->count_info & PGC_extra )
> > return &d->extra_page_list;
> >
> > + if ( pg->count_info & PGC_reserved )
> > + return &d->reserved_page_list;
>
> Same here.
>
> Jan
Thanks
Penny
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |