• Kan Liang's avatar
    perf/x86/intel/uncore: Fix multi-domain PCI CHA enumeration bug on Skylake servers · 320b0651
    Kan Liang authored
    The number of CHAs is miscalculated on multi-domain PCI Skylake server systems,
    resulting in an uncore driver initialization error.
    
    Gary Kroening explains:
    
     "For systems with a single PCI segment, it is sufficient to look for the
      bus number to change in order to determine that all of the CHa's have
      been counted for a single socket.
    
      However, for multi PCI segment systems, each socket is given a new
      segment and the bus number does NOT change.  So looking only for the
      bus number to change ends up counting all of the CHa's on all sockets
      in the system.  This leads to writing CPU MSRs beyond a valid range and
      causes an error in ivbep_uncore_msr_init_box()."
    
    To fix this bug, query the number of CHAs from the CAPID6 register:
    it should read bits 27:0 in the CAPID6 register located at
    Device 30, Function 3, Offset 0x9C. These 28 bits form a bit vector
    of available LLC slices and the CHAs that manage those slices.
    Reported-by: default avatarKroening, Gary <gary.kroening@hpe.com>
    Tested-by: default avatarKroening, Gary <gary.kroening@hpe.com>
    Signed-off-by: default avatarKan Liang <kan.liang@linux.intel.com>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: default avatarAndy Shevchenko <andy.shevchenko@gmail.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Cc: abanman@hpe.com
    Cc: dimitri.sivanich@hpe.com
    Cc: hpa@zytor.com
    Cc: mike.travis@hpe.com
    Cc: russ.anderson@hpe.com
    Fixes: cd34cd97 ("perf/x86/intel/uncore: Add Skylake server uncore support")
    Link: http://lkml.kernel.org/r/1520967094-13219-1-git-send-email-kan.liang@linux.intel.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    320b0651
uncore_snbep.c 116 KB