1. 27 Jan, 2023 1 commit
    • Dylan Yudaken's avatar
      io_uring: always prep_async for drain requests · ef5c600a
      Dylan Yudaken authored
      Drain requests all go through io_drain_req, which has a quick exit in case
      there is nothing pending (ie the drain is not useful). In that case it can
      run the issue the request immediately.
      
      However for safety it queues it through task work.
      The problem is that in this case the request is run asynchronously, but
      the async work has not been prepared through io_req_prep_async.
      
      This has not been a problem up to now, as the task work always would run
      before returning to userspace, and so the user would not have a chance to
      race with it.
      
      However - with IORING_SETUP_DEFER_TASKRUN - this is no longer the case and
      the work might be defered, giving userspace a chance to change data being
      referred to in the request.
      
      Instead _always_ prep_async for drain requests, which is simpler anyway
      and removes this issue.
      
      Cc: stable@vger.kernel.org
      Fixes: c0e0d6ba ("io_uring: add IORING_SETUP_DEFER_TASKRUN")
      Signed-off-by: default avatarDylan Yudaken <dylany@meta.com>
      Link: https://lore.kernel.org/r/20230127105911.2420061-1-dylany@meta.comSigned-off-by: default avatarJens Axboe <axboe@kernel.dk>
      ef5c600a
  2. 23 Jan, 2023 1 commit
    • Jens Axboe's avatar
      io_uring/net: cache provided buffer group value for multishot receives · b00c51ef
      Jens Axboe authored
      If we're using ring provided buffers with multishot receive, and we end
      up doing an io-wq based issue at some points that also needs to select
      a buffer, we'll lose the initially assigned buffer group as
      io_ring_buffer_select() correctly clears the buffer group list as the
      issue isn't serialized by the ctx uring_lock. This is fine for normal
      receives as the request puts the buffer and finishes, but for multishot,
      we will re-arm and do further receives. On the next trigger for this
      multishot receive, the receive will try and pick from a buffer group
      whose value is the same as the buffer ID of the las receive. That is
      obviously incorrect, and will result in a premature -ENOUFS error for
      the receive even if we had available buffers in the correct group.
      
      Cache the buffer group value at prep time, so we can restore it for
      future receives. This only needs doing for the above mentioned case, but
      just do it by default to keep it easier to read.
      
      Cc: stable@vger.kernel.org
      Fixes: b3fdea6e ("io_uring: multishot recv")
      Fixes: 9bb66906 ("io_uring: support multishot in recvmsg")
      Cc: Dylan Yudaken <dylany@meta.com>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      b00c51ef
  3. 20 Jan, 2023 3 commits
  4. 19 Jan, 2023 2 commits
  5. 13 Jan, 2023 1 commit
    • Pavel Begunkov's avatar
      io_uring: lock overflowing for IOPOLL · 544d163d
      Pavel Begunkov authored
      syzbot reports an issue with overflow filling for IOPOLL:
      
      WARNING: CPU: 0 PID: 28 at io_uring/io_uring.c:734 io_cqring_event_overflow+0x1c0/0x230 io_uring/io_uring.c:734
      CPU: 0 PID: 28 Comm: kworker/u4:1 Not tainted 6.2.0-rc3-syzkaller-16369-g358a161a6a9e #0
      Workqueue: events_unbound io_ring_exit_work
      Call trace:
       io_cqring_event_overflow+0x1c0/0x230 io_uring/io_uring.c:734
       io_req_cqe_overflow+0x5c/0x70 io_uring/io_uring.c:773
       io_fill_cqe_req io_uring/io_uring.h:168 [inline]
       io_do_iopoll+0x474/0x62c io_uring/rw.c:1065
       io_iopoll_try_reap_events+0x6c/0x108 io_uring/io_uring.c:1513
       io_uring_try_cancel_requests+0x13c/0x258 io_uring/io_uring.c:3056
       io_ring_exit_work+0xec/0x390 io_uring/io_uring.c:2869
       process_one_work+0x2d8/0x504 kernel/workqueue.c:2289
       worker_thread+0x340/0x610 kernel/workqueue.c:2436
       kthread+0x12c/0x158 kernel/kthread.c:376
       ret_from_fork+0x10/0x20 arch/arm64/kernel/entry.S:863
      
      There is no real problem for normal IOPOLL as flush is also called with
      uring_lock taken, but it's getting more complicated for IOPOLL|SQPOLL,
      for which __io_cqring_overflow_flush() happens from the CQ waiting path.
      
      Reported-and-tested-by: syzbot+6805087452d72929404e@syzkaller.appspotmail.com
      Cc: stable@vger.kernel.org # 5.10+
      Signed-off-by: default avatarPavel Begunkov <asml.silence@gmail.com>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      544d163d
  6. 12 Jan, 2023 1 commit
    • Jens Axboe's avatar
      io_uring/poll: attempt request issue after racy poll wakeup · 6e5aedb9
      Jens Axboe authored
      If we have multiple requests waiting on the same target poll waitqueue,
      then it's quite possible to get a request triggered and get disappointed
      in not being able to make any progress with it. If we race in doing so,
      we'll potentially leave the poll request on the internal tables, but
      removed from the waitqueue. That means that any subsequent trigger of
      the poll waitqueue will not kick that request into action, causing an
      application to potentially wait for completion of a request that will
      never happen.
      
      Fix this by adding a new poll return state, IOU_POLL_REISSUE. Rather
      than have complicated logic for how to re-arm a given type of request,
      just punt it for a reissue.
      
      While in there, move the 'ret' variable to the only section where it
      gets used. This avoids confusion the scope of it.
      
      Cc: stable@vger.kernel.org
      Fixes: eb0089d6 ("io_uring: single shot poll removal optimisation")
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      6e5aedb9
  7. 10 Jan, 2023 1 commit
  8. 09 Jan, 2023 1 commit
  9. 08 Jan, 2023 1 commit
    • Jens Axboe's avatar
      io_uring/io-wq: only free worker if it was allocated for creation · e6db6f93
      Jens Axboe authored
      We have two types of task_work based creation, one is using an existing
      worker to setup a new one (eg when going to sleep and we have no free
      workers), and the other is allocating a new worker. Only the latter
      should be freed when we cancel task_work creation for a new worker.
      
      Fixes: af82425c ("io_uring/io-wq: free worker if task_work creation is canceled")
      Reported-by: syzbot+d56ec896af3637bdb7e4@syzkaller.appspotmail.com
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      e6db6f93
  10. 05 Jan, 2023 1 commit
  11. 04 Jan, 2023 3 commits
  12. 02 Jan, 2023 1 commit
  13. 27 Dec, 2022 1 commit
  14. 23 Dec, 2022 1 commit
  15. 21 Dec, 2022 2 commits
  16. 19 Dec, 2022 3 commits
  17. 18 Dec, 2022 1 commit
    • Jens Axboe's avatar
      io_uring: include task_work run after scheduling in wait for events · 35d90f95
      Jens Axboe authored
      It's quite possible that we got woken up because task_work was queued,
      and we need to process this task_work to generate the events waited for.
      If we return to the wait loop without running task_work, we'll end up
      adding the task to the waitqueue again, only to call
      io_cqring_wait_schedule() again which will run the task_work. This is
      less efficient than it could be, as it requires adding to the cq_wait
      queue again. It also triggers the wakeup path for completions as
      cq_wait is now non-empty with the task itself, and it'll require another
      lock grab and deletion to remove ourselves from the waitqueue.
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      35d90f95
  18. 17 Dec, 2022 1 commit
  19. 15 Dec, 2022 2 commits
  20. 14 Dec, 2022 4 commits
    • Pavel Begunkov's avatar
      e5f30f6f
    • Pavel Begunkov's avatar
      io_uring: revise completion_lock locking · 6971253f
      Pavel Begunkov authored
      io_kill_timeouts() doesn't post any events but queues everything to
      task_work. Locking there is needed for protecting linked requests
      traversing, we should grab completion_lock directly instead of using
      io_cq_[un]lock helpers. Same goes for __io_req_find_next_prep().
      Signed-off-by: default avatarPavel Begunkov <asml.silence@gmail.com>
      Link: https://lore.kernel.org/r/88e75d481a65dc295cb59722bb1cf76402d1c06b.1670002973.git.asml.silence@gmail.comSigned-off-by: default avatarJens Axboe <axboe@kernel.dk>
      6971253f
    • Pavel Begunkov's avatar
      io_uring: protect cq_timeouts with timeout_lock · ea011ee1
      Pavel Begunkov authored
      Read cq_timeouts in io_flush_timeouts() only after taking the
      timeout_lock, as it's protected by it. There are many places where we
      also grab ->completion_lock, but for instance io_timeout_fn() doesn't
      and still modifies cq_timeouts.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarPavel Begunkov <asml.silence@gmail.com>
      Link: https://lore.kernel.org/r/9c79544dd6cf5c4018cb1bab99cf481a93ea46ef.1670002973.git.asml.silence@gmail.comSigned-off-by: default avatarJens Axboe <axboe@kernel.dk>
      ea011ee1
    • Linus Torvalds's avatar
      Merge tag 'mm-stable-2022-12-13' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm · e2ca6ba6
      Linus Torvalds authored
      Pull MM updates from Andrew Morton:
      
       - More userfaultfs work from Peter Xu
      
       - Several convert-to-folios series from Sidhartha Kumar and Huang Ying
      
       - Some filemap cleanups from Vishal Moola
      
       - David Hildenbrand added the ability to selftest anon memory COW
         handling
      
       - Some cpuset simplifications from Liu Shixin
      
       - Addition of vmalloc tracing support by Uladzislau Rezki
      
       - Some pagecache folioifications and simplifications from Matthew
         Wilcox
      
       - A pagemap cleanup from Kefeng Wang: we have VM_ACCESS_FLAGS, so use
         it
      
       - Miguel Ojeda contributed some cleanups for our use of the
         __no_sanitize_thread__ gcc keyword.
      
         This series should have been in the non-MM tree, my bad
      
       - Naoya Horiguchi improved the interaction between memory poisoning and
         memory section removal for huge pages
      
       - DAMON cleanups and tuneups from SeongJae Park
      
       - Tony Luck fixed the handling of COW faults against poisoned pages
      
       - Peter Xu utilized the PTE marker code for handling swapin errors
      
       - Hugh Dickins reworked compound page mapcount handling, simplifying it
         and making it more efficient
      
       - Removal of the autonuma savedwrite infrastructure from Nadav Amit and
         David Hildenbrand
      
       - zram support for multiple compression streams from Sergey Senozhatsky
      
       - David Hildenbrand reworked the GUP code's R/O long-term pinning so
         that drivers no longer need to use the FOLL_FORCE workaround which
         didn't work very well anyway
      
       - Mel Gorman altered the page allocator so that local IRQs can remnain
         enabled during per-cpu page allocations
      
       - Vishal Moola removed the try_to_release_page() wrapper
      
       - Stefan Roesch added some per-BDI sysfs tunables which are used to
         prevent network block devices from dirtying excessive amounts of
         pagecache
      
       - David Hildenbrand did some cleanup and repair work on KSM COW
         breaking
      
       - Nhat Pham and Johannes Weiner have implemented writeback in zswap's
         zsmalloc backend
      
       - Brian Foster has fixed a longstanding corner-case oddity in
         file[map]_write_and_wait_range()
      
       - sparse-vmemmap changes for MIPS, LoongArch and NIOS2 from Feiyang
         Chen
      
       - Shiyang Ruan has done some work on fsdax, to make its reflink mode
         work better under xfstests. Better, but still not perfect
      
       - Christoph Hellwig has removed the .writepage() method from several
         filesystems. They only need .writepages()
      
       - Yosry Ahmed wrote a series which fixes the memcg reclaim target
         beancounting
      
       - David Hildenbrand has fixed some of our MM selftests for 32-bit
         machines
      
       - Many singleton patches, as usual
      
      * tag 'mm-stable-2022-12-13' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm: (313 commits)
        mm/hugetlb: set head flag before setting compound_order in __prep_compound_gigantic_folio
        mm: mmu_gather: allow more than one batch of delayed rmaps
        mm: fix typo in struct pglist_data code comment
        kmsan: fix memcpy tests
        mm: add cond_resched() in swapin_walk_pmd_entry()
        mm: do not show fs mm pc for VM_LOCKONFAULT pages
        selftests/vm: ksm_functional_tests: fixes for 32bit
        selftests/vm: cow: fix compile warning on 32bit
        selftests/vm: madv_populate: fix missing MADV_POPULATE_(READ|WRITE) definitions
        mm/gup_test: fix PIN_LONGTERM_TEST_READ with highmem
        mm,thp,rmap: fix races between updates of subpages_mapcount
        mm: memcg: fix swapcached stat accounting
        mm: add nodes= arg to memory.reclaim
        mm: disable top-tier fallback to reclaim on proactive reclaim
        selftests: cgroup: make sure reclaim target memcg is unprotected
        selftests: cgroup: refactor proactive reclaim code to reclaim_until()
        mm: memcg: fix stale protection of reclaim target memcg
        mm/mmap: properly unaccount memory on mas_preallocate() failure
        omfs: remove ->writepage
        jfs: remove ->writepage
        ...
      e2ca6ba6
  21. 13 Dec, 2022 8 commits
    • Linus Torvalds's avatar
      Merge tag 'net-next-6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next · 7e68dd7d
      Linus Torvalds authored
      Pull networking updates from Paolo Abeni:
       "Core:
      
         - Allow live renaming when an interface is up
      
         - Add retpoline wrappers for tc, improving considerably the
           performances of complex queue discipline configurations
      
         - Add inet drop monitor support
      
         - A few GRO performance improvements
      
         - Add infrastructure for atomic dev stats, addressing long standing
           data races
      
         - De-duplicate common code between OVS and conntrack offloading
           infrastructure
      
         - A bunch of UBSAN_BOUNDS/FORTIFY_SOURCE improvements
      
         - Netfilter: introduce packet parser for tunneled packets
      
         - Replace IPVS timer-based estimators with kthreads to scale up the
           workload with the number of available CPUs
      
         - Add the helper support for connection-tracking OVS offload
      
        BPF:
      
         - Support for user defined BPF objects: the use case is to allocate
           own objects, build own object hierarchies and use the building
           blocks to build own data structures flexibly, for example, linked
           lists in BPF
      
         - Make cgroup local storage available to non-cgroup attached BPF
           programs
      
         - Avoid unnecessary deadlock detection and failures wrt BPF task
           storage helpers
      
         - A relevant bunch of BPF verifier fixes and improvements
      
         - Veristat tool improvements to support custom filtering, sorting,
           and replay of results
      
         - Add LLVM disassembler as default library for dumping JITed code
      
         - Lots of new BPF documentation for various BPF maps
      
         - Add bpf_rcu_read_{,un}lock() support for sleepable programs
      
         - Add RCU grace period chaining to BPF to wait for the completion of
           access from both sleepable and non-sleepable BPF programs
      
         - Add support storing struct task_struct objects as kptrs in maps
      
         - Improve helper UAPI by explicitly defining BPF_FUNC_xxx integer
           values
      
         - Add libbpf *_opts API-variants for bpf_*_get_fd_by_id() functions
      
        Protocols:
      
         - TCP: implement Protective Load Balancing across switch links
      
         - TCP: allow dynamically disabling TCP-MD5 static key, reverting back
           to fast[er]-path
      
         - UDP: Introduce optional per-netns hash lookup table
      
         - IPv6: simplify and cleanup sockets disposal
      
         - Netlink: support different type policies for each generic netlink
           operation
      
         - MPTCP: add MSG_FASTOPEN and FastOpen listener side support
      
         - MPTCP: add netlink notification support for listener sockets events
      
         - SCTP: add VRF support, allowing sctp sockets binding to VRF devices
      
         - Add bridging MAC Authentication Bypass (MAB) support
      
         - Extensions for Ethernet VPN bridging implementation to better
           support multicast scenarios
      
         - More work for Wi-Fi 7 support, comprising conversion of all the
           existing drivers to internal TX queue usage
      
         - IPSec: introduce a new offload type (packet offload) allowing
           complete header processing and crypto offloading
      
         - IPSec: extended ack support for more descriptive XFRM error
           reporting
      
         - RXRPC: increase SACK table size and move processing into a
           per-local endpoint kernel thread, reducing considerably the
           required locking
      
         - IEEE 802154: synchronous send frame and extended filtering support,
           initial support for scanning available 15.4 networks
      
         - Tun: bump the link speed from 10Mbps to 10Gbps
      
         - Tun/VirtioNet: implement UDP segmentation offload support
      
        Driver API:
      
         - PHY/SFP: improve power level switching between standard level 1 and
           the higher power levels
      
         - New API for netdev <-> devlink_port linkage
      
         - PTP: convert existing drivers to new frequency adjustment
           implementation
      
         - DSA: add support for rx offloading
      
         - Autoload DSA tagging driver when dynamically changing protocol
      
         - Add new PCP and APPTRUST attributes to Data Center Bridging
      
         - Add configuration support for 800Gbps link speed
      
         - Add devlink port function attribute to enable/disable RoCE and
           migratable
      
         - Extend devlink-rate to support strict prioriry and weighted fair
           queuing
      
         - Add devlink support to directly reading from region memory
      
         - New device tree helper to fetch MAC address from nvmem
      
         - New big TCP helper to simplify temporary header stripping
      
        New hardware / drivers:
      
         - Ethernet:
            - Marvel Octeon CNF95N and CN10KB Ethernet Switches
            - Marvel Prestera AC5X Ethernet Switch
            - WangXun 10 Gigabit NIC
            - Motorcomm yt8521 Gigabit Ethernet
            - Microchip ksz9563 Gigabit Ethernet Switch
            - Microsoft Azure Network Adapter
            - Linux Automation 10Base-T1L adapter
      
         - PHY:
            - Aquantia AQR112 and AQR412
            - Motorcomm YT8531S
      
         - PTP:
            - Orolia ART-CARD
      
         - WiFi:
            - MediaTek Wi-Fi 7 (802.11be) devices
            - RealTek rtw8821cu, rtw8822bu, rtw8822cu and rtw8723du USB
              devices
      
         - Bluetooth:
            - Broadcom BCM4377/4378/4387 Bluetooth chipsets
            - Realtek RTL8852BE and RTL8723DS
            - Cypress.CYW4373A0 WiFi + Bluetooth combo device
      
        Drivers:
      
         - CAN:
            - gs_usb: bus error reporting support
            - kvaser_usb: listen only and bus error reporting support
      
         - Ethernet NICs:
            - Intel (100G):
               - extend action skbedit to RX queue mapping
               - implement devlink-rate support
               - support direct read from memory
            - nVidia/Mellanox (mlx5):
               - SW steering improvements, increasing rules update rate
               - Support for enhanced events compression
               - extend H/W offload packet manipulation capabilities
               - implement IPSec packet offload mode
            - nVidia/Mellanox (mlx4):
               - better big TCP support
            - Netronome Ethernet NICs (nfp):
               - IPsec offload support
               - add support for multicast filter
            - Broadcom:
               - RSS and PTP support improvements
            - AMD/SolarFlare:
               - netlink extened ack improvements
               - add basic flower matches to offload, and related stats
            - Virtual NICs:
               - ibmvnic: introduce affinity hint support
            - small / embedded:
               - FreeScale fec: add initial XDP support
               - Marvel mv643xx_eth: support MII/GMII/RGMII modes for Kirkwood
               - TI am65-cpsw: add suspend/resume support
               - Mediatek MT7986: add RX wireless wthernet dispatch support
               - Realtek 8169: enable GRO software interrupt coalescing per
                 default
      
         - Ethernet high-speed switches:
            - Microchip (sparx5):
               - add support for Sparx5 TC/flower H/W offload via VCAP
            - Mellanox mlxsw:
               - add 802.1X and MAC Authentication Bypass offload support
               - add ip6gre support
      
         - Embedded Ethernet switches:
            - Mediatek (mtk_eth_soc):
               - improve PCS implementation, add DSA untag support
               - enable flow offload support
            - Renesas:
               - add rswitch R-Car Gen4 gPTP support
            - Microchip (lan966x):
               - add full XDP support
               - add TC H/W offload via VCAP
               - enable PTP on bridge interfaces
            - Microchip (ksz8):
               - add MTU support for KSZ8 series
      
         - Qualcomm 802.11ax WiFi (ath11k):
            - support configuring channel dwell time during scan
      
         - MediaTek WiFi (mt76):
            - enable Wireless Ethernet Dispatch (WED) offload support
            - add ack signal support
            - enable coredump support
            - remain_on_channel support
      
         - Intel WiFi (iwlwifi):
            - enable Wi-Fi 7 Extremely High Throughput (EHT) PHY capabilities
            - 320 MHz channels support
      
         - RealTek WiFi (rtw89):
            - new dynamic header firmware format support
            - wake-over-WLAN support"
      
      * tag 'net-next-6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next: (2002 commits)
        ipvs: fix type warning in do_div() on 32 bit
        net: lan966x: Remove a useless test in lan966x_ptp_add_trap()
        net: ipa: add IPA v4.7 support
        dt-bindings: net: qcom,ipa: Add SM6350 compatible
        bnxt: Use generic HBH removal helper in tx path
        IPv6/GRO: generic helper to remove temporary HBH/jumbo header in driver
        selftests: forwarding: Add bridge MDB test
        selftests: forwarding: Rename bridge_mdb test
        bridge: mcast: Support replacement of MDB port group entries
        bridge: mcast: Allow user space to specify MDB entry routing protocol
        bridge: mcast: Allow user space to add (*, G) with a source list and filter mode
        bridge: mcast: Add support for (*, G) with a source list and filter mode
        bridge: mcast: Avoid arming group timer when (S, G) corresponds to a source
        bridge: mcast: Add a flag for user installed source entries
        bridge: mcast: Expose __br_multicast_del_group_src()
        bridge: mcast: Expose br_multicast_new_group_src()
        bridge: mcast: Add a centralized error path
        bridge: mcast: Place netlink policy before validation functions
        bridge: mcast: Split (*, G) and (S, G) addition into different functions
        bridge: mcast: Do not derive entry type from its filter mode
        ...
      7e68dd7d
    • Linus Torvalds's avatar
      Merge tag 'xtensa-20221213' of https://github.com/jcmvbkbc/linux-xtensa · 1ca06f1c
      Linus Torvalds authored
      Pull Xtensa updates from Max Filippov:
      
       - fix kernel build with gcc-13
      
       - various minor fixes
      
      * tag 'xtensa-20221213' of https://github.com/jcmvbkbc/linux-xtensa:
        xtensa: add __umulsidi3 helper
        xtensa: update config files
        MAINTAINERS: update the 'T:' entry for xtensa
      1ca06f1c
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm · 4cb1fc6f
      Linus Torvalds authored
      Pull ARM updates from Russell King:
      
       - update unwinder to cope with module PLTs
      
       - enable UBSAN on ARM
      
       - improve kernel fault message
      
       - update UEFI runtime page tables dump
      
       - avoid clang's __aeabi_uldivmod generated in NWFPE code
      
       - disable FIQs on CPU shutdown paths
      
       - update XOR register usage
      
       - a number of build updates (using .arch, thread pointer, removal of
         lazy evaluation in Makefile)
      
       - conversion of stacktrace code to stackwalk
      
       - findbit assembly updates
      
       - hwcap feature updates for ARMv8 CPUs
      
       - instruction dump updates for big-endian platforms
      
       - support for function error injection
      
      * tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm: (31 commits)
        ARM: 9279/1: support function error injection
        ARM: 9277/1: Make the dumped instructions are consistent with the disassembled ones
        ARM: 9276/1: Refactor dump_instr()
        ARM: 9275/1: Drop '-mthumb' from AFLAGS_ISA
        ARM: 9274/1: Add hwcap for Speculative Store Bypassing Safe
        ARM: 9273/1: Add hwcap for Speculation Barrier(SB)
        ARM: 9272/1: vfp: Add hwcap for FEAT_AA32I8MM
        ARM: 9271/1: vfp: Add hwcap for FEAT_AA32BF16
        ARM: 9270/1: vfp: Add hwcap for FEAT_FHM
        ARM: 9269/1: vfp: Add hwcap for FEAT_DotProd
        ARM: 9268/1: vfp: Add hwcap FPHP and ASIMDHP for FEAT_FP16
        ARM: 9267/1: Define Armv8 registers in AArch32 state
        ARM: findbit: add unwinder information
        ARM: findbit: operate by words
        ARM: findbit: convert to macros
        ARM: findbit: provide more efficient ARMv7 implementation
        ARM: findbit: document ARMv5 bit offset calculation
        ARM: 9259/1: stacktrace: Convert stacktrace to generic ARCH_STACKWALK
        ARM: 9258/1: stacktrace: Make stack walk callback consistent with generic code
        ARM: 9265/1: pass -march= only to compiler
        ...
      4cb1fc6f
    • Linus Torvalds's avatar
      Merge tag 'x86_sev_for_v6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 740afa4d
      Linus Torvalds authored
      Pull x86 sev updates from Borislav Petkov:
      
       - Two minor fixes to the sev-guest driver
      
      * tag 'x86_sev_for_v6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        virt/sev-guest: Add a MODULE_ALIAS
        virt/sev-guest: Remove unnecessary free in init_crypto()
      740afa4d
    • Linus Torvalds's avatar
      Merge tag 'x86_paravirt_for_v6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 82c72902
      Linus Torvalds authored
      Pull x86 paravirt update from Borislav Petkov:
      
       - Simplify paravirt patching machinery by removing the now unused
         clobber mask
      
      * tag 'x86_paravirt_for_v6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/paravirt: Remove clobber bitmask from .parainstructions
      82c72902
    • Linus Torvalds's avatar
      Merge tag 'x86_microcode_for_v6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · a70210f4
      Linus Torvalds authored
      Pull x86 microcode and IFS updates from Borislav Petkov:
       "The IFS (In-Field Scan) stuff goes through tip because the IFS driver
        uses the same structures and similar functionality as the microcode
        loader and it made sense to route it all through this branch so that
        there are no conflicts.
      
         - Add support for multiple testing sequences to the Intel In-Field
           Scan driver in order to be able to run multiple different test
           patterns. Rework things and remove the BROKEN dependency so that
           the driver can be enabled (Jithu Joseph)
      
         - Remove the subsys interface usage in the microcode loader because
           it is not really needed
      
         - A couple of smaller fixes and cleanups"
      
      * tag 'x86_microcode_for_v6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (24 commits)
        x86/microcode/intel: Do not retry microcode reloading on the APs
        x86/microcode/intel: Do not print microcode revision and processor flags
        platform/x86/intel/ifs: Add missing kernel-doc entry
        Revert "platform/x86/intel/ifs: Mark as BROKEN"
        Documentation/ABI: Update IFS ABI doc
        platform/x86/intel/ifs: Add current_batch sysfs entry
        platform/x86/intel/ifs: Remove reload sysfs entry
        platform/x86/intel/ifs: Add metadata validation
        platform/x86/intel/ifs: Use generic microcode headers and functions
        platform/x86/intel/ifs: Add metadata support
        x86/microcode/intel: Use a reserved field for metasize
        x86/microcode/intel: Add hdr_type to intel_microcode_sanity_check()
        x86/microcode/intel: Reuse microcode_sanity_check()
        x86/microcode/intel: Use appropriate type in microcode_sanity_check()
        x86/microcode/intel: Reuse find_matching_signature()
        platform/x86/intel/ifs: Remove memory allocation from load path
        platform/x86/intel/ifs: Remove image loading during init
        platform/x86/intel/ifs: Return a more appropriate error code
        platform/x86/intel/ifs: Remove unused selection
        x86/microcode: Drop struct ucode_cpu_info.valid
        ...
      a70210f4
    • Linus Torvalds's avatar
      Merge tag 'x86_cpu_for_v6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 3ef3ace4
      Linus Torvalds authored
      Pull x86 cpu updates from Borislav Petkov:
      
       - Split MTRR and PAT init code to accomodate at least Xen PV and TDX
         guests which do not get MTRRs exposed but only PAT. (TDX guests do
         not support the cache disabling dance when setting up MTRRs so they
         fall under the same category)
      
         This is a cleanup work to remove all the ugly workarounds for such
         guests and init things separately (Juergen Gross)
      
       - Add two new Intel CPUs to the list of CPUs with "normal" Energy
         Performance Bias, leading to power savings
      
       - Do not do bus master arbitration in C3 (ARB_DISABLE) on modern
         Centaur CPUs
      
      * tag 'x86_cpu_for_v6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (26 commits)
        x86/mtrr: Make message for disabled MTRRs more descriptive
        x86/pat: Handle TDX guest PAT initialization
        x86/cpuid: Carve out all CPUID functionality
        x86/cpu: Switch to cpu_feature_enabled() for X86_FEATURE_XENPV
        x86/cpu: Remove X86_FEATURE_XENPV usage in setup_cpu_entry_area()
        x86/cpu: Drop 32-bit Xen PV guest code in update_task_stack()
        x86/cpu: Remove unneeded 64-bit dependency in arch_enter_from_user_mode()
        x86/cpufeatures: Add X86_FEATURE_XENPV to disabled-features.h
        x86/acpi/cstate: Optimize ARB_DISABLE on Centaur CPUs
        x86/mtrr: Simplify mtrr_ops initialization
        x86/cacheinfo: Switch cache_ap_init() to hotplug callback
        x86: Decouple PAT and MTRR handling
        x86/mtrr: Add a stop_machine() handler calling only cache_cpu_init()
        x86/mtrr: Let cache_aps_delayed_init replace mtrr_aps_delayed_init
        x86/mtrr: Get rid of __mtrr_enabled bool
        x86/mtrr: Simplify mtrr_bp_init()
        x86/mtrr: Remove set_all callback from struct mtrr_ops
        x86/mtrr: Disentangle MTRR init from PAT init
        x86/mtrr: Move cache control code to cacheinfo.c
        x86/mtrr: Split MTRR-specific handling from cache dis/enabling
        ...
      3ef3ace4
    • Linus Torvalds's avatar
      Merge tag 'x86_boot_for_v6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 4eb77fa1
      Linus Torvalds authored
      Pull x86 boot updates from Borislav Petkov:
       "A  of early boot cleanups and fixes.
      
         - Do some spring cleaning to the compressed boot code by moving the
           EFI mixed-mode code to a separate compilation unit, the AMD memory
           encryption early code where it belongs and fixing up build
           dependencies. Make the deprecated EFI handover protocol optional
           with the goal of removing it at some point (Ard Biesheuvel)
      
         - Skip realmode init code on Xen PV guests as it is not needed there
      
         - Remove an old 32-bit PIC code compiler workaround"
      
      * tag 'x86_boot_for_v6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/boot: Remove x86_32 PIC using %ebx workaround
        x86/boot: Skip realmode init code when running as Xen PV guest
        x86/efi: Make the deprecated EFI handover protocol optional
        x86/boot/compressed: Only build mem_encrypt.S if AMD_MEM_ENCRYPT=y
        x86/boot/compressed: Adhere to calling convention in get_sev_encryption_bit()
        x86/boot/compressed: Move startup32_check_sev_cbit() out of head_64.S
        x86/boot/compressed: Move startup32_check_sev_cbit() into .text
        x86/boot/compressed: Move startup32_load_idt() out of head_64.S
        x86/boot/compressed: Move startup32_load_idt() into .text section
        x86/boot/compressed: Pull global variable reference into startup32_load_idt()
        x86/boot/compressed: Avoid touching ECX in startup32_set_idt_entry()
        x86/boot/compressed: Simplify IDT/GDT preserve/restore in the EFI thunk
        x86/boot/compressed, efi: Merge multiple definitions of image_offset into one
        x86/boot/compressed: Move efi32_pe_entry() out of head_64.S
        x86/boot/compressed: Move efi32_entry out of head_64.S
        x86/boot/compressed: Move efi32_pe_entry into .text section
        x86/boot/compressed: Move bootargs parsing out of 32-bit startup code
        x86/boot/compressed: Move 32-bit entrypoint code into .text section
        x86/boot/compressed: Rename efi_thunk_64.S to efi-mixed.S
      4eb77fa1