|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 05/10] VMX: add help functions to support PML
On Mon, Mar 30, 2015 at 5:54 PM, Andrew Cooper
<andrew.cooper3@xxxxxxxxxx> wrote:
> On 30/03/15 07:43, Kai Huang wrote:
>>
>>
>> On 03/28/2015 05:09 AM, Andrew Cooper wrote:
>>> On 27/03/15 02:35, Kai Huang wrote:
>>>
>>>> +}
>>>> +
>>>> +int vmx_vcpu_enable_pml(struct vcpu *v)
>>>> +{
>>>> + struct domain *d = v->domain;
>>>> +
>>>> + ASSERT(!vmx_vcpu_pml_enabled(v));
>>>> +
>>>> + v->arch.hvm_vmx.pml_pg = d->arch.paging.alloc_page(d);
>>>> + if ( !v->arch.hvm_vmx.pml_pg )
>>>> + return -ENOMEM;
>>>> +
>>>> + vmx_vmcs_enter(v);
>>>> +
>>>> + __vmwrite(PML_ADDRESS, page_to_mfn(v->arch.hvm_vmx.pml_pg) <<
>>>> PAGE_SHIFT);
>>>> + __vmwrite(GUEST_PML_INDEX, PML_ENTITY_NUM - 1);
>>>> +
>>>> + v->arch.hvm_vmx.secondary_exec_control |=
>>>> SECONDARY_EXEC_ENABLE_PML;
>>>> +
>>>> + __vmwrite(SECONDARY_VM_EXEC_CONTROL,
>>>> + v->arch.hvm_vmx.secondary_exec_control);
>>> Alignment.
>> Do you mean to put 'v->arch.hvm_vmx.secondary_exec_control' to the
>> same line with '__vmwrite(SECONDARY_VM_EXEC_CONTROL,'? In this case
>> the number of characters will be 81.
>
> Splitting the line is fine. The v should be vertically in line with S
> from SECONDARY
Oh I got your point. Thanks. Will do.
>
>>
>>>
>>>> + unsigned long gfn;
>>>> + mfn_t mfn;
>>>> + p2m_type_t t;
>>>> + p2m_access_t a;
>>>> +
>>>> + gfn = pml_buf[pml_idx] >> PAGE_SHIFT;
>>>> + mfn = p2m->get_entry(p2m, gfn, &t, &a, 0, NULL);
>>>> + if ( mfn_x(mfn) == INVALID_MFN )
>>>> + {
>>>> + /*
>>>> + * Either EPT table entry for mapping the GFN has been
>>>> destroyed, or
>>>> + * there's something wrong with hardware behavior, in
>>>> both cases we
>>>> + * should report a warning.
>>>> + */
>>>> + dprintk(XENLOG_WARNING, "PML: vcpu %d: invalid GPA
>>>> 0x%lx logged\n",
>>>> + v->vcpu_id, pml_buf[pml_idx]);
>>> It would be shorter to log gfn rather than gpa.
>> Will do. And I'd also like to add the domain ID in the warning info.
>
> Ah of course - dprintk() doesn't identify current(). Use %pv with v.
>
>>
>>>
>>>> +{
>>>> + return (d->arch.hvm_domain.vmx.status & VMX_DOMAIN_PML_ENABLED)
>>>> ? 1 : 0;
>>>> +}
>>>> +
>>>> +/*
>>>> + * This function enables PML for particular domain. It should be
>>>> called when
>>>> + * domain is paused.
>>> In which case assert that the domain is paused, or call domain_pause()
>>> yourself to take an extra pause refcount.
>> Which function should I use to assert domain is paused? I didn't find
>> a function like "domain_paused". Is below good enough?
>>
>> ASSERT(atomic_read(&d->pause_count));
>
> Hmm - we indeed don't have an appropriate helper. That ASSERT() will do
> for now.
>
> ~Andrew
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxx
> http://lists.xen.org/xen-devel
--
Thanks,
-Kai
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |