lkml.org 
[lkml]   [2017]   [Jan]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 033/120] perf/x86/intel/uncore: Fix hardcoded socket 0 assumption in the Haswell init code
    Date
    4.9-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Prarit Bhargava <prarit@redhat.com>

    commit 6d6daa20945f3f598e56e18d1f926c08754f5801 upstream.

    hswep_uncore_cpu_init() uses a hardcoded physical package id 0 for the boot
    cpu. This works as long as the boot CPU is actually on the physical package
    0, which is normaly the case after power on / reboot.

    But it fails with a NULL pointer dereference when a kdump kernel is started
    on a secondary socket which has a different physical package id because the
    locigal package translation for physical package 0 does not exist.

    Use the logical package id of the boot cpu instead of hard coded 0.

    [ tglx: Rewrote changelog once more ]

    Fixes: cf6d445f6897 ("perf/x86/uncore: Track packages, not per CPU data")
    Signed-off-by: Prarit Bhargava <prarit@redhat.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Borislav Petkov <bp@suse.de>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Harish Chegondi <harish.chegondi@intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Kan Liang <kan.liang@intel.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>
    Link: http://lkml.kernel.org/r/1483628965-2890-1-git-send-email-prarit@redhat.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    arch/x86/events/intel/uncore_snbep.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/arch/x86/events/intel/uncore_snbep.c
    +++ b/arch/x86/events/intel/uncore_snbep.c
    @@ -2686,7 +2686,7 @@ static struct intel_uncore_type *hswep_m

    void hswep_uncore_cpu_init(void)
    {
    - int pkg = topology_phys_to_logical_pkg(0);
    + int pkg = boot_cpu_data.logical_proc_id;

    if (hswep_uncore_cbox.num_boxes > boot_cpu_data.x86_max_cores)
    hswep_uncore_cbox.num_boxes = boot_cpu_data.x86_max_cores;

    \
     
     \ /
      Last update: 2017-01-18 12:21    [W:4.048 / U:0.344 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site