[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 1/4] x86: stop handling MSR_IA32_BNDCFGS save/restore in implementation code
>>> On 11.03.19 at 19:09, <paul.durrant@xxxxxxxxxx> wrote: > v2: > - Addressed comments from Jan by largely removing hunks I think you've removed more than I was expecting, but I'm fine this way. > @@ -158,6 +158,13 @@ int guest_rdmsr(const struct vcpu *v, uint32_t msr, > uint64_t *val) > ret = guest_rdmsr_x2apic(v, msr, val); > break; > > + case MSR_IA32_BNDCFGS: > + if ( !is_hvm_domain(d) || !cp->feat.mpx || > + !hvm_get_guest_bndcfgs(v, val) ) > + goto gp_fault; > + > + break; > + > case 0x40000000 ... 0x400001ff: > if ( is_viridian_domain(d) ) > { > @@ -319,6 +326,13 @@ int guest_wrmsr(struct vcpu *v, uint32_t msr, uint64_t > val) > ret = guest_wrmsr_x2apic(v, msr, val); > break; > > + case MSR_IA32_BNDCFGS: > + if ( !is_hvm_domain(d) || !cp->feat.mpx || > + !hvm_set_guest_bndcfgs(v, val) ) > + goto gp_fault; In both cases the is_hvm_*() check looks to be redundant, as for PV guests cp->feat.mpx can't be set. Personally I'd prefer this to be an ASSERT() instead, but I'd listen to Andrew (as the main author of this code) saying otherwise. > --- a/xen/include/asm-x86/msr.h > +++ b/xen/include/asm-x86/msr.h > @@ -328,7 +328,7 @@ int init_vcpu_msr_policy(struct vcpu *v); > * These functions are also used by the migration logic, so need to cope with > * being used outside of v's context. > */ > -int guest_rdmsr(const struct vcpu *v, uint32_t msr, uint64_t *val); > +int guest_rdmsr(struct vcpu *v, uint32_t msr, uint64_t *val); I find this pretty undesirable, and I'd like to at least put out for discussion a means how to avoid it: Any entity being passed a const struct vcpu *cv can get hold of a non-const one by doing struct vcpu *v = cv->domain->vcpu[cv->vcpu_id]; Of course this shouldn't be used arbitrarily, but to hide an implementation detail like that of vmx_vmcs_enter() I think this could be justified. Thoughts? Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |