For Intel uncore, the registers being used to identify the die don't contain enough bits to uniquely identify more than 8 dies. On systems with more than 8 dies, this results in error messages of the form "skx_uncore: probe of XXXX:XX:XX.X failed with error -22", and some perf counters showing up as "<not supported>".
On such systems, use NUMA information to determine die id. Continue to use the register information with 8 or fewer numa nodes to cover cases like NUMA not being enabled. The first patch moves translation from physical to logical die id earlier in the code, and stores only the logical id. The logical id is the only one that is really used. Without this change the second patch would have to store both physical and logical id, which was much more complicated. The second patch adds the alternative of deriving the logical die id from the NUMA information when there are more than 8 nodes. Steve Wahl (2): perf/x86/intel/uncore: Store the logical die id instead of the physical die id. perf/x86/intel/uncore: With > 8 nodes, get pci bus die id from NUMA info arch/x86/events/intel/uncore.c | 58 +++++--------- arch/x86/events/intel/uncore.h | 5 +- arch/x86/events/intel/uncore_snb.c | 2 +- arch/x86/events/intel/uncore_snbep.c | 114 ++++++++++++++++++--------- 4 files changed, 99 insertions(+), 80 deletions(-) -- 2.26.2