1. 26 Nov, 2021 13 commits
    • Giovanni Cabiddu's avatar
      crypto: qat - change PFVF ACK behaviour · 956125e2
      Giovanni Cabiddu authored
      Change the PFVF receipt flow on the VF side to read, ack and handle the
      message instead of read, handle and ack.
      This is done for (1) consistency with the PF side, see the function
      adf_recv_and_handle_vf2pf_msg() in adf_pf2vf_msg.c, and (2) performance
      reasons, to avoid keeping the CSR busy while parsing the message.
      
      In addition, do not ACK PFVF legacy messages, as this driver is not
      capable of handling PFVF legacy messages.
      If a PFVF message with MSGORIGIN not set is received, do nothing.
      Signed-off-by: default avatarGiovanni Cabiddu <giovanni.cabiddu@intel.com>
      Reviewed-by: default avatarMarco Chiappero <marco.chiappero@intel.com>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      956125e2
    • Marco Chiappero's avatar
      crypto: qat - move interrupt code out of the PFVF handler · 720aa72a
      Marco Chiappero authored
      Move the interrupt handling call from the PF specific protocol file,
      adf_pf2vf_msg.c, to adf_sriov.c to maintain the PFVF files focused on
      the protocol handling.
      
      The function adf_vf2pf_req_hndl() has been renamed as
      adf_recv_and_handle_vf2pf_msg() to reflect its actual purpose and
      maintain consistency with the VF side. This function now returns a
      boolean indicating to the caller if interrupts need to be re-enabled or
      not.
      Signed-off-by: default avatarMarco Chiappero <marco.chiappero@intel.com>
      Co-developed-by: default avatarGiovanni Cabiddu <giovanni.cabiddu@intel.com>
      Signed-off-by: default avatarGiovanni Cabiddu <giovanni.cabiddu@intel.com>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      720aa72a
    • Marco Chiappero's avatar
      crypto: qat - move VF message handler to adf_vf2pf_msg.c · b7c13ee4
      Marco Chiappero authored
      Move the reading and parsing of a PF2VF message from the bottom half
      function in adf_vf_isr.c, adf_pf2vf_bh_handler(), to the PFVF protocol
      file adf_vf2pf_msg.c, for better code organization.
      
      The receive and handle logic has been moved to a new function called
      adf_recv_and_handle_pf2vf_msg() which returns a boolean indicating if
      interrupts need to be re-enabled or not.
      A slight refactoring has been done to avoid calculating the PF2VF CSR
      offset twice and repeating the clearing of the PF2VFINT bit.
      
      The "PF restarting" logic, now defined in the function
      adf_pf2vf_handle_pf_restaring(), has been kept in adf_vf_isr.c due to
      the dependencies with the adf_vf_stop_wq workqueue.
      Signed-off-by: default avatarMarco Chiappero <marco.chiappero@intel.com>
      Co-developed-by: default avatarGiovanni Cabiddu <giovanni.cabiddu@intel.com>
      Signed-off-by: default avatarGiovanni Cabiddu <giovanni.cabiddu@intel.com>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      b7c13ee4
    • Giovanni Cabiddu's avatar
      crypto: qat - move vf2pf interrupt helpers · 08ea97f4
      Giovanni Cabiddu authored
      Move vf2pf interrupt enable and disable functions from adf_pf2vf_msg.c
      to adf_isr.c
      This it to separate the interrupt related code from the PFVF protocol
      logic.
      
      With this change, the function adf_disable_vf2pf_interrupts_irq() is
      only called from adf_isr.c and it has been marked as static.
      Signed-off-by: default avatarGiovanni Cabiddu <giovanni.cabiddu@intel.com>
      Reviewed-by: default avatarMarco Chiappero <marco.chiappero@intel.com>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      08ea97f4
    • Marco Chiappero's avatar
      crypto: qat - refactor PF top half for PFVF · 95b4d40e
      Marco Chiappero authored
      Move logic associated to handling VF2PF interrupt to its own function.
      This will simplify the handling of multiple interrupt sources in the
      function adf_msix_isr_ae() in the future.
      Signed-off-by: default avatarMarco Chiappero <marco.chiappero@intel.com>
      Co-developed-by: default avatarGiovanni Cabiddu <giovanni.cabiddu@intel.com>
      Signed-off-by: default avatarGiovanni Cabiddu <giovanni.cabiddu@intel.com>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      95b4d40e
    • Giovanni Cabiddu's avatar
      crypto: qat - fix undetected PFVF timeout in ACK loop · 5002200b
      Giovanni Cabiddu authored
      If the remote function did not ACK the reception of a message, the
      function __adf_iov_putmsg() could detect it as a collision.
      
      This was due to the fact that the collision and the timeout checks after
      the ACK loop were in the wrong order. The timeout must be checked at the
      end of the loop, so fix by swapping the order of the two checks.
      
      Fixes: 9b768e8a ("crypto: qat - detect PFVF collision after ACK")
      Signed-off-by: default avatarGiovanni Cabiddu <giovanni.cabiddu@intel.com>
      Co-developed-by: default avatarMarco Chiappero <marco.chiappero@intel.com>
      Signed-off-by: default avatarMarco Chiappero <marco.chiappero@intel.com>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      5002200b
    • Giovanni Cabiddu's avatar
      crypto: qat - do not handle PFVF sources for qat_4xxx · c79391c6
      Giovanni Cabiddu authored
      The QAT driver does not have support for PFVF interrupts for GEN4
      devices, therefore report the vf2pf sources as 0.
      This prevents a NULL pointer dereference in the function
      adf_msix_isr_ae() if the device triggers a spurious interrupt.
      
      Fixes: 993161d3 ("crypto: qat - fix handling of VF to PF interrupts")
      Reported-by: default avatarAdam Guerin <adam.guerin@intel.com>
      Signed-off-by: default avatarGiovanni Cabiddu <giovanni.cabiddu@intel.com>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      c79391c6
    • Nicolai Stange's avatar
      crypto: drbg - reseed 'nopr' drbgs periodically from get_random_bytes() · 8ea5ee00
      Nicolai Stange authored
      In contrast to the fully prediction resistant 'pr' DRBGs, the 'nopr'
      variants get seeded once at boot and reseeded only rarely thereafter,
      namely only after 2^20 requests have been served each. AFAICT, this
      reseeding based on the number of requests served is primarily motivated
      by information theoretic considerations, c.f. NIST SP800-90Ar1,
      sec. 8.6.8 ("Reseeding").
      
      However, given the relatively large seed lifetime of 2^20 requests, the
      'nopr' DRBGs can hardly be considered to provide any prediction resistance
      whatsoever, i.e. to protect against threats like side channel leaks of the
      internal DRBG state (think e.g. leaked VM snapshots). This is expected and
      completely in line with the 'nopr' naming, but as e.g. the
      "drbg_nopr_hmac_sha512" implementation is potentially being used for
      providing the "stdrng" and thus, the crypto_default_rng serving the
      in-kernel crypto, it would certainly be desirable to achieve at least the
      same level of prediction resistance as get_random_bytes() does.
      
      Note that the chacha20 rngs underlying get_random_bytes() get reseeded
      every CRNG_RESEED_INTERVAL == 5min: the secondary, per-NUMA node rngs from
      the primary one and the primary rng in turn from the entropy pool, provided
      sufficient entropy is available.
      
      The 'nopr' DRBGs do draw randomness from get_random_bytes() for their
      initial seed already, so making them to reseed themselves periodically from
      get_random_bytes() in order to let them benefit from the latter's
      prediction resistance is not such a big change conceptually.
      
      In principle, it would have been also possible to make the 'nopr' DRBGs to
      periodically invoke a full reseeding operation, i.e. to also consider the
      jitterentropy source (if enabled) in addition to get_random_bytes() for the
      seed value. However, get_random_bytes() is relatively lightweight as
      compared to the jitterentropy generation process and thus, even though the
      'nopr' reseeding is supposed to get invoked infrequently, it's IMO still
      worthwhile to avoid occasional latency spikes for drbg_generate() and
      stick to get_random_bytes() only. As an additional remark, note that
      drawing randomness from the non-SP800-90B-conforming get_random_bytes()
      only won't adversely affect SP800-90A conformance either: the very same is
      being done during boot via drbg_seed_from_random() already once
      rng_is_initialized() flips to true and it follows that if the DRBG
      implementation does conform to SP800-90A now, it will continue to do so.
      
      Make the 'nopr' DRBGs to reseed themselves periodically from
      get_random_bytes() every CRNG_RESEED_INTERVAL == 5min.
      
      More specifically, introduce a new member ->last_seed_time to struct
      drbg_state for recording in units of jiffies when the last seeding
      operation had taken place. Make __drbg_seed() maintain it and let
      drbg_generate() invoke a reseed from get_random_bytes() via
      drbg_seed_from_random() if more than 5min have passed by since the last
      seeding operation. Be careful to not to reseed if in testing mode though,
      or otherwise the drbg related tests in crypto/testmgr.c would fail to
      reproduce the expected output.
      
      In order to keep the formatting clean in drbg_generate() wrap the logic
      for deciding whether or not a reseed is due in a new helper,
      drbg_nopr_reseed_interval_elapsed().
      Signed-off-by: default avatarNicolai Stange <nstange@suse.de>
      Reviewed-by: default avatarStephan Müller <smueller@chronox.de>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      8ea5ee00
    • Nicolai Stange's avatar
      crypto: drbg - make drbg_prepare_hrng() handle jent instantiation errors · 559edd47
      Nicolai Stange authored
      Now that drbg_prepare_hrng() doesn't do anything but to instantiate a
      jitterentropy crypto_rng instance, it looks a little odd to have the
      related error handling at its only caller, drbg_instantiate().
      
      Move the handling of jitterentropy allocation failures from
      drbg_instantiate() close to the allocation itself in drbg_prepare_hrng().
      
      There is no change in behaviour.
      Signed-off-by: default avatarNicolai Stange <nstange@suse.de>
      Reviewed-by: default avatarStephan Müller <smueller@chronox.de>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      559edd47
    • Nicolai Stange's avatar
      crypto: drbg - make reseeding from get_random_bytes() synchronous · 074bcd40
      Nicolai Stange authored
      get_random_bytes() usually hasn't full entropy available by the time DRBG
      instances are first getting seeded from it during boot. Thus, the DRBG
      implementation registers random_ready_callbacks which would in turn
      schedule some work for reseeding the DRBGs once get_random_bytes() has
      sufficient entropy available.
      
      For reference, the relevant history around handling DRBG (re)seeding in
      the context of a not yet fully seeded get_random_bytes() is:
      
        commit 16b369a9 ("random: Blocking API for accessing
                              nonblocking_pool")
        commit 4c787990 ("crypto: drbg - add async seeding operation")
      
        commit 205a525c ("random: Add callback API for random pool
                              readiness")
        commit 57225e67 ("crypto: drbg - Use callback API for random
                              readiness")
        commit c2719503 ("random: Remove kernel blocking API")
      
      However, some time later, the initialization state of get_random_bytes()
      has been made queryable via rng_is_initialized() introduced with commit
      9a47249d ("random: Make crng state queryable"). This primitive now
      allows for streamlining the DRBG reseeding from get_random_bytes() by
      replacing that aforementioned asynchronous work scheduling from
      random_ready_callbacks with some simpler, synchronous code in
      drbg_generate() next to the related logic already present therein. Apart
      from improving overall code readability, this change will also enable DRBG
      users to rely on wait_for_random_bytes() for ensuring that the initial
      seeding has completed, if desired.
      
      The previous patches already laid the grounds by making drbg_seed() to
      record at each DRBG instance whether it was being seeded at a time when
      rng_is_initialized() still had been false as indicated by
      ->seeded == DRBG_SEED_STATE_PARTIAL.
      
      All that remains to be done now is to make drbg_generate() check for this
      condition, determine whether rng_is_initialized() has flipped to true in
      the meanwhile and invoke a reseed from get_random_bytes() if so.
      
      Make this move:
      - rename the former drbg_async_seed() work handler, i.e. the one in charge
        of reseeding a DRBG instance from get_random_bytes(), to
        "drbg_seed_from_random()",
      - change its signature as appropriate, i.e. make it take a struct
        drbg_state rather than a work_struct and change its return type from
        "void" to "int" in order to allow for passing error information from
        e.g. its __drbg_seed() invocation onwards to callers,
      - make drbg_generate() invoke this drbg_seed_from_random() once it
        encounters a DRBG instance with ->seeded == DRBG_SEED_STATE_PARTIAL by
        the time rng_is_initialized() has flipped to true and
      - prune everything related to the former, random_ready_callback based
        mechanism.
      
      As drbg_seed_from_random() is now getting invoked from drbg_generate() with
      the ->drbg_mutex being held, it must not attempt to recursively grab it
      once again. Remove the corresponding mutex operations from what is now
      drbg_seed_from_random(). Furthermore, as drbg_seed_from_random() can now
      report errors directly to its caller, there's no need for it to temporarily
      switch the DRBG's ->seeded state to DRBG_SEED_STATE_UNSEEDED so that a
      failure of the subsequently invoked __drbg_seed() will get signaled to
      drbg_generate(). Don't do it then.
      Signed-off-by: default avatarNicolai Stange <nstange@suse.de>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      074bcd40
    • Nicolai Stange's avatar
      crypto: drbg - move dynamic ->reseed_threshold adjustments to __drbg_seed() · 262d83a4
      Nicolai Stange authored
      Since commit 42ea507f ("crypto: drbg - reseed often if seedsource is
      degraded"), the maximum seed lifetime represented by ->reseed_threshold
      gets temporarily lowered if the get_random_bytes() source cannot provide
      sufficient entropy yet, as is common during boot, and restored back to
      the original value again once that has changed.
      
      More specifically, if the add_random_ready_callback() invoked from
      drbg_prepare_hrng() in the course of DRBG instantiation does not return
      -EALREADY, that is, if get_random_bytes() has not been fully initialized
      at this point yet, drbg_prepare_hrng() will lower ->reseed_threshold
      to a value of 50. The drbg_async_seed() scheduled from said
      random_ready_callback will eventually restore the original value.
      
      A future patch will replace the random_ready_callback based notification
      mechanism and thus, there will be no add_random_ready_callback() return
      value anymore which could get compared to -EALREADY.
      
      However, there's __drbg_seed() which gets invoked in the course of both,
      the DRBG instantiation as well as the eventual reseeding from
      get_random_bytes() in aforementioned drbg_async_seed(), if any. Moreover,
      it knows about the get_random_bytes() initialization state by the time the
      seed data had been obtained from it: the new_seed_state argument introduced
      with the previous patch would get set to DRBG_SEED_STATE_PARTIAL in case
      get_random_bytes() had not been fully initialized yet and to
      DRBG_SEED_STATE_FULL otherwise. Thus, __drbg_seed() provides a convenient
      alternative for managing that ->reseed_threshold lowering and restoring at
      a central place.
      
      Move all ->reseed_threshold adjustment code from drbg_prepare_hrng() and
      drbg_async_seed() respectively to __drbg_seed(). Make __drbg_seed()
      lower the ->reseed_threshold to 50 in case its new_seed_state argument
      equals DRBG_SEED_STATE_PARTIAL and let it restore the original value
      otherwise.
      
      There is no change in behaviour.
      Signed-off-by: default avatarNicolai Stange <nstange@suse.de>
      Reviewed-by: default avatarStephan Müller <smueller@chronox.de>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      262d83a4
    • Nicolai Stange's avatar
      crypto: drbg - track whether DRBG was seeded with !rng_is_initialized() · 2bcd2544
      Nicolai Stange authored
      Currently, the DRBG implementation schedules asynchronous works from
      random_ready_callbacks for reseeding the DRBG instances with output from
      get_random_bytes() once the latter has sufficient entropy available.
      
      However, as the get_random_bytes() initialization state can get queried by
      means of rng_is_initialized() now, there is no real need for this
      asynchronous reseeding logic anymore and it's better to keep things simple
      by doing it synchronously when needed instead, i.e. from drbg_generate()
      once rng_is_initialized() has flipped to true.
      
      Of course, for this to work, drbg_generate() would need some means by which
      it can tell whether or not rng_is_initialized() has flipped to true since
      the last seeding from get_random_bytes(). Or equivalently, whether or not
      the last seed from get_random_bytes() has happened when
      rng_is_initialized() was still evaluating to false.
      
      As it currently stands, enum drbg_seed_state allows for the representation
      of two different DRBG seeding states: DRBG_SEED_STATE_UNSEEDED and
      DRBG_SEED_STATE_FULL. The former makes drbg_generate() to invoke a full
      reseeding operation involving both, the rather expensive jitterentropy as
      well as the get_random_bytes() randomness sources. The DRBG_SEED_STATE_FULL
      state on the other hand implies that no reseeding at all is required for a
      !->pr DRBG variant.
      
      Introduce the new DRBG_SEED_STATE_PARTIAL state to enum drbg_seed_state for
      representing the condition that a DRBG was being seeded when
      rng_is_initialized() had still been false. In particular, this new state
      implies that
      - the given DRBG instance has been fully seeded from the jitterentropy
        source (if enabled)
      - and drbg_generate() is supposed to reseed from get_random_bytes()
        *only* once rng_is_initialized() turns to true.
      
      Up to now, the __drbg_seed() helper used to set the given DRBG instance's
      ->seeded state to constant DRBG_SEED_STATE_FULL. Introduce a new argument
      allowing for the specification of the to be written ->seeded value instead.
      Make the first of its two callers, drbg_seed(), determine the appropriate
      value based on rng_is_initialized(). The remaining caller,
      drbg_async_seed(), is known to get invoked only once rng_is_initialized()
      is true, hence let it pass constant DRBG_SEED_STATE_FULL for the new
      argument to __drbg_seed().
      
      There is no change in behaviour, except for that the pr_devel() in
      drbg_generate() would now report "unseeded" for ->pr DRBG instances which
      had last been seeded when rng_is_initialized() was still evaluating to
      false.
      Signed-off-by: default avatarNicolai Stange <nstange@suse.de>
      Reviewed-by: default avatarStephan Müller <smueller@chronox.de>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      2bcd2544
    • Nicolai Stange's avatar
      crypto: drbg - prepare for more fine-grained tracking of seeding state · ce8ce31b
      Nicolai Stange authored
      There are two different randomness sources the DRBGs are getting seeded
      from, namely the jitterentropy source (if enabled) and get_random_bytes().
      At initial DRBG seeding time during boot, the latter might not have
      collected sufficient entropy for seeding itself yet and thus, the DRBG
      implementation schedules a reseed work from a random_ready_callback once
      that has happened. This is particularly important for the !->pr DRBG
      instances, for which (almost) no further reseeds are getting triggered
      during their lifetime.
      
      Because collecting data from the jitterentropy source is a rather expensive
      operation, the aforementioned asynchronously scheduled reseed work
      restricts itself to get_random_bytes() only. That is, it in some sense
      amends the initial DRBG seed derived from jitterentropy output at full
      (estimated) entropy with fresh randomness obtained from get_random_bytes()
      once that has been seeded with sufficient entropy itself.
      
      With the advent of rng_is_initialized(), there is no real need for doing
      the reseed operation from an asynchronously scheduled work anymore and a
      subsequent patch will make it synchronous by moving it next to related
      logic already present in drbg_generate().
      
      However, for tracking whether a full reseed including the jitterentropy
      source is required or a "partial" reseed involving only get_random_bytes()
      would be sufficient already, the boolean struct drbg_state's ->seeded
      member must become a tristate value.
      
      Prepare for this by introducing the new enum drbg_seed_state and change
      struct drbg_state's ->seeded member's type from bool to that type.
      
      For facilitating review, enum drbg_seed_state is made to only contain
      two members corresponding to the former ->seeded values of false and true
      resp. at this point: DRBG_SEED_STATE_UNSEEDED and DRBG_SEED_STATE_FULL. A
      third one for tracking the intermediate state of "seeded from jitterentropy
      only" will be introduced with a subsequent patch.
      
      There is no change in behaviour at this point.
      Signed-off-by: default avatarNicolai Stange <nstange@suse.de>
      Reviewed-by: default avatarStephan Müller <smueller@chronox.de>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      ce8ce31b
  2. 20 Nov, 2021 13 commits
  3. 14 Nov, 2021 14 commits
    • Linus Torvalds's avatar
      Linux 5.16-rc1 · fa55b7dc
      Linus Torvalds authored
      fa55b7dc
    • Gustavo A. R. Silva's avatar
      kconfig: Add support for -Wimplicit-fallthrough · dee2b702
      Gustavo A. R. Silva authored
      Add Kconfig support for -Wimplicit-fallthrough for both GCC and Clang.
      
      The compiler option is under configuration CC_IMPLICIT_FALLTHROUGH,
      which is enabled by default.
      
      Special thanks to Nathan Chancellor who fixed the Clang bug[1][2]. This
      bugfix only appears in Clang 14.0.0, so older versions still contain
      the bug and -Wimplicit-fallthrough won't be enabled for them, for now.
      
      This concludes a long journey and now we are finally getting rid
      of the unintentional fallthrough bug-class in the kernel, entirely. :)
      
      Link: https://github.com/llvm/llvm-project/commit/9ed4a94d6451046a51ef393cd62f00710820a7e8 [1]
      Link: https://bugs.llvm.org/show_bug.cgi?id=51094 [2]
      Link: https://github.com/KSPP/linux/issues/115
      Link: https://github.com/ClangBuiltLinux/linux/issues/236Co-developed-by: default avatarKees Cook <keescook@chromium.org>
      Signed-off-by: default avatarKees Cook <keescook@chromium.org>
      Co-developed-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarGustavo A. R. Silva <gustavoars@kernel.org>
      Reviewed-by: default avatarNathan Chancellor <nathan@kernel.org>
      Tested-by: default avatarNathan Chancellor <nathan@kernel.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      dee2b702
    • Linus Torvalds's avatar
      Merge tag 'xfs-5.16-merge-5' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux · ce49bfc8
      Linus Torvalds authored
      Pull xfs cleanups from Darrick Wong:
       "The most 'exciting' aspect of this branch is that the xfsprogs
        maintainer and I have worked through the last of the code
        discrepancies between kernel and userspace libxfs such that there are
        no code differences between the two except for #includes.
      
        IOWs, diff suffices to demonstrate that the userspace tools behave the
        same as the kernel, and kernel-only bits are clearly marked in the
        /kernel/ source code instead of just the userspace source.
      
        Summary:
      
         - Clean up open-coded swap() calls.
      
         - A little bit of #ifdef golf to complete the reunification of the
           kernel and userspace libxfs source code"
      
      * tag 'xfs-5.16-merge-5' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux:
        xfs: sync xfs_btree_split macros with userspace libxfs
        xfs: #ifdef out perag code for userspace
        xfs: use swap() to make dabtree code cleaner
      ce49bfc8
    • Linus Torvalds's avatar
      Merge tag 'for-5.16/parisc-3' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux · c3b68c27
      Linus Torvalds authored
      Pull more parisc fixes from Helge Deller:
       "Fix a build error in stracktrace.c, fix resolving of addresses to
        function names in backtraces, fix single-stepping in assembly code and
        flush userspace pte's when using set_pte_at()"
      
      * tag 'for-5.16/parisc-3' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
        parisc/entry: fix trace test in syscall exit path
        parisc: Flush kernel data mapping in set_pte_at() when installing pte for user page
        parisc: Fix implicit declaration of function '__kernel_text_address'
        parisc: Fix backtrace to always include init funtion names
      c3b68c27
    • Linus Torvalds's avatar
      Merge tag 'sh-for-5.16' of git://git.libc.org/linux-sh · 24318ae8
      Linus Torvalds authored
      Pull arch/sh updates from Rich Felker.
      
      * tag 'sh-for-5.16' of git://git.libc.org/linux-sh:
        sh: pgtable-3level: Fix cast to pointer from integer of different size
        sh: fix READ/WRITE redefinition warnings
        sh: define __BIG_ENDIAN for math-emu
        sh: math-emu: drop unused functions
        sh: fix kconfig unmet dependency warning for FRAME_POINTER
        sh: Cleanup about SPARSE_IRQ
        sh: kdump: add some attribute to function
        maple: fix wrong return value of maple_bus_init().
        sh: boot: avoid unneeded rebuilds under arch/sh/boot/compressed/
        sh: boot: add intermediate vmlinux.bin* to targets instead of extra-y
        sh: boards: Fix the cacography in irq.c
        sh: check return code of request_irq
        sh: fix trivial misannotations
      24318ae8
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm · 6ea45c57
      Linus Torvalds authored
      Pull ARM fixes from Russell King:
      
       - Fix early_iounmap
      
       - Drop cc-option fallbacks for architecture selection
      
      * tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm:
        ARM: 9156/1: drop cc-option fallbacks for architecture selection
        ARM: 9155/1: fix early early_iounmap()
      6ea45c57
    • Linus Torvalds's avatar
      Merge tag 'devicetree-fixes-for-5.16-1' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux · 0d1503d8
      Linus Torvalds authored
      Pull devicetree fixes from Rob Herring:
      
       - Two fixes due to DT node name changes on Arm, Ltd. boards
      
       - Treewide rename of Ingenic CGU headers
      
       - Update ST email addresses
      
       - Remove Netlogic DT bindings
      
       - Dropping few more cases of redundant 'maxItems' in schemas
      
       - Convert toshiba,tc358767 bridge binding to schema
      
      * tag 'devicetree-fixes-for-5.16-1' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux:
        dt-bindings: watchdog: sunxi: fix error in schema
        bindings: media: venus: Drop redundant maxItems for power-domain-names
        dt-bindings: Remove Netlogic bindings
        clk: versatile: clk-icst: Ensure clock names are unique
        of: Support using 'mask' in making device bus id
        dt-bindings: treewide: Update @st.com email address to @foss.st.com
        dt-bindings: media: Update maintainers for st,stm32-hwspinlock.yaml
        dt-bindings: media: Update maintainers for st,stm32-cec.yaml
        dt-bindings: mfd: timers: Update maintainers for st,stm32-timers
        dt-bindings: timer: Update maintainers for st,stm32-timer
        dt-bindings: i2c: imx: hardware do not restrict clock-frequency to only 100 and 400 kHz
        dt-bindings: display: bridge: Convert toshiba,tc358767.txt to yaml
        dt-bindings: Rename Ingenic CGU headers to ingenic,*.h
      0d1503d8
    • Linus Torvalds's avatar
      Merge tag 'timers-urgent-2021-11-14' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 622c72b6
      Linus Torvalds authored
      Pull timer fix from Thomas Gleixner:
       "A single fix for POSIX CPU timers to address a problem where POSIX CPU
        timer delivery stops working for a new child task because
        copy_process() copies state information which is only valid for the
        parent task"
      
      * tag 'timers-urgent-2021-11-14' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        posix-cpu-timers: Clear task::posix_cputimers_work in copy_process()
      622c72b6
    • Linus Torvalds's avatar
      Merge tag 'irq-urgent-2021-11-14' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · c36e33e2
      Linus Torvalds authored
      Pull irq fixes from Thomas Gleixner:
       "A set of fixes for the interrupt subsystem
      
        Core code:
      
         - A regression fix for the Open Firmware interrupt mapping code where
           a interrupt controller property in a node caused a map property in
           the same node to be ignored.
      
        Interrupt chip drivers:
      
         - Workaround a limitation in SiFive PLIC interrupt chip which
           silently ignores an EOI when the interrupt line is masked.
      
         - Provide the missing mask/unmask implementation for the CSKY MP
           interrupt controller.
      
        PCI/MSI:
      
         - Prevent a use after free when PCI/MSI interrupts are released by
           destroying the sysfs entries before freeing the memory which is
           accessed in the sysfs show() function.
      
         - Implement a mask quirk for the Nvidia ION AHCI chip which does not
           advertise masking capability despite implementing it. Even worse
           the chip comes out of reset with all MSI entries masked, which due
           to the missing masking capability never get unmasked.
      
         - Move the check which prevents accessing the MSI[X] masking for XEN
           back into the low level accessors. The recent consolidation missed
           that these accessors can be invoked from places which do not have
           that check which broke XEN. Move them back to he original place
           instead of sprinkling tons of these checks all over the code"
      
      * tag 'irq-urgent-2021-11-14' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        of/irq: Don't ignore interrupt-controller when interrupt-map failed
        irqchip/sifive-plic: Fixup EOI failed when masked
        irqchip/csky-mpintc: Fixup mask/unmask implementation
        PCI/MSI: Destroy sysfs before freeing entries
        PCI: Add MSI masking quirk for Nvidia ION AHCI
        PCI/MSI: Deal with devices lying about their MSI mask capability
        PCI/MSI: Move non-mask check back into low level accessors
      c36e33e2
    • Linus Torvalds's avatar
      Merge tag 'locking-urgent-2021-11-14' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 218cc8b8
      Linus Torvalds authored
      Pull x86 static call update from Thomas Gleixner:
       "A single fix for static calls to make the trampoline patching more
        robust by placing explicit signature bytes after the call trampoline
        to prevent patching random other jumps like the CFI jump table
        entries"
      
      * tag 'locking-urgent-2021-11-14' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        static_call,x86: Robustify trampoline patching
      218cc8b8
    • Linus Torvalds's avatar
      Merge tag 'sched_urgent_for_v5.16_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · fc661f2d
      Linus Torvalds authored
      Pull scheduler fixes from Borislav Petkov:
      
       - Avoid touching ~100 config files in order to be able to select the
         preemption model
      
       - clear cluster CPU masks too, on the CPU unplug path
      
       - prevent use-after-free in cfs
      
       - Prevent a race condition when updating CPU cache domains
      
       - Factor out common shared part of smp_prepare_cpus() into a common
         helper which can be called by both baremetal and Xen, in order to fix
         a booting of Xen PV guests
      
      * tag 'sched_urgent_for_v5.16_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        preempt: Restore preemption model selection configs
        arch_topology: Fix missing clear cluster_cpumask in remove_cpu_topology()
        sched/fair: Prevent dead task groups from regaining cfs_rq's
        sched/core: Mitigate race cpus_share_cache()/update_top_cache_domain()
        x86/smp: Factor out parts of native_smp_prepare_cpus()
      fc661f2d
    • Linus Torvalds's avatar
      Merge tag 'perf_urgent_for_v5.16_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · f7018be2
      Linus Torvalds authored
      Pull perf fixes from Borislav Petkov:
      
       - Prevent unintentional page sharing by checking whether a page
         reference to a PMU samples page has been acquired properly before
         that
      
       - Make sure the LBR_SELECT MSR is saved/restored too
      
       - Reset the LBR_SELECT MSR when resetting the LBR PMU to clear any
         residual data left
      
      * tag 'perf_urgent_for_v5.16_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        perf/core: Avoid put_page() when GUP fails
        perf/x86/vlbr: Add c->flags to vlbr event constraints
        perf/x86/lbr: Reset LBR_SELECT during vlbr reset
      f7018be2
    • Linus Torvalds's avatar
      Merge tag 'x86_urgent_for_v5.16_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 1654e95e
      Linus Torvalds authored
      Pull x86 fixes from Borislav Petkov:
      
       - Add the model number of a new, Raptor Lake CPU, to intel-family.h
      
       - Do not log spurious corrected MCEs on SKL too, due to an erratum
      
       - Clarify the path of paravirt ops patches upstream
      
       - Add an optimization to avoid writing out AMX components to sigframes
         when former are in init state
      
      * tag 'x86_urgent_for_v5.16_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/cpu: Add Raptor Lake to Intel family
        x86/mce: Add errata workaround for Skylake SKX37
        MAINTAINERS: Add some information to PARAVIRT_OPS entry
        x86/fpu: Optimize out sigframe xfeatures when in init state
      1654e95e
    • Linus Torvalds's avatar
      Merge tag 'perf-tools-for-v5.16-2021-11-13' of... · 35c8fad4
      Linus Torvalds authored
      Merge tag 'perf-tools-for-v5.16-2021-11-13' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux
      
      Pull more perf tools updates from Arnaldo Carvalho de Melo:
       "Hardware tracing:
      
         - ARM:
            * Print the size of the buffer size consistently in hexadecimal in
              ARM Coresight.
            * Add Coresight snapshot mode support.
            * Update --switch-events docs in 'perf record'.
            * Support hardware-based PID tracing.
            * Track task context switch for cpu-mode events.
      
         - Vendor events:
            * Add metric events JSON file for power10 platform
      
        perf test:
      
         - Get 'perf test' unit tests closer to kunit.
      
         - Topology tests improvements.
      
         - Remove bashisms from some tests.
      
        perf bench:
      
         - Fix memory leak of perf_cpu_map__new() in the futex benchmarks.
      
        libbpf:
      
         - Add some more weak libbpf functions o allow building with the
           libbpf versions, old ones, present in distros.
      
        libbeauty:
      
         - Translate [gs]setsockopt 'level' argument integer values to
           strings.
      
        tools headers UAPI:
      
         - Sync futex_waitv, arch prctl, sound, i195_drm and msr-index files
           with the kernel sources.
      
        Documentation:
      
         - Add documentation to 'struct symbol'.
      
         - Synchronize the definition of enum perf_hw_id with code in
           tools/perf/design.txt"
      
      * tag 'perf-tools-for-v5.16-2021-11-13' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux: (67 commits)
        perf tests: Remove bash constructs from stat_all_pmu.sh
        perf tests: Remove bash construct from record+zstd_comp_decomp.sh
        perf test: Remove bash construct from stat_bpf_counters.sh test
        perf bench futex: Fix memory leak of perf_cpu_map__new()
        tools arch x86: Sync the msr-index.h copy with the kernel sources
        tools headers UAPI: Sync drm/i915_drm.h with the kernel sources
        tools headers UAPI: Sync sound/asound.h with the kernel sources
        tools headers UAPI: Sync linux/prctl.h with the kernel sources
        tools headers UAPI: Sync arch prctl headers with the kernel sources
        perf tools: Add more weak libbpf functions
        perf bpf: Avoid memory leak from perf_env__insert_btf()
        perf symbols: Factor out annotation init/exit
        perf symbols: Bit pack to save a byte
        perf symbols: Add documentation to 'struct symbol'
        tools headers UAPI: Sync files changed by new futex_waitv syscall
        perf test bpf: Use ARRAY_CHECK() instead of ad-hoc equivalent, addressing array_size.cocci warning
        perf arm-spe: Support hardware-based PID tracing
        perf arm-spe: Save context ID in record
        perf arm-spe: Update --switch-events docs in 'perf record'
        perf arm-spe: Track task context switch for cpu-mode events
        ...
      35c8fad4