linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: Michael Ellerman <mpe@ellerman.id.au>
To: <linuxppc-dev@ozlabs.org>
Cc: cody@linux.vnet.ibm.com, khandual@linux.vnet.ibm.com
Subject: [PATCH 09/20] powerpc/perf: Enable BHRB access for EBB events
Date: Fri, 14 Mar 2014 16:00:34 +1100	[thread overview]
Message-ID: <1394773245-18328-10-git-send-email-mpe@ellerman.id.au> (raw)
In-Reply-To: <1394773245-18328-1-git-send-email-mpe@ellerman.id.au>

The previous commit added constraint and register handling to allow
processes using EBB (Event Based Branches) to request access to the BHRB
(Branch History Rolling Buffer).

With that in place we can allow processes using EBB to access the BHRB.
This is achieved by setting BHRBA in MMCR0 when we enable EBB access. We
must also clear BHRBA when we are disabling.

Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
---
 arch/powerpc/include/asm/reg.h  |  1 +
 arch/powerpc/perf/core-book3s.c | 10 ++++++----
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/arch/powerpc/include/asm/reg.h b/arch/powerpc/include/asm/reg.h
index 3003472..980e8db 100644
--- a/arch/powerpc/include/asm/reg.h
+++ b/arch/powerpc/include/asm/reg.h
@@ -664,6 +664,7 @@
 #define   MMCR0_PMXE	0x04000000UL /* performance monitor exception enable */
 #define   MMCR0_FCECE	0x02000000UL /* freeze ctrs on enabled cond or event */
 #define   MMCR0_TBEE	0x00400000UL /* time base exception enable */
+#define   MMCR0_BHRBA	0x00200000UL /* BHRB Access allowed in userspace */
 #define   MMCR0_EBE	0x00100000UL /* Event based branch enable */
 #define   MMCR0_PMCC	0x000c0000UL /* PMC control */
 #define   MMCR0_PMCC_U6	0x00080000UL /* PMC1-6 are R/W by user (PR) */
diff --git a/arch/powerpc/perf/core-book3s.c b/arch/powerpc/perf/core-book3s.c
index 1e095fd..4520c93 100644
--- a/arch/powerpc/perf/core-book3s.c
+++ b/arch/powerpc/perf/core-book3s.c
@@ -78,6 +78,7 @@ static unsigned int freeze_events_kernel = MMCR0_FCS;
 #define MMCR0_FC56		0
 #define MMCR0_PMAO		0
 #define MMCR0_EBE		0
+#define MMCR0_BHRBA		0
 #define MMCR0_PMCC		0
 #define MMCR0_PMCC_U6		0
 
@@ -546,8 +547,8 @@ static unsigned long ebb_switch_in(bool ebb, unsigned long mmcr0)
 	if (!ebb)
 		goto out;
 
-	/* Enable EBB and read/write to all 6 PMCs for userspace */
-	mmcr0 |= MMCR0_EBE | MMCR0_PMCC_U6;
+	/* Enable EBB and read/write to all 6 PMCs and BHRB for userspace */
+	mmcr0 |= MMCR0_EBE | MMCR0_BHRBA | MMCR0_PMCC_U6;
 
 	/*
 	 * Add any bits from the user MMCR0, FC or PMAO. This is compatible
@@ -1117,11 +1118,12 @@ static void power_pmu_disable(struct pmu *pmu)
 		}
 
 		/*
-		 * Set the 'freeze counters' bit, clear EBE/PMCC/PMAO/FC56.
+		 * Set the 'freeze counters' bit, clear EBE/BHRBA/PMCC/PMAO/FC56
 		 */
 		val  = mmcr0 = mfspr(SPRN_MMCR0);
 		val |= MMCR0_FC;
-		val &= ~(MMCR0_EBE | MMCR0_PMCC | MMCR0_PMAO | MMCR0_FC56);
+		val &= ~(MMCR0_EBE | MMCR0_BHRBA | MMCR0_PMCC | MMCR0_PMAO |
+			 MMCR0_FC56);
 
 		/*
 		 * The barrier is to make sure the mtspr has been
-- 
1.8.3.2

  parent reply	other threads:[~2014-03-14  5:00 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-14  5:00 powerpc/perf: patches for 3.15 Michael Ellerman
2014-03-14  5:00 ` [PATCH 01/20] powerpc/perf: Make some new raw event codes available in sysfs Michael Ellerman
2014-03-14  5:00 ` [PATCH 02/20] powerpc/perf: Define perf_event_print_debug() to print PMU register values Michael Ellerman
2014-03-14  5:00 ` [PATCH 03/20] powerpc: Add a cpu feature CPU_FTR_PMAO_BUG Michael Ellerman
2014-03-14  5:00 ` [PATCH 04/20] powerpc/perf: Add lost exception workaround Michael Ellerman
2014-03-14  5:00 ` [PATCH 05/20] powerpc/perf: Reject EBB events which specify a sample_type Michael Ellerman
2014-03-14  5:00 ` [PATCH 06/20] powerpc/perf: Clean up the EBB hash defines a little Michael Ellerman
2014-03-14  5:00 ` [PATCH 07/20] powerpc/perf: Avoid mutating event in power8_get_constraint() Michael Ellerman
2014-03-14  5:00 ` [PATCH 08/20] powerpc/perf: Add BHRB constraint and IFM MMCRA handling for EBB Michael Ellerman
2014-03-14  5:00 ` Michael Ellerman [this message]
2014-03-14  5:00 ` [PATCH 10/20] sysfs: create bin_attributes under the requested group Michael Ellerman
2014-03-14  5:00 ` [PATCH 11/20] powerpc: Add hvcalls for 24x7 and gpci (Get Performance Counter Info) Michael Ellerman
2014-03-14  5:00 ` [PATCH 12/20] powerpc/perf: Add hv_gpci interface header Michael Ellerman
2014-03-14  5:00 ` [PATCH 13/20] powerpc/perf: Add 24x7 interface headers Michael Ellerman
2014-03-14  5:00 ` [PATCH 14/20] powerpc/perf: Add a shared interface to get gpci version and capabilities Michael Ellerman
2014-03-14  5:00 ` [PATCH 15/20] powerpc/perf: Add macros for defining event fields & formats Michael Ellerman
2014-03-14  5:00 ` [PATCH 16/20] powerpc/perf: Add support for the hv gpci (get performance counter info) interface Michael Ellerman
2014-03-14  5:00 ` [PATCH 17/20] powerpc/perf: Add support for the hv 24x7 interface Michael Ellerman
2014-03-14  5:00 ` [PATCH 18/20] powerpc/perf: Add kconfig option for hypervisor provided counters Michael Ellerman
2014-03-14  5:00 ` [PATCH 19/20] powerpc/perf/hv_{gpci, 24x7}: Add documentation of device attributes Michael Ellerman
2014-03-14  5:00 ` [PATCH 20/20] powerpc/perf: Fix handling of L3 events with bank == 1 Michael Ellerman

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=1394773245-18328-10-git-send-email-mpe@ellerman.id.au \
    --to=mpe@ellerman.id.au \
    --cc=cody@linux.vnet.ibm.com \
    --cc=khandual@linux.vnet.ibm.com \
    --cc=linuxppc-dev@ozlabs.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 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).