[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 2/3] x86/viridian: drop virdian_sint_msr
> -----Original Message----- > From: Wei Liu <wei.liu.xen@xxxxxxxxx> On Behalf Of Wei Liu > Sent: 22 December 2019 23:21 > To: Xen Development List <xen-devel@xxxxxxxxxxxxxxxxxxxx> > Cc: Michael Kelley <mikelley@xxxxxxxxxxxxx>; Durrant, Paul > <pdurrant@xxxxxxxxxx>; Wei Liu <liuwe@xxxxxxxxxxxxx>; Paul Durrant > <paul@xxxxxxx>; Jan Beulich <jbeulich@xxxxxxxx>; Andrew Cooper > <andrew.cooper3@xxxxxxxxxx>; Wei Liu <wl@xxxxxxx>; Roger Pau Monné > <roger.pau@xxxxxxxxxx> > Subject: [PATCH 2/3] x86/viridian: drop virdian_sint_msr > > Use hv_synic_sint in hyperv-tlfs.h instead. > > This requires adding the missing "polling" member to hv_synic_sint. > > No functional change. > > Signed-off-by: Wei Liu <liuwe@xxxxxxxxxxxxx> Reviewed-by: Paul Durrant <paul@xxxxxxx> > --- > xen/arch/x86/hvm/viridian/synic.c | 20 ++++++++++---------- > xen/include/asm-x86/guest/hyperv-tlfs.h | 3 ++- > xen/include/asm-x86/hvm/viridian.h | 16 +--------------- > 3 files changed, 13 insertions(+), 26 deletions(-) > > diff --git a/xen/arch/x86/hvm/viridian/synic.c > b/xen/arch/x86/hvm/viridian/synic.c > index 54c62f843f..94a2b88733 100644 > --- a/xen/arch/x86/hvm/viridian/synic.c > +++ b/xen/arch/x86/hvm/viridian/synic.c > @@ -143,7 +143,7 @@ int viridian_synic_wrmsr(struct vcpu *v, uint32_t idx, > uint64_t val) > case HV_X64_MSR_SINT0 ... HV_X64_MSR_SINT15: > { > unsigned int sintx = idx - HV_X64_MSR_SINT0; > - union viridian_sint_msr new, *vs = > + union hv_synic_sint new, *vs = > &array_access_nospec(vv->sint, sintx); > uint8_t vector; > > @@ -151,7 +151,7 @@ int viridian_synic_wrmsr(struct vcpu *v, uint32_t idx, > uint64_t val) > return X86EMUL_EXCEPTION; > > /* Vectors must be in the range 0x10-0xff inclusive */ > - new.raw = val; > + new.as_uint64 = val; > if ( new.vector < 0x10 ) > return X86EMUL_EXCEPTION; > > @@ -256,13 +256,13 @@ int viridian_synic_rdmsr(const struct vcpu *v, > uint32_t idx, uint64_t *val) > case HV_X64_MSR_SINT0 ... HV_X64_MSR_SINT15: > { > unsigned int sintx = idx - HV_X64_MSR_SINT0; > - const union viridian_sint_msr *vs = > + const union hv_synic_sint *vs = > &array_access_nospec(vv->sint, sintx); > > if ( !(viridian_feature_mask(d) & HVMPV_synic) ) > return X86EMUL_EXCEPTION; > > - *val = vs->raw; > + *val = vs->as_uint64; > break; > } > > @@ -284,7 +284,7 @@ int viridian_synic_vcpu_init(const struct vcpu *v) > * initally masked. > */ > for ( i = 0; i < ARRAY_SIZE(vv->sint); i++ ) > - vv->sint[i].mask = 1; > + vv->sint[i].masked = 1; > > /* Initialize the mapping array with invalid values */ > for ( i = 0; i < ARRAY_SIZE(vv->vector_to_sintx); i++ ) > @@ -321,7 +321,7 @@ bool viridian_synic_deliver_timer_msg(struct vcpu *v, > unsigned int sintx, > uint64_t delivery) > { > struct viridian_vcpu *vv = v->arch.hvm.viridian; > - const union viridian_sint_msr *vs = &vv->sint[sintx]; > + const union hv_synic_sint *vs = &vv->sint[sintx]; > struct hv_message *msg = vv->simp.ptr; > struct { > uint32_t TimerIndex; > @@ -360,7 +360,7 @@ bool viridian_synic_deliver_timer_msg(struct vcpu *v, > unsigned int sintx, > BUILD_BUG_ON(sizeof(payload) > sizeof(msg->u.payload)); > memcpy(msg->u.payload, &payload, sizeof(payload)); > > - if ( !vs->mask ) > + if ( !vs->masked ) > vlapic_set_irq(vcpu_vlapic(v), vs->vector, 0); > > return true; > @@ -371,7 +371,7 @@ bool viridian_synic_is_auto_eoi_sint(const struct vcpu > *v, > { > const struct viridian_vcpu *vv = v->arch.hvm.viridian; > unsigned int sintx = vv->vector_to_sintx[vector]; > - const union viridian_sint_msr *vs = > + const union hv_synic_sint *vs = > &array_access_nospec(vv->sint, sintx); > > if ( sintx >= ARRAY_SIZE(vv->sint) ) > @@ -401,7 +401,7 @@ void viridian_synic_save_vcpu_ctxt(const struct vcpu > *v, > BUILD_BUG_ON(ARRAY_SIZE(vv->sint) != ARRAY_SIZE(ctxt->sint_msr)); > > for ( i = 0; i < ARRAY_SIZE(vv->sint); i++ ) > - ctxt->sint_msr[i] = vv->sint[i].raw; > + ctxt->sint_msr[i] = vv->sint[i].as_uint64; > > ctxt->simp_msr = vv->simp.msr.raw; > > @@ -430,7 +430,7 @@ void viridian_synic_load_vcpu_ctxt( > { > uint8_t vector; > > - vv->sint[i].raw = ctxt->sint_msr[i]; > + vv->sint[i].as_uint64 = ctxt->sint_msr[i]; > > vector = vv->sint[i].vector; > if ( vector < 0x10 ) > diff --git a/xen/include/asm-x86/guest/hyperv-tlfs.h b/xen/include/asm- > x86/guest/hyperv-tlfs.h > index 4402854c80..fe9fb232d0 100644 > --- a/xen/include/asm-x86/guest/hyperv-tlfs.h > +++ b/xen/include/asm-x86/guest/hyperv-tlfs.h > @@ -819,7 +819,8 @@ union hv_synic_sint { > u64 reserved1:8; > u64 masked:1; > u64 auto_eoi:1; > - u64 reserved2:46; > + u64 polling:1; > + u64 reserved2:45; > } __packed; > }; > > diff --git a/xen/include/asm-x86/hvm/viridian.h b/xen/include/asm- > x86/hvm/viridian.h > index cfbaede158..d694d83521 100644 > --- a/xen/include/asm-x86/hvm/viridian.h > +++ b/xen/include/asm-x86/hvm/viridian.h > @@ -28,20 +28,6 @@ struct viridian_page > void *ptr; > }; > > -union viridian_sint_msr > -{ > - uint64_t raw; > - struct > - { > - uint64_t vector:8; > - uint64_t reserved_preserved1:8; > - uint64_t mask:1; > - uint64_t auto_eoi:1; > - uint64_t polling:1; > - uint64_t reserved_preserved2:45; > - }; > -}; > - > union viridian_stimer_config_msr > { > uint64_t raw; > @@ -77,7 +63,7 @@ struct viridian_vcpu > uint64_t scontrol; > uint64_t siefp; > struct viridian_page simp; > - union viridian_sint_msr sint[16]; > + union hv_synic_sint sint[16]; > uint8_t vector_to_sintx[256]; > struct viridian_stimer stimer[4]; > unsigned int stimer_enabled; > -- > 2.20.1 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |