|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [RFC PATCH 7/7] hvm: Allow specifying a prefered asid minimum
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 <teddy.astie@xxxxxxxxxx>
---
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 13ea357f70..e989ebbe8c 100644
--- a/xen/arch/x86/include/asm/hvm/asid.h
+++ b/xen/arch/x86/include/asm/hvm/asid.h
@@ -16,6 +16,7 @@ struct hvm_asid {
};
extern bool asid_enabled;
+extern unsigned long asid_default_min;
/* Initialise ASID management distributed across all CPUs. */
int hvm_asid_init(unsigned long nasids);
--
2.52.0
--
Teddy Astie | Vates XCP-ng Developer
XCP-ng & Xen Orchestra - Vates solutions
web: https://vates.tech
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |