[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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.