[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v3] mm/pdx: Add comments throughout the codebase for pdx



Hi,

On Thu, Jul 13, 2023 at 05:12:09PM +0200, Jan Beulich wrote:
> On 07.07.2023 18:07, Alejandro Vallejo wrote:
> > --- a/xen/include/xen/mm.h
> > +++ b/xen/include/xen/mm.h
> > @@ -31,6 +31,17 @@
> >   *   (i.e. all devices assigned to) a guest share a single DMA address 
> > space
> >   *   and, by default, Xen will ensure dfn == pfn.
> >   *
> > + * pdx: Page InDeX
> > + *   Indices into the frame table holding the per-page's book-keeping
> > + *   metadata. A compression scheme may be used, so there's a possibly non
> > + *   identity mapping between valid(mfn) <-> valid(pdx). See the comments
> > + *   in pdx.c for an in-depth explanation of that mapping. This also has a
> > + *   knock-on effect on the directmap, as "compressed" pfns have no
> > + *   corresponding mapped frames.
> 
> Didn't you mean to keep the directmap part optional,
I did.

> which would call for saying "may" here (twice)?
That paragraph as-is doesn't really mandate a directmap. It merely state
that there are knock-on effects on directmap indexing, not that there's
always a directmap to index.

> Yet then ...
>
> 
> > --- a/xen/include/xen/pdx.h
> > +++ b/xen/include/xen/pdx.h
> > @@ -1,6 +1,73 @@
> >  #ifndef __XEN_PDX_H__
> >  #define __XEN_PDX_H__
> >  
> > +/*
> > + * PDX (Page inDeX)
> > + *
> > + * This file deals with optimisations pertaining to frame table and
> > + * directmap indexing, A pdx is an index into the frame table, which
> > + * typically also means an index into the directmap[1]. However, having an
> > + * identity relationship between mfn and pdx could waste copious amounts of
> > + * memory in empty frame table entries and page tables. There are some
> > + * techniques to bring memory wastage down.
> > + *
> > + * [1] Some ports apply further modifications to a pdx before indexing the
> > + *     directmap. This doesn't change the fact that the same compression
> > + *     present in the frame table is also present in the directmap
> > + *     whenever said map is present.
> 
> .. you mention it here as non-optional as well. Didn't you tell me that
> Arm doesn't use compressed indexes into the directmap?
> 
> Jan

The [1] note states "whenever said map is present", meaning that it may not
be present. Saying it's optional is a stretch though. It's not like we can
choose right now.

> Didn't you tell me that Arm doesn't use compressed indexes into the directmap?
arm32 doesn't have a directmap at all. arm64 uses biased pdx as indices
(they are offset by a constant), so they are still subject to compression.

Alejandro



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.