|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 4/6] X86: MPX IA32_BNDCFGS msr save/restore
Jan Beulich wrote:
>>>> On 28.11.13 at 07:36, "Liu, Jinsong" <jinsong.liu@xxxxxxxxx> wrote:
>> --- a/xen/arch/x86/hvm/hvm.c
>> +++ b/xen/arch/x86/hvm/hvm.c
>> @@ -702,6 +702,48 @@ static int hvm_load_tsc_adjust(struct domain
>> *d, hvm_domain_context_t *h) HVM_REGISTER_SAVE_RESTORE(TSC_ADJUST,
>> hvm_save_tsc_adjust, hvm_load_tsc_adjust,
>> 1, HVMSR_PER_VCPU);
>>
>> +static int hvm_save_msr_bndcfgs(struct domain *d,
>> hvm_domain_context_t *h) +{ + struct vcpu *v;
>> + struct hvm_msr_bndcfgs ctxt = {0};
>> + int err = 0;
>> +
>> + for_each_vcpu ( d, v )
>> + {
>> + hvm_funcs.save_msr_bndcfgs(v, &ctxt);
>> +
>> + err = hvm_save_entry(MSR_BNDCFGS, v->vcpu_id, h, &ctxt); +
>> if ( err ) + break;
>> + }
>> +
>> + return err;
>> +}
>> +
>> +static int hvm_load_msr_bndcfgs(struct domain *d,
>> hvm_domain_context_t *h) +{ + unsigned int vcpuid =
>> hvm_load_instance(h); + struct vcpu *v;
>> + struct hvm_msr_bndcfgs ctxt;
>> +
>> + if ( vcpuid >= d->max_vcpus || (v = d->vcpu[vcpuid]) == NULL )
>> + { + dprintk(XENLOG_G_ERR, "HVM restore: dom%d has no
>> vcpu%u\n", + d->domain_id, vcpuid);
>> + return -EINVAL;
>> + }
>> +
>> + if ( hvm_load_entry(MSR_BNDCFGS, h, &ctxt) != 0 ) +
>> return -EINVAL; +
>> + hvm_funcs.load_msr_bndcfgs(v, &ctxt);
>> +
>> + return 0;
>> +}
>> +
>> +HVM_REGISTER_SAVE_RESTORE(MSR_BNDCFGS, hvm_save_msr_bndcfgs,
>> + hvm_load_msr_bndcfgs, 1, HVMSR_PER_VCPU);
>
> That's exactly the non-extensible model I expected you to use,
> and that I tried to keep you from following with pointing out that
> the vPMU also has at least one MSR not currently saved/restored
> properly.
>
> Instead I think we should have a generic MSR save/restore type,
> pairing MSR indices and values in an array like fashion. If the
> restoring host doesn't know how to handle any one of them, the
> restore would fail. Extending it with further MSR values would
> then become a much smaller change than the full blown addition
> of a new save/restore type.
>
> Jan
OK, I have implemented a generic MSR save/restore way, w/ MPX MSR.
As for vPMU it's a distinct issue. Currently Xen vPMU does not support
migration because of interrupt issue, and it didn't consider version issue of
architectural PMU which under different version there are different MSRs.
Thanks,
Jinsong
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |