From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org, Steve Wahl <steve.wahl@hpe.com>,
Kan Liang <kan.liang@linux.intel.com>,
"Peter Zijlstra (Intel)" <peterz@infradead.org>,
Sasha Levin <sashal@kernel.org>
Subject: [PATCH 4.19 46/57] perf/x86/intel/uncore: Remove uncore extra PCI dev HSWEP_PCI_PCU_3
Date: Mon, 26 Apr 2021 09:29:43 +0200 [thread overview]
Message-ID: <20210426072822.131385198@linuxfoundation.org> (raw)
In-Reply-To: <20210426072820.568997499@linuxfoundation.org>
From: Kan Liang <kan.liang@linux.intel.com>
[ Upstream commit 9d480158ee86ad606d3a8baaf81e6b71acbfd7d5 ]
There may be a kernel panic on the Haswell server and the Broadwell
server, if the snbep_pci2phy_map_init() return error.
The uncore_extra_pci_dev[HSWEP_PCI_PCU_3] is used in the cpu_init() to
detect the existence of the SBOX, which is a MSR type of PMON unit.
The uncore_extra_pci_dev is allocated in the uncore_pci_init(). If the
snbep_pci2phy_map_init() returns error, perf doesn't initialize the
PCI type of the PMON units, so the uncore_extra_pci_dev will not be
allocated. But perf may continue initializing the MSR type of PMON
units. A null dereference kernel panic will be triggered.
The sockets in a Haswell server or a Broadwell server are identical.
Only need to detect the existence of the SBOX once.
Current perf probes all available PCU devices and stores them into the
uncore_extra_pci_dev. It's unnecessary.
Use the pci_get_device() to replace the uncore_extra_pci_dev. Only
detect the existence of the SBOX on the first available PCU device once.
Factor out hswep_has_limit_sbox(), since the Haswell server and the
Broadwell server uses the same way to detect the existence of the SBOX.
Add some macros to replace the magic number.
Fixes: 5306c31c5733 ("perf/x86/uncore/hsw-ep: Handle systems with only two SBOXes")
Reported-by: Steve Wahl <steve.wahl@hpe.com>
Signed-off-by: Kan Liang <kan.liang@linux.intel.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Tested-by: Steve Wahl <steve.wahl@hpe.com>
Link: https://lkml.kernel.org/r/1618521764-100923-1-git-send-email-kan.liang@linux.intel.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/x86/events/intel/uncore_snbep.c | 61 ++++++++++++----------------
1 file changed, 26 insertions(+), 35 deletions(-)
diff --git a/arch/x86/events/intel/uncore_snbep.c b/arch/x86/events/intel/uncore_snbep.c
index 8e4e8e423839..c06074b847fa 100644
--- a/arch/x86/events/intel/uncore_snbep.c
+++ b/arch/x86/events/intel/uncore_snbep.c
@@ -1030,7 +1030,6 @@ enum {
SNBEP_PCI_QPI_PORT0_FILTER,
SNBEP_PCI_QPI_PORT1_FILTER,
BDX_PCI_QPI_PORT2_FILTER,
- HSWEP_PCI_PCU_3,
};
static int snbep_qpi_hw_config(struct intel_uncore_box *box, struct perf_event *event)
@@ -2687,22 +2686,33 @@ static struct intel_uncore_type *hswep_msr_uncores[] = {
NULL,
};
-void hswep_uncore_cpu_init(void)
+#define HSWEP_PCU_DID 0x2fc0
+#define HSWEP_PCU_CAPID4_OFFET 0x94
+#define hswep_get_chop(_cap) (((_cap) >> 6) & 0x3)
+
+static bool hswep_has_limit_sbox(unsigned int device)
{
- int pkg = boot_cpu_data.logical_proc_id;
+ struct pci_dev *dev = pci_get_device(PCI_VENDOR_ID_INTEL, device, NULL);
+ u32 capid4;
+
+ if (!dev)
+ return false;
+
+ pci_read_config_dword(dev, HSWEP_PCU_CAPID4_OFFET, &capid4);
+ if (!hswep_get_chop(capid4))
+ return true;
+ return false;
+}
+
+void hswep_uncore_cpu_init(void)
+{
if (hswep_uncore_cbox.num_boxes > boot_cpu_data.x86_max_cores)
hswep_uncore_cbox.num_boxes = boot_cpu_data.x86_max_cores;
/* Detect 6-8 core systems with only two SBOXes */
- if (uncore_extra_pci_dev[pkg].dev[HSWEP_PCI_PCU_3]) {
- u32 capid4;
-
- pci_read_config_dword(uncore_extra_pci_dev[pkg].dev[HSWEP_PCI_PCU_3],
- 0x94, &capid4);
- if (((capid4 >> 6) & 0x3) == 0)
- hswep_uncore_sbox.num_boxes = 2;
- }
+ if (hswep_has_limit_sbox(HSWEP_PCU_DID))
+ hswep_uncore_sbox.num_boxes = 2;
uncore_msr_uncores = hswep_msr_uncores;
}
@@ -2965,11 +2975,6 @@ static const struct pci_device_id hswep_uncore_pci_ids[] = {
.driver_data = UNCORE_PCI_DEV_DATA(UNCORE_EXTRA_PCI_DEV,
SNBEP_PCI_QPI_PORT1_FILTER),
},
- { /* PCU.3 (for Capability registers) */
- PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x2fc0),
- .driver_data = UNCORE_PCI_DEV_DATA(UNCORE_EXTRA_PCI_DEV,
- HSWEP_PCI_PCU_3),
- },
{ /* end: all zeroes */ }
};
@@ -3061,27 +3066,18 @@ static struct event_constraint bdx_uncore_pcu_constraints[] = {
EVENT_CONSTRAINT_END
};
+#define BDX_PCU_DID 0x6fc0
+
void bdx_uncore_cpu_init(void)
{
- int pkg = topology_phys_to_logical_pkg(boot_cpu_data.phys_proc_id);
-
if (bdx_uncore_cbox.num_boxes > boot_cpu_data.x86_max_cores)
bdx_uncore_cbox.num_boxes = boot_cpu_data.x86_max_cores;
uncore_msr_uncores = bdx_msr_uncores;
- /* BDX-DE doesn't have SBOX */
- if (boot_cpu_data.x86_model == 86) {
- uncore_msr_uncores[BDX_MSR_UNCORE_SBOX] = NULL;
/* Detect systems with no SBOXes */
- } else if (uncore_extra_pci_dev[pkg].dev[HSWEP_PCI_PCU_3]) {
- struct pci_dev *pdev;
- u32 capid4;
-
- pdev = uncore_extra_pci_dev[pkg].dev[HSWEP_PCI_PCU_3];
- pci_read_config_dword(pdev, 0x94, &capid4);
- if (((capid4 >> 6) & 0x3) == 0)
- bdx_msr_uncores[BDX_MSR_UNCORE_SBOX] = NULL;
- }
+ if ((boot_cpu_data.x86_model == 86) || hswep_has_limit_sbox(BDX_PCU_DID))
+ uncore_msr_uncores[BDX_MSR_UNCORE_SBOX] = NULL;
+
hswep_uncore_pcu.constraints = bdx_uncore_pcu_constraints;
}
@@ -3302,11 +3298,6 @@ static const struct pci_device_id bdx_uncore_pci_ids[] = {
.driver_data = UNCORE_PCI_DEV_DATA(UNCORE_EXTRA_PCI_DEV,
BDX_PCI_QPI_PORT2_FILTER),
},
- { /* PCU.3 (for Capability registers) */
- PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x6fc0),
- .driver_data = UNCORE_PCI_DEV_DATA(UNCORE_EXTRA_PCI_DEV,
- HSWEP_PCI_PCU_3),
- },
{ /* end: all zeroes */ }
};
--
2.30.2
next prev parent reply other threads:[~2021-04-26 7:47 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-26 7:28 [PATCH 4.19 00/57] 4.19.189-rc1 review Greg Kroah-Hartman
2021-04-26 7:28 ` [PATCH 4.19 01/57] net/sctp: fix race condition in sctp_destroy_sock Greg Kroah-Hartman
2021-04-26 7:28 ` [PATCH 4.19 02/57] Input: nspire-keypad - enable interrupts only when opened Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 03/57] gpio: sysfs: Obey valid_mask Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 04/57] dmaengine: dw: Make it dependent to HAS_IOMEM Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 05/57] ARM: dts: Drop duplicate sha2md5_fck to fix clk_disable race Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 06/57] ARM: dts: Fix moving mmc devices with aliases for omap4 & 5 Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 07/57] lockdep: Add a missing initialization hint to the "INFO: Trying to register non-static key" message Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 08/57] arc: kernel: Return -EFAULT if copy_to_user() fails Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 09/57] neighbour: Disregard DEAD dst in neigh_update Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 10/57] ARM: keystone: fix integer overflow warning Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 11/57] drm/msm: Fix a5xx/a6xx timestamps Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 12/57] ASoC: fsl_esai: Fix TDM slot setup for I2S mode Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 13/57] scsi: scsi_transport_srp: Dont block target in SRP_PORT_LOST state Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 14/57] net: ieee802154: stop dump llsec keys for monitors Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 15/57] net: ieee802154: stop dump llsec devs " Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 16/57] net: ieee802154: forbid monitor for add llsec dev Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 17/57] net: ieee802154: stop dump llsec devkeys for monitors Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 18/57] net: ieee802154: forbid monitor for add llsec devkey Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 19/57] net: ieee802154: stop dump llsec seclevels for monitors Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 20/57] net: ieee802154: forbid monitor for add llsec seclevel Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 21/57] pcnet32: Use pci_resource_len to validate PCI resource Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 22/57] mac80211: clear sta->fast_rx when STA removed from 4-addr VLAN Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 23/57] Input: s6sy761 - fix coordinate read bit shift Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 24/57] Input: i8042 - fix Pegatron C15B ID entry Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 25/57] HID: wacom: set EV_KEY and EV_ABS only for non-HID_GENERIC type of devices Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 26/57] dm verity fec: fix misaligned RS roots IO Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 27/57] readdir: make sure to verify directory entry for legacy interfaces too Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 28/57] arm64: fix inline asm in load_unaligned_zeropad() Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 29/57] arm64: alternatives: Move length validation in alternative_{insn, endif} Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 30/57] scsi: libsas: Reset num_scatter if libata marks qc as NODATA Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 31/57] netfilter: conntrack: do not print icmpv6 as unknown via /proc Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 32/57] netfilter: nft_limit: avoid possible divide error in nft_limit_init Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 33/57] net: davicom: Fix regulator not turned off on failed probe Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 34/57] net: sit: Unregister catch-all devices Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 35/57] net: ip6_tunnel: " Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 36/57] i40e: fix the panic when running bpf in xdpdrv mode Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 37/57] ibmvnic: avoid calling napi_disable() twice Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 38/57] ibmvnic: remove duplicate napi_schedule call in do_reset function Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 39/57] ibmvnic: remove duplicate napi_schedule call in open function Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 40/57] ARM: footbridge: fix PCI interrupt mapping Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 41/57] ARM: 9071/1: uprobes: Dont hook on thumb instructions Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 42/57] net: phy: marvell: fix detection of PHY on Topaz switches Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 43/57] gup: document and work around "COW can break either way" issue Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 44/57] pinctrl: lewisburg: Update number of pins in community Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 45/57] locking/qrwlock: Fix ordering in queued_write_lock_slowpath() Greg Kroah-Hartman
2021-04-26 7:29 ` Greg Kroah-Hartman [this message]
2021-04-26 7:29 ` [PATCH 4.19 47/57] HID: google: add don USB id Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 48/57] HID: alps: fix error return code in alps_input_configured() Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 49/57] HID: wacom: Assign boolean values to a bool variable Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 50/57] ARM: dts: Fix swapped mmc order for omap3 Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 51/57] net: geneve: check skb is large enough for IPv4/IPv6 header Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 52/57] s390/entry: save the caller of psw_idle Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 53/57] xen-netback: Check for hotplug-status existence before watching Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 54/57] cavium/liquidio: Fix duplicate argument Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 55/57] ia64: fix discontig.c section mismatches Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 56/57] ia64: tools: remove duplicate definition of ia64_mf() on ia64 Greg Kroah-Hartman
2021-04-26 7:29 ` [PATCH 4.19 57/57] x86/crash: Fix crash_setup_memmap_entries() out-of-bounds access Greg Kroah-Hartman
2021-04-26 9:53 ` [PATCH 4.19 00/57] 4.19.189-rc1 review Pavel Machek
2021-04-26 18:33 ` Guenter Roeck
2021-04-26 20:35 ` Sudip Mukherjee
2021-04-26 23:47 ` Shuah Khan
2021-04-27 6:44 ` Naresh Kamboju
2021-04-28 2:49 ` Samuel Zou
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=20210426072822.131385198@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=kan.liang@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=peterz@infradead.org \
--cc=sashal@kernel.org \
--cc=stable@vger.kernel.org \
--cc=steve.wahl@hpe.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).