• Arnaldo Carvalho de Melo's avatar
    tools arch x86: Sync the msr-index.h copy with the kernel sources · 9dde6cad
    Arnaldo Carvalho de Melo authored
    To pick up the changes in:
    
      db1af129 ("x86/msr-index: Define INTEGRITY_CAPABILITIES MSR")
      089be16d ("x86/msr: Add PerfCntrGlobal* registers")
      f52ba931 ("tools/power turbostat: Add Power Limit4 support")
    
    Addressing these tools/perf build warnings:
    
        diff -u tools/arch/x86/include/asm/msr-index.h arch/x86/include/asm/msr-index.h
        Warning: Kernel ABI header at 'tools/arch/x86/include/asm/msr-index.h' differs from latest version at 'arch/x86/include/asm/msr-index.h'
    
    That makes the beautification scripts to pick some new entries:
    
      $ tools/perf/trace/beauty/tracepoints/x86_msr.sh > before
      $ cp arch/x86/include/asm/msr-index.h tools/arch/x86/include/asm/msr-index.h
      $ tools/perf/trace/beauty/tracepoints/x86_msr.sh > after
      $ diff -u before after
      --- before	2022-05-26 12:50:01.228612839 -0300
      +++ after	2022-05-26 12:50:07.699776166 -0300
      @@ -116,6 +116,7 @@
       	[0x0000026f] = "MTRRfix4K_F8000",
       	[0x00000277] = "IA32_CR_PAT",
       	[0x00000280] = "IA32_MC0_CTL2",
      +	[0x000002d9] = "INTEGRITY_CAPS",
       	[0x000002ff] = "MTRRdefType",
       	[0x00000309] = "CORE_PERF_FIXED_CTR0",
       	[0x0000030a] = "CORE_PERF_FIXED_CTR1",
      @@ -176,6 +177,7 @@
       	[0x00000586] = "IA32_RTIT_ADDR3_A",
       	[0x00000587] = "IA32_RTIT_ADDR3_B",
       	[0x00000600] = "IA32_DS_AREA",
      +	[0x00000601] = "VR_CURRENT_CONFIG",
       	[0x00000606] = "RAPL_POWER_UNIT",
       	[0x0000060a] = "PKGC3_IRTL",
       	[0x0000060b] = "PKGC6_IRTL",
      @@ -260,6 +262,10 @@
       	[0xc0000102 - x86_64_specific_MSRs_offset] = "KERNEL_GS_BASE",
       	[0xc0000103 - x86_64_specific_MSRs_offset] = "TSC_AUX",
       	[0xc0000104 - x86_64_specific_MSRs_offset] = "AMD64_TSC_RATIO",
      +	[0xc000010f - x86_64_specific_MSRs_offset] = "AMD_DBG_EXTN_CFG",
      +	[0xc0000300 - x86_64_specific_MSRs_offset] = "AMD64_PERF_CNTR_GLOBAL_STATUS",
      +	[0xc0000301 - x86_64_specific_MSRs_offset] = "AMD64_PERF_CNTR_GLOBAL_CTL",
      +	[0xc0000302 - x86_64_specific_MSRs_offset] = "AMD64_PERF_CNTR_GLOBAL_STATUS_CLR",
       };
    
       #define x86_AMD_V_KVM_MSRs_offset 0xc0010000
      @@ -318,4 +324,5 @@
       	[0xc00102b4 - x86_AMD_V_KVM_MSRs_offset] = "AMD_CPPC_STATUS",
       	[0xc00102f0 - x86_AMD_V_KVM_MSRs_offset] = "AMD_PPIN_CTL",
       	[0xc00102f1 - x86_AMD_V_KVM_MSRs_offset] = "AMD_PPIN",
      +	[0xc0010300 - x86_AMD_V_KVM_MSRs_offset] = "AMD_SAMP_BR_FROM",
       };
      $
    
    Now one can trace systemwide asking to see backtraces to where those
    MSRs are being read/written, see this example with a previous update:
    
      # perf trace -e msr:*_msr/max-stack=32/ --filter="msr>=IA32_U_CET && msr<=IA32_INT_SSP_TAB"
      ^C#
    
    If we use -v (verbose mode) we can see what it does behind the scenes:
    
      # perf trace -v -e msr:*_msr/max-stack=32/ --filter="msr>=IA32_U_CET && msr<=IA32_INT_SSP_TAB"
      Using CPUID AuthenticAMD-25-21-0
      0x6a0
      0x6a8
      New filter for msr:read_msr: (msr>=0x6a0 && msr<=0x6a8) && (common_pid != 597499 && common_pid != 3313)
      0x6a0
      0x6a8
      New filter for msr:write_msr: (msr>=0x6a0 && msr<=0x6a8) && (common_pid != 597499 && common_pid != 3313)
      mmap size 528384B
      ^C#
    
    Example with a frequent msr:
    
      # perf trace -v -e msr:*_msr/max-stack=32/ --filter="msr==IA32_SPEC_CTRL" --max-events 2
      Using CPUID AuthenticAMD-25-21-0
      0x48
      New filter for msr:read_msr: (msr==0x48) && (common_pid != 2612129 && common_pid != 3841)
      0x48
      New filter for msr:write_msr: (msr==0x48) && (common_pid != 2612129 && common_pid != 3841)
      mmap size 528384B
      Looking at the vmlinux_path (8 entries long)
      symsrc__init: build id mismatch for vmlinux.
      Using /proc/kcore for kernel data
      Using /proc/kallsyms for symbols
         0.000 Timer/2525383 msr:write_msr(msr: IA32_SPEC_CTRL, val: 6)
                                           do_trace_write_msr ([kernel.kallsyms])
                                           do_trace_write_msr ([kernel.kallsyms])
                                           __switch_to_xtra ([kernel.kallsyms])
                                           __switch_to ([kernel.kallsyms])
                                           __schedule ([kernel.kallsyms])
                                           schedule ([kernel.kallsyms])
                                           futex_wait_queue_me ([kernel.kallsyms])
                                           futex_wait ([kernel.kallsyms])
                                           do_futex ([kernel.kallsyms])
                                           __x64_sys_futex ([kernel.kallsyms])
                                           do_syscall_64 ([kernel.kallsyms])
                                           entry_SYSCALL_64_after_hwframe ([kernel.kallsyms])
                                           __futex_abstimed_wait_common64 (/usr/lib64/libpthread-2.33.so)
         0.030 :0/0 msr:write_msr(msr: IA32_SPEC_CTRL, val: 2)
                                           do_trace_write_msr ([kernel.kallsyms])
                                           do_trace_write_msr ([kernel.kallsyms])
                                           __switch_to_xtra ([kernel.kallsyms])
                                           __switch_to ([kernel.kallsyms])
                                           __schedule ([kernel.kallsyms])
                                           schedule_idle ([kernel.kallsyms])
                                           do_idle ([kernel.kallsyms])
                                           cpu_startup_entry ([kernel.kallsyms])
                                           secondary_startup_64_no_verify ([kernel.kallsyms])
      #
    
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Hans de Goede <hdegoede@redhat.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Len Brown <len.brown@intel.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Sandipan Das <sandipan.das@amd.com>
    Cc: Sumeet Pawnikar <sumeet.r.pawnikar@intel.com>
    Cc: Tony Luck <tony.luck@intel.com>
    Link: https://lore.kernel.org/lkml/Yo+i%252Fj5+UtE9dcix@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    9dde6cad
msr-index.h 38 KB