|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen staging] x86/vcpu: relax VCPUOP_initialise restriction for non-PV vCPUs
commit 03e484a4f6fbf833f5b6fba3b8cebf43ca433f3a
Author: Roger Pau Monné <roger.pau@xxxxxxxxxx>
AuthorDate: Mon Mar 25 10:48:23 2024 +0100
Commit: Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Mon Mar 25 10:48:23 2024 +0100
x86/vcpu: relax VCPUOP_initialise restriction for non-PV vCPUs
There's no reason to force HVM guests to have a valid vcpu_info area when
initializing a vCPU, as the vCPU can also be brought online using the local
APIC, and on that path there's no requirement for vcpu_info to be setup
ahead
of the bring up. Note an HVM vCPU can operate normally without making use
of
vcpu_info, and in fact does so when brought up via the local APIC.
Restrict the check against dummy_vcpu_info to only apply to PV guests.
Fixes: 192df6f9122d ('x86: allow HVM guests to use hypercalls to bring up
vCPUs')
Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
---
xen/common/compat/domain.c | 2 +-
xen/common/domain.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/xen/common/compat/domain.c b/xen/common/compat/domain.c
index 7ff238cc26..6b4afc8232 100644
--- a/xen/common/compat/domain.c
+++ b/xen/common/compat/domain.c
@@ -49,7 +49,7 @@ int compat_common_vcpu_op(int cmd, struct vcpu *v,
{
case VCPUOP_initialise:
{
- if ( v->vcpu_info_area.map == &dummy_vcpu_info )
+ if ( is_pv_domain(d) && v->vcpu_info_area.map == &dummy_vcpu_info )
return -EINVAL;
#ifdef CONFIG_HVM
diff --git a/xen/common/domain.c b/xen/common/domain.c
index 9b42eee44a..ceb44c8266 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -1827,7 +1827,7 @@ long common_vcpu_op(int cmd, struct vcpu *v,
XEN_GUEST_HANDLE_PARAM(void) arg)
switch ( cmd )
{
case VCPUOP_initialise:
- if ( v->vcpu_info_area.map == &dummy_vcpu_info )
+ if ( is_pv_domain(d) && v->vcpu_info_area.map == &dummy_vcpu_info )
return -EINVAL;
rc = arch_initialise_vcpu(v, arg);
--
generated by git-patchbot for /home/xen/git/xen.git#staging
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |