Skip to contentSkip to conversation

Linux 6.2.9

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Mar 30, 2023 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 6.2.9 kernel.

All users of the 6.2 kernel series must upgrade.

The updated 6.2.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.2.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/e60k02.dtsi                                  |    1 
 arch/arm/boot/dts/e70k02.dtsi                                  |    1 
 arch/arm/boot/dts/imx6sl-tolino-shine2hd.dts                   |    1 
 arch/arm64/boot/dts/freescale/imx8-ss-lsio.dtsi                |    2 
 arch/arm64/boot/dts/freescale/imx8dxl-evk.dts                  |    6 
 arch/arm64/boot/dts/freescale/imx8mm-nitrogen-r2.dts           |    2 
 arch/arm64/boot/dts/freescale/imx8mn.dtsi                      |    5 
 arch/arm64/boot/dts/freescale/imx93.dtsi                       |   16 
 arch/arm64/boot/dts/qcom/sc7280.dtsi                           |    2 
 arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts     |   14 
 arch/arm64/boot/dts/qcom/sm6375.dtsi                           |    1 
 arch/arm64/boot/dts/qcom/sm8150.dtsi                           |    4 
 arch/arm64/boot/dts/qcom/sm8450.dtsi                           |    5 
 arch/arm64/kernel/efi-header.S                                 |    2 
 arch/m68k/kernel/traps.c                                       |    4 
 arch/m68k/mm/motorola.c                                        |   10 
 arch/powerpc/xmon/xmon.c                                       |    2 
 arch/riscv/Kconfig                                             |   22 +
 arch/riscv/Makefile                                            |   10 
 arch/riscv/include/asm/tlbflush.h                              |    2 
 arch/riscv/include/uapi/asm/setup.h                            |    8 
 arch/riscv/mm/context.c                                        |    2 
 arch/riscv/mm/tlbflush.c                                       |    2 
 arch/sh/include/asm/processor_32.h                             |    1 
 arch/sh/kernel/signal_32.c                                     |    3 
 arch/x86/events/amd/core.c                                     |    3 
 arch/x86/kernel/fpu/xstate.c                                   |   30 -
 arch/x86/mm/cpu_entry_area.c                                   |    7 
 drivers/acpi/x86/s2idle.c                                      |   24 -
 drivers/acpi/x86/utils.c                                       |   37 -
 drivers/atm/idt77252.c                                         |   11 
 drivers/block/ublk_drv.c                                       |   31 -
 drivers/bluetooth/btqcomsmd.c                                  |   17 
 drivers/bluetooth/btsdio.c                                     |    1 
 drivers/bluetooth/btusb.c                                      |   10 
 drivers/bus/imx-weim.c                                         |    2 
 drivers/char/random.c                                          |    2 
 drivers/firmware/arm_scmi/mailbox.c                            |   37 +
 drivers/firmware/efi/earlycon.c                                |   16 
 drivers/firmware/efi/efi-init.c                                |    3 
 drivers/firmware/efi/libstub/arm64-stub.c                      |    4 
 drivers/firmware/efi/libstub/arm64.c                           |   39 +
 drivers/firmware/efi/libstub/efi-stub-entry.c                  |   11 
 drivers/firmware/efi/libstub/efi-stub.c                        |    5 
 drivers/firmware/efi/libstub/efistub.h                         |   42 +
 drivers/firmware/efi/libstub/screen_info.c                     |    9 
 drivers/firmware/efi/libstub/smbios.c                          |   15 
 drivers/firmware/efi/libstub/zboot-header.S                    |    2 
 drivers/firmware/efi/libstub/zboot.c                           |    5 
 drivers/firmware/efi/sysfb_efi.c                               |    5 
 drivers/firmware/sysfb.c                                       |    4 
 drivers/firmware/sysfb_simplefb.c                              |    2 
 drivers/gpu/drm/amd/amdgpu/amdgpu.h                            |    5 
 drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c                       |   41 +
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c                     |   15 
 drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c                        |    5 
 drivers/gpu/drm/amd/amdgpu/amdgpu_object.c                     |    2 
 drivers/gpu/drm/amd/amdgpu/nbio_v7_2.c                         |   14 
 drivers/gpu/drm/amd/amdgpu/nv.c                                |    2 
 drivers/gpu/drm/amd/amdgpu/vi.c                                |   17 
 drivers/gpu/drm/amd/display/dc/clk_mgr/dcn301/vg_clk_mgr.c     |   19 
 drivers/gpu/drm/amd/display/dc/core/dc_link.c                  |    9 
 drivers/gpu/drm/amd/display/dc/dcn32/dcn32_dccg.c              |    3 
 drivers/gpu/drm/amd/display/dc/dcn32/dcn32_hwseq.c             |    4 
 drivers/gpu/drm/amd/display/dc/dcn32/dcn32_resource.c          |    1 
 drivers/gpu/drm/bridge/lontium-lt8912b.c                       |    4 
 drivers/gpu/drm/i915/display/intel_crtc.c                      |    8 
 drivers/gpu/drm/i915/display/intel_display.c                   |    1 
 drivers/gpu/drm/i915/display/intel_fbdev.c                     |   24 -
 drivers/gpu/drm/i915/gt/intel_gt.c                             |    4 
 drivers/gpu/drm/i915/gt/intel_gt_pm.c                          |   27 -
 drivers/gpu/drm/i915/gt/intel_gt_pm_debugfs.c                  |    2 
 drivers/gpu/drm/i915/gt/intel_rc6.c                            |    8 
 drivers/gpu/drm/i915/gt/uc/intel_guc_capture.c                 |   30 +
 drivers/gpu/drm/i915/gt/uc/intel_guc_rc.c                      |   13 
 drivers/gpu/drm/i915/i915_active.c                             |    3 
 drivers/gpu/drm/i915/i915_gpu_error.h                          |    2 
 drivers/gpu/drm/i915/i915_reg.h                                |    9 
 drivers/gpu/drm/meson/meson_drv.c                              |   13 
 drivers/gpu/drm/tiny/cirrus.c                                  |    2 
 drivers/hid/hid-cp2112.c                                       |    1 
 drivers/hid/hid-logitech-hidpp.c                               |    2 
 drivers/hid/intel-ish-hid/ipc/ipc.c                            |    9 
 drivers/hwmon/hwmon.c                                          |    7 
 drivers/hwmon/it87.c                                           |    4 
 drivers/i2c/busses/i2c-hisi.c                                  |    6 
 drivers/i2c/busses/i2c-imx-lpi2c.c                             |    4 
 drivers/i2c/busses/i2c-mxs.c                                   |   18 
 drivers/i2c/busses/i2c-xgene-slimpro.c                         |    3 
 drivers/interconnect/qcom/osm-l3.c                             |    2 
 drivers/interconnect/qcom/qcm2290.c                            |    4 
 drivers/interconnect/qcom/sm8450.c                             |   98 ----
 drivers/md/dm-crypt.c                                          |   16 
 drivers/md/dm-stats.c                                          |    7 
 drivers/md/dm-stats.h                                          |    2 
 drivers/md/dm-thin.c                                           |    2 
 drivers/md/dm.c                                                |    4 
 drivers/net/dsa/b53/b53_mmap.c                                 |    2 
 drivers/net/dsa/mt7530.c                                       |   49 +-
 drivers/net/ethernet/google/gve/gve_ethtool.c                  |    5 
 drivers/net/ethernet/intel/i40e/i40e_txrx.c                    |    8 
 drivers/net/ethernet/intel/iavf/iavf_common.c                  |    2 
 drivers/net/ethernet/intel/iavf/iavf_main.c                    |   13 
 drivers/net/ethernet/intel/iavf/iavf_txrx.c                    |    2 
 drivers/net/ethernet/intel/iavf/iavf_virtchnl.c                |    2 
 drivers/net/ethernet/intel/ice/ice_sriov.c                     |    8 
 drivers/net/ethernet/intel/igb/igb_main.c                      |    2 
 drivers/net/ethernet/intel/igbvf/netdev.c                      |    8 
 drivers/net/ethernet/intel/igbvf/vf.c                          |   13 
 drivers/net/ethernet/intel/igc/igc_main.c                      |   20 
 drivers/net/ethernet/marvell/octeontx2/nic/otx2_vf.c           |    2 
 drivers/net/ethernet/mellanox/mlx5/core/en_accel/macsec.c      |    9 
 drivers/net/ethernet/mellanox/mlx5/core/en_dcbnl.c             |    6 
 drivers/net/ethernet/mellanox/mlx5/core/en_main.c              |    6 
 drivers/net/ethernet/mellanox/mlx5/core/esw/acl/ingress_ofld.c |    3 
 drivers/net/ethernet/mellanox/mlx5/core/eswitch.c              |    1 
 drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c     |   19 
 drivers/net/ethernet/mellanox/mlxsw/core_thermal.c             |  216 ++--------
 drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c             |    4 
 drivers/net/ethernet/mscc/ocelot_stats.c                       |    3 
 drivers/net/ethernet/natsemi/sonic.c                           |    4 
 drivers/net/ethernet/qlogic/qed/qed_sriov.c                    |    5 
 drivers/net/ethernet/qualcomm/emac/emac.c                      |    6 
 drivers/net/ethernet/stmicro/stmmac/common.h                   |    1 
 drivers/net/ethernet/stmicro/stmmac/dwmac-imx.c                |    2 
 drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c              |    4 
 drivers/net/ethernet/stmicro/stmmac/dwmac-mediatek.c           |    2 
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c              |   30 -
 drivers/net/ethernet/toshiba/ps3_gelic_net.c                   |   41 +
 drivers/net/ethernet/toshiba/ps3_gelic_net.h                   |    5 
 drivers/net/ethernet/xircom/xirc2ps_cs.c                       |    5 
 drivers/net/ieee802154/ca8210.c                                |    2 
 drivers/net/mdio/acpi_mdio.c                                   |   10 
 drivers/net/mdio/mdio-thunder.c                                |    1 
 drivers/net/mdio/of_mdio.c                                     |   12 
 drivers/net/phy/mdio_devres.c                                  |   11 
 drivers/net/phy/phy.c                                          |   23 -
 drivers/net/usb/asix_devices.c                                 |   32 +
 drivers/net/usb/cdc_mbim.c                                     |    5 
 drivers/net/usb/lan78xx.c                                      |   18 
 drivers/net/usb/qmi_wwan.c                                     |    1 
 drivers/net/usb/smsc95xx.c                                     |    6 
 drivers/net/wireguard/queueing.h                               |    2 
 drivers/net/wireless/mediatek/mt76/mac80211.c                  |    8 
 drivers/net/wireless/mediatek/mt76/mt76.h                      |    1 
 drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c           |    3 
 drivers/nvme/host/ioctl.c                                      |   14 
 drivers/platform/chrome/cros_ec_chardev.c                      |    2 
 drivers/platform/x86/intel/int3472/tps68470_board_data.c       |    5 
 drivers/power/supply/bq24190_charger.c                         |    1 
 drivers/power/supply/da9150-charger.c                          |    1 
 drivers/scsi/device_handler/scsi_dh_alua.c                     |    6 
 drivers/scsi/hisi_sas/hisi_sas_v3_hw.c                         |    3 
 drivers/scsi/lpfc/lpfc_init.c                                  |   16 
 drivers/scsi/lpfc/lpfc_sli.c                                   |   12 
 drivers/scsi/mpi3mr/mpi3mr_app.c                               |    4 
 drivers/scsi/mpi3mr/mpi3mr_fw.c                                |   19 
 drivers/scsi/mpi3mr/mpi3mr_transport.c                         |   15 
 drivers/scsi/qla2xxx/qla_gbl.h                                 |    1 
 drivers/scsi/qla2xxx/qla_init.c                                |    3 
 drivers/scsi/qla2xxx/qla_isr.c                                 |    3 
 drivers/scsi/qla2xxx/qla_os.c                                  |   21 
 drivers/scsi/scsi_devinfo.c                                    |    1 
 drivers/scsi/storvsc_drv.c                                     |   16 
 drivers/soc/qcom/llcc-qcom.c                                   |    6 
 drivers/target/iscsi/iscsi_target_parameters.c                 |   12 
 drivers/tee/amdtee/core.c                                      |   29 -
 drivers/thunderbolt/debugfs.c                                  |   12 
 drivers/thunderbolt/nhi.c                                      |   49 +-
 drivers/thunderbolt/nhi_regs.h                                 |    6 
 drivers/thunderbolt/quirks.c                                   |   13 
 drivers/thunderbolt/retimer.c                                  |   23 -
 drivers/thunderbolt/sb_regs.h                                  |    1 
 drivers/thunderbolt/switch.c                                   |    4 
 drivers/thunderbolt/tb.h                                       |   12 
 drivers/thunderbolt/usb4.c                                     |   36 +
 drivers/tty/hvc/hvc_xen.c                                      |   19 
 drivers/ufs/core/ufshcd.c                                      |    1 
 drivers/usb/cdns3/cdns3-pci-wrap.c                             |    5 
 drivers/usb/cdns3/cdnsp-ep0.c                                  |   19 
 drivers/usb/cdns3/cdnsp-pci.c                                  |   27 -
 drivers/usb/chipidea/ci.h                                      |    2 
 drivers/usb/chipidea/core.c                                    |   11 
 drivers/usb/chipidea/otg.c                                     |    5 
 drivers/usb/dwc2/drd.c                                         |    3 
 drivers/usb/dwc2/gadget.c                                      |    6 
 drivers/usb/dwc2/platform.c                                    |   19 
 drivers/usb/dwc3/gadget.c                                      |   14 
 drivers/usb/gadget/function/u_audio.c                          |    2 
 drivers/usb/misc/onboard_usb_hub.c                             |    1 
 drivers/usb/misc/onboard_usb_hub.h                             |    1 
 drivers/usb/storage/unusual_uas.h                              |    7 
 drivers/usb/typec/tcpm/tcpm.c                                  |   28 +
 drivers/usb/typec/ucsi/ucsi.c                                  |   11 
 drivers/usb/typec/ucsi/ucsi_acpi.c                             |    2 
 fs/btrfs/zoned.c                                               |   14 
 fs/cifs/cached_dir.c                                           |   37 +
 fs/cifs/cifs_debug.c                                           |   46 +-
 fs/cifs/cifsfs.c                                               |    9 
 fs/cifs/cifssmb.c                                              |    6 
 fs/cifs/connect.c                                              |   14 
 fs/cifs/fs_context.h                                           |    2 
 fs/cifs/link.c                                                 |    2 
 fs/cifs/smb2inode.c                                            |    1 
 fs/cifs/smb2ops.c                                              |   27 +
 fs/cifs/smb2pdu.c                                              |   12 
 fs/cifs/trace.h                                                |   12 
 fs/ksmbd/auth.c                                                |    5 
 fs/ksmbd/connection.c                                          |   11 
 fs/ksmbd/connection.h                                          |    3 
 fs/ksmbd/smb2pdu.c                                             |   20 
 fs/ksmbd/smb_common.c                                          |   27 +
 fs/ksmbd/smb_common.h                                          |   30 -
 fs/ksmbd/transport_rdma.c                                      |    2 
 fs/ksmbd/transport_tcp.c                                       |   35 +
 fs/lockd/clnt4xdr.c                                            |    9 
 fs/lockd/xdr4.c                                                |   13 
 fs/nfs/dir.c                                                   |    2 
 fs/nfs/read.c                                                  |    3 
 fs/nfsd/vfs.c                                                  |    9 
 fs/nilfs2/ioctl.c                                              |    2 
 fs/super.c                                                     |   15 
 fs/verity/verify.c                                             |   12 
 include/linux/acpi_mdio.h                                      |    9 
 include/linux/context_tracking.h                               |    1 
 include/linux/context_tracking_state.h                         |    2 
 include/linux/efi.h                                            |    1 
 include/linux/io_uring.h                                       |   11 
 include/linux/lockd/xdr4.h                                     |    1 
 include/linux/nvme-tcp.h                                       |    5 
 include/linux/of_mdio.h                                        |   22 -
 include/linux/stmmac.h                                         |    2 
 include/linux/sysfb.h                                          |    9 
 io_uring/filetable.c                                           |    3 
 io_uring/net.c                                                 |   25 -
 io_uring/rsrc.c                                                |    1 
 io_uring/uring_cmd.c                                           |   10 
 kernel/bpf/core.c                                              |    2 
 kernel/entry/common.c                                          |    5 
 kernel/events/core.c                                           |    4 
 kernel/kcsan/Makefile                                          |    2 
 kernel/sched/core.c                                            |    3 
 kernel/sched/fair.c                                            |   54 ++
 kernel/trace/trace_hwlat.c                                     |    4 
 lib/maple_tree.c                                               |   24 -
 lib/test_maple_tree.c                                          |   48 ++
 mm/kfence/Makefile                                             |    2 
 mm/kfence/core.c                                               |   10 
 mm/ksm.c                                                       |   11 
 mm/page_alloc.c                                                |    3 
 mm/slab.c                                                      |    2 
 net/bluetooth/hci_core.c                                       |   23 -
 net/bluetooth/hci_sync.c                                       |   68 ++-
 net/bluetooth/iso.c                                            |    9 
 net/bluetooth/l2cap_core.c                                     |  117 +++--
 net/bluetooth/mgmt.c                                           |    9 
 net/dsa/tag.c                                                  |    2 
 net/dsa/tag_brcm.c                                             |   10 
 net/ipv4/ip_gre.c                                              |    4 
 net/ipv6/ip6_gre.c                                             |    4 
 net/mac80211/ieee80211_i.h                                     |    3 
 net/mac80211/main.c                                            |    2 
 net/mac80211/util.c                                            |    3 
 net/mac80211/wme.c                                             |    6 
 net/sched/act_mirred.c                                         |   23 -
 net/xdp/xdp_umem.c                                             |   13 
 security/keys/request_key.c                                    |    9 
 sound/soc/amd/yc/acp6x-mach.c                                  |   14 
 sound/soc/intel/boards/sof_rt5682.c                            |   23 +
 sound/soc/intel/common/soc-acpi-intel-mtl-match.c              |   12 
 tools/bootconfig/test-bootconfig.sh                            |   12 
 tools/testing/selftests/bpf/prog_tests/btf.c                   |   28 +
 tools/testing/selftests/net/forwarding/tc_actions.sh           |   49 ++
 tools/testing/selftests/x86/amx.c                              |  108 ++++-
 275 files changed, 2202 insertions(+), 1157 deletions(-)

AKASHI Takahiro (1):
igc: fix the validation logic for taprio's gate list

Abel Vesa (1):
soc: qcom: llcc: Fix slice configuration values for SC8280XP

Adrien Thierry (1):
scsi: ufs: core: Add soft dependency on governor_simpleondemand

Ahmed Zaki (1):
iavf: do not track VLAN 0 filters

Akihiko Odaki (1):
igbvf: Regard vf reset nack as success

Al Viro (1):
sh: sanitize the flags on sigreturn

Alexander Aring (1):
ca8210: fix mac_len negative array access

Alexander Lobakin (2):
iavf: fix inverted Rx hash condition leading to disabled hash
iavf: fix non-tunneled IPv6 UDP packet type and hashing

Alexander Stein (4):
arm64: dts: freescale: imx8-ss-lsio: Fix flexspi clock order
arm64: dts: imx93: add missing #address-cells and #size-cells to i2c nodes
i2c: imx-lpi2c: check only for enabled interrupt flags
usb: misc: onboard-hub: add support for Microchip USB2517 USB 2.0 hub

Alexander Wetzel (1):

      wifi: mac80211: Serialize ieee80211_handle_wake_tx_queue()

Alexandr Sapozhnikov (1):

      drm/cirrus: NULL-check pipe->plane.state->fb in cirrus_pipe_update()

Alexandre Ghiti (1):
riscv: Bump COMMAND_LINE_SIZE value to 1024

Alvin Šipraga (1):
usb: gadget: u_audio: don't let userspace block driver unbind

Andrew Halaney (1):
arm64: dts: imx8dxl-evk: Fix eqos phy reset gpio

Andrzej Hajda (1):
drm/i915/gt: perform uc late init after probe error injection

Ard Biesheuvel (6):
efi: earlycon: Reprobe after parsing config tables efi/libstub: smbios: Use length member instead of record struct size
arm64: efi: Use SMBIOS processor version to key off Ampere quirk efi/libstub: Use relocated version of kernel's struct screen_info efi/libstub: zboot: Mark zboot EFI application as NX compatible
arm64: efi: Set NX compat flag in PE/COFF header

Arınç ÜNAL (3):
net: dsa: mt7530: move enabling disabling core clock to mt7530_pll_setup()
net: dsa: mt7530: move lowering TRGMII driving to mt7530_setup()
net: dsa: mt7530: move setting ssc_delta to PHY_INTERFACE_MODE_TRGMII case

Aurabindo Pillai (1):
drm/amd/display: fix k1 k2 divider programming for phantom streams

Badal Nilawar (1):
drm/i915/mtl: Disable MC6 for MTL A step

Breno Leitao (1):
perf/x86/amd/core: Always clear status for idx

Brian Gix (1):
Bluetooth: Remove "Power-on" check from Mesh feature

Caleb Sander (1):
nvme-tcp: fix nvme_tcp_term_pdu to match spec

Chang S. Bae (2):
x86/fpu/xstate: Prevent false-positive warning in __copy_xstate_uabi_buf() selftests/x86/amx: Add a ptrace test

ChenXiaoSong (1):
ksmbd: fix possible refcount leak in smb2_open()

Chengen Du (1):
NFS: Correct timing for assigning access cache timestamp

Coly Li (1):
dm thin: fix deadlock when swapping to thin device

Costa Shulyupin (1):
tracing/hwlat: Replace sched_setaffinity with set_cpus_allowed_ptr

Cristian Marussi (1):
firmware: arm_scmi: Fix device node validation for mailbox transport

Cruise Hung (1):
drm/amd/display: Fix DP MST sinks removal issue

Dan Carpenter (1):
net/mlx5: E-Switch, Fix an Oops in error handling code

Daniel Borkmann (1):
bpf: Adjust insufficient default bpf_jit_limit

Daniel Lezcano (1):
thermal/drivers/mellanox: Use generic thermal_zone_get_trip() function

Daniel Scally (1):
platform/x86: int3472: Add GPIOs to Surface Go 3 Board data

Daniel Wagner (1):
scsi: qla2xxx: Add option to disable FC2 Target support

Daniil Tatianin (1):
qed/qed_sriov: guard against NULL derefs from qed_iov_get_vf_info

Danny Kaehn (1):
HID: cp2112: Fix driver not registering GPIO IRQ chip as threaded

Dave Wysochanski (1):
NFS: Fix /proc/PID/io read_bytes for buffered reads

David Howells (1):
keys: Do not cache key in task struct if key is requested from kernel thread

Davide Caratti (2):
net/sched: act_mirred: better wording on protection against excessive stack growth
act_mirred: use the backlog for nested calls to mirred ingress

Dharageswari.R (1):
ASoC: Intel: sof_rt5682: Add quirk for Rex board with mx98360a amplifier

