Re: [PATCH v4 01/10] x86/vmx: add Intel PT MSR definitions
On 30/06/2020 13:33, Michał Leszczyński wrote: > From: Michal Leszczynski > > Define constants related to Intel Processor Trace features. > > Signed-off-by: Michal Leszczynski Acked-by: Andrew Cooper I wanted to have a play with the series, and have ended up having to do the rebase anyway. As we're in code freeze for 4.14, I've started x86-next in its usual location (https://xenbits.xen.org/gitweb/?p=people/andrewcoop/xen.git;a=shortlog;h=refs/heads/x86-next) and will commit this (and any other accumulated patches) once 4.15 opens. ~Andrew
Re: [PATCH v4 01/10] x86/vmx: add Intel PT MSR definitions
- 30 cze 2020 o 20:03, Tamas K Lengyel tamas.k.leng...@gmail.com napisał(a): > On Tue, Jun 30, 2020 at 11:39 AM Andrew Cooper > wrote: >> >> On 30/06/2020 13:33, Michał Leszczyński wrote: >> > diff --git a/xen/include/asm-x86/msr-index.h >> > b/xen/include/asm-x86/msr-index.h >> > index b328a47ed8..0203029be9 100644 >> > --- a/xen/include/asm-x86/msr-index.h >> > +++ b/xen/include/asm-x86/msr-index.h >> > @@ -69,6 +69,43 @@ >> > #define MSR_MCU_OPT_CTRL0x0123 >> > #define MCU_OPT_CTRL_RNGDS_MITG_DIS(_AC(1, ULL) << 0) >> > >> > +/* Intel PT MSRs */ >> > +#define MSR_RTIT_OUTPUT_BASE0x0560 >> > + >> > +#define MSR_RTIT_OUTPUT_MASK0x0561 >> > + >> > +#define MSR_RTIT_CTL0x0570 >> > +#define RTIT_CTL_TRACEEN(_AC(1, ULL) << 0) >> > +#define RTIT_CTL_CYCEN (_AC(1, ULL) << 1) >> >> In addition to what Jan has said, please can we be consistent with an >> underscore (or not) before EN. Preferably with, so these would become >> TRACE_EN and CYC_EN. >> >> That said, there are a lot of bit definitions which aren't used at all. >> IMO, it would be better to introduce defines when you use them. > > In the past I found it very valuable when this type of plumbing was > already present in Xen instead of me having to go into the SDM to digg > out the magic numbers. So while some of the bits might not be used > right now I also don't see any downside in having them, just in case. > > Tamas +1 for keeping the unused #defines, this is a helpful piece of knowledge which speeds up further patch development. It doesn't affect the compilation nor runtime time and it doesn't occupy too much space in the code so I would opt for keep it. I will rebase this series onto latest master within patch v5. The remaining patches in this series are not affected and still could be reviewed, so I will wait a few days before posting the new version. Best regards, Michał Leszczyński CERT Polska
Re: [PATCH v4 01/10] x86/vmx: add Intel PT MSR definitions
On Tue, Jun 30, 2020 at 11:39 AM Andrew Cooper wrote: > > On 30/06/2020 13:33, Michał Leszczyński wrote: > > diff --git a/xen/include/asm-x86/msr-index.h > > b/xen/include/asm-x86/msr-index.h > > index b328a47ed8..0203029be9 100644 > > --- a/xen/include/asm-x86/msr-index.h > > +++ b/xen/include/asm-x86/msr-index.h > > @@ -69,6 +69,43 @@ > > #define MSR_MCU_OPT_CTRL0x0123 > > #define MCU_OPT_CTRL_RNGDS_MITG_DIS(_AC(1, ULL) << 0) > > > > +/* Intel PT MSRs */ > > +#define MSR_RTIT_OUTPUT_BASE0x0560 > > + > > +#define MSR_RTIT_OUTPUT_MASK0x0561 > > + > > +#define MSR_RTIT_CTL0x0570 > > +#define RTIT_CTL_TRACEEN(_AC(1, ULL) << 0) > > +#define RTIT_CTL_CYCEN (_AC(1, ULL) << 1) > > In addition to what Jan has said, please can we be consistent with an > underscore (or not) before EN. Preferably with, so these would become > TRACE_EN and CYC_EN. > > That said, there are a lot of bit definitions which aren't used at all. > IMO, it would be better to introduce defines when you use them. In the past I found it very valuable when this type of plumbing was already present in Xen instead of me having to go into the SDM to digg out the magic numbers. So while some of the bits might not be used right now I also don't see any downside in having them, just in case. Tamas
Re: [PATCH v4 01/10] x86/vmx: add Intel PT MSR definitions
On 30/06/2020 13:33, Michał Leszczyński wrote: > diff --git a/xen/include/asm-x86/msr-index.h b/xen/include/asm-x86/msr-index.h > index b328a47ed8..0203029be9 100644 > --- a/xen/include/asm-x86/msr-index.h > +++ b/xen/include/asm-x86/msr-index.h > @@ -69,6 +69,43 @@ > #define MSR_MCU_OPT_CTRL0x0123 > #define MCU_OPT_CTRL_RNGDS_MITG_DIS(_AC(1, ULL) << 0) > > +/* Intel PT MSRs */ > +#define MSR_RTIT_OUTPUT_BASE0x0560 > + > +#define MSR_RTIT_OUTPUT_MASK0x0561 > + > +#define MSR_RTIT_CTL0x0570 > +#define RTIT_CTL_TRACEEN(_AC(1, ULL) << 0) > +#define RTIT_CTL_CYCEN (_AC(1, ULL) << 1) In addition to what Jan has said, please can we be consistent with an underscore (or not) before EN. Preferably with, so these would become TRACE_EN and CYC_EN. That said, there are a lot of bit definitions which aren't used at all. IMO, it would be better to introduce defines when you use them. Thanks, ~Andrew
Re: [PATCH v4 01/10] x86/vmx: add Intel PT MSR definitions
On 30.06.2020 14:33, Michał Leszczyński wrote: > From: Michal Leszczynski > > Define constants related to Intel Processor Trace features. > > Signed-off-by: Michal Leszczynski This needs re-basing onto current staging, now that Andrew's patch to add the MSR numbers has gone in. Apart from this a couple of cosmetic requests: > --- a/xen/include/asm-x86/msr-index.h > +++ b/xen/include/asm-x86/msr-index.h > @@ -69,6 +69,43 @@ > #define MSR_MCU_OPT_CTRL0x0123 > #define MCU_OPT_CTRL_RNGDS_MITG_DIS(_AC(1, ULL) << 0) > > +/* Intel PT MSRs */ > +#define MSR_RTIT_OUTPUT_BASE0x0560 > + > +#define MSR_RTIT_OUTPUT_MASK0x0561 > + > +#define MSR_RTIT_CTL0x0570 > +#define RTIT_CTL_TRACEEN(_AC(1, ULL) << 0) The right side is indented one space too many - see the similar #define in context above. > +#define RTIT_CTL_CYCEN (_AC(1, ULL) << 1) > +#define RTIT_CTL_OS (_AC(1, ULL) << 2) > +#define RTIT_CTL_USR(_AC(1, ULL) << 3) > +#define RTIT_CTL_PWR_EVT_EN (_AC(1, ULL) << 4) > +#define RTIT_CTL_FUP_ON_PTW (_AC(1, ULL) << 5) > +#define RTIT_CTL_FABRIC_EN (_AC(1, ULL) << 6) > +#define RTIT_CTL_CR3_FILTER (_AC(1, ULL) << 7) > +#define RTIT_CTL_TOPA (_AC(1, ULL) << 8) > +#define RTIT_CTL_MTC_EN (_AC(1, ULL) << 9) > +#define RTIT_CTL_TSC_EN (_AC(1, ULL) << 10) The double blanks on the earlier lines exist such that here you can reduce to a single one. You'll also find examples of this further up in the file. > +#define RTIT_CTL_DIS_RETC (_AC(1, ULL) << 11) > +#define RTIT_CTL_PTW_EN (_AC(1, ULL) << 12) > +#define RTIT_CTL_BRANCH_EN (_AC(1, ULL) << 13) > +#define RTIT_CTL_MTC_FREQ (_AC(0x0F, ULL) << 14) 0xf please (i.e. lower case and no random number of leading zeros). > +#define RTIT_CTL_CYC_THRESH (_AC(0x0F, ULL) << 19) > +#define RTIT_CTL_PSB_FREQ (_AC(0x0F, ULL) << 24) > +#define RTIT_CTL_ADDR(n)(_AC(0x0F, ULL) << (32 + (4 * > (n Strictly speaking we don't need the parentheses around the operands of binary * here - in mathematics precedence between + and * is well defined. (We do parenthesize certain other expressions, when the precedence may not be as well known.) Thanks, Jan