From: "Roger Pau Monné" <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
xen-devel@lists.xenproject.org
Subject: Re: [PATCH v2 1/4] x86/mm: introduce helpers to detect super page alignment
Date: Thu, 7 Nov 2024 17:07:34 +0100 [thread overview]
Message-ID: <ZyzlxiipPvbUjs0r@macbook> (raw)
In-Reply-To: <85d6a128-965b-4f39-8d08-2b2084db65b4@suse.com>
On Thu, Nov 07, 2024 at 11:42:11AM +0100, Jan Beulich wrote:
> On 06.11.2024 13:29, Roger Pau Monne wrote:
> > --- a/xen/arch/x86/include/asm/page.h
> > +++ b/xen/arch/x86/include/asm/page.h
> > @@ -200,6 +200,12 @@ static inline l4_pgentry_t l4e_from_paddr(paddr_t pa, unsigned int flags)
> > #define l4_table_offset(a) \
> > (((a) >> L4_PAGETABLE_SHIFT) & (L4_PAGETABLE_ENTRIES - 1))
> >
> > +/* Check if an address is aligned for a given slot level. */
> > +#define SLOT_IS_ALIGNED(v, m, s) \
> > + IS_ALIGNED(PFN_DOWN(v) | mfn_x(m), (1UL << ((s) - PAGE_SHIFT)) - 1)
>
> The check involving an address and an MFN, I think the comment would better
> also reflect this. "Check if a (va,mfn) tuple is suitably aligned to be
> mapped by a large page at a given page table level"?
>
> As to the name of this helper macro - "SLOT" can mean about anything when
> not further qualified. If the macro was local to ...
>
> > +#define IS_L3E_ALIGNED(v, m) SLOT_IS_ALIGNED(v, m, L3_PAGETABLE_SHIFT)
> > +#define IS_L2E_ALIGNED(v, m) SLOT_IS_ALIGNED(v, m, L2_PAGETABLE_SHIFT)
> > +
> > /* Convert a pointer to a page-table entry into pagetable slot index. */
> > #define pgentry_ptr_to_slot(_p) \
> > (((unsigned long)(_p) & ~PAGE_MASK) / sizeof(*(_p)))
> > --- a/xen/arch/x86/mm.c
> > +++ b/xen/arch/x86/mm.c
>
> ... this (sole) file using the derived ones, that might be acceptable. If
> it's to remain in page.h, how about e.g. IS_LnE_ALIGNED()?
Since you expressed further concerns in the next patch, I will move it
to being local to mm.c. I don't have any other use-case, but assumed
the macros are generic enough to be useful in other contexts.
> I further wonder whether it wouldn't be neater if just the level was passed
> into the helper. Doing so wouldn't even require token concatenation (which
> iirc both you and Andrew don't like in situations like this one), as the
> mask can be calculated from just level and PAGETABLE_ORDER. At which point
> it may even make sense to leave out the wrapper macros.
I can see what I can do.
Thanks, Roger.
next prev parent reply other threads:[~2024-11-07 16:07 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-06 12:29 [PATCH v2 0/4] x86/mm: miscellaneous fixes Roger Pau Monne
2024-11-06 12:29 ` [PATCH v2 1/4] x86/mm: introduce helpers to detect super page alignment Roger Pau Monne
2024-11-07 10:42 ` Jan Beulich
2024-11-07 16:07 ` Roger Pau Monné [this message]
2024-11-07 17:19 ` Roger Pau Monné
2024-11-08 7:36 ` Jan Beulich
2024-11-06 12:29 ` [PATCH v2 2/4] x86/mm: special case super page alignment detection for INVALID_MFN Roger Pau Monne
2024-11-07 11:06 ` Jan Beulich
2024-11-07 15:52 ` Roger Pau Monné
2024-11-08 7:44 ` Jan Beulich
2024-11-06 12:29 ` [PATCH v2 3/4] x86/setup: remove bootstrap_map_addr() usage of destroy_xen_mappings() Roger Pau Monne
2024-11-07 11:23 ` Jan Beulich
2024-11-07 11:54 ` Roger Pau Monné
2024-11-07 11:59 ` Jan Beulich
2024-11-08 9:41 ` Andrew Cooper
2024-11-08 9:45 ` Jan Beulich
2024-11-08 9:49 ` Roger Pau Monné
2024-11-06 12:29 ` [PATCH v2 4/4] x86/mm: ensure L2 is always freed if empty Roger Pau Monne
2024-11-07 11:28 ` [PATCH v2 0/4] x86/mm: miscellaneous fixes Jan Beulich
2024-11-07 11:48 ` Roger Pau Monné
-- strict thread matches above, loose matches on Subject: below --
2024-11-08 11:31 Roger Pau Monne
2024-11-08 11:31 ` [PATCH v2 1/4] x86/mm: introduce helpers to detect super page alignment Roger Pau Monne
2024-11-11 8:50 ` Jan Beulich
2024-11-11 8:57 ` Jan Beulich
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZyzlxiipPvbUjs0r@macbook \
--to=roger.pau@citrix.com \
--cc=andrew.cooper3@citrix.com \
--cc=jbeulich@suse.com \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.