[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v2 8/9] x86/vmx: Support removing MSRs from the host/guest load/save lists



>>> On 12.06.18 at 19:40, <andrew.cooper3@xxxxxxxxxx> wrote:
> On 12/06/18 09:27, Jan Beulich wrote:
>>>>> On 08.06.18 at 20:48, <andrew.cooper3@xxxxxxxxxx> wrote:
>>> --- a/xen/arch/x86/hvm/vmx/vmcs.c
>>> +++ b/xen/arch/x86/hvm/vmx/vmcs.c
>>> @@ -1452,6 +1452,74 @@ int vmx_add_msr(struct vcpu *v, uint32_t msr, 
>>> uint64_t val,
>>>      return rc;
>>>  }
>>>  
>>> +int vmx_del_msr(struct vcpu *v, uint32_t msr, enum vmx_msr_list_type type)
>>> +{
>>> +    struct arch_vmx_struct *vmx = &v->arch.hvm_vmx;
>>> +    struct vmx_msr_entry *start = NULL, *ent, *end;
>>> +    unsigned int substart, subend, total;
>>> +
>>> +    ASSERT(v == current || !vcpu_runnable(v));
>>> +
>>> +    switch ( type )
>>> +    {
>>> +    case VMX_MSR_HOST:
>>> +        start    = vmx->host_msr_area;
>>> +        substart = 0;
>>> +        subend   = vmx->host_msr_count;
>>> +        total    = subend;
>>> +        break;
>>> +
>>> +    case VMX_MSR_GUEST:
>>> +        start    = vmx->msr_area;
>>> +        substart = 0;
>>> +        subend   = vmx->msr_save_count;
>>> +        total    = vmx->msr_load_count;
>>> +        break;
>>> +
>>> +    case VMX_MSR_GUEST_LOADONLY:
>>> +        start    = vmx->msr_area;
>>> +        substart = vmx->msr_save_count;
>>> +        subend   = vmx->msr_load_count;
>>> +        total    = subend;
>>> +        break;
>>> +
>>> +    default:
>>> +        ASSERT_UNREACHABLE();
>>> +    }
>>> +
>>> +    if ( !start )
>>> +        return -ESRCH;
>> I'm pretty sure not all gcc versions we support are capable of recognizing
>> that substart, subend, and total can't be used uninitialized due to this
>> return path, without there also being a return in after default: - I'm not
>> sure though whether adding that return or initializers might be the
>> better approach towards addressing this. At least for substart an
>> initializer (of zero) would allow dropping two other lines of code.
> 
> The oldest compiler I can easily put my hands on:
> 
> x86_64-linux-gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46)
> 
> is fine with this.

Well, okay - let's chance it then, and fix it up later if needed.

Jan



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

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