linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: Michael Ellerman <michael@ellerman.id.au>
To: <linuxppc-dev@ozlabs.org>
Cc: sukadev@linux.vnet.ibm.com, Paul Mackerras <paulus@samba.org>,
	khandual@linux.vnet.ibm.com
Subject: [PATCH 1/8] powerpc/perf: Check that events only include valid bits on Power8
Date: Mon, 24 Jun 2013 21:28:49 +1000	[thread overview]
Message-ID: <1372073336-8189-1-git-send-email-michael@ellerman.id.au> (raw)

A mistake we have made in the past is that we pull out the fields we
need from the event code, but don't check that there are no unknown bits
set. This means that we can't ever assign meaning to those unknown bits
in future.

Although we have once again failed to do this at release, it is still
early days for Power8 so I think we can still slip this in and get away
with it.

Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
---
 arch/powerpc/perf/power8-pmu.c |   13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/arch/powerpc/perf/power8-pmu.c b/arch/powerpc/perf/power8-pmu.c
index f7d1c4f..84cdc6d 100644
--- a/arch/powerpc/perf/power8-pmu.c
+++ b/arch/powerpc/perf/power8-pmu.c
@@ -109,6 +109,16 @@
 #define EVENT_IS_MARKED		(EVENT_MARKED_MASK << EVENT_MARKED_SHIFT)
 #define EVENT_PSEL_MASK		0xff	/* PMCxSEL value */
 
+#define EVENT_VALID_MASK	\
+	((EVENT_THRESH_MASK    << EVENT_THRESH_SHIFT)		|	\
+	 (EVENT_SAMPLE_MASK    << EVENT_SAMPLE_SHIFT)		|	\
+	 (EVENT_CACHE_SEL_MASK << EVENT_CACHE_SEL_SHIFT)	|	\
+	 (EVENT_PMC_MASK       << EVENT_PMC_SHIFT)		|	\
+	 (EVENT_UNIT_MASK      << EVENT_UNIT_SHIFT)		|	\
+	 (EVENT_COMBINE_MASK   << EVENT_COMBINE_SHIFT)		|	\
+	 (EVENT_MARKED_MASK    << EVENT_MARKED_SHIFT)		|	\
+	  EVENT_PSEL_MASK)
+
 /* MMCRA IFM bits - POWER8 */
 #define	POWER8_MMCRA_IFM1		0x0000000040000000UL
 #define	POWER8_MMCRA_IFM2		0x0000000080000000UL
@@ -212,6 +222,9 @@ static int power8_get_constraint(u64 event, unsigned long *maskp, unsigned long
 
 	mask = value = 0;
 
+	if (event & ~EVENT_VALID_MASK)
+		return -1;
+
 	pmc   = (event >> EVENT_PMC_SHIFT)       & EVENT_PMC_MASK;
 	unit  = (event >> EVENT_UNIT_SHIFT)      & EVENT_UNIT_MASK;
 	cache = (event >> EVENT_CACHE_SEL_SHIFT) & EVENT_CACHE_SEL_MASK;
-- 
1.7.10.4

             reply	other threads:[~2013-06-24 11:28 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-24 11:28 Michael Ellerman [this message]
2013-06-24 11:28 ` [PATCH 2/8] powerpc/perf: Rework disable logic in pmu_disable() Michael Ellerman
2013-06-25 11:22   ` Anshuman Khandual
2013-06-26  3:28     ` Michael Ellerman
2013-07-10  0:15     ` Sukadev Bhattiprolu
2013-07-10  2:12       ` Michael Ellerman
2013-06-24 11:28 ` [PATCH 3/8] powerpc/perf: Freeze PMC5/6 if we're not using them Michael Ellerman
2013-06-24 11:28 ` [PATCH 4/8] powerpc/perf: Use existing out label in power_pmu_enable() Michael Ellerman
2013-06-27 11:01   ` Anshuman Khandual
2013-06-24 11:28 ` [PATCH 5/8] powerpc/perf: Don't enable if we have zero events Michael Ellerman
2013-06-28  5:10   ` Anshuman Khandual
2013-06-24 11:28 ` [PATCH 6/8] powerpc/perf: Drop MMCRA from thread_struct Michael Ellerman
2013-06-24 11:28 ` [PATCH 7/8] powerpc/perf: Core EBB support for 64-bit book3s Michael Ellerman
2013-06-26  8:38   ` Anshuman Khandual
2013-06-27 11:52     ` Michael Ellerman
2013-06-24 11:28 ` [PATCH 8/8] powerpc/perf: Add power8 EBB support Michael Ellerman
2013-06-26  9:58   ` Anshuman Khandual
2013-06-27 11:52     ` Michael Ellerman
2013-06-28  4:15       ` Anshuman Khandual
2013-07-04 18:58         ` Adhemerval Zanella
2013-07-05  2:54           ` Michael Ellerman
2013-07-05 17:57             ` Adhemerval Zanella
2013-06-25 10:55 ` [PATCH 1/8] powerpc/perf: Check that events only include valid bits on Power8 Anshuman Khandual

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=1372073336-8189-1-git-send-email-michael@ellerman.id.au \
    --to=michael@ellerman.id.au \
    --cc=khandual@linux.vnet.ibm.com \
    --cc=linuxppc-dev@ozlabs.org \
    --cc=paulus@samba.org \
    --cc=sukadev@linux.vnet.ibm.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).