1. 11 Aug, 2022 8 commits
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm · e18a9042
      Linus Torvalds authored
      Pull more kvm updates from Paolo Bonzini:
      
       - Xen timer fixes
      
       - Documentation formatting fixes
      
       - Make rseq selftest compatible with glibc-2.35
      
       - Fix handling of illegal LEA reg, reg
      
       - Cleanup creation of debugfs entries
      
       - Fix steal time cache handling bug
      
       - Fixes for MMIO caching
      
       - Optimize computation of number of LBRs
      
       - Fix uninitialized field in guest_maxphyaddr < host_maxphyaddr path
      
      * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (26 commits)
        KVM: x86/MMU: properly format KVM_CAP_VM_DISABLE_NX_HUGE_PAGES capability table
        Documentation: KVM: extend KVM_CAP_VM_DISABLE_NX_HUGE_PAGES heading underline
        KVM: VMX: Adjust number of LBR records for PERF_CAPABILITIES at refresh
        KVM: VMX: Use proper type-safe functions for vCPU => LBRs helpers
        KVM: x86: Refresh PMU after writes to MSR_IA32_PERF_CAPABILITIES
        KVM: selftests: Test all possible "invalid" PERF_CAPABILITIES.LBR_FMT vals
        KVM: selftests: Use getcpu() instead of sched_getcpu() in rseq_test
        KVM: selftests: Make rseq compatible with glibc-2.35
        KVM: Actually create debugfs in kvm_create_vm()
        KVM: Pass the name of the VM fd to kvm_create_vm_debugfs()
        KVM: Get an fd before creating the VM
        KVM: Shove vcpu stats_id init into kvm_vcpu_init()
        KVM: Shove vm stats_id init into kvm_create_vm()
        KVM: x86/mmu: Add sanity check that MMIO SPTE mask doesn't overlap gen
        KVM: x86/mmu: rename trace function name for asynchronous page fault
        KVM: x86/xen: Stop Xen timer before changing IRQ
        KVM: x86/xen: Initialize Xen timer only once
        KVM: SVM: Disable SEV-ES support if MMIO caching is disable
        KVM: x86/mmu: Fully re-evaluate MMIO caching when SPTE masks change
        KVM: x86: Tag kvm_mmu_x86_module_init() with __init
        ...
      e18a9042
    • Linus Torvalds's avatar
      Merge tag 'input-for-v5.20-rc0' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input · 2ae08b36
      Linus Torvalds authored
      Pull input updates from Dmitry Torokhov:
      
       - changes to input core to properly queue synthetic events (such as
         autorepeat) and to release multitouch contacts when an input device
         is inhibited or suspended
      
       - reworked quirk handling in i8042 driver that consolidates multiple
         DMI tables into one and adds several quirks for TUXEDO line of
         laptops
      
       - update to mt6779 keypad to better reflect organization of the
         hardware
      
       - changes to mtk-pmic-keys driver preparing it to handle more variants
      
       - facelift of adp5588-keys driver
      
       - improvements to iqs7222 driver
      
       - adjustments to various DT binding documents for input devices
      
       - other assorted driver fixes.
      
      * tag 'input-for-v5.20-rc0' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: (54 commits)
        Input: adc-joystick - fix ordering in adc_joystick_probe()
        dt-bindings: input: ariel-pwrbutton: use spi-peripheral-props.yaml
        Input: deactivate MT slots when inhibiting or suspending devices
        Input: properly queue synthetic events
        dt-bindings: input: iqs7222: Use central 'linux,code' definition
        Input: i8042 - add dritek quirk for Acer Aspire One AO532
        dt-bindings: input: gpio-keys: accept also interrupt-extended
        dt-bindings: input: gpio-keys: reference input.yaml and document properties
        dt-bindings: input: gpio-keys: enforce node names to match all properties
        dt-bindings: input: Convert adc-keys to DT schema
        dt-bindings: input: Centralize 'linux,input-type' definition
        dt-bindings: input: Use common 'linux,keycodes' definition
        dt-bindings: input: Centralize 'linux,code' definition
        dt-bindings: input: Increase maximum keycode value to 0x2ff
        Input: mt6779-keypad - implement row/column selection
        Input: mt6779-keypad - match hardware matrix organization
        Input: i8042 - add additional TUXEDO devices to i8042 quirk tables
        Input: goodix - switch use of acpi_gpio_get_*_resource() APIs
        Input: i8042 - add TUXEDO devices to i8042 quirk tables
        Input: i8042 - add debug output for quirks
        ...
      2ae08b36
    • Linus Torvalds's avatar
      Revert "Makefile.extrawarn: re-enable -Wformat for clang" · 21f9c8a1
      Linus Torvalds authored
      This reverts commit 258fafcd.
      
      The clang -Wformat warning is terminally broken, and the clang people
      can't seem to get their act together.
      
      This test program causes a warning with clang:
      
      	#include <stdio.h>
      
      	int main(int argc, char **argv)
      	{
      		printf("%hhu\n", 'a');
      	}
      
      resulting in
      
        t.c:5:19: warning: format specifies type 'unsigned char' but the argument has type 'int' [-Wformat]
                printf("%hhu\n", 'a');
                        ~~~~     ^~~
                        %d
      
      and apparently clang people consider that a feature, because they don't
      want to face the reality of how either C character constants, C
      arithmetic, and C varargs functions work.
      
      The rest of the world just shakes their head at that kind of
      incompetence, and turns off -Wformat for clang again.
      
      And no, the "you should use a pointless cast to shut this up" is not a
      valid answer.  That warning should not exist in the first place, or at
      least be optinal with some "-Wformat-me-harder" kind of option.
      
      [ Admittedly, there's also very little reason to *ever* use '%hh[ud]' in
        C, but what little reason there is is entirely about 'I want to see
        only the low 8 bits of the argument'. So I would suggest nobody ever
        use that format in the first place, but if they do, the clang
        behavious is simply always wrong. Because '%hhu' takes an 'int'. It's
        that simple. ]
      Reported-by: default avatarSudip Mukherjee (Codethink) <sudipm.mukherjee@gmail.com>
      Cc: Nick Desaulniers <ndesaulniers@google.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      21f9c8a1
    • Bagas Sanjaya's avatar
      KVM: x86/MMU: properly format KVM_CAP_VM_DISABLE_NX_HUGE_PAGES capability table · 19a7cc81
      Bagas Sanjaya authored
      There is unexpected warning on KVM_CAP_VM_DISABLE_NX_HUGE_PAGES capability
      table, which cause the table to be rendered as paragraph text instead.
      
      The warning is due to missing colon at capability name and returns keyword,
      as well as improper alignment on multi-line returns field.
      
      Fix the warning by adding missing colons and aligning the field.
      
      Link: https://lore.kernel.org/lkml/20220627181937.3be67263@canb.auug.org.au/
      Fixes: 084cc29f ("KVM: x86/MMU: Allow NX huge pages to be disabled on a per-vm basis")
      Reported-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Cc: Jonathan Corbet <corbet@lwn.net>
      Cc: David Matlack <dmatlack@google.com>
      Cc: Ben Gardon <bgardon@google.com>
      Cc: Peter Xu <peterx@redhat.com>
      Cc: kvm@vger.kernel.org
      Cc: linux-next@vger.kernel.org
      Cc: linux-kernel@vger.kernel.org
      Signed-off-by: default avatarBagas Sanjaya <bagasdotme@gmail.com>
      Message-Id: <20220627095151.19339-3-bagasdotme@gmail.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      19a7cc81
    • Bagas Sanjaya's avatar
      Documentation: KVM: extend KVM_CAP_VM_DISABLE_NX_HUGE_PAGES heading underline · b4aed4d8
      Bagas Sanjaya authored
      Extend heading underline for KVM_CAP_VM_DISABLE_NX_HUGE_PAGE to match
      the heading text length.
      
      Link: https://lore.kernel.org/lkml/20220627181937.3be67263@canb.auug.org.au/
      Fixes: 084cc29f ("KVM: x86/MMU: Allow NX huge pages to be disabled on a per-vm basis")
      Reported-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Cc: Jonathan Corbet <corbet@lwn.net>
      Cc: David Matlack <dmatlack@google.com>
      Cc: Ben Gardon <bgardon@google.com>
      Cc: Peter Xu <peterx@redhat.com>
      Cc: kvm@vger.kernel.org
      Cc: linux-next@vger.kernel.org
      Cc: linux-kernel@vger.kernel.org
      Signed-off-by: default avatarBagas Sanjaya <bagasdotme@gmail.com>
      Message-Id: <20220627095151.19339-2-bagasdotme@gmail.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      b4aed4d8
    • Nick Desaulniers's avatar
      x86: link vdso and boot with -z noexecstack --no-warn-rwx-segments · ffcf9c57
      Nick Desaulniers authored
      Users of GNU ld (BFD) from binutils 2.39+ will observe multiple
      instances of a new warning when linking kernels in the form:
      
        ld: warning: arch/x86/boot/pmjump.o: missing .note.GNU-stack section implies executable stack
        ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
        ld: warning: arch/x86/boot/compressed/vmlinux has a LOAD segment with RWX permissions
      
      Generally, we would like to avoid the stack being executable.  Because
      there could be a need for the stack to be executable, assembler sources
      have to opt-in to this security feature via explicit creation of the
      .note.GNU-stack feature (which compilers create by default) or command
      line flag --noexecstack.  Or we can simply tell the linker the
      production of such sections is irrelevant and to link the stack as
      --noexecstack.
      
      LLVM's LLD linker defaults to -z noexecstack, so this flag isn't
      strictly necessary when linking with LLD, only BFD, but it doesn't hurt
      to be explicit here for all linkers IMO.  --no-warn-rwx-segments is
      currently BFD specific and only available in the current latest release,
      so it's wrapped in an ld-option check.
      
      While the kernel makes extensive usage of ELF sections, it doesn't use
      permissions from ELF segments.
      
      Link: https://lore.kernel.org/linux-block/3af4127a-f453-4cf7-f133-a181cce06f73@kernel.dk/
      Link: https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=ba951afb99912da01a6e8434126b8fac7aa75107
      Link: https://github.com/llvm/llvm-project/issues/57009Reported-and-tested-by: default avatarJens Axboe <axboe@kernel.dk>
      Suggested-by: default avatarFangrui Song <maskray@google.com>
      Signed-off-by: default avatarNick Desaulniers <ndesaulniers@google.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      ffcf9c57
    • Nick Desaulniers's avatar
      Makefile: link with -z noexecstack --no-warn-rwx-segments · 0d362be5
      Nick Desaulniers authored
      Users of GNU ld (BFD) from binutils 2.39+ will observe multiple
      instances of a new warning when linking kernels in the form:
      
        ld: warning: vmlinux: missing .note.GNU-stack section implies executable stack
        ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
        ld: warning: vmlinux has a LOAD segment with RWX permissions
      
      Generally, we would like to avoid the stack being executable.  Because
      there could be a need for the stack to be executable, assembler sources
      have to opt-in to this security feature via explicit creation of the
      .note.GNU-stack feature (which compilers create by default) or command
      line flag --noexecstack.  Or we can simply tell the linker the
      production of such sections is irrelevant and to link the stack as
      --noexecstack.
      
      LLVM's LLD linker defaults to -z noexecstack, so this flag isn't
      strictly necessary when linking with LLD, only BFD, but it doesn't hurt
      to be explicit here for all linkers IMO.  --no-warn-rwx-segments is
      currently BFD specific and only available in the current latest release,
      so it's wrapped in an ld-option check.
      
      While the kernel makes extensive usage of ELF sections, it doesn't use
      permissions from ELF segments.
      
      Link: https://lore.kernel.org/linux-block/3af4127a-f453-4cf7-f133-a181cce06f73@kernel.dk/
      Link: https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=ba951afb99912da01a6e8434126b8fac7aa75107
      Link: https://github.com/llvm/llvm-project/issues/57009Reported-and-tested-by: default avatarJens Axboe <axboe@kernel.dk>
      Suggested-by: default avatarFangrui Song <maskray@google.com>
      Signed-off-by: default avatarNick Desaulniers <ndesaulniers@google.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      0d362be5
    • Linus Torvalds's avatar
      crypto: blake2b: effectively disable frame size warning · 1d3551ce
      Linus Torvalds authored
      It turns out that gcc-12.1 has some nasty problems with register
      allocation on a 32-bit x86 build for the 64-bit values used in the
      generic blake2b implementation, where the pattern of 64-bit rotates and
      xor operations ends up making gcc generate horrible code.
      
      As a result it ends up with a ridiculously large stack frame for all the
      spills it generates, resulting in the following build problem:
      
          crypto/blake2b_generic.c: In function ‘blake2b_compress_one_generic’:
          crypto/blake2b_generic.c:109:1: error: the frame size of 2640 bytes is larger than 2048 bytes [-Werror=frame-larger-than=]
      
      on the same test-case, clang ends up generating a stack frame that is
      just 296 bytes (and older gcc versions generate a slightly bigger one at
      428 bytes - still nowhere near that almost 3kB monster stack frame of
      gcc-12.1).
      
      The issue is fixed both in mainline and the GCC 12 release branch [1],
      but current release compilers end up failing the i386 allmodconfig build
      due to this issue.
      
      Disable the warning for now by simply raising the frame size for this
      one file, just to keep this issue from having people turn off WERROR.
      
      Link: https://lore.kernel.org/all/CAHk-=wjxqgeG2op+=W9sqgsWqCYnavC+SRfVyopu9-31S6xw+Q@mail.gmail.com/
      Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105930 [1]
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      1d3551ce
  2. 10 Aug, 2022 32 commits
    • Linus Torvalds's avatar
      Merge tag 'nfs-for-5.20-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs · aeb6e6ac
      Linus Torvalds authored
      Pull NFS client updates from Trond Myklebust:
       "Highlights include:
      
        Stable fixes:
         - pNFS/flexfiles: Fix infinite looping when the RDMA connection
           errors out
      
        Bugfixes:
         - NFS: fix port value parsing
         - SUNRPC: Reinitialise the backchannel request buffers before reuse
         - SUNRPC: fix expiry of auth creds
         - NFSv4: Fix races in the legacy idmapper upcall
         - NFS: O_DIRECT fixes from Jeff Layton
         - NFSv4.1: Fix OP_SEQUENCE error handling
         - SUNRPC: Fix an RPC/RDMA performance regression
         - NFS: Fix case insensitive renames
         - NFSv4/pnfs: Fix a use-after-free bug in open
         - NFSv4.1: RECLAIM_COMPLETE must handle EACCES
      
        Features:
         - NFSv4.1: session trunking enhancements
         - NFSv4.2: READ_PLUS performance optimisations
         - NFS: relax the rules for rsize/wsize mount options
         - NFS: don't unhash dentry during unlink/rename
         - SUNRPC: Fail faster on bad verifier
         - NFS/SUNRPC: Various tracing improvements"
      
      * tag 'nfs-for-5.20-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs: (46 commits)
        NFS: Improve readpage/writepage tracing
        NFS: Improve O_DIRECT tracing
        NFS: Improve write error tracing
        NFS: don't unhash dentry during unlink/rename
        NFSv4/pnfs: Fix a use-after-free bug in open
        NFS: nfs_async_write_reschedule_io must not recurse into the writeback code
        SUNRPC: Don't reuse bvec on retransmission of the request
        SUNRPC: Reinitialise the backchannel request buffers before reuse
        NFSv4.1: RECLAIM_COMPLETE must handle EACCES
        NFSv4.1 probe offline transports for trunking on session creation
        SUNRPC create a function that probes only offline transports
        SUNRPC export xprt_iter_rewind function
        SUNRPC restructure rpc_clnt_setup_test_and_add_xprt
        NFSv4.1 remove xprt from xprt_switch if session trunking test fails
        SUNRPC create an rpc function that allows xprt removal from rpc_clnt
        SUNRPC enable back offline transports in trunking discovery
        SUNRPC create an iterator to list only OFFLINE xprts
        NFSv4.1 offline trunkable transports on DESTROY_SESSION
        SUNRPC add function to offline remove trunkable transports
        SUNRPC expose functions for offline remote xprt functionality
        ...
      aeb6e6ac
    • Sean Christopherson's avatar
      KVM: VMX: Adjust number of LBR records for PERF_CAPABILITIES at refresh · 6348aafa
      Sean Christopherson authored
      Now that the PMU is refreshed when MSR_IA32_PERF_CAPABILITIES is written
      by host userspace, zero out the number of LBR records for a vCPU during
      PMU refresh if PMU_CAP_LBR_FMT is not set in PERF_CAPABILITIES instead of
      handling the check at run-time.
      
      guest_cpuid_has() is expensive due to the linear search of guest CPUID
      entries, intel_pmu_lbr_is_enabled() is checked on every VM-Enter, _and_
      simply enumerating the same "Model" as the host causes KVM to set the
      number of LBR records to a non-zero value.
      Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
      Message-Id: <20220727233424.2968356-4-seanjc@google.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      6348aafa
    • Sean Christopherson's avatar
      KVM: VMX: Use proper type-safe functions for vCPU => LBRs helpers · 7de8e5b6
      Sean Christopherson authored
      Turn vcpu_to_lbr_desc() and vcpu_to_lbr_records() into functions in order
      to provide type safety, to document exactly what they return, and to
      allow consuming the helpers in vmx.h.  Move the definitions as necessary
      (the macros "reference" to_vmx() before its definition).
      
      No functional change intended.
      Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
      Message-Id: <20220727233424.2968356-3-seanjc@google.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      7de8e5b6
    • Sean Christopherson's avatar
      KVM: x86: Refresh PMU after writes to MSR_IA32_PERF_CAPABILITIES · 17a024a8
      Sean Christopherson authored
      Refresh the PMU if userspace modifies MSR_IA32_PERF_CAPABILITIES.  KVM
      consumes the vCPU's PERF_CAPABILITIES when enumerating PEBS support, but
      relies on CPUID updates to refresh the PMU.  I.e. KVM will do the wrong
      thing if userspace stuffs PERF_CAPABILITIES _after_ setting guest CPUID.
      
      Opportunistically fix a curly-brace indentation.
      
      Fixes: c59a1f10 ("KVM: x86/pmu: Add IA32_PEBS_ENABLE MSR emulation for extended PEBS")
      Cc: Like Xu <like.xu.linux@gmail.com>
      Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
      Message-Id: <20220727233424.2968356-2-seanjc@google.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      17a024a8
    • Sean Christopherson's avatar
      KVM: selftests: Test all possible "invalid" PERF_CAPABILITIES.LBR_FMT vals · 9d27d461
      Sean Christopherson authored
      Test all possible input values to verify that KVM rejects all values
      except the exact host value.  Due to the LBR format affecting the core
      functionality of LBRs, KVM can't emulate "other" formats, so even though
      there are a variety of legal values, KVM should reject anything but an
      exact host match.
      Suggested-by: default avatarLike Xu <like.xu.linux@gmail.com>
      Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      9d27d461
    • Gavin Shan's avatar
      KVM: selftests: Use getcpu() instead of sched_getcpu() in rseq_test · 0fcc1029
      Gavin Shan authored
      sched_getcpu() is glibc dependent and it can simply return the CPU
      ID from the registered rseq information, as Florian Weimer pointed.
      In this case, it's pointless to compare the return value from
      sched_getcpu() and that fetched from the registered rseq information.
      
      Fix the issue by replacing sched_getcpu() with getcpu(), as Florian
      suggested. The comments are modified accordingly by replacing
      "sched_getcpu()" with "getcpu()".
      Reported-by: default avatarYihuang Yu <yihyu@redhat.com>
      Suggested-by: default avatarFlorian Weimer <fweimer@redhat.com>
      Suggested-by: default avatarMathieu Desnoyers <mathieu.desnoyers@efficios.com>
      Suggested-by: default avatarSean Christopherson <seanjc@google.com>
      Signed-off-by: default avatarGavin Shan <gshan@redhat.com>
      Message-Id: <20220810104114.6838-3-gshan@redhat.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      0fcc1029
    • Gavin Shan's avatar
      KVM: selftests: Make rseq compatible with glibc-2.35 · 66d42ac7
      Gavin Shan authored
      The rseq information is registered by TLS, starting from glibc-2.35.
      In this case, the test always fails due to syscall(__NR_rseq). For
      example, on RHEL9.1 where upstream glibc-2.35 features are enabled
      on downstream glibc-2.34, the test fails like below.
      
        # ./rseq_test
        ==== Test Assertion Failure ====
          rseq_test.c:60: !r
          pid=112043 tid=112043 errno=22 - Invalid argument
             1        0x0000000000401973: main at rseq_test.c:226
             2        0x0000ffff84b6c79b: ?? ??:0
             3        0x0000ffff84b6c86b: ?? ??:0
             4        0x0000000000401b6f: _start at ??:?
          rseq failed, errno = 22 (Invalid argument)
        # rpm -aq | grep glibc-2
        glibc-2.34-39.el9.aarch64
      
      Fix the issue by using "../rseq/rseq.c" to fetch the rseq information,
      registred by TLS if it exists. Otherwise, we're going to register our
      own rseq information as before.
      Reported-by: default avatarYihuang Yu <yihyu@redhat.com>
      Suggested-by: default avatarFlorian Weimer <fweimer@redhat.com>
      Suggested-by: default avatarMathieu Desnoyers <mathieu.desnoyers@efficios.com>
      Suggested-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: default avatarGavin Shan <gshan@redhat.com>
      Message-Id: <20220810104114.6838-2-gshan@redhat.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      66d42ac7
    • Oliver Upton's avatar
      KVM: Actually create debugfs in kvm_create_vm() · b74ed7a6
      Oliver Upton authored
      Doing debugfs creation after vm creation leaves things in a
      quasi-initialized state for a while. This is further complicated by the
      fact that we tear down debugfs from kvm_destroy_vm(). Align debugfs and
      stats init/destroy with the vm init/destroy pattern to avoid any
      headaches.
      
      Note the fix for a benign mistake in error handling for calls to
      kvm_arch_create_vm_debugfs() rolled in. Since all implementations of
      the function return 0 unconditionally it isn't actually a bug at
      the moment.
      
      Lastly, tear down debugfs/stats data in the kvm_create_vm_debugfs()
      error path. Previously it was safe to assume that kvm_destroy_vm() would
      take out the garbage, that is no longer the case.
      Signed-off-by: default avatarOliver Upton <oupton@google.com>
      Message-Id: <20220720092259.3491733-6-oliver.upton@linux.dev>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      b74ed7a6
    • Oliver Upton's avatar
      KVM: Pass the name of the VM fd to kvm_create_vm_debugfs() · 59f82aad
      Oliver Upton authored
      At the time the VM fd is used in kvm_create_vm_debugfs(), the fd has
      been allocated but not yet installed. It is only really useful as an
      identifier in strings for the VM (such as debugfs).
      
      Treat it exactly as such by passing the string name of the fd to
      kvm_create_vm_debugfs(), futureproofing against possible misuse of the
      VM fd.
      Suggested-by: default avatarSean Christopherson <seanjc@google.com>
      Signed-off-by: default avatarOliver Upton <oupton@google.com>
      Message-Id: <20220720092259.3491733-5-oliver.upton@linux.dev>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      59f82aad
    • Oliver Upton's avatar
      KVM: Get an fd before creating the VM · 20020f4c
      Oliver Upton authored
      Allocate a VM's fd at the very beginning of kvm_dev_ioctl_create_vm() so
      that KVM can use the fd value to generate strigns, e.g. for debugfs,
      when creating and initializing the VM.
      Signed-off-by: default avatarOliver Upton <oupton@google.com>
      Message-Id: <20220720092259.3491733-4-oliver.upton@linux.dev>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      20020f4c
    • Oliver Upton's avatar
      KVM: Shove vcpu stats_id init into kvm_vcpu_init() · 58fc1166
      Oliver Upton authored
      Initialize stats_id alongside other kvm_vcpu fields to make it more
      difficult to unintentionally access stats_id before it's set.
      
      No functional change intended.
      Signed-off-by: default avatarOliver Upton <oupton@google.com>
      Message-Id: <20220720092259.3491733-3-oliver.upton@linux.dev>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      58fc1166
    • Oliver Upton's avatar
      KVM: Shove vm stats_id init into kvm_create_vm() · f2759c08
      Oliver Upton authored
      Initialize stats_id alongside other struct kvm fields to make it more
      difficult to unintentionally access stats_id before it's set.  While at
      it, move the format string to the first line of the call and fix the
      indentation of the second line.
      
      No functional change intended.
      Signed-off-by: default avatarOliver Upton <oupton@google.com>
      Message-Id: <20220720092259.3491733-2-oliver.upton@linux.dev>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      f2759c08
    • Sean Christopherson's avatar
      KVM: x86/mmu: Add sanity check that MMIO SPTE mask doesn't overlap gen · 8bad4606
      Sean Christopherson authored
      Add compile-time and init-time sanity checks to ensure that the MMIO SPTE
      mask doesn't overlap the MMIO SPTE generation or the MMU-present bit.
      The generation currently avoids using bit 63, but that's as much
      coincidence as it is strictly necessarly.  That will change in the future,
      as TDX support will require setting bit 63 (SUPPRESS_VE) in the mask.
      
      Explicitly carve out the bits that are allowed in the mask so that any
      future shuffling of SPTE bits doesn't silently break MMIO caching (KVM
      has broken MMIO caching more than once due to overlapping the generation
      with other things).
      Suggested-by: default avatarKai Huang <kai.huang@intel.com>
      Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
      Reviewed-by: default avatarKai Huang <kai.huang@intel.com>
      Message-Id: <20220805194133.86299-1-seanjc@google.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      8bad4606
    • Mingwei Zhang's avatar
      KVM: x86/mmu: rename trace function name for asynchronous page fault · 1685c0f3
      Mingwei Zhang authored
      Rename the tracepoint function from trace_kvm_async_pf_doublefault() to
      trace_kvm_async_pf_repeated_fault() to make it clear, since double fault
      has nothing to do with this trace function.
      
      Asynchronous Page Fault (APF) is an artifact generated by KVM when it
      cannot find a physical page to satisfy an EPT violation. KVM uses APF to
      tell the guest OS to do something else such as scheduling other guest
      processes to make forward progress. However, when another guest process
      also touches a previously APFed page, KVM halts the vCPU instead of
      generating a repeated APF to avoid wasting cycles.
      
      Double fault (#DF) clearly has a different meaning and a different
      consequence when triggered. #DF requires two nested contributory exceptions
      instead of two page faults faulting at the same address. A prevous bug on
      APF indicates that it may trigger a double fault in the guest [1] and
      clearly this trace function has nothing to do with it. So rename this
      function should be a valid choice.
      
      No functional change intended.
      
      [1] https://www.spinics.net/lists/kvm/msg214957.htmlSigned-off-by: default avatarMingwei Zhang <mizhang@google.com>
      Message-Id: <20220807052141.69186-1-mizhang@google.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      1685c0f3
    • Coleman Dietsch's avatar
      KVM: x86/xen: Stop Xen timer before changing IRQ · c0368991
      Coleman Dietsch authored
      Stop Xen timer (if it's running) prior to changing the IRQ vector and
      potentially (re)starting the timer. Changing the IRQ vector while the
      timer is still running can result in KVM injecting a garbage event, e.g.
      vm_xen_inject_timer_irqs() could see a non-zero xen.timer_pending from
      a previous timer but inject the new xen.timer_virq.
      
      Fixes: 53639526 ("KVM: x86/xen: handle PV timers oneshot mode")
      Cc: stable@vger.kernel.org
      Link: https://syzkaller.appspot.com/bug?id=8234a9dfd3aafbf092cc5a7cd9842e3ebc45fc42
      Reported-by: syzbot+e54f930ed78eb0f85281@syzkaller.appspotmail.com
      Signed-off-by: default avatarColeman Dietsch <dietschc@csp.edu>
      Reviewed-by: default avatarSean Christopherson <seanjc@google.com>
      Acked-by: default avatarDavid Woodhouse <dwmw@amazon.co.uk>
      Message-Id: <20220808190607.323899-3-dietschc@csp.edu>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      c0368991
    • Coleman Dietsch's avatar
      KVM: x86/xen: Initialize Xen timer only once · af735db3
      Coleman Dietsch authored
      Add a check for existing xen timers before initializing a new one.
      
      Currently kvm_xen_init_timer() is called on every
      KVM_XEN_VCPU_ATTR_TYPE_TIMER, which is causing the following ODEBUG
      crash when vcpu->arch.xen.timer is already set.
      
      ODEBUG: init active (active state 0)
      object type: hrtimer hint: xen_timer_callbac0
      RIP: 0010:debug_print_object+0x16e/0x250 lib/debugobjects.c:502
      Call Trace:
      __debug_object_init
      debug_hrtimer_init
      debug_init
      hrtimer_init
      kvm_xen_init_timer
      kvm_xen_vcpu_set_attr
      kvm_arch_vcpu_ioctl
      kvm_vcpu_ioctl
      vfs_ioctl
      
      Fixes: 53639526 ("KVM: x86/xen: handle PV timers oneshot mode")
      Cc: stable@vger.kernel.org
      Link: https://syzkaller.appspot.com/bug?id=8234a9dfd3aafbf092cc5a7cd9842e3ebc45fc42
      Reported-by: syzbot+e54f930ed78eb0f85281@syzkaller.appspotmail.com
      Signed-off-by: default avatarColeman Dietsch <dietschc@csp.edu>
      Reviewed-by: default avatarSean Christopherson <seanjc@google.com>
      Message-Id: <20220808190607.323899-2-dietschc@csp.edu>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      af735db3
    • Sean Christopherson's avatar
      KVM: SVM: Disable SEV-ES support if MMIO caching is disable · 0c29397a
      Sean Christopherson authored
      Disable SEV-ES if MMIO caching is disabled as SEV-ES relies on MMIO SPTEs
      generating #NPF(RSVD), which are reflected by the CPU into the guest as
      a #VC.  With SEV-ES, the untrusted host, a.k.a. KVM, doesn't have access
      to the guest instruction stream or register state and so can't directly
      emulate in response to a #NPF on an emulated MMIO GPA.  Disabling MMIO
      caching means guest accesses to emulated MMIO ranges cause #NPF(!PRESENT),
      and those flavors of #NPF cause automatic VM-Exits, not #VC.
      
      Adjust KVM's MMIO masks to account for the C-bit location prior to doing
      SEV(-ES) setup, and document that dependency between adjusting the MMIO
      SPTE mask and SEV(-ES) setup.
      
      Fixes: b09763da ("KVM: x86/mmu: Add module param to disable MMIO caching (for testing)")
      Reported-by: default avatarMichael Roth <michael.roth@amd.com>
      Tested-by: default avatarMichael Roth <michael.roth@amd.com>
      Cc: Tom Lendacky <thomas.lendacky@amd.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
      Message-Id: <20220803224957.1285926-4-seanjc@google.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      0c29397a
    • Sean Christopherson's avatar
      KVM: x86/mmu: Fully re-evaluate MMIO caching when SPTE masks change · c3e0c8c2
      Sean Christopherson authored
      Fully re-evaluate whether or not MMIO caching can be enabled when SPTE
      masks change; simply clearing enable_mmio_caching when a configuration
      isn't compatible with caching fails to handle the scenario where the
      masks are updated, e.g. by VMX for EPT or by SVM to account for the C-bit
      location, and toggle compatibility from false=>true.
      
      Snapshot the original module param so that re-evaluating MMIO caching
      preserves userspace's desire to allow caching.  Use a snapshot approach
      so that enable_mmio_caching still reflects KVM's actual behavior.
      
      Fixes: 8b9e74bf ("KVM: x86/mmu: Use enable_mmio_caching to track if MMIO caching is enabled")
      Reported-by: default avatarMichael Roth <michael.roth@amd.com>
      Cc: Tom Lendacky <thomas.lendacky@amd.com>
      Cc: stable@vger.kernel.org
      Tested-by: default avatarMichael Roth <michael.roth@amd.com>
      Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
      Reviewed-by: default avatarKai Huang <kai.huang@intel.com>
      Message-Id: <20220803224957.1285926-3-seanjc@google.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      c3e0c8c2
    • Sean Christopherson's avatar
      KVM: x86: Tag kvm_mmu_x86_module_init() with __init · 982bae43
      Sean Christopherson authored
      Mark kvm_mmu_x86_module_init() with __init, the entire reason it exists
      is to initialize variables when kvm.ko is loaded, i.e. it must never be
      called after module initialization.
      
      Fixes: 1d0e8480 ("KVM: x86/mmu: Resolve nx_huge_pages when kvm.ko is loaded")
      Cc: stable@vger.kernel.org
      Reviewed-by: default avatarKai Huang <kai.huang@intel.com>
      Tested-by: default avatarMichael Roth <michael.roth@amd.com>
      Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
      Message-Id: <20220803224957.1285926-2-seanjc@google.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      982bae43
    • Michal Luczaj's avatar
      KVM: x86: emulator: Fix illegal LEA handling · 4ac5b423
      Michal Luczaj authored
      The emulator mishandles LEA with register source operand. Even though such
      LEA is illegal, it can be encoded and fed to CPU. In which case real
      hardware throws #UD. The emulator, instead, returns address of
      x86_emulate_ctxt._regs. This info leak hurts host's kASLR.
      
      Tell the decoder that illegal LEA is not to be emulated.
      Signed-off-by: default avatarMichal Luczaj <mhal@rbox.co>
      Message-Id: <20220729134801.1120-1-mhal@rbox.co>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      4ac5b423
    • Yu Zhang's avatar
      KVM: X86: avoid uninitialized 'fault.async_page_fault' from fixed-up #PF · 2bc685e6
      Yu Zhang authored
      kvm_fixup_and_inject_pf_error() was introduced to fixup the error code(
      e.g., to add RSVD flag) and inject the #PF to the guest, when guest
      MAXPHYADDR is smaller than the host one.
      
      When it comes to nested, L0 is expected to intercept and fix up the #PF
      and then inject to L2 directly if
      - L2.MAXPHYADDR < L0.MAXPHYADDR and
      - L1 has no intention to intercept L2's #PF (e.g., L2 and L1 have the
        same MAXPHYADDR value && L1 is using EPT for L2),
      instead of constructing a #PF VM Exit to L1. Currently, with PFEC_MASK
      and PFEC_MATCH both set to 0 in vmcs02, the interception and injection
      may happen on all L2 #PFs.
      
      However, failing to initialize 'fault' in kvm_fixup_and_inject_pf_error()
      may cause the fault.async_page_fault being NOT zeroed, and later the #PF
      being treated as a nested async page fault, and then being injected to L1.
      Instead of zeroing 'fault' at the beginning of this function, we mannually
      set the value of 'fault.async_page_fault', because false is the value we
      really expect.
      
      Fixes: 89786147 ("KVM: x86: Add helper functions for illegal GPA checking and page fault injection")
      Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=216178Reported-by: default avatarYang Lixiao <lixiao.yang@intel.com>
      Signed-off-by: default avatarYu Zhang <yu.c.zhang@linux.intel.com>
      Reviewed-by: default avatarSean Christopherson <seanjc@google.com>
      Message-Id: <20220718074756.53788-1-yu.c.zhang@linux.intel.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      2bc685e6
    • Sean Christopherson's avatar
      KVM: x86: Bug the VM if an accelerated x2APIC trap occurs on a "bad" reg · 70c8327c
      Sean Christopherson authored
      Bug the VM if retrieving the x2APIC MSR/register while processing an
      accelerated vAPIC trap VM-Exit fails.  In theory it's impossible for the
      lookup to fail as hardware has already validated the register, but bugs
      happen, and not checking the result of kvm_lapic_msr_read() would result
      in consuming the uninitialized "val" if a KVM or hardware bug occurs.
      
      Fixes: 1bd9dfec ("KVM: x86: Do not block APIC write for non ICR registers")
      Reported-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Cc: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
      Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
      Message-Id: <20220804235028.1766253-1-seanjc@google.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      70c8327c
    • Paolo Bonzini's avatar
      KVM: x86: do not report preemption if the steal time cache is stale · c3c28d24
      Paolo Bonzini authored
      Commit 7e2175eb ("KVM: x86: Fix recording of guest steal time
      / preempted status", 2021-11-11) open coded the previous call to
      kvm_map_gfn, but in doing so it dropped the comparison between the cached
      guest physical address and the one in the MSR.  This cause an incorrect
      cache hit if the guest modifies the steal time address while the memslots
      remain the same.  This can happen with kexec, in which case the preempted
      bit is written at the address used by the old kernel instead of
      the old one.
      
      Cc: David Woodhouse <dwmw@amazon.co.uk>
      Cc: stable@vger.kernel.org
      Fixes: 7e2175eb ("KVM: x86: Fix recording of guest steal time / preempted status")
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      c3c28d24
    • Paolo Bonzini's avatar
      KVM: x86: revalidate steal time cache if MSR value changes · 901d3765
      Paolo Bonzini authored
      Commit 7e2175eb ("KVM: x86: Fix recording of guest steal time
      / preempted status", 2021-11-11) open coded the previous call to
      kvm_map_gfn, but in doing so it dropped the comparison between the cached
      guest physical address and the one in the MSR.  This cause an incorrect
      cache hit if the guest modifies the steal time address while the memslots
      remain the same.  This can happen with kexec, in which case the steal
      time data is written at the address used by the old kernel instead of
      the old one.
      
      While at it, rename the variable from gfn to gpa since it is a plain
      physical address and not a right-shifted one.
      Reported-by: default avatarDave Young <ruyang@redhat.com>
      Reported-by: default avatarXiaoying Yan  <yiyan@redhat.com>
      Analyzed-by: default avatarDr. David Alan Gilbert <dgilbert@redhat.com>
      Cc: David Woodhouse <dwmw@amazon.co.uk>
      Cc: stable@vger.kernel.org
      Fixes: 7e2175eb ("KVM: x86: Fix recording of guest steal time / preempted status")
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      901d3765
    • Paolo Bonzini's avatar
      selftests: kvm: fix compilation · baea2ce5
      Paolo Bonzini authored
      Commit  49de12ba ("selftests: drop KSFT_KHDR_INSTALL make target")
      dropped from tools/testing/selftests/lib.mk the code related to KSFT_KHDR_INSTALL,
      but in doing so it also dropped the definition of the ARCH variable.  The ARCH
      variable is used in several subdirectories, but kvm/ is the only one of these
      that was using KSFT_KHDR_INSTALL.
      
      As a result, kvm selftests cannot be built anymore:
      
      In file included from include/x86_64/vmx.h:12,
                       from x86_64/vmx_pmu_caps_test.c:18:
      include/x86_64/processor.h:15:10: fatal error: asm/msr-index.h: No such file or directory
         15 | #include <asm/msr-index.h>
            |          ^~~~~~~~~~~~~~~~~
      
      In file included from ../../../../tools/include/asm/atomic.h:6,
                       from ../../../../tools/include/linux/atomic.h:5,
                       from rseq_test.c:15:
      ../../../../tools/include/asm/../../arch/x86/include/asm/atomic.h:11:10: fatal error: asm/cmpxchg.h: No such file or directory
         11 | #include <asm/cmpxchg.h>
            |          ^~~~~~~~~~~~~~~
      
      Fix it by including the definition that was present in lib.mk.
      
      Fixes: 49de12ba ("selftests: drop KSFT_KHDR_INSTALL make target")
      Cc: Guillaume Tucker <guillaume.tucker@collabora.com>
      Cc: Anders Roxell <anders.roxell@linaro.org>
      Cc: Shuah Khan <skhan@linuxfoundation.org>
      Cc: linux-kselftest@vger.kernel.org
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      baea2ce5
    • Linus Torvalds's avatar
      Merge tag 'hwmon-fixes-for-v6.0-rc1' of... · f4144564
      Linus Torvalds authored
      Merge tag 'hwmon-fixes-for-v6.0-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging
      
      Pull hwmon fixes from Guenter Roeck:
       "Fix two regressions in nct6775 and lm90 drivers"
      
      * tag 'hwmon-fixes-for-v6.0-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
        hwmon: (nct6775) Fix platform driver suspend regression
        hwmon: (lm90) Fix error return value from detect function
      f4144564
    • Linus Torvalds's avatar
      Merge tag 'rpmsg-v5.20-1' of git://git.kernel.org/pub/scm/linux/kernel/git/remoteproc/linux · b196f3d1
      Linus Torvalds authored
      Pull rpmsg fixes from Bjorn Andersson:
       "This fixes schema validation warnings in the Devicetree bindings for
        SMD and SMD RPM"
      
      * tag 'rpmsg-v5.20-1' of git://git.kernel.org/pub/scm/linux/kernel/git/remoteproc/linux:
        dt-bindings: soc: qcom: smd-rpm: extend example
        dt-bindings: soc: qcom: smd: reference SMD edge schema
      b196f3d1
    • Linus Torvalds's avatar
      Merge tag 'mm-stable-2022-08-09' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm · b1701d5e
      Linus Torvalds authored
      Pull remaining MM updates from Andrew Morton:
       "Three patch series - two that perform cleanups and one feature:
      
         - hugetlb_vmemmap cleanups from Muchun Song
      
         - hardware poisoning support for 1GB hugepages, from Naoya Horiguchi
      
         - highmem documentation fixups from Fabio De Francesco"
      
      * tag 'mm-stable-2022-08-09' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm: (23 commits)
        Documentation/mm: add details about kmap_local_page() and preemption
        highmem: delete a sentence from kmap_local_page() kdocs
        Documentation/mm: rrefer kmap_local_page() and avoid kmap()
        Documentation/mm: avoid invalid use of addresses from kmap_local_page()
        Documentation/mm: don't kmap*() pages which can't come from HIGHMEM
        highmem: specify that kmap_local_page() is callable from interrupts
        highmem: remove unneeded spaces in kmap_local_page() kdocs
        mm, hwpoison: enable memory error handling on 1GB hugepage
        mm, hwpoison: skip raw hwpoison page in freeing 1GB hugepage
        mm, hwpoison: make __page_handle_poison returns int
        mm, hwpoison: set PG_hwpoison for busy hugetlb pages
        mm, hwpoison: make unpoison aware of raw error info in hwpoisoned hugepage
        mm, hwpoison, hugetlb: support saving mechanism of raw error pages
        mm/hugetlb: make pud_huge() and follow_huge_pud() aware of non-present pud entry
        mm/hugetlb: check gigantic_page_runtime_supported() in return_unused_surplus_pages()
        mm: hugetlb_vmemmap: use PTRS_PER_PTE instead of PMD_SIZE / PAGE_SIZE
        mm: hugetlb_vmemmap: move code comments to vmemmap_dedup.rst
        mm: hugetlb_vmemmap: improve hugetlb_vmemmap code readability
        mm: hugetlb_vmemmap: replace early_param() with core_param()
        mm: hugetlb_vmemmap: move vmemmap code related to HugeTLB to hugetlb_vmemmap.c
        ...
      b1701d5e
    • Linus Torvalds's avatar
      Merge tag 'cxl-for-6.0' of git://git.kernel.org/pub/scm/linux/kernel/git/cxl/cxl · c2356983
      Linus Torvalds authored
      Pull cxl updates from Dan Williams:
       "Compute Express Link (CXL) updates for 6.0:
      
         - Introduce a 'struct cxl_region' object with support for
           provisioning and assembling persistent memory regions.
      
         - Introduce alloc_free_mem_region() to accompany the existing
           request_free_mem_region() as a method to allocate physical memory
           capacity out of an existing resource.
      
         - Export insert_resource_expand_to_fit() for the CXL subsystem to
           late-publish CXL platform windows in iomem_resource.
      
         - Add a polled mode PCI DOE (Data Object Exchange) driver service and
           use it in cxl_pci to retrieve the CDAT (Coherent Device Attribute
           Table)"
      
      * tag 'cxl-for-6.0' of git://git.kernel.org/pub/scm/linux/kernel/git/cxl/cxl: (74 commits)
        cxl/hdm: Fix skip allocations vs multiple pmem allocations
        cxl/region: Disallow region granularity != window granularity
        cxl/region: Fix x1 interleave to greater than x1 interleave routing
        cxl/region: Move HPA setup to cxl_region_attach()
        cxl/region: Fix decoder interleave programming
        Documentation: cxl: remove dangling kernel-doc reference
        cxl/region: describe targets and nr_targets members of cxl_region_params
        cxl/regions: add padding for cxl_rr_ep_add nested lists
        cxl/region: Fix IS_ERR() vs NULL check
        cxl/region: Fix region reference target accounting
        cxl/region: Fix region commit uninitialized variable warning
        cxl/region: Fix port setup uninitialized variable warnings
        cxl/region: Stop initializing interleave granularity
        cxl/hdm: Fix DPA reservation vs cxl_endpoint_decoder lifetime
        cxl/acpi: Minimize granularity for x1 interleaves
        cxl/region: Delete 'region' attribute from root decoders
        cxl/acpi: Autoload driver for 'cxl_acpi' test devices
        cxl/region: decrement ->nr_targets on error in cxl_region_attach()
        cxl/region: prevent underflow in ways_to_cxl()
        cxl/region: uninitialized variable in alloc_hpa()
        ...
      c2356983
    • Linus Torvalds's avatar
      Merge tag 'pinctrl-v6.0-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl · 5e2e7383
      Linus Torvalds authored
      Pull pin control updates from Linus Walleij:
       "Outside the pinctrl driver and DT bindings we hit some Arm DT files,
        patched by the maintainers.
      
        Other than that it is business as usual.
      
        Core changes:
      
         - Add PINCTRL_PINGROUP() helper macro (and use it in the AMD driver).
      
        New drivers:
      
         - Intel Meteor Lake support.
      
         - Reneasas RZ/V2M and r8a779g0 (R-Car V4H).
      
         - AXP209 variants AXP221, AXP223 and AXP809.
      
         - Qualcomm MSM8909, PM8226, PMP8074 and SM6375.
      
         - Allwinner D1.
      
        Improvements:
      
         - Proper pin multiplexing in the AMD driver.
      
         - Mediatek MT8192 can use generic drive strength and pin bias, then
           fixes on top plus some I2C pin group fixes.
      
         - Have the Allwinner Sunplus SP7021 use the generic DT schema and
           make interrupts optional.
      
         - Handle Qualcomm SC7280 ADSP.
      
         - Handle Qualcomm MSM8916 CAMSS GP clock muxing.
      
         - High impedance bias on ZynqMP.
      
         - Serialize StarFive access to MMIO.
      
         - Immutable gpiochip for BCM2835, Ingenic, Qualcomm SPMI GPIO"
      
      * tag 'pinctrl-v6.0-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl: (117 commits)
        dt-bindings: pinctrl: qcom,pmic-gpio: add PM8226 constraints
        pinctrl: qcom: Make PINCTRL_SM8450 depend on PINCTRL_MSM
        pinctrl: qcom: sm8250: Fix PDC map
        pinctrl: amd: Fix an unused variable
        dt-bindings: pinctrl: mt8186: Add and use drive-strength-microamp
        dt-bindings: pinctrl: mt8186: Add gpio-line-names property
        ARM: dts: imxrt1170-pinfunc: Add pinctrl binding header
        pinctrl: amd: Use unicode for debugfs output
        pinctrl: amd: Fix newline declaration in debugfs output
        pinctrl: at91: Fix typo 'the the' in comment
        dt-bindings: pinctrl: st,stm32: Correct 'resets' property name
        pinctrl: mvebu: Missing a blank line after declarations.
        pinctrl: qcom: Add SM6375 TLMM driver
        dt-bindings: pinctrl: Add DT schema for SM6375 TLMM
        dt-bindings: pinctrl: mt8195: Use drive-strength-microamp in examples
        Revert "pinctrl: qcom: spmi-gpio: make the irqchip immutable"
        pinctrl: imx93: Add MODULE_DEVICE_TABLE()
        pinctrl: sunxi: Add driver for Allwinner D1
        pinctrl: sunxi: Make some layout parameters dynamic
        pinctrl: sunxi: Refactor register/offset calculation
        ...
      5e2e7383
    • Linus Torvalds's avatar
      Merge tag 'apparmor-pr-2022-08-08' of... · 00aa9d0b
      Linus Torvalds authored
      Merge tag 'apparmor-pr-2022-08-08' of git://git.kernel.org/pub/scm/linux/kernel/git/jj/linux-apparmor
      
      Pull AppArmor updates from John Johansen:
       "This is mostly cleanups and bug fixes with the one bigger change being
        Mathew Wilcox's patch to use XArrays instead of the IDR from the
        thread around the locking weirdness.
      
        Features:
         - Convert secid mapping to XArrays instead of IDR
         - Add a kernel label to use on kernel objects
         - Extend policydb permission set by making use of the xbits
         - Make export of raw binary profile to userspace optional
         - Enable tuning of policy paranoid load for embedded systems
         - Don't create raw_sha1 symlink if sha1 hashing is disabled
         - Allow labels to carry debug flags
      
        Cleanups:
         - Update MAINTAINERS file
         - Use struct_size() helper in kmalloc()
         - Move ptrace mediation to more logical task.{h,c}
         - Resolve uninitialized symbol warnings
         - Remove redundant ret variable
         - Mark alloc_unconfined() as static
         - Update help description of policy hash for introspection
         - Remove some casts which are no-longer required
      
        Bug Fixes:
         - Fix aa_label_asxprint return check
         - Fix reference count leak in aa_pivotroot()
         - Fix memleak in aa_simple_write_to_buffer()
         - Fix kernel doc comments
         - Fix absroot causing audited secids to begin with =
         - Fix quiet_denied for file rules
         - Fix failed mount permission check error message
         - Disable showing the mode as part of a secid to secctx
         - Fix setting unconfined mode on a loaded profile
         - Fix overlapping attachment computation
         - Fix undefined reference to `zlib_deflate_workspacesize'"
      
      * tag 'apparmor-pr-2022-08-08' of git://git.kernel.org/pub/scm/linux/kernel/git/jj/linux-apparmor: (34 commits)
        apparmor: Update MAINTAINERS file with new email address
        apparmor: correct config reference to intended one
        apparmor: move ptrace mediation to more logical task.{h,c}
        apparmor: extend policydb permission set by making use of the xbits
        apparmor: allow label to carry debug flags
        apparmor: fix overlapping attachment computation
        apparmor: fix setting unconfined mode on a loaded profile
        apparmor: Fix some kernel-doc comments
        apparmor: Mark alloc_unconfined() as static
        apparmor: disable showing the mode as part of a secid to secctx
        apparmor: Convert secid mapping to XArrays instead of IDR
        apparmor: add a kernel label to use on kernel objects
        apparmor: test: Remove some casts which are no-longer required
        apparmor: Fix memleak in aa_simple_write_to_buffer()
        apparmor: fix reference count leak in aa_pivotroot()
        apparmor: Fix some kernel-doc comments
        apparmor: Fix undefined reference to `zlib_deflate_workspacesize'
        apparmor: fix aa_label_asxprint return check
        apparmor: Fix some kernel-doc comments
        apparmor: Fix some kernel-doc comments
        ...
      00aa9d0b
    • Linus Torvalds's avatar
      Merge tag 'kbuild-v5.20' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild · 0af5cb34
      Linus Torvalds authored
      Pull Kbuild updates from Masahiro Yamada:
      
       - Remove the support for -O3 (CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3)
      
       - Fix error of rpm-pkg cross-builds
      
       - Support riscv for checkstack tool
      
       - Re-enable -Wformwat warnings for Clang
      
       - Clean up modpost, Makefiles, and misc scripts
      
      * tag 'kbuild-v5.20' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: (30 commits)
        modpost: remove .symbol_white_list field entirely
        modpost: remove unneeded .symbol_white_list initializers
        modpost: add PATTERNS() helper macro
        modpost: shorten warning messages in report_sec_mismatch()
        Revert "Kbuild, lto, workaround: Don't warn for initcall_reference in modpost"
        modpost: use more reliable way to get fromsec in section_rel(a)()
        modpost: add array range check to sec_name()
        modpost: refactor get_secindex()
        kbuild: set EXIT trap before creating temporary directory
        modpost: remove unused Elf_Sword macro
        Makefile.extrawarn: re-enable -Wformat for clang
        kbuild: add dtbs_prepare target
        kconfig: Qt5: tell the user which packages are required
        modpost: use sym_get_data() to get module device_table data
        modpost: drop executable ELF support
        checkstack: add riscv support for scripts/checkstack.pl
        kconfig: shorten the temporary directory name for cc-option
        scripts: headers_install.sh: Update config leak ignore entries
        kbuild: error out if $(INSTALL_MOD_PATH) contains % or :
        kbuild: error out if $(KBUILD_EXTMOD) contains % or :
        ...
      0af5cb34