[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 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 > >> >>> + 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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |