Skip to content
  1. Dec 24, 2020
    • James Clark's avatar
      perf cpumap: Drop in cpu_aggr_map struct · d526e1a0
      James Clark authored
      
      
      Replace usages of perf_cpu_map with cpu_aggr map in places that are
      involved with 'perf stat' aggregation.
      
      This will then later be changed to be a map of cpu_aggr_id rather than
      an int so that more data can be stored.
      
      No functional changes.
      
      Signed-off-by: default avatarJames Clark <james.clark@arm.com>
      Acked-by: default avatarNamhyung Kim <namhyung@kernel.org>
      Acked-by: default avatarJiri Olsa <jolsa@redhat.com>
      Tested-by: default avatarJohn Garry <john.garry@huawei.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Thomas Richter <tmricht@linux.ibm.com>
      Link: https://lore.kernel.org/r/20201126141328.6509-7-james.clark@arm.com
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      d526e1a0
    • James Clark's avatar
      perf cpumap: Add new map type for aggregation · cea6575f
      James Clark authored
      
      
      Currently this is a duplicate of perf_cpu_map so that it can be used as
      a drop in replacement.
      
      In a later commit it will be changed from a map of ints to use the new
      cpu_aggr_id struct.
      
      No functional changes.
      
      Signed-off-by: default avatarJames Clark <james.clark@arm.com>
      Acked-by: default avatarNamhyung Kim <namhyung@kernel.org>
      Acked-by: default avatarJiri Olsa <jolsa@redhat.com>
      Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Tested-by: default avatarJohn Garry <john.garry@huawei.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Thomas Richter <tmricht@linux.ibm.com>
      Link: https://lore.kernel.org/r/20201126141328.6509-6-james.clark@arm.com
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      cea6575f
    • James Clark's avatar
      perf stat: Replace aggregation ID with a struct · 2760f5a1
      James Clark authored
      
      
      Replace all occurences of the usage of int with the new struct
      cpu_aggr_id.
      
      No functional changes.
      
      Signed-off-by: default avatarJames Clark <james.clark@arm.com>
      Acked-by: default avatarNamhyung Kim <namhyung@kernel.org>
      Acked-by: default avatarJiri Olsa <jolsa@redhat.com>
      Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Tested-by: default avatarJohn Garry <john.garry@huawei.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Thomas Richter <tmricht@linux.ibm.com>
      Link: https://lore.kernel.org/r/20201126141328.6509-5-james.clark@arm.com
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      2760f5a1
    • James Clark's avatar
      perf cpumap: Add new struct for cpu aggregation · fa265e59
      James Clark authored
      
      
      This struct currently has only a single int member so that it can be
      used as a drop in replacement for the existing behaviour.
      
      Comparison and constructor functions have also been added that will
      replace usages of '==' and '= -1'.
      
      No functional changes.
      
      Signed-off-by: default avatarJames Clark <james.clark@arm.com>
      Acked-by: default avatarNamhyung Kim <namhyung@kernel.org>
      Acked-by: default avatarJiri Olsa <jolsa@redhat.com>
      Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Tested-by: default avatarJohn Garry <john.garry@huawei.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Thomas Richter <tmricht@linux.ibm.com>
      Link: https://lore.kernel.org/r/20201126141328.6509-4-james.clark@arm.com
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      fa265e59
    • James Clark's avatar
      perf cpumap: Use existing allocator to avoid using malloc · 91585846
      James Clark authored
      
      
      Use the existing allocator for perf_cpu_map to avoid use of raw malloc.
      This could cause an issue in later commits where the size of
      perf_cpu_map is changed.
      
      No functional changes.
      
      Signed-off-by: default avatarJames Clark <james.clark@arm.com>
      Acked-by: default avatarNamhyung Kim <namhyung@kernel.org>
      Acked-by: default avatarJiri Olsa <jolsa@redhat.com>
      Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Tested-by: default avatarJohn Garry <john.garry@huawei.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Thomas Richter <tmricht@linux.ibm.com>
      Link: https://lore.kernel.org/r/20201126141328.6509-3-james.clark@arm.com
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      91585846
    • James Clark's avatar
      perf tests: Improve topology test to check all aggregation types · 23331eeb
      James Clark authored
      
      
      Improve the topology test to check all aggregation types. This is to
      lock down the behaviour before 'id' is changed into a struct in later
      commits.
      
      Committer testing:
      
        $ perf test topology
        41: Session topology: Ok
        $
      
        $ perf test -v topology
        41: Session topology:
        --- start ---
        test child forked, pid 965552
        templ file: /tmp/perf-test-mO7NtI
        Problems creating module maps, continuing anyway...
        CPU 0, core 0, socket 0
        CPU 1, core 1, socket 0
        CPU 2, core 2, socket 0
        CPU 3, core 4, socket 0
        CPU 4, core 5, socket 0
        CPU 5, core 6, socket 0
        CPU 6, core 8, socket 0
        CPU 7, core 9, socket 0
        CPU 8, core 10, socket 0
        CPU 9, core 12, socket 0
        CPU 10, core 13, socket 0
        CPU 11, core 14, socket 0
        CPU 12, core 0, socket 0
        CPU 13, core 1, socket 0
        CPU 14, core 2, socket 0
        CPU 15, core 4, socket 0
        CPU 16, core 5, socket 0
        CPU 17, core 6, socket 0
        CPU 18, core 8, socket 0
        CPU 19, core 9, socket 0
        CPU 20, core 10, socket 0
        CPU 21, core 12, socket 0
        CPU 22, core 13, socket 0
        CPU 23, core 14, socket 0
        test child finished with 0
        ---- end ----
        Session topology: Ok
        $
      
      Signed-off-by: default avatarJames Clark <james.clark@arm.com>
      Acked-by: default avatarNamhyung Kim <namhyung@kernel.org>
      Acked-by: default avatarJiri Olsa <jolsa@redhat.com>
      Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Tested-by: default avatarJohn Garry <john.garry@huawei.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Thomas Richter <tmricht@linux.ibm.com>
      Link: https://lore.kernel.org/r/20201126141328.6509-2-james.clark@arm.com
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      23331eeb
    • Tiezhu Yang's avatar
      perf tools: Update s390's syscall.tbl copy from the kernel sources · b27d20ab
      Tiezhu Yang authored
      
      
      This silences the following tools/perf/ build warning:
      
        Warning: Kernel ABI header at 'tools/perf/arch/s390/entry/syscalls/syscall.tbl' differs from latest version at 'arch/s390/kernel/syscalls/syscall.tbl'
      
      Just make them same:
      
        cp arch/s390/kernel/syscalls/syscall.tbl tools/perf/arch/s390/entry/syscalls/syscall.tbl
      
      Signed-off-by: default avatarTiezhu Yang <yangtiezhu@loongson.cn>
      Reviewed-by: default avatarNaveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Xuefeng Li <lixuefeng@loongson.cn>
      Link: http://lore.kernel.org/lkml/1608278364-6733-5-git-send-email-yangtiezhu@loongson.cn
      [ There were updates after Tiezhu's post, so I just updated the copy ]
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      b27d20ab
    • Tiezhu Yang's avatar
      perf tools: Update powerpc's syscall.tbl copy from the kernel sources · c5ef5294
      Tiezhu Yang authored
      
      
      This silences the following tools/perf/ build warning:
      
        Warning: Kernel ABI header at 'tools/perf/arch/powerpc/entry/syscalls/syscall.tbl' differs from latest version at 'arch/powerpc/kernel/syscalls/syscall.tbl'
      
      Just make them same:
      
        cp arch/powerpc/kernel/syscalls/syscall.tbl tools/perf/arch/powerpc/entry/syscalls/syscall.tbl
      
      Signed-off-by: default avatarTiezhu Yang <yangtiezhu@loongson.cn>
      Reviewed-by: default avatarNaveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Xuefeng Li <lixuefeng@loongson.cn>
      Link: http://lore.kernel.org/lkml/1608278364-6733-4-git-send-email-yangtiezhu@loongson.cn
      [ There were updates after Tiezhu's post, so I just updated the copy ]
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      c5ef5294
    • Tiezhu Yang's avatar
      perf s390: Move syscall.tbl check into check-headers.sh · 22ffc3f5
      Tiezhu Yang authored
      It is better to check syscall.tbl for s390 in check-headers.sh, it is
      similar with commit c9b51a01
      
       ("perf tools: Move syscall_64.tbl check
      into check-headers.sh").
      
      Signed-off-by: default avatarTiezhu Yang <yangtiezhu@loongson.cn>
      Reviewed-by: default avatarNaveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Xuefeng Li <lixuefeng@loongson.cn>
      Link: http://lore.kernel.org/lkml/1608278364-6733-3-git-send-email-yangtiezhu@loongson.cn
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      22ffc3f5
    • Tiezhu Yang's avatar
      perf powerpc: Move syscall.tbl check to check-headers.sh · 9bad32b2
      Tiezhu Yang authored
      It is better to check syscall.tbl for powerpc in check-headers.sh, it is
      similar with commit c9b51a01
      
       ("perf tools: Move syscall_64.tbl check
      into check-headers.sh").
      
      Signed-off-by: default avatarTiezhu Yang <yangtiezhu@loongson.cn>
      Reviewed-by: default avatarNaveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Xuefeng Li <lixuefeng@loongson.cn>
      Link: http://lore.kernel.org/lkml/1608278364-6733-2-git-send-email-yangtiezhu@loongson.cn
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      9bad32b2
    • Arnaldo Carvalho de Melo's avatar
      tools headers UAPI: Synch KVM's svm.h header with the kernel · b71df82d
      Arnaldo Carvalho de Melo authored
      To pick up the changes from:
      
        d1949b93 ("KVM: SVM: Add support for CR8 write traps for an SEV-ES guest")
        5b51cb13 ("KVM: SVM: Add support for CR4 write traps for an SEV-ES guest")
        f27ad38a ("KVM: SVM: Add support for CR0 write traps for an SEV-ES guest")
        2985afbc ("KVM: SVM: Add support for EFER write traps for an SEV-ES guest")
        291bd20d
      
       ("KVM: SVM: Add initial support for a VMGEXIT VMEXIT")
      
      Picking these new SVM exit reasons:
      
        +	{ SVM_EXIT_EFER_WRITE_TRAP,	"write_efer_trap" }, \
        +	{ SVM_EXIT_CR0_WRITE_TRAP,	"write_cr0_trap" }, \
        +	{ SVM_EXIT_CR4_WRITE_TRAP,	"write_cr4_trap" }, \
        +	{ SVM_EXIT_CR8_WRITE_TRAP,	"write_cr8_trap" }, \
        +	{ SVM_EXIT_VMGEXIT,		"vmgexit" }, \
        +	{ SVM_VMGEXIT_MMIO_READ,	"vmgexit_mmio_read" }, \
        +	{ SVM_VMGEXIT_MMIO_WRITE,	"vmgexit_mmio_write" }, \
        +	{ SVM_VMGEXIT_NMI_COMPLETE,	"vmgexit_nmi_complete" }, \
        +	{ SVM_VMGEXIT_AP_HLT_LOOP,	"vmgexit_ap_hlt_loop" }, \
        +	{ SVM_VMGEXIT_AP_JUMP_TABLE,	"vmgexit_ap_jump_table" }, \
      
      And address this perf build warning:
      
        Warning: Kernel ABI header at 'tools/arch/x86/include/uapi/asm/svm.h' differs from latest version at 'arch/x86/include/uapi/asm/svm.h'
        diff -u tools/arch/x86/include/uapi/asm/svm.h arch/x86/include/uapi/asm/svm.h
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Cc: Tom Lendacky <thomas.lendacky@amd.com>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      b71df82d
    • Arnaldo Carvalho de Melo's avatar
      tools kvm headers: Update KVM headers from the kernel sources · 9880e71c
      Arnaldo Carvalho de Melo authored
      To pick the changes from:
      
        8d14797b
      
       ("KVM: arm64: Move 'struct kvm_arch_memory_slot' out of uapi/")
      
      That don't causes any changes in tooling, only addresses this perf build
      warning:
      
        Warning: Kernel ABI header at 'tools/arch/arm64/include/uapi/asm/kvm.h' differs from latest version at 'arch/arm64/include/uapi/asm/kvm.h'
        diff -u tools/arch/arm64/include/uapi/asm/kvm.h arch/arm64/include/uapi/asm/kvm.h
      
      Cc: Marc Zyngier <maz@kernel.org>
      Cc: Will Deacon <will@kernel.org>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      9880e71c
    • Arnaldo Carvalho de Melo's avatar
      tools headers UAPI: Sync KVM's vmx.h header with the kernel sources · cd97448d
      Arnaldo Carvalho de Melo authored
      To pick the changes in:
      
        bf0cd88c
      
       ("KVM: x86: emulate wait-for-SIPI and SIPI-VMExit")
      
      That makes 'perf kvm-stat' aware of this new SIPI_SIGNAL exit reason,
      thus addressing the following perf build warning:
      
        Warning: Kernel ABI header at 'tools/arch/x86/include/uapi/asm/vmx.h' differs from latest version at 'arch/x86/include/uapi/asm/vmx.h'
        diff -u tools/arch/x86/include/uapi/asm/vmx.h arch/x86/include/uapi/asm/vmx.h
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Cc: Yadong Qi <yadong.qi@intel.com>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      cd97448d
    • Arnaldo Carvalho de Melo's avatar
      tools headers UAPI: Sync kvm.h headers with the kernel sources · 288807fc
      Arnaldo Carvalho de Melo authored
      To pick the changes in:
      
        fb04a1ed
      
       ("KVM: X86: Implement ring-based dirty memory tracking")
      
      That result in these change in tooling:
      
        $ tools/perf/trace/beauty/kvm_ioctl.sh > before
        $ cp include/uapi/linux/kvm.h tools/include/uapi/linux/kvm.h
        $ cp arch/x86/include/uapi/asm/kvm.h tools/arch/x86/include/uapi/asm/kvm.h
        $ tools/perf/trace/beauty/kvm_ioctl.sh > after
        $ diff -u before after
        --- before	2020-12-21 11:55:45.229737066 -0300
        +++ after	2020-12-21 11:55:56.379983393 -0300
        @@ -90,6 +90,7 @@
         	[0xc0] = "CLEAR_DIRTY_LOG",
         	[0xc1] = "GET_SUPPORTED_HV_CPUID",
         	[0xc6] = "X86_SET_MSR_FILTER",
        +	[0xc7] = "RESET_DIRTY_RINGS",
         	[0xe0] = "CREATE_DEVICE",
         	[0xe1] = "SET_DEVICE_ATTR",
         	[0xe2] = "GET_DEVICE_ATTR",
        $
      
      Now one can use that string in filters when tracing ioctls, etc.
      
      And silences this perf build warning:
      
        Warning: Kernel ABI header at 'tools/include/uapi/linux/kvm.h' differs from latest version at 'include/uapi/linux/kvm.h'
        diff -u tools/include/uapi/linux/kvm.h include/uapi/linux/kvm.h
        Warning: Kernel ABI header at 'tools/arch/x86/include/uapi/asm/kvm.h' differs from latest version at 'arch/x86/include/uapi/asm/kvm.h'
        diff -u tools/arch/x86/include/uapi/asm/kvm.h arch/x86/include/uapi/asm/kvm.h
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Cc: Peter Xu <peterx@redhat.com>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      288807fc
    • Arnaldo Carvalho de Melo's avatar
      tools arch x86: Sync the msr-index.h copy with the kernel sources · fde66824
      Arnaldo Carvalho de Melo authored
      To pick up the changes in:
      
      Fixes: 69372cf0
      
       ("x86/cpu: Add VM page flush MSR availablility as a CPUID feature")
      
      That cause these changes in tooling:
      
        $ 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	2020-12-21 09:09:05.593005003 -0300
        +++ after	2020-12-21 09:12:48.436994802 -0300
        @@ -21,7 +21,7 @@
         	[0x0000004f] = "PPIN",
         	[0x00000060] = "LBR_CORE_TO",
         	[0x00000079] = "IA32_UCODE_WRITE",
        -	[0x0000008b] = "IA32_UCODE_REV",
        +	[0x0000008b] = "AMD64_PATCH_LEVEL",
         	[0x0000008C] = "IA32_SGXLEPUBKEYHASH0",
         	[0x0000008D] = "IA32_SGXLEPUBKEYHASH1",
         	[0x0000008E] = "IA32_SGXLEPUBKEYHASH2",
        @@ -286,6 +286,7 @@
         	[0xc0010114 - x86_AMD_V_KVM_MSRs_offset] = "VM_CR",
         	[0xc0010115 - x86_AMD_V_KVM_MSRs_offset] = "VM_IGNNE",
         	[0xc0010117 - x86_AMD_V_KVM_MSRs_offset] = "VM_HSAVE_PA",
        +	[0xc001011e - x86_AMD_V_KVM_MSRs_offset] = "AMD64_VM_PAGE_FLUSH",
         	[0xc001011f - x86_AMD_V_KVM_MSRs_offset] = "AMD64_VIRT_SPEC_CTRL",
         	[0xc0010130 - x86_AMD_V_KVM_MSRs_offset] = "AMD64_SEV_ES_GHCB",
         	[0xc0010131 - x86_AMD_V_KVM_MSRs_offset] = "AMD64_SEV",
        $
      
      The new MSR has a pattern that wasn't matched to avoid a clash with
      IA32_UCODE_REV, change the regex to prefer the more relevant AMD_
      prefixed ones to catch this new AMD64_VM_PAGE_FLUSH MSR.
      
      Which causes these parts of tools/perf/ to be rebuilt:
      
        CC       /tmp/build/perf/trace/beauty/tracepoints/x86_msr.o
        LD       /tmp/build/perf/trace/beauty/tracepoints/perf-in.o
        LD       /tmp/build/perf/trace/beauty/perf-in.o
        LD       /tmp/build/perf/perf-in.o
        LINK     /tmp/build/perf/perf
      
      This addresses this perf tools build warning:
      
        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'
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Cc: Tom Lendacky <thomas.lendacky@amd.com>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      fde66824
    • Arnaldo Carvalho de Melo's avatar
      tools headers cpufeatures: Sync with the kernel sources · 7f3905f0
      Arnaldo Carvalho de Melo authored
      To pick the changes in:
      
        69372cf0 ("x86/cpu: Add VM page flush MSR availablility as a CPUID feature")
        e1b35da5
      
       ("x86: Enumerate AVX512 FP16 CPUID feature flag")
      
      That causes only these 'perf bench' objects to rebuild:
      
        CC       /tmp/build/perf/bench/mem-memcpy-x86-64-asm.o
        CC       /tmp/build/perf/bench/mem-memset-x86-64-asm.o
      
      And addresses these perf build warnings:
      
        Warning: Kernel ABI header at 'tools/arch/x86/include/asm/cpufeatures.h' differs from latest version at 'arch/x86/include/asm/cpufeatures.h'
        diff -u tools/arch/x86/include/asm/cpufeatures.h arch/x86/include/asm/cpufeatures.h
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kyung Min Park <kyung.min.park@intel.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Cc: Tom Lendacky <thomas.lendacky@amd.com>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      7f3905f0
    • Arnaldo Carvalho de Melo's avatar
      tools headers UAPI: Update epoll_pwait2 affected files · 6e519214
      Arnaldo Carvalho de Melo authored
      To pick the changes from:
      
        b0a0c261
      
       ("epoll: wire up syscall epoll_pwait2")
      
      That addresses these perf build warning:
      
        Warning: Kernel ABI header at 'tools/include/uapi/asm-generic/unistd.h' differs from latest version at 'include/uapi/asm-generic/unistd.h'
        diff -u tools/include/uapi/asm-generic/unistd.h include/uapi/asm-generic/unistd.h
        Warning: Kernel ABI header at 'tools/perf/arch/x86/entry/syscalls/syscall_64.tbl' differs from latest version at 'arch/x86/entry/syscalls/syscall_64.tbl'
        diff -u tools/perf/arch/x86/entry/syscalls/syscall_64.tbl arch/x86/entry/syscalls/syscall_64.tbl
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Willem de Bruijn <willemb@google.com>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      6e519214
    • Linus Torvalds's avatar
      Merge tag 'sound-fix-5.11-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · 58cf05f5
      Linus Torvalds authored
      Pull sound fixes from Takashi Iwai:
       "A collection of small fixes that came up recently for 5.11.
      
        The majority of fixes are usual HD-audio and USB-audio quirks, with a
        few PCM core fixes for addressing the information leak and yet more
        UBSAN fixes in the core side"
      
      * tag 'sound-fix-5.11-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
        ALSA/hda: apply jack fixup for the Acer Veriton N4640G/N6640G/N2510G
        ALSA: hda/realtek: Apply jack fixup for Quanta NL3
        ALSA: usb-audio: Add implicit feeback support for the BOSS GT-1
        ALSA: usb-audio: Add alias entry for ASUS PRIME TRX40 PRO-S
        ALSA: core: Remove redundant comments
        ALSA: hda/realtek: Add quirk for MSI-GP73
        ALSA: pcm: oss: Fix a few more UBSAN fixes
        ALSA: pcm: Clear the full allocated memory at hw_params
        ALSA: memalloc: Align buffer allocations in page size
        ALSA: usb-audio: Disable sample read check if firmware doesn't give back
        ALSA: pcm: Remove snd_pcm_lib_preallocate_dma_free()
        ALSA: usb-audio: Add VID to support native DSD reproduction on FiiO devices
        ALSA: core: memalloc: add page alignment for iram
        ALSA: hda/realtek - Supported Dell fixed type headset
        ALSA: hda/realtek: Remove dummy lineout on Acer TravelMate P648/P658
      58cf05f5
    • Linus Torvalds's avatar
      Merge tag 'tag-chrome-platform-for-v5.11' of... · a0881596
      Linus Torvalds authored
      Merge tag 'tag-chrome-platform-for-v5.11' of git://git.kernel.org/pub/scm/linux/kernel/git/chrome-platform/linux
      
      Pull chrome platform updates from Benson Leung:
       "cros_ec_typec:
      
         - A series from Prashant for Type-C to implement TYPEC_STATUS,
           parsing USB PD Partner ID VDOs, and registering partner altmodes.
      
        cros_ec misc:
      
         - Don't treat RTC events as wakeup sources in cros_ec_proto"
      
      * tag 'tag-chrome-platform-for-v5.11' of git://git.kernel.org/pub/scm/linux/kernel/git/chrome-platform/linux:
        platform/chrome: cros_ec_typec: Tolerate unrecognized mux flags
        platform/chrome: cros_ec_typec: Register partner altmodes
        platform/chrome: cros_ec_typec: Parse partner PD ID VDOs
        platform/chrome: cros_ec_typec: Introduce TYPEC_STATUS
        platform/chrome: cros_ec: Import Type C host commands
        platform/chrome: cros_ec_typec: Clear partner identity on device removal
        platform/chrome: cros_ec_typec: Fix remove partner logic
        platform/chrome: cros_ec_typec: Relocate set_port_params_v*() functions
        platform/chrome: Don't treat RTC events as wakeup sources
      a0881596
    • Linus Torvalds's avatar
      Merge tag 'linux-watchdog-5.11-rc1' of git://www.linux-watchdog.org/linux-watchdog · 6755f456
      Linus Torvalds authored
      Pull watchdog updates from Wim Van Sebroeck:
      
       - Removal of the pnx83xx driver
      
       - Add a binding for A100's watchdog controller
      
       - Add Rockchip compatibles to snps,dw-wdt.yaml
      
       - hpwdt: Disable NMI in Crash Kernel
      
       - Fix potential dereferencing of null pointer in watchdog_core
      
       - Several other small fixes and improvements
      
      * tag 'linux-watchdog-5.11-rc1' of git://www.linux-watchdog.org/linux-watchdog: (23 commits)
        watchdog: convert comma to semicolon
        watchdog: iTCO_wdt: use dev_*() instead of pr_*() for logging
        dt-binding: watchdog: add Rockchip compatibles to snps,dw-wdt.yaml
        watchdog: coh901327: add COMMON_CLK dependency
        dt-bindings: watchdog: sun4i: Add A100 compatible
        watchdog: qcom: Avoid context switch in restart handler
        watchdog: iTCO_wdt: use module_platform_device() macro
        watchdog: Fix potential dereferencing of null pointer
        watchdog: wdat_wdt: Fix missing kerneldoc reported by W=1
        watchdog/hpwdt: Reflect changes
        watchdog/hpwdt: Disable NMI in Crash Kernel
        wdt: sp805: add watchdog_stop on reboot
        watchdog: sbc_fitpc2_wdt: add __user annotations
        watchdog: geodewdt: remove unneeded break
        watchdog: rti-wdt: fix reference leak in rti_wdt_probe
        watchdog: qcom_wdt: set WDOG_HW_RUNNING bit when appropriate
        watchdog: remove pnx83xx driver
        watchdog: stm32_iwdg: don't print an error on probe deferral
        watchdog: sprd: change to use usleep_range() instead of busy loop
        watchdog: sprd: check busy bit before new loading rather than after that
        ...
      6755f456
  2. Dec 23, 2020
    • Linus Torvalds's avatar
      Merge tag 'acpi-5.11-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 614cb589
      Linus Torvalds authored
      Pull more ACPI updates from Rafael Wysocki:
       "These make the ACPI enumeration of devices take _DEP information into
        account more aggressively, fix device IDs matching in the ACPI part of
        the PNP devices framework and update the ACPI code related to
        suspend-to-idle to take systems based on AMD hardware into account
        properly.
      
        Specifics:
      
         - Modify the ACPI device enumeration code to defer the enumeration of
           devices with an _HID whose lists of operation region dependencies
           returned by _DEP are not empty after eliminating the entries
           representing known-benign dependencies from them (Rafael Wysocki,
           Hans de Goede).
      
         - Make the ACPI PNP code mathing device IDs also take the length of
           the given ID string into account (Hui Wang).
      
         - Add AMD systems support to the ACPI code handling suspend-to-idle
           via the PNP0D80 (System Power Management Controller) device _DSM
           interface (Shyam Sundar).
      
         - Move the suspend-to-idle handling code related to the PNP0D80
           device _DSM interface, which is x86-specific, to a separate file in
           the x86/ subdirectory (Rafael Wysocki)"
      
      * tag 'acpi-5.11-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        ACPI: PM: s2idle: Move x86-specific code to the x86 directory
        ACPI: scan: Add Intel Baytrail Mailbox Device to acpi_ignore_dep_ids
        ACPI: scan: Avoid unnecessary second pass in acpi_bus_scan()
        ACPI: scan: Defer enumeration of devices with _DEP lists
        ACPI: scan: Evaluate _DEP before adding the device
        ACPI: PM: s2idle: Add AMD support to handle _DSM
        ACPI: PNP: compare the string length in the matching_id()
      614cb589
    • Linus Torvalds's avatar
      Merge tag 'pm-5.11-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 4960821a
      Linus Torvalds authored
      Pull more power management updates from Rafael Wysocki:
       "These update the CPPC cpufreq driver and intel_pstate (which involves
        updating the cpufreq core and the schedutil governor) and make
        janitorial changes in the ACPI code handling processor objects.
      
        Specifics:
      
         - Rework the passive-mode "fast switch" path in the intel_pstate
           driver to allow it receive the minimum (required) and target
           (desired) performance information from the schedutil governor so as
           to avoid running some workloads too fast (Rafael Wysocki).
      
         - Make the intel_pstate driver allow the policy max limit to be
           increased after the guaranteed performance value for the given CPU
           has increased (Rafael Wysocki).
      
         - Clean up the handling of CPU coordination types in the CPPC cpufreq
           driver and make it export frequency domains information to user
           space via sysfs (Ionela Voinescu).
      
         - Fix the ACPI code handling processor objects to use a correct
           coordination type when it fails to map frequency domains and drop a
           redundant CPU map initialization from it (Ionela Voinescu, Punit
           Agrawal)"
      
      * tag 'pm-5.11-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        cpufreq: intel_pstate: Use most recent guaranteed performance values
        cpufreq: intel_pstate: Implement the ->adjust_perf() callback
        cpufreq: Add special-purpose fast-switching callback for drivers
        cpufreq: schedutil: Add util to struct sg_cpu
        cppc_cpufreq: replace per-cpu data array with a list
        cppc_cpufreq: expose information on frequency domains
        cppc_cpufreq: clarify support for coordination types
        cppc_cpufreq: use policy->cpu as driver of frequency setting
        ACPI: processor: fix NONE coordination for domain mapping failure
      4960821a
    • Linus Torvalds's avatar
      Merge tag 'kconfig-v5.11' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild · 2762db75
      Linus Torvalds authored
      Pull Kconfig updates from Masahiro Yamada:
      
       - Support only Qt5 for qconf
      
       - Validate signal/slot connection at compile time of qconf
      
       - Sanitize header includes
      
      * tag 'kconfig-v5.11' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild:
        kconfig: doc: fix $(fileno) to $(filename)
        kconfig: fix return value of do_error_if()
        kconfig: clean up header inclusion
        kconfig: qconf: show Qt version in the About dialog
        kconfig: make lkc.h self-sufficient #include-wise
        kconfig: qconf: convert to Qt5 new signal/slot connection syntax
        kconfig: qconf: use a variable to pass packages to pkg-config
        kconfig: qconf: drop Qt4 support
      2762db75
    • Linus Torvalds's avatar
      Merge tag 'kbuild-v5.11' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild · 7b95f056
      Linus Torvalds authored
      Pull Kbuild updates from Masahiro Yamada:
      
       - Use /usr/bin/env for shebang lines in scripts
      
       - Remove useless -Wnested-externs warning flag
      
       - Update documents
      
       - Refactor log handling in modpost
      
       - Stop building modules without MODULE_LICENSE() tag
      
       - Make the insane combination of 'static' and EXPORT_SYMBOL an error
      
       - Improve genksyms to handle _Static_assert()
      
      * tag 'kbuild-v5.11' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild:
        Documentation/kbuild: Document platform dependency practises
        Documentation/kbuild: Document COMPILE_TEST dependencies
        genksyms: Ignore module scoped _Static_assert()
        modpost: turn static exports into error
        modpost: turn section mismatches to error from fatal()
        modpost: change license incompatibility to error() from fatal()
        modpost: turn missing MODULE_LICENSE() into error
        modpost: refactor error handling and clarify error/fatal difference
        modpost: rename merror() to error()
        kbuild: don't hardcode depmod path
        kbuild: doc: document subdir-y syntax
        kbuild: doc: clarify the difference between extra-y and always-y
        kbuild: doc: split if_changed explanation to a separate section
        kbuild: doc: merge 'Special Rules' and 'Custom kbuild commands' sections
        kbuild: doc: fix 'List directories to visit when descending' section
        kbuild: doc: replace arch/$(ARCH)/ with arch/$(SRCARCH)/
        kbuild: doc: update the description about kbuild Makefiles
        Makefile.extrawarn: remove -Wnested-externs warning
        tweewide: Fix most Shebang lines
      7b95f056
    • Linus Torvalds's avatar
      Merge branch 'akpm' (patches from Andrew) · 1375b980
      Linus Torvalds authored
      Merge KASAN updates from Andrew Morton.
      
      This adds a new hardware tag-based mode to KASAN.  The new mode is
      similar to the existing software tag-based KASAN, but relies on arm64
      Memory Tagging Extension (MTE) to perform memory and pointer tagging
      (instead of shadow memory and compiler instrumentation).
      
      By Andrey Konovalov and Vincenzo Frascino.
      
      * emailed patches from Andrew Morton <akpm@linux-foundation.org>: (60 commits)
        kasan: update documentation
        kasan, mm: allow cache merging with no metadata
        kasan: sanitize objects when metadata doesn't fit
        kasan: clarify comment in __kasan_kfree_large
        kasan: simplify assign_tag and set_tag calls
        kasan: don't round_up too much
        kasan, mm: rename kasan_poison_kfree
        kasan, mm: check kasan_enabled in annotations
        kasan: add and integrate kasan boot parameters
        kasan: inline (un)poison_range and check_invalid_free
        kasan: open-code kasan_unpoison_slab
        kasan: inline random_tag for HW_TAGS
        kasan: inline kasan_reset_tag for tag-based modes
        kasan: remove __kasan_unpoison_stack
        kasan: allow VMAP_STACK for HW_TAGS mode
        kasan, arm64: unpoison stack only with CONFIG_KASAN_STACK
        kasan: introduce set_alloc_info
        kasan: rename get_alloc/free_info
        kasan: simplify quarantine_put call site
        kselftest/arm64: check GCR_EL1 after context switch
        ...
      1375b980
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux · c45647f9
      Linus Torvalds authored
      Pull ARM updates from Russell King:
      
       - Rework phys/virt translation
      
       - Add KASan support
      
       - Move DT out of linear map region
      
       - Use more PC-relative addressing in assembly
      
       - Remove FP emulation handling while in kernel mode
      
       - Link with '-z norelro'
      
       - remove old check for GCC <= 4.2 in ARM unwinder code
      
       - disable big endian if using clang's linker
      
      * tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm: (46 commits)
        ARM: 9027/1: head.S: explicitly map DT even if it lives in the first physical section
        ARM: 9038/1: Link with '-z norelro'
        ARM: 9037/1: uncompress: Add OF_DT_MAGIC macro
        ARM: 9036/1: uncompress: Fix dbgadtb size parameter name
        ARM: 9035/1: uncompress: Add be32tocpu macro
        ARM: 9033/1: arm/smp: Drop the macro S(x,s)
        ARM: 9032/1: arm/mm: Convert PUD level pgtable helper macros into functions
        ARM: 9031/1: hyp-stub: remove unused .L__boot_cpu_mode_offset symbol
        ARM: 9044/1: vfp: use undef hook for VFP support detection
        ARM: 9034/1: __div64_32(): straighten up inline asm constraints
        ARM: 9030/1: entry: omit FP emulation for UND exceptions taken in kernel mode
        ARM: 9029/1: Make iwmmxt.S support Clang's integrated assembler
        ARM: 9028/1: disable KASAN in call stack capturing routines
        ARM: 9026/1: unwind: remove old check for GCC <= 4.2
        ARM: 9025/1: Kconfig: CPU_BIG_ENDIAN depends on !LD_IS_LLD
        ARM: 9024/1: Drop useless cast of "u64" to "long long"
        ARM: 9023/1: Spelling s/mmeory/memory/
        ARM: 9022/1: Change arch/arm/lib/mem*.S to use WEAK instead of .weak
        ARM: kvm: replace open coded VA->PA calculations with adr_l call
        ARM: head.S: use PC relative insn sequence to calculate PHYS_OFFSET
        ...
      c45647f9
    • Linus Torvalds's avatar
      Merge tag 'for-5.11/dm-changes' of... · d8355e74
      Linus Torvalds authored
      Merge tag 'for-5.11/dm-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm
      
      Pull device mapper updates from Mike Snitzer:
      
       - Add DM verity support for signature verification with 2nd keyring
      
       - Fix DM verity to skip verity work if IO completes with error while
         system is shutting down
      
       - Add new DM multipath "IO affinity" path selector that maps IO
         destined to a given path to a specific CPU based on user provided
         mapping
      
       - Rename DM multipath path selector source files to have "dm-ps" prefix
      
       - Add REQ_NOWAIT support to some other simple DM targets that don't
         block in more elaborate ways waiting for IO
      
       - Export DM crypt's kcryptd workqueue via sysfs (WQ_SYSFS)
      
       - Fix error return code in DM's target_message() if empty message is
         received
      
       - A handful of other small cleanups
      
      * tag 'for-5.11/dm-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm:
        dm cache: simplify the return expression of load_mapping()
        dm ebs: avoid double unlikely() notation when using IS_ERR()
        dm verity: skip verity work if I/O error when system is shutting down
        dm crypt: export sysfs of kcryptd workqueue
        dm ioctl: fix error return code in target_message
        dm crypt: Constify static crypt_iv_operations
        dm: add support for REQ_NOWAIT to various targets
        dm: rename multipath path selector source files to have "dm-ps" prefix
        dm mpath: add IO affinity path selector
        dm verity: Add support for signature verification with 2nd keyring
        dm: remove unnecessary current->bio_list check when submitting split bio
      d8355e74
    • Linus Torvalds's avatar
      Merge tag 'hwmon-for-v5.11-take2' of... · 4e31dcc0
      Linus Torvalds authored
      Merge tag 'hwmon-for-v5.11-take2' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging
      
      Pull another hwmon update from Guenter Roeck:
       "The only patch in this series is removal of voltage and current
        reporting for AMD Zen CPUs.
      
        Turns out that was not worth the trouble, because it's all
        undocumented and not maintainable"
      
      * tag 'hwmon-for-v5.11-take2' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
        hwmon: (k10temp) Remove support for displaying voltage and current on Zen CPUs
      4e31dcc0
    • Linus Torvalds's avatar
      Merge tag 'dma-mapping-5.11' of git://git.infradead.org/users/hch/dma-mapping · 347d81b6
      Linus Torvalds authored
      Pull dma-mapping updates from Christoph Hellwig:
      
       - support for a partial IOMMU bypass (Alexey Kardashevskiy)
      
       - add a DMA API benchmark (Barry Song)
      
       - misc fixes (Tiezhu Yang, tangjianqiang)
      
      * tag 'dma-mapping-5.11' of git://git.infradead.org/users/hch/dma-mapping:
        selftests/dma: add test application for DMA_MAP_BENCHMARK
        dma-mapping: add benchmark support for streaming DMA APIs
        dma-contiguous: fix a typo error in a comment
        dma-pool: no need to check return value of debugfs_create functions
        powerpc/dma: Fallback to dma_ops when persistent memory present
        dma-mapping: Allow mixing bypass and mapped DMA operation
      347d81b6
    • Linus Torvalds's avatar
      Merge tag 'configfs-5.11' of git://git.infradead.org/users/hch/configfs · 4f06f210
      Linus Torvalds authored
      Pull configfs update from Christoph Hellwig:
       "Fix a kerneldoc comment (Alex Shi)"
      
      * tag 'configfs-5.11' of git://git.infradead.org/users/hch/configfs:
        configfs: fix kernel-doc markup issue
      4f06f210
    • Linus Torvalds's avatar
      Merge tag 'exfat-for-5.11-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/linkinjeon/exfat · e9e541ec
      Linus Torvalds authored
      Pull exfat update from Namjae Jeon:
       "Avoid page allocation failure from upcase table allocation"
      
      * tag 'exfat-for-5.11-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/linkinjeon/exfat:
        exfat: Avoid allocating upcase table using kcalloc()
      e9e541ec
    • Andi Kleen's avatar
      x86/split-lock: Avoid returning with interrupts enabled · e14fd4ba
      Andi Kleen authored
      When a split lock is detected always make sure to disable interrupts
      before returning from the trap handler.
      
      The kernel exit code assumes that all exits run with interrupts
      disabled, otherwise the SWAPGS sequence can race against interrupts and
      cause recursing page faults and later panics.
      
      The problem will only happen on CPUs with split lock disable
      functionality, so Icelake Server, Tiger Lake, Snow Ridge, Jacobsville.
      
      Fixes: ca4c6a98 ("x86/traps: Make interrupt enable/disable symmetric in C code")
      Fixes: bce9b042
      
       ("x86/traps: Disable interrupts in exc_aligment_check()") # v5.8+
      Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Fenghua Yu <fenghua.yu@intel.com>
      Cc: Tony Luck <tony.luck@intel.com>
      Reviewed-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      e14fd4ba
    • Andrey Konovalov's avatar
      kasan: update documentation · 625d8673
      Andrey Konovalov authored
      
      
      This change updates KASAN documentation to reflect the addition of boot
      parameters and also reworks and clarifies some of the existing sections,
      in particular: defines what a memory granule is, mentions quarantine,
      makes Kunit section more readable.
      
      Link: https://lkml.kernel.org/r/748daf013e17d925b0fe00c1c3b5dce726dd2430.1606162397.git.andreyknvl@google.com
      Link: https://linux-review.googlesource.com/id/Ib1f83e91be273264b25f42b04448ac96b858849f
      Signed-off-by: default avatarAndrey Konovalov <andreyknvl@google.com>
      Reviewed-by: default avatarDmitry Vyukov <dvyukov@google.com>
      Reviewed-by: default avatarMarco Elver <elver@google.com>
      Tested-by: default avatarVincenzo Frascino <vincenzo.frascino@arm.com>
      Cc: Alexander Potapenko <glider@google.com>
      Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
      Cc: Branislav Rankov <Branislav.Rankov@arm.com>
      Cc: Catalin Marinas <catalin.marinas@arm.com>
      Cc: Evgenii Stepanov <eugenis@google.com>
      Cc: Kevin Brodsky <kevin.brodsky@arm.com>
      Cc: Vasily Gorbik <gor@linux.ibm.com>
      Cc: Will Deacon <will.deacon@arm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      625d8673
    • Andrey Konovalov's avatar
      kasan, mm: allow cache merging with no metadata · e86f8b09
      Andrey Konovalov authored
      
      
      The reason cache merging is disabled with KASAN is because KASAN puts its
      metadata right after the allocated object. When the merged caches have
      slightly different sizes, the metadata ends up in different places, which
      KASAN doesn't support.
      
      It might be possible to adjust the metadata allocation algorithm and make
      it friendly to the cache merging code. Instead this change takes a simpler
      approach and allows merging caches when no metadata is present. Which is
      the case for hardware tag-based KASAN with kasan.mode=prod.
      
      Link: https://lkml.kernel.org/r/37497e940bfd4b32c0a93a702a9ae4cf061d5392.1606162397.git.andreyknvl@google.com
      Link: https://linux-review.googlesource.com/id/Ia114847dfb2244f297d2cb82d592bf6a07455dba
      Co-developed-by: default avatarVincenzo Frascino <Vincenzo.Frascino@arm.com>
      Signed-off-by: default avatarVincenzo Frascino <Vincenzo.Frascino@arm.com>
      Signed-off-by: default avatarAndrey Konovalov <andreyknvl@google.com>
      Reviewed-by: default avatarDmitry Vyukov <dvyukov@google.com>
      Reviewed-by: default avatarMarco Elver <elver@google.com>
      Tested-by: default avatarVincenzo Frascino <vincenzo.frascino@arm.com>
      Cc: Alexander Potapenko <glider@google.com>
      Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
      Cc: Branislav Rankov <Branislav.Rankov@arm.com>
      Cc: Catalin Marinas <catalin.marinas@arm.com>
      Cc: Evgenii Stepanov <eugenis@google.com>
      Cc: Kevin Brodsky <kevin.brodsky@arm.com>
      Cc: Vasily Gorbik <gor@linux.ibm.com>
      Cc: Will Deacon <will.deacon@arm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      e86f8b09
    • Andrey Konovalov's avatar
      kasan: sanitize objects when metadata doesn't fit · 97593cad
      Andrey Konovalov authored
      
      
      KASAN marks caches that are sanitized with the SLAB_KASAN cache flag.
      Currently if the metadata that is appended after the object (stores e.g.
      stack trace ids) doesn't fit into KMALLOC_MAX_SIZE (can only happen with
      SLAB, see the comment in the patch), KASAN turns off sanitization
      completely.
      
      With this change sanitization of the object data is always enabled.
      However the metadata is only stored when it fits.  Instead of checking for
      SLAB_KASAN flag accross the code to find out whether the metadata is
      there, use cache->kasan_info.alloc/free_meta_offset.  As 0 can be a valid
      value for free_meta_offset, introduce KASAN_NO_FREE_META as an indicator
      that the free metadata is missing.
      
      Without this change all sanitized KASAN objects would be put into
      quarantine with generic KASAN.  With this change, only the objects that
      have metadata (i.e.  when it fits) are put into quarantine, the rest is
      freed right away.
      
      Along the way rework __kasan_cache_create() and add claryfying comments.
      
      Link: https://lkml.kernel.org/r/aee34b87a5e4afe586c2ac6a0b32db8dc4dcc2dc.1606162397.git.andreyknvl@google.com
      Link: https://linux-review.googlesource.com/id/Icd947e2bea054cb5cfbdc6cf6652227d97032dcb
      Co-developed-by: default avatarVincenzo Frascino <Vincenzo.Frascino@arm.com>
      Signed-off-by: default avatarVincenzo Frascino <Vincenzo.Frascino@arm.com>
      Signed-off-by: default avatarAndrey Konovalov <andreyknvl@google.com>
      Reviewed-by: default avatarMarco Elver <elver@google.com>
      Tested-by: default avatarVincenzo Frascino <vincenzo.frascino@arm.com>
      Cc: Alexander Potapenko <glider@google.com>
      Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
      Cc: Branislav Rankov <Branislav.Rankov@arm.com>
      Cc: Catalin Marinas <catalin.marinas@arm.com>
      Cc: Dmitry Vyukov <dvyukov@google.com>
      Cc: Evgenii Stepanov <eugenis@google.com>
      Cc: Kevin Brodsky <kevin.brodsky@arm.com>
      Cc: Vasily Gorbik <gor@linux.ibm.com>
      Cc: Will Deacon <will.deacon@arm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      97593cad
    • Andrey Konovalov's avatar
      kasan: clarify comment in __kasan_kfree_large · 3933c175
      Andrey Konovalov authored
      
      
      Currently it says that the memory gets poisoned by page_alloc code.
      Clarify this by mentioning the specific callback that poisons the memory.
      
      Link: https://lkml.kernel.org/r/1c8380fe0332a3bcc720fe29f1e0bef2e2974416.1606162397.git.andreyknvl@google.com
      Link: https://linux-review.googlesource.com/id/I1334dffb69b87d7986fab88a1a039cc3ea764725
      Signed-off-by: default avatarAndrey Konovalov <andreyknvl@google.com>
      Reviewed-by: default avatarDmitry Vyukov <dvyukov@google.com>
      Reviewed-by: default avatarMarco Elver <elver@google.com>
      Tested-by: default avatarVincenzo Frascino <vincenzo.frascino@arm.com>
      Cc: Alexander Potapenko <glider@google.com>
      Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
      Cc: Branislav Rankov <Branislav.Rankov@arm.com>
      Cc: Catalin Marinas <catalin.marinas@arm.com>
      Cc: Evgenii Stepanov <eugenis@google.com>
      Cc: Kevin Brodsky <kevin.brodsky@arm.com>
      Cc: Vasily Gorbik <gor@linux.ibm.com>
      Cc: Will Deacon <will.deacon@arm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      3933c175
    • Andrey Konovalov's avatar
      kasan: simplify assign_tag and set_tag calls · 1ef3133b
      Andrey Konovalov authored
      
      
      set_tag() already ignores the tag for the generic mode, so just call it
      as is. Add a check for the generic mode to assign_tag(), and simplify its
      call in ____kasan_kmalloc().
      
      Link: https://lkml.kernel.org/r/121eeab245f98555862b289d2ba9269c868fbbcf.1606162397.git.andreyknvl@google.com
      Link: https://linux-review.googlesource.com/id/I18905ca78fb4a3d60e1a34a4ca00247272480438
      Signed-off-by: default avatarAndrey Konovalov <andreyknvl@google.com>
      Reviewed-by: default avatarDmitry Vyukov <dvyukov@google.com>
      Reviewed-by: default avatarMarco Elver <elver@google.com>
      Tested-by: default avatarVincenzo Frascino <vincenzo.frascino@arm.com>
      Cc: Alexander Potapenko <glider@google.com>
      Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
      Cc: Branislav Rankov <Branislav.Rankov@arm.com>
      Cc: Catalin Marinas <catalin.marinas@arm.com>
      Cc: Evgenii Stepanov <eugenis@google.com>
      Cc: Kevin Brodsky <kevin.brodsky@arm.com>
      Cc: Vasily Gorbik <gor@linux.ibm.com>
      Cc: Will Deacon <will.deacon@arm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      1ef3133b
    • Andrey Konovalov's avatar
      kasan: don't round_up too much · d99f6a10
      Andrey Konovalov authored
      
      
      For hardware tag-based mode kasan_poison_memory() already rounds up the
      size. Do the same for software modes and remove round_up() from the common
      code.
      
      Link: https://lkml.kernel.org/r/47b232474f1f89dc072aeda0fa58daa6efade377.1606162397.git.andreyknvl@google.com
      Link: https://linux-review.googlesource.com/id/Ib397128fac6eba874008662b4964d65352db4aa4
      Signed-off-by: default avatarAndrey Konovalov <andreyknvl@google.com>
      Reviewed-by: default avatarDmitry Vyukov <dvyukov@google.com>
      Reviewed-by: default avatarMarco Elver <elver@google.com>
      Tested-by: default avatarVincenzo Frascino <vincenzo.frascino@arm.com>
      Cc: Alexander Potapenko <glider@google.com>
      Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
      Cc: Branislav Rankov <Branislav.Rankov@arm.com>
      Cc: Catalin Marinas <catalin.marinas@arm.com>
      Cc: Evgenii Stepanov <eugenis@google.com>
      Cc: Kevin Brodsky <kevin.brodsky@arm.com>
      Cc: Vasily Gorbik <gor@linux.ibm.com>
      Cc: Will Deacon <will.deacon@arm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      d99f6a10
    • Andrey Konovalov's avatar
      kasan, mm: rename kasan_poison_kfree · eeb3160c
      Andrey Konovalov authored
      
      
      Rename kasan_poison_kfree() to kasan_slab_free_mempool() as it better
      reflects what this annotation does. Also add a comment that explains the
      PageSlab() check.
      
      No functional changes.
      
      Link: https://lkml.kernel.org/r/141675fb493555e984c5dca555e9d9f768c7bbaa.1606162397.git.andreyknvl@google.com
      Link: https://linux-review.googlesource.com/id/I5026f87364e556b506ef1baee725144bb04b8810
      Signed-off-by: default avatarAndrey Konovalov <andreyknvl@google.com>
      Reviewed-by: default avatarMarco Elver <elver@google.com>
      Tested-by: default avatarVincenzo Frascino <vincenzo.frascino@arm.com>
      Cc: Alexander Potapenko <glider@google.com>
      Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
      Cc: Branislav Rankov <Branislav.Rankov@arm.com>
      Cc: Catalin Marinas <catalin.marinas@arm.com>
      Cc: Dmitry Vyukov <dvyukov@google.com>
      Cc: Evgenii Stepanov <eugenis@google.com>
      Cc: Kevin Brodsky <kevin.brodsky@arm.com>
      Cc: Vasily Gorbik <gor@linux.ibm.com>
      Cc: Will Deacon <will.deacon@arm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      eeb3160c
    • Andrey Konovalov's avatar
      kasan, mm: check kasan_enabled in annotations · 34303244
      Andrey Konovalov authored
      
      
      Declare the kasan_enabled static key in include/linux/kasan.h and in
      include/linux/mm.h and check it in all kasan annotations. This allows to
      avoid any slowdown caused by function calls when kasan_enabled is
      disabled.
      
      Link: https://lkml.kernel.org/r/9f90e3c0aa840dbb4833367c2335193299f69023.1606162397.git.andreyknvl@google.com
      Link: https://linux-review.googlesource.com/id/I2589451d3c96c97abbcbf714baabe6161c6f153e
      Co-developed-by: default avatarVincenzo Frascino <Vincenzo.Frascino@arm.com>
      Signed-off-by: default avatarVincenzo Frascino <Vincenzo.Frascino@arm.com>
      Signed-off-by: default avatarAndrey Konovalov <andreyknvl@google.com>
      Reviewed-by: default avatarMarco Elver <elver@google.com>
      Reviewed-by: default avatarDmitry Vyukov <dvyukov@google.com>
      Tested-by: default avatarVincenzo Frascino <vincenzo.frascino@arm.com>
      Cc: Alexander Potapenko <glider@google.com>
      Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
      Cc: Branislav Rankov <Branislav.Rankov@arm.com>
      Cc: Catalin Marinas <catalin.marinas@arm.com>
      Cc: Evgenii Stepanov <eugenis@google.com>
      Cc: Kevin Brodsky <kevin.brodsky@arm.com>
      Cc: Vasily Gorbik <gor@linux.ibm.com>
      Cc: Will Deacon <will.deacon@arm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      34303244