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

Reply via email to