Dmitry Baryshkov (2):
interconnect: qcom: osm-l3: fix icc_onecell_data allocation
interconnect: qcom: sm8450: switch to qcom_icc_rpmh_* function

Duc Anh Le (1):

      ASoC: amd: yc: Add DMI entries to support HP OMEN 16-n0xxx (8A43)

Dylan Jhong (1):
riscv: mm: Fix incorrect ASID argument when flushing TLB

Emeel Hakim (1):
net/mlx5e: Overcome slow response for first macsec ASO WQE

Enrico Sau (2):
net: usb: cdc_mbim: avoid altsetting toggling for Telit FE990
net: usb: qmi_wwan: add Telit 0x1080 composition

Eric Biggers (1):
fscrypt: destroy keyring after security_sb_delete()

Eric Dumazet (1):
erspan: do not use skb_mac_header() in ndo_start_xmit()

Fabrice Gasnier (2):
usb: dwc2: fix a race, don't power off/on phy for dual-role mode
usb: dwc2: fix a devres leak in hw_enable upon suspend resume

Felix Fietkau (1):
wifi: mac80211: fix qos on mesh interfaces

Florian Fainelli (2):
net: phy: Ensure state transitions are processed from phy_stop()
net: mdio: fix owner field for mdio buses registered using ACPI

Frank Crawford (1):
hwmon (it87): Fix voltage scaling for chips with 10.9mV ADCs

Frederic Weisbecker (1):
entry/rcu: Check TIF_RESCHED _after_ delayed RCU wake-up

Gaosheng Cui (1):
intel/igbvf: free irq on the error path in igbvf_request_msix()

Gavin Li (2):
net/mlx5e: Set uplink rep as NETNS_LOCAL
net/mlx5e: Block entering switchdev mode with ns inconsistency

Geert Uytterhoeven (1):
mm/slab: Fix undefined init_cache_node_node() for NUMA and !SMP

Geoff Levand (2):
net/ps3_gelic_net: Fix RX sk_buff length
net/ps3_gelic_net: Use dma_mapping_error

Gil Fine (1):
thunderbolt: Add missing UNSET_INBOUND_SBTX for retimer access

Grant Grundler (1):
net: asix: fix modprobe "sysfs: cannot create duplicate filename"

Greg Kroah-Hartman (1):

      Linux 6.2.9

Hans de Goede (3):
efi: sysfb_efi: Fix DMI quirks not working for simpledrm
usb: ucsi: Fix NULL pointer deref in ucsi_connector_change()
usb: ucsi_acpi: Increase the command completion timeout

Hersen Wu (2):
drm/amd/display: Set dcn32 caps.seamless_odm drm/amd/display: fix wrong index used in dccg32_set_dpstreamclk

Howard Chung (1):
Bluetooth: mgmt: Fix MGMT add advmon with RSSI command

Ido Schimmel (2):
mlxsw: core_thermal: Fix fan speed in maximum cooling state
mlxsw: spectrum_fid: Fix incorrect local port type

Ivan Bornyakov (1):
bus: imx-weim: fix branch condition evaluates to a garbage value

Jakob Koschel (1):
scsi: lpfc: Avoid usage of list iterator variable after loop

Jeff Layton (2):
nfsd: don't replace page in rq_pages if it's a continuation of last page
lockd: set file_lock start and end when decoding nlm4 testargs

Jens Axboe (2):
block/io_uring: pass in issue_flags for uring_cmd task_work handling io_uring/net: avoid sending -ECONNABORTED on repeated connection requests

Jiasheng Jiang (2):
octeontx2-vf: Add missing free for alloc_percpu dm stats: check for and propagate alloc_percpu failure

Jochen Henneberg (1):
net: stmmac: Fix for mismatched host/device DMA address width

Joel Selvaraj (1):
scsi: core: Add BLIST_SKIP_VPD_PAGES for SKhynix H28U74301AMR

Johan Hovold (2):
drm/meson: fix missing component unbind on bind errors
arm64: dts: qcom: sc8280xp-x13s: mark s11b regulator as always-on

John Harrison (2):
drm/i915/guc: Rename GuC register state capture node to be more obvious drm/i915/guc: Fix missing ecodes

Joseph Hunkeler (1):
ASoC: amd: yp: Add OMEN by HP Gaming Laptop 16z-n000 to quirks

Josh Poimboeuf (1):
entry: Fix noinstr warning in __enter_from_user_mode()

Joshua Washington (1):
gve: Cache link_speed value from device

Justin Tee (1):
scsi: lpfc: Check kzalloc() in lpfc_sli4_cgn_params_read()

Kai-Heng Feng (1):
drm/amdgpu/nv: Apply ASPM quirk on Intel ADL + AMD Navi

Kal Conley (1):
xsk: Add missing overflow check in xdp_umem_reg

Kang Chen (1):
scsi: hisi_sas: Check devm_add_action() return value

Kars de Jong (1):
m68k: mm: Fix systems with memory at end of 32-bit address space

Konrad Dybcio (2):
interconnect: qcom: qcm2290: Fix MASTER_SNOC_BIMC_NRT
arm64: dts: qcom: sm6375: Add missing power-domain-named to CDSP

Krishna chaitanya chundru (1):
arm64: dts: qcom: sc7280: Mark PCIe controller as cache coherent

Krzysztof Kozlowski (2):
arm64: dts: qcom: sm8450: correct WSA2 assigned clocks
arm64: dts: imx8mm-nitrogen-r2: fix WM8960 clock name

Lama Kayal (1):
net/mlx5: Fix steering rules cleanup

Li Zetao (1):

      atm: idt77252: fix kmemleak when rmmod idt77252

Liam R. Howlett (3):
test_maple_tree: add more testing for mas_empty_area()
maple_tree: fix mas_skip_node() end slot detection mm/ksm: fix race with VMA iteration and mm_struct teardown

Liang He (1):
net: mdio: thunder: Add missing fwnode_handle_put()

Lin Ma (1):
igb: revert rtnl_lock() that causes deadlock

Linus Torvalds (1):
cpumask: fix incorrect cpumask scanning result checks

Lorenz Bauer (1):
selftests/bpf: check that modifier resolves after pointer

Lorenzo Bianconi (2):
wifi: mt76: do not run mt76_unregister_device() on unregistered hw
wifi: mt76: connac: do not check WED status for non-mmio devices

Luiz Augusto von Dentz (3):
Bluetooth: hci_core: Detect if an ACL packet is in fact an ISO packet
Bluetooth: btusb: Remove detection of ISO packets over bulk
Bluetooth: L2CAP: Fix responding with wrong PDU type

Maher Sanalla (1):
net/mlx5: Read the TC mapping of all priorities on ETS query

Manivannan Sadhasivam (3):
arm64: dts: qcom: sc8280xp: Add label property to vadc channel nodes
arm64: dts: qcom: sm8450: Mark UFS controller as cache coherent
arm64: dts: qcom: sm8150: Fix the iommu mask used for PCIe controllers

Marco Elver (2):
kfence: avoid passing -g for test
kcsan: avoid passing -g for test

Marek Vasut (1):
arm64: dts: imx8mn: specify #sound-dai-cells for SAI nodes

Mario Limonciello (5):
thunderbolt: Disable interrupt auto clear for rings
thunderbolt: Use const qualifier for ring_interrupt_index
ACPI: x86: Drop quirk for HP Elitebook
ACPI: x86: utils: Add Cezanne to the list for forcing StorageD3Enable drm/amd: Fix initialization mistake for NBIO 7.3.0

Masami Hiramatsu (Google) (1):
bootconfig: Fix testcase to increase max node

Matheus Castello (1):
drm/bridge: lt8912b: return EPROBE_DEFER if bridge is not found

Matthias Schiffer (1):
i2c: mxs: ensure that DMA buffers are safe for DMA

Maurizio Lombardi (1):
scsi: target: iscsi: Fix an error message in iscsi_check_key()

Maxime Bizon (1):
net: mdio: fix owner field for mdio buses registered using device-tree

Michael Kelley (1):
scsi: storvsc: Handle BlockSize change in Hyper-V VHD/VHDX file

Michael Schmitz (1):
m68k: Only force 030 bus error if PC not in exception table

Michal Koutný (1):
x86/mm: Do not shuffle CPU entry areas without KASLR

Michal Swiatkowski (1):
ice: check if VF exists before mode check

Mika Westerberg (3):
thunderbolt: Use scale field when allocating USB3 bandwidth
thunderbolt: Call tb_check_quirks() after initializing adapters
thunderbolt: Fix memory leak in margining

Mike Snitzer (1):
dm crypt: avoid accessing uninitialized tasklet

Mikulas Patocka (1):
dm crypt: add cond_resched() to dmcrypt_write()

Min Li (1):
Bluetooth: Fix race condition in hci_cmd_sync_clear

Muchun Song (1):
mm: kfence: fix using kfence_metadata without initialization in show_object()

Namjae Jeon (7):
ksmbd: add low bound validation to FSCTL_SET_ZERO_DATA
ksmbd: add low bound validation to FSCTL_QUERY_ALLOCATED_RANGES
ksmbd: fix wrong signingkey creation when encryption is AES256
ksmbd: set FILE_NAMED_STREAMS attribute in FS_ATTRIBUTE_INFORMATION
ksmbd: don't terminate inactive sessions after a few seconds
ksmbd: return STATUS_NOT_SUPPORTED on unsupported smb2.0 dialect
ksmbd: return unsupported error on smb1 mount

Naohiro Aota (1):
btrfs: zoned: fix btrfs_can_activate_zone() to support DUP profile

Nathan Chancellor (1):
riscv: Handle zicsr/zifencei issues between clang and binutils

Nathan Huckleberry (1):
fsverity: Remove WQ_UNBOUND from fsverity read workqueue

Nilesh Javali (1):
scsi: qla2xxx: Perform lockless command completion in abort path

Nirmoy Das (1):
drm/i915/active: Fix missing debug object activation

Pauli Virtanen (1):
Bluetooth: ISO: fix timestamped HCI ISO data packet parsing

Paulo Alcantara (1):
cifs: fix dentry lookups in directory handle cache

Pawel Laszczak (3):
usb: cdns3: Fix issue with using incorrect PCI device function
usb: cdnsp: Fixes issue with redundant Status Stage
usb: cdnsp: changes PCI Device ID to fix conflict with CNDS3 driver

Peng Fan (3):
ARM: dts: imx6sll: e70k02: fix usbotg1 pinctrl
ARM: dts: imx6sll: e60k02: fix usbotg1 pinctrl
ARM: dts: imx6sl: tolino-shine2hd: fix usbotg1 pinctrl

Peter Collingbourne (1):
Revert "kasan: drop skip_kasan_poison variable in free_pages_prepare"

Phinex Hung (1):
hwmon: fix potential sensor registration fail if of_node is missing

Quinn Tran (1):
scsi: qla2xxx: Synchronize the IOCB count to be in order

Radoslaw Tyl (1):
i40e: fix flow director packet filter programming

Rafał Szalecki (1):
HID: logitech-hidpp: Add support for Logitech MX Master 3S mouse

Ranjan Kumar (4):
scsi: mpi3mr: Driver unload crashes host when enhanced logging is enabled
scsi: mpi3mr: Wait for diagnostic save during controller init
scsi: mpi3mr: NVMe command size greater than 8K fails
scsi: mpi3mr: Bad drive in topology results kernel crash

Reka Norman (1):
HID: intel-ish-hid: ipc: Fix potential use-after-free in work function

Rijo Thomas (1):
tee: amdtee: fix race condition in amdtee_open_session

Roger Pau Monne (1):
hvc/xen: prevent concurrent accesses to the shared ring

Ryusuke Konishi (1):
nilfs2: fix kernel-infoleak in nilfs_ioctl_wrap_copy()

Saaem Rizvi (1):
drm/amd/display: Remove OTG DIV register write for Virtual signals.

Sanjay R Mehta (1):
thunderbolt: Add quirk to disable CLx

Savino Dicanosa (1):
io_uring/rsrc: fix null-ptr-deref in io_file_bitmap_get()

Shyam Prasad N (6):
cifs: lock chan_lock outside match_session
cifs: append path to open_enter trace event
cifs: do not poll server interfaces too regularly
cifs: empty interface list when server doesn't support query interfaces
cifs: dump pending mids for all channels in DebugData
cifs: print session id while listing open files

Song Liu (1):

      perf: fix perf_event_context->time

Stefan Assmann (1):
iavf: fix hang on reboot with ice

Stephan Gerhold (1):
Bluetooth: btqcomsmd: Fix command timeout after setting BD address

Steve French (2):
smb3: lower default deferred close timeout to address perf regression
smb3: fix unusable share after force unmount failure

Sungwoo Kim (1):
Bluetooth: HCI: Fix global-out-of-bounds

Swapnil Patel (1):
drm/amd/display: Update clock table to include highest clock setting

Szymon Heidrich (2):

      net: usb: smsc95xx: Limit packet length to skb->len
      net: usb: lan78xx: Limit packet length to skb->len

Tejas Upadhyay (1):
drm/i915/fbdev: lock the fbdev obj before vma pin

Tim Huang (2):
drm/amdgpu: skip ASIC reset for APUs when go to S4 drm/amdgpu: reposition the gpu reset checking for reuse

Tom Rix (1):
thunderbolt: Rename shadowed variables bit to interrupt_bit and auto_clear_bit

Tzung-Bi Shih (1):
platform/chrome: cros_ec_chardev: fix kernel data leak from ioctl

Ville Syrjälä (2):
drm/i915: Update vblank timestamping stuff on seamless M/N change drm/i915: Preserve crtc_state->inherited during state clearing

Vinay Belgaumkar (1):
drm/i915: Fix format for perf_limit_reasons

Vincent Guittot (1):
sched/fair: Sanitize vruntime of entity being migrated

Vladimir Oltean (2):
net: dsa: report rx_bytes unadjusted for ETH_HLEN
net: mscc: ocelot: fix stats region batching

Wei Chen (1):
i2c: xgene-slimpro: Fix out-of-bounds bug in xgene_slimpro_i2c_xfer()

Wei Fang (1):
arm64: dts: imx8dxl-evk: Disable hibernation mode of AR8031 for EQOS

Wesley Cheng (1):
usb: dwc3: gadget: Add 1ms delay after end transfer command without IOC

Xu Yang (4):
usb: typec: tcpm: fix create duplicate source-capabilities file
usb: typec: tcpm: fix warning when handle discover_identity message
usb: chipdea: core: fix return -EINVAL if request role is the same with current role
usb: chipidea: core: fix possible concurrent when switch role

Yang Jihong (1):
perf/core: Fix perf_output_begin parameter is incorrectly invoked in perf_event_bpf_output

Yaroslav Furman (1):
uas: Add US_FL_NO_REPORT_OPCODES for JMicron JMS583Gen 2

Yicong Yang (1):
i2c: hisi: Only use the completion interrupt to finish the transfer

Yu Kuai (1):
scsi: scsi_dh_alua: Fix memleak for 'qdata' in alua_activate()

Zhang Changzhong (1):
net/sonic: use dma_mapping_error() for error check

Zhang Qiao (1):
sched/fair: sanitize vruntime of entity being placed

Zheng Wang (5):
power: supply: bq24190: Fix use after free bug in bq24190_remove due to race condition
power: supply: da9150: Fix use after free bug in da9150_charger_remove due to race condition
xirc2ps_cs: Fix use after free bug in xirc2ps_detach
net: qcom/emac: Fix use after free bug in emac_remove due to race condition
Bluetooth: btsdio: fix use after free bug in btsdio_remove due to unfinished work

Zhengping Jiang (1):
Bluetooth: hci_sync: Resume adv with no RPA when active scan

Ziyang Huang (1):
usb: dwc2: drd: fix inconsistent mode if role-switch-default-mode="host"

lyndonli (1):
drm/amdgpu: Fix call trace warning and hang when removing amdgpu device

Álvaro Fernández Rojas (2):
net: dsa: b53: mmap: fix device tree support
net: dsa: tag_brcm: legacy: fix daisy-chained switches

author maintainer
#1 lore raw
Makefile +1 -1
index 2c90d9b067f4..8732f7208d59 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 6
 PATCHLEVEL = 2
-SUBLEVEL = 8
+SUBLEVEL = 9
 EXTRAVERSION =
 NAME = Hurr durr I'ma ninja sloth
 
arch/arm/boot/dts/e60k02.dtsi +1 -0
index 94944cc21931..dd03e3860f97 100644
@@ -311,6 +311,7 @@ &usdhc3 {
 
 &usbotg1 {
 	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_usbotg1>;
 	disable-over-current;
 	srp-disable;
 	hnp-disable;
arch/arm/boot/dts/e70k02.dtsi +1 -0
index 27ef9a62b23c..a1f9fbd6004a 100644
@@ -312,6 +312,7 @@ &usdhc3 {
 
 &usbotg1 {
 	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_usbotg1>;
 	disable-over-current;
 	srp-disable;
 	hnp-disable;
arch/arm/boot/dts/imx6sl-tolino-shine2hd.dts +1 -0
index da1399057634..815119c12bd4 100644
@@ -625,6 +625,7 @@ &usdhc3 {
 
 &usbotg1 {
 	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_usbotg1>;
 	disable-over-current;
 	srp-disable;
 	hnp-disable;
arch/arm64/boot/dts/freescale/imx8-ss-lsio.dtsi +1 -1
index 1f3d225e64ec..06b94bbc2b97 100644
@@ -117,7 +117,7 @@ flexspi0: spi@5d120000 {
 		interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
 		clocks = <&clk IMX_SC_R_FSPI_0 IMX_SC_PM_CLK_PER>,
 			 <&clk IMX_SC_R_FSPI_0 IMX_SC_PM_CLK_PER>;
-		clock-names = "fspi", "fspi_en";
+		clock-names = "fspi_en", "fspi";
 		power-domains = <&pd IMX_SC_R_FSPI_0>;
 		status = "disabled";
 	};
arch/arm64/boot/dts/freescale/imx8dxl-evk.dts +4 -2
index 280a9c9d8bd9..852420349c01 100644
@@ -121,8 +121,6 @@ &eqos {
 	phy-handle = <&ethphy0>;
 	nvmem-cells = <&fec_mac1>;
 	nvmem-cell-names = "mac-address";
-	snps,reset-gpios = <&pca6416_1 2 GPIO_ACTIVE_LOW>;
-	snps,reset-delays-us = <10 20 200000>;
 	status = "okay";
 
 	mdio {
@@ -135,6 +133,10 @@ ethphy0: ethernet-phy@0 {
 			reg = <0>;
 			eee-broken-1000t;
 			qca,disable-smarteee;
+			qca,disable-hibernation-mode;
+			reset-gpios = <&pca6416_1 2 GPIO_ACTIVE_LOW>;
+			reset-assert-us = <20>;
+			reset-deassert-us = <200000>;
 			vddio-supply = <&vddio0>;
 
 			vddio0: vddio-regulator {
arch/arm64/boot/dts/freescale/imx8mm-nitrogen-r2.dts +1 -1
index 6357078185ed..0e8f0d7161ad 100644
@@ -247,7 +247,7 @@ wm8960: codec@1a {
 		compatible = "wlf,wm8960";
 		reg = <0x1a>;
 		clocks = <&clk IMX8MM_CLK_SAI1_ROOT>;
-		clock-names = "mclk1";
+		clock-names = "mclk";
 		wlf,shared-lrclk;
 		#sound-dai-cells = <0>;
 	};
arch/arm64/boot/dts/freescale/imx8mn.dtsi +5 -0
index 7601a031f85a..b3120b49bd71 100644
@@ -296,6 +296,7 @@ spba2: spba-bus@30000000 {
 				sai2: sai@30020000 {
 					compatible = "fsl,imx8mn-sai", "fsl,imx8mq-sai";
 					reg = <0x30020000 0x10000>;
+					#sound-dai-cells = <0>;
 					interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
 					clocks = <&clk IMX8MN_CLK_SAI2_IPG>,
 						<&clk IMX8MN_CLK_DUMMY>,
@@ -310,6 +311,7 @@ sai2: sai@30020000 {
 				sai3: sai@30030000 {
 					compatible = "fsl,imx8mn-sai", "fsl,imx8mq-sai";
 					reg = <0x30030000 0x10000>;
+					#sound-dai-cells = <0>;
 					interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
 					clocks = <&clk IMX8MN_CLK_SAI3_IPG>,
 						 <&clk IMX8MN_CLK_DUMMY>,
@@ -324,6 +326,7 @@ sai3: sai@30030000 {
 				sai5: sai@30050000 {
 					compatible = "fsl,imx8mn-sai", "fsl,imx8mq-sai";
 					reg = <0x30050000 0x10000>;
+					#sound-dai-cells = <0>;
 					interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
 					clocks = <&clk IMX8MN_CLK_SAI5_IPG>,
 						 <&clk IMX8MN_CLK_DUMMY>,
@@ -340,6 +343,7 @@ sai5: sai@30050000 {
 				sai6: sai@30060000 {
 					compatible = "fsl,imx8mn-sai", "fsl,imx8mq-sai";
 					reg = <0x30060000  0x10000>;
+					#sound-dai-cells = <0>;
 					interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
 					clocks = <&clk IMX8MN_CLK_SAI6_IPG>,
 						 <&clk IMX8MN_CLK_DUMMY>,
@@ -397,6 +401,7 @@ spdif1: spdif@30090000 {
 				sai7: sai@300b0000 {
 					compatible = "fsl,imx8mn-sai", "fsl,imx8mq-sai";
 					reg = <0x300b0000 0x10000>;
+					#sound-dai-cells = <0>;
 					interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
 					clocks = <&clk IMX8MN_CLK_SAI7_IPG>,
 						 <&clk IMX8MN_CLK_DUMMY>,
arch/arm64/boot/dts/freescale/imx93.dtsi +16 -0
index 5d79663b3b84..d1b34d9db9da 100644
@@ -164,6 +164,8 @@ tpm2: pwm@44320000 {
 			lpi2c1: i2c@44340000 {
 				compatible = "fsl,imx93-lpi2c", "fsl,imx7ulp-lpi2c";
 				reg = <0x44340000 0x10000>;
+				#address-cells = <1>;
+				#size-cells = <0>;
 				interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
 				clocks = <&clk IMX93_CLK_LPI2C1_GATE>,
 					 <&clk IMX93_CLK_BUS_AON>;
@@ -174,6 +176,8 @@ lpi2c1: i2c@44340000 {
 			lpi2c2: i2c@44350000 {
 				compatible = "fsl,imx93-lpi2c", "fsl,imx7ulp-lpi2c";
 				reg = <0x44350000 0x10000>;
+				#address-cells = <1>;
+				#size-cells = <0>;
 				interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
 				clocks = <&clk IMX93_CLK_LPI2C2_GATE>,
 					 <&clk IMX93_CLK_BUS_AON>;
@@ -316,6 +320,8 @@ tpm6: pwm@42510000 {
 			lpi2c3: i2c@42530000 {
 				compatible = "fsl,imx93-lpi2c", "fsl,imx7ulp-lpi2c";
 				reg = <0x42530000 0x10000>;
+				#address-cells = <1>;
+				#size-cells = <0>;
 				interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
 				clocks = <&clk IMX93_CLK_LPI2C3_GATE>,
 					 <&clk IMX93_CLK_BUS_WAKEUP>;
@@ -326,6 +332,8 @@ lpi2c3: i2c@42530000 {
 			lpi2c4: i2c@42540000 {
 				compatible = "fsl,imx93-lpi2c", "fsl,imx7ulp-lpi2c";
 				reg = <0x42540000 0x10000>;
+				#address-cells = <1>;
+				#size-cells = <0>;
 				interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
 				clocks = <&clk IMX93_CLK_LPI2C4_GATE>,
 					 <&clk IMX93_CLK_BUS_WAKEUP>;
@@ -414,6 +422,8 @@ lpuart8: serial@426a0000 {
 			lpi2c5: i2c@426b0000 {
 				compatible = "fsl,imx93-lpi2c", "fsl,imx7ulp-lpi2c";
 				reg = <0x426b0000 0x10000>;
+				#address-cells = <1>;
+				#size-cells = <0>;
 				interrupts = <GIC_SPI 195 IRQ_TYPE_LEVEL_HIGH>;
 				clocks = <&clk IMX93_CLK_LPI2C5_GATE>,
 					 <&clk IMX93_CLK_BUS_WAKEUP>;
@@ -424,6 +434,8 @@ lpi2c5: i2c@426b0000 {
 			lpi2c6: i2c@426c0000 {
 				compatible = "fsl,imx93-lpi2c", "fsl,imx7ulp-lpi2c";
 				reg = <0x426c0000 0x10000>;
+				#address-cells = <1>;
+				#size-cells = <0>;
 				interrupts = <GIC_SPI 196 IRQ_TYPE_LEVEL_HIGH>;
 				clocks = <&clk IMX93_CLK_LPI2C6_GATE>,
 					 <&clk IMX93_CLK_BUS_WAKEUP>;
@@ -434,6 +446,8 @@ lpi2c6: i2c@426c0000 {
 			lpi2c7: i2c@426d0000 {
 				compatible = "fsl,imx93-lpi2c", "fsl,imx7ulp-lpi2c";
 				reg = <0x426d0000 0x10000>;
+				#address-cells = <1>;
+				#size-cells = <0>;
 				interrupts = <GIC_SPI 197 IRQ_TYPE_LEVEL_HIGH>;
 				clocks = <&clk IMX93_CLK_LPI2C7_GATE>,
 					 <&clk IMX93_CLK_BUS_WAKEUP>;
@@ -444,6 +458,8 @@ lpi2c7: i2c@426d0000 {
 			lpi2c8: i2c@426e0000 {
 				compatible = "fsl,imx93-lpi2c", "fsl,imx7ulp-lpi2c";
 				reg = <0x426e0000 0x10000>;
+				#address-cells = <1>;
+				#size-cells = <0>;
 				interrupts = <GIC_SPI 198 IRQ_TYPE_LEVEL_HIGH>;
 				clocks = <&clk IMX93_CLK_LPI2C8_GATE>,
 					 <&clk IMX93_CLK_BUS_WAKEUP>;
arch/arm64/boot/dts/qcom/sc7280.dtsi +2 -0
index 3bedd45e14af..a407cd257971 100644
@@ -2122,6 +2122,8 @@ pcie1: pci@1c08000 {
 			pinctrl-names = "default";
 			pinctrl-0 = <&pcie1_clkreq_n>;
 
+			dma-coherent;
+
 			iommus = <&apps_smmu 0x1c80 0x1>;
 
 			iommu-map = <0x0 &apps_smmu 0x1c80 0x1>,
arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts +14 -0
index 568c6be1ceaa..d21bb7f3ec25 100644
@@ -186,6 +186,7 @@ vreg_s11b: smps11 {
 			regulator-min-microvolt = <1272000>;
 			regulator-max-microvolt = <1272000>;
 			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+			regulator-always-on;
 		};
 
 		vreg_l3b: ldo3 {
@@ -425,75 +426,88 @@ &pmk8280_vadc {
 	pmic-die-temp@3 {
 		reg = <PMK8350_ADC7_DIE_TEMP>;
 		qcom,pre-scaling = <1 1>;
+		label = "pmk8350_die_temp";
 	};
 
 	xo-therm@44 {
 		reg = <PMK8350_ADC7_AMUX_THM1_100K_PU>;
 		qcom,hw-settle-time = <200>;
 		qcom,ratiometric;
+		label = "pmk8350_xo_therm";
 	};
 
 	pmic-die-temp@103 {
 		reg = <PM8350_ADC7_DIE_TEMP(1)>;
 		qcom,pre-scaling = <1 1>;
+		label = "pmc8280_1_die_temp";
 	};
 
 	sys-therm@144 {
 		reg = <PM8350_ADC7_AMUX_THM1_100K_PU(1)>;
 		qcom,hw-settle-time = <200>;
 		qcom,ratiometric;
+		label = "sys_therm1";
 	};
 
 	sys-therm@145 {
 		reg = <PM8350_ADC7_AMUX_THM2_100K_PU(1)>;
 		qcom,hw-settle-time = <200>;
 		qcom,ratiometric;
+		label = "sys_therm2";
 	};
 
 	sys-therm@146 {
 		reg = <PM8350_ADC7_AMUX_THM3_100K_PU(1)>;
 		qcom,hw-settle-time = <200>;
 		qcom,ratiometric;
+		label = "sys_therm3";
 	};
 
 	sys-therm@147 {
 		reg = <PM8350_ADC7_AMUX_THM4_100K_PU(1)>;
 		qcom,hw-settle-time = <200>;
 		qcom,ratiometric;
+		label = "sys_therm4";
 	};
 
 	pmic-die-temp@303 {
 		reg = <PM8350_ADC7_DIE_TEMP(3)>;
 		qcom,pre-scaling = <1 1>;
+		label = "pmc8280_2_die_temp";
 	};
 
 	sys-therm@344 {
 		reg = <PM8350_ADC7_AMUX_THM1_100K_PU(3)>;
 		qcom,hw-settle-time = <200>;
 		qcom,ratiometric;
+		label = "sys_therm5";
 	};
 
 	sys-therm@345 {
 		reg = <PM8350_ADC7_AMUX_THM2_100K_PU(3)>;
 		qcom,hw-settle-time = <200>;
 		qcom,ratiometric;
+		label = "sys_therm6";
 	};
 
 	sys-therm@346 {
 		reg = <PM8350_ADC7_AMUX_THM3_100K_PU(3)>;
 		qcom,hw-settle-time = <200>;
 		qcom,ratiometric;
+		label = "sys_therm7";
 	};
 
 	sys-therm@347 {
 		reg = <PM8350_ADC7_AMUX_THM4_100K_PU(3)>;
 		qcom,hw-settle-time = <200>;
 		qcom,ratiometric;
+		label = "sys_therm8";
 	};
 
 	pmic-die-temp@403 {
 		reg = <PMR735A_ADC7_DIE_TEMP>;
 		qcom,pre-scaling = <1 1>;
+		label = "pmr735a_die_temp";
 	};
 };
 
arch/arm64/boot/dts/qcom/sm6375.dtsi +1 -0
index 12cf5dbe5bd6..419df4e3ac91 100644
@@ -1209,6 +1209,7 @@ remoteproc_cdsp: remoteproc@b000000 {
 			clock-names = "xo";
 
 			power-domains = <&rpmpd SM6375_VDDCX>;
+			power-domain-names = "cx";
 
 			memory-region = <&pil_cdsp_mem>;
 
arch/arm64/boot/dts/qcom/sm8150.dtsi +2 -2
index a0c57fb798d3..f790223ed8f5 100644
@@ -1810,7 +1810,7 @@ pcie0: pci@1c00000 {
 				      "slave_q2a",
 				      "tbu";
 
-			iommus = <&apps_smmu 0x1d80 0x7f>;
+			iommus = <&apps_smmu 0x1d80 0x3f>;
 			iommu-map = <0x0   &apps_smmu 0x1d80 0x1>,
 				    <0x100 &apps_smmu 0x1d81 0x1>;
 
@@ -1909,7 +1909,7 @@ pcie1: pci@1c08000 {
 			assigned-clocks = <&gcc GCC_PCIE_1_AUX_CLK>;
 			assigned-clock-rates = <19200000>;
 
-			iommus = <&apps_smmu 0x1e00 0x7f>;
+			iommus = <&apps_smmu 0x1e00 0x3f>;
 			iommu-map = <0x0   &apps_smmu 0x1e00 0x1>,
 				    <0x100 &apps_smmu 0x1e01 0x1>;
 
arch/arm64/boot/dts/qcom/sm8450.dtsi +3 -2
index f57980a32b43..16a73288c1b3 100644
@@ -2104,8 +2104,8 @@ wsa2macro: codec@31e0000 {
 				 <&q6prmcc LPASS_HW_DCODEC_VOTE LPASS_CLK_ATTRIBUTE_COUPLE_NO>,
 				 <&vamacro>;
 			clock-names = "mclk", "npl", "macro", "dcodec", "fsgen";
-			assigned-clocks = <&q6prmcc LPASS_CLK_ID_WSA_CORE_TX_MCLK LPASS_CLK_ATTRIBUTE_COUPLE_NO>,
-					  <&q6prmcc LPASS_CLK_ID_WSA_CORE_TX_2X_MCLK LPASS_CLK_ATTRIBUTE_COUPLE_NO>;
+			assigned-clocks = <&q6prmcc LPASS_CLK_ID_WSA2_CORE_TX_MCLK LPASS_CLK_ATTRIBUTE_COUPLE_NO>,
+					  <&q6prmcc LPASS_CLK_ID_WSA2_CORE_TX_2X_MCLK LPASS_CLK_ATTRIBUTE_COUPLE_NO>;
 			assigned-clock-rates = <19200000>, <19200000>;
 
 			#clock-cells = <0>;
@@ -3658,6 +3658,7 @@ ufs_mem_hc: ufshc@1d84000 {
 			power-domains = <&gcc UFS_PHY_GDSC>;
 
 			iommus = <&apps_smmu 0xe0 0x0>;
+			dma-coherent;
 
 			interconnects = <&aggre1_noc MASTER_UFS_MEM 0 &mc_virt SLAVE_EBI1 0>,
 					<&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_UFS_MEM_CFG 0>;
arch/arm64/kernel/efi-header.S +1 -1
index 28d8a5dca5f1..d731b4655df8 100644
@@ -66,7 +66,7 @@
 	.long	.Lefi_header_end - .L_head		// SizeOfHeaders
 	.long	0					// CheckSum
 	.short	IMAGE_SUBSYSTEM_EFI_APPLICATION		// Subsystem
-	.short	0					// DllCharacteristics
+	.short	IMAGE_DLL_CHARACTERISTICS_NX_COMPAT	// DllCharacteristics
 	.quad	0					// SizeOfStackReserve
 	.quad	0					// SizeOfStackCommit
 	.quad	0					// SizeOfHeapReserve
arch/m68k/kernel/traps.c +3 -1
index 5c8cba0efc63..a700807c9b6d 100644
@@ -30,6 +30,7 @@
 #include <linux/init.h>
 #include <linux/ptrace.h>
 #include <linux/kallsyms.h>
+#include <linux/extable.h>
 
 #include <asm/setup.h>
 #include <asm/fpu.h>
@@ -545,7 +546,8 @@ static inline void bus_error030 (struct frame *fp)
 			errorcode |= 2;
 
 		if (mmusr & (MMU_I | MMU_WP)) {
-			if (ssw & 4) {
+			/* We might have an exception table for this PC */
+			if (ssw & 4 && !search_exception_tables(fp->ptregs.pc)) {
 				pr_err("Data %s fault at %#010lx in %s (pc=%#lx)\n",
 				       ssw & RW ? "read" : "write",
 				       fp->un.fmtb.daddr,
arch/m68k/mm/motorola.c +5 -5
index 2a375637e007..911301224078 100644
@@ -437,7 +437,7 @@ void __init paging_init(void)
 	}
 
 	min_addr = m68k_memory[0].addr;
-	max_addr = min_addr + m68k_memory[0].size;
+	max_addr = min_addr + m68k_memory[0].size - 1;
 	memblock_add_node(m68k_memory[0].addr, m68k_memory[0].size, 0,
 			  MEMBLOCK_NONE);
 	for (i = 1; i < m68k_num_memory;) {
@@ -452,21 +452,21 @@ void __init paging_init(void)
 		}
 		memblock_add_node(m68k_memory[i].addr, m68k_memory[i].size, i,
 				  MEMBLOCK_NONE);
-		addr = m68k_memory[i].addr + m68k_memory[i].size;
+		addr = m68k_memory[i].addr + m68k_memory[i].size - 1;
 		if (addr > max_addr)
 			max_addr = addr;
 		i++;
 	}
 	m68k_memoffset = min_addr - PAGE_OFFSET;
-	m68k_virt_to_node_shift = fls(max_addr - min_addr - 1) - 6;
+	m68k_virt_to_node_shift = fls(max_addr - min_addr) - 6;
 
 	module_fixup(NULL, __start_fixup, __stop_fixup);
 	flush_icache();
 
-	high_memory = phys_to_virt(max_addr);
+	high_memory = phys_to_virt(max_addr) + 1;
 
 	min_low_pfn = availmem >> PAGE_SHIFT;
-	max_pfn = max_low_pfn = max_addr >> PAGE_SHIFT;
+	max_pfn = max_low_pfn = (max_addr >> PAGE_SHIFT) + 1;
 
 	/* Reserve kernel text/data/bss and the memory allocated in head.S */
 	memblock_reserve(m68k_memory[0].addr, availmem - m68k_memory[0].addr);
arch/powerpc/xmon/xmon.c +1 -1
index 0da66bc4823d..3b4e2475fc4e 100644
@@ -1277,7 +1277,7 @@ static int xmon_batch_next_cpu(void)
 	while (!cpumask_empty(&xmon_batch_cpus)) {
 		cpu = cpumask_next_wrap(smp_processor_id(), &xmon_batch_cpus,
 					xmon_batch_start_cpu, true);
-		if (cpu == nr_cpumask_bits)
+		if (cpu >= nr_cpu_ids)
 			break;
 		if (xmon_batch_start_cpu == -1)
 			xmon_batch_start_cpu = cpu;
arch/riscv/Kconfig +22 -0
index ee0d39b26794..08a0f0c2c485 100644
@@ -447,6 +447,28 @@ config TOOLCHAIN_HAS_ZIHINTPAUSE
 	depends on !32BIT || $(cc-option,-mabi=ilp32 -march=rv32ima_zihintpause)
 	depends on LLD_VERSION >= 150000 || LD_VERSION >= 23600
 
+config TOOLCHAIN_NEEDS_EXPLICIT_ZICSR_ZIFENCEI
+	def_bool y
+	# https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=aed44286efa8ae8717a77d94b51ac3614e2ca6dc
+	depends on AS_IS_GNU && AS_VERSION >= 23800
+	help
+	  Newer binutils versions default to ISA spec version 20191213 which
+	  moves some instructions from the I extension to the Zicsr and Zifencei
+	  extensions.
+
+config TOOLCHAIN_NEEDS_OLD_ISA_SPEC
+	def_bool y
+	depends on TOOLCHAIN_NEEDS_EXPLICIT_ZICSR_ZIFENCEI
+	# https://github.com/llvm/llvm-project/commit/22e199e6afb1263c943c0c0d4498694e15bf8a16
+	depends on CC_IS_CLANG && CLANG_VERSION < 170000
+	help
+	  Certain versions of clang do not support zicsr and zifencei via -march
+	  but newer versions of binutils require it for the reasons noted in the
+	  help text of CONFIG_TOOLCHAIN_NEEDS_EXPLICIT_ZICSR_ZIFENCEI. This
+	  option causes an older ISA spec compatible with these older versions
+	  of clang to be passed to GAS, which has the same result as passing zicsr
+	  and zifencei to -march.
+
 config FPU
 	bool "FPU support"
 	default y
arch/riscv/Makefile +6 -4
index 5931a0ff3c81..0d196e0120f2 100644
@@ -57,10 +57,12 @@ riscv-march-$(CONFIG_ARCH_RV64I)	:= rv64ima
 riscv-march-$(CONFIG_FPU)		:= $(riscv-march-y)fd
 riscv-march-$(CONFIG_RISCV_ISA_C)	:= $(riscv-march-y)c
 
-# Newer binutils versions default to ISA spec version 20191213 which moves some
-# instructions from the I extension to the Zicsr and Zifencei extensions.
-toolchain-need-zicsr-zifencei := $(call cc-option-yn, -march=$(riscv-march-y)_zicsr_zifencei)
-riscv-march-$(toolchain-need-zicsr-zifencei) := $(riscv-march-y)_zicsr_zifencei
+ifdef CONFIG_TOOLCHAIN_NEEDS_OLD_ISA_SPEC
+KBUILD_CFLAGS += -Wa,-misa-spec=2.2
+KBUILD_AFLAGS += -Wa,-misa-spec=2.2
+else
+riscv-march-$(CONFIG_TOOLCHAIN_NEEDS_EXPLICIT_ZICSR_ZIFENCEI) := $(riscv-march-y)_zicsr_zifencei
+endif
 
 # Check if the toolchain supports Zicbom extension
 riscv-march-$(CONFIG_TOOLCHAIN_HAS_ZICBOM) := $(riscv-march-y)_zicbom
arch/riscv/include/asm/tlbflush.h +2 -0
index 801019381dea..a09196f8de68 100644
@@ -12,6 +12,8 @@
 #include <asm/errata_list.h>
 
 #ifdef CONFIG_MMU
+extern unsigned long asid_mask;
+
 static inline void local_flush_tlb_all(void)
 {
 	__asm__ __volatile__ ("sfence.vma" : : : "memory");
arch/riscv/include/uapi/asm/setup.h new file +8 -0
new file mode 100644
index 000000000000..66b13a522880
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */
+
+#ifndef _UAPI_ASM_RISCV_SETUP_H
+#define _UAPI_ASM_RISCV_SETUP_H
+
+#define COMMAND_LINE_SIZE	1024
+
+#endif /* _UAPI_ASM_RISCV_SETUP_H */
arch/riscv/mm/context.c +1 -1
index 0f784e3d307b..12e22e7330e7 100644
@@ -22,7 +22,7 @@ DEFINE_STATIC_KEY_FALSE(use_asid_allocator);
 
 static unsigned long asid_bits;
 static unsigned long num_asids;
-static unsigned long asid_mask;
+unsigned long asid_mask;
 
 static atomic_long_t current_version;
 
arch/riscv/mm/tlbflush.c +1 -1
index 37ed760d007c..ef701fa83f36 100644
@@ -42,7 +42,7 @@ static void __sbi_tlb_flush_range(struct mm_struct *mm, unsigned long start,
 	/* check if the tlbflush needs to be sent to other CPUs */
 	broadcast = cpumask_any_but(cmask, cpuid) < nr_cpu_ids;
 	if (static_branch_unlikely(&use_asid_allocator)) {
-		unsigned long asid = atomic_long_read(&mm->context.id);
+		unsigned long asid = atomic_long_read(&mm->context.id) & asid_mask;
 
 		if (broadcast) {
 			sbi_remote_sfence_vma_asid(cmask, start, size, asid);
arch/sh/include/asm/processor_32.h +1 -0
index 27aebf1e75a2..3ef7adf739c8 100644
@@ -50,6 +50,7 @@
 #define SR_FD		0x00008000
 #define SR_MD		0x40000000
 
+#define SR_USER_MASK	0x00000303	// M, Q, S, T bits
 /*
  * DSP structure and data
  */
arch/sh/kernel/signal_32.c +3 -0
index 90f495d35db2..a6bfc6f37491 100644
@@ -115,6 +115,7 @@ static int
 restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc, int *r0_p)
 {
 	unsigned int err = 0;
+	unsigned int sr = regs->sr & ~SR_USER_MASK;
 
 #define COPY(x)		err |= __get_user(regs->x, &sc->sc_##x)
 			COPY(regs[1]);
@@ -130,6 +131,8 @@ restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc, int *r0_p
 	COPY(sr);	COPY(pc);
 #undef COPY
 
+	regs->sr = (regs->sr & SR_USER_MASK) | sr;
+
 #ifdef CONFIG_SH_FPU
 	if (boot_cpu_data.flags & CPU_HAS_FPU) {
 		int owned_fp;
arch/x86/events/amd/core.c +1 -2
index 4386b10682ce..8ca5e827f30b 100644
@@ -923,6 +923,7 @@ static int amd_pmu_v2_handle_irq(struct pt_regs *regs)
 
 		/* Event overflow */
 		handled++;
+		status &= ~mask;
 		perf_sample_data_init(&data, 0, hwc->last_period);
 
 		if (!x86_perf_event_set_period(event))
@@ -935,8 +936,6 @@ static int amd_pmu_v2_handle_irq(struct pt_regs *regs)
 
 		if (perf_event_overflow(event, &data, regs))
 			x86_pmu_stop(event, 0);
-
-		status &= ~mask;
 	}
 
 	/*
arch/x86/kernel/fpu/xstate.c +14 -16
index 714166cc25f2..0bab497c9436 100644
@@ -1118,21 +1118,20 @@ void __copy_xstate_to_uabi_buf(struct membuf to, struct fpstate *fpstate,
 	zerofrom = offsetof(struct xregs_state, extended_state_area);
 
 	/*
-	 * The ptrace buffer is in non-compacted XSAVE format.  In
-	 * non-compacted format disabled features still occupy state space,
-	 * but there is no state to copy from in the compacted
-	 * init_fpstate. The gap tracking will zero these states.
-	 */
-	mask = fpstate->user_xfeatures;
-
-	/*
-	 * Dynamic features are not present in init_fpstate. When they are
-	 * in an all zeros init state, remove those from 'mask' to zero
-	 * those features in the user buffer instead of retrieving them
-	 * from init_fpstate.
+	 * This 'mask' indicates which states to copy from fpstate.
+	 * Those extended states that are not present in fpstate are
+	 * either disabled or initialized:
+	 *
+	 * In non-compacted format, disabled features still occupy
+	 * state space but there is no state to copy from in the
+	 * compacted init_fpstate. The gap tracking will zero these
+	 * states.
+	 *
+	 * The extended features have an all zeroes init state. Thus,
+	 * remove them from 'mask' to zero those features in the user
+	 * buffer instead of retrieving them from init_fpstate.
 	 */
-	if (fpu_state_size_dynamic())
-		mask &= (header.xfeatures | xinit->header.xcomp_bv);
+	mask = header.xfeatures;
 
 	for_each_extended_xfeature(i, mask) {
 		/*
@@ -1151,9 +1150,8 @@ void __copy_xstate_to_uabi_buf(struct membuf to, struct fpstate *fpstate,
 			pkru.pkru = pkru_val;
 			membuf_write(&to, &pkru, sizeof(pkru));
 		} else {
-			copy_feature(header.xfeatures & BIT_ULL(i), &to,
+			membuf_write(&to,
 				     __raw_xsave_addr(xsave, i),
-				     __raw_xsave_addr(xinit, i),
 				     xstate_sizes[i]);
 		}
 		/*
arch/x86/mm/cpu_entry_area.c +7 -0
index 7316a8224259..e91500a80963 100644
@@ -10,6 +10,7 @@
 #include <asm/fixmap.h>
 #include <asm/desc.h>
 #include <asm/kasan.h>
+#include <asm/setup.h>
 
 static DEFINE_PER_CPU_PAGE_ALIGNED(struct entry_stack_page, entry_stack_storage);
 
@@ -29,6 +30,12 @@ static __init void init_cea_offsets(void)
 	unsigned int max_cea;
 	unsigned int i, j;
 
+	if (!kaslr_enabled()) {
+		for_each_possible_cpu(i)
+			per_cpu(_cea_offset, i) = i;
+		return;
+	}
+
 	max_cea = (CPU_ENTRY_AREA_MAP_SIZE - PAGE_SIZE) / CPU_ENTRY_AREA_SIZE;
 
 	/* O(sodding terrible) */
drivers/acpi/x86/s2idle.c +0 -24
index c7afce465a07..e499c60c4579 100644
@@ -384,29 +384,6 @@ static const struct acpi_device_id amd_hid_ids[] = {
 	{}
 };
 
-static int lps0_prefer_amd(const struct dmi_system_id *id)
-{
-	pr_debug("Using AMD GUID w/ _REV 2.\n");
-	rev_id = 2;
-	return 0;
-}
-static const struct dmi_system_id s2idle_dmi_table[] __initconst = {
-	{
-		/*
-		 * AMD Rembrandt based HP EliteBook 835/845/865 G9
-		 * Contains specialized AML in AMD/_REV 2 path to avoid
-		 * triggering a bug in Qualcomm WLAN firmware. This may be
-		 * removed in the future if that firmware is fixed.
-		 */
-		.callback = lps0_prefer_amd,
-		.matches = {
-			DMI_MATCH(DMI_BOARD_VENDOR, "HP"),
-			DMI_MATCH(DMI_BOARD_NAME, "8990"),
-		},
-	},
-	{}
-};
-
 static int lps0_device_attach(struct acpi_device *adev,
 			      const struct acpi_device_id *not_used)
 {
@@ -586,7 +563,6 @@ static const struct platform_s2idle_ops acpi_s2idle_ops_lps0 = {
 
 void __init acpi_s2idle_setup(void)
 {
-	dmi_check_system(s2idle_dmi_table);
 	acpi_scan_add_handler(&lps0_handler);
 	s2idle_set_ops(&acpi_s2idle_ops_lps0);
 }
drivers/acpi/x86/utils.c +13 -24
index 4e816bb402f6..e45285d4e62a 100644
@@ -200,39 +200,28 @@ bool acpi_device_override_status(struct acpi_device *adev, unsigned long long *s
  * a hardcoded allowlist for D3 support, which was used for these platforms.
  *
  * This allows quirking on Linux in a similar fashion.
+ *
+ * Cezanne systems shouldn't *normally* need this as the BIOS includes
+ * StorageD3Enable.  But for two reasons we have added it.
+ * 1) The BIOS on a number of Dell systems have ambiguity
+ *    between the same value used for _ADR on ACPI nodes GPP1.DEV0 and GPP1.NVME.
+ *    GPP1.NVME is needed to get StorageD3Enable node set properly.
+ *    https://bugzilla.kernel.org/show_bug.cgi?id=216440
+ *    https://bugzilla.kernel.org/show_bug.cgi?id=216773
+ *    https://bugzilla.kernel.org/show_bug.cgi?id=217003
+ * 2) On at least one HP system StorageD3Enable is missing on the second NVME
+      disk in the system.
  */
 static const struct x86_cpu_id storage_d3_cpu_ids[] = {
 	X86_MATCH_VENDOR_FAM_MODEL(AMD, 23, 96, NULL),	/* Renoir */
 	X86_MATCH_VENDOR_FAM_MODEL(AMD, 23, 104, NULL),	/* Lucienne */
-	{}
-};
-
-static const struct dmi_system_id force_storage_d3_dmi[] = {
-	{
-		/*
-		 * _ADR is ambiguous between GPP1.DEV0 and GPP1.NVME
-		 * but .NVME is needed to get StorageD3Enable node
-		 * https://bugzilla.kernel.org/show_bug.cgi?id=216440
-		 */
-		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 14 7425 2-in-1"),
-		}
-	},
-	{
-		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 16 5625"),
-		}
-	},
+	X86_MATCH_VENDOR_FAM_MODEL(AMD, 25, 80, NULL),	/* Cezanne */
 	{}
 };
 
 bool force_storage_d3(void)
 {
-	const struct dmi_system_id *dmi_id = dmi_first_match(force_storage_d3_dmi);
-
-	return dmi_id || x86_match_cpu(storage_d3_cpu_ids);
+	return x86_match_cpu(storage_d3_cpu_ids);
 }
 
 /*
drivers/atm/idt77252.c +11 -0
index eec0cc2144e0..e327a0229dc1 100644
@@ -2909,6 +2909,7 @@ close_card_oam(struct idt77252_dev *card)
 
 				recycle_rx_pool_skb(card, &vc->rcv.rx_pool);
 			}
+			kfree(vc);
 		}
 	}
 }
@@ -2952,6 +2953,15 @@ open_card_ubr0(struct idt77252_dev *card)
 	return 0;
 }
 
+static void
+close_card_ubr0(struct idt77252_dev *card)
+{
+	struct vc_map *vc = card->vcs[0];
+
+	free_scq(card, vc->scq);
+	kfree(vc);
+}
+
 static int
 idt77252_dev_open(struct idt77252_dev *card)
 {
@@ -3001,6 +3011,7 @@ static void idt77252_dev_close(struct atm_dev *dev)
 	struct idt77252_dev *card = dev->dev_data;
 	u32 conf;
 
+	close_card_ubr0(card);
 	close_card_oam(card);
 
 	conf = SAR_CFG_RXPTH |	/* enable receive path           */
drivers/block/ublk_drv.c +18 -13
index 4aec9be0ab77..22a790d51284 100644
@@ -656,7 +656,8 @@ static void __ublk_fail_req(struct ublk_queue *ubq, struct ublk_io *io,
 	}
 }
 
-static void ubq_complete_io_cmd(struct ublk_io *io, int res)
+static void ubq_complete_io_cmd(struct ublk_io *io, int res,
+				unsigned issue_flags)
 {
 	/* mark this cmd owned by ublksrv */
 	io->flags |= UBLK_IO_FLAG_OWNED_BY_SRV;
@@ -668,7 +669,7 @@ static void ubq_complete_io_cmd(struct ublk_io *io, int res)
 	io->flags &= ~UBLK_IO_FLAG_ACTIVE;
 
 	/* tell ublksrv one io request is coming */
-	io_uring_cmd_done(io->cmd, res, 0);
+	io_uring_cmd_done(io->cmd, res, 0, issue_flags);
 }
 
 #define UBLK_REQUEUE_DELAY_MS	3
@@ -685,7 +686,8 @@ static inline void __ublk_abort_rq(struct ublk_queue *ubq,
 	mod_delayed_work(system_wq, &ubq->dev->monitor_work, 0);
 }
 
-static inline void __ublk_rq_task_work(struct request *req)
+static inline void __ublk_rq_task_work(struct request *req,
+				       unsigned issue_flags)
 {
 	struct ublk_queue *ubq = req->mq_hctx->driver_data;
 	int tag = req->tag;
@@ -723,7 +725,7 @@ static inline void __ublk_rq_task_work(struct request *req)
 			pr_devel("%s: need get data. op %d, qid %d tag %d io_flags %x\n",
 					__func__, io->cmd->cmd_op, ubq->q_id,
 					req->tag, io->flags);
-			ubq_complete_io_cmd(io, UBLK_IO_RES_NEED_GET_DATA);
+			ubq_complete_io_cmd(io, UBLK_IO_RES_NEED_GET_DATA, issue_flags);
 			return;
 		}
 		/*
@@ -761,17 +763,18 @@ static inline void __ublk_rq_task_work(struct request *req)
 			mapped_bytes >> 9;
 	}
 
-	ubq_complete_io_cmd(io, UBLK_IO_RES_OK);
+	ubq_complete_io_cmd(io, UBLK_IO_RES_OK, issue_flags);
 }
 
-static inline void ublk_forward_io_cmds(struct ublk_queue *ubq)
+static inline void ublk_forward_io_cmds(struct ublk_queue *ubq,
+					unsigned issue_flags)
 {
 	struct llist_node *io_cmds = llist_del_all(&ubq->io_cmds);
 	struct ublk_rq_data *data, *tmp;
 
 	io_cmds = llist_reverse_order(io_cmds);
 	llist_for_each_entry_safe(data, tmp, io_cmds, node)
-		__ublk_rq_task_work(blk_mq_rq_from_pdu(data));
+		__ublk_rq_task_work(blk_mq_rq_from_pdu(data), issue_flags);
 }
 
 static inline void ublk_abort_io_cmds(struct ublk_queue *ubq)
@@ -783,12 +786,12 @@ static inline void ublk_abort_io_cmds(struct ublk_queue *ubq)
 		__ublk_abort_rq(ubq, blk_mq_rq_from_pdu(data));
 }
 
-static void ublk_rq_task_work_cb(struct io_uring_cmd *cmd)
+static void ublk_rq_task_work_cb(struct io_uring_cmd *cmd, unsigned issue_flags)
 {
 	struct ublk_uring_cmd_pdu *pdu = ublk_get_uring_cmd_pdu(cmd);
 	struct ublk_queue *ubq = pdu->ubq;
 
-	ublk_forward_io_cmds(ubq);
+	ublk_forward_io_cmds(ubq, issue_flags);
 }
 
 static void ublk_rq_task_work_fn(struct callback_head *work)
@@ -797,8 +800,9 @@ static void ublk_rq_task_work_fn(struct callback_head *work)
 			struct ublk_rq_data, work);
 	struct request *req = blk_mq_rq_from_pdu(data);
 	struct ublk_queue *ubq = req->mq_hctx->driver_data;
+	unsigned issue_flags = IO_URING_F_UNLOCKED;
 
-	ublk_forward_io_cmds(ubq);
+	ublk_forward_io_cmds(ubq, issue_flags);
 }
 
 static void ublk_queue_cmd(struct ublk_queue *ubq, struct request *rq)
@@ -1052,7 +1056,8 @@ static void ublk_cancel_queue(struct ublk_queue *ubq)
 		struct ublk_io *io = &ubq->ios[i];
 
 		if (io->flags & UBLK_IO_FLAG_ACTIVE)
-			io_uring_cmd_done(io->cmd, UBLK_IO_RES_ABORT, 0);
+			io_uring_cmd_done(io->cmd, UBLK_IO_RES_ABORT, 0,
+						IO_URING_F_UNLOCKED);
 	}
 
 	/* all io commands are canceled */
@@ -1295,7 +1300,7 @@ static int ublk_ch_uring_cmd(struct io_uring_cmd *cmd, unsigned int issue_flags)
 	return -EIOCBQUEUED;
 
  out:
-	io_uring_cmd_done(cmd, ret, 0);
+	io_uring_cmd_done(cmd, ret, 0, issue_flags);
 	pr_devel("%s: complete: cmd op %d, tag %d ret %x io_flags %x\n",
 			__func__, cmd_op, tag, ret, io->flags);
 	return -EIOCBQUEUED;
@@ -2053,7 +2058,7 @@ static int ublk_ctrl_uring_cmd(struct io_uring_cmd *cmd,
 		break;
 	}
  out:
-	io_uring_cmd_done(cmd, ret, 0);
+	io_uring_cmd_done(cmd, ret, 0, issue_flags);
 	pr_devel("%s: cmd done ret %d cmd_op %x, dev id %d qid %d\n",
 			__func__, ret, cmd->cmd_op, header->dev_id, header->queue_id);
 	return -EIOCBQUEUED;
drivers/bluetooth/btqcomsmd.c +16 -1
index 2acb719e596f..11c7e04bf394 100644
@@ -122,6 +122,21 @@ static int btqcomsmd_setup(struct hci_dev *hdev)
 	return 0;
 }
 
+static int btqcomsmd_set_bdaddr(struct hci_dev *hdev, const bdaddr_t *bdaddr)
+{
+	int ret;
+
+	ret = qca_set_bdaddr_rome(hdev, bdaddr);
+	if (ret)
+		return ret;
+
+	/* The firmware stops responding for a while after setting the bdaddr,
+	 * causing timeouts for subsequent commands. Sleep a bit to avoid this.
+	 */
+	usleep_range(1000, 10000);
+	return 0;
+}
+
 static int btqcomsmd_probe(struct platform_device *pdev)
 {
 	struct btqcomsmd *btq;
@@ -162,7 +177,7 @@ static int btqcomsmd_probe(struct platform_device *pdev)
 	hdev->close = btqcomsmd_close;
 	hdev->send = btqcomsmd_send;
 	hdev->setup = btqcomsmd_setup;
-	hdev->set_bdaddr = qca_set_bdaddr_rome;
+	hdev->set_bdaddr = btqcomsmd_set_bdaddr;
 
 	ret = hci_register_dev(hdev);
 	if (ret < 0)
drivers/bluetooth/btsdio.c +1 -0
index 795be33f2892..02893600db39 100644
@@ -354,6 +354,7 @@ static void btsdio_remove(struct sdio_func *func)
 
 	BT_DBG("func %p", func);
 
+	cancel_work_sync(&data->work);
 	if (!data)
 		return;
 
drivers/bluetooth/btusb.c +0 -10
index 18bc94718711..5c536151ef83 100644
@@ -1050,21 +1050,11 @@ static int btusb_recv_bulk(struct btusb_data *data, void *buffer, int count)
 		hci_skb_expect(skb) -= len;
 
 		if (skb->len == HCI_ACL_HDR_SIZE) {
-			__u16 handle = __le16_to_cpu(hci_acl_hdr(skb)->handle);
 			__le16 dlen = hci_acl_hdr(skb)->dlen;
-			__u8 type;
 
 			/* Complete ACL header */
 			hci_skb_expect(skb) = __le16_to_cpu(dlen);
 
-			/* Detect if ISO packet has been sent over bulk */
-			if (hci_conn_num(data->hdev, ISO_LINK)) {
-				type = hci_conn_lookup_type(data->hdev,
-							    hci_handle(handle));
-				if (type == ISO_LINK)
-					hci_skb_pkt_type(skb) = HCI_ISODATA_PKT;
-			}
-
 			if (skb_tailroom(skb) < hci_skb_expect(skb)) {
 				kfree_skb(skb);
 				skb = NULL;
drivers/bus/imx-weim.c +1 -1
index 828c66bbaa67..55d917bd1f3f 100644
@@ -204,8 +204,8 @@ static int weim_parse_dt(struct platform_device *pdev)
 	const struct of_device_id *of_id = of_match_device(weim_id_table,
 							   &pdev->dev);
 	const struct imx_weim_devtype *devtype = of_id->data;
+	int ret = 0, have_child = 0;
 	struct device_node *child;
-	int ret, have_child = 0;
 	struct weim_priv *priv;
 	void __iomem *base;
 	u32 reg;
drivers/char/random.c +1 -1
index ce3ccd172cc8..253f2ddb8913 100644
@@ -1311,7 +1311,7 @@ static void __cold try_to_generate_entropy(void)
 			/* Basic CPU round-robin, which avoids the current CPU. */
 			do {
 				cpu = cpumask_next(cpu, &timer_cpus);
-				if (cpu == nr_cpumask_bits)
+				if (cpu >= nr_cpu_ids)
 					cpu = cpumask_first(&timer_cpus);
 			} while (cpu == smp_processor_id() && num_cpus > 1);
 
drivers/firmware/arm_scmi/mailbox.c +37 -0
index 1e40cb035044..a455f3c0e98b 100644
@@ -52,6 +52,39 @@ static bool mailbox_chan_available(struct device *dev, int idx)
 					   "#mbox-cells", idx, NULL);
 }
 
+static int mailbox_chan_validate(struct device *cdev)
+{
+	int num_mb, num_sh, ret = 0;
+	struct device_node *np = cdev->of_node;
+
+	num_mb = of_count_phandle_with_args(np, "mboxes", "#mbox-cells");
+	num_sh = of_count_phandle_with_args(np, "shmem", NULL);
+	/* Bail out if mboxes and shmem descriptors are inconsistent */
+	if (num_mb <= 0 || num_sh > 2 || num_mb != num_sh) {
+		dev_warn(cdev, "Invalid channel descriptor for '%s'\n",
+			 of_node_full_name(np));
+		return -EINVAL;
+	}
+
+	if (num_sh > 1) {
+		struct device_node *np_tx, *np_rx;
+
+		np_tx = of_parse_phandle(np, "shmem", 0);
+		np_rx = of_parse_phandle(np, "shmem", 1);
+		/* SCMI Tx and Rx shared mem areas have to be distinct */
+		if (!np_tx || !np_rx || np_tx == np_rx) {
+			dev_warn(cdev, "Invalid shmem descriptor for '%s'\n",
+				 of_node_full_name(np));
+			ret = -EINVAL;
+		}
+
+		of_node_put(np_tx);
+		of_node_put(np_rx);
+	}
+
+	return ret;
+}
+
 static int mailbox_chan_setup(struct scmi_chan_info *cinfo, struct device *dev,
 			      bool tx)
 {
@@ -64,6 +97,10 @@ static int mailbox_chan_setup(struct scmi_chan_info *cinfo, struct device *dev,
 	resource_size_t size;
 	struct resource res;
 
+	ret = mailbox_chan_validate(cdev);
+	if (ret)
+		return ret;
+
 	smbox = devm_kzalloc(dev, sizeof(*smbox), GFP_KERNEL);
 	if (!smbox)
 		return -ENOMEM;
drivers/firmware/efi/earlycon.c +13 -3
index 4d6c5327471a..1bc632864694 100644
@@ -204,6 +204,14 @@ efi_earlycon_write(struct console *con, const char *str, unsigned int num)
 	}
 }
 
+static bool __initdata fb_probed;
+
+void __init efi_earlycon_reprobe(void)
+{
+	if (fb_probed)
+		setup_earlycon("efifb");
+}
+
 static int __init efi_earlycon_setup(struct earlycon_device *device,
 				     const char *opt)
 {
@@ -211,15 +219,17 @@ static int __init efi_earlycon_setup(struct earlycon_device *device,
 	u16 xres, yres;
 	u32 i;
 
-	if (screen_info.orig_video_isVGA != VIDEO_TYPE_EFI)
+	fb_wb = opt && !strcmp(opt, "ram");
+
+	if (screen_info.orig_video_isVGA != VIDEO_TYPE_EFI) {
+		fb_probed = true;
 		return -ENODEV;
+	}
 
 	fb_base = screen_info.lfb_base;
 	if (screen_info.capabilities & VIDEO_CAPABILITY_64BIT_BASE)
 		fb_base |= (u64)screen_info.ext_lfb_base << 32;
 
-	fb_wb = opt && !strcmp(opt, "ram");
-
 	si = &screen_info;
 	xres = si->lfb_width;
 	yres = si->lfb_height;
drivers/firmware/efi/efi-init.c +3 -0
index 1639159493e3..5cb7fb4549f0 100644
@@ -72,6 +72,9 @@ static void __init init_screen_info(void)
 		if (memblock_is_map_memory(screen_info.lfb_base))
 			memblock_mark_nomap(screen_info.lfb_base,
 					    screen_info.lfb_size);
+
+		if (IS_ENABLED(CONFIG_EFI_EARLYCON))
+			efi_earlycon_reprobe();
 	}
 }
 
drivers/firmware/efi/libstub/arm64-stub.c +3 -1
index 7327b98d8e3f..7c502dafe6f9 100644
@@ -85,8 +85,10 @@ efi_status_t handle_kernel_image(unsigned long *image_addr,
 		}
 	}
 
-	if (image->image_base != _text)
+	if (image->image_base != _text) {
 		efi_err("FIRMWARE BUG: efi_loaded_image_t::image_base has bogus value\n");
+		image->image_base = _text;
+	}
 
 	if (!IS_ALIGNED((u64)_text, SEGMENT_ALIGN))
 		efi_err("FIRMWARE BUG: kernel image not aligned on %dk boundary\n",
drivers/firmware/efi/libstub/arm64.c +31 -8
index 4501652e11ab..84d94443c601 100644
@@ -16,20 +16,43 @@
 
 static bool system_needs_vamap(void)
 {
-	const u8 *type1_family = efi_get_smbios_string(1, family);
+	const struct efi_smbios_type4_record *record;
+	const u32 __aligned(1) *socid;
+	const u8 *version;
 
 	/*
 	 * Ampere eMAG, Altra, and Altra Max machines crash in SetTime() if
-	 * SetVirtualAddressMap() has not been called prior.
+	 * SetVirtualAddressMap() has not been called prior. Most Altra systems
+	 * can be identified by the SMCCC soc ID, which is conveniently exposed
+	 * via the type 4 SMBIOS records. Otherwise, test the processor version
+	 * field. eMAG systems all appear to have the processor version field
+	 * set to "eMAG".
 	 */
-	if (!type1_family || (
-	    strcmp(type1_family, "eMAG") &&
-	    strcmp(type1_family, "Altra") &&
-	    strcmp(type1_family, "Altra Max")))
+	record = (struct efi_smbios_type4_record *)efi_get_smbios_record(4);
+	if (!record)
 		return false;
 
-	efi_warn("Working around broken SetVirtualAddressMap()\n");
-	return true;
+	socid = (u32 *)record->processor_id;
+	switch (*socid & 0xffff000f) {
+		static char const altra[] = "Ampere(TM) Altra(TM) Processor";
+		static char const emag[] = "eMAG";
+
+	default:
+		version = efi_get_smbios_string(&record->header, 4,
+						processor_version);
+		if (!version || (strncmp(version, altra, sizeof(altra) - 1) &&
+				 strncmp(version, emag, sizeof(emag) - 1)))
+			break;
+
+		fallthrough;
+
+	case 0x0a160001:	// Altra
+	case 0x0a160002:	// Altra Max
+		efi_warn("Working around broken SetVirtualAddressMap()\n");
+		return true;
+	}
+
+	return false;
 }
 
 efi_status_t check_platform_features(void)
drivers/firmware/efi/libstub/efi-stub-entry.c +11 -0
index 5245c4f031c0..cc4dcaea67fa 100644
@@ -5,6 +5,15 @@
 
 #include "efistub.h"
 
+static unsigned long screen_info_offset;
+
+struct screen_info *alloc_screen_info(void)
+{
+	if (IS_ENABLED(CONFIG_ARM))
+		return __alloc_screen_info();
+	return (void *)&screen_info + screen_info_offset;
+}
+
 /*
  * EFI entry point for the generic EFI stub used by ARM, arm64, RISC-V and
  * LoongArch. This is the entrypoint that is described in the PE/COFF header
@@ -56,6 +65,8 @@ efi_status_t __efiapi efi_pe_entry(efi_handle_t handle,
 		return status;
 	}
 
+	screen_info_offset = image_addr - (unsigned long)image->image_base;
+
 	status = efi_stub_common(handle, image, image_addr, cmdline_ptr);
 
 	efi_free(image_size, image_addr);
drivers/firmware/efi/libstub/efi-stub.c +0 -5
index 2955c1ac6a36..f9c1e8a2bd1d 100644
@@ -47,11 +47,6 @@
 static u64 virtmap_base = EFI_RT_VIRTUAL_BASE;
 static bool flat_va_mapping = (EFI_RT_VIRTUAL_OFFSET != 0);
 
-struct screen_info * __weak alloc_screen_info(void)
-{
-	return &screen_info;
-}
-
 void __weak free_screen_info(struct screen_info *si)
 {
 }
drivers/firmware/efi/libstub/efistub.h +39 -3

64 lines not on this page · raw message

drivers/firmware/efi/libstub/screen_info.c +1 -8
index 8e76a8b384ba..4be1c4d1f922 100644
@@ -15,18 +15,11 @@
  * early, but it only works if the EFI stub is part of the core kernel image
  * itself. The zboot decompressor can only use the configuration table
  * approach.
- *
- * In order to support both methods from the same build of the EFI stub
- * library, provide this dummy global definition of struct screen_info. If it
- * is required to satisfy a link dependency, it means we need to override the
- * __weak alloc and free methods with the ones below, and those will be pulled
- * in as well.
  */
-struct screen_info screen_info;
 
 static efi_guid_t screen_info_guid = LINUX_EFI_SCREEN_INFO_TABLE_GUID;
 
-struct screen_info *alloc_screen_info(void)
+struct screen_info *__alloc_screen_info(void)
 {
 	struct screen_info *si;
 	efi_status_t status;
drivers/firmware/efi/libstub/smbios.c +12 -3
index 460418b7f5f5..f9c159c28f46 100644
@@ -22,21 +22,30 @@ struct efi_smbios_protocol {
 	u8 minor_version;
 };
 
-const u8 *__efi_get_smbios_string(u8 type, int offset, int recsize)
+const struct efi_smbios_record *efi_get_smbios_record(u8 type)
 {
 	struct efi_smbios_record *record;
 	efi_smbios_protocol_t *smbios;
 	efi_status_t status;
 	u16 handle = 0xfffe;
-	const u8 *strtable;
 
 	status = efi_bs_call(locate_protocol, &EFI_SMBIOS_PROTOCOL_GUID, NULL,
 			     (void **)&smbios) ?:
 		 efi_call_proto(smbios, get_next, &handle, &type, &record, NULL);
 	if (status != EFI_SUCCESS)
 		return NULL;
+	return record;
+}
+
+const u8 *__efi_get_smbios_string(const struct efi_smbios_record *record,
+				  u8 type, int offset, int recsize)
+{
+	const u8 *strtable;
+
+	if (!record)
+		return NULL;
 
-	strtable = (u8 *)record + recsize;
+	strtable = (u8 *)record + record->length;
 	for (int i = 1; i < ((u8 *)record)[offset]; i++) {
 		int len = strlen(strtable);
 
drivers/firmware/efi/libstub/zboot-header.S +1 -1
index ec4525d40e0c..445cb646eaaa 100644
@@ -63,7 +63,7 @@ __efistub_efi_zboot_header:
 	.long		.Lefi_header_end - .Ldoshdr
 	.long		0
 	.short		IMAGE_SUBSYSTEM_EFI_APPLICATION
-	.short		0
+	.short		IMAGE_DLL_CHARACTERISTICS_NX_COMPAT
 #ifdef CONFIG_64BIT
 	.quad		0, 0, 0, 0
 #else
drivers/firmware/efi/libstub/zboot.c +5 -0
index 66be5fdc6b58..22c2cf38ccc2 100644
@@ -57,6 +57,11 @@ void __weak efi_cache_sync_image(unsigned long image_base,
 	// executable code loaded into memory to be safe for execution.
 }
 
+struct screen_info *alloc_screen_info(void)
+{
+	return __alloc_screen_info();
+}
+
 asmlinkage efi_status_t __efiapi
 efi_zboot_entry(efi_handle_t handle, efi_system_table_t *systab)
 {
drivers/firmware/efi/sysfb_efi.c +4 -1
index f06fdacc9bc8..e76d6803bdd0 100644
@@ -341,7 +341,7 @@ static const struct fwnode_operations efifb_fwnode_ops = {
 #ifdef CONFIG_EFI
 static struct fwnode_handle efifb_fwnode;
 
-__init void sysfb_apply_efi_quirks(struct platform_device *pd)
+__init void sysfb_apply_efi_quirks(void)
 {
 	if (screen_info.orig_video_isVGA != VIDEO_TYPE_EFI ||
 	    !(screen_info.capabilities & VIDEO_CAPABILITY_SKIP_QUIRKS))
@@ -355,7 +355,10 @@ __init void sysfb_apply_efi_quirks(struct platform_device *pd)
 		screen_info.lfb_height = temp;
 		screen_info.lfb_linelength = 4 * screen_info.lfb_width;
 	}
+}
 
+__init void sysfb_set_efifb_fwnode(struct platform_device *pd)
+{
 	if (screen_info.orig_video_isVGA == VIDEO_TYPE_EFI && IS_ENABLED(CONFIG_PCI)) {
 		fwnode_init(&efifb_fwnode, &efifb_fwnode_ops);
 		pd->dev.fwnode = &efifb_fwnode;
drivers/firmware/sysfb.c +3 -1
index 3fd3563d962b..3c197db42c9d 100644
@@ -81,6 +81,8 @@ static __init int sysfb_init(void)
 	if (disabled)
 		goto unlock_mutex;
 
+	sysfb_apply_efi_quirks();
+
 	/* try to create a simple-framebuffer device */
 	compatible = sysfb_parse_mode(si, &mode);
 	if (compatible) {
@@ -107,7 +109,7 @@ static __init int sysfb_init(void)
 		goto unlock_mutex;
 	}
 
-	sysfb_apply_efi_quirks(pd);
+	sysfb_set_efifb_fwnode(pd);
 
 	ret = platform_device_add_data(pd, si, sizeof(*si));
 	if (ret)
drivers/firmware/sysfb_simplefb.c +1 -1
index a353e27f83f5..ca907f7e76c6 100644
@@ -110,7 +110,7 @@ __init struct platform_device *sysfb_create_simplefb(const struct screen_info *s
 	if (!pd)
 		return ERR_PTR(-ENOMEM);
 
-	sysfb_apply_efi_quirks(pd);
+	sysfb_set_efifb_fwnode(pd);
 
 	ret = platform_device_add_resources(pd, &res, 1);
 	if (ret)
drivers/gpu/drm/amd/amdgpu/amdgpu.h +3 -2
index d148a1bd85e6..c26e350583bf 100644
@@ -1268,6 +1268,7 @@ void amdgpu_device_pci_config_reset(struct amdgpu_device *adev);
 int amdgpu_device_pci_reset(struct amdgpu_device *adev);
 bool amdgpu_device_need_post(struct amdgpu_device *adev);
 bool amdgpu_device_should_use_aspm(struct amdgpu_device *adev);
+bool amdgpu_device_aspm_support_quirk(void);
 
 void amdgpu_cs_report_moved_bytes(struct amdgpu_device *adev, u64 num_bytes,
 				  u64 num_vis_bytes);
@@ -1387,10 +1388,12 @@ int amdgpu_acpi_smart_shift_update(struct drm_device *dev, enum amdgpu_ss ss_sta
 int amdgpu_acpi_pcie_notify_device_ready(struct amdgpu_device *adev);
 
 void amdgpu_acpi_get_backlight_caps(struct amdgpu_dm_backlight_caps *caps);
+bool amdgpu_acpi_should_gpu_reset(struct amdgpu_device *adev);
 void amdgpu_acpi_detect(void);
 #else
 static inline int amdgpu_acpi_init(struct amdgpu_device *adev) { return 0; }
 static inline void amdgpu_acpi_fini(struct amdgpu_device *adev) { }
+static inline bool amdgpu_acpi_should_gpu_reset(struct amdgpu_device *adev) { return false; }
 static inline void amdgpu_acpi_detect(void) { }
 static inline bool amdgpu_acpi_is_power_shift_control_supported(void) { return false; }
 static inline int amdgpu_acpi_power_shift_control(struct amdgpu_device *adev,
@@ -1401,11 +1404,9 @@ static inline int amdgpu_acpi_smart_shift_update(struct drm_device *dev,
 
 #if defined(CONFIG_ACPI) && defined(CONFIG_SUSPEND)
 bool amdgpu_acpi_is_s3_active(struct amdgpu_device *adev);
-bool amdgpu_acpi_should_gpu_reset(struct amdgpu_device *adev);
 bool amdgpu_acpi_is_s0ix_active(struct amdgpu_device *adev);
 #else
 static inline bool amdgpu_acpi_is_s0ix_active(struct amdgpu_device *adev) { return false; }
-static inline bool amdgpu_acpi_should_gpu_reset(struct amdgpu_device *adev) { return false; }
 static inline bool amdgpu_acpi_is_s3_active(struct amdgpu_device *adev) { return false; }
 #endif
 
drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c +23 -18

53 lines not on this page · raw message

drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +15 -0
index d8e79de839d6..d5e14a3aa05d 100644
@@ -79,6 +79,10 @@
 
 #include <drm/drm_drv.h>
 
+#if IS_ENABLED(CONFIG_X86)
+#include <asm/intel-family.h>
+#endif
+
 MODULE_FIRMWARE("amdgpu/vega10_gpu_info.bin");
 MODULE_FIRMWARE("amdgpu/vega12_gpu_info.bin");
 MODULE_FIRMWARE("amdgpu/raven_gpu_info.bin");
@@ -1354,6 +1358,17 @@ bool amdgpu_device_should_use_aspm(struct amdgpu_device *adev)
 	return pcie_aspm_enabled(adev->pdev);
 }
 
+bool amdgpu_device_aspm_support_quirk(void)
+{
+#if IS_ENABLED(CONFIG_X86)
+	struct cpuinfo_x86 *c = &cpu_data(0);
+
+	return !(c->x86 == 6 && c->x86_model == INTEL_FAM6_ALDERLAKE);
+#else
+	return true;
+#endif
+}
+
 /* if we get transitioned to only one device, take VGA back */
 /**
  * amdgpu_device_vga_set_decode - enable/disable vga decode
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +4 -1
index 7f598977d694..d9e8579e23ab 100644
@@ -2457,7 +2457,10 @@ static int amdgpu_pmops_freeze(struct device *dev)
 	adev->in_s4 = false;
 	if (r)
 		return r;
-	return amdgpu_asic_reset(adev);
+
+	if (amdgpu_acpi_should_gpu_reset(adev))
+		return amdgpu_asic_reset(adev);
+	return 0;
 }
 
 static int amdgpu_pmops_thaw(struct device *dev)
drivers/gpu/drm/amd/amdgpu/amdgpu_object.c +1 -1
index 25a68d8888e0..5d4649b8bfd3 100644
@@ -1315,7 +1315,7 @@ void amdgpu_bo_release_notify(struct ttm_buffer_object *bo)
 
 	if (!bo->resource || bo->resource->mem_type != TTM_PL_VRAM ||
 	    !(abo->flags & AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE) ||
-	    adev->in_suspend || adev->shutdown)
+	    adev->in_suspend || drm_dev_is_unplugged(adev_to_drm(adev)))
 		return;
 
 	if (WARN_ON_ONCE(!dma_resv_trylock(bo->base.resv)))
drivers/gpu/drm/amd/amdgpu/nbio_v7_2.c +9 -5
index 4b0d563c6522..4ef1fa4603c8 100644
@@ -382,11 +382,6 @@ static void nbio_v7_2_init_registers(struct amdgpu_device *adev)
 		if (def != data)
 			WREG32_PCIE_PORT(SOC15_REG_OFFSET(NBIO, 0, regBIF1_PCIE_MST_CTRL_3), data);
 		break;
-	case IP_VERSION(7, 5, 1):
-		data = RREG32_SOC15(NBIO, 0, regRCC_DEV2_EPF0_STRAP2);
-		data &= ~RCC_DEV2_EPF0_STRAP2__STRAP_NO_SOFT_RESET_DEV2_F0_MASK;
-		WREG32_SOC15(NBIO, 0, regRCC_DEV2_EPF0_STRAP2, data);
-		fallthrough;
 	default:
 		def = data = RREG32_PCIE_PORT(SOC15_REG_OFFSET(NBIO, 0, regPCIE_CONFIG_CNTL));
 		data = REG_SET_FIELD(data, PCIE_CONFIG_CNTL,
@@ -399,6 +394,15 @@ static void nbio_v7_2_init_registers(struct amdgpu_device *adev)
 		break;
 	}
 
+	switch (adev->ip_versions[NBIO_HWIP][0]) {
+	case IP_VERSION(7, 3, 0):
+	case IP_VERSION(7, 5, 1):
+		data = RREG32_SOC15(NBIO, 0, regRCC_DEV2_EPF0_STRAP2);
+		data &= ~RCC_DEV2_EPF0_STRAP2__STRAP_NO_SOFT_RESET_DEV2_F0_MASK;
+		WREG32_SOC15(NBIO, 0, regRCC_DEV2_EPF0_STRAP2, data);
+		break;
+	}
+
 	if (amdgpu_sriov_vf(adev))
 		adev->rmmio_remap.reg_offset = SOC15_REG_OFFSET(NBIO, 0,
 			regBIF_BX_PF0_HDP_MEM_COHERENCY_FLUSH_CNTL) << 2;
drivers/gpu/drm/amd/amdgpu/nv.c +1 -1
index df3388e8dec0..877989278290 100644
@@ -527,7 +527,7 @@ static void nv_pcie_gen3_enable(struct amdgpu_device *adev)
 
 static void nv_program_aspm(struct amdgpu_device *adev)
 {
-	if (!amdgpu_device_should_use_aspm(adev))
+	if (!amdgpu_device_should_use_aspm(adev) || !amdgpu_device_aspm_support_quirk())
 		return;
 
 	if (!(adev->flags & AMD_IS_APU) &&
drivers/gpu/drm/amd/amdgpu/vi.c +1 -16
index 12ef782eb478..ceab8783575c 100644
@@ -81,10 +81,6 @@
 #include "mxgpu_vi.h"
 #include "amdgpu_dm.h"
 
-#if IS_ENABLED(CONFIG_X86)
-#include <asm/intel-family.h>
-#endif
-
 #define ixPCIE_LC_L1_PM_SUBSTATE	0x100100C6
 #define PCIE_LC_L1_PM_SUBSTATE__LC_L1_SUBSTATES_OVERRIDE_EN_MASK	0x00000001L
 #define PCIE_LC_L1_PM_SUBSTATE__LC_PCI_PM_L1_2_OVERRIDE_MASK	0x00000002L
@@ -1138,24 +1134,13 @@ static void vi_enable_aspm(struct amdgpu_device *adev)
 		WREG32_PCIE(ixPCIE_LC_CNTL, data);
 }
 
-static bool aspm_support_quirk_check(void)
-{
-#if IS_ENABLED(CONFIG_X86)
-	struct cpuinfo_x86 *c = &cpu_data(0);
-
-	return !(c->x86 == 6 && c->x86_model == INTEL_FAM6_ALDERLAKE);
-#else
-	return true;
-#endif
-}
-
 static void vi_program_aspm(struct amdgpu_device *adev)
 {
 	u32 data, data1, orig;
 	bool bL1SS = false;
 	bool bClkReqSupport = true;
 
-	if (!amdgpu_device_should_use_aspm(adev) || !aspm_support_quirk_check())
+	if (!amdgpu_device_should_use_aspm(adev) || !amdgpu_device_aspm_support_quirk())
 		return;
 
 	if (adev->flags & AMD_IS_APU ||
drivers/gpu/drm/amd/display/dc/clk_mgr/dcn301/vg_clk_mgr.c +18 -1
index 24715ca2fa94..01383aac6b41 100644
@@ -529,6 +529,19 @@ static struct clk_bw_params vg_bw_params = {
 
 };
 
+static uint32_t find_max_clk_value(const uint32_t clocks[], uint32_t num_clocks)
+{
+	uint32_t max = 0;
+	int i;
+
+	for (i = 0; i < num_clocks; ++i) {
+		if (clocks[i] > max)
+			max = clocks[i];
+	}
+
+	return max;
+}
+
 static unsigned int find_dcfclk_for_voltage(const struct vg_dpm_clocks *clock_table,
 		unsigned int voltage)
 {
@@ -572,12 +585,16 @@ static void vg_clk_mgr_helper_populate_bw_params(
 
 	bw_params->clk_table.num_entries = j + 1;
 
-	for (i = 0; i < bw_params->clk_table.num_entries; i++, j--) {
+	for (i = 0; i < bw_params->clk_table.num_entries - 1; i++, j--) {
 		bw_params->clk_table.entries[i].fclk_mhz = clock_table->DfPstateTable[j].fclk;
 		bw_params->clk_table.entries[i].memclk_mhz = clock_table->DfPstateTable[j].memclk;
 		bw_params->clk_table.entries[i].voltage = clock_table->DfPstateTable[j].voltage;
 		bw_params->clk_table.entries[i].dcfclk_mhz = find_dcfclk_for_voltage(clock_table, clock_table->DfPstateTable[j].voltage);
 	}
+	bw_params->clk_table.entries[i].fclk_mhz = clock_table->DfPstateTable[j].fclk;
+	bw_params->clk_table.entries[i].memclk_mhz = clock_table->DfPstateTable[j].memclk;
+	bw_params->clk_table.entries[i].voltage = clock_table->DfPstateTable[j].voltage;
+	bw_params->clk_table.entries[i].dcfclk_mhz = find_max_clk_value(clock_table->DcfClocks, VG_NUM_DCFCLK_DPM_LEVELS);
 
 	bw_params->vram_type = bios_info->memory_type;
 	bw_params->num_channels = bios_info->ma_channel_number;
drivers/gpu/drm/amd/display/dc/core/dc_link.c +9 -0
index 754fc8634149..54656fcaa646 100644
@@ -1016,6 +1016,7 @@ static bool detect_link_and_local_sink(struct dc_link *link,
 	struct dc_sink *prev_sink = NULL;
 	struct dpcd_caps prev_dpcd_caps;
 	enum dc_connection_type new_connection_type = dc_connection_none;
+	enum dc_connection_type pre_connection_type = link->type;
 	const uint32_t post_oui_delay = 30; // 30ms
 
 	DC_LOGGER_INIT(link->ctx->logger);
@@ -1118,6 +1119,8 @@ static bool detect_link_and_local_sink(struct dc_link *link,
 			}
 
 			if (!detect_dp(link, &sink_caps, reason)) {
+				link->type = pre_connection_type;
+
 				if (prev_sink)
 					dc_sink_release(prev_sink);
 				return false;
@@ -1349,6 +1352,8 @@ bool dc_link_detect(struct dc_link *link, enum dc_detect_reason reason)
 	bool is_delegated_to_mst_top_mgr = false;
 	enum dc_connection_type pre_link_type = link->type;
 
+	DC_LOGGER_INIT(link->ctx->logger);
+
 	is_local_sink_detect_success = detect_link_and_local_sink(link, reason);
 
 	if (is_local_sink_detect_success && link->local_sink)
@@ -1359,6 +1364,10 @@ bool dc_link_detect(struct dc_link *link, enum dc_detect_reason reason)
 			link->dpcd_caps.is_mst_capable)
 		is_delegated_to_mst_top_mgr = discover_dp_mst_topology(link, reason);
 
+	DC_LOG_DC("%s: link_index=%d is_local_sink_detect_success=%d pre_link_type=%d link_type=%d\n", __func__,
+		 link->link_index, is_local_sink_detect_success, pre_link_type, link->type);
+
+
 	if (is_local_sink_detect_success &&
 			pre_link_type == dc_connection_mst_branch &&
 			link->type != dc_connection_mst_branch)
drivers/gpu/drm/amd/display/dc/dcn32/dcn32_dccg.c +1 -2
index e4472c6be6c3..3fb4bcc34353 100644
@@ -271,8 +271,7 @@ static void dccg32_set_dpstreamclk(
 	dccg32_set_dtbclk_p_src(dccg, src, otg_inst);
 
 	/* enabled to select one of the DTBCLKs for pipe */
-	switch (otg_inst)
-	{
+	switch (dp_hpo_inst) {
 	case 0:
 		REG_UPDATE_2(DPSTREAMCLK_CNTL,
 			     DPSTREAMCLK0_EN,
drivers/gpu/drm/amd/display/dc/dcn32/dcn32_hwseq.c +2 -2
index b8767be1e4c5..30d15a94f720 100644
@@ -1178,13 +1178,13 @@ unsigned int dcn32_calculate_dccg_k1_k2_values(struct pipe_ctx *pipe_ctx, unsign
 	if (is_dp_128b_132b_signal(pipe_ctx)) {
 		*k1_div = PIXEL_RATE_DIV_BY_1;
 		*k2_div = PIXEL_RATE_DIV_BY_1;
-	} else if (dc_is_hdmi_tmds_signal(pipe_ctx->stream->signal) || dc_is_dvi_signal(pipe_ctx->stream->signal)) {
+	} else if (dc_is_hdmi_tmds_signal(stream->signal) || dc_is_dvi_signal(stream->signal)) {
 		*k1_div = PIXEL_RATE_DIV_BY_1;
 		if (stream->timing.pixel_encoding == PIXEL_ENCODING_YCBCR420)
 			*k2_div = PIXEL_RATE_DIV_BY_2;
 		else
 			*k2_div = PIXEL_RATE_DIV_BY_4;
-	} else if (dc_is_dp_signal(pipe_ctx->stream->signal) || dc_is_virtual_signal(pipe_ctx->stream->signal)) {
+	} else if (dc_is_dp_signal(stream->signal)) {
 		if (two_pix_per_container) {
 			*k1_div = PIXEL_RATE_DIV_BY_1;
 			*k2_div = PIXEL_RATE_DIV_BY_2;
drivers/gpu/drm/amd/display/dc/dcn32/dcn32_resource.c +1 -0
index 252356a8160f..6187aba1362b 100644
@@ -2186,6 +2186,7 @@ static bool dcn32_resource_construct(
 	dc->caps.edp_dsc_support = true;
 	dc->caps.extended_aux_timeout_support = true;
 	dc->caps.dmcub_support = true;
+	dc->caps.seamless_odm = true;
 
 	/* Color pipeline capabilities */
 	dc->caps.color.dpp.dcn_arch = 1;
drivers/gpu/drm/bridge/lontium-lt8912b.c +2 -2
index a98efef0ba0e..1b74a913f1b8 100644
@@ -659,8 +659,8 @@ static int lt8912_parse_dt(struct lt8912 *lt)
 
 	lt->hdmi_port = of_drm_find_bridge(port_node);
 	if (!lt->hdmi_port) {
-		dev_err(lt->dev, "%s: Failed to get hdmi port\n", __func__);
-		ret = -ENODEV;
+		ret = -EPROBE_DEFER;
+		dev_err_probe(lt->dev, ret, "%s: Failed to get hdmi port\n", __func__);
 		goto err_free_host_node;
 	}
 
drivers/gpu/drm/i915/display/intel_crtc.c +8 -0
index 037fc140b585..098acef59c10 100644
@@ -682,6 +682,14 @@ void intel_pipe_update_end(struct intel_crtc_state *new_crtc_state)
 	 */
 	intel_vrr_send_push(new_crtc_state);
 
+	/*
+	 * Seamless M/N update may need to update frame timings.
+	 *
+	 * FIXME Should be synchronized with the start of vblank somehow...
+	 */
+	if (new_crtc_state->seamless_m_n && intel_crtc_needs_fastset(new_crtc_state))
+		intel_crtc_update_active_timings(new_crtc_state);
+
 	local_irq_enable();
 
 	if (intel_vgpu_active(dev_priv))
drivers/gpu/drm/i915/display/intel_display.c +1 -0
index dedbdb175f8b..8b6994853f6f 100644
@@ -5195,6 +5195,7 @@ intel_crtc_prepare_cleared_state(struct intel_atomic_state *state,
 	 * only fields that are know to not cause problems are preserved. */
 
 	saved_state->uapi = crtc_state->uapi;
+	saved_state->inherited = crtc_state->inherited;
 	saved_state->scaler_state = crtc_state->scaler_state;
 	saved_state->shared_dpll = crtc_state->shared_dpll;
 	saved_state->dpll_hw_state = crtc_state->dpll_hw_state;
drivers/gpu/drm/i915/display/intel_fbdev.c +18 -6
index 17e8bf2ac0e5..3a708bd73a00 100644
@@ -210,6 +210,7 @@ static int intelfb_create(struct drm_fb_helper *helper,
 	bool prealloc = false;
 	void __iomem *vaddr;
 	struct drm_i915_gem_object *obj;
+	struct i915_gem_ww_ctx ww;
 	int ret;
 
 	mutex_lock(&ifbdev->hpd_lock);
@@ -290,13 +291,24 @@ static int intelfb_create(struct drm_fb_helper *helper,
 		info->fix.smem_len = vma->size;
 	}
 
-	vaddr = i915_vma_pin_iomap(vma);
-	if (IS_ERR(vaddr)) {
-		drm_err(&dev_priv->drm,
-			"Failed to remap framebuffer into virtual memory (%pe)\n", vaddr);
-		ret = PTR_ERR(vaddr);
-		goto out_unpin;
+	for_i915_gem_ww(&ww, ret, false) {
+		ret = i915_gem_object_lock(vma->obj, &ww);
+
+		if (ret)
+			continue;
+
+		vaddr = i915_vma_pin_iomap(vma);
+		if (IS_ERR(vaddr)) {
+			drm_err(&dev_priv->drm,
+				"Failed to remap framebuffer into virtual memory (%pe)\n", vaddr);
+			ret = PTR_ERR(vaddr);
+			continue;
+		}
 	}
+
+	if (ret)
+		goto out_unpin;
+
 	info->screen_base = vaddr;
 	info->screen_size = vma->size;
 
drivers/gpu/drm/i915/gt/intel_gt.c +2 -2
index 9c18b5f2e789..7868da20d5ea 100644
@@ -745,12 +745,12 @@ int intel_gt_init(struct intel_gt *gt)
 	if (err)
 		goto err_gt;
 
-	intel_uc_init_late(&gt->uc);
-
 	err = i915_inject_probe_error(gt->i915, -EIO);
 	if (err)
 		goto err_gt;
 
+	intel_uc_init_late(&gt->uc);
+
 	intel_migrate_init(&gt->migrate, gt);
 
 	intel_pxp_init(&gt->pxp);
drivers/gpu/drm/i915/gt/intel_gt_pm.c +0 -27
index 16db85fab0b1..3fbf70a58747 100644
@@ -20,31 +20,10 @@
 #include "intel_rc6.h"
 #include "intel_rps.h"
 #include "intel_wakeref.h"
-#include "intel_pcode.h"
 #include "pxp/intel_pxp_pm.h"
 
 #define I915_GT_SUSPEND_IDLE_TIMEOUT (HZ / 2)
 
-static void mtl_media_busy(struct intel_gt *gt)
-{
-	/* Wa_14017073508: mtl */
-	if (IS_MTL_GRAPHICS_STEP(gt->i915, P, STEP_A0, STEP_B0) &&
-	    gt->type == GT_MEDIA)
-		snb_pcode_write_p(gt->uncore, PCODE_MBOX_GT_STATE,
-				  PCODE_MBOX_GT_STATE_MEDIA_BUSY,
-				  PCODE_MBOX_GT_STATE_DOMAIN_MEDIA, 0);
-}
-
-static void mtl_media_idle(struct intel_gt *gt)
-{
-	/* Wa_14017073508: mtl */
-	if (IS_MTL_GRAPHICS_STEP(gt->i915, P, STEP_A0, STEP_B0) &&
-	    gt->type == GT_MEDIA)
-		snb_pcode_write_p(gt->uncore, PCODE_MBOX_GT_STATE,
-				  PCODE_MBOX_GT_STATE_MEDIA_NOT_BUSY,
-				  PCODE_MBOX_GT_STATE_DOMAIN_MEDIA, 0);
-}
-
 static void user_forcewake(struct intel_gt *gt, bool suspend)
 {
 	int count = atomic_read(&gt->user_wakeref);
@@ -92,9 +71,6 @@ static int __gt_unpark(struct intel_wakeref *wf)
 
 	GT_TRACE(gt, "\n");
 
-	/* Wa_14017073508: mtl */
-	mtl_media_busy(gt);
-
 	/*
 	 * It seems that the DMC likes to transition between the DC states a lot
 	 * when there are no connected displays (no active power domains) during
@@ -144,9 +120,6 @@ static int __gt_park(struct intel_wakeref *wf)
 	GEM_BUG_ON(!wakeref);
 	intel_display_power_put_async(i915, POWER_DOMAIN_GT_IRQ, wakeref);
 
-	/* Wa_14017073508: mtl */
-	mtl_media_idle(gt);
-
 	return 0;
 }
 
drivers/gpu/drm/i915/gt/intel_gt_pm_debugfs.c +1 -1
index 83df4cd5e06c..80dbbef86b1d 100644
@@ -580,7 +580,7 @@ static bool perf_limit_reasons_eval(void *data)
 }
 
 DEFINE_SIMPLE_ATTRIBUTE(perf_limit_reasons_fops, perf_limit_reasons_get,
-			perf_limit_reasons_clear, "%llu\n");
+			perf_limit_reasons_clear, "0x%llx\n");
 
 void intel_gt_pm_debugfs_register(struct intel_gt *gt, struct dentry *root)
 {
drivers/gpu/drm/i915/gt/intel_rc6.c +8 -0
index 2ee4051e4d96..6184fcc16987 100644
@@ -486,6 +486,7 @@ static bool bxt_check_bios_rc6_setup(struct intel_rc6 *rc6)
 static bool rc6_supported(struct intel_rc6 *rc6)
 {
 	struct drm_i915_private *i915 = rc6_to_i915(rc6);
+	struct intel_gt *gt = rc6_to_gt(rc6);
 
 	if (!HAS_RC6(i915))
 		return false;
@@ -502,6 +503,13 @@ static bool rc6_supported(struct intel_rc6 *rc6)
 		return false;
 	}
 
+	if (IS_MTL_MEDIA_STEP(gt->i915, STEP_A0, STEP_B0) &&
+	    gt->type == GT_MEDIA) {
+		drm_notice(&i915->drm,
+			   "Media RC6 disabled on A step\n");
+		return false;
+	}
+
 	return true;
 }
 
drivers/gpu/drm/i915/gt/uc/intel_guc_capture.c +26 -4
index 1c1b85073b4b..710999d7189e 100644
@@ -1506,7 +1506,7 @@ int intel_guc_capture_print_engine_node(struct drm_i915_error_state_buf *ebuf,
 
 	if (!ebuf || !ee)
 		return -EINVAL;
-	cap = ee->capture;
+	cap = ee->guc_capture;
 	if (!cap || !ee->engine)
 		return -ENODEV;
 
@@ -1571,13 +1571,34 @@ int intel_guc_capture_print_engine_node(struct drm_i915_error_state_buf *ebuf,
 
 #endif //CONFIG_DRM_I915_CAPTURE_ERROR
 
+static void guc_capture_find_ecode(struct intel_engine_coredump *ee)
+{
+	struct gcap_reg_list_info *reginfo;
+	struct guc_mmio_reg *regs;
+	i915_reg_t reg_ipehr = RING_IPEHR(0);
+	i915_reg_t reg_instdone = RING_INSTDONE(0);
+	int i;
+
+	if (!ee->guc_capture_node)
+		return;
+
+	reginfo = ee->guc_capture_node->reginfo + GUC_CAPTURE_LIST_TYPE_ENGINE_INSTANCE;
+	regs = reginfo->regs;
+	for (i = 0; i < reginfo->num_regs; i++) {
+		if (regs[i].offset == reg_ipehr.reg)
+			ee->ipehr = regs[i].value;
+		else if (regs[i].offset == reg_instdone.reg)
+			ee->instdone.instdone = regs[i].value;
+	}
+}
+
 void intel_guc_capture_free_node(struct intel_engine_coredump *ee)
 {
 	if (!ee || !ee->guc_capture_node)
 		return;
 
-	guc_capture_add_node_to_cachelist(ee->capture, ee->guc_capture_node);
-	ee->capture = NULL;
+	guc_capture_add_node_to_cachelist(ee->guc_capture, ee->guc_capture_node);
+	ee->guc_capture = NULL;
 	ee->guc_capture_node = NULL;
 }
 
@@ -1611,7 +1632,8 @@ void intel_guc_capture_get_matching_node(struct intel_gt *gt,
 		    (ce->lrc.lrca & CTX_GTT_ADDRESS_MASK)) {
 			list_del(&n->link);
 			ee->guc_capture_node = n;
-			ee->capture = guc->capture;
+			ee->guc_capture = guc->capture;
+			guc_capture_find_ecode(ee);
 			return;
 		}
 	}
drivers/gpu/drm/i915/gt/uc/intel_guc_rc.c +1 -12
index b5855091cf6a..8f8dd05835c5 100644
@@ -11,20 +11,9 @@
 
 static bool __guc_rc_supported(struct intel_guc *guc)
 {
-	struct intel_gt *gt = guc_to_gt(guc);
-
-	/*
-	 * Wa_14017073508: mtl
-	 * Do not enable gucrc to avoid additional interrupts which
-	 * may disrupt pcode wa.
-	 */
-	if (IS_MTL_GRAPHICS_STEP(gt->i915, P, STEP_A0, STEP_B0) &&
-	    gt->type == GT_MEDIA)
-		return false;
-
 	/* GuC RC is unavailable for pre-Gen12 */
 	return guc->submission_supported &&
-		GRAPHICS_VER(gt->i915) >= 12;
+		GRAPHICS_VER(guc_to_gt(guc)->i915) >= 12;
 }
 
 static bool __guc_rc_selected(struct intel_guc *guc)
drivers/gpu/drm/i915/i915_active.c +1 -2
index a9fea115f2d2..8ef93889061a 100644
@@ -92,8 +92,7 @@ static void debug_active_init(struct i915_active *ref)
 static void debug_active_activate(struct i915_active *ref)
 {
 	lockdep_assert_held(&ref->tree_lock);
-	if (!atomic_read(&ref->count)) /* before the first inc */
-		debug_object_activate(ref, &active_debug_desc);
+	debug_object_activate(ref, &active_debug_desc);
 }
 
 static void debug_active_deactivate(struct i915_active *ref)
drivers/gpu/drm/i915/i915_gpu_error.h +1 -1
index efc75cc2ffdb..56027ffbce51 100644
@@ -94,7 +94,7 @@ struct intel_engine_coredump {
 	struct intel_instdone instdone;
 
 	/* GuC matched capture-lists info */
-	struct intel_guc_state_capture *capture;
+	struct intel_guc_state_capture *guc_capture;
 	struct __guc_capture_parsed_output *guc_capture_node;
 
 	struct i915_gem_context_coredump {
drivers/gpu/drm/i915/i915_reg.h +0 -9
index 916176872544..4f84cda3f9b5 100644
@@ -6616,15 +6616,6 @@
 /*   XEHP_PCODE_FREQUENCY_CONFIG param2 */
 #define     PCODE_MBOX_DOMAIN_NONE		0x0
 #define     PCODE_MBOX_DOMAIN_MEDIAFF		0x3
-
-/* Wa_14017210380: mtl */
-#define   PCODE_MBOX_GT_STATE			0x50
-/* sub-commands (param1) */
-#define     PCODE_MBOX_GT_STATE_MEDIA_BUSY	0x1
-#define     PCODE_MBOX_GT_STATE_MEDIA_NOT_BUSY	0x2
-/* param2 */
-#define     PCODE_MBOX_GT_STATE_DOMAIN_MEDIA	0x1
-
 #define GEN6_PCODE_DATA				_MMIO(0x138128)
 #define   GEN6_PCODE_FREQ_IA_RATIO_SHIFT	8
 #define   GEN6_PCODE_FREQ_RING_RATIO_SHIFT	16
drivers/gpu/drm/meson/meson_drv.c +8 -5
index 79bfe3938d3c..7caf937c3c90 100644
@@ -325,23 +325,23 @@ static int meson_drv_bind_master(struct device *dev, bool has_components)
 
 	ret = meson_encoder_hdmi_init(priv);
 	if (ret)
-		goto exit_afbcd;
+		goto unbind_all;
 
 	ret = meson_plane_create(priv);
 	if (ret)
-		goto exit_afbcd;
+		goto unbind_all;
 
 	ret = meson_overlay_create(priv);
 	if (ret)
-		goto exit_afbcd;
+		goto unbind_all;
 
 	ret = meson_crtc_create(priv);
 	if (ret)
-		goto exit_afbcd;
+		goto unbind_all;
 
 	ret = request_irq(priv->vsync_irq, meson_irq, 0, drm->driver->name, drm);
 	if (ret)
-		goto exit_afbcd;
+		goto unbind_all;
 
 	drm_mode_config_reset(drm);
 
@@ -359,6 +359,9 @@ static int meson_drv_bind_master(struct device *dev, bool has_components)
 
 uninstall_irq:
 	free_irq(priv->vsync_irq, drm);
+unbind_all:
+	if (has_components)
+		component_unbind_all(drm->dev, drm);
 exit_afbcd:
 	if (priv->afbcd.ops)
 		priv->afbcd.ops->exit(priv);
drivers/gpu/drm/tiny/cirrus.c +1 -1
index 678c2ef1cae7..ffa7e61dd183 100644
@@ -455,7 +455,7 @@ static void cirrus_pipe_update(struct drm_simple_display_pipe *pipe,
 	if (state->fb && cirrus->cpp != cirrus_cpp(state->fb))
 		cirrus_mode_set(cirrus, &crtc->mode, state->fb);
 
-	if (drm_atomic_helper_damage_merged(old_state, state, &rect))
+	if (state->fb && drm_atomic_helper_damage_merged(old_state, state, &rect))
 		cirrus_fb_blit_rect(state->fb, &shadow_plane_state->data[0], &rect);
 }
 
drivers/hid/hid-cp2112.c +1 -0
index 1e16b0fa310d..27cadadda7c9 100644
@@ -1354,6 +1354,7 @@ static int cp2112_probe(struct hid_device *hdev, const struct hid_device_id *id)
 	girq->parents = NULL;
 	girq->default_type = IRQ_TYPE_NONE;
 	girq->handler = handle_simple_irq;
+	girq->threaded = true;
 
 	ret = gpiochip_add_data(&dev->gc, dev);
 	if (ret < 0) {
drivers/hid/hid-logitech-hidpp.c +2 -0
index 5efc591a02a0..3c00e6ac8e76 100644
@@ -4378,6 +4378,8 @@ static const struct hid_device_id hidpp_devices[] = {
 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH, 0xb01e) },
 	{ /* MX Master 3 mouse over Bluetooth */
 	  HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH, 0xb023) },
+	{ /* MX Master 3S mouse over Bluetooth */
+	  HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH, 0xb034) },
 	{}
 };
 
drivers/hid/intel-ish-hid/ipc/ipc.c +8 -1
index 15e14239af82..a49c6affd7c4 100644
@@ -5,6 +5,7 @@
  * Copyright (c) 2014-2016, Intel Corporation.
  */
 
+#include <linux/devm-helpers.h>
 #include <linux/sched.h>
 #include <linux/spinlock.h>
 #include <linux/delay.h>
@@ -621,7 +622,6 @@ static void	recv_ipc(struct ishtp_device *dev, uint32_t doorbell_val)
 	case MNG_RESET_NOTIFY:
 		if (!ishtp_dev) {
 			ishtp_dev = dev;
-			INIT_WORK(&fw_reset_work, fw_reset_work_fn);
 		}
 		schedule_work(&fw_reset_work);
 		break;
@@ -940,6 +940,7 @@ struct ishtp_device *ish_dev_init(struct pci_dev *pdev)
 {
 	struct ishtp_device *dev;
 	int	i;
+	int	ret;
 
 	dev = devm_kzalloc(&pdev->dev,
 			   sizeof(struct ishtp_device) + sizeof(struct ish_hw),
@@ -975,6 +976,12 @@ struct ishtp_device *ish_dev_init(struct pci_dev *pdev)
 		list_add_tail(&tx_buf->link, &dev->wr_free_list);
 	}
 
+	ret = devm_work_autocancel(&pdev->dev, &fw_reset_work, fw_reset_work_fn);
+	if (ret) {
+		dev_err(dev->devc, "Failed to initialise FW reset work\n");
+		return NULL;
+	}
+
 	dev->ops = &ish_hw_ops;
 	dev->devc = &pdev->dev;
 	dev->mtu = IPC_PAYLOAD_SIZE - sizeof(struct ishtp_msg_hdr);
drivers/hwmon/hwmon.c +5 -2
index 33edb5c02f7d..d193ed3cb35e 100644
@@ -757,6 +757,7 @@ __hwmon_device_register(struct device *dev, const char *name, void *drvdata,
 	struct hwmon_device *hwdev;
 	const char *label;
 	struct device *hdev;
+	struct device *tdev = dev;
 	int i, err, id;
 
 	/* Complain about invalid characters in hwmon name attribute */
@@ -826,7 +827,9 @@ __hwmon_device_register(struct device *dev, const char *name, void *drvdata,
 	hwdev->name = name;
 	hdev->class = &hwmon_class;
 	hdev->parent = dev;
-	hdev->of_node = dev ? dev->of_node : NULL;
+	while (tdev && !tdev->of_node)
+		tdev = tdev->parent;
+	hdev->of_node = tdev ? tdev->of_node : NULL;
 	hwdev->chip = chip;
 	dev_set_drvdata(hdev, drvdata);
 	dev_set_name(hdev, HWMON_ID_FORMAT, id);
@@ -838,7 +841,7 @@ __hwmon_device_register(struct device *dev, const char *name, void *drvdata,
 
 	INIT_LIST_HEAD(&hwdev->tzdata);
 
-	if (dev && dev->of_node && chip && chip->ops->read &&
+	if (hdev->of_node && chip && chip->ops->read &&
 	    chip->info[0]->type == hwmon_chip &&
 	    (chip->info[0]->config[0] & HWMON_C_REGISTER_TZ)) {
 		err = hwmon_thermal_register_sensors(hdev);
drivers/hwmon/it87.c +3 -1
index 9997f76b1f4a..b7c7cf215701 100644
@@ -490,6 +490,8 @@ static const struct it87_devices it87_devices[] = {
 #define has_pwm_freq2(data)	((data)->features & FEAT_PWM_FREQ2)
 #define has_six_temp(data)	((data)->features & FEAT_SIX_TEMP)
 #define has_vin3_5v(data)	((data)->features & FEAT_VIN3_5V)
+#define has_scaling(data)	((data)->features & (FEAT_12MV_ADC | \
+						     FEAT_10_9MV_ADC))
 
 struct it87_sio_data {
 	int sioaddr;
@@ -3100,7 +3102,7 @@ static int it87_probe(struct platform_device *pdev)
 			 "Detected broken BIOS defaults, disabling PWM interface\n");
 
 	/* Starting with IT8721F, we handle scaling of internal voltages */
-	if (has_12mv_adc(data)) {
+	if (has_scaling(data)) {
 		if (sio_data->internal & BIT(0))
 			data->in_scaled |= BIT(3);	/* in3 is AVCC */
 		if (sio_data->internal & BIT(1))
drivers/i2c/busses/i2c-hisi.c +5 -1
index 8c6c7075c765..f5c37d2f536b 100644
@@ -341,7 +341,11 @@ static irqreturn_t hisi_i2c_irq(int irq, void *context)
 		hisi_i2c_read_rx_fifo(ctlr);
 
 out:
-	if (int_stat & HISI_I2C_INT_TRANS_CPLT || ctlr->xfer_err) {
+	/*
+	 * Only use TRANS_CPLT to indicate the completion. On error cases we'll
+	 * get two interrupts, INT_ERR first then TRANS_CPLT.
+	 */
+	if (int_stat & HISI_I2C_INT_TRANS_CPLT) {
 		hisi_i2c_disable_int(ctlr, HISI_I2C_INT_ALL);
 		hisi_i2c_clear_int(ctlr, HISI_I2C_INT_ALL);
 		complete(ctlr->completion);
drivers/i2c/busses/i2c-imx-lpi2c.c +4 -0
index 188f2a36d2fd..9b2f9544c568 100644
@@ -503,10 +503,14 @@ static int lpi2c_imx_xfer(struct i2c_adapter *adapter,
 static irqreturn_t lpi2c_imx_isr(int irq, void *dev_id)
 {
 	struct lpi2c_imx_struct *lpi2c_imx = dev_id;
+	unsigned int enabled;
 	unsigned int temp;
 
+	enabled = readl(lpi2c_imx->base + LPI2C_MIER);
+
 	lpi2c_imx_intctrl(lpi2c_imx, 0);
 	temp = readl(lpi2c_imx->base + LPI2C_MSR);
+	temp &= enabled;
 
 	if (temp & MSR_RDF)
 		lpi2c_imx_read_rxfifo(lpi2c_imx);
drivers/i2c/busses/i2c-mxs.c +13 -5
index d113bed79545..e0f3b3545cfe 100644
@@ -171,7 +171,7 @@ static void mxs_i2c_dma_irq_callback(void *param)
 }
 
 static int mxs_i2c_dma_setup_xfer(struct i2c_adapter *adap,
-			struct i2c_msg *msg, uint32_t flags)
+			struct i2c_msg *msg, u8 *buf, uint32_t flags)
 {
 	struct dma_async_tx_descriptor *desc;
 	struct mxs_i2c_dev *i2c = i2c_get_adapdata(adap);
@@ -226,7 +226,7 @@ static int mxs_i2c_dma_setup_xfer(struct i2c_adapter *adap,
 		}
 
 		/* Queue the DMA data transfer. */
-		sg_init_one(&i2c->sg_io[1], msg->buf, msg->len);
+		sg_init_one(&i2c->sg_io[1], buf, msg->len);
 		dma_map_sg(i2c->dev, &i2c->sg_io[1], 1, DMA_FROM_DEVICE);
 		desc = dmaengine_prep_slave_sg(i2c->dmach, &i2c->sg_io[1], 1,
 					DMA_DEV_TO_MEM,
@@ -259,7 +259,7 @@ static int mxs_i2c_dma_setup_xfer(struct i2c_adapter *adap,
 		/* Queue the DMA data transfer. */
 		sg_init_table(i2c->sg_io, 2);
 		sg_set_buf(&i2c->sg_io[0], &i2c->addr_data, 1);
-		sg_set_buf(&i2c->sg_io[1], msg->buf, msg->len);
+		sg_set_buf(&i2c->sg_io[1], buf, msg->len);
 		dma_map_sg(i2c->dev, i2c->sg_io, 2, DMA_TO_DEVICE);
 		desc = dmaengine_prep_slave_sg(i2c->dmach, i2c->sg_io, 2,
 					DMA_MEM_TO_DEV,
@@ -563,6 +563,7 @@ static int mxs_i2c_xfer_msg(struct i2c_adapter *adap, struct i2c_msg *msg,
 	struct mxs_i2c_dev *i2c = i2c_get_adapdata(adap);
 	int ret;
 	int flags;
+	u8 *dma_buf;
 	int use_pio = 0;
 	unsigned long time_left;
 
@@ -588,13 +589,20 @@ static int mxs_i2c_xfer_msg(struct i2c_adapter *adap, struct i2c_msg *msg,
 		if (ret && (ret != -ENXIO))
 			mxs_i2c_reset(i2c);
 	} else {
+		dma_buf = i2c_get_dma_safe_msg_buf(msg, 1);
+		if (!dma_buf)
+			return -ENOMEM;
+
 		reinit_completion(&i2c->cmd_complete);
-		ret = mxs_i2c_dma_setup_xfer(adap, msg, flags);
-		if (ret)
+		ret = mxs_i2c_dma_setup_xfer(adap, msg, dma_buf, flags);
+		if (ret) {
+			i2c_put_dma_safe_msg_buf(dma_buf, msg, false);
 			return ret;
+		}
 
 		time_left = wait_for_completion_timeout(&i2c->cmd_complete,
 						msecs_to_jiffies(1000));
+		i2c_put_dma_safe_msg_buf(dma_buf, msg, true);
 		if (!time_left)
 			goto timeout;
 
drivers/i2c/busses/i2c-xgene-slimpro.c +3 -0
index 63259b3ea5ab..3538d36368a9 100644
@@ -308,6 +308,9 @@ static int slimpro_i2c_blkwr(struct slimpro_i2c_dev *ctx, u32 chip,
 	u32 msg[3];
 	int rc;
 
+	if (writelen > I2C_SMBUS_BLOCK_MAX)
+		return -EINVAL;
+
 	memcpy(ctx->dma_buffer, data, writelen);
 	paddr = dma_map_single(ctx->dev, ctx->dma_buffer, writelen,
 			       DMA_TO_DEVICE);
drivers/interconnect/qcom/osm-l3.c +1 -1
index 3a1cbfe3e481..1bafb54f1432 100644
@@ -236,7 +236,7 @@ static int qcom_osm_l3_probe(struct platform_device *pdev)
 	qnodes = desc->nodes;
 	num_nodes = desc->num_nodes;
 
-	data = devm_kcalloc(&pdev->dev, num_nodes, sizeof(*node), GFP_KERNEL);
+	data = devm_kzalloc(&pdev->dev, struct_size(data, nodes, num_nodes), GFP_KERNEL);
 	if (!data)
 		return -ENOMEM;
 
drivers/interconnect/qcom/qcm2290.c +2 -2
index 0da612d6398c..a29cdb4fac03 100644
@@ -147,9 +147,9 @@ static struct qcom_icc_node mas_snoc_bimc_nrt = {
 	.name = "mas_snoc_bimc_nrt",
 	.buswidth = 16,
 	.qos.ap_owned = true,
-	.qos.qos_port = 2,
+	.qos.qos_port = 3,
 	.qos.qos_mode = NOC_QOS_MODE_BYPASS,
-	.mas_rpm_id = 163,
+	.mas_rpm_id = 164,
 	.slv_rpm_id = -1,
 	.num_links = ARRAY_SIZE(mas_snoc_bimc_nrt_links),
 	.links = mas_snoc_bimc_nrt_links,
drivers/interconnect/qcom/sm8450.c +2 -96

110 lines not on this page · raw message

drivers/md/dm-crypt.c +10 -6
index 2653516bcdef..dc2d0d61ade9 100644
@@ -71,7 +71,9 @@ struct dm_crypt_io {
 	struct crypt_config *cc;
 	struct bio *base_bio;
 	u8 *integrity_metadata;
-	bool integrity_metadata_from_pool;
+	bool integrity_metadata_from_pool:1;
+	bool in_tasklet:1;
+
 	struct work_struct work;
 	struct tasklet_struct tasklet;
 
@@ -1728,6 +1730,7 @@ static void crypt_io_init(struct dm_crypt_io *io, struct crypt_config *cc,
 	io->ctx.r.req = NULL;
 	io->integrity_metadata = NULL;
 	io->integrity_metadata_from_pool = false;
+	io->in_tasklet = false;
 	atomic_set(&io->io_pending, 0);
 }
 
@@ -1773,14 +1776,13 @@ static void crypt_dec_pending(struct dm_crypt_io *io)
 	 * our tasklet. In this case we need to delay bio_endio()
 	 * execution to after the tasklet is done and dequeued.
 	 */
-	if (tasklet_trylock(&io->tasklet)) {
-		tasklet_unlock(&io->tasklet);
-		bio_endio(base_bio);
+	if (io->in_tasklet) {
+		INIT_WORK(&io->work, kcryptd_io_bio_endio);
+		queue_work(cc->io_queue, &io->work);
 		return;
 	}
 
-	INIT_WORK(&io->work, kcryptd_io_bio_endio);
-	queue_work(cc->io_queue, &io->work);
+	bio_endio(base_bio);
 }
 
 /*
@@ -1933,6 +1935,7 @@ static int dmcrypt_write(void *data)
 			io = crypt_io_from_node(rb_first(&write_tree));
 			rb_erase(&io->rb_node, &write_tree);
 			kcryptd_io_write(io);
+			cond_resched();
 		} while (!RB_EMPTY_ROOT(&write_tree));
 		blk_finish_plug(&plug);
 	}
@@ -2228,6 +2231,7 @@ static void kcryptd_queue_crypt(struct dm_crypt_io *io)
 		 * it is being executed with irqs disabled.
 		 */
 		if (in_hardirq() || irqs_disabled()) {
+			io->in_tasklet = true;
 			tasklet_init(&io->tasklet, kcryptd_crypt_tasklet, (unsigned long)&io->work);
 			tasklet_schedule(&io->tasklet);
 			return;
drivers/md/dm-stats.c +6 -1
index f105a71915ab..d12ba9bce145 100644
@@ -188,7 +188,7 @@ static int dm_stat_in_flight(struct dm_stat_shared *shared)
 	       atomic_read(&shared->in_flight[WRITE]);
 }
 
-void dm_stats_init(struct dm_stats *stats)
+int dm_stats_init(struct dm_stats *stats)
 {
 	int cpu;
 	struct dm_stats_last_position *last;
@@ -197,11 +197,16 @@ void dm_stats_init(struct dm_stats *stats)
 	INIT_LIST_HEAD(&stats->list);
 	stats->precise_timestamps = false;
 	stats->last = alloc_percpu(struct dm_stats_last_position);
+	if (!stats->last)
+		return -ENOMEM;
+
 	for_each_possible_cpu(cpu) {
 		last = per_cpu_ptr(stats->last, cpu);
 		last->last_sector = (sector_t)ULLONG_MAX;
 		last->last_rw = UINT_MAX;
 	}
+
+	return 0;
 }
 
 void dm_stats_cleanup(struct dm_stats *stats)
drivers/md/dm-stats.h +1 -1
index 09c81a1ec057..ee32b099f1cf 100644
@@ -21,7 +21,7 @@ struct dm_stats_aux {
 	unsigned long long duration_ns;
 };
 
-void dm_stats_init(struct dm_stats *st);
+int dm_stats_init(struct dm_stats *st);
 void dm_stats_cleanup(struct dm_stats *st);
 
 struct mapped_device;
drivers/md/dm-thin.c +2 -0
index e4c1a8a21bbd..e6e5ab29a95d 100644
@@ -3357,6 +3357,7 @@ static int pool_ctr(struct dm_target *ti, unsigned argc, char **argv)
 	pt->low_water_blocks = low_water_blocks;
 	pt->adjusted_pf = pt->requested_pf = pf;
 	ti->num_flush_bios = 1;
+	ti->limit_swap_bios = true;
 
 	/*
 	 * Only need to enable discards if the pool should pass
@@ -4235,6 +4236,7 @@ static int thin_ctr(struct dm_target *ti, unsigned argc, char **argv)
 		goto bad;
 
 	ti->num_flush_bios = 1;
+	ti->limit_swap_bios = true;
 	ti->flush_supported = true;
 	ti->accounts_remapped_io = true;
 	ti->per_io_data_size = sizeof(struct dm_thin_endio_hook);
drivers/md/dm.c +3 -1
index fdcf42554e2a..fc953013ea26 100644
@@ -2092,7 +2092,9 @@ static struct mapped_device *alloc_dev(int minor)
 	if (!md->pending_io)
 		goto bad;
 
-	dm_stats_init(&md->stats);
+	r = dm_stats_init(&md->stats);
+	if (r < 0)
+		goto bad;
 
 	/* Populate the mapping, nobody knows we exist yet */
 	spin_lock(&_minor_lock);
drivers/net/dsa/b53/b53_mmap.c +1 -1
index e968322dfbf0..70887e0aece3 100644
@@ -263,7 +263,7 @@ static int b53_mmap_probe_of(struct platform_device *pdev,
 		if (of_property_read_u32(of_port, "reg", &reg))
 			continue;
 
-		if (reg < B53_CPU_PORT)
+		if (reg < B53_N_PORTS)
 			pdata->enabled_ports |= BIT(reg);
 	}
 
drivers/net/dsa/mt7530.c +27 -22

95 lines not on this page · raw message

drivers/net/ethernet/google/gve/gve_ethtool.c +4 -1
index ce574d097e28..5f81470843b4 100644
@@ -537,7 +537,10 @@ static int gve_get_link_ksettings(struct net_device *netdev,
 				  struct ethtool_link_ksettings *cmd)
 {
 	struct gve_priv *priv = netdev_priv(netdev);
-	int err = gve_adminq_report_link_speed(priv);
+	int err = 0;
+
+	if (priv->link_speed == 0)
+		err = gve_adminq_report_link_speed(priv);
 
 	cmd->base.speed = priv->link_speed;
 	return err;
drivers/net/ethernet/intel/i40e/i40e_txrx.c +4 -4
index 924f972b91fa..72b091f2509d 100644
@@ -171,10 +171,10 @@ static char *i40e_create_dummy_packet(u8 *dummy_packet, bool ipv4, u8 l4proto,
 				      struct i40e_fdir_filter *data)
 {
 	bool is_vlan = !!data->vlan_tag;
-	struct vlan_hdr vlan;
-	struct ipv6hdr ipv6;
-	struct ethhdr eth;
-	struct iphdr ip;
+	struct vlan_hdr vlan = {};
+	struct ipv6hdr ipv6 = {};
+	struct ethhdr eth = {};
+	struct iphdr ip = {};
 	u8 *tmp;
 
 	if (ipv4) {
drivers/net/ethernet/intel/iavf/iavf_common.c +1 -1
index 34e46a23894f..43148c07459f 100644
@@ -661,7 +661,7 @@ struct iavf_rx_ptype_decoded iavf_ptype_lookup[BIT(8)] = {
 	/* Non Tunneled IPv6 */
 	IAVF_PTT(88, IP, IPV6, FRG, NONE, NONE, NOF, NONE, PAY3),
 	IAVF_PTT(89, IP, IPV6, NOF, NONE, NONE, NOF, NONE, PAY3),
-	IAVF_PTT(90, IP, IPV6, NOF, NONE, NONE, NOF, UDP,  PAY3),
+	IAVF_PTT(90, IP, IPV6, NOF, NONE, NONE, NOF, UDP,  PAY4),
 	IAVF_PTT_UNUSED_ENTRY(91),
 	IAVF_PTT(92, IP, IPV6, NOF, NONE, NONE, NOF, TCP,  PAY4),
 	IAVF_PTT(93, IP, IPV6, NOF, NONE, NONE, NOF, SCTP, PAY4),
drivers/net/ethernet/intel/iavf/iavf_main.c +13 -0
index 4b09785d2147..8bbdf66c51f6 100644
@@ -893,6 +893,10 @@ static int iavf_vlan_rx_add_vid(struct net_device *netdev,
 {
 	struct iavf_adapter *adapter = netdev_priv(netdev);
 
+	/* Do not track VLAN 0 filter, always added by the PF on VF init */
+	if (!vid)
+		return 0;
+
 	if (!VLAN_FILTERING_ALLOWED(adapter))
 		return -EIO;
 
@@ -919,6 +923,10 @@ static int iavf_vlan_rx_kill_vid(struct net_device *netdev,
 {
 	struct iavf_adapter *adapter = netdev_priv(netdev);
 
+	/* We do not track VLAN 0 filter */
+	if (!vid)
+		return 0;
+
 	iavf_del_vlan(adapter, IAVF_VLAN(vid, be16_to_cpu(proto)));
 	if (proto == cpu_to_be16(ETH_P_8021Q))
 		clear_bit(vid, adapter->vsi.active_cvlans);
@@ -5069,6 +5077,11 @@ static void iavf_remove(struct pci_dev *pdev)
 			mutex_unlock(&adapter->crit_lock);
 			break;
 		}
+		/* Simply return if we already went through iavf_shutdown */
+		if (adapter->state == __IAVF_REMOVE) {
+			mutex_unlock(&adapter->crit_lock);
+			return;
+		}
 
 		mutex_unlock(&adapter->crit_lock);
 		usleep_range(500, 1000);
drivers/net/ethernet/intel/iavf/iavf_txrx.c +1 -1
index 18b6a702a1d6..e989feda133c 100644
@@ -1096,7 +1096,7 @@ static inline void iavf_rx_hash(struct iavf_ring *ring,
 		cpu_to_le64((u64)IAVF_RX_DESC_FLTSTAT_RSS_HASH <<
 			    IAVF_RX_DESC_STATUS_FLTSTAT_SHIFT);
 
-	if (ring->netdev->features & NETIF_F_RXHASH)
+	if (!(ring->netdev->features & NETIF_F_RXHASH))
 		return;
 
 	if ((rx_desc->wb.qword1.status_error_len & rss_mask) == rss_mask) {
drivers/net/ethernet/intel/iavf/iavf_virtchnl.c +0 -2
index 365ca0c710c4..0fea6b9b599f 100644
@@ -2446,8 +2446,6 @@ void iavf_virtchnl_completion(struct iavf_adapter *adapter,
 		list_for_each_entry(f, &adapter->vlan_filter_list, list) {
 			if (f->is_new_vlan) {
 				f->is_new_vlan = false;
-				if (!f->vlan.vid)
-					continue;
 				if (f->vlan.tpid == ETH_P_8021Q)
 					set_bit(f->vlan.vid,
 						adapter->vsi.active_cvlans);
drivers/net/ethernet/intel/ice/ice_sriov.c +4 -4
index 3ba1408c56a9..b3849bc3d4fc 100644
@@ -1384,15 +1384,15 @@ int ice_set_vf_trust(struct net_device *netdev, int vf_id, bool trusted)
 	struct ice_vf *vf;
 	int ret;
 
+	vf = ice_get_vf_by_id(pf, vf_id);
+	if (!vf)
+		return -EINVAL;
+
 	if (ice_is_eswitch_mode_switchdev(pf)) {
 		dev_info(ice_pf_to_dev(pf), "Trusted VF is forbidden in switchdev mode\n");
 		return -EOPNOTSUPP;
 	}
 
-	vf = ice_get_vf_by_id(pf, vf_id);
-	if (!vf)
-		return -EINVAL;
-
 	ret = ice_check_vf_ready_for_cfg(vf);
 	if (ret)
 		goto out_put_vf;
drivers/net/ethernet/intel/igb/igb_main.c +0 -2
index b5b443883da9..c42584680e56 100644
@@ -3841,9 +3841,7 @@ static void igb_remove(struct pci_dev *pdev)
 	igb_release_hw_control(adapter);
 
 #ifdef CONFIG_PCI_IOV
-	rtnl_lock();
 	igb_disable_sriov(pdev);
-	rtnl_unlock();
 #endif
 
 	unregister_netdev(netdev);
drivers/net/ethernet/intel/igbvf/netdev.c +6 -2
index 3a32809510fc..72cb1b56e9f2 100644
@@ -1074,7 +1074,7 @@ static int igbvf_request_msix(struct igbvf_adapter *adapter)
 			  igbvf_intr_msix_rx, 0, adapter->rx_ring->name,
 			  netdev);
 	if (err)
-		goto out;
+		goto free_irq_tx;
 
 	adapter->rx_ring->itr_register = E1000_EITR(vector);
 	adapter->rx_ring->itr_val = adapter->current_itr;
@@ -1083,10 +1083,14 @@ static int igbvf_request_msix(struct igbvf_adapter *adapter)
 	err = request_irq(adapter->msix_entries[vector].vector,
 			  igbvf_msix_other, 0, netdev->name, netdev);
 	if (err)
-		goto out;
+		goto free_irq_rx;
 
 	igbvf_configure_msix(adapter);
 	return 0;
+free_irq_rx:
+	free_irq(adapter->msix_entries[--vector].vector, netdev);
+free_irq_tx:
+	free_irq(adapter->msix_entries[--vector].vector, netdev);
 out:
 	return err;
 }
drivers/net/ethernet/intel/igbvf/vf.c +10 -3
index b8ba3f94c363..a47a2e3e548c 100644
@@ -1,6 +1,8 @@
 // SPDX-License-Identifier: GPL-2.0
 /* Copyright(c) 2009 - 2018 Intel Corporation. */
 
+#include <linux/etherdevice.h>
+
 #include "vf.h"
 
 static s32 e1000_check_for_link_vf(struct e1000_hw *hw);
@@ -131,11 +133,16 @@ static s32 e1000_reset_hw_vf(struct e1000_hw *hw)
 		/* set our "perm_addr" based on info provided by PF */
 		ret_val = mbx->ops.read_posted(hw, msgbuf, 3);
 		if (!ret_val) {
-			if (msgbuf[0] == (E1000_VF_RESET |
-					  E1000_VT_MSGTYPE_ACK))
+			switch (msgbuf[0]) {
+			case E1000_VF_RESET | E1000_VT_MSGTYPE_ACK:
 				memcpy(hw->mac.perm_addr, addr, ETH_ALEN);
-			else
+				break;
+			case E1000_VF_RESET | E1000_VT_MSGTYPE_NACK:
+				eth_zero_addr(hw->mac.perm_addr);
+				break;
+			default:
 				ret_val = -E1000_ERR_MAC_INIT;
+			}
 		}
 	}
 
drivers/net/ethernet/intel/igc/igc_main.c +10 -10
index 1dd2a7fee8d4..bcd62b36fd7a 100644
@@ -6007,18 +6007,18 @@ static bool validate_schedule(struct igc_adapter *adapter,
 		if (e->command != TC_TAPRIO_CMD_SET_GATES)
 			return false;
 
-		for (i = 0; i < adapter->num_tx_queues; i++) {
-			if (e->gate_mask & BIT(i))
+		for (i = 0; i < adapter->num_tx_queues; i++)
+			if (e->gate_mask & BIT(i)) {
 				queue_uses[i]++;
 
-			/* There are limitations: A single queue cannot be
-			 * opened and closed multiple times per cycle unless the
-			 * gate stays open. Check for it.
-			 */
-			if (queue_uses[i] > 1 &&
-			    !(prev->gate_mask & BIT(i)))
-				return false;
-		}
+				/* There are limitations: A single queue cannot
+				 * be opened and closed multiple times per cycle
+				 * unless the gate stays open. Check for it.
+				 */
+				if (queue_uses[i] > 1 &&
+				    !(prev->gate_mask & BIT(i)))
+					return false;
+			}
 	}
 
 	return true;
drivers/net/ethernet/marvell/octeontx2/nic/otx2_vf.c +2 -0
index 7f8ffbf79cf7..ab126f8706c7 100644
@@ -709,6 +709,7 @@ static int otx2vf_probe(struct pci_dev *pdev, const struct pci_device_id *id)
 err_ptp_destroy:
 	otx2_ptp_destroy(vf);
 err_detach_rsrc:
+	free_percpu(vf->hw.lmt_info);
 	if (test_bit(CN10K_LMTST, &vf->hw.cap_flag))
 		qmem_free(vf->dev, vf->dync_lmt);
 	otx2_detach_resources(&vf->mbox);
@@ -762,6 +763,7 @@ static void otx2vf_remove(struct pci_dev *pdev)
 	otx2_shutdown_tc(vf);
 	otx2vf_disable_mbox_intr(vf);
 	otx2_detach_resources(&vf->mbox);
+	free_percpu(vf->hw.lmt_info);
 	if (test_bit(CN10K_LMTST, &vf->hw.cap_flag))
 		qmem_free(vf->dev, vf->dync_lmt);
 	otx2vf_vfaf_mbox_destroy(vf);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/macsec.c +8 -1
index f84f1cfcddb8..25202ceaa7d2 100644
@@ -1412,6 +1412,7 @@ static int macsec_aso_query(struct mlx5_core_dev *mdev, struct mlx5e_macsec *mac
 	struct mlx5e_macsec_aso *aso;
 	struct mlx5_aso_wqe *aso_wqe;
 	struct mlx5_aso *maso;
+	unsigned long expires;
 	int err;
 
 	aso = &macsec->aso;
@@ -1425,7 +1426,13 @@ static int macsec_aso_query(struct mlx5_core_dev *mdev, struct mlx5e_macsec *mac
 	macsec_aso_build_wqe_ctrl_seg(aso, &aso_wqe->aso_ctrl, NULL);
 
 	mlx5_aso_post_wqe(maso, false, &aso_wqe->ctrl);
-	err = mlx5_aso_poll_cq(maso, false);
+	expires = jiffies + msecs_to_jiffies(10);
+	do {
+		err = mlx5_aso_poll_cq(maso, false);
+		if (err)
+			usleep_range(2, 10);
+	} while (err && time_is_after_jiffies(expires));
+
 	if (err)
 		goto err_out;
 
drivers/net/ethernet/mellanox/mlx5/core/en_dcbnl.c +4 -2
index 2449731b7d79..89de92d06483 100644
@@ -117,12 +117,14 @@ static int mlx5e_dcbnl_ieee_getets(struct net_device *netdev,
 	if (!MLX5_CAP_GEN(priv->mdev, ets))
 		return -EOPNOTSUPP;
 
-	ets->ets_cap = mlx5_max_tc(priv->mdev) + 1;
-	for (i = 0; i < ets->ets_cap; i++) {
+	for (i = 0; i < IEEE_8021QAZ_MAX_TCS; i++) {
 		err = mlx5_query_port_prio_tc(mdev, i, &ets->prio_tc[i]);
 		if (err)
 			return err;
+	}
 
+	ets->ets_cap = mlx5_max_tc(priv->mdev) + 1;
+	for (i = 0; i < ets->ets_cap; i++) {
 		err = mlx5_query_port_tc_group(mdev, i, &tc_group[i]);
 		if (err)
 			return err;
drivers/net/ethernet/mellanox/mlx5/core/en_main.c +5 -1
index d6bcbc17151d..47d4b54d1563 100644
@@ -4094,8 +4094,12 @@ static netdev_features_t mlx5e_fix_features(struct net_device *netdev,
 		}
 	}
 
-	if (mlx5e_is_uplink_rep(priv))
+	if (mlx5e_is_uplink_rep(priv)) {
 		features = mlx5e_fix_uplink_rep_features(netdev, features);
+		features |= NETIF_F_NETNS_LOCAL;
+	} else {
+		features &= ~NETIF_F_NETNS_LOCAL;
+	}
 
 	mutex_unlock(&priv->state_lock);
 
drivers/net/ethernet/mellanox/mlx5/core/esw/acl/ingress_ofld.c +1 -2
index a994e71e05c1..db578a7e7008 100644
@@ -364,8 +364,7 @@ int mlx5_esw_acl_ingress_vport_bond_update(struct mlx5_eswitch *esw, u16 vport_n
 
 	if (WARN_ON_ONCE(IS_ERR(vport))) {
 		esw_warn(esw->dev, "vport(%d) invalid!\n", vport_num);
-		err = PTR_ERR(vport);
-		goto out;
+		return PTR_ERR(vport);
 	}
 
 	esw_acl_ingress_ofld_rules_destroy(esw, vport);
drivers/net/ethernet/mellanox/mlx5/core/eswitch.c +1 -0
index 9daf55e90367..c8b978014f2c 100644
@@ -959,6 +959,7 @@ void mlx5_esw_vport_disable(struct mlx5_eswitch *esw, u16 vport_num)
 	 */
 	esw_vport_change_handle_locked(vport);
 	vport->enabled_events = 0;
+	esw_apply_vport_rx_mode(esw, vport, false, false);
 	esw_vport_cleanup(esw, vport);
 	esw->enabled_vports--;
 
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c +19 -0
index 3992bf6337ca..0facc709f0e7 100644
@@ -3518,6 +3518,18 @@ static int esw_inline_mode_to_devlink(u8 mlx5_mode, u8 *mode)
 	return 0;
 }
 
+static bool esw_offloads_devlink_ns_eq_netdev_ns(struct devlink *devlink)
+{
+	struct net *devl_net, *netdev_net;
+	struct mlx5_eswitch *esw;
+
+	esw = mlx5_devlink_eswitch_get(devlink);
+	netdev_net = dev_net(esw->dev->mlx5e_res.uplink_netdev);
+	devl_net = devlink_net(devlink);
+
+	return net_eq(devl_net, netdev_net);
+}
+
 int mlx5_devlink_eswitch_mode_set(struct devlink *devlink, u16 mode,
 				  struct netlink_ext_ack *extack)
 {
@@ -3532,6 +3544,13 @@ int mlx5_devlink_eswitch_mode_set(struct devlink *devlink, u16 mode,
 	if (esw_mode_from_devlink(mode, &mlx5_mode))
 		return -EINVAL;
 
+	if (mode == DEVLINK_ESWITCH_MODE_SWITCHDEV &&
+	    !esw_offloads_devlink_ns_eq_netdev_ns(devlink)) {
+		NL_SET_ERR_MSG_MOD(extack,
+				   "Can't change E-Switch mode to switchdev when netdev net namespace has diverged from the devlink's.");
+		return -EPERM;
+	}
+
 	mlx5_lag_disable_change(esw->dev);
 	err = mlx5_esw_try_lock(esw);
 	if (err < 0) {
drivers/net/ethernet/mellanox/mlxsw/core_thermal.c +49 -167

351 lines not on this page · raw message

drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c +2 -2
index 045a24cacfa5..b6ee2d658b0c 100644
@@ -1354,7 +1354,7 @@ static int mlxsw_sp_fid_8021q_port_vid_map(struct mlxsw_sp_fid *fid,
 					   u16 vid)
 {
 	struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
-	u8 local_port = mlxsw_sp_port->local_port;
+	u16 local_port = mlxsw_sp_port->local_port;
 	int err;
 
 	/* In case there are no {Port, VID} => FID mappings on the port,
@@ -1391,7 +1391,7 @@ mlxsw_sp_fid_8021q_port_vid_unmap(struct mlxsw_sp_fid *fid,
 				  struct mlxsw_sp_port *mlxsw_sp_port, u16 vid)
 {
 	struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
-	u8 local_port = mlxsw_sp_port->local_port;
+	u16 local_port = mlxsw_sp_port->local_port;
 
 	mlxsw_sp_fid_port_vid_list_del(fid, mlxsw_sp_port->local_port, vid);
 	mlxsw_sp_fid_evid_map(fid, local_port, vid, false);
drivers/net/ethernet/mscc/ocelot_stats.c +2 -1
index 1478c3b21af1..cb196775489e 100644
@@ -611,7 +611,8 @@ static int ocelot_prepare_stats_regions(struct ocelot *ocelot)
 		if (!ocelot_stats_layout[i].reg)
 			continue;
 
-		if (region && ocelot_stats_layout[i].reg == last + 4) {
+		if (region && ocelot->map[SYS][ocelot_stats_layout[i].reg & REG_MASK] ==
+		    ocelot->map[SYS][last & REG_MASK] + 4) {
 			region->count++;
 		} else {
[… more lines in the raw message]

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

drivers/net/ethernet/natsemi/sonic.c +2 -2
index d17d1b4f2585..825356ee3492 100644

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

drivers/net/ethernet/qlogic/qed/qed_sriov.c +4 -1
index 0848b5529d48..911509c2b17d 100644

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

drivers/net/ethernet/qualcomm/emac/emac.c +6 -0
index 3115b2c12898..eaa50050aa0b 100644

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

drivers/net/ethernet/stmicro/stmmac/common.h +1 -0
index 6b5d96bced47..ec9c130276d8 100644

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

drivers/net/ethernet/stmicro/stmmac/dwmac-imx.c +1 -1
index bd52fb7cf486..0d6a84199fd8 100644

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

drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c +2 -2
index 7deb1f817dac..13aa919633b4 100644

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

drivers/net/ethernet/stmicro/stmmac/dwmac-mediatek.c +1 -1
index 2f7d8e4561d9..9ae31e3dc821 100644

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

drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +16 -14
index 01f7e19a2ca8..7389718b4797 100644

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

drivers/net/ethernet/toshiba/ps3_gelic_net.c +22 -19

41 lines not on this page · raw message

drivers/net/ethernet/toshiba/ps3_gelic_net.h +3 -2
index 68f324ed4eaf..0d98defb011e 100644

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

drivers/net/ethernet/xircom/xirc2ps_cs.c +5 -0
index 894e92ef415b..9f505cf02d96 100644

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

drivers/net/ieee802154/ca8210.c +2 -0
index e1a569b99e4a..0b0c6c0764fe 100644

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

drivers/net/mdio/acpi_mdio.c +6 -4
index d77c987fda9c..4630dde01974 100644

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

drivers/net/mdio/mdio-thunder.c +1 -0
index 822d2cdd2f35..394b864aaa37 100644

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

drivers/net/mdio/of_mdio.c +7 -5
index 510822d6d0d9..1e46e39f5f46 100644

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

drivers/net/phy/mdio_devres.c +6 -5
index b560e99695df..69b829e6ab35 100644

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

drivers/net/phy/phy.c +16 -7
index e5b6cb1a77f9..a8bf3c752c8a 100644

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

drivers/net/usb/asix_devices.c +27 -5
index 743cbf5d662c..f7cff58fe044 100644

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

drivers/net/usb/cdc_mbim.c +5 -0
index c89639381eca..cd4083e0b3b9 100644

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

drivers/net/usb/lan78xx.c +17 -1
index 068488890d57..c458c030fadf 100644

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

drivers/net/usb/qmi_wwan.c +1 -0
index a808d718c012..571e37e67f9c 100644

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

drivers/net/usb/smsc95xx.c +6 -0
index 32d2c60d334d..563ecd27b93e 100644

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

drivers/net/wireguard/queueing.h +1 -1
index 583adb37ee1e..125284b346a7 100644

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

drivers/net/wireless/mediatek/mt76/mac80211.c +8 -0
index fc608b369b3c..d75e999a80e1 100644

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

drivers/net/wireless/mediatek/mt76/mt76.h +1 -0
index 32a77a0ae9da..d8216243b022 100644

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

drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c +3 -0
index 5a047e630860..d106cbfc387c 100644

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

drivers/nvme/host/ioctl.c +8 -6
index 06f52db34be9..3a6f41a45f9b 100644

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

drivers/platform/chrome/cros_ec_chardev.c +1 -1
index 0de7c255254e..d6de5a294128 100644

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

drivers/platform/x86/intel/int3472/tps68470_board_data.c +3 -2
index 309eab9c0558..322237e056f3 100644

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

drivers/power/supply/bq24190_charger.c +1 -0
index 2b2c3a4391c1..6bd711932e06 100644

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

drivers/power/supply/da9150-charger.c +1 -0
index f9314cc0cd75..6b987da58655 100644

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

drivers/scsi/device_handler/scsi_dh_alua.c +4 -2
index 29a2865b8e2e..e436eaa3a907 100644

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

drivers/scsi/hisi_sas/hisi_sas_v3_hw.c +1 -2
index 0c3fcb807806..a63279f55d09 100644

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

drivers/scsi/lpfc/lpfc_init.c +9 -7
index 25ba20e42825..eeb73da754d0 100644

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

drivers/scsi/lpfc/lpfc_sli.c +4 -8
index 55a0d4013439..c0ddf55676a1 100644

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

drivers/scsi/mpi3mr/mpi3mr_app.c +2 -2
index bff637702397..d10c6afb7f9c 100644

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

drivers/scsi/mpi3mr/mpi3mr_fw.c +18 -1
index 28fd90c4b62d..a565817aa56d 100644

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

drivers/scsi/mpi3mr/mpi3mr_transport.c +9 -6
index 50263ba4f842..5748bd9369ff 100644

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

drivers/scsi/qla2xxx/qla_gbl.h +1 -0
index e3256e721be1..ee54207fc531 100644

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

drivers/scsi/qla2xxx/qla_init.c +2 -1
index 8f2a96879391..d506eb3a9b63 100644

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

drivers/scsi/qla2xxx/qla_isr.c +2 -1
index cbbd7014da93..86928a762a7a 100644

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

drivers/scsi/qla2xxx/qla_os.c +20 -1
index 2d86f804872b..02913cc75195 100644

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

drivers/scsi/scsi_devinfo.c +1 -0
index bc9d280417f6..3fcaf10a9dfe 100644

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

drivers/scsi/storvsc_drv.c +16 -0
index 22705eb781b0..2bf25e80b29a 100644

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

drivers/soc/qcom/llcc-qcom.c +3 -3
index 23ce2f78c4ed..26efe12012a0 100644

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

drivers/target/iscsi/iscsi_target_parameters.c +7 -5
index 2317fb077db0..557516c642c3 100644

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

drivers/tee/amdtee/core.c +14 -15
index 297dc62bca29..372d64756ed6 100644

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

drivers/thunderbolt/debugfs.c +6 -6
index 834bcad42e9f..d89f92032c1c 100644

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

drivers/thunderbolt/nhi.c +30 -19

49 lines not on this page · raw message

drivers/thunderbolt/nhi_regs.h +4 -2
index 0d4970dcef84..faef165a919c 100644

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

drivers/thunderbolt/quirks.c +13 -0
index b5f2ec79c4d6..ae28a03fa890 100644

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

drivers/thunderbolt/retimer.c +21 -2
index 56008eb91e2e..9cc28197dbc4 100644

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

drivers/thunderbolt/sb_regs.h +1 -0
index 5185cf3e4d97..f37a4320f10a 100644

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

drivers/thunderbolt/switch.c +2 -2
index 363d712aa364..302a73cb03ba 100644

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

drivers/thunderbolt/tb.h +9 -3
index f9786976f5ec..e11d973a8f9b 100644

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

drivers/thunderbolt/usb4.c +31 -5
index 2ed50fcbcca7..d5cd219ee9e6 100644

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

drivers/tty/hvc/hvc_xen.c +17 -2
index 5bddb2f5e931..98764e740c07 100644

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

drivers/ufs/core/ufshcd.c +1 -0
index 2ddc1aba0ad7..edb93d2c5a78 100644

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

drivers/usb/cdns3/cdns3-pci-wrap.c +5 -0
index deeea618ba33..1f6320d98a76 100644

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

drivers/usb/cdns3/cdnsp-ep0.c +1 -18
index 9b8325f82499..d63d5d92f255 100644

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

drivers/usb/cdns3/cdnsp-pci.c +11 -16
index efd54ed918b9..7b151f5af3cc 100644

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

drivers/usb/chipidea/ci.h +2 -0
index 005c67cb3afb..f210b7489fd5 100644

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

drivers/usb/chipidea/core.c +10 -1
index 27c601296130..281fc51720ce 100644

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

drivers/usb/chipidea/otg.c +4 -1
index 622c3b68aa1e..f5490f2a5b6b 100644

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

drivers/usb/dwc2/drd.c +2 -1
index d8d6493bc457..a8605b02115b 100644

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

drivers/usb/dwc2/gadget.c +2 -4
index 62fa6378d2d7..8b15742d9e8a 100644

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

drivers/usb/dwc2/platform.c +3 -16
index 23ef75996823..d1589ba7d322 100644

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

drivers/usb/dwc3/gadget.c +11 -3
index 3c63fa97a680..cf5b4f49c3ed 100644

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

drivers/usb/gadget/function/u_audio.c +1 -1
index c1f62e91b012..4a42574b4a7f 100644

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

drivers/usb/misc/onboard_usb_hub.c +1 -0
index 969c4c4f2ae9..87df27425ec5 100644

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

drivers/usb/misc/onboard_usb_hub.h +1 -0
index 62129a6a1ba5..a97b0594773f 100644

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

drivers/usb/storage/unusual_uas.h +7 -0
index c7b763d6d102..1f8c9b16a0fb 100644

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

drivers/usb/typec/tcpm/tcpm.c +24 -4
index 59b366b5c614..032d21a96779 100644

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

drivers/usb/typec/ucsi/ucsi.c +6 -5
index 1cf8947c6d66..8cbbb002fefe 100644

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

drivers/usb/typec/ucsi/ucsi_acpi.c +1 -1
index ce0c8ef80c04..62206a6b8ea7 100644

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

fs/btrfs/zoned.c +12 -2
index 1f503e8e42d4..f3b7d8ae93a9 100644

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

fs/cifs/cached_dir.c +35 -2
index 75d5e06306ea..bfc964b36c72 100644

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

fs/cifs/cifs_debug.c +30 -16

46 lines not on this page · raw message

fs/cifs/cifsfs.c +6 -3
index 10e00c624922..8485d380cddf 100644

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

fs/cifs/cifssmb.c +2 -4
index 8c014a3ff9e0..566e6a26b897 100644

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

fs/cifs/connect.c +8 -6
index 5a889f5f5c3e..6da2af97b8ba 100644

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

fs/cifs/fs_context.h +1 -1
index 1b8d4e27f831..3de00e7127ec 100644

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

fs/cifs/link.c +2 -0
index d937eedd74fb..c0f101fc1e5d 100644

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

fs/cifs/smb2inode.c +1 -0
index 8dd3791b5c53..163a03298430 100644

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

fs/cifs/smb2ops.c +26 -1
index c7f8dba5a855..502b6915ccc4 100644

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

fs/cifs/smb2pdu.c +4 -8
index 23926f754d2a..6e6e44d8b4c7 100644

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

fs/cifs/trace.h +8 -4
index 110070ba8b04..d3053bd8ae73 100644

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

fs/ksmbd/auth.c +3 -2
index 6e61b5bc7d86..cead696b656a 100644

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

fs/ksmbd/connection.c +4 -7
index 56be077e5d8a..2be9d7460494 100644

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

fs/ksmbd/connection.h +2 -1
index 3643354a3fa7..0e3a848defaf 100644

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

fs/ksmbd/smb2pdu.c +15 -5
index 875eecc6b95e..d0e76e2a1498 100644

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

fs/ksmbd/smb_common.c +22 -5
index 2a4fbbd55b91..5ab93fe0dec3 100644

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

fs/ksmbd/smb_common.h +8 -22
index e663ab9ea759..d30ce4c1a151 100644

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

fs/ksmbd/transport_rdma.c +1 -1
index 096eda9ef873..c06efc020bd9 100644

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

fs/ksmbd/transport_tcp.c +23 -12
index 603893fd87f5..20e85e2701f2 100644

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

fs/lockd/clnt4xdr.c +1 -8
index 7df6324ccb8a..8161667c976f 100644

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

fs/lockd/xdr4.c +12 -1
index 712fdfeb8ef0..5fcbf30cd275 100644

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

fs/nfs/dir.c +1 -1
index f7e4a88d5d92..e28dd6475e39 100644

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

fs/nfs/read.c +3 -0
index 8ae2c8d1219d..cd970ce62786 100644

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

fs/nfsd/vfs.c +8 -1
index bb1e85586dfd..5308070a47f3 100644

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

fs/nilfs2/ioctl.c +1 -1
index b4041d0566a9..ef9f9a2511b7 100644

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

fs/super.c +12 -3
index cf737ec2bd05..e35f601eee29 100644

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

fs/verity/verify.c +6 -6
index 961ba248021f..ffac380bd888 100644

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

include/linux/acpi_mdio.h +8 -1
index 0a24ab7cb66f..8e2eefa9fbc0 100644

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

include/linux/context_tracking.h +1 -0
index d4afa8508a80..3a7909ed5498 100644

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

include/linux/context_tracking_state.h +2 -0
index 4a4d56f77180..fdd537ea513f 100644

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

include/linux/efi.h +1 -0
index 98598bd1d2fa..ac22f7ca195a 100644

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

include/linux/io_uring.h +6 -5
index 934e5dd4ccc0..35b9328ca335 100644

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

include/linux/lockd/xdr4.h +1 -0
index 9a6b55da8fd6..72831e35dca3 100644

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

include/linux/nvme-tcp.h +3 -2
index 75470159a194..57ebe1267f7f 100644

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

include/linux/of_mdio.h +19 -3
index da633d34ab86..8a52ef2e6fa6 100644

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

include/linux/stmmac.h +1 -1
index a152678b82b7..a2414c187483 100644

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

include/linux/sysfb.h +7 -2
index 8ba8b5be5567..c1ef5fc60a3c 100644

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

io_uring/filetable.c +3 -0
index 68dfc6936aa7..b80614e7d605 100644

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

io_uring/net.c +16 -9
index 02587f7d5908..d474cad6abfb 100644

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

io_uring/rsrc.c +1 -0
index 4cbf3ad725d1..4ccfc2921626 100644

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

io_uring/uring_cmd.c +6 -4
index 2e4c483075d3..9a1dee571872 100644

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

kernel/bpf/core.c +1 -1
index f9c3b1033ec3..00d25e8ea9e3 100644

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

kernel/entry/common.c +3 -2
index 846add8394c4..be61332c66b5 100644

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

kernel/events/core.c +2 -2
index 8ae8a5055e20..fad170b47592 100644

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

kernel/kcsan/Makefile +1 -1
index 8cf70f068d92..a45f3dfc8d14 100644

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

kernel/sched/core.c +3 -0
index 2a4918a1faa9..9a0698353d60 100644

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

kernel/sched/fair.c +49 -5

54 lines not on this page · raw message

kernel/trace/trace_hwlat.c +2 -2
index c4945f8adc11..2f37a6e68aa9 100644

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

lib/maple_tree.c +5 -19
index 5a976393c9ae..a63594bef72e 100644

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

lib/test_maple_tree.c +48 -0

48 lines not on this page · raw message

mm/kfence/Makefile +1 -1
index 0bb95728a784..2de2a58d11a1 100644

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

mm/kfence/core.c +8 -2
index 5349c37a5dac..79c94ee55f97 100644

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

mm/ksm.c +9 -2
index addf490da146..83450d32e109 100644

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

mm/page_alloc.c +2 -1
index 3bb3484563ed..dab67b14e178 100644

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

mm/slab.c +1 -1
index 29300fc1289a..ae625e769e5d 100644

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

net/bluetooth/hci_core.c +19 -4
index b65c3aabcd53..334e308451f5 100644

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

net/bluetooth/hci_sync.c +48 -20

68 lines not on this page · raw message

net/bluetooth/iso.c +7 -2
index 24444b502e58..8d136a730163 100644

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

net/bluetooth/l2cap_core.c +79 -38

117 lines not on this page · raw message

net/bluetooth/mgmt.c +2 -7
index d2ea8e19aa1b..c4a7627b380d 100644

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

net/dsa/tag.c +1 -1
index b2fba1a003ce..5105a5ff58fa 100644

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

net/dsa/tag_brcm.c +8 -2
index 10239daa5745..cacdafb41200 100644

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

net/ipv4/ip_gre.c +2 -2
index ffff46cdcb58..e55a20264960 100644

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

net/ipv6/ip6_gre.c +2 -2
index 89f5f0f3f5d6..a4ecfc9d2593 100644

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

net/mac80211/ieee80211_i.h +3 -0
index 7ca9bde3c6d2..ba6bbb6be347 100644

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

net/mac80211/main.c +2 -0
index 846528850612..ddf2b7811c55 100644

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

net/mac80211/util.c +3 -0
index 261ac667887f..9c219e525ede 100644

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

net/mac80211/wme.c +4 -2
index a12c63638680..1601be576414 100644

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

net/sched/act_mirred.c +15 -8
index 7284bcea7b0b..8037ec9b1d31 100644

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

net/xdp/xdp_umem.c +7 -6
index 4681e8e8ad94..02207e852d79 100644

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

security/keys/request_key.c +6 -3
index 2da4404276f0..07a0ef2baacd 100644

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

sound/soc/amd/yc/acp6x-mach.c +14 -0
index 36314753923b..4a69ce702360 100644

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

sound/soc/intel/boards/sof_rt5682.c +23 -0
index 71a11d747622..4fe448295a90 100644

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

sound/soc/intel/common/soc-acpi-intel-mtl-match.c +12 -0
index b1a66a0f6818..7911c3af8071 100644

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

tools/bootconfig/test-bootconfig.sh +8 -4
index f68e2e9eef8b..a2c484c243f5 100755

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

tools/testing/selftests/bpf/prog_tests/btf.c +28 -0
index de1b5b9eb93a..d8d1292e73b5 100644

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

tools/testing/selftests/net/forwarding/tc_actions.sh +48 -1

49 lines not on this page · raw message

tools/testing/selftests/x86/amx.c +105 -3

108 lines not on this page · 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.