From: "Roger Pau Monné" <roger@xenproject.org>
To: George Dunlap <gwd@xenproject.org>
Cc: xen-devel@lists.xenproject.org,
"Roger Pau Monné" <roger.pau@citrix.com>,
"Jan Beulich" <jbeulich@suse.com>,
"Andrew Cooper" <andrew.cooper3@citrix.com>,
"Teddy Astie" <teddy.astie@vates.tech>
Subject: Re: [PATCH v3 09/18] x86/domain_page: move struct mapcache_vcpu to struct arch_vcpu
Date: Thu, 8 Oct 2026 10:28:17 +0200 [thread overview]
Message-ID: <asdUIR6tDvbgHjUd@Mac.lan> (raw)
In-Reply-To: <20261007104051.48841-10-gwd@xenproject.org>
On Wed, Oct 07, 2026 at 11:40:42AM +0100, George Dunlap wrote:
> From: Roger Pau Monné <roger.pau@citrix.com>
>
> struct mapcache_vcpu, the per-vCPU part of the mapcache (the maphash
> and the vCPU's shadow of the domain's TLB epoch), lives in struct
> pv_vcpu, as only PV vCPUs have a mapcache. In preparation for
> implementing mapcaches for HVM domains, move it to struct arch_vcpu:
> v->arch.pv.mapcache becomes v->arch.mapcache.
>
> struct pv_vcpu shrinks from 512 to 376 bytes, and struct vcpu grows
> from 2880 to 3008 bytes (x86_64, debug build), within its page: from
> here on HVM vCPUs carry the 136-byte struct mapcache_vcpu too, ahead of
> its use by those of vCPU-PT domains.
>
> No functional change.
>
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> Assisted-by: Claude Code:claude-fable-5, Claude Code:claude-opus-4-8, Claude Code:claude-opus-5-5
> Signed-off-by: George Dunlap <gwd@xenproject.org>
Reviewed-by: Roger Pau Monné <roger@xenproject.org>
> ---
> Changes in v3:
> - New in this version, split out of "x86/hvm: introduce per-vCPU
> mapcache for vCPU-PT domains" for review.
> ---
> xen/arch/x86/domain_page.c | 6 +++---
> xen/arch/x86/include/asm/domain.h | 6 +++---
> 2 files changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/xen/arch/x86/domain_page.c b/xen/arch/x86/domain_page.c
> index 5d90f77bed..f91ec8a75a 100644
> --- a/xen/arch/x86/domain_page.c
> +++ b/xen/arch/x86/domain_page.c
> @@ -134,7 +134,7 @@ void *map_domain_page(mfn_t mfn)
> return mfn_to_virt(mfn_x(mfn));
>
> cache = vcpu_mapcache(v, &dcache);
> - vcache = &v->arch.pv.mapcache;
> + vcache = &v->arch.mapcache;
> if ( !cache->inuse )
> return mfn_to_virt(mfn_x(mfn));
>
> @@ -231,7 +231,7 @@ void unmap_domain_page(const void *ptr)
>
> idx = PFN_DOWN(va - MAPCACHE_VIRT_START);
> mfn = l1e_get_pfn(MAPCACHE_L1ENT(idx));
> - hashent = &v->arch.pv.mapcache.hash[MAPHASH_HASHFN(mfn)];
> + hashent = &v->arch.mapcache.hash[MAPHASH_HASHFN(mfn)];
>
> local_irq_save(flags);
>
> @@ -334,7 +334,7 @@ int mapcache_vcpu_init(struct vcpu *v)
> BUILD_BUG_ON(MAPHASHENT_NOTINUSE < MAPCACHE_ENTRIES);
> for ( i = 0; i < MAPHASH_ENTRIES; i++ )
> {
> - struct vcpu_maphash_entry *hashent = &v->arch.pv.mapcache.hash[i];
> + struct vcpu_maphash_entry *hashent = &v->arch.mapcache.hash[i];
>
> hashent->mfn = ~0UL; /* never valid to map */
> hashent->idx = MAPHASHENT_NOTINUSE;
> diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/domain.h
> index 6f5873879e..cfa24c4e75 100644
> --- a/xen/arch/x86/include/asm/domain.h
> +++ b/xen/arch/x86/include/asm/domain.h
> @@ -552,9 +552,6 @@ struct arch_domain
>
> struct pv_vcpu
> {
> - /* map_domain_page() mapping cache. */
> - struct mapcache_vcpu mapcache;
> -
> unsigned int vgc_flags;
>
> struct trap_info *trap_ctxt;
> @@ -650,6 +647,9 @@ struct arch_vcpu
> #define async_exception_state(t) async_exception_state[(t)-1]
> uint8_t async_exception_mask;
>
> + /* map_domain_page() mapping cache. */
> + struct mapcache_vcpu mapcache;
FWIW, I would maybe place this at the top of the structure, like it
was placed in pv_vcpu?
In any case the placement of the fields of arch_vcpu is a mess
already, so it doesn't make much of a difference.
Thanks, Roger.
next prev parent reply other threads:[~2026-10-08 8:28 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-07 10:40 [PATCH v3 00/18] ASI: HVM per-vCPU areas and sparse-view directmap George Dunlap
2026-10-07 10:40 ` [PATCH v3 01/18] x86/PoD: map one page at a time in p2m_pod_zero_check() George Dunlap
2026-10-07 10:51 ` Jan Beulich
2026-10-07 12:33 ` Andrew Cooper
2026-10-07 12:38 ` Andrew Cooper
2026-10-08 11:09 ` George Dunlap
2026-10-08 22:24 ` Andrew Cooper
2026-10-07 10:40 ` [PATCH v3 02/18] x86/mm: purge unneeded destroy_perdomain_mapping() George Dunlap
2026-10-07 14:06 ` Roger Pau Monné
2026-10-07 14:24 ` Jan Beulich
2026-10-08 12:19 ` George Dunlap
2026-10-08 7:55 ` Jan Beulich
2026-10-08 8:31 ` Roger Pau Monné
2026-10-08 12:27 ` George Dunlap
2026-10-07 10:40 ` [PATCH v3 03/18] x86/mm: prepare destroy_perdomain_mapping() for per-vCPU perdomain areas George Dunlap
2026-10-07 15:58 ` Roger Pau Monné
2026-10-08 13:27 ` George Dunlap
2026-10-07 10:40 ` [PATCH v3 04/18] x86/domain_page: drop redundant create_perdomain_mapping() call George Dunlap
2026-10-07 16:14 ` Roger Pau Monné
2026-10-07 10:40 ` [PATCH v3 05/18] x86/mm: prepare create_perdomain_mapping() for per-vCPU perdomain areas George Dunlap
2026-10-07 16:31 ` Roger Pau Monné
2026-10-12 12:44 ` George Dunlap
2026-10-08 8:05 ` Jan Beulich
2026-10-07 10:40 ` [PATCH v3 06/18] x86/spec-ctrl: introduce Address Space Isolation command line option George Dunlap
2026-10-07 16:52 ` Roger Pau Monné
2026-10-12 12:47 ` George Dunlap
2026-10-08 8:24 ` Jan Beulich
2026-10-12 12:48 ` George Dunlap
2026-10-07 10:40 ` [PATCH v3 07/18] x86/hvm: introduce per-vCPU L3 page-table George Dunlap
2026-10-07 19:21 ` Roger Pau Monné
2026-10-08 20:55 ` George Dunlap
2026-10-08 8:40 ` Jan Beulich
2026-10-08 21:00 ` George Dunlap
2026-10-09 7:06 ` Jan Beulich
2026-10-07 10:40 ` [PATCH v3 08/18] x86/domain_page: prepare the mapcache for per-vCPU accounting George Dunlap
2026-10-08 8:22 ` Roger Pau Monné
2026-10-12 14:19 ` George Dunlap
2026-10-13 10:50 ` Roger Pau Monné
2026-10-12 13:48 ` Jan Beulich
2026-10-12 16:07 ` George Dunlap
2026-10-13 6:25 ` Jan Beulich
2026-10-13 9:53 ` George Dunlap
2026-10-13 11:56 ` Jan Beulich
2026-10-07 10:40 ` [PATCH v3 09/18] x86/domain_page: move struct mapcache_vcpu to struct arch_vcpu George Dunlap
2026-10-08 8:28 ` Roger Pau Monné [this message]
2026-10-07 10:40 ` [PATCH v3 10/18] x86/domain_page: don't unmap a mapcache entry that is not present George Dunlap
2026-10-08 11:03 ` Roger Pau Monné
2026-10-13 10:33 ` George Dunlap
2026-10-13 10:55 ` Roger Pau Monné
2026-10-07 10:40 ` [PATCH v3 11/18] x86/hvm: introduce per-vCPU mapcache for vCPU-PT domains George Dunlap
2026-10-08 13:56 ` Roger Pau Monné
2026-10-07 10:40 ` [PATCH v3 12/18] x86/mm: let Xen's page-table walker operate on a given root George Dunlap
2026-10-08 14:58 ` Roger Pau Monné
2026-10-07 10:40 ` [PATCH v3 13/18] x86/mm: build and maintain a sparse view of the directmap George Dunlap
2026-10-07 15:20 ` George Dunlap
2026-10-08 18:02 ` Roger Pau Monné
2026-10-07 10:40 ` [PATCH v3 14/18] x86/domain_page: key the directmap fast paths on the loaded view George Dunlap
2026-10-08 18:51 ` Roger Pau Monné
2026-10-07 10:40 ` [PATCH v3 15/18] x86/mm: flush owned pages before reuse with the sparse directmap view George Dunlap
2026-10-08 19:00 ` Roger Pau Monné
2026-10-07 10:40 ` [PATCH v3 16/18] x86/domain_page: keep the maphash's slots, not their mappings George Dunlap
2026-10-08 19:08 ` Roger Pau Monné
2026-10-07 10:40 ` [PATCH v3 17/18] x86/mm: run guest contexts on the sparse directmap view George Dunlap
2026-10-09 7:58 ` Roger Pau Monné
2026-10-07 10:40 ` [PATCH v3 18/18] x86/spec-ctrl: wire the sparse directmap view into the asi= option George Dunlap
2026-10-08 19:21 ` Roger Pau Monné
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=asdUIR6tDvbgHjUd@Mac.lan \
--to=roger@xenproject.org \
--cc=andrew.cooper3@citrix.com \
--cc=gwd@xenproject.org \
--cc=jbeulich@suse.com \
--cc=roger.pau@citrix.com \
--cc=teddy.astie@vates.tech \
--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.