2014-02-19 13:10:16

by Stephane Eranian

[permalink] [raw]
Subject: [PATCH] perf/x86/uncore: Fix IVT/SNB-EP uncore CBOX NID filter table


This patch updates the CBOX PMU filters mapping tables for SNB-EP
and IVT (model 45 and 62 respectively).

The NID umask always comes in addition to another umask.
When set, the NID filter is applied.

The current mapping tables were missing some code/umask
combinations to account for the NID umask. This patch
fixes that.

Signed-off-by: Stephane Eranian <[email protected]>

diff --git a/arch/x86/kernel/cpu/perf_event_intel_uncore.c b/arch/x86/kernel/cpu/perf_event_intel_uncore.c
--- a/arch/x86/kernel/cpu/perf_event_intel_uncore.c
+++ b/arch/x86/kernel/cpu/perf_event_intel_uncore.c
@@ -501,8 +501,11 @@ static struct extra_reg snbep_uncore_cbox_extra_regs[] = {
SNBEP_CBO_EVENT_EXTRA_REG(SNBEP_CBO_PMON_CTL_TID_EN,
SNBEP_CBO_PMON_CTL_TID_EN, 0x1),
SNBEP_CBO_EVENT_EXTRA_REG(0x0334, 0xffff, 0x4),
+ SNBEP_CBO_EVENT_EXTRA_REG(0x4334, 0xffff, 0x6),
SNBEP_CBO_EVENT_EXTRA_REG(0x0534, 0xffff, 0x4),
+ SNBEP_CBO_EVENT_EXTRA_REG(0x4534, 0xffff, 0x6),
SNBEP_CBO_EVENT_EXTRA_REG(0x0934, 0xffff, 0x4),
+ SNBEP_CBO_EVENT_EXTRA_REG(0x4934, 0xffff, 0x6),
SNBEP_CBO_EVENT_EXTRA_REG(0x4134, 0xffff, 0x6),
SNBEP_CBO_EVENT_EXTRA_REG(0x0135, 0xffff, 0x8),
SNBEP_CBO_EVENT_EXTRA_REG(0x0335, 0xffff, 0x8),
@@ -1178,10 +1181,15 @@ static struct extra_reg ivt_uncore_cbox_extra_regs[] = {
SNBEP_CBO_EVENT_EXTRA_REG(SNBEP_CBO_PMON_CTL_TID_EN,
SNBEP_CBO_PMON_CTL_TID_EN, 0x1),
SNBEP_CBO_EVENT_EXTRA_REG(0x1031, 0x10ff, 0x2),
+ SNBEP_CBO_EVENT_EXTRA_REG(0x1134, 0xffff, 0x4),
+ SNBEP_CBO_EVENT_EXTRA_REG(0x4134, 0xffff, 0xc),
+ SNBEP_CBO_EVENT_EXTRA_REG(0x5134, 0xffff, 0xc),
SNBEP_CBO_EVENT_EXTRA_REG(0x0334, 0xffff, 0x4),
+ SNBEP_CBO_EVENT_EXTRA_REG(0x4334, 0xffff, 0xc),
SNBEP_CBO_EVENT_EXTRA_REG(0x0534, 0xffff, 0x4),
+ SNBEP_CBO_EVENT_EXTRA_REG(0x4534, 0xffff, 0xc),
SNBEP_CBO_EVENT_EXTRA_REG(0x0934, 0xffff, 0x4),
- SNBEP_CBO_EVENT_EXTRA_REG(0x4134, 0xffff, 0xc),
+ SNBEP_CBO_EVENT_EXTRA_REG(0x4934, 0xffff, 0xc),
SNBEP_CBO_EVENT_EXTRA_REG(0x0135, 0xffff, 0x10),
SNBEP_CBO_EVENT_EXTRA_REG(0x0335, 0xffff, 0x10),
SNBEP_CBO_EVENT_EXTRA_REG(0x2135, 0xffff, 0x10),


2014-02-20 06:20:23

by Yan, Zheng

[permalink] [raw]
Subject: Re: [PATCH] perf/x86/uncore: Fix IVT/SNB-EP uncore CBOX NID filter table

On 02/19/2014 09:10 PM, Stephane Eranian wrote:
>
> This patch updates the CBOX PMU filters mapping tables for SNB-EP
> and IVT (model 45 and 62 respectively).
>
> The NID umask always comes in addition to another umask.
> When set, the NID filter is applied.

Do you means the NID always applies for LLC_LOOKUP no matter what umask is.
If yes, I think it's better to define filter as SNBEP_CBO_EVENT_EXTRA_REG(0x34, 0xff, 0x6)

Regards
Yan, Zheng

>
> The current mapping tables were missing some code/umask
> combinations to account for the NID umask. This patch
> fixes that.
>
> Signed-off-by: Stephane Eranian <[email protected]>
>
> diff --git a/arch/x86/kernel/cpu/perf_event_intel_uncore.c b/arch/x86/kernel/cpu/perf_event_intel_uncore.c
> --- a/arch/x86/kernel/cpu/perf_event_intel_uncore.c
> +++ b/arch/x86/kernel/cpu/perf_event_intel_uncore.c
> @@ -501,8 +501,11 @@ static struct extra_reg snbep_uncore_cbox_extra_regs[] = {
> SNBEP_CBO_EVENT_EXTRA_REG(SNBEP_CBO_PMON_CTL_TID_EN,
> SNBEP_CBO_PMON_CTL_TID_EN, 0x1),
> SNBEP_CBO_EVENT_EXTRA_REG(0x0334, 0xffff, 0x4),
> + SNBEP_CBO_EVENT_EXTRA_REG(0x4334, 0xffff, 0x6),
> SNBEP_CBO_EVENT_EXTRA_REG(0x0534, 0xffff, 0x4),
> + SNBEP_CBO_EVENT_EXTRA_REG(0x4534, 0xffff, 0x6),
> SNBEP_CBO_EVENT_EXTRA_REG(0x0934, 0xffff, 0x4),
> + SNBEP_CBO_EVENT_EXTRA_REG(0x4934, 0xffff, 0x6),
> SNBEP_CBO_EVENT_EXTRA_REG(0x4134, 0xffff, 0x6),
> SNBEP_CBO_EVENT_EXTRA_REG(0x0135, 0xffff, 0x8),
> SNBEP_CBO_EVENT_EXTRA_REG(0x0335, 0xffff, 0x8),
> @@ -1178,10 +1181,15 @@ static struct extra_reg ivt_uncore_cbox_extra_regs[] = {
> SNBEP_CBO_EVENT_EXTRA_REG(SNBEP_CBO_PMON_CTL_TID_EN,
> SNBEP_CBO_PMON_CTL_TID_EN, 0x1),
> SNBEP_CBO_EVENT_EXTRA_REG(0x1031, 0x10ff, 0x2),
> + SNBEP_CBO_EVENT_EXTRA_REG(0x1134, 0xffff, 0x4),
> + SNBEP_CBO_EVENT_EXTRA_REG(0x4134, 0xffff, 0xc),
> + SNBEP_CBO_EVENT_EXTRA_REG(0x5134, 0xffff, 0xc),
> SNBEP_CBO_EVENT_EXTRA_REG(0x0334, 0xffff, 0x4),
> + SNBEP_CBO_EVENT_EXTRA_REG(0x4334, 0xffff, 0xc),
> SNBEP_CBO_EVENT_EXTRA_REG(0x0534, 0xffff, 0x4),
> + SNBEP_CBO_EVENT_EXTRA_REG(0x4534, 0xffff, 0xc),
> SNBEP_CBO_EVENT_EXTRA_REG(0x0934, 0xffff, 0x4),
> - SNBEP_CBO_EVENT_EXTRA_REG(0x4134, 0xffff, 0xc),
> + SNBEP_CBO_EVENT_EXTRA_REG(0x4934, 0xffff, 0xc),
> SNBEP_CBO_EVENT_EXTRA_REG(0x0135, 0xffff, 0x10),
> SNBEP_CBO_EVENT_EXTRA_REG(0x0335, 0xffff, 0x10),
> SNBEP_CBO_EVENT_EXTRA_REG(0x2135, 0xffff, 0x10),
>

2014-02-20 08:56:19

by Stephane Eranian

[permalink] [raw]
Subject: Re: [PATCH] perf/x86/uncore: Fix IVT/SNB-EP uncore CBOX NID filter table

On Thu, Feb 20, 2014 at 7:20 AM, Yan, Zheng <[email protected]> wrote:
> On 02/19/2014 09:10 PM, Stephane Eranian wrote:
>>
>> This patch updates the CBOX PMU filters mapping tables for SNB-EP
>> and IVT (model 45 and 62 respectively).
>>
>> The NID umask always comes in addition to another umask.
>> When set, the NID filter is applied.
>
> Do you means the NID always applies for LLC_LOOKUP no matter what umask is.
> If yes, I think it's better to define filter as SNBEP_CBO_EVENT_EXTRA_REG(0x34, 0xff, 0x6)
>
No. I mean you can add NID umask to any other umask but it cannot be
used by itself.
In other words, LLC_LOOKUP.NID is not allowed but LLC_LOOKUP.DATA_READ.NID is.

That is what I gathered from the description in the specs.


> Regards
> Yan, Zheng
>
>>
>> The current mapping tables were missing some code/umask
>> combinations to account for the NID umask. This patch
>> fixes that.
>>
>> Signed-off-by: Stephane Eranian <[email protected]>
>>
>> diff --git a/arch/x86/kernel/cpu/perf_event_intel_uncore.c b/arch/x86/kernel/cpu/perf_event_intel_uncore.c
>> --- a/arch/x86/kernel/cpu/perf_event_intel_uncore.c
>> +++ b/arch/x86/kernel/cpu/perf_event_intel_uncore.c
>> @@ -501,8 +501,11 @@ static struct extra_reg snbep_uncore_cbox_extra_regs[] = {
>> SNBEP_CBO_EVENT_EXTRA_REG(SNBEP_CBO_PMON_CTL_TID_EN,
>> SNBEP_CBO_PMON_CTL_TID_EN, 0x1),
>> SNBEP_CBO_EVENT_EXTRA_REG(0x0334, 0xffff, 0x4),
>> + SNBEP_CBO_EVENT_EXTRA_REG(0x4334, 0xffff, 0x6),
>> SNBEP_CBO_EVENT_EXTRA_REG(0x0534, 0xffff, 0x4),
>> + SNBEP_CBO_EVENT_EXTRA_REG(0x4534, 0xffff, 0x6),
>> SNBEP_CBO_EVENT_EXTRA_REG(0x0934, 0xffff, 0x4),
>> + SNBEP_CBO_EVENT_EXTRA_REG(0x4934, 0xffff, 0x6),
>> SNBEP_CBO_EVENT_EXTRA_REG(0x4134, 0xffff, 0x6),
>> SNBEP_CBO_EVENT_EXTRA_REG(0x0135, 0xffff, 0x8),
>> SNBEP_CBO_EVENT_EXTRA_REG(0x0335, 0xffff, 0x8),
>> @@ -1178,10 +1181,15 @@ static struct extra_reg ivt_uncore_cbox_extra_regs[] = {
>> SNBEP_CBO_EVENT_EXTRA_REG(SNBEP_CBO_PMON_CTL_TID_EN,
>> SNBEP_CBO_PMON_CTL_TID_EN, 0x1),
>> SNBEP_CBO_EVENT_EXTRA_REG(0x1031, 0x10ff, 0x2),
>> + SNBEP_CBO_EVENT_EXTRA_REG(0x1134, 0xffff, 0x4),
>> + SNBEP_CBO_EVENT_EXTRA_REG(0x4134, 0xffff, 0xc),
>> + SNBEP_CBO_EVENT_EXTRA_REG(0x5134, 0xffff, 0xc),
>> SNBEP_CBO_EVENT_EXTRA_REG(0x0334, 0xffff, 0x4),
>> + SNBEP_CBO_EVENT_EXTRA_REG(0x4334, 0xffff, 0xc),
>> SNBEP_CBO_EVENT_EXTRA_REG(0x0534, 0xffff, 0x4),
>> + SNBEP_CBO_EVENT_EXTRA_REG(0x4534, 0xffff, 0xc),
>> SNBEP_CBO_EVENT_EXTRA_REG(0x0934, 0xffff, 0x4),
>> - SNBEP_CBO_EVENT_EXTRA_REG(0x4134, 0xffff, 0xc),
>> + SNBEP_CBO_EVENT_EXTRA_REG(0x4934, 0xffff, 0xc),
>> SNBEP_CBO_EVENT_EXTRA_REG(0x0135, 0xffff, 0x10),
>> SNBEP_CBO_EVENT_EXTRA_REG(0x0335, 0xffff, 0x10),
>> SNBEP_CBO_EVENT_EXTRA_REG(0x2135, 0xffff, 0x10),
>>
>

2014-02-20 09:00:55

by Yan, Zheng

[permalink] [raw]
Subject: Re: [PATCH] perf/x86/uncore: Fix IVT/SNB-EP uncore CBOX NID filter table

On 02/20/2014 04:56 PM, Stephane Eranian wrote:
> On Thu, Feb 20, 2014 at 7:20 AM, Yan, Zheng <[email protected]> wrote:
>> On 02/19/2014 09:10 PM, Stephane Eranian wrote:
>>>
>>> This patch updates the CBOX PMU filters mapping tables for SNB-EP
>>> and IVT (model 45 and 62 respectively).
>>>
>>> The NID umask always comes in addition to another umask.
>>> When set, the NID filter is applied.
>>
>> Do you means the NID always applies for LLC_LOOKUP no matter what umask is.
>> If yes, I think it's better to define filter as SNBEP_CBO_EVENT_EXTRA_REG(0x34, 0xff, 0x6)
>>
> No. I mean you can add NID umask to any other umask but it cannot be
> used by itself.
> In other words, LLC_LOOKUP.NID is not allowed but LLC_LOOKUP.DATA_READ.NID is.
>
> That is what I gathered from the description in the specs.

Thanks

Reviewed-by: Yan, Zheng <[email protected]>

>
>
>> Regards
>> Yan, Zheng
>>
>>>
>>> The current mapping tables were missing some code/umask
>>> combinations to account for the NID umask. This patch
>>> fixes that.
>>>
>>> Signed-off-by: Stephane Eranian <[email protected]>
>>>
>>> diff --git a/arch/x86/kernel/cpu/perf_event_intel_uncore.c b/arch/x86/kernel/cpu/perf_event_intel_uncore.c
>>> --- a/arch/x86/kernel/cpu/perf_event_intel_uncore.c
>>> +++ b/arch/x86/kernel/cpu/perf_event_intel_uncore.c
>>> @@ -501,8 +501,11 @@ static struct extra_reg snbep_uncore_cbox_extra_regs[] = {
>>> SNBEP_CBO_EVENT_EXTRA_REG(SNBEP_CBO_PMON_CTL_TID_EN,
>>> SNBEP_CBO_PMON_CTL_TID_EN, 0x1),
>>> SNBEP_CBO_EVENT_EXTRA_REG(0x0334, 0xffff, 0x4),
>>> + SNBEP_CBO_EVENT_EXTRA_REG(0x4334, 0xffff, 0x6),
>>> SNBEP_CBO_EVENT_EXTRA_REG(0x0534, 0xffff, 0x4),
>>> + SNBEP_CBO_EVENT_EXTRA_REG(0x4534, 0xffff, 0x6),
>>> SNBEP_CBO_EVENT_EXTRA_REG(0x0934, 0xffff, 0x4),
>>> + SNBEP_CBO_EVENT_EXTRA_REG(0x4934, 0xffff, 0x6),
>>> SNBEP_CBO_EVENT_EXTRA_REG(0x4134, 0xffff, 0x6),
>>> SNBEP_CBO_EVENT_EXTRA_REG(0x0135, 0xffff, 0x8),
>>> SNBEP_CBO_EVENT_EXTRA_REG(0x0335, 0xffff, 0x8),
>>> @@ -1178,10 +1181,15 @@ static struct extra_reg ivt_uncore_cbox_extra_regs[] = {
>>> SNBEP_CBO_EVENT_EXTRA_REG(SNBEP_CBO_PMON_CTL_TID_EN,
>>> SNBEP_CBO_PMON_CTL_TID_EN, 0x1),
>>> SNBEP_CBO_EVENT_EXTRA_REG(0x1031, 0x10ff, 0x2),
>>> + SNBEP_CBO_EVENT_EXTRA_REG(0x1134, 0xffff, 0x4),
>>> + SNBEP_CBO_EVENT_EXTRA_REG(0x4134, 0xffff, 0xc),
>>> + SNBEP_CBO_EVENT_EXTRA_REG(0x5134, 0xffff, 0xc),
>>> SNBEP_CBO_EVENT_EXTRA_REG(0x0334, 0xffff, 0x4),
>>> + SNBEP_CBO_EVENT_EXTRA_REG(0x4334, 0xffff, 0xc),
>>> SNBEP_CBO_EVENT_EXTRA_REG(0x0534, 0xffff, 0x4),
>>> + SNBEP_CBO_EVENT_EXTRA_REG(0x4534, 0xffff, 0xc),
>>> SNBEP_CBO_EVENT_EXTRA_REG(0x0934, 0xffff, 0x4),
>>> - SNBEP_CBO_EVENT_EXTRA_REG(0x4134, 0xffff, 0xc),
>>> + SNBEP_CBO_EVENT_EXTRA_REG(0x4934, 0xffff, 0xc),
>>> SNBEP_CBO_EVENT_EXTRA_REG(0x0135, 0xffff, 0x10),
>>> SNBEP_CBO_EVENT_EXTRA_REG(0x0335, 0xffff, 0x10),
>>> SNBEP_CBO_EVENT_EXTRA_REG(0x2135, 0xffff, 0x10),
>>>
>>

Subject: [tip:perf/urgent] perf/x86/uncore: Fix IVT/ SNB-EP uncore CBOX NID filter table

Commit-ID: 337397f3afc911d94d1d71371a36a53ce218b41f
Gitweb: http://git.kernel.org/tip/337397f3afc911d94d1d71371a36a53ce218b41f
Author: Stephane Eranian <[email protected]>
AuthorDate: Wed, 19 Feb 2014 14:10:18 +0100
Committer: Thomas Gleixner <[email protected]>
CommitDate: Fri, 21 Feb 2014 22:09:01 +0100

perf/x86/uncore: Fix IVT/SNB-EP uncore CBOX NID filter table

This patch updates the CBOX PMU filters mapping tables for SNB-EP
and IVT (model 45 and 62 respectively).

The NID umask always comes in addition to another umask.
When set, the NID filter is applied.

The current mapping tables were missing some code/umask
combinations to account for the NID umask. This patch
fixes that.

Cc: [email protected]
Cc: [email protected]
Reviewed-by: Yan, Zheng <[email protected]>
Signed-off-by: Stephane Eranian <[email protected]>
Signed-off-by: Peter Zijlstra <[email protected]>
Link: http://lkml.kernel.org/r/20140219131018.GA24475@quad
Signed-off-by: Thomas Gleixner <[email protected]>
---
arch/x86/kernel/cpu/perf_event_intel_uncore.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/arch/x86/kernel/cpu/perf_event_intel_uncore.c b/arch/x86/kernel/cpu/perf_event_intel_uncore.c
index 29c2487..c88f7f4 100644
--- a/arch/x86/kernel/cpu/perf_event_intel_uncore.c
+++ b/arch/x86/kernel/cpu/perf_event_intel_uncore.c
@@ -501,8 +501,11 @@ static struct extra_reg snbep_uncore_cbox_extra_regs[] = {
SNBEP_CBO_EVENT_EXTRA_REG(SNBEP_CBO_PMON_CTL_TID_EN,
SNBEP_CBO_PMON_CTL_TID_EN, 0x1),
SNBEP_CBO_EVENT_EXTRA_REG(0x0334, 0xffff, 0x4),
+ SNBEP_CBO_EVENT_EXTRA_REG(0x4334, 0xffff, 0x6),
SNBEP_CBO_EVENT_EXTRA_REG(0x0534, 0xffff, 0x4),
+ SNBEP_CBO_EVENT_EXTRA_REG(0x4534, 0xffff, 0x6),
SNBEP_CBO_EVENT_EXTRA_REG(0x0934, 0xffff, 0x4),
+ SNBEP_CBO_EVENT_EXTRA_REG(0x4934, 0xffff, 0x6),
SNBEP_CBO_EVENT_EXTRA_REG(0x4134, 0xffff, 0x6),
SNBEP_CBO_EVENT_EXTRA_REG(0x0135, 0xffff, 0x8),
SNBEP_CBO_EVENT_EXTRA_REG(0x0335, 0xffff, 0x8),
@@ -1178,10 +1181,15 @@ static struct extra_reg ivt_uncore_cbox_extra_regs[] = {
SNBEP_CBO_EVENT_EXTRA_REG(SNBEP_CBO_PMON_CTL_TID_EN,
SNBEP_CBO_PMON_CTL_TID_EN, 0x1),
SNBEP_CBO_EVENT_EXTRA_REG(0x1031, 0x10ff, 0x2),
+ SNBEP_CBO_EVENT_EXTRA_REG(0x1134, 0xffff, 0x4),
+ SNBEP_CBO_EVENT_EXTRA_REG(0x4134, 0xffff, 0xc),
+ SNBEP_CBO_EVENT_EXTRA_REG(0x5134, 0xffff, 0xc),
SNBEP_CBO_EVENT_EXTRA_REG(0x0334, 0xffff, 0x4),
+ SNBEP_CBO_EVENT_EXTRA_REG(0x4334, 0xffff, 0xc),
SNBEP_CBO_EVENT_EXTRA_REG(0x0534, 0xffff, 0x4),
+ SNBEP_CBO_EVENT_EXTRA_REG(0x4534, 0xffff, 0xc),
SNBEP_CBO_EVENT_EXTRA_REG(0x0934, 0xffff, 0x4),
- SNBEP_CBO_EVENT_EXTRA_REG(0x4134, 0xffff, 0xc),
+ SNBEP_CBO_EVENT_EXTRA_REG(0x4934, 0xffff, 0xc),
SNBEP_CBO_EVENT_EXTRA_REG(0x0135, 0xffff, 0x10),
SNBEP_CBO_EVENT_EXTRA_REG(0x0335, 0xffff, 0x10),
SNBEP_CBO_EVENT_EXTRA_REG(0x2135, 0xffff, 0x10),