[RFC PATCH v2 5/5] hvm: Allow specifying a prefered asid minimum
Teddy Astie <[email protected]> Fri, 31 Jul 2026 16:46:23 +0200
| Newsgroups | gmane.comp.emulators.xen.devel |
|---|---|
| Message-ID | <1785509310.8631fc262581453bbf619ec5b2062170.19fb8a5f02e000e099@vates.tech> |
To avoid clobbering all ASIDs that are below SEV-enabled guest maximum, we want to allocate if possible all ASID over a "prefered minimum" and fallback to below otherwise. Signed-off-by: Teddy Astie <[email protected]> --- This is currently unused, but will prove useful for SEV-ES. xen/arch/x86/hvm/asid.c | 8 ++++++++ xen/arch/x86/include/asm/hvm/asid.h | 1 + 2 files changed, 9 insertions(+) diff --git a/xen/arch/x86/hvm/asid.c b/xen/arch/x86/hvm/asid.c index 1a21125161..4ad3200c96 100644 --- a/xen/arch/x86/hvm/asid.c +++ b/xen/arch/x86/hvm/asid.c @@ -22,6 +22,9 @@ boolean_param("asid", opt_asid_enabled); bool __read_mostly asid_enabled = false; static unsigned long __ro_after_init *asid_bitmap; static unsigned long __ro_after_init asid_count; + +/* Default minimum ASID to use */ +unsigned long __read_mostly asid_default_min = 0; static DEFINE_SPINLOCK(asid_lock); /* @@ -67,6 +70,11 @@ int hvm_asid_alloc(struct hvm_asid *asid) return 0; } + /* Try to allocate above default minimum */ + if ( asid_default_min && + !hvm_asid_alloc_range(asid, asid_default_min, asid_count) ) + return 0; + spin_lock(&asid_lock); new_asid = find_first_zero_bit(asid_bitmap, asid_count); if ( new_asid > asid_count ) diff --git a/xen/arch/x86/include/asm/hvm/asid.h b/xen/arch/x86/include/asm/hvm/asid.h index b6df5cda35..65373b29f6 100644 --- a/xen/arch/x86/include/asm/hvm/asid.h +++ b/xen/arch/x86/include/asm/hvm/asid.h @@ -20,6 +20,7 @@ extern bool asid_enabled; #else #define asid_enabled (false) #endif +extern unsigned long asid_default_min; /* Initialise ASID management distributed across all CPUs. */ int hvm_asid_init(unsigned long nasids); -- 2.54.0 -- Teddy Astie | Vates XCP-ng Developer XCP-ng & Xen Orchestra - Vates solutions web: https://vates.tech