lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <tip-d46b4c1ce5f0d9a13fb2318763076442669a2bdc@git.kernel.org>
Date:   Fri, 17 Nov 2017 07:27:01 -0800
From:   tip-bot for Andi Kleen <tipbot@...or.com>
To:     linux-tip-commits@...r.kernel.org
Cc:     hpa@...or.com, he.chen@...ux.intel.com, dave.hansen@...el.com,
        minipli@...glemail.com, luto@...nel.org, eranian@...gle.com,
        mingo@...nel.org, prarit@...hat.com, kan.liang@...el.com,
        tim.c.chen@...ux.intel.com, arvind.yadav.cs@...il.com,
        kirill.shutemov@...ux.intel.com, borntraeger@...ibm.com,
        thomas.lendacky@....com, peterz@...radead.org, ak@...ux.intel.com,
        tglx@...utronix.de, bp@...e.de, linux-kernel@...r.kernel.org,
        vkuznets@...hat.com, piotr.luc@...el.com
Subject: [tip:x86/urgent] perf/x86/intel/uncore: Cache logical pkg id in
 uncore driver

Commit-ID:  d46b4c1ce5f0d9a13fb2318763076442669a2bdc
Gitweb:     https://git.kernel.org/tip/d46b4c1ce5f0d9a13fb2318763076442669a2bdc
Author:     Andi Kleen <ak@...ux.intel.com>
AuthorDate: Tue, 14 Nov 2017 07:42:55 -0500
Committer:  Thomas Gleixner <tglx@...utronix.de>
CommitDate: Fri, 17 Nov 2017 16:22:30 +0100

perf/x86/intel/uncore: Cache logical pkg id in uncore driver

The SNB-EP uncore driver is the only user of topology_phys_to_logical_pkg
in a performance critical path.

Change it query the logical pkg ID only once at initialization time and
then cache it in box structure. This allows to change the logical package
management without affecting the performance critical path.

Signed-off-by: Andi Kleen <ak@...ux.intel.com>
Signed-off-by: Thomas Gleixner <tglx@...utronix.de>
Signed-off-by: Prarit Bhargava <prarit@...hat.com>
Cc: Tom Lendacky <thomas.lendacky@....com>
Cc: Christian Borntraeger <borntraeger@...ibm.com>
Cc: Peter Zijlstra <peterz@...radead.org>
Cc: Kan Liang <kan.liang@...el.com>
Cc: He Chen <he.chen@...ux.intel.com>
Cc: Stephane Eranian <eranian@...gle.com>
Cc: Dave Hansen <dave.hansen@...el.com>
Cc: Piotr Luc <piotr.luc@...el.com>
Cc: Andy Lutomirski <luto@...nel.org>
Cc: Arvind Yadav <arvind.yadav.cs@...il.com>
Cc: Vitaly Kuznetsov <vkuznets@...hat.com>
Cc: Borislav Petkov <bp@...e.de>
Cc: Tim Chen <tim.c.chen@...ux.intel.com>
Cc: Mathias Krause <minipli@...glemail.com>
Cc: "Kirill A. Shutemov" <kirill.shutemov@...ux.intel.com>
Link: https://lkml.kernel.org/r/20171114124257.22013-2-prarit@redhat.com

---
 arch/x86/events/intel/uncore.c       | 4 ++--
 arch/x86/events/intel/uncore.h       | 2 +-
 arch/x86/events/intel/uncore_snbep.c | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/arch/x86/events/intel/uncore.c b/arch/x86/events/intel/uncore.c
index d45e063..7874c98 100644
--- a/arch/x86/events/intel/uncore.c
+++ b/arch/x86/events/intel/uncore.c
@@ -975,10 +975,10 @@ static void uncore_pci_remove(struct pci_dev *pdev)
 	int i, phys_id, pkg;
 
 	phys_id = uncore_pcibus_to_physid(pdev->bus);
-	pkg = topology_phys_to_logical_pkg(phys_id);
 
 	box = pci_get_drvdata(pdev);
 	if (!box) {
+		pkg = topology_phys_to_logical_pkg(phys_id);
 		for (i = 0; i < UNCORE_EXTRA_PCI_DEV_MAX; i++) {
 			if (uncore_extra_pci_dev[pkg].dev[i] == pdev) {
 				uncore_extra_pci_dev[pkg].dev[i] = NULL;
@@ -994,7 +994,7 @@ static void uncore_pci_remove(struct pci_dev *pdev)
 		return;
 
 	pci_set_drvdata(pdev, NULL);
-	pmu->boxes[pkg] = NULL;
+	pmu->boxes[box->pkgid] = NULL;
 	if (atomic_dec_return(&pmu->activeboxes) == 0)
 		uncore_pmu_unregister(pmu);
 	uncore_box_exit(box);
diff --git a/arch/x86/events/intel/uncore.h b/arch/x86/events/intel/uncore.h
index 4364191..414dc7e 100644
--- a/arch/x86/events/intel/uncore.h
+++ b/arch/x86/events/intel/uncore.h
@@ -100,7 +100,7 @@ struct intel_uncore_extra_reg {
 
 struct intel_uncore_box {
 	int pci_phys_id;
-	int pkgid;
+	int pkgid;	/* Logical package ID */
 	int n_active;	/* number of active events */
 	int n_events;
 	int cpu;	/* cpu to collect events */
diff --git a/arch/x86/events/intel/uncore_snbep.c b/arch/x86/events/intel/uncore_snbep.c
index 95cb19f..de8f862 100644
--- a/arch/x86/events/intel/uncore_snbep.c
+++ b/arch/x86/events/intel/uncore_snbep.c
@@ -1057,7 +1057,7 @@ static void snbep_qpi_enable_event(struct intel_uncore_box *box, struct perf_eve
 
 	if (reg1->idx != EXTRA_REG_NONE) {
 		int idx = box->pmu->pmu_idx + SNBEP_PCI_QPI_PORT0_FILTER;
-		int pkg = topology_phys_to_logical_pkg(box->pci_phys_id);
+		int pkg = box->pkgid;
 		struct pci_dev *filter_pdev = uncore_extra_pci_dev[pkg].dev[idx];
 
 		if (filter_pdev) {

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