[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Xen-devel] [PATCH v14 for-xen-4.5 17/21] x86/VPMU: Handle PMU interrupts for PV guests
- To: Jan Beulich <JBeulich@xxxxxxxx>
- From: Boris Ostrovsky <boris.ostrovsky@xxxxxxxxxx>
- Date: Tue, 28 Oct 2014 13:08:50 -0400
- Cc: kevin.tian@xxxxxxxxx, keir@xxxxxxx, suravee.suthikulpanit@xxxxxxx, andrew.cooper3@xxxxxxxxxx, tim@xxxxxxx, dietmar.hahn@xxxxxxxxxxxxxx, xen-devel@xxxxxxxxxxxxx, Aravind.Gopalakrishnan@xxxxxxx, jun.nakajima@xxxxxxxxx, dgdegra@xxxxxxxxxxxxx
- Delivery-date: Tue, 28 Oct 2014 17:07:10 +0000
- List-id: Xen developer discussion <xen-devel.lists.xen.org>
On 10/28/2014 05:30 AM, Jan Beulich wrote:
On 27.10.14 at 20:43, <boris.ostrovsky@xxxxxxxxxx> wrote:
On 10/27/2014 12:54 PM, Jan Beulich wrote:
On 17.10.14 at 23:18, <boris.ostrovsky@xxxxxxxxxx> wrote:
--- a/xen/arch/x86/hvm/vpmu.c
+++ b/xen/arch/x86/hvm/vpmu.c
@@ -81,46 +81,206 @@ static void __init parse_vpmu_param(char *s)
void vpmu_lvtpc_update(uint32_t val)
{
- struct vpmu_struct *vpmu = vcpu_vpmu(current);
+ struct vcpu *curr = current;
+ struct vpmu_struct *vpmu = vcpu_vpmu(curr);
vpmu->hw_lapic_lvtpc = PMU_APIC_VECTOR | (val & APIC_LVT_MASKED);
- apic_write(APIC_LVTPC, vpmu->hw_lapic_lvtpc);
+
+ /* Postpone APIC updates for PV(H) guests if PMU interrupt is pending
*/
+ if ( is_hvm_vcpu(curr) || !vpmu->xenpmu_data ||
+ !(vpmu->xenpmu_data->pmu.pmu_flags & PMU_CACHED) )
Isn't this the pointer that pvpmu_finish() deallocates (and needs to
clear? If so, there's a race between it being cleared and used. If you
need it in places like this, perhaps you'd be better off never clearing
it and leaving the MFN allocated?
This will be one of the places that check for VPMU_CONTEXT_ALLOCATED.
But how will adding this check make this race free?
This VCPU is paused while we are tearing down its pvpmu so we can't be
in the middle if this (or other, such as vpmu_do_msr()) hypercall, can we?
Or it's not paused if the VCPU is the same one that is doing the
teardown. In which case we certainly are not in this hypercall.
So, in fact, the check for VPMU_CONTEXT_ALLOCATED may not be needed at all.
-boris
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|