• K
    perf/x86/intel/uncore: Fix multi-domain PCI CHA enumeration bug on Skylake servers · 320b0651
    Kan Liang 提交于
    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: NKroening, Gary <gary.kroening@hpe.com>
    Tested-by: NKroening, Gary <gary.kroening@hpe.com>
    Signed-off-by: NKan Liang <kan.liang@linux.intel.com>
    Signed-off-by: NPeter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: NAndy 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: NIngo Molnar <mingo@kernel.org>
    320b0651
uncore_snbep.c 116.1 KB