Skip to contentSkip to conversation

Linux 5.12.10

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Jun 10, 2021 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 5.12.10 kernel.

All users of the 5.12 kernel series must upgrade.

The updated 5.12.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.12.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary

thanks,

greg k-h

------------

 Makefile                                                        |    2 
 arch/arm/boot/dts/imx6dl-yapp4-common.dtsi                      |    6 
 arch/arm/boot/dts/imx6q-dhcom-som.dtsi                          |   12 
 arch/arm/boot/dts/imx6qdl-emcon-avari.dtsi                      |    2 
 arch/arm/boot/dts/imx7d-meerkat96.dts                           |    2 
 arch/arm/boot/dts/imx7d-pico.dtsi                               |    2 
 arch/arm/mach-omap1/board-h2.c                                  |    4 
 arch/arm64/Kconfig.platforms                                    |    1 
 arch/arm64/boot/dts/freescale/fsl-ls1028a-kontron-sl28-var1.dts |    3 
 arch/arm64/boot/dts/freescale/fsl-ls1028a-kontron-sl28-var4.dts |    5 
 arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi                  |    4 
 arch/arm64/boot/dts/freescale/imx8mq-zii-ultra-rmb3.dts         |   10 
 arch/arm64/boot/dts/freescale/imx8mq-zii-ultra.dtsi             |   23 -
 arch/arm64/boot/dts/ti/k3-j7200-main.dtsi                       |    2 
 arch/arm64/include/asm/kvm_asm.h                                |    1 
 arch/arm64/kvm/arm.c                                            |   20 -
 arch/arm64/kvm/hyp/exception.c                                  |    4 
 arch/arm64/kvm/hyp/nvhe/hyp-main.c                              |    8 
 arch/mips/mm/cache.c                                            |   30 -
 arch/powerpc/kernel/kprobes.c                                   |    4 
 arch/powerpc/kvm/book3s_hv.c                                    |    1 
 arch/powerpc/kvm/book3s_hv_rmhandlers.S                         |    7 
 arch/riscv/kernel/vdso/Makefile                                 |    4 
 arch/x86/include/asm/apic.h                                     |    1 
 arch/x86/include/asm/disabled-features.h                        |    7 
 arch/x86/include/asm/fpu/api.h                                  |    6 
 arch/x86/include/asm/fpu/internal.h                             |    7 
 arch/x86/include/asm/kvm_para.h                                 |   10 
 arch/x86/include/asm/thermal.h                                  |    4 
 arch/x86/kernel/apic/apic.c                                     |    1 
 arch/x86/kernel/apic/vector.c                                   |   20 +
 arch/x86/kernel/fpu/xstate.c                                    |   57 ---
 arch/x86/kernel/kvm.c                                           |   92 +++-
 arch/x86/kernel/kvmclock.c                                      |   26 -
 arch/x86/kernel/setup.c                                         |    9 
 arch/x86/kvm/svm/svm.c                                          |    8 
 arch/x86/mm/fault.c                                             |    4 
 arch/x86/mm/mem_encrypt_identity.c                              |   11 
 drivers/acpi/acpica/utdelete.c                                  |    8 
 drivers/bus/ti-sysc.c                                           |   57 ++-
 drivers/dma/idxd/init.c                                         |    4 
 drivers/firmware/efi/cper.c                                     |    4 
 drivers/firmware/efi/fdtparams.c                                |    3 
 drivers/firmware/efi/libstub/file.c                             |    2 
 drivers/firmware/efi/memattr.c                                  |    5 
 drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c                         |   16 
 drivers/gpu/drm/amd/amdgpu/amdgpu_display.c                     |    1 
 drivers/gpu/drm/amd/amdgpu/jpeg_v2_5.c                          |    4 
 drivers/gpu/drm/amd/amdgpu/jpeg_v3_0.c                          |    4 
 drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c                           |    1 
 drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c                           |    5 
 drivers/gpu/drm/i915/selftests/i915_request.c                   |    4 
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c                         |    3 
 drivers/gpu/drm/msm/disp/dpu1/dpu_mdss.c                        |   51 --
 drivers/hid/amd-sfh-hid/amd_sfh_client.c                        |    1 
 drivers/hid/hid-logitech-hidpp.c                                |    1 
 drivers/hid/hid-magicmouse.c                                    |    2 
 drivers/hid/hid-multitouch.c                                    |   10 
 drivers/hid/i2c-hid/i2c-hid-core.c                              |   13 
 drivers/hid/usbhid/hid-pidff.c                                  |    1 
 drivers/hwmon/dell-smm-hwmon.c                                  |    4 
 drivers/hwmon/pmbus/isl68137.c                                  |    4 
 drivers/i2c/busses/i2c-qcom-geni.c                              |   21 +
 drivers/net/ethernet/chelsio/cxgb4/cxgb4.h                      |    2 
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c                 |    4 
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c            |   14 
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_mqprio.c            |    9 
 drivers/net/ethernet/chelsio/cxgb4/sge.c                        |    6 
 drivers/net/ethernet/intel/i40e/i40e_txrx.c                     |    7 
 drivers/net/ethernet/intel/i40e/i40e_xsk.c                      |   15 
 drivers/net/ethernet/intel/ice/ice.h                            |    8 
 drivers/net/ethernet/intel/ice/ice_ethtool.c                    |   51 --
 drivers/net/ethernet/intel/ice/ice_hw_autogen.h                 |    1 
 drivers/net/ethernet/intel/ice/ice_lib.c                        |   12 
 drivers/net/ethernet/intel/ice/ice_txrx.c                       |   17 
 drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c                |   19 -
 drivers/net/ethernet/intel/ice/ice_xsk.c                        |   19 -
 drivers/net/ethernet/intel/igb/igb.h                            |    2 
 drivers/net/ethernet/intel/igb/igb_main.c                       |   55 +-
 drivers/net/ethernet/intel/igb/igb_ptp.c                        |   23 -
 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c                   |   16 
 drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c                    |   21 -
 drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c               |    3 
 drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c            |    5 
 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c                 |    9 
 drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c      |    3 
 drivers/net/ethernet/mellanox/mlx5/core/fw_reset.c              |    3 
 drivers/net/ethernet/mellanox/mlx5/core/lib/fs_chains.c         |    2 
 drivers/net/ethernet/mellanox/mlx5/core/lib/fs_chains.h         |    5 
 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_fw.c        |    3 
 drivers/net/wireguard/Makefile                                  |    3 
 drivers/net/wireguard/allowedips.c                              |  189 +++++-----
 drivers/net/wireguard/allowedips.h                              |   14 
 drivers/net/wireguard/main.c                                    |   17 
 drivers/net/wireguard/peer.c                                    |   27 +
 drivers/net/wireguard/peer.h                                    |    3 
 drivers/net/wireguard/selftest/allowedips.c                     |  165 ++++----
 drivers/net/wireguard/socket.c                                  |    2 
 drivers/net/wireless/mediatek/mt76/mt76x0/pci.c                 |   81 ++++
 drivers/net/wireless/mediatek/mt76/mt7921/mcu.c                 |   24 -
 drivers/net/xen-netback/interface.c                             |    6 
 drivers/nvme/host/rdma.c                                        |    5 
 drivers/nvme/target/core.c                                      |   33 -
 drivers/scsi/lpfc/lpfc_sli.c                                    |    4 
 drivers/tee/optee/call.c                                        |    6 
 drivers/tee/optee/optee_msg.h                                   |    6 
 drivers/thermal/intel/therm_throt.c                             |   15 
 drivers/tty/serial/stm32-usart.c                                |   22 -
 drivers/usb/dwc2/core_intr.c                                    |    4 
 drivers/vfio/pci/Kconfig                                        |    1 
 drivers/vfio/pci/vfio_pci_config.c                              |    2 
 drivers/vfio/platform/vfio_platform_common.c                    |    2 
 fs/btrfs/extent-tree.c                                          |    2 
 fs/btrfs/file-item.c                                            |  108 ++++-
 fs/btrfs/inode.c                                                |   19 -
 fs/btrfs/reflink.c                                              |   38 +-
 fs/btrfs/tree-log.c                                             |   21 -
 fs/ext4/extents.c                                               |   43 +-
 fs/ext4/fast_commit.c                                           |  170 ++++----
 fs/ext4/fast_commit.h                                           |   19 -
 fs/ext4/ialloc.c                                                |    6 
 fs/ext4/mballoc.c                                               |    2 
 fs/ext4/super.c                                                 |   11 
 fs/gfs2/glock.c                                                 |    2 
 fs/io_uring.c                                                   |   66 ++-
 fs/ocfs2/file.c                                                 |   55 ++
 include/linux/mlx5/mlx5_ifc.h                                   |    2 
 include/linux/pgtable.h                                         |    8 
 include/linux/platform_data/ti-sysc.h                           |    1 
 include/net/caif/caif_dev.h                                     |    2 
 include/net/caif/cfcnfg.h                                       |    2 
 include/net/caif/cfserl.h                                       |    1 
 include/net/tls.h                                               |   10 
 init/main.c                                                     |    2 
 kernel/bpf/helpers.c                                            |    7 
 kernel/trace/bpf_trace.c                                        |   32 -
 mm/debug_vm_pgtable.c                                           |    4 
 mm/hugetlb.c                                                    |   14 
 mm/kfence/core.c                                                |   12 
 mm/memory.c                                                     |    4 
 mm/page_alloc.c                                                 |    2 
 net/bluetooth/hci_core.c                                        |    7 
 net/bluetooth/hci_sock.c                                        |    4 
 net/caif/caif_dev.c                                             |   13 
 net/caif/caif_usb.c                                             |   14 
 net/caif/cfcnfg.c                                               |   16 
 net/caif/cfserl.c                                               |    5 
 net/core/devlink.c                                              |    4 
 net/core/neighbour.c                                            |    1 
 net/core/sock.c                                                 |   16 
 net/dsa/tag_8021q.c                                             |    2 
 net/ieee802154/nl-mac.c                                         |    4 
 net/ieee802154/nl-phy.c                                         |    4 
 net/ipv6/route.c                                                |    8 
 net/mptcp/protocol.c                                            |   16 
 net/mptcp/subflow.c                                             |   76 ++--
 net/netfilter/ipvs/ip_vs_ctl.c                                  |    2 
 net/netfilter/nf_conntrack_proto.c                              |    2 
 net/netfilter/nf_tables_api.c                                   |    4 
 net/netfilter/nfnetlink_cthelper.c                              |    8 
 net/netfilter/nft_ct.c                                          |    2 
 net/nfc/llcp_sock.c                                             |    2 
 net/sched/act_ct.c                                              |   10 
 net/sched/sch_htb.c                                             |    8 
 net/tipc/bearer.c                                               |   94 +++-
 net/tls/tls_device.c                                            |   60 ++-
 net/tls/tls_device_fallback.c                                   |    7 
 net/tls/tls_main.c                                              |    1 
 samples/vfio-mdev/mdpy-fb.c                                     |   13 
 scripts/Makefile.modfinal                                       |    2 
 scripts/link-vmlinux.sh                                         |    2 
 sound/core/timer.c                                              |    3 
 sound/pci/hda/hda_codec.c                                       |    5 
 sound/pci/hda/patch_realtek.c                                   |    1 
 tools/perf/util/dwarf-aux.c                                     |    8 
 tools/perf/util/probe-finder.c                                  |    3 
 tools/testing/selftests/wireguard/netns.sh                      |    1 
 tools/testing/selftests/wireguard/qemu/kernel.config            |    1 
 178 files changed, 1653 insertions(+), 1055 deletions(-)

Ahelenia Ziemiańska (1):
HID: multitouch: require Finger field to mark Win8 reports as MT

Alexander Aring (1):
net: sock: fix in-kernel mark setting

Alexey Makhalov (1):
ext4: fix memory leak in ext4_fill_super

Ariel Levkovich (1):
net/sched: act_ct: Fix ct template allocation for zone 0

Armin Wolf (1):
hwmon: (dell-smm-hwmon) Fix index values

Arnd Bergmann (1):
HID: i2c-hid: fix format string mismatch

Aya Levin (1):
net/mlx5e: Fix incompatible casting

Basavaraj Natikar (1):
HID: amd_sfh: Fix memory leak in amd_sfh_work

Bob Peterson (1):
gfs2: fix scheduling while atomic bug in glocks

Borislav Petkov (2):
dmaengine: idxd: Use cpu_feature_enabled() x86/thermal: Fix LVT thermal setup for SMI delivery mode

Brett Creeley (2):
ice: Fix allowing VF to request more/less queues via virtchnl
ice: Fix VFR issues for AVF drivers that expect ATQLEN cleared

Carlos M (1):

      ALSA: hda: Fix for mute key LED for HP Pavilion 15-CK0xx

Changbin Du (1):
efi/fdt: fix panic when no valid fdt found

Coco Li (1):
ipv6: Fix KASAN: slab-out-of-bounds Read in fib6_nh_flush_exceptions

Dan Carpenter (1):
efi/libstub: prevent read overflow in find_file_option()

Daniel Borkmann (1):
bpf, lockdown, audit: Fix buggy SELinux lockdown permission checks

Dave Ertman (1):
ice: Allow all LLDP packets from PF to Tx

David Ahern (1):
neighbour: allow NUD_NOARP entries to be forced GCed

Ding Hui (1):
mm/page_alloc: fix counting of free pages after take off from buddy

Dmitry Baryshkov (1):
drm/msm/dpu: always use mdp device to scale bandwidth

Erik Kaneda (1):
ACPICA: Clean up context mutex during object deletion

Fabio Estevam (2):
ARM: dts: imx7d-meerkat96: Fix the 'tuning-step' property
ARM: dts: imx7d-pico: Fix the 'tuning-step' property

Filipe Manana (2):
btrfs: fix fsync failure and transaction abort after writes to prealloc extents
btrfs: fix deadlock when cloning inline extents and low on available space

Florian Westphal (1):
netfilter: conntrack: unregister ipv4 sockopts on error unwind

Geert Uytterhoeven (1):
ARM: dts: imx: emcon-avari: Fix nxp,pca8574 #gpio-cells

Gerald Schaefer (1):
mm/debug_vm_pgtable: fix alignment for pmd/pud_advanced_tests()

Grant Peltier (1):

      hwmon: (pmbus/isl68137) remove READ_TEMPERATURE_3 for RAA228228

Greg Kroah-Hartman (1):

      Linux 5.12.10

Haiyue Wang (1):
ice: handle the VF VSI rebuild failure

Harshad Shirwadkar (1):
ext4: fix fast commit alignment issues

Heiner Kallweit (1):
efi: Allow EFI_MEMORY_XP and EFI_MEMORY_RO both to be cleared

Hoang Le (2):
tipc: add extack messages for bearer/media failure
tipc: fix unique bearer names sanity check

Hui Wang (1):
ALSA: hda: update the power_state during the direct-complete

James Smart (1):
scsi: lpfc: Fix failure to transmit ABTS on FC link

James Zhu (3):
drm/amdgpu/vcn3: add cancel_delayed_work_sync before power gate drm/amdgpu/jpeg2.5: add cancel_delayed_work_sync before power gate drm/amdgpu/jpeg3: add cancel_delayed_work_sync before power gate

Jason A. Donenfeld (9):
wireguard: do not use -O3
wireguard: peer: allocate in kmem_cache
wireguard: use synchronize_net rather than synchronize_rcu
wireguard: selftests: remove old conntrack kconfig value
wireguard: selftests: make sure rp_filter is disabled on vethc
wireguard: allowedips: initialize list head in selftest
wireguard: allowedips: remove nodes in O(1)
wireguard: allowedips: allocate nodes in kmem_cache
wireguard: allowedips: free empty intermediate nodes when removing single node

Javier Martinez Canillas (1):
kbuild: Quote OBJCOPY var to avoid a pahole call break the build

Jens Axboe (1):
io_uring: wrap io_kiocb reference count manipulation in helpers

Jens Wiklander (1):
optee: use export_uuid() to copy client UUID

Jerome Brunet (1):
arm64: meson: select COMMON_CLK

Jiashuo Liang (1):
x86/fault: Don't send SIGSEGV twice on SEGV_PKUERR

Jisheng Zhang (1):
riscv: vdso: fix and clean-up Makefile

Johan Hovold (2):
serial: stm32: fix threaded interrupt handling
HID: magicmouse: fix NULL-deref on disconnect

Johnny Chuang (1):
HID: i2c-hid: Skip ELAN power-on command after reset

Josef Bacik (6):
btrfs: mark ordered extent and inode with error if we fail to finish
btrfs: fix error handling in btrfs_del_csums
btrfs: return errors from btrfs_del_csums in cleanup_ref_head
btrfs: check error value from btrfs_update_inode in tree log
btrfs: fixup error handling in fixup_inode_link_counts
btrfs: abort in rename_exchange if we fail to insert the second ref

Julian Anastasov (1):
ipvs: ignore IP_VS_SVC_F_HASHED flag when adding service

Junxiao Bi (1):
ocfs2: fix data corruption by fallocate

Krzysztof Kozlowski (1):
nfc: fix NULL ptr dereference in llcp_sock_getname() after failed connect

Kurt Kanzenbach (1):
igb: Fix XDP with PTP enabled

Li Huafei (1):
perf probe: Fix NULL pointer dereference in convert_variable_location()

Lin Ma (2):
Bluetooth: fix the erroneous flush_work() order
Bluetooth: use correct lock to prevent UAF of hdev object

Lorenzo Bianconi (3):
mt76: mt7921: add rcu section in mt7921_mcu_tx_rate_report
mt76: mt7921: fix possible AOOB issue in mt7921_mcu_tx_rate_report
mt76: mt76x0e: fix device hang during suspend/resume

Luben Tuikov (1):
drm/amdgpu: Don't query CE and UE errors

Lucas Stach (2):
arm64: dts: zii-ultra: remove second GEN_3V3 regulator instance
arm64: dts: zii-ultra: fix 12V_MAIN voltage

Maciej Falkowski (1):
ARM: OMAP1: isp1301-omap: Add missing gpiod_add_lookup_table function

Maciej Fijalkowski (1):
ice: track AF_XDP ZC enabled queues in bitmap

Magnus Karlsson (8):
igb: add correct exception tracing for XDP
ixgbevf: add correct exception tracing for XDP
i40e: optimize for XDP_REDIRECT in xsk path
i40e: add correct exception tracing for XDP
ice: optimize for XDP_REDIRECT in xsk path
ice: add correct exception tracing for XDP
ixgbe: optimize for XDP_REDIRECT in xsk path
ixgbe: add correct exception tracing for XDP

Marc Zyngier (1):
KVM: arm64: Commit pending PC adjustemnts before returning to userspace

Marco Elver (2):
kfence: maximize allocation wait timeout duration
kfence: use TASK_IDLE when awaiting allocation

Marek Vasut (1):
ARM: dts: imx6q-dhcom: Add PU,VDD1P1,VDD2P5 regulators

Mark Rutland (1):
pid: take a reference when initializing cad_pid

Max Gurtovoy (2):
vfio/platform: fix module_put call in error flow
nvmet: fix freeing unallocated p2pmem

Maxim Mikityanskiy (2):
net/tls: Replace TLS_RX_SYNC_RUNNING with RCU
net/tls: Fix use-after-free after the TLS device goes down and up

Michael Walle (3):
arm64: dts: ls1028a: fix memory node
arm64: dts: freescale: sl28: var4: fix RGMII clock and voltage
arm64: dts: freescale: sl28: var1: fix RGMII clock and voltage

Michal Vokáč (1):
ARM: dts: imx6dl-yapp4: Fix RGMII connection to QCA8334 switch

Mina Almasry (1):
mm, hugetlb: fix simple resv_huge_pages underflow on UFFDIO_COPY

Moshe Shemesh (1):
net/mlx5: Check firmware sync reset requested is set before trying to abort it

Naveen N. Rao (1):
powerpc/kprobes: Fix validation of prefixed instructions across page boundary

Nicholas Piggin (1):
KVM: PPC: Book3S HV: Save host FSCR in the P7/8 path

Nirmoy Das (1):
drm/amdgpu: make sure we unpin the UVD BO

Pablo Neira Ayuso (3):
netfilter: nft_ct: skip expectations for confirmed conntrack
netfilter: nfnetlink_cthelper: hit EBUSY on updates if size mismatches
netfilter: nf_tables: missing error reporting for not selected expressions

Paolo Abeni (3):
mptcp: fix sk_forward_memory corruption on retransmission
mptcp: always parse mptcp options for MPC reqsk
mptcp: do not reset MP_CAPABLE subflow on mapping errors

Parav Pandit (1):
devlink: Correct VIRTUAL port to not have phys_port attributes

Paul Blakey (1):
net/sched: act_ct: Offload connections with commit action

Paul Greenwalt (1):
ice: report supported and advertised autoneg using PHY capabilities

Pavel Begunkov (3):
io_uring: fix link timeout refs
io_uring: use better types for cflags
io_uring: fix ltout double free on completion race

Pavel Skripkin (4):
net: caif: added cfserl_release function
net: caif: add proper error handling
net: caif: fix memory leak in caif_device_notify
net: caif: fix memory leak in cfusbl_device_notify

Phil Elwell (1):
usb: dwc2: Fix build in periphal-only mode

Phillip Potter (1):
ext4: fix memory leak in ext4_mb_init_backend on error path.

Pu Wen (1):
x86/sev: Check SME/SEV support in CPUID first

Rahul Lakkireddy (2):
cxgb4: fix regression with HASH tc prio value update
cxgb4: avoid link re-train during TC-MQPRIO configuration

Randy Dunlap (1):
vfio/pci: zap_vma_ptes() needs MMU

Rasmus Villemoes (1):
efi: cper: fix snprintf() use in cper_dimm_err_location()

Ritesh Harjani (1):
ext4: fix accessing uninit percpu counter variable with fast_commit

Roger Pau Monne (1):
xen-netback: take a reference to the RX task thread

Roi Dayan (2):
net/mlx5e: Check for needed capability for cvlan matching net/mlx5e: Fix adding encap rules to slow path

Roja Rani Yarubandi (2):
i2c: qcom-geni: Add shutdown callback for i2c
i2c: qcom-geni: Suspend and resume the bus during SYSTEM_SLEEP_PM ops

Sagi Grimberg (1):
nvme-rdma: fix in-casule data send for chained sgls

Sean Christopherson (1):
KVM: SVM: Truncate GPR value for DR and CR accesses in !64-bit mode

Simon Ser (1):
amdgpu: fix GEM obj leak in amdgpu_display_user_framebuffer_create

Takashi Iwai (1):
ALSA: timer: Fix master timer notification

Thomas Bogendoerfer (1):
Revert "MIPS: make userspace mapping young by default"

Thomas Gleixner (2):
x86/cpufeatures: Force disable X86_FEATURE_ENQCMD and remove update_pasid() x86/apic: Mark _all_ legacy interrupts when IO/APIC is missing

Tom Rix (1):
HID: logitech-hidpp: initialize level variable

Tony Lindgren (2):
bus: ti-sysc: Fix am335x resume hang for usb otg module
bus: ti-sysc: Fix flakey idling of uarts and stop using swsup_sidle_act

Vignesh Raghavendra (1):
arm64: dts: ti: j7200-main: Mark Main NAVSS as dma-coherent

Vitaly Kuznetsov (3):
x86/kvm: Teardown PV features on boot CPU as well x86/kvm: Disable kvmclock on all CPUs on shutdown x86/kvm: Disable all PV features on crash

Vladimir Oltean (1):
net: dsa: tag_8021q: fix the VLAN IDs used for encoding sub-VLANs

Wei Yongjun (2):
samples: vfio-mdev: fix error handing in mdpy_fb_probe()
ieee802154: fix error return code in ieee802154_llsec_getparams()

Ye Bin (1):
ext4: fix bug on in ext4_es_cache_extent as ext4_split_extent_at failed

Yevgeny Kliteynik (1):
net/mlx5: DR, Create multi-destination flow table with level less than 64

Yunjian Wang (1):
sch_htb: fix refcount leak in htb_parent_to_leaf_offload

Zenghui Yu (1):
KVM: arm64: Resolve all pending PC updates before immediate exit

Zhen Lei (3):
vfio/pci: Fix error return code in vfio_ecap_init()
HID: pidff: fix error return code in hid_pidff_init()
ieee802154: fix error return code in ieee802154_add_iface()

Zhihao Cheng (1):
drm/i915/selftests: Fix return value check in live_breadcrumbs_smoketest()

author maintainer
#1 lore raw
Makefile +1 -1
index d53577db1085..ebc02c56db03 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 5
 PATCHLEVEL = 12
-SUBLEVEL = 9
+SUBLEVEL = 10
 EXTRAVERSION =
 NAME = Frozen Wasteland
 
arch/arm/boot/dts/imx6dl-yapp4-common.dtsi +5 -1
index 7d2c72562c73..9148a01ed6d9 100644
@@ -105,9 +105,13 @@ &fec {
 	phy-reset-gpios = <&gpio1 25 GPIO_ACTIVE_LOW>;
 	phy-reset-duration = <20>;
 	phy-supply = <&sw2_reg>;
-	phy-handle = <&ethphy0>;
 	status = "okay";
 
+	fixed-link {
+		speed = <1000>;
+		full-duplex;
+	};
+
 	mdio {
 		#address-cells = <1>;
 		#size-cells = <0>;
arch/arm/boot/dts/imx6q-dhcom-som.dtsi +12 -0
index 236fc205c389..d0768ae429fa 100644
@@ -406,6 +406,18 @@ &reg_soc {
 	vin-supply = <&sw1_reg>;
 };
 
+&reg_pu {
+	vin-supply = <&sw1_reg>;
+};
+
+&reg_vdd1p1 {
+	vin-supply = <&sw2_reg>;
+};
+
+&reg_vdd2p5 {
+	vin-supply = <&sw2_reg>;
+};
+
 &uart1 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&pinctrl_uart1>;
arch/arm/boot/dts/imx6qdl-emcon-avari.dtsi +1 -1
index 828cf3e39784..c4e146f3341b 100644
@@ -126,7 +126,7 @@ boardid: gpio@3a {
 		compatible = "nxp,pca8574";
 		reg = <0x3a>;
 		gpio-controller;
-		#gpio-cells = <1>;
+		#gpio-cells = <2>;
 	};
 };
 
arch/arm/boot/dts/imx7d-meerkat96.dts +1 -1
index 5339210b63d0..dd8003bd1fc0 100644
@@ -193,7 +193,7 @@ &usdhc1 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&pinctrl_usdhc1>;
 	keep-power-in-suspend;
-	tuning-step = <2>;
+	fsl,tuning-step = <2>;
 	vmmc-supply = <&reg_3p3v>;
 	no-1-8-v;
 	broken-cd;
arch/arm/boot/dts/imx7d-pico.dtsi +1 -1
index e57da0d32b98..e519897fae08 100644
@@ -351,7 +351,7 @@ &usdhc1 {
 	pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
 	cd-gpios = <&gpio5 0 GPIO_ACTIVE_LOW>;
 	bus-width = <4>;
-	tuning-step = <2>;
+	fsl,tuning-step = <2>;
 	vmmc-supply = <&reg_3p3v>;
 	wakeup-source;
 	no-1-8-v;
arch/arm/mach-omap1/board-h2.c +3 -1
index c40cf5ef8607..977b0b744c22 100644
@@ -320,7 +320,7 @@ static int tps_setup(struct i2c_client *client, void *context)
 {
 	if (!IS_BUILTIN(CONFIG_TPS65010))
 		return -ENOSYS;
-	
+
 	tps65010_config_vregs1(TPS_LDO2_ENABLE | TPS_VLDO2_3_0V |
 				TPS_LDO1_ENABLE | TPS_VLDO1_3_0V);
 
@@ -394,6 +394,8 @@ static void __init h2_init(void)
 	BUG_ON(gpio_request(H2_NAND_RB_GPIO_PIN, "NAND ready") < 0);
 	gpio_direction_input(H2_NAND_RB_GPIO_PIN);
 
+	gpiod_add_lookup_table(&isp1301_gpiod_table);
+
 	omap_cfg_reg(L3_1610_FLASH_CS2B_OE);
 	omap_cfg_reg(M8_1610_FLASH_CS2B_WE);
 
arch/arm64/Kconfig.platforms +1 -0
index cdfd5fed457f..a3fdffcd1ce8 100644
@@ -168,6 +168,7 @@ config ARCH_MEDIATEK
 
 config ARCH_MESON
 	bool "Amlogic Platforms"
+	select COMMON_CLK
 	select MESON_IRQ_GPIO
 	help
 	  This enables support for the arm64 based Amlogic SoCs
arch/arm64/boot/dts/freescale/fsl-ls1028a-kontron-sl28-var1.dts +2 -1
index 6c309b97587d..e8d31279b7a3 100644
@@ -46,7 +46,8 @@ phy0: ethernet-phy@4 {
 			eee-broken-100tx;
 			qca,clk-out-frequency = <125000000>;
 			qca,clk-out-strength = <AR803X_STRENGTH_FULL>;
-			vddio-supply = <&vddh>;
+			qca,keep-pll-enabled;
+			vddio-supply = <&vddio>;
 
 			vddio: vddio-regulator {
 				regulator-name = "VDDIO";
arch/arm64/boot/dts/freescale/fsl-ls1028a-kontron-sl28-var4.dts +2 -3
index df212ed5bb94..e65d1c477e2c 100644
@@ -31,11 +31,10 @@ phy1: ethernet-phy@4 {
 			reg = <0x4>;
 			eee-broken-1000t;
 			eee-broken-100tx;
-
 			qca,clk-out-frequency = <125000000>;
 			qca,clk-out-strength = <AR803X_STRENGTH_FULL>;
-
-			vddio-supply = <&vddh>;
+			qca,keep-pll-enabled;
+			vddio-supply = <&vddio>;
 
 			vddio: vddio-regulator {
 				regulator-name = "VDDIO";
arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi +2 -2
index 262fbad8f0ec..1b264e5e947a 100644
@@ -201,8 +201,8 @@ soc: soc {
 		ddr: memory-controller@1080000 {
 			compatible = "fsl,qoriq-memory-controller";
 			reg = <0x0 0x1080000 0x0 0x1000>;
-			interrupts = <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>;
-			big-endian;
+			interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
+			little-endian;
 		};
 
 		dcfg: syscon@1e00000 {
arch/arm64/boot/dts/freescale/imx8mq-zii-ultra-rmb3.dts +5 -5
index 631e01c1b9fd..be1e7d6f0ecb 100644
@@ -88,11 +88,11 @@ codec2: codec@18 {
 		pinctrl-0 = <&pinctrl_codec2>;
 		reg = <0x18>;
 		#sound-dai-cells = <0>;
-		HPVDD-supply = <&reg_3p3v>;
-		SPRVDD-supply = <&reg_3p3v>;
-		SPLVDD-supply = <&reg_3p3v>;
-		AVDD-supply = <&reg_3p3v>;
-		IOVDD-supply = <&reg_3p3v>;
+		HPVDD-supply = <&reg_gen_3p3>;
+		SPRVDD-supply = <&reg_gen_3p3>;
+		SPLVDD-supply = <&reg_gen_3p3>;
+		AVDD-supply = <&reg_gen_3p3>;
+		IOVDD-supply = <&reg_gen_3p3>;
 		DVDD-supply = <&vgen4_reg>;
 		reset-gpios = <&gpio3 4 GPIO_ACTIVE_HIGH>;
 	};
arch/arm64/boot/dts/freescale/imx8mq-zii-ultra.dtsi +7 -16
index 4dc8383478ee..a08a568c31d9 100644
@@ -45,8 +45,8 @@ pcie1_refclk: clock-pcie1-refclk {
 	reg_12p0_main: regulator-12p0-main {
 		compatible = "regulator-fixed";
 		regulator-name = "12V_MAIN";
-		regulator-min-microvolt = <5000000>;
-		regulator-max-microvolt = <5000000>;
+		regulator-min-microvolt = <12000000>;
+		regulator-max-microvolt = <12000000>;
 		regulator-always-on;
 	};
 
@@ -77,15 +77,6 @@ reg_gen_3p3: regulator-gen-3p3 {
 		regulator-always-on;
 	};
 
-	reg_3p3v: regulator-3p3v {
-		compatible = "regulator-fixed";
-		vin-supply = <&reg_3p3_main>;
-		regulator-name = "GEN_3V3";
-		regulator-min-microvolt = <3300000>;
-		regulator-max-microvolt = <3300000>;
-		regulator-always-on;
-	};
-
 	reg_usdhc2_vmmc: regulator-vsd-3v3 {
 		pinctrl-names = "default";
 		pinctrl-0 = <&pinctrl_reg_usdhc2>;
@@ -415,11 +406,11 @@ codec1: codec@18 {
 		pinctrl-0 = <&pinctrl_codec1>;
 		reg = <0x18>;
 		#sound-dai-cells = <0>;
-		HPVDD-supply = <&reg_3p3v>;
-		SPRVDD-supply = <&reg_3p3v>;
-		SPLVDD-supply = <&reg_3p3v>;
-		AVDD-supply = <&reg_3p3v>;
-		IOVDD-supply = <&reg_3p3v>;
+		HPVDD-supply = <&reg_gen_3p3>;
+		SPRVDD-supply = <&reg_gen_3p3>;
+		SPLVDD-supply = <&reg_gen_3p3>;
+		AVDD-supply = <&reg_gen_3p3>;
+		IOVDD-supply = <&reg_gen_3p3>;
 		DVDD-supply = <&vgen4_reg>;
 		reset-gpios = <&gpio3 3 GPIO_ACTIVE_LOW>;
 	};
arch/arm64/boot/dts/ti/k3-j7200-main.dtsi +2 -0
index 17477ab0fd8e..3398f174f09b 100644
@@ -85,6 +85,8 @@ main_navss: bus@30000000 {
 		#size-cells = <2>;
 		ranges = <0x00 0x30000000 0x00 0x30000000 0x00 0x0c400000>;
 		ti,sci-dev-id = <199>;
+		dma-coherent;
+		dma-ranges;
 
 		main_navss_intr: interrupt-controller1 {
 			compatible = "ti,sci-intr";
arch/arm64/include/asm/kvm_asm.h +1 -0
index a8578d650bb6..f362f72bcb50 100644
@@ -57,6 +57,7 @@
 #define __KVM_HOST_SMCCC_FUNC___kvm_get_mdcr_el2		12
 #define __KVM_HOST_SMCCC_FUNC___vgic_v3_save_aprs		13
 #define __KVM_HOST_SMCCC_FUNC___vgic_v3_restore_aprs		14
+#define __KVM_HOST_SMCCC_FUNC___kvm_adjust_pc			15
 
 #ifndef __ASSEMBLY__
 
arch/arm64/kvm/arm.c +17 -3
index 84b5f79c9eab..7730b81aad6d 100644
@@ -715,11 +715,13 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu)
 			return ret;
 	}
 
-	if (run->immediate_exit)
-		return -EINTR;
-
 	vcpu_load(vcpu);
 
+	if (run->immediate_exit) {
+		ret = -EINTR;
+		goto out;
+	}
+
 	kvm_sigset_activate(vcpu);
 
 	ret = 1;
@@ -892,6 +894,18 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu)
 
 	kvm_sigset_deactivate(vcpu);
 
+out:
+	/*
+	 * In the unlikely event that we are returning to userspace
+	 * with pending exceptions or PC adjustment, commit these
+	 * adjustments in order to give userspace a consistent view of
+	 * the vcpu state. Note that this relies on __kvm_adjust_pc()
+	 * being preempt-safe on VHE.
+	 */
+	if (unlikely(vcpu->arch.flags & (KVM_ARM64_PENDING_EXCEPTION |
+					 KVM_ARM64_INCREMENT_PC)))
+		kvm_call_hyp(__kvm_adjust_pc, vcpu);
+
 	vcpu_put(vcpu);
 	return ret;
 }
arch/arm64/kvm/hyp/exception.c +2 -2
index 0812a496725f..11541b94b328 100644
@@ -331,8 +331,8 @@ static void kvm_inject_exception(struct kvm_vcpu *vcpu)
 }
 
 /*
- * Adjust the guest PC on entry, depending on flags provided by EL1
- * for the purpose of emulation (MMIO, sysreg) or exception injection.
+ * Adjust the guest PC (and potentially exception state) depending on
+ * flags provided by the emulation code.
  */
 void __kvm_adjust_pc(struct kvm_vcpu *vcpu)
 {
arch/arm64/kvm/hyp/nvhe/hyp-main.c +8 -0
index 936328207bde..e52582e14087 100644
@@ -25,6 +25,13 @@ static void handle___kvm_vcpu_run(struct kvm_cpu_context *host_ctxt)
 	cpu_reg(host_ctxt, 1) =  __kvm_vcpu_run(kern_hyp_va(vcpu));
 }
 
+static void handle___kvm_adjust_pc(struct kvm_cpu_context *host_ctxt)
+{
+	DECLARE_REG(struct kvm_vcpu *, vcpu, host_ctxt, 1);
+
+	__kvm_adjust_pc(kern_hyp_va(vcpu));
+}
+
 static void handle___kvm_flush_vm_context(struct kvm_cpu_context *host_ctxt)
 {
 	__kvm_flush_vm_context();
@@ -112,6 +119,7 @@ typedef void (*hcall_t)(struct kvm_cpu_context *);
 
 static const hcall_t host_hcall[] = {
 	HANDLE_FUNC(__kvm_vcpu_run),
+	HANDLE_FUNC(__kvm_adjust_pc),
 	HANDLE_FUNC(__kvm_flush_vm_context),
 	HANDLE_FUNC(__kvm_tlb_flush_vmid_ipa),
 	HANDLE_FUNC(__kvm_tlb_flush_vmid),
arch/mips/mm/cache.c +14 -16
index 7719d632df8d..1754498b0717 100644
@@ -157,31 +157,29 @@ unsigned long _page_cachable_default;
 EXPORT_SYMBOL(_page_cachable_default);
 
 #define PM(p)	__pgprot(_page_cachable_default | (p))
-#define PVA(p)	PM(_PAGE_VALID | _PAGE_ACCESSED | (p))
 
 static inline void setup_protection_map(void)
 {
 	protection_map[0]  = PM(_PAGE_PRESENT | _PAGE_NO_EXEC | _PAGE_NO_READ);
-	protection_map[1]  = PVA(_PAGE_PRESENT | _PAGE_NO_EXEC);
-	protection_map[2]  = PVA(_PAGE_PRESENT | _PAGE_NO_EXEC | _PAGE_NO_READ);
-	protection_map[3]  = PVA(_PAGE_PRESENT | _PAGE_NO_EXEC);
-	protection_map[4]  = PVA(_PAGE_PRESENT);
-	protection_map[5]  = PVA(_PAGE_PRESENT);
-	protection_map[6]  = PVA(_PAGE_PRESENT);
-	protection_map[7]  = PVA(_PAGE_PRESENT);
+	protection_map[1]  = PM(_PAGE_PRESENT | _PAGE_NO_EXEC);
+	protection_map[2]  = PM(_PAGE_PRESENT | _PAGE_NO_EXEC | _PAGE_NO_READ);
+	protection_map[3]  = PM(_PAGE_PRESENT | _PAGE_NO_EXEC);
+	protection_map[4]  = PM(_PAGE_PRESENT);
+	protection_map[5]  = PM(_PAGE_PRESENT);
+	protection_map[6]  = PM(_PAGE_PRESENT);
+	protection_map[7]  = PM(_PAGE_PRESENT);
 
 	protection_map[8]  = PM(_PAGE_PRESENT | _PAGE_NO_EXEC | _PAGE_NO_READ);
-	protection_map[9]  = PVA(_PAGE_PRESENT | _PAGE_NO_EXEC);
-	protection_map[10] = PVA(_PAGE_PRESENT | _PAGE_NO_EXEC | _PAGE_WRITE |
+	protection_map[9]  = PM(_PAGE_PRESENT | _PAGE_NO_EXEC);
+	protection_map[10] = PM(_PAGE_PRESENT | _PAGE_NO_EXEC | _PAGE_WRITE |
 				_PAGE_NO_READ);
-	protection_map[11] = PVA(_PAGE_PRESENT | _PAGE_NO_EXEC | _PAGE_WRITE);
-	protection_map[12] = PVA(_PAGE_PRESENT);
-	protection_map[13] = PVA(_PAGE_PRESENT);
-	protection_map[14] = PVA(_PAGE_PRESENT);
-	protection_map[15] = PVA(_PAGE_PRESENT);
+	protection_map[11] = PM(_PAGE_PRESENT | _PAGE_NO_EXEC | _PAGE_WRITE);
+	protection_map[12] = PM(_PAGE_PRESENT);
+	protection_map[13] = PM(_PAGE_PRESENT);
+	protection_map[14] = PM(_PAGE_PRESENT | _PAGE_WRITE);
+	protection_map[15] = PM(_PAGE_PRESENT | _PAGE_WRITE);
 }
 
-#undef _PVA
 #undef PM
 
 void cpu_cache_init(void)
arch/powerpc/kernel/kprobes.c +2 -2
index 01ab2163659e..e8c2a6373157 100644
@@ -108,7 +108,6 @@ int arch_prepare_kprobe(struct kprobe *p)
 	int ret = 0;
 	struct kprobe *prev;
 	struct ppc_inst insn = ppc_inst_read((struct ppc_inst *)p->addr);
-	struct ppc_inst prefix = ppc_inst_read((struct ppc_inst *)(p->addr - 1));
 
 	if ((unsigned long)p->addr & 0x03) {
 		printk("Attempt to register kprobe at an unaligned address\n");
@@ -116,7 +115,8 @@ int arch_prepare_kprobe(struct kprobe *p)
 	} else if (IS_MTMSRD(insn) || IS_RFID(insn) || IS_RFI(insn)) {
 		printk("Cannot register a kprobe on rfi/rfid or mtmsr[d]\n");
 		ret = -EINVAL;
-	} else if (ppc_inst_prefixed(prefix)) {
+	} else if ((unsigned long)p->addr & ~PAGE_MASK &&
+		   ppc_inst_prefixed(ppc_inst_read((struct ppc_inst *)(p->addr - 1)))) {
 		printk("Cannot register a kprobe on the second word of prefixed instruction\n");
 		ret = -EINVAL;
 	}
arch/powerpc/kvm/book3s_hv.c +0 -1
index 208a053c9adf..60c5bc0c130c 100644
@@ -4418,7 +4418,6 @@ static int kvmppc_vcpu_run_hv(struct kvm_vcpu *vcpu)
 		mtspr(SPRN_EBBRR, ebb_regs[1]);
 		mtspr(SPRN_BESCR, ebb_regs[2]);
 		mtspr(SPRN_TAR, user_tar);
-		mtspr(SPRN_FSCR, current->thread.fscr);
 	}
 	mtspr(SPRN_VRSAVE, user_vrsave);
 
arch/powerpc/kvm/book3s_hv_rmhandlers.S +7 -0
index 5e634db4809b..004f0d4e665f 100644
@@ -59,6 +59,7 @@ END_FTR_SECTION_IFCLR(CPU_FTR_ARCH_300)
 #define STACK_SLOT_UAMOR	(SFS-88)
 #define STACK_SLOT_DAWR1	(SFS-96)
 #define STACK_SLOT_DAWRX1	(SFS-104)
+#define STACK_SLOT_FSCR		(SFS-112)
 /* the following is used by the P9 short path */
 #define STACK_SLOT_NVGPRS	(SFS-152)	/* 18 gprs */
 
@@ -686,6 +687,8 @@ BEGIN_FTR_SECTION
 	std	r6, STACK_SLOT_DAWR0(r1)
 	std	r7, STACK_SLOT_DAWRX0(r1)
 	std	r8, STACK_SLOT_IAMR(r1)
+	mfspr	r5, SPRN_FSCR
+	std	r5, STACK_SLOT_FSCR(r1)
 END_FTR_SECTION_IFSET(CPU_FTR_ARCH_207S)
 BEGIN_FTR_SECTION
 	mfspr	r6, SPRN_DAWR1
@@ -1663,6 +1666,10 @@ FTR_SECTION_ELSE
 	ld	r7, STACK_SLOT_HFSCR(r1)
 	mtspr	SPRN_HFSCR, r7
 ALT_FTR_SECTION_END_IFCLR(CPU_FTR_ARCH_300)
+BEGIN_FTR_SECTION
+	ld	r5, STACK_SLOT_FSCR(r1)
+	mtspr	SPRN_FSCR, r5
+END_FTR_SECTION_IFSET(CPU_FTR_ARCH_207S)
 	/*
 	 * Restore various registers to 0, where non-zero values
 	 * set by the guest could disrupt the host.
arch/riscv/kernel/vdso/Makefile +2 -2
index ca2b40dfd24b..24d936c147cd 100644
@@ -23,7 +23,7 @@ ifneq ($(c-gettimeofday-y),)
 endif
 
 # Build rules
-targets := $(obj-vdso) vdso.so vdso.so.dbg vdso.lds vdso-dummy.o
+targets := $(obj-vdso) vdso.so vdso.so.dbg vdso.lds vdso-syms.S
 obj-vdso := $(addprefix $(obj)/, $(obj-vdso))
 
 obj-y += vdso.o vdso-syms.o
@@ -41,7 +41,7 @@ KASAN_SANITIZE := n
 $(obj)/vdso.o: $(obj)/vdso.so
 
 # link rule for the .so file, .lds has to be first
-$(obj)/vdso.so.dbg: $(src)/vdso.lds $(obj-vdso) FORCE
+$(obj)/vdso.so.dbg: $(obj)/vdso.lds $(obj-vdso) FORCE
 	$(call if_changed,vdsold)
 LDFLAGS_vdso.so.dbg = -shared -s -soname=linux-vdso.so.1 \
 	--build-id=sha1 --hash-style=both --eh-frame-hdr
arch/x86/include/asm/apic.h +1 -0
index 412b51e059c8..48067af94678 100644
@@ -174,6 +174,7 @@ static inline int apic_is_clustered_box(void)
 extern int setup_APIC_eilvt(u8 lvt_off, u8 vector, u8 msg_type, u8 mask);
 extern void lapic_assign_system_vectors(void);
 extern void lapic_assign_legacy_vector(unsigned int isairq, bool replace);
+extern void lapic_update_legacy_vectors(void);
 extern void lapic_online(void);
 extern void lapic_offline(void);
 extern bool apic_needs_pit(void);
arch/x86/include/asm/disabled-features.h +2 -5
index b7dd944dc867..8f28fafa98b3 100644
@@ -56,11 +56,8 @@
 # define DISABLE_PTI		(1 << (X86_FEATURE_PTI & 31))
 #endif
 
-#ifdef CONFIG_IOMMU_SUPPORT
-# define DISABLE_ENQCMD	0
-#else
-# define DISABLE_ENQCMD (1 << (X86_FEATURE_ENQCMD & 31))
-#endif
+/* Force disable because it's broken beyond repair */
+#define DISABLE_ENQCMD		(1 << (X86_FEATURE_ENQCMD & 31))
 
 #ifdef CONFIG_X86_SGX
 # define DISABLE_SGX	0
arch/x86/include/asm/fpu/api.h +1 -5
index ed33a14188f6..23bef08a8388 100644
@@ -106,10 +106,6 @@ extern int cpu_has_xfeatures(u64 xfeatures_mask, const char **feature_name);
  */
 #define PASID_DISABLED	0
 
-#ifdef CONFIG_IOMMU_SUPPORT
-/* Update current's PASID MSR/state by mm's PASID. */
-void update_pasid(void);
-#else
 static inline void update_pasid(void) { }
-#endif
+
 #endif /* _ASM_X86_FPU_API_H */
arch/x86/include/asm/fpu/internal.h +0 -7
index 8d33ad80704f..ceeba9f63172 100644
@@ -584,13 +584,6 @@ static inline void switch_fpu_finish(struct fpu *new_fpu)
 			pkru_val = pk->pkru;
 	}
 	__write_pkru(pkru_val);
-
-	/*
-	 * Expensive PASID MSR write will be avoided in update_pasid() because
-	 * TIF_NEED_FPU_LOAD was set. And the PASID state won't be updated
-	 * unless it's different from mm->pasid to reduce overhead.
-	 */
-	update_pasid();
 }
 
 #endif /* _ASM_X86_FPU_INTERNAL_H */
arch/x86/include/asm/kvm_para.h +2 -8
index 338119852512..69299878b200 100644
@@ -7,8 +7,6 @@
 #include <linux/interrupt.h>
 #include <uapi/asm/kvm_para.h>
 
-extern void kvmclock_init(void);
-
 #ifdef CONFIG_KVM_GUEST
 bool kvm_check_and_clear_guest_paused(void);
 #else
@@ -86,13 +84,14 @@ static inline long kvm_hypercall4(unsigned int nr, unsigned long p1,
 }
 
 #ifdef CONFIG_KVM_GUEST
+void kvmclock_init(void);
+void kvmclock_disable(void);
 bool kvm_para_available(void);
 unsigned int kvm_arch_para_features(void);
 unsigned int kvm_arch_para_hints(void);
 void kvm_async_pf_task_wait_schedule(u32 token);
 void kvm_async_pf_task_wake(u32 token);
 u32 kvm_read_and_reset_apf_flags(void);
-void kvm_disable_steal_time(void);
 bool __kvm_handle_async_pf(struct pt_regs *regs, u32 token);
 
 DECLARE_STATIC_KEY_FALSE(kvm_async_pf_enabled);
@@ -137,11 +136,6 @@ static inline u32 kvm_read_and_reset_apf_flags(void)
 	return 0;
 }
 
-static inline void kvm_disable_steal_time(void)
-{
-	return;
-}
-
 static __always_inline bool kvm_handle_async_pf(struct pt_regs *regs, u32 token)
 {
 	return false;
arch/x86/include/asm/thermal.h +3 -1
index ddbdefd5b94f..91a7b6687c3b 100644
@@ -3,11 +3,13 @@
 #define _ASM_X86_THERMAL_H
 
 #ifdef CONFIG_X86_THERMAL_VECTOR
+void therm_lvt_init(void);
 void intel_init_thermal(struct cpuinfo_x86 *c);
 bool x86_thermal_enabled(void);
 void intel_thermal_interrupt(void);
 #else
-static inline void intel_init_thermal(struct cpuinfo_x86 *c) { }
+static inline void therm_lvt_init(void)				{ }
+static inline void intel_init_thermal(struct cpuinfo_x86 *c)	{ }
 #endif
 
 #endif /* _ASM_X86_THERMAL_H */
arch/x86/kernel/apic/apic.c +1 -0
index 4f26700f314d..b967a2ba7494 100644
@@ -2604,6 +2604,7 @@ static void __init apic_bsp_setup(bool upmode)
 	end_local_APIC_setup();
 	irq_remap_enable_fault_handling();
 	setup_IO_APIC();
+	lapic_update_legacy_vectors();
 }
 
 #ifdef CONFIG_UP_LATE_INIT
arch/x86/kernel/apic/vector.c +20 -0
index 3c9c7492252f..8c97a3468aff 100644
@@ -730,6 +730,26 @@ void lapic_assign_legacy_vector(unsigned int irq, bool replace)
 	irq_matrix_assign_system(vector_matrix, ISA_IRQ_VECTOR(irq), replace);
 }
 
+void __init lapic_update_legacy_vectors(void)
+{
+	unsigned int i;
+
+	if (IS_ENABLED(CONFIG_X86_IO_APIC) && nr_ioapics > 0)
+		return;
+
+	/*
+	 * If the IO/APIC is disabled via config, kernel command line or
+	 * lack of enumeration then all legacy interrupts are routed
+	 * through the PIC. Make sure that they are marked as legacy
+	 * vectors. PIC_CASCADE_IRQ has already been marked in
+	 * lapic_assign_system_vectors().
+	 */
+	for (i = 0; i < nr_legacy_irqs(); i++) {
+		if (i != PIC_CASCADE_IR)
+			lapic_assign_legacy_vector(i, true);
+	}
+}
+
 void __init lapic_assign_system_vectors(void)
 {
 	unsigned int i, vector = 0;
arch/x86/kernel/fpu/xstate.c +0 -57

60 lines not on this page · raw message

arch/x86/kernel/kvm.c +69 -23

142 lines not on this page · raw message

arch/x86/kernel/kvmclock.c +1 -25
index 1fc0962c89c0..b825c87c12ef 100644
@@ -20,7 +20,6 @@
 #include <asm/hypervisor.h>
 #include <asm/mem_encrypt.h>
 #include <asm/x86_init.h>
-#include <asm/reboot.h>
 #include <asm/kvmclock.h>
 
 static int kvmclock __initdata = 1;
@@ -203,28 +202,9 @@ static void kvm_setup_secondary_clock(void)
 }
 #endif
 
-/*
- * After the clock is registered, the host will keep writing to the
- * registered memory location. If the guest happens to shutdown, this memory
- * won't be valid. In cases like kexec, in which you install a new kernel, this
- * means a random memory location will be kept being written. So before any
- * kind of shutdown from our side, we unregister the clock by writing anything
- * that does not have the 'enable' bit set in the msr
- */
-#ifdef CONFIG_KEXEC_CORE
-static void kvm_crash_shutdown(struct pt_regs *regs)
-{
-	native_write_msr(msr_kvm_system_time, 0, 0);
-	kvm_disable_steal_time();
-	native_machine_crash_shutdown(regs);
-}
-#endif
-
-static void kvm_shutdown(void)
+void kvmclock_disable(void)
 {
 	native_write_msr(msr_kvm_system_time, 0, 0);
-	kvm_disable_steal_time();
-	native_machine_shutdown();
 }
 
 static void __init kvmclock_init_mem(void)
@@ -351,10 +331,6 @@ void __init kvmclock_init(void)
 #endif
 	x86_platform.save_sched_clock_state = kvm_save_sched_clock_state;
 	x86_platform.restore_sched_clock_state = kvm_restore_sched_clock_state;
-	machine_ops.shutdown  = kvm_shutdown;
-#ifdef CONFIG_KEXEC_CORE
-	machine_ops.crash_shutdown  = kvm_crash_shutdown;
-#endif
 	kvm_get_preset_lpj();
 
 	/*
arch/x86/kernel/setup.c +9 -0
index ccab6cf91283..e79f21d13a0d 100644
@@ -44,6 +44,7 @@
 #include <asm/pci-direct.h>
 #include <asm/prom.h>
 #include <asm/proto.h>
+#include <asm/thermal.h>
 #include <asm/unwind.h>
 #include <asm/vsyscall.h>
 #include <linux/vmalloc.h>
@@ -1220,6 +1221,14 @@ void __init setup_arch(char **cmdline_p)
 
 	x86_init.timers.wallclock_init();
 
+	/*
+	 * This needs to run before setup_local_APIC() which soft-disables the
+	 * local APIC temporarily and that masks the thermal LVT interrupt,
+	 * leading to softlockups on machines which have configured SMI
+	 * interrupt delivery.
+	 */
+	therm_lvt_init();
+
 	mcheck_init();
 
 	register_refined_jiffies(CLOCK_TICK_RATE);
arch/x86/kvm/svm/svm.c +4 -4
index 9a6825feaf53..30569bbbca9a 100644
@@ -2532,7 +2532,7 @@ static int cr_interception(struct vcpu_svm *svm)
 	err = 0;
 	if (cr >= 16) { /* mov to cr */
 		cr -= 16;
-		val = kvm_register_read(&svm->vcpu, reg);
+		val = kvm_register_readl(&svm->vcpu, reg);
 		trace_kvm_cr_write(cr, val);
 		switch (cr) {
 		case 0:
@@ -2578,7 +2578,7 @@ static int cr_interception(struct vcpu_svm *svm)
 			kvm_queue_exception(&svm->vcpu, UD_VECTOR);
 			return 1;
 		}
-		kvm_register_write(&svm->vcpu, reg, val);
+		kvm_register_writel(&svm->vcpu, reg, val);
 		trace_kvm_cr_read(cr, val);
 	}
 	return kvm_complete_insn_gp(&svm->vcpu, err);
@@ -2643,11 +2643,11 @@ static int dr_interception(struct vcpu_svm *svm)
 	dr = svm->vmcb->control.exit_code - SVM_EXIT_READ_DR0;
 	if (dr >= 16) { /* mov to DRn  */
 		dr -= 16;
-		val = kvm_register_read(&svm->vcpu, reg);
+		val = kvm_register_readl(&svm->vcpu, reg);
 		err = kvm_set_dr(&svm->vcpu, dr, val);
 	} else {
 		kvm_get_dr(&svm->vcpu, dr, &val);
-		kvm_register_write(&svm->vcpu, reg, val);
+		kvm_register_writel(&svm->vcpu, reg, val);
 	}
 
 	return kvm_complete_insn_gp(&svm->vcpu, err);
arch/x86/mm/fault.c +2 -2
index a73347e2cdfc..ea3d0b73731b 100644
@@ -836,8 +836,8 @@ __bad_area_nosemaphore(struct pt_regs *regs, unsigned long error_code,
 
 	if (si_code == SEGV_PKUERR)
 		force_sig_pkuerr((void __user *)address, pkey);
-
-	force_sig_fault(SIGSEGV, si_code, (void __user *)address);
+	else
+		force_sig_fault(SIGSEGV, si_code, (void __user *)address);
 
 	local_irq_disable();
 }
arch/x86/mm/mem_encrypt_identity.c +6 -5
index a19374d26101..65f599e9075b 100644
@@ -504,10 +504,6 @@ void __init sme_enable(struct boot_params *bp)
 #define AMD_SME_BIT	BIT(0)
 #define AMD_SEV_BIT	BIT(1)
 
-	/* Check the SEV MSR whether SEV or SME is enabled */
-	sev_status   = __rdmsr(MSR_AMD64_SEV);
-	feature_mask = (sev_status & MSR_AMD64_SEV_ENABLED) ? AMD_SEV_BIT : AMD_SME_BIT;
-
 	/*
 	 * Check for the SME/SEV feature:
 	 *   CPUID Fn8000_001F[EAX]
@@ -519,11 +515,16 @@ void __init sme_enable(struct boot_params *bp)
 	eax = 0x8000001f;
 	ecx = 0;
 	native_cpuid(&eax, &ebx, &ecx, &edx);
-	if (!(eax & feature_mask))
+	/* Check whether SEV or SME is supported */
+	if (!(eax & (AMD_SEV_BIT | AMD_SME_BIT)))
 		return;
 
 	me_mask = 1UL << (ebx & 0x3f);
 
+	/* Check the SEV MSR whether SEV or SME is enabled */
+	sev_status   = __rdmsr(MSR_AMD64_SEV);
+	feature_mask = (sev_status & MSR_AMD64_SEV_ENABLED) ? AMD_SEV_BIT : AMD_SME_BIT;
+
 	/* Check if memory encryption is enabled */
 	if (feature_mask == AMD_SME_BIT) {
 		/*
drivers/acpi/acpica/utdelete.c +8 -0
index 624a26794d55..e5ba9795ec69 100644
@@ -285,6 +285,14 @@ static void acpi_ut_delete_internal_obj(union acpi_operand_object *object)
 		}
 		break;
 
+	case ACPI_TYPE_LOCAL_ADDRESS_HANDLER:
+
+		ACPI_DEBUG_PRINT((ACPI_DB_ALLOCATIONS,
+				  "***** Address handler %p\n", object));
+
+		acpi_os_delete_mutex(object->address_space.context_mutex);
+		break;
+
 	default:
 
 		break;
drivers/bus/ti-sysc.c +52 -5

93 lines not on this page · raw message

drivers/dma/idxd/init.c +2 -2
index 07cf7977a045..59f2104ffc77 100644
@@ -675,12 +675,12 @@ static int __init idxd_init_module(void)
 	 * If the CPU does not support MOVDIR64B or ENQCMDS, there's no point in
 	 * enumerating the device. We can not utilize it.
 	 */
-	if (!boot_cpu_has(X86_FEATURE_MOVDIR64B)) {
+	if (!cpu_feature_enabled(X86_FEATURE_MOVDIR64B)) {
 		pr_warn("idxd driver failed to load without MOVDIR64B.\n");
 		return -ENODEV;
 	}
 
-	if (!boot_cpu_has(X86_FEATURE_ENQCMD))
+	if (!cpu_feature_enabled(X86_FEATURE_ENQCMD))
 		pr_warn("Platform does not have ENQCMD(S) support.\n");
 	else
 		support_enqcmd = true;
drivers/firmware/efi/cper.c +1 -3
index e15d484b6a5a..ea7ca74fc173 100644
@@ -276,8 +276,7 @@ static int cper_dimm_err_location(struct cper_mem_err_compact *mem, char *msg)
 	if (!msg || !(mem->validation_bits & CPER_MEM_VALID_MODULE_HANDLE))
 		return 0;
 
-	n = 0;
-	len = CPER_REC_LEN - 1;
+	len = CPER_REC_LEN;
 	dmi_memdev_name(mem->mem_dev_handle, &bank, &device);
 	if (bank && device)
 		n = snprintf(msg, len, "DIMM location: %s %s ", bank, device);
@@ -286,7 +285,6 @@ static int cper_dimm_err_location(struct cper_mem_err_compact *mem, char *msg)
 			     "DIMM location: not present. DMI handle: 0x%.4x ",
 			     mem->mem_dev_handle);
 
-	msg[n] = '\0';
 	return n;
 }
 
drivers/firmware/efi/fdtparams.c +3 -0
index bb042ab7c2be..e901f8564ca0 100644
@@ -98,6 +98,9 @@ u64 __init efi_get_fdt_params(struct efi_memory_map_data *mm)
 	BUILD_BUG_ON(ARRAY_SIZE(target) != ARRAY_SIZE(name));
 	BUILD_BUG_ON(ARRAY_SIZE(target) != ARRAY_SIZE(dt_params[0].params));
 
+	if (!fdt)
+		return 0;
+
 	for (i = 0; i < ARRAY_SIZE(dt_params); i++) {
 		node = fdt_path_offset(fdt, dt_params[i].path);
 		if (node < 0)
drivers/firmware/efi/libstub/file.c +1 -1
index 4e81c6077188..dd95f330fe6e 100644
@@ -103,7 +103,7 @@ static int find_file_option(const efi_char16_t *cmdline, int cmdline_len,
 		return 0;
 
 	/* Skip any leading slashes */
-	while (cmdline[i] == L'/' || cmdline[i] == L'\\')
+	while (i < cmdline_len && (cmdline[i] == L'/' || cmdline[i] == L'\\'))
 		i++;
 
 	while (--result_len > 0 && i < cmdline_len) {
drivers/firmware/efi/memattr.c +0 -5
index 5737cb0fcd44..0a9aba5f9cef 100644
@@ -67,11 +67,6 @@ static bool entry_is_valid(const efi_memory_desc_t *in, efi_memory_desc_t *out)
 		return false;
 	}
 
-	if (!(in->attribute & (EFI_MEMORY_RO | EFI_MEMORY_XP))) {
-		pr_warn("Entry attributes invalid: RO and XP bits both cleared\n");
-		return false;
-	}
-
 	if (PAGE_SIZE > EFI_PAGE_SIZE &&
 	    (!PAGE_ALIGNED(in->phys_addr) ||
 	     !PAGE_ALIGNED(in->num_pages << EFI_PAGE_SHIFT))) {
drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c +0 -16
index 0350205c4897..6819fe5612d9 100644
@@ -337,7 +337,6 @@ static int amdgpu_ctx_query2(struct amdgpu_device *adev,
 {
 	struct amdgpu_ctx *ctx;
 	struct amdgpu_ctx_mgr *mgr;
-	unsigned long ras_counter;
 
 	if (!fpriv)
 		return -EINVAL;
@@ -362,21 +361,6 @@ static int amdgpu_ctx_query2(struct amdgpu_device *adev,
 	if (atomic_read(&ctx->guilty))
 		out->state.flags |= AMDGPU_CTX_QUERY2_FLAGS_GUILTY;
 
-	/*query ue count*/
-	ras_counter = amdgpu_ras_query_error_count(adev, false);
-	/*ras counter is monotonic increasing*/
-	if (ras_counter != ctx->ras_counter_ue) {
-		out->state.flags |= AMDGPU_CTX_QUERY2_FLAGS_RAS_UE;
-		ctx->ras_counter_ue = ras_counter;
-	}
-
-	/*query ce count*/
-	ras_counter = amdgpu_ras_query_error_count(adev, true);
-	if (ras_counter != ctx->ras_counter_ce) {
-		out->state.flags |= AMDGPU_CTX_QUERY2_FLAGS_RAS_CE;
-		ctx->ras_counter_ce = ras_counter;
-	}
-
 	mutex_unlock(&mgr->lock);
 	return 0;
 }
drivers/gpu/drm/amd/amdgpu/amdgpu_display.c +1 -0
index a2ac44cc2a6d..e80cc2928b58 100644
@@ -944,6 +944,7 @@ amdgpu_display_user_framebuffer_create(struct drm_device *dev,
 	domains = amdgpu_display_supported_domains(drm_to_adev(dev), bo->flags);
 	if (obj->import_attach && !(domains & AMDGPU_GEM_DOMAIN_GTT)) {
 		drm_dbg_kms(dev, "Cannot create framebuffer from imported dma_buf\n");
+		drm_gem_object_put(obj);
 		return ERR_PTR(-EINVAL);
 	}
 
drivers/gpu/drm/amd/amdgpu/jpeg_v2_5.c +2 -2
index dc947c8ffe21..e6c4a36eaf9a 100644
@@ -187,14 +187,14 @@ static int jpeg_v2_5_hw_init(void *handle)
 static int jpeg_v2_5_hw_fini(void *handle)
 {
 	struct amdgpu_device *adev = (struct amdgpu_device *)handle;
-	struct amdgpu_ring *ring;
 	int i;
 
+	cancel_delayed_work_sync(&adev->vcn.idle_work);
+
 	for (i = 0; i < adev->jpeg.num_jpeg_inst; ++i) {
 		if (adev->jpeg.harvest_config & (1 << i))
 			continue;
 
-		ring = &adev->jpeg.inst[i].ring_dec;
 		if (adev->jpeg.cur_state != AMD_PG_STATE_GATE &&
 		      RREG32_SOC15(JPEG, i, mmUVD_JRBC_STATUS))
 			jpeg_v2_5_set_powergating_state(adev, AMD_PG_STATE_GATE);
drivers/gpu/drm/amd/amdgpu/jpeg_v3_0.c +2 -2
index 1d354245678d..2ea68c84e6b4 100644
@@ -159,9 +159,9 @@ static int jpeg_v3_0_hw_init(void *handle)
 static int jpeg_v3_0_hw_fini(void *handle)
 {
 	struct amdgpu_device *adev = (struct amdgpu_device *)handle;
-	struct amdgpu_ring *ring;
 
-	ring = &adev->jpeg.inst->ring_dec;
+	cancel_delayed_work_sync(&adev->vcn.idle_work);
+
 	if (adev->jpeg.cur_state != AMD_PG_STATE_GATE &&
 	      RREG32_SOC15(JPEG, 0, mmUVD_JRBC_STATUS))
 		jpeg_v3_0_set_powergating_state(adev, AMD_PG_STATE_GATE);
drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c +1 -0
index 760859880c1e..4eebf973a065 100644
@@ -357,6 +357,7 @@ static int uvd_v6_0_enc_ring_test_ib(struct amdgpu_ring *ring, long timeout)
 
 error:
 	dma_fence_put(fence);
+	amdgpu_bo_unpin(bo);
 	amdgpu_bo_unreserve(bo);
 	amdgpu_bo_unref(&bo);
 	return r;
drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c +2 -3
index ebbc04ff5da0..90138469648a 100644
@@ -367,15 +367,14 @@ static int vcn_v3_0_hw_init(void *handle)
 static int vcn_v3_0_hw_fini(void *handle)
 {
 	struct amdgpu_device *adev = (struct amdgpu_device *)handle;
-	struct amdgpu_ring *ring;
 	int i;
 
+	cancel_delayed_work_sync(&adev->vcn.idle_work);
+
 	for (i = 0; i < adev->vcn.num_vcn_inst; ++i) {
 		if (adev->vcn.harvest_config & (1 << i))
 			continue;
 
-		ring = &adev->vcn.inst[i].ring_dec;
-
 		if (!amdgpu_sriov_vf(adev)) {
 			if ((adev->pg_flags & AMD_PG_SUPPORT_VCN_DPG) ||
 					(adev->vcn.cur_state != AMD_PG_STATE_GATE &&
drivers/gpu/drm/i915/selftests/i915_request.c +2 -2
index d2a678a2497e..411494005f0e 100644
@@ -1392,8 +1392,8 @@ static int live_breadcrumbs_smoketest(void *arg)
 
 	for (n = 0; n < smoke[0].ncontexts; n++) {
 		smoke[0].contexts[n] = live_context(i915, file);
-		if (!smoke[0].contexts[n]) {
-			ret = -ENOMEM;
+		if (IS_ERR(smoke[0].contexts[n])) {
+			ret = PTR_ERR(smoke[0].contexts[n]);
 			goto out_contexts;
 		}
 	}
drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c +1 -2
index 85f2c3564c96..fb061e666faa 100644
@@ -933,8 +933,7 @@ static int dpu_kms_hw_init(struct msm_kms *kms)
 		DPU_DEBUG("REG_DMA is not defined");
 	}
 
-	if (of_device_is_compatible(dev->dev->of_node, "qcom,sc7180-mdss"))
-		dpu_kms_parse_data_bus_icc_path(dpu_kms);
+	dpu_kms_parse_data_bus_icc_path(dpu_kms);
 
 	pm_runtime_get_sync(&dpu_kms->pdev->dev);
 
drivers/gpu/drm/msm/disp/dpu1/dpu_mdss.c +1 -50

100 lines not on this page · raw message

drivers/hid/amd-sfh-hid/amd_sfh_client.c +1 -0
index 2ab38b715347..ea9a4913932d 100644
@@ -88,6 +88,7 @@ static void amd_sfh_work(struct work_struct *work)
 	sensor_index = req_node->sensor_idx;
 	report_id = req_node->report_id;
 	node_type = req_node->report_type;
+	kfree(req_node);
 
 	if (node_type == HID_FEATURE_REPORT) {
 		report_size = get_feature_report(sensor_index, report_id,
drivers/hid/hid-logitech-hidpp.c +1 -0
index d459e2dbe647..f7710fb2f48d 100644
@@ -1262,6 +1262,7 @@ static int hidpp20_battery_map_status_voltage(u8 data[3], int *voltage,
 	int status;
 
 	long flags = (long) data[2];
+	*level = POWER_SUPPLY_CAPACITY_LEVEL_UNKNOWN;
 
 	if (flags & 0x80)
 		switch (flags & 0x07) {
drivers/hid/hid-magicmouse.c +1 -1
index abd86903875f..fc4c07459753 100644
@@ -597,7 +597,7 @@ static int magicmouse_probe(struct hid_device *hdev,
 	if (id->vendor == USB_VENDOR_ID_APPLE &&
 	    id->product == USB_DEVICE_ID_APPLE_MAGICTRACKPAD2 &&
 	    hdev->type != HID_TYPE_USBMOUSE)
-		return 0;
+		return -ENODEV;
 
 	msc = devm_kzalloc(&hdev->dev, sizeof(*msc), GFP_KERNEL);
 	if (msc == NULL) {
drivers/hid/hid-multitouch.c +7 -3
index 9d9f3e1bd5f4..55dcb8536286 100644
@@ -604,9 +604,13 @@ static struct mt_report_data *mt_allocate_report_data(struct mt_device *td,
 		if (!(HID_MAIN_ITEM_VARIABLE & field->flags))
 			continue;
 
-		for (n = 0; n < field->report_count; n++) {
-			if (field->usage[n].hid == HID_DG_CONTACTID)
-				rdata->is_mt_collection = true;
+		if (field->logical == HID_DG_FINGER || td->hdev->group != HID_GROUP_MULTITOUCH_WIN_8) {
+			for (n = 0; n < field->report_count; n++) {
+				if (field->usage[n].hid == HID_DG_CONTACTID) {
+					rdata->is_mt_collection = true;
+					break;
+				}
+			}
 		}
 	}
 
drivers/hid/i2c-hid/i2c-hid-core.c +10 -3
index 9993133989a5..46474612e73c 100644
@@ -45,6 +45,7 @@
 #define I2C_HID_QUIRK_BOGUS_IRQ			BIT(4)
 #define I2C_HID_QUIRK_RESET_ON_RESUME		BIT(5)
 #define I2C_HID_QUIRK_BAD_INPUT_SIZE		BIT(6)
+#define I2C_HID_QUIRK_NO_WAKEUP_AFTER_RESET	BIT(7)
 
 
 /* flags */
@@ -178,6 +179,11 @@ static const struct i2c_hid_quirks {
 		 I2C_HID_QUIRK_RESET_ON_RESUME },
 	{ USB_VENDOR_ID_ITE, I2C_DEVICE_ID_ITE_LENOVO_LEGION_Y720,
 		I2C_HID_QUIRK_BAD_INPUT_SIZE },
+	/*
+	 * Sending the wakeup after reset actually break ELAN touchscreen controller
+	 */
+	{ USB_VENDOR_ID_ELAN, HID_ANY_ID,
+		 I2C_HID_QUIRK_NO_WAKEUP_AFTER_RESET },
 	{ 0, 0 }
 };
 
@@ -461,7 +467,8 @@ static int i2c_hid_hwreset(struct i2c_client *client)
 	}
 
 	/* At least some SIS devices need this after reset */
-	ret = i2c_hid_set_power(client, I2C_HID_PWR_ON);
+	if (!(ihid->quirks & I2C_HID_QUIRK_NO_WAKEUP_AFTER_RESET))
+		ret = i2c_hid_set_power(client, I2C_HID_PWR_ON);
 
 out_unlock:
 	mutex_unlock(&ihid->reset_lock);
@@ -990,8 +997,8 @@ int i2c_hid_core_probe(struct i2c_client *client, struct i2chid_ops *ops,
 	hid->vendor = le16_to_cpu(ihid->hdesc.wVendorID);
 	hid->product = le16_to_cpu(ihid->hdesc.wProductID);
 
-	snprintf(hid->name, sizeof(hid->name), "%s %04hX:%04hX",
-		 client->name, hid->vendor, hid->product);
+	snprintf(hid->name, sizeof(hid->name), "%s %04X:%04X",
+		 client->name, (u16)hid->vendor, (u16)hid->product);
 	strlcpy(hid->phys, dev_name(&client->dev), sizeof(hid->phys));
 
 	ihid->quirks = i2c_hid_lookup_quirk(hid->vendor, hid->product);
drivers/hid/usbhid/hid-pidff.c +1 -0
index fddac7c72f64..07a9fe97d2e0 100644
@@ -1292,6 +1292,7 @@ int hid_pidff_init(struct hid_device *hid)
 
 	if (pidff->pool[PID_DEVICE_MANAGED_POOL].value &&
 	    pidff->pool[PID_DEVICE_MANAGED_POOL].value[0] == 0) {
+		error = -EPERM;
 		hid_notice(hid,
 			   "device does not support device managed pool\n");
 		goto fail;
drivers/hwmon/dell-smm-hwmon.c +2 -2
index 73b9db9e3aab..63b74e781c5d 100644
@@ -838,10 +838,10 @@ static struct attribute *i8k_attrs[] = {
 static umode_t i8k_is_visible(struct kobject *kobj, struct attribute *attr,
 			      int index)
 {
-	if (disallow_fan_support && index >= 8)
+	if (disallow_fan_support && index >= 20)
 		return 0;
 	if (disallow_fan_type_call &&
-	    (index == 9 || index == 12 || index == 15))
+	    (index == 21 || index == 25 || index == 28))
 		return 0;
 	if (index >= 0 && index <= 1 &&
 	    !(i8k_hwmon_flags & I8K_HWMON_HAVE_TEMP1))
drivers/hwmon/pmbus/isl68137.c +2 -2
index 2bee930d3900..789242ed72e5 100644
@@ -244,8 +244,8 @@ static int isl68137_probe(struct i2c_client *client)
 		info->read_word_data = raa_dmpvr2_read_word_data;
 		break;
 	case raa_dmpvr2_2rail_nontc:
-		info->func[0] &= ~PMBUS_HAVE_TEMP;
-		info->func[1] &= ~PMBUS_HAVE_TEMP;
+		info->func[0] &= ~PMBUS_HAVE_TEMP3;
+		info->func[1] &= ~PMBUS_HAVE_TEMP3;
 		fallthrough;
 	case raa_dmpvr2_2rail:
 		info->pages = 2;
drivers/i2c/busses/i2c-qcom-geni.c +20 -1
index 214b4c913a13..671f4a52275e 100644
@@ -650,6 +650,14 @@ static int geni_i2c_remove(struct platform_device *pdev)
 	return 0;
 }
 
+static void geni_i2c_shutdown(struct platform_device *pdev)
+{
+	struct geni_i2c_dev *gi2c = platform_get_drvdata(pdev);
+
+	/* Make client i2c transfers start failing */
+	i2c_mark_adapter_suspended(&gi2c->adap);
+}
+
 static int __maybe_unused geni_i2c_runtime_suspend(struct device *dev)
 {
 	int ret;
@@ -690,6 +698,8 @@ static int __maybe_unused geni_i2c_suspend_noirq(struct device *dev)
 {
 	struct geni_i2c_dev *gi2c = dev_get_drvdata(dev);
 
+	i2c_mark_adapter_suspended(&gi2c->adap);
+
 	if (!gi2c->suspended) {
 		geni_i2c_runtime_suspend(dev);
 		pm_runtime_disable(dev);
@@ -699,8 +709,16 @@ static int __maybe_unused geni_i2c_suspend_noirq(struct device *dev)
 	return 0;
 }
 
+static int __maybe_unused geni_i2c_resume_noirq(struct device *dev)
+{
+	struct geni_i2c_dev *gi2c = dev_get_drvdata(dev);
+
+	i2c_mark_adapter_resumed(&gi2c->adap);
+	return 0;
+}
+
 static const struct dev_pm_ops geni_i2c_pm_ops = {
-	SET_NOIRQ_SYSTEM_SLEEP_PM_OPS(geni_i2c_suspend_noirq, NULL)
+	SET_NOIRQ_SYSTEM_SLEEP_PM_OPS(geni_i2c_suspend_noirq, geni_i2c_resume_noirq)
 	SET_RUNTIME_PM_OPS(geni_i2c_runtime_suspend, geni_i2c_runtime_resume,
 									NULL)
 };
@@ -714,6 +732,7 @@ MODULE_DEVICE_TABLE(of, geni_i2c_dt_match);
 static struct platform_driver geni_i2c_driver = {
 	.probe  = geni_i2c_probe,
 	.remove = geni_i2c_remove,
+	.shutdown = geni_i2c_shutdown,
 	.driver = {
 		.name = "geni_i2c",
 		.pm = &geni_i2c_pm_ops,
drivers/net/ethernet/chelsio/cxgb4/cxgb4.h +0 -2
index 314f8d806723..9058f09f921e 100644
@@ -2177,8 +2177,6 @@ int cxgb4_update_mac_filt(struct port_info *pi, unsigned int viid,
 			  bool persistent, u8 *smt_idx);
 int cxgb4_get_msix_idx_from_bmap(struct adapter *adap);
 void cxgb4_free_msix_idx_in_bmap(struct adapter *adap, u32 msix_idx);
-int cxgb_open(struct net_device *dev);
-int cxgb_close(struct net_device *dev);
 void cxgb4_enable_rx(struct adapter *adap, struct sge_rspq *q);
 void cxgb4_quiesce_rx(struct sge_rspq *q);
 int cxgb4_port_mirror_alloc(struct net_device *dev);
drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c +2 -2
index 421bd9b88028..1f601de02e70 100644
@@ -2834,7 +2834,7 @@ static void cxgb_down(struct adapter *adapter)
 /*
  * net_device operations
  */
-int cxgb_open(struct net_device *dev)
+static int cxgb_open(struct net_device *dev)
 {
 	struct port_info *pi = netdev_priv(dev);
 	struct adapter *adapter = pi->adapter;
@@ -2882,7 +2882,7 @@ int cxgb_open(struct net_device *dev)
 	return err;
 }
 
-int cxgb_close(struct net_device *dev)
+static int cxgb_close(struct net_device *dev)
 {
 	struct port_info *pi = netdev_priv(dev);
 	struct adapter *adapter = pi->adapter;
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c +5 -9
index 1b88bd1c2dbe..dd9be229819a 100644
@@ -997,20 +997,16 @@ int cxgb4_tc_flower_destroy(struct net_device *dev,
 	if (!ch_flower)
 		return -ENOENT;
 
+	rhashtable_remove_fast(&adap->flower_tbl, &ch_flower->node,
+			       adap->flower_ht_params);
+
 	ret = cxgb4_flow_rule_destroy(dev, ch_flower->fs.tc_prio,
 				      &ch_flower->fs, ch_flower->filter_id);
 	if (ret)
-		goto err;
+		netdev_err(dev, "Flow rule destroy failed for tid: %u, ret: %d",
+			   ch_flower->filter_id, ret);
 
-	ret = rhashtable_remove_fast(&adap->flower_tbl, &ch_flower->node,
-				     adap->flower_ht_params);
-	if (ret) {
-		netdev_err(dev, "Flow remove from rhashtable failed");
-		goto err;
-	}
 	kfree_rcu(ch_flower, rcu);
-
-err:
 	return ret;
 }
 
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_mqprio.c +6 -3
index 6c259de96f96..338b04f339b3 100644
@@ -589,7 +589,8 @@ int cxgb4_setup_tc_mqprio(struct net_device *dev,
 	 * down before configuring tc params.
 	 */
 	if (netif_running(dev)) {
-		cxgb_close(dev);
+		netif_tx_stop_all_queues(dev);
+		netif_carrier_off(dev);
 		needs_bring_up = true;
 	}
 
@@ -615,8 +616,10 @@ int cxgb4_setup_tc_mqprio(struct net_device *dev,
 	}
 
 out:
-	if (needs_bring_up)
-		cxgb_open(dev);
+	if (needs_bring_up) {
+		netif_tx_start_all_queues(dev);
+		netif_carrier_on(dev);
+	}
 
 	mutex_unlock(&adap->tc_mqprio->mqprio_mutex);
 	return ret;
drivers/net/ethernet/chelsio/cxgb4/sge.c +6 -0
index 1e5f2edb70cf..6a099cb34b12 100644
@@ -2556,6 +2556,12 @@ int cxgb4_ethofld_send_flowc(struct net_device *dev, u32 eotid, u32 tc)
 	if (!eosw_txq)
 		return -ENOMEM;
 
+	if (!(adap->flags & CXGB4_FW_OK)) {
+		/* Don't stall caller when access to FW is lost */
+		complete(&eosw_txq->completion);
+		return -EIO;
+	}
+
 	skb = alloc_skb(len, GFP_KERNEL);
 	if (!skb)
 		return -ENOMEM;
drivers/net/ethernet/intel/i40e/i40e_txrx.c +6 -1
index 70b515049540..c358d9049881 100644
@@ -2313,15 +2313,20 @@ static int i40e_run_xdp(struct i40e_ring *rx_ring, struct xdp_buff *xdp)
 	case XDP_TX:
 		xdp_ring = rx_ring->vsi->xdp_rings[rx_ring->queue_index];
 		result = i40e_xmit_xdp_tx_ring(xdp, xdp_ring);
+		if (result == I40E_XDP_CONSUMED)
+			goto out_failure;
 		break;
 	case XDP_REDIRECT:
 		err = xdp_do_redirect(rx_ring->netdev, xdp, xdp_prog);
-		result = !err ? I40E_XDP_REDIR : I40E_XDP_CONSUMED;
+		if (err)
+			goto out_failure;
+		result = I40E_XDP_REDIR;
 		break;
 	default:
 		bpf_warn_invalid_xdp_action(act);
 		fallthrough;
 	case XDP_ABORTED:
+out_failure:
 		trace_xdp_exception(rx_ring->netdev, xdp_prog, act);
 		fallthrough; /* handle aborts by dropping packet */
 	case XDP_DROP:
drivers/net/ethernet/intel/i40e/i40e_xsk.c +11 -4
index 12ca84113587..5b39c457bd77 100644
@@ -160,21 +160,28 @@ static int i40e_run_xdp_zc(struct i40e_ring *rx_ring, struct xdp_buff *xdp)
 	xdp_prog = READ_ONCE(rx_ring->xdp_prog);
 	act = bpf_prog_run_xdp(xdp_prog, xdp);
 
+	if (likely(act == XDP_REDIRECT)) {
+		err = xdp_do_redirect(rx_ring->netdev, xdp, xdp_prog);
+		if (err)
+			goto out_failure;
+		rcu_read_unlock();
+		return I40E_XDP_REDIR;
+	}
+
 	switch (act) {
 	case XDP_PASS:
 		break;
 	case XDP_TX:
 		xdp_ring = rx_ring->vsi->xdp_rings[rx_ring->queue_index];
 		result = i40e_xmit_xdp_tx_ring(xdp, xdp_ring);
-		break;
-	case XDP_REDIRECT:
-		err = xdp_do_redirect(rx_ring->netdev, xdp, xdp_prog);
-		result = !err ? I40E_XDP_REDIR : I40E_XDP_CONSUMED;
+		if (result == I40E_XDP_CONSUMED)
+			goto out_failure;
 		break;
 	default:
 		bpf_warn_invalid_xdp_action(act);
 		fallthrough;
 	case XDP_ABORTED:
+out_failure:
 		trace_xdp_exception(rx_ring->netdev, xdp_prog, act);
 		fallthrough; /* handle aborts by dropping packet */
 	case XDP_DROP:
drivers/net/ethernet/intel/ice/ice.h +5 -3
index 17101c45cbcd..f668296ca677 100644
@@ -325,6 +325,7 @@ struct ice_vsi {
 	struct ice_tc_cfg tc_cfg;
 	struct bpf_prog *xdp_prog;
 	struct ice_ring **xdp_rings;	 /* XDP ring array */
+	unsigned long *af_xdp_zc_qps;	 /* tracks AF_XDP ZC enabled qps */
 	u16 num_xdp_txq;		 /* Used XDP queues */
 	u8 xdp_mapping_mode;		 /* ICE_MAP_MODE_[CONTIG|SCATTER] */
 
@@ -534,15 +535,16 @@ static inline void ice_set_ring_xdp(struct ice_ring *ring)
  */
 static inline struct xsk_buff_pool *ice_xsk_pool(struct ice_ring *ring)
 {
+	struct ice_vsi *vsi = ring->vsi;
 	u16 qid = ring->q_index;
 
 	if (ice_ring_is_xdp(ring))
-		qid -= ring->vsi->num_xdp_txq;
+		qid -= vsi->num_xdp_txq;
 
-	if (!ice_is_xdp_ena_vsi(ring->vsi))
+	if (!ice_is_xdp_ena_vsi(vsi) || !test_bit(qid, vsi->af_xdp_zc_qps))
 		return NULL;
 
-	return xsk_get_pool_from_qid(ring->vsi->netdev, qid);
+	return xsk_get_pool_from_qid(vsi->netdev, qid);
 }
 
 /**
drivers/net/ethernet/intel/ice/ice_ethtool.c +6 -45

70 lines not on this page · raw message

drivers/net/ethernet/intel/ice/ice_hw_autogen.h +1 -0
index 093a1818a392..1998821896c0 100644
@@ -31,6 +31,7 @@
 #define PF_FW_ATQLEN_ATQOVFL_M			BIT(29)
 #define PF_FW_ATQLEN_ATQCRIT_M			BIT(30)
 #define VF_MBX_ARQLEN(_VF)			(0x0022BC00 + ((_VF) * 4))
+#define VF_MBX_ATQLEN(_VF)			(0x0022A800 + ((_VF) * 4))
 #define PF_FW_ATQLEN_ATQENABLE_M		BIT(31)
 #define PF_FW_ATQT				0x00080400
 #define PF_MBX_ARQBAH				0x0022E400
drivers/net/ethernet/intel/ice/ice_lib.c +12 -0
index 195d122c9cb2..27e439853c3b 100644
@@ -105,8 +105,14 @@ static int ice_vsi_alloc_arrays(struct ice_vsi *vsi)
 	if (!vsi->q_vectors)
 		goto err_vectors;
 
+	vsi->af_xdp_zc_qps = bitmap_zalloc(max_t(int, vsi->alloc_txq, vsi->alloc_rxq), GFP_KERNEL);
+	if (!vsi->af_xdp_zc_qps)
+		goto err_zc_qps;
+
 	return 0;
 
+err_zc_qps:
+	devm_kfree(dev, vsi->q_vectors);
 err_vectors:
 	devm_kfree(dev, vsi->rxq_map);
 err_rxq_map:
@@ -192,6 +198,8 @@ static void ice_vsi_set_num_qs(struct ice_vsi *vsi, u16 vf_id)
 		break;
 	case ICE_VSI_VF:
 		vf = &pf->vf[vsi->vf_id];
+		if (vf->num_req_qs)
+			vf->num_vf_qs = vf->num_req_qs;
 		vsi->alloc_txq = vf->num_vf_qs;
 		vsi->alloc_rxq = vf->num_vf_qs;
 		/* pf->num_msix_per_vf includes (VF miscellaneous vector +
@@ -286,6 +294,10 @@ static void ice_vsi_free_arrays(struct ice_vsi *vsi)
 
 	dev = ice_pf_to_dev(pf);
 
+	if (vsi->af_xdp_zc_qps) {
+		bitmap_free(vsi->af_xdp_zc_qps);
+		vsi->af_xdp_zc_qps = NULL;
+	}
 	/* free the ring and vector containers */
 	if (vsi->q_vectors) {
 		devm_kfree(dev, vsi->q_vectors);
drivers/net/ethernet/intel/ice/ice_txrx.c +13 -4
index b91dcfd12727..113e53efffd7 100644
@@ -523,7 +523,7 @@ ice_run_xdp(struct ice_ring *rx_ring, struct xdp_buff *xdp,
 	    struct bpf_prog *xdp_prog)
 {
 	struct ice_ring *xdp_ring;
-	int err;
+	int err, result;
 	u32 act;
 
 	act = bpf_prog_run_xdp(xdp_prog, xdp);
@@ -532,14 +532,20 @@ ice_run_xdp(struct ice_ring *rx_ring, struct xdp_buff *xdp,
 		return ICE_XDP_PASS;
 	case XDP_TX:
 		xdp_ring = rx_ring->vsi->xdp_rings[smp_processor_id()];
-		return ice_xmit_xdp_buff(xdp, xdp_ring);
+		result = ice_xmit_xdp_buff(xdp, xdp_ring);
+		if (result == ICE_XDP_CONSUMED)
+			goto out_failure;
+		return result;
 	case XDP_REDIRECT:
 		err = xdp_do_redirect(rx_ring->netdev, xdp, xdp_prog);
-		return !err ? ICE_XDP_REDIR : ICE_XDP_CONSUMED;
+		if (err)
+			goto out_failure;
+		return ICE_XDP_REDIR;
 	default:
 		bpf_warn_invalid_xdp_action(act);
 		fallthrough;
 	case XDP_ABORTED:
+out_failure:
 		trace_xdp_exception(rx_ring->netdev, xdp_prog, act);
 		fallthrough;
 	case XDP_DROP:
@@ -2331,6 +2337,7 @@ ice_xmit_frame_ring(struct sk_buff *skb, struct ice_ring *tx_ring)
 	struct ice_tx_offload_params offload = { 0 };
 	struct ice_vsi *vsi = tx_ring->vsi;
 	struct ice_tx_buf *first;
+	struct ethhdr *eth;
 	unsigned int count;
 	int tso, csum;
 
@@ -2377,7 +2384,9 @@ ice_xmit_frame_ring(struct sk_buff *skb, struct ice_ring *tx_ring)
 		goto out_drop;
 
 	/* allow CONTROL frames egress from main VSI if FW LLDP disabled */
-	if (unlikely(skb->priority == TC_PRIO_CONTROL &&
+	eth = (struct ethhdr *)skb_mac_header(skb);
+	if (unlikely((skb->priority == TC_PRIO_CONTROL ||
+		      eth->h_proto == htons(ETH_P_LLDP)) &&
 		     vsi->type == ICE_VSI_PF &&
 		     vsi->port_info->qos_cfg.is_sw_lldp))
 		offload.cd_qw1 |= (u64)(ICE_TX_DESC_DTYPE_CTX |
drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c +13 -6
index 1f38a8d0c525..48dee9c5d534 100644
@@ -435,13 +435,15 @@ static void ice_trigger_vf_reset(struct ice_vf *vf, bool is_vflr, bool is_pfr)
 	 */
 	clear_bit(ICE_VF_STATE_INIT, vf->vf_states);
 
-	/* VF_MBX_ARQLEN is cleared by PFR, so the driver needs to clear it
-	 * in the case of VFR. If this is done for PFR, it can mess up VF
-	 * resets because the VF driver may already have started cleanup
-	 * by the time we get here.
+	/* VF_MBX_ARQLEN and VF_MBX_ATQLEN are cleared by PFR, so the driver
+	 * needs to clear them in the case of VFR/VFLR. If this is done for
+	 * PFR, it can mess up VF resets because the VF driver may already
+	 * have started cleanup by the time we get here.
 	 */
-	if (!is_pfr)
+	if (!is_pfr) {
 		wr32(hw, VF_MBX_ARQLEN(vf->vf_id), 0);
+		wr32(hw, VF_MBX_ATQLEN(vf->vf_id), 0);
+	}
 
 	/* In the case of a VFLR, the HW has already reset the VF and we
 	 * just need to clean up, so don't hit the VFRTRIG register.
@@ -1375,7 +1377,12 @@ bool ice_reset_vf(struct ice_vf *vf, bool is_vflr)
 	}
 
 	ice_vf_pre_vsi_rebuild(vf);
-	ice_vf_rebuild_vsi_with_release(vf);
+
+	if (ice_vf_rebuild_vsi_with_release(vf)) {
+		dev_err(dev, "Failed to release and setup the VF%u's VSI\n", vf->vf_id);
+		return false;
+	}
+
 	ice_vf_post_vsi_rebuild(vf);
 
 	return true;
drivers/net/ethernet/intel/ice/ice_xsk.c +15 -4
index 9f94d9159acd..f1d4240e57df 100644
@@ -273,6 +273,7 @@ static int ice_xsk_pool_disable(struct ice_vsi *vsi, u16 qid)
 	if (!pool)
 		return -EINVAL;
 
+	clear_bit(qid, vsi->af_xdp_zc_qps);
 	xsk_pool_dma_unmap(pool, ICE_RX_DMA_ATTR);
 
 	return 0;
@@ -303,6 +304,8 @@ ice_xsk_pool_enable(struct ice_vsi *vsi, struct xsk_buff_pool *pool, u16 qid)
 	if (err)
 		return err;
 
+	set_bit(qid, vsi->af_xdp_zc_qps);
+
 	return 0;
 }
 
@@ -473,21 +476,29 @@ ice_run_xdp_zc(struct ice_ring *rx_ring, struct xdp_buff *xdp)
 	xdp_prog = READ_ONCE(rx_ring->xdp_prog);
 
 	act = bpf_prog_run_xdp(xdp_prog, xdp);
+
+	if (likely(act == XDP_REDIRECT)) {
+		err = xdp_do_redirect(rx_ring->netdev, xdp, xdp_prog);
+		if (err)
+			goto out_failure;
+		rcu_read_unlock();
+		return ICE_XDP_REDIR;
+	}
+
 	switch (act) {
 	case XDP_PASS:
 		break;
 	case XDP_TX:
 		xdp_ring = rx_ring->vsi->xdp_rings[rx_ring->q_index];
 		result = ice_xmit_xdp_buff(xdp, xdp_ring);
-		break;
-	case XDP_REDIRECT:
-		err = xdp_do_redirect(rx_ring->netdev, xdp, xdp_prog);
-		result = !err ? ICE_XDP_REDIR : ICE_XDP_CONSUMED;
+		if (result == ICE_XDP_CONSUMED)
+			goto out_failure;
 		break;
 	default:
 		bpf_warn_invalid_xdp_action(act);
 		fallthrough;
 	case XDP_ABORTED:
+out_failure:
 		trace_xdp_exception(rx_ring->netdev, xdp_prog, act);
 		fallthrough;
 	case XDP_DROP:
drivers/net/ethernet/intel/igb/igb.h +1 -1
index 7bda8c5edea5..2d3daf022651 100644
@@ -749,7 +749,7 @@ void igb_ptp_rx_hang(struct igb_adapter *adapter);
 void igb_ptp_tx_hang(struct igb_adapter *adapter);
 void igb_ptp_rx_rgtstamp(struct igb_q_vector *q_vector, struct sk_buff *skb);
 int igb_ptp_rx_pktstamp(struct igb_q_vector *q_vector, void *va,
-			struct sk_buff *skb);
+			ktime_t *timestamp);
 int igb_ptp_set_ts_config(struct net_device *netdev, struct ifreq *ifr);
 int igb_ptp_get_ts_config(struct net_device *netdev, struct ifreq *ifr);
 void igb_set_flag_queue_pairs(struct igb_adapter *, const u32);
drivers/net/ethernet/intel/igb/igb_main.c +32 -23

118 lines not on this page · raw message

drivers/net/ethernet/intel/igb/igb_ptp.c +10 -13
index 86a576201f5f..58b25f26ea7f 100644
@@ -856,30 +856,28 @@ static void igb_ptp_tx_hwtstamp(struct igb_adapter *adapter)
 	dev_kfree_skb_any(skb);
 }
 
-#define IGB_RET_PTP_DISABLED 1
-#define IGB_RET_PTP_INVALID 2
-
 /**
  * igb_ptp_rx_pktstamp - retrieve Rx per packet timestamp
  * @q_vector: Pointer to interrupt specific structure
  * @va: Pointer to address containing Rx buffer
- * @skb: Buffer containing timestamp and packet
+ * @timestamp: Pointer where timestamp will be stored
  *
  * This function is meant to retrieve a timestamp from the first buffer of an
  * incoming frame.  The value is stored in little endian format starting on
  * byte 8
  *
- * Returns: 0 if success, nonzero if failure
+ * Returns: The timestamp header length or 0 if not available
  **/
 int igb_ptp_rx_pktstamp(struct igb_q_vector *q_vector, void *va,
-			struct sk_buff *skb)
+			ktime_t *timestamp)
 {
 	struct igb_adapter *adapter = q_vector->adapter;
+	struct skb_shared_hwtstamps ts;
 	__le64 *regval = (__le64 *)va;
 	int adjust = 0;
 
 	if (!(adapter->ptp_flags & IGB_PTP_ENABLED))
-		return IGB_RET_PTP_DISABLED;
+		return 0;
 
 	/* The timestamp is recorded in little endian format.
 	 * DWORD: 0        1        2        3
@@ -888,10 +886,9 @@ int igb_ptp_rx_pktstamp(struct igb_q_vector *q_vector, void *va,
 
 	/* check reserved dwords are zero, be/le doesn't matter for zero */
 	if (regval[0])
-		return IGB_RET_PTP_INVALID;
+		return 0;
 
-	igb_ptp_systim_to_hwtstamp(adapter, skb_hwtstamps(skb),
-				   le64_to_cpu(regval[1]));
+	igb_ptp_systim_to_hwtstamp(adapter, &ts, le64_to_cpu(regval[1]));
 
 	/* adjust timestamp for the RX latency based on link speed */
 	if (adapter->hw.mac.type == e1000_i210) {
@@ -907,10 +904,10 @@ int igb_ptp_rx_pktstamp(struct igb_q_vector *q_vector, void *va,
 			break;
 		}
 	}
-	skb_hwtstamps(skb)->hwtstamp =
-		ktime_sub_ns(skb_hwtstamps(skb)->hwtstamp, adjust);
 
-	return 0;
+	*timestamp = ktime_sub_ns(ts.hwtstamp, adjust);
+
+	return IGB_TS_HDR_LEN;
 }
 
 /**
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +8 -8
index cffb95f8f632..c194158a421c 100644
@@ -2213,23 +2213,23 @@ static struct sk_buff *ixgbe_run_xdp(struct ixgbe_adapter *adapter,
 		break;
 	case XDP_TX:
 		xdpf = xdp_convert_buff_to_frame(xdp);
-		if (unlikely(!xdpf)) {
-			result = IXGBE_XDP_CONSUMED;
-			break;
-		}
+		if (unlikely(!xdpf))
+			goto out_failure;
 		result = ixgbe_xmit_xdp_ring(adapter, xdpf);
+		if (result == IXGBE_XDP_CONSUMED)
+			goto out_failure;
 		break;
 	case XDP_REDIRECT:
 		err = xdp_do_redirect(adapter->netdev, xdp, xdp_prog);
-		if (!err)
-			result = IXGBE_XDP_REDIR;
-		else
-			result = IXGBE_XDP_CONSUMED;
+		if (err)
+			goto out_failure;
+		result = IXGBE_XDP_REDIR;
 		break;
 	default:
 		bpf_warn_invalid_xdp_action(act);
 		fallthrough;
 	case XDP_ABORTED:
+out_failure:
 		trace_xdp_exception(rx_ring->netdev, xdp_prog, act);
 		fallthrough; /* handle aborts by dropping packet */
 	case XDP_DROP:
drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c +13 -8
index 3771857cf887..f72d2978263b 100644
@@ -104,25 +104,30 @@ static int ixgbe_run_xdp_zc(struct ixgbe_adapter *adapter,
 	xdp_prog = READ_ONCE(rx_ring->xdp_prog);
 	act = bpf_prog_run_xdp(xdp_prog, xdp);
 
+	if (likely(act == XDP_REDIRECT)) {
+		err = xdp_do_redirect(rx_ring->netdev, xdp, xdp_prog);
+		if (err)
+			goto out_failure;
+		rcu_read_unlock();
+		return IXGBE_XDP_REDIR;
+	}
+
 	switch (act) {
 	case XDP_PASS:
 		break;
 	case XDP_TX:
 		xdpf = xdp_convert_buff_to_frame(xdp);
-		if (unlikely(!xdpf)) {
-			result = IXGBE_XDP_CONSUMED;
-			break;
-		}
+		if (unlikely(!xdpf))
+			goto out_failure;
 		result = ixgbe_xmit_xdp_ring(adapter, xdpf);
-		break;
-	case XDP_REDIRECT:
-		err = xdp_do_redirect(rx_ring->netdev, xdp, xdp_prog);
-		result = !err ? IXGBE_XDP_REDIR : IXGBE_XDP_CONSUMED;
+		if (result == IXGBE_XDP_CONSUMED)
+			goto out_failure;
 		break;
 	default:
 		bpf_warn_invalid_xdp_action(act);
 		fallthrough;
 	case XDP_ABORTED:
+out_failure:
 		trace_xdp_exception(rx_ring->netdev, xdp_prog, act);
 		fallthrough; /* handle aborts by dropping packet */
 	case XDP_DROP:
drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c +3 -0
index 449d7d5b280d..b38860c48598 100644
@@ -1067,11 +1067,14 @@ static struct sk_buff *ixgbevf_run_xdp(struct ixgbevf_adapter *adapter,
 	case XDP_TX:
 		xdp_ring = adapter->xdp_ring[rx_ring->queue_index];
 		result = ixgbevf_xmit_xdp_ring(xdp_ring, xdp);
+		if (result == IXGBEVF_XDP_CONSUMED)
+			goto out_failure;
 		break;
 	default:
 		bpf_warn_invalid_xdp_action(act);
 		fallthrough;
 	case XDP_ABORTED:
+out_failure:
 		trace_xdp_exception(rx_ring->netdev, xdp_prog, act);
 		fallthrough; /* handle aborts by dropping packet */
 	case XDP_DROP:
drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c +3 -2
index 53802e18af90..04b49cb3adb3 100644
@@ -1632,12 +1632,13 @@ static int mlx5e_set_fecparam(struct net_device *netdev,
 {
 	struct mlx5e_priv *priv = netdev_priv(netdev);
 	struct mlx5_core_dev *mdev = priv->mdev;
+	unsigned long fec_bitmap;
 	u16 fec_policy = 0;
 	int mode;
 	int err;
 
-	if (bitmap_weight((unsigned long *)&fecparam->fec,
-			  ETHTOOL_FEC_LLRS_BIT + 1) > 1)
+	bitmap_from_arr32(&fec_bitmap, &fecparam->fec, sizeof(fecparam->fec) * BITS_PER_BYTE);
+	if (bitmap_weight(&fec_bitmap, ETHTOOL_FEC_LLRS_BIT + 1) > 1)
 		return -EOPNOTSUPP;
 
 	for (mode = 0; mode < ARRAY_SIZE(pplm_fec_2_ethtool); mode++) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +9 -0
index 78a1403c9802..b633f669ea57 100644
@@ -1964,11 +1964,13 @@ static int __parse_cls_flower(struct mlx5e_priv *priv,
 				    misc_parameters);
 	struct flow_rule *rule = flow_cls_offload_flow_rule(f);
 	struct flow_dissector *dissector = rule->match.dissector;
+	enum fs_flow_table_type fs_type;
 	u16 addr_type = 0;
 	u8 ip_proto = 0;
 	u8 *match_level;
 	int err;
 
+	fs_type = mlx5e_is_eswitch_flow(flow) ? FS_FT_FDB : FS_FT_NIC_RX;
 	match_level = outer_match_level;
 
 	if (dissector->used_keys &
@@ -2093,6 +2095,13 @@ static int __parse_cls_flower(struct mlx5e_priv *priv,
 		if (match.mask->vlan_id ||
 		    match.mask->vlan_priority ||
 		    match.mask->vlan_tpid) {
+			if (!MLX5_CAP_FLOWTABLE_TYPE(priv->mdev, ft_field_support.outer_second_vid,
+						     fs_type)) {
+				NL_SET_ERR_MSG_MOD(extack,
+						   "Matching on CVLAN is not supported");
+				return -EOPNOTSUPP;
+			}
+
 			if (match.key->vlan_tpid == htons(ETH_P_8021AD)) {
 				MLX5_SET(fte_match_set_misc, misc_c,
 					 outer_second_svlan_tag, 1);
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c +2 -1
index d4a2f8d1ee9f..3719452a7803 100644
@@ -349,7 +349,8 @@ esw_setup_slow_path_dest(struct mlx5_flow_destination *dest,
 			 struct mlx5_fs_chains *chains,
 			 int i)
 {
-	flow_act->flags |= FLOW_ACT_IGNORE_FLOW_LEVEL;
+	if (mlx5_chains_ignore_flow_level_supported(chains))
+		flow_act->flags |= FLOW_ACT_IGNORE_FLOW_LEVEL;
 	dest[i].type = MLX5_FLOW_DESTINATION_TYPE_FLOW_TABLE;
 	dest[i].ft = mlx5_chains_get_tc_end_ft(chains);
 }
drivers/net/ethernet/mellanox/mlx5/core/fw_reset.c +3 -0
index f9042e147c7f..ee710ce00795 100644
@@ -354,6 +354,9 @@ static void mlx5_sync_reset_abort_event(struct work_struct *work)
 						      reset_abort_work);
 	struct mlx5_core_dev *dev = fw_reset->dev;
 
+	if (!test_bit(MLX5_FW_RESET_FLAGS_RESET_REQUESTED, &fw_reset->reset_flags))
+		return;
+
 	mlx5_sync_reset_clear_reset_requested(dev, true);
 	mlx5_core_warn(dev, "PCI Sync FW Update Reset Aborted.\n");
 }
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_chains.c +1 -1
index 381325b4a863..b607ed5a74bb 100644
@@ -111,7 +111,7 @@ bool mlx5_chains_prios_supported(struct mlx5_fs_chains *chains)
 	return chains->flags & MLX5_CHAINS_AND_PRIOS_SUPPORTED;
 }
 
-static bool mlx5_chains_ignore_flow_level_supported(struct mlx5_fs_chains *chains)
+bool mlx5_chains_ignore_flow_level_supported(struct mlx5_fs_chains *chains)
 {
 	return chains->flags & MLX5_CHAINS_IGNORE_FLOW_LEVEL_SUPPORTED;
 }
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_chains.h +5 -0
index 6d5be31b05dd..9f53a0823558 100644
@@ -27,6 +27,7 @@ struct mlx5_chains_attr {
 
 bool
 mlx5_chains_prios_supported(struct mlx5_fs_chains *chains);
+bool mlx5_chains_ignore_flow_level_supported(struct mlx5_fs_chains *chains);
 bool
 mlx5_chains_backwards_supported(struct mlx5_fs_chains *chains);
 u32
@@ -72,6 +73,10 @@ mlx5_chains_set_end_ft(struct mlx5_fs_chains *chains,
 
 #else /* CONFIG_MLX5_CLS_ACT */
 
+static inline bool
+mlx5_chains_ignore_flow_level_supported(struct mlx5_fs_chains *chains)
+{ return false; }
+
 static inline struct mlx5_flow_table *
 mlx5_chains_get_table(struct mlx5_fs_chains *chains, u32 chain, u32 prio,
 		      u32 level) { return ERR_PTR(-EOPNOTSUPP); }
drivers/net/ethernet/mellanox/mlx5/core/steering/dr_fw.c +2 -1
index 1fbcd012bb85..7ccfd40586ce 100644
@@ -112,7 +112,8 @@ int mlx5dr_fw_create_md_tbl(struct mlx5dr_domain *dmn,
 	int ret;
 
 	ft_attr.table_type = MLX5_FLOW_TABLE_TYPE_FDB;
-	ft_attr.level = dmn->info.caps.max_ft_level - 2;
+	ft_attr.level = min_t(int, dmn->info.caps.max_ft_level - 2,
+			      MLX5_FT_MAX_MULTIPATH_LEVEL);
 	ft_attr.reformat_en = reformat_req;
 	ft_attr.decap_en = reformat_req;
 
drivers/net/wireguard/Makefile +1 -2
index fc52b2cb500b..dbe1f8514efc 100644
@@ -1,5 +1,4 @@
-ccflags-y := -O3
-ccflags-y += -D'pr_fmt(fmt)=KBUILD_MODNAME ": " fmt'
+ccflags-y := -D'pr_fmt(fmt)=KBUILD_MODNAME ": " fmt'
 ccflags-$(CONFIG_WIREGUARD_DEBUG) += -DDEBUG
 wireguard-y := main.o
 wireguard-y += noise.o
drivers/net/wireguard/allowedips.c +99 -90

287 lines not on this page · raw message

drivers/net/wireguard/allowedips.h +7 -7
index e5c83cafcef4..2346c797eb4d 100644
@@ -15,14 +15,11 @@ struct wg_peer;
 struct allowedips_node {
 	struct wg_peer __rcu *peer;
 	struct allowedips_node __rcu *bit[2];
-	/* While it may seem scandalous that we waste space for v4,
-	 * we're alloc'ing to the nearest power of 2 anyway, so this
-	 * doesn't actually make a difference.
-	 */
-	u8 bits[16] __aligned(__alignof(u64));
 	u8 cidr, bit_at_a, bit_at_b, bitlen;
+	u8 bits[16] __aligned(__alignof(u64));
 
-	/* Keep rarely used list at bottom to be beyond cache line. */
+	/* Keep rarely used members at bottom to be beyond cache line. */
+	unsigned long parent_bit_packed;
 	union {
 		struct list_head peer_list;
 		struct rcu_head rcu;
@@ -33,7 +30,7 @@ struct allowedips {
 	struct allowedips_node __rcu *root4;
 	struct allowedips_node __rcu *root6;
 	u64 seq;
-};
+} __aligned(4); /* We pack the lower 2 bits of &root, but m68k only gives 16-bit alignment. */
 
 void wg_allowedips_init(struct allowedips *table);
 void wg_allowedips_free(struct allowedips *table, struct mutex *mutex);
@@ -56,4 +53,7 @@ struct wg_peer *wg_allowedips_lookup_src(struct allowedips *table,
 bool wg_allowedips_selftest(void);
 #endif
 
+int wg_allowedips_slab_init(void);
+void wg_allowedips_slab_uninit(void);
+
 #endif /* _WG_ALLOWEDIPS_H */
drivers/net/wireguard/main.c +16 -1
index 7a7d5f1a80fc..75dbe77b0b4b 100644
@@ -21,13 +21,22 @@ static int __init mod_init(void)
 {
 	int ret;
 
+	ret = wg_allowedips_slab_init();
+	if (ret < 0)
+		goto err_allowedips;
+
 #ifdef DEBUG
+	ret = -ENOTRECOVERABLE;
 	if (!wg_allowedips_selftest() || !wg_packet_counter_selftest() ||
 	    !wg_ratelimiter_selftest())
-		return -ENOTRECOVERABLE;
+		goto err_peer;
 #endif
 	wg_noise_init();
 
+	ret = wg_peer_init();
+	if (ret < 0)
+		goto err_peer;
+
 	ret = wg_device_init();
 	if (ret < 0)
 		goto err_device;
@@ -44,6 +53,10 @@ static int __init mod_init(void)
 err_netlink:
 	wg_device_uninit();
 err_device:
+	wg_peer_uninit();
+err_peer:
+	wg_allowedips_slab_uninit();
+err_allowedips:
 	return ret;
 }
 
@@ -51,6 +64,8 @@ static void __exit mod_exit(void)
 {
 	wg_genetlink_uninit();
 	wg_device_uninit();
+	wg_peer_uninit();
+	wg_allowedips_slab_uninit();
 }
 
 module_init(mod_init);
drivers/net/wireguard/peer.c +20 -7
index cd5cb0292cb6..1acd00ab2fbc 100644
@@ -15,6 +15,7 @@
 #include <linux/rcupdate.h>
 #include <linux/list.h>
 
+static struct kmem_cache *peer_cache;
 static atomic64_t peer_counter = ATOMIC64_INIT(0);
 
 struct wg_peer *wg_peer_create(struct wg_device *wg,
@@ -29,10 +30,10 @@ struct wg_peer *wg_peer_create(struct wg_device *wg,
 	if (wg->num_peers >= MAX_PEERS_PER_DEVICE)
 		return ERR_PTR(ret);
 
-	peer = kzalloc(sizeof(*peer), GFP_KERNEL);
+	peer = kmem_cache_zalloc(peer_cache, GFP_KERNEL);
 	if (unlikely(!peer))
 		return ERR_PTR(ret);
-	if (dst_cache_init(&peer->endpoint_cache, GFP_KERNEL))
+	if (unlikely(dst_cache_init(&peer->endpoint_cache, GFP_KERNEL)))
 		goto err;
 
 	peer->device = wg;
@@ -64,7 +65,7 @@ struct wg_peer *wg_peer_create(struct wg_device *wg,
 	return peer;
 
 err:
-	kfree(peer);
+	kmem_cache_free(peer_cache, peer);
 	return ERR_PTR(ret);
 }
 
@@ -88,7 +89,7 @@ static void peer_make_dead(struct wg_peer *peer)
 	/* Mark as dead, so that we don't allow jumping contexts after. */
 	WRITE_ONCE(peer->is_dead, true);
 
-	/* The caller must now synchronize_rcu() for this to take effect. */
+	/* The caller must now synchronize_net() for this to take effect. */
 }
 
 static void peer_remove_after_dead(struct wg_peer *peer)
@@ -160,7 +161,7 @@ void wg_peer_remove(struct wg_peer *peer)
 	lockdep_assert_held(&peer->device->device_update_lock);
 
 	peer_make_dead(peer);
-	synchronize_rcu();
+	synchronize_net();
 	peer_remove_after_dead(peer);
 }
 
@@ -178,7 +179,7 @@ void wg_peer_remove_all(struct wg_device *wg)
 		peer_make_dead(peer);
 		list_add_tail(&peer->peer_list, &dead_peers);
 	}
-	synchronize_rcu();
+	synchronize_net();
 	list_for_each_entry_safe(peer, temp, &dead_peers, peer_list)
 		peer_remove_after_dead(peer);
 }
@@ -193,7 +194,8 @@ static void rcu_release(struct rcu_head *rcu)
 	/* The final zeroing takes care of clearing any remaining handshake key
 	 * material and other potentially sensitive information.
 	 */
-	kfree_sensitive(peer);
+	memzero_explicit(peer, sizeof(*peer));
+	kmem_cache_free(peer_cache, peer);
 }
 
 static void kref_release(struct kref *refcount)
@@ -225,3 +227,14 @@ void wg_peer_put(struct wg_peer *peer)
 		return;
 	kref_put(&peer->refcount, kref_release);
 }
+
+int __init wg_peer_init(void)
+{
+	peer_cache = KMEM_CACHE(wg_peer, 0);
+	return peer_cache ? 0 : -ENOMEM;
+}
+
+void wg_peer_uninit(void)
+{
+	kmem_cache_destroy(peer_cache);
+}
drivers/net/wireguard/peer.h +3 -0
index 8d53b687a1d1..76e4d3128ad4 100644
@@ -80,4 +80,7 @@ void wg_peer_put(struct wg_peer *peer);
 void wg_peer_remove(struct wg_peer *peer);
 void wg_peer_remove_all(struct wg_device *wg);
 
+int wg_peer_init(void);
+void wg_peer_uninit(void);
+
 #endif /* _WG_PEER_H */
drivers/net/wireguard/selftest/allowedips.c +79 -86

276 lines not on this page · raw message

drivers/net/wireguard/socket.c +1 -1
index d9ad850daa79..8c496b747108 100644
@@ -430,7 +430,7 @@ void wg_socket_reinit(struct wg_device *wg, struct sock *new4,
 	if (new4)
 		wg->incoming_port = ntohs(inet_sk(new4)->inet_sport);
 	mutex_unlock(&wg->socket_update_lock);
-	synchronize_rcu();
+	synchronize_net();
 	sock_free(old4);
 	sock_free(old6);
 }
drivers/net/wireless/mediatek/mt76/mt76x0/pci.c +77 -4

117 lines not on this page · raw message

drivers/net/wireless/mediatek/mt76/mt7921/mcu.c +16 -8
index 62afbad77596..be88c9f5637a 100644
@@ -391,29 +391,37 @@ static void
 mt7921_mcu_tx_rate_report(struct mt7921_dev *dev, struct sk_buff *skb,
 			  u16 wlan_idx)
 {
-	struct mt7921_mcu_wlan_info_event *wtbl_info =
-		(struct mt7921_mcu_wlan_info_event *)(skb->data);
-	struct rate_info rate = {};
-	u8 curr_idx = wtbl_info->rate_info.rate_idx;
-	u16 curr = le16_to_cpu(wtbl_info->rate_info.rate[curr_idx]);
-	struct mt7921_mcu_peer_cap peer = wtbl_info->peer_cap;
+	struct mt7921_mcu_wlan_info_event *wtbl_info;
 	struct mt76_phy *mphy = &dev->mphy;
 	struct mt7921_sta_stats *stats;
+	struct rate_info rate = {};
 	struct mt7921_sta *msta;
 	struct mt76_wcid *wcid;
+	u8 idx;
 
 	if (wlan_idx >= MT76_N_WCIDS)
 		return;
+
+	wtbl_info = (struct mt7921_mcu_wlan_info_event *)skb->data;
+	idx = wtbl_info->rate_info.rate_idx;
+	if (idx >= ARRAY_SIZE(wtbl_info->rate_info.rate))
+		return;
+
+	rcu_read_lock();
+
 	wcid = rcu_dereference(dev->mt76.wcid[wlan_idx]);
 	if (!wcid)
-		return;
+		goto out;
 
 	msta = container_of(wcid, struct mt7921_sta, wcid);
 	stats = &msta->stats;
 
 	/* current rate */
-	mt7921_mcu_tx_rate_parse(mphy, &peer, &rate, curr);
+	mt7921_mcu_tx_rate_parse(mphy, &wtbl_info->peer_cap, &rate,
+				 le16_to_cpu(wtbl_info->rate_info.rate[idx]));
 	stats->tx_rate = rate;
+out:
+	rcu_read_unlock();
 }
 
 static void
drivers/net/xen-netback/interface.c +6 -0
index 193b723fe3bd..c58996c1e230 100644
@@ -684,6 +684,7 @@ static void xenvif_disconnect_queue(struct xenvif_queue *queue)
 {
 	if (queue->task) {
 		kthread_stop(queue->task);
[… more lines in the raw message]

Lines of this file are not shown. View the raw message.

drivers/nvme/host/rdma.c +3 -2
index be905d4fdb47..ce8b3ce7582b 100644

Lines of this file are not shown. View the raw message.

drivers/nvme/target/core.c +16 -17
index 348057fdc568..7d16cb4cd8ac 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/lpfc/lpfc_sli.c +1 -3
index 920cf329268b..f8a5a4eb5bce 100644

Lines of this file are not shown. View the raw message.

drivers/tee/optee/call.c +4 -2
index 7a77e375b503..6b52f0c526ba 100644

Lines of this file are not shown. View the raw message.

drivers/tee/optee/optee_msg.h +4 -2
index 81ff593ac4ec..e3d72d09c484 100644

Lines of this file are not shown. View the raw message.

drivers/thermal/intel/therm_throt.c +11 -4
index f8e882592ba5..99abdc03c44c 100644

Lines of this file are not shown. View the raw message.

drivers/tty/serial/stm32-usart.c +12 -10
index 99dfa884cbef..68c6535bbf7f 100644

Lines of this file are not shown. View the raw message.

drivers/usb/dwc2/core_intr.c +4 -0
index 510fd0572feb..e3f429f1575e 100644

Lines of this file are not shown. View the raw message.

drivers/vfio/pci/Kconfig +1 -0
index 4abddbebd4b2..c691127bc805 100644

Lines of this file are not shown. View the raw message.

drivers/vfio/pci/vfio_pci_config.c +1 -1
index a402adee8a21..47f21a6ca7fe 100644

Lines of this file are not shown. View the raw message.

drivers/vfio/platform/vfio_platform_common.c +1 -1
index fb4b385191f2..e83a7cd15c95 100644

Lines of this file are not shown. View the raw message.

fs/btrfs/extent-tree.c +1 -1
index 5b82050b871a..27c368007481 100644

Lines of this file are not shown. View the raw message.

fs/btrfs/file-item.c +81 -27

108 lines not on this page · raw message

fs/btrfs/inode.c +18 -1
index 81b93c9c659b..3bb8ce4969f3 100644

Lines of this file are not shown. View the raw message.

fs/btrfs/reflink.c +22 -16
index 53ee17f5e382..238e713635d7 100644

Lines of this file are not shown. View the raw message.

fs/btrfs/tree-log.c +13 -8
index d7f1599e69b1..faae6ebd8a27 100644

Lines of this file are not shown. View the raw message.

fs/ext4/extents.c +23 -20

43 lines not on this page · raw message

fs/ext4/fast_commit.c +90 -80

170 lines not on this page · raw message

fs/ext4/fast_commit.h +0 -19
index b77f70f55a62..937c381b4c85 100644

Lines of this file are not shown. View the raw message.

fs/ext4/ialloc.c +4 -2
index 71d321b3b984..edbaed073ac5 100644

Lines of this file are not shown. View the raw message.

fs/ext4/mballoc.c +1 -1
index a02fadf4fc84..d24cb3dc79ff 100644

Lines of this file are not shown. View the raw message.

fs/ext4/super.c +9 -2
index 77c1cb258262..0e3a847b5d27 100644

Lines of this file are not shown. View the raw message.

fs/gfs2/glock.c +2 -0
index 9567520d79f7..7c2ba81213da 100644

Lines of this file are not shown. View the raw message.

fs/io_uring.c +47 -19

66 lines not on this page · raw message

fs/ocfs2/file.c +50 -5

55 lines not on this page · raw message

include/linux/mlx5/mlx5_ifc.h +2 -0
index 9c68b2da14c6..e5a4c68093fc 100644

Lines of this file are not shown. View the raw message.

include/linux/pgtable.h +8 -0
index 5e772392a379..136b1d996075 100644

Lines of this file are not shown. View the raw message.

include/linux/platform_data/ti-sysc.h +1 -0
index fafc1beea504..9837fb011f2f 100644

Lines of this file are not shown. View the raw message.

include/net/caif/caif_dev.h +1 -1
index 48ecca8530ff..b655d8666f55 100644

Lines of this file are not shown. View the raw message.

include/net/caif/cfcnfg.h +1 -1
index 2aa5e91d8457..8819ff4db35a 100644

Lines of this file are not shown. View the raw message.

include/net/caif/cfserl.h +1 -0
index 14a55e03bb3c..67cce8757175 100644

Lines of this file are not shown. View the raw message.

include/net/tls.h +9 -1
index 3eccb525e8f7..8341a8d1e807 100644

Lines of this file are not shown. View the raw message.

init/main.c +1 -1
index 53b278845b88..5bd1a25f1d6f 100644

Lines of this file are not shown. View the raw message.

kernel/bpf/helpers.c +5 -2
index 308427fe03a3..6140e91e9c89 100644

Lines of this file are not shown. View the raw message.

kernel/trace/bpf_trace.c +12 -20
index b0c45d923f0f..9bb3d2823f44 100644

Lines of this file are not shown. View the raw message.

mm/debug_vm_pgtable.c +2 -2
index a9bd6ce1ba02..726fd2030f64 100644

Lines of this file are not shown. View the raw message.

mm/hugetlb.c +12 -2
index 96b722af092e..ce63ec0187c5 100644

Lines of this file are not shown. View the raw message.

mm/kfence/core.c +11 -1
index f0be2c5038b5..6f29981e317f 100644

Lines of this file are not shown. View the raw message.

mm/memory.c +4 -0
index 550405fc3b5e..14a6c66b3748 100644

Lines of this file are not shown. View the raw message.

mm/page_alloc.c +2 -0
index 4bb3cdfc47f8..d9dbf45f7590 100644

Lines of this file are not shown. View the raw message.

net/bluetooth/hci_core.c +6 -1
index b0d9c36acc03..4fad2ca661ed 100644

Lines of this file are not shown. View the raw message.

net/bluetooth/hci_sock.c +2 -2
index 251b9128f530..eed0dd066e12 100644

Lines of this file are not shown. View the raw message.

net/caif/caif_dev.c +9 -4
index c10e5a55758d..440139706130 100644

Lines of this file are not shown. View the raw message.

net/caif/caif_usb.c +13 -1
index a0116b9503d9..b02e1292f7f1 100644

Lines of this file are not shown. View the raw message.

net/caif/cfcnfg.c +11 -5
index 399239a14420..cac30e676ac9 100644

Lines of this file are not shown. View the raw message.

net/caif/cfserl.c +5 -0
index e11725a4bb0e..40cd57ad0a0f 100644

Lines of this file are not shown. View the raw message.

net/core/devlink.c +2 -2
index 737b61c2976e..4c363fa7d4d1 100644

Lines of this file are not shown. View the raw message.

net/core/neighbour.c +1 -0
index 98f20efbfadf..bf774575ad71 100644

Lines of this file are not shown. View the raw message.

net/core/sock.c +12 -4
index 9c7b143e7a96..a266760cd65e 100644

Lines of this file are not shown. View the raw message.

net/dsa/tag_8021q.c +1 -1
index 008c1ec6e20c..122ad5833fb1 100644

Lines of this file are not shown. View the raw message.

net/ieee802154/nl-mac.c +3 -1
index 0c1b0770c59e..c23c152860b7 100644

Lines of this file are not shown. View the raw message.

net/ieee802154/nl-phy.c +3 -1
index 2cdc7e63fe17..88215b5c93aa 100644

Lines of this file are not shown. View the raw message.

net/ipv6/route.c +6 -2
index 373d48073106..36e80b3598b0 100644

Lines of this file are not shown. View the raw message.

net/mptcp/protocol.c +15 -1
index 228dd40828c4..225b98821517 100644

Lines of this file are not shown. View the raw message.

net/mptcp/subflow.c +38 -38

76 lines not on this page · raw message

net/netfilter/ipvs/ip_vs_ctl.c +1 -1
index d45dbcba8b49..c25097092a06 100644

Lines of this file are not shown. View the raw message.

net/netfilter/nf_conntrack_proto.c +1 -1
index 47e9319d2cf3..71892822bbf5 100644

Lines of this file are not shown. View the raw message.

net/netfilter/nf_tables_api.c +3 -1
index 878ed49d0c56..31016c144c48 100644

Lines of this file are not shown. View the raw message.

net/netfilter/nfnetlink_cthelper.c +6 -2
index 0f94fce1d3ed..04a12a264cf7 100644

Lines of this file are not shown. View the raw message.

net/netfilter/nft_ct.c +1 -1
index 882fe8648653..6d2b382f5e07 100644

Lines of this file are not shown. View the raw message.

net/nfc/llcp_sock.c +2 -0
index 53dbe733f998..6cfd30fc0798 100644

Lines of this file are not shown. View the raw message.

net/sched/act_ct.c +4 -6
index 48fdf7293dea..ba7f57cb41c3 100644

Lines of this file are not shown. View the raw message.

net/sched/sch_htb.c +4 -4
index 081c11d5717c..8827987ba903 100644

Lines of this file are not shown. View the raw message.

net/tipc/bearer.c +66 -28

94 lines not on this page · raw message

net/tls/tls_device.c +49 -11

60 lines not on this page · raw message

net/tls/tls_device_fallback.c +7 -0
index cacf040872c7..e40bedd112b6 100644

Lines of this file are not shown. View the raw message.

net/tls/tls_main.c +1 -0
index 47b7c5334c34..fde56ff49163 100644

Lines of this file are not shown. View the raw message.

samples/vfio-mdev/mdpy-fb.c +9 -4
index 21dbf63d6e41..9ec93d90e8a5 100644

Lines of this file are not shown. View the raw message.

scripts/Makefile.modfinal +1 -1
index 735e11e9041b..19468831fcc7 100644

Lines of this file are not shown. View the raw message.

scripts/link-vmlinux.sh +1 -1
index 3b261b0f74f0..0a16928e495b 100755

Lines of this file are not shown. View the raw message.

sound/core/timer.c +2 -1
index 6898b1ac0d7f..92b7008fcdb8 100644

Lines of this file are not shown. View the raw message.

sound/pci/hda/hda_codec.c +5 -0
index 2026f1ccaf5a..a220f7ac8126 100644

Lines of this file are not shown. View the raw message.

sound/pci/hda/patch_realtek.c +1 -0
index d8424d226714..cc13a68197f3 100644

Lines of this file are not shown. View the raw message.

tools/perf/util/dwarf-aux.c +6 -2
index 7b2d471a6419..4343356f3cf9 100644

Lines of this file are not shown. View the raw message.

tools/perf/util/probe-finder.c +3 -0
index 1b118c9c86a6..bba61b95a37a 100644

Lines of this file are not shown. View the raw message.

tools/testing/selftests/wireguard/netns.sh +1 -0
index 7ed7cd95e58f..ebc4ee0fe179 100755

Lines of this file are not shown. View the raw message.

tools/testing/selftests/wireguard/qemu/kernel.config +0 -1
index 4eecb432a66c..74db83a0aedd 100644

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

Part of the diff is not shown here. View the raw message.