The HV_X64_MSR_EOI wrmsr should always happen with the target vCPU
as current, as there's no support for EOI'ing interrupts on a remote
vCPU.
While there also turn the unconditional assert at the top of the
function into an error on non-debug builds.
No functional change intended.
Requested-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Reviewed-by: Paul Durrant <paul@xen.org>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
struct viridian_vcpu *vv = v->arch.hvm.viridian;
struct domain *d = v->domain;
- ASSERT(v == current || !v->is_running);
+ if ( v != current && v->is_running )
+ {
+ ASSERT_UNREACHABLE();
+ return X86EMUL_EXCEPTION;
+ }
switch ( idx )
{
case HV_X64_MSR_EOI:
+ if ( v != current )
+ {
+ ASSERT_UNREACHABLE();
+ return X86EMUL_EXCEPTION;
+ }
vlapic_EOI_set(vcpu_vlapic(v));
break;