[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v14 for-xen-4.5 13/21] x86/VPMU: Initialize PMU for PV(H) guests
>>> On 17.10.14 at 23:18, <boris.ostrovsky@xxxxxxxxxx> wrote: > --- a/xen/arch/x86/hvm/hvm.c > +++ b/xen/arch/x86/hvm/hvm.c > @@ -4811,7 +4811,8 @@ static hvm_hypercall_t *const > pvh_hypercall64_table[NR_hypercalls] = { > HYPERCALL(hvm_op), > HYPERCALL(sysctl), > HYPERCALL(domctl), > - [ __HYPERVISOR_arch_1 ] = (hvm_hypercall_t *)paging_domctl_continuation > + [ __HYPERVISOR_arch_1 ] = (hvm_hypercall_t *)paging_domctl_continuation, > + HYPERCALL(xenpmu_op) > }; At least the operations visible in the patch context are all sorted by hypercall number - please don't break this. > +static void pvpmu_finish(struct domain *d, xen_pmu_params_t *params) > +{ > + struct vcpu *v; > + uint64_t mfn; > + > + if ( (params->vcpu >= d->max_vcpus) || (d->vcpu == NULL) || > + (d->vcpu[params->vcpu] == NULL) ) > + return; > + > + v = d->vcpu[params->vcpu]; > + if ( v != current ) > + vcpu_pause(v); > + > + if ( v->arch.vpmu.xenpmu_data ) > + { > + mfn = domain_page_map_to_mfn(v->arch.vpmu.xenpmu_data); > + ASSERT(mfn != 0); > + unmap_domain_page_global(v->arch.vpmu.xenpmu_data); > + put_page_and_type(mfn_to_page(mfn)); I think you absolutely need to clear v->arch.vpmu.xenpmu_data here, or else another call will (likely) crash the hypervisor. Even more, I think this actually needs serialization (and pvpmu_init() as well), especially with ... > --- a/xen/include/xsm/dummy.h > +++ b/xen/include/xsm/dummy.h > @@ -665,6 +665,9 @@ static XSM_INLINE int xsm_pmu_op (XSM_DEFAULT_ARG struct > domain *d, int op) > case XENPMU_feature_set: > case XENPMU_feature_get: > return xsm_default_action(XSM_PRIV, d, current->domain); > + case XENPMU_init: > + case XENPMU_finish: > + return xsm_default_action(XSM_HOOK, d, current->domain); ... this being XSM_HOOK rather than XSM_TARGET. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |