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

Re: [Xen-devel] [PATCH 07/10] VMX: handle PML enabling in vmx_vcpu_initialise



On 30/03/15 08:03, Kai Huang wrote:
>
>
> On 03/28/2015 05:12 AM, Andrew Cooper wrote:
>> On 27/03/15 02:35, Kai Huang wrote:
>>> It's possible domain has already been in log-dirty mode when
>>> creating vcpu, in
>>> which case we should enable PML for this vcpu if PML has been
>>> enabled for the
>>> domain.
>>>
>>> Signed-off-by: Kai Huang <kai.huang@xxxxxxxxxxxxxxx>
>>> ---
>>>   xen/arch/x86/hvm/vmx/vmx.c | 24 ++++++++++++++++++++++++
>>>   1 file changed, 24 insertions(+)
>>>
>>> diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
>>> index 453bcc5..fce3aa2 100644
>>> --- a/xen/arch/x86/hvm/vmx/vmx.c
>>> +++ b/xen/arch/x86/hvm/vmx/vmx.c
>>> @@ -116,6 +116,30 @@ static int vmx_vcpu_initialise(struct vcpu *v)
>>>           return rc;
>>>       }
>>>   +    /*
>>> +     * It's rare but still possible that domain has already been in
>>> log-dirty
>>> +     * mode when vcpu is being created (commented by Tim), in which
>>> case we
>>> +     * should enable PML for this vcpu if PML has been enabled for
>>> the domain,
>>> +     * and failure to enable results in failure of creating this vcpu.
>>> +     *
>>> +     * Note even there's no vcpu created for the domain,
>>> vmx_domain_enable_pml
>>> +     * will return successful in which case vmx_domain_pml_enabled
>>> will also
>>> +     * return true. And even this is the first vcpu to be created with
>>> +     * vmx_domain_pml_enabled being true, failure of enabling PML
>>> still results
>>> +     * in failure of creating vcpu, to avoid complicated logic to
>>> revert PML
>>> +     * style EPT table to non-PML style EPT table.
>>> +     */
>>> +    if ( vmx_domain_pml_enabled(v->domain) )
>>> +    {
>>> +        if ( (rc = vmx_vcpu_enable_pml(v)) != 0 )
>> Given the comment here, is the assertion in the top of
>> vmx_vcpu_enable_pml() liable to trip?
> Do you mean below assertion at beginning of vmx_vcpu_enable_pml might
> not work here?
>
>     ASSERT(!vmx_vcpu_pml_enabled(v));
>
> To me it asserts for this particular vcpu, not the domain, so even in
> this case the assertion is reasonable and should work fine, shouldn't it?

You are correct.  I was getting vcpus and domains mixed up.  Sorry for
the noise.

~Andrew

_______________________________________________
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®.