[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v2 06/13] x86/PMU: Add public xenpmu.h



>>> On 20.09.13 at 11:42, Boris Ostrovsky <boris.ostrovsky@xxxxxxxxxx> wrote:
> +struct amd_vpmu_context {
> +    uint64_t counters[XENPMU_AMD_MAX_COUNTERS];
> +    uint64_t ctrls[XENPMU_AMD_MAX_COUNTERS];
> +    uint8_t msr_bitmap_set;               /* Used by HVM only */
> +};

sizeof() this will not be the same for this in a 64-bit an a 32-bit guest.
Are you intentionally creating a need for translation here?

> +
> +/* Intel PMU registers and structures */
> +#define XENPMU_CORE2_MAX_ARCH_PMCS     16
> +#define XENPMU_CORE2_MAX_FIXED_PMCS    4
> +struct core2_vpmu_context {
> +    uint64_t global_ctrl;
> +    uint64_t global_ovf_ctrl;
> +    uint64_t global_status;
> +    uint64_t global_ovf_status;
> +    uint64_t fixed_ctrl;
> +    uint64_t ds_area;
> +    uint64_t pebs_enable;
> +    uint64_t debugctl;
> +    uint64_t fix_counters[XENPMU_CORE2_MAX_FIXED_PMCS];
> +    struct {
> +        uint64_t counter;
> +        uint64_t control;
> +    } arch_msr_pair[XENPMU_CORE2_MAX_ARCH_PMCS];
> +};

I realize that using embedded arrays in both AMD and Intel
structures makes things easier to implement, but it reduces
forward compatibility. I'd therefore prefer those to be made
handles.

> +#define MAX(x, y)                 ((x) > (y) ? (x) : (y))

I think we already agreed in the context of someone else's reply
that this has to go away.

> +struct arch_xenpmu {
> +    union {
> +        struct cpu_user_regs regs;

Oh, so you need to do translation for 32-bit guests anyway...

> --- /dev/null
> +++ b/xen/include/public/xenpmu.h
> @@ -0,0 +1,38 @@
> +#ifndef __XEN_PUBLIC_XENPMU_H__
> +#define __XEN_PUBLIC_XENPMU_H__
> +
> +#include "xen.h"
> +#if defined(__i386__) || defined(__x86_64__)
> +#include "arch-x86/xenpmu-x86.h"
> +#elif defined (__arm__) || defined (__aarch64__)
> +#include "arch-arm.h"

???

Jan


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.