All of lore.kernel.org
 help / color / mirror / Atom feed
From: Boris Ostrovsky <boris.ostrovsky@oracle.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: kevin.tian@intel.com, dietmar.hahn@ts.fujitsu.com,
	xen-devel@lists.xen.org, david.vrabel@citrix.com,
	JBeulich@suse.com
Subject: Re: [PATCH v2 3/6] xen/PMU: Initialization code for Xen PMU
Date: Fri, 06 Jun 2014 15:51:49 -0400	[thread overview]
Message-ID: <53921BD5.6040904@oracle.com> (raw)
In-Reply-To: <53920F33.1080904@citrix.com>

On 06/06/2014 02:57 PM, Andrew Cooper wrote:
> On 06/06/14 18:44, Boris Ostrovsky wrote:
>> Map shared data structure that will hold CPU registers, VPMU context, V/PCPU IDs
>> of the CPU interrupted by PMU interrupt. Hypervisor fills this information in
>> its handler and passes it to the guest for further processing.
>>
>> Set up PMU VIRQ.
>>
>> Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
>> ---
>>   arch/x86/include/asm/xen/interface.h |  41 ++++++++++
>>   arch/x86/xen/Makefile                |   2 +-
>>   arch/x86/xen/pmu.c                   | 146 +++++++++++++++++++++++++++++++++++
>>   arch/x86/xen/pmu.h                   |  11 +++
>>   arch/x86/xen/smp.c                   |  31 +++++++-
>>   include/xen/interface/xen.h          |   1 +
>>   include/xen/interface/xenpmu.h       |  19 +++++
>>   7 files changed, 249 insertions(+), 2 deletions(-)
>>   create mode 100644 arch/x86/xen/pmu.c
>>   create mode 100644 arch/x86/xen/pmu.h
>>
>> diff --git a/arch/x86/include/asm/xen/interface.h b/arch/x86/include/asm/xen/interface.h
>> index fd9cb76..c4b92d3 100644
>> --- a/arch/x86/include/asm/xen/interface.h
>> +++ b/arch/x86/include/asm/xen/interface.h
>> @@ -169,6 +169,47 @@ struct vcpu_guest_context {
>>   #endif
>>   };
>>   DEFINE_GUEST_HANDLE_STRUCT(vcpu_guest_context);
>> +
>> +/* AMD PMU registers and structures */
>> +struct xen_pmu_amd_ctxt {
>> +	uint32_t counters;       /* Offset to counter MSRs */
>> +	uint32_t ctrls;          /* Offset to control MSRs */
>> +};
>> +
>> +/* Intel PMU registers and structures */
>> +struct xen_pmu_cntr_pair {
>> +	uint64_t counter;
>> +	uint64_t control;
>> +};
>> +
>> +struct xen_pmu_intel_ctxt {
>> +	uint64_t global_ctrl;
>> +	uint64_t global_ovf_ctrl;
>> +	uint64_t global_status;
>> +	uint64_t fixed_ctrl;
>> +	uint64_t ds_area;
>> +	uint64_t pebs_enable;
>> +	uint64_t debugctl;
>> +	uint32_t fixed_counters;  /* Offset to fixed counter MSRs */
>> +	uint32_t arch_counters;   /* Offset to architectural counter MSRs */
>> +};
>> +
>> +struct xen_arch_pmu {
>> +	union {
>> +		struct cpu_user_regs regs;
>> +		uint8_t pad1[256];
>> +	};
>> +	union {
>> +		uint32_t lapic_lvtpc;
>> +		uint64_t pad2;
>> +	};
>> +	union {
>> +		struct xen_pmu_amd_ctxt amd;
>> +		struct xen_pmu_intel_ctxt intel;
>> +#define XENPMU_CTXT_PAD_SZ  128
>> +		uint8_t pad3[XENPMU_CTXT_PAD_SZ];
>> +	};
>> +};
>>   #endif	/* !__ASSEMBLY__ */
> You appear to have a define for XENPMU_CTXT_PAD_SZ but not for any other
> bits of padding.

The only reason for the define is because of the BUILD_BUG_ON test (in 
hypervisor). I suppose I could add another define for registers and do a 
similar test.

>
> Also, I presume there is no sensible way to coalesce the Intel and AMD
> variations?

Oh no. They are *completely* different implementations, with absolutely 
nothing in common.


-boris

  reply	other threads:[~2014-06-06 19:51 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-06 17:44 [PATCH v2 0/6] xen/PMU: PMU support for Xen PV guests Boris Ostrovsky
2014-06-06 17:44 ` [PATCH v2 1/6] xen: xensyms support Boris Ostrovsky
2014-06-10 13:31   ` David Vrabel
2014-06-10 14:49     ` Boris Ostrovsky
2014-06-10 14:51       ` Jan Beulich
2014-06-10 15:03         ` Boris Ostrovsky
2014-06-10 15:21           ` Jan Beulich
2014-06-10 15:45             ` Boris Ostrovsky
2014-06-10 16:13               ` Jan Beulich
2014-06-11  9:37   ` Dietmar Hahn
2014-06-06 17:44 ` [PATCH v2 2/6] xen/PMU: Sysfs interface for setting Xen PMU mode Boris Ostrovsky
2014-06-06 20:19   ` Konrad Rzeszutek Wilk
2014-06-10 13:33     ` David Vrabel
2014-06-10 13:48   ` David Vrabel
2014-06-10 14:52     ` Boris Ostrovsky
2014-06-11 10:13   ` Dietmar Hahn
2014-06-11 12:53     ` Boris Ostrovsky
2014-06-11 13:12       ` Dietmar Hahn
2014-06-06 17:44 ` [PATCH v2 3/6] xen/PMU: Initialization code for Xen PMU Boris Ostrovsky
2014-06-06 18:57   ` Andrew Cooper
2014-06-06 19:51     ` Boris Ostrovsky [this message]
2014-06-06 17:44 ` [PATCH v2 4/6] xen/PMU: Describe vendor-specific PMU registers Boris Ostrovsky
2014-06-10 14:11   ` David Vrabel
2014-06-10 15:29     ` Boris Ostrovsky
2014-06-06 17:44 ` [PATCH v2 5/6] xen/PMU: Intercept PMU-related MSR and APIC accesses Boris Ostrovsky
2014-06-12  6:56   ` Dietmar Hahn
2014-06-12 14:50     ` Boris Ostrovsky
2014-06-06 17:44 ` [PATCH v2 6/6] xen/PMU: PMU emulation code Boris Ostrovsky
2014-06-10 13:57 ` [PATCH v2 0/6] xen/PMU: PMU support for Xen PV guests David Vrabel
2014-06-10 15:27   ` Boris Ostrovsky

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=53921BD5.6040904@oracle.com \
    --to=boris.ostrovsky@oracle.com \
    --cc=JBeulich@suse.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=david.vrabel@citrix.com \
    --cc=dietmar.hahn@ts.fujitsu.com \
    --cc=kevin.tian@intel.com \
    --cc=xen-devel@lists.xen.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.