Re: perf/x86/intel/uncore

From: Liang, Kan
Date: Fri Jan 25 2019 - 15:08:29 EST




On 1/25/2019 1:54 PM, Song Liu wrote:
Hi,

We are debugging an issue that skx_pci_uncores cannot be registered on
8-socket system with Xeon Platinum 8176 CPUs. After poking around for a
while, I found it is caused by snbep_pci2phy_map_init() couldn't find
a unbox_dev:

ubox_dev = pci_get_device(PCI_VENDOR_ID_INTEL, devid, ubox_dev);
unbox_dev == NULL
...

The same kernel (Linus' master) works fine on some single socket SKX
systems.

I am not sure what to check next. And I am not sure whether this is
specific to this system (HPE Superdome Flex).

Could you please share the offset 0xC0 and 0xD4 of the PCI configuration space for each device which PCI ID is 0x2014?

snbep_pci2phy_map_init() tries to build a mapping from BUS# to Socket ID.
CPUNODEID (0xc0) discloses the Node ID of current BUS.
GIDNIDMAP (0xd4) discloses the mapping between Socket ID and Node ID.

Here is an example from a 4 socket SKX.
BUS CPUNODEID(bit2:0) GIDNIDMAP
0x0 0x0 0x688
0x40 0x1 0x688
0x80 0x2 0x688
0xC0 0x3 0x688



One thing I noticed is that the PCI configuration space shows
subsystem vendor ID of 0x1590 instead of 0x8086:

0000:00:08.0 System peripheral: Intel Corporation Sky Lake-E Ubox Registers (rev 04)
00: 86 80 14 20 00 00 10 00 04 00 80 08 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 90 15 14 20 << subsystem vendor

30: 00 00 00 00 40 00 00 00 00 00 00 00 00 00 00 00

But I don't think that is the problem as the code search with PCI_ANY_ID.


It looks for the device with PCI ID 0x2014.


Thanks,
Kan