• Dhananjay Ugwekar's avatar
    powercap/intel_rapl: Fix the energy-pkg event for AMD CPUs · 26096aed
    Dhananjay Ugwekar authored
    After commit ("x86/cpu/topology: Add support for the AMD 0x80000026 leaf"),
    on AMD processors that support extended CPUID leaf 0x80000026, the
    topology_logical_die_id() macros, no longer returns package id, instead it
    returns the CCD (Core Complex Die) id. This leads to the energy-pkg
    event scope to be modified to CCD instead of package.
    
    For more historical context, please refer to commit 32fb480e
    ("powercap/intel_rapl: Support multi-die/package"), which initially changed
    the RAPL scope from package to die for all systems, as Intel systems
    with Die enumeration have RAPL scope as die, and those without die
    enumeration are not affected. So, all systems(Intel, AMD, Hygon), worked
    correctly with topology_logical_die_id() until recently, but this changed
    after the "0x80000026 leaf" commit mentioned above.
    
    Future multi-die Intel systems will have package scope RAPL counters,
    but they will be using TPMI RAPL interface, which is not affected by
    this change.
    
    Replacing topology_logical_die_id() with topology_physical_package_id()
    conditionally only for AMD and Hygon fixes the energy-pkg event.
    
    On an AMD 2 socket 8 CCD Zen4 server:
    
    Before:
    
    linux$ ls /sys/class/powercap/
    intel-rapl      intel-rapl:4    intel-rapl:8:0  intel-rapl:d
    intel-rapl:0    intel-rapl:4:0  intel-rapl:9    intel-rapl:d:0
    intel-rapl:0:0  intel-rapl:5    intel-rapl:9:0  intel-rapl:e
    intel-rapl:1    intel-rapl:5:0  intel-rapl:a    intel-rapl:e:0
    intel-rapl:1:0  intel-rapl:6    intel-rapl:a:0  intel-rapl:f
    intel-rapl:2    intel-rapl:6:0  intel-rapl:b    intel-rapl:f:0
    intel-rapl:2:0  intel-rapl:7    intel-rapl:b:0
    intel-rapl:3    intel-rapl:7:0  intel-rapl:c
    intel-rapl:3:0  intel-rapl:8    intel-rapl:c:0
    
    After:
    
    linux$ ls /sys/class/powercap/
    intel-rapl  intel-rapl:0  intel-rapl:0:0  intel-rapl:1  intel-rapl:1:0
    
    Only one sysfs entry per-event per-package is created after this change.
    
    Fixes: 63edbaa4 ("x86/cpu/topology: Add support for the AMD 0x80000026 leaf")
    Reported-by: default avatarMichael Larabel <michael@michaellarabel.com>
    Signed-off-by: default avatarDhananjay Ugwekar <Dhananjay.Ugwekar@amd.com>
    Reviewed-by: default avatarZhang Rui <rui.zhang@intel.com>
    Link: https://patch.msgid.link/20240730044917.4680-3-Dhananjay.Ugwekar@amd.comSigned-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    26096aed
intel_rapl_common.c 65 KB