Linux 6.18.21
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.18.21 kernel.
All users of the 6.18 kernel series must upgrade.
The updated 6.18.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.18.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
------------
Documentation/admin-guide/kernel-parameters.txt | 3 Documentation/devicetree/bindings/sound/st,stm32-sai.yaml | 2 Documentation/filesystems/overlayfs.rst | 50 + Documentation/hwmon/adm1177.rst | 8 Documentation/hwmon/peci-cputemp.rst | 10 Makefile | 4 arch/arm64/boot/dts/freescale/imx8mn-tqma8mqnl-mba8mx.dts | 13 arch/arm64/boot/dts/freescale/imx8mn-tqma8mqnl.dtsi | 22 arch/arm64/kvm/reset.c | 14 arch/loongarch/include/asm/linkage.h | 36 arch/loongarch/include/asm/sigframe.h | 9 arch/loongarch/kernel/asm-offsets.c | 2 arch/loongarch/kernel/env.c | 7 arch/loongarch/kernel/signal.c | 6 arch/loongarch/kvm/intc/eiointc.c | 2 arch/loongarch/kvm/vcpu.c | 3 arch/loongarch/pci/pci.c | 80 + arch/loongarch/vdso/Makefile | 4 arch/loongarch/vdso/sigreturn.S | 6 arch/powerpc/net/bpf_jit_comp64.c | 23 arch/powerpc/tools/ftrace-gen-ool-stubs.sh | 4 arch/s390/include/asm/barrier.h | 4 arch/s390/kernel/entry.S | 3 arch/s390/kernel/syscall.c | 5 arch/s390/mm/fault.c | 11 arch/sh/drivers/platform_early.c | 4 arch/x86/coco/sev/noinstr.c | 6 arch/x86/entry/entry_fred.c | 14 arch/x86/events/core.c | 4 arch/x86/include/asm/unwind_user.h | 4 arch/x86/kernel/cpu/common.c | 20 arch/x86/kvm/mmu/mmu.c | 17 arch/x86/platform/efi/quirks.c | 2 block/blk-mq.c | 45 - drivers/acpi/ec.c | 2 drivers/base/bus.c | 43 + drivers/base/core.c | 2 drivers/base/dd.c | 60 + drivers/base/platform.c | 37 drivers/base/regmap/regmap.c | 30 drivers/bluetooth/btintel.c | 11 drivers/bluetooth/btusb.c | 5 drivers/bluetooth/hci_ll.c | 2 drivers/bus/simple-pm-bus.c | 4 drivers/clk/imx/clk-scu.c | 3 drivers/cpufreq/cpufreq_conservative.c | 12 drivers/cpufreq/cpufreq_governor.c | 3 drivers/cpufreq/cpufreq_governor.h | 1 drivers/cxl/core/hdm.c | 25 drivers/cxl/core/port.c | 8 drivers/cxl/pmem.c | 2 drivers/dma/dw-edma/dw-hdma-v0-core.c | 6 drivers/dma/fsl-edma-main.c | 26 drivers/dma/idxd/cdev.c | 8 drivers/dma/idxd/device.c | 6 drivers/dma/idxd/init.c | 4 drivers/dma/idxd/submit.c | 2 drivers/dma/idxd/sysfs.c | 1 drivers/dma/sh/rz-dmac.c | 66 - drivers/dma/xilinx/xdma.c | 4 drivers/dma/xilinx/xilinx_dma.c | 46 - drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c | 4 drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c | 45 - drivers/gpu/drm/amd/amdgpu/amdgpu_ids.h | 1 drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 1 drivers/gpu/drm/amd/amdgpu/mes_v12_0.c | 5 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 8 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h | 1 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c | 4 drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c | 7 drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c | 7 drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_6_ppt.c | 2 drivers/gpu/drm/i915/display/intel_display.c | 8 drivers/gpu/drm/i915/display/intel_dp_tunnel.c | 20 drivers/gpu/drm/i915/display/intel_dp_tunnel.h | 11 drivers/gpu/drm/i915/display/intel_gmbus.c | 4 drivers/gpu/drm/i915/display/intel_plane.c | 11 drivers/gpu/drm/i915/i915_wait_util.h | 2 drivers/gpu/drm/mediatek/mtk_dsi.c | 9 drivers/gpu/drm/ttm/tests/ttm_bo_test.c | 4 drivers/gpu/drm/xe/regs/xe_gt_regs.h | 1 drivers/gpu/drm/xe/xe_pt.c | 12 drivers/gpu/drm/xe/xe_vm.c | 22 drivers/gpu/drm/xe/xe_vm_types.h | 4 drivers/gpu/drm/xe/xe_wa.c | 3 drivers/hid/hid-apple.c | 7 drivers/hid/hid-asus.c | 18 drivers/hid/hid-ids.h | 1 drivers/hid/hid-magicmouse.c | 6 drivers/hid/hid-mcp2221.c | 2 drivers/hid/intel-ish-hid/ipc/hw-ish.h | 2 drivers/hid/intel-ish-hid/ipc/pci-ish.c | 12 drivers/hwmon/adm1177.c | 54 - drivers/hwmon/axi-fan-control.c | 2 drivers/hwmon/peci/cputemp.c | 4 drivers/hwmon/pmbus/ina233.c | 3 drivers/hwmon/pmbus/isl68137.c | 21 drivers/hwmon/pmbus/pmbus_core.c | 192 +++- drivers/i2c/busses/i2c-designware-amdisp.c | 11 drivers/i2c/busses/i2c-imx.c | 51 - drivers/i3c/master/dw-i3c-master.c | 2 drivers/infiniband/core/rw.c | 21 drivers/infiniband/hw/efa/efa_com.c | 173 ++-- drivers/infiniband/hw/ionic/ionic_controlpath.c | 4 drivers/infiniband/hw/irdma/cm.c | 29 drivers/infiniband/hw/irdma/uk.c | 39 drivers/infiniband/hw/irdma/utils.c | 2 drivers/infiniband/hw/irdma/verbs.c | 9 drivers/irqchip/irq-qcom-mpm.c | 3 drivers/irqchip/irq-renesas-rzv2h.c | 2 drivers/media/mc/mc-request.c | 5 drivers/media/v4l2-core/v4l2-ioctl.c | 5 drivers/net/can/dev/netlink.c | 4 drivers/net/ethernet/airoha/airoha_ppe.c | 2 drivers/net/ethernet/broadcom/asp2/bcmasp.c | 66 - drivers/net/ethernet/cadence/macb_main.c | 41 drivers/net/ethernet/freescale/enetc/enetc_ethtool.c | 2 drivers/net/ethernet/intel/iavf/iavf_ethtool.c | 31 drivers/net/ethernet/intel/ice/ice_ethtool.c | 14 drivers/net/ethernet/intel/ice/ice_repr.c | 5 drivers/net/ethernet/microchip/lan743x_main.c | 5 drivers/net/ethernet/pensando/ionic/ionic_lif.c | 17 drivers/net/team/team_core.c | 65 + drivers/net/tun_vnet.h | 2 drivers/net/usb/r8152.c | 1 drivers/net/virtio_net.c | 7 drivers/nvme/host/fabrics.c | 4 drivers/nvme/host/pci.c | 11 drivers/nvme/target/admin-cmd.c | 2 drivers/nvme/target/core.c | 14 drivers/nvme/target/nvmet.h | 1 drivers/nvme/target/rdma.c | 1 drivers/phy/qualcomm/phy-qcom-qmp-ufs.c | 3 drivers/phy/ti/phy-j721e-wiz.c | 2 drivers/pinctrl/mediatek/pinctrl-mtk-common.c | 9 drivers/pinctrl/renesas/pinctrl-rza1.c | 2 drivers/pinctrl/renesas/pinctrl-rzt2h.c | 1 drivers/pinctrl/stm32/Kconfig | 1 drivers/platform/olpc/olpc-xo175-ec.c | 2 drivers/platform/x86/hp/hp-wmi.c | 8 drivers/platform/x86/intel/hid.c | 23 drivers/platform/x86/intel/speed_select_if/isst_tpmi_core.c | 5 drivers/platform/x86/lenovo/wmi-gamezone.c | 2 drivers/platform/x86/oxpec.c | 30 drivers/platform/x86/touchscreen_dmi.c | 18 drivers/scsi/ibmvscsi/ibmvfc.c | 3 drivers/scsi/mpi3mr/mpi3mr_fw.c | 10 drivers/scsi/scsi_devinfo.c | 2 drivers/scsi/scsi_transport_sas.c | 2 drivers/scsi/ses.c | 2 drivers/slimbus/qcom-ngd-ctrl.c | 6 drivers/spi/spi-fsl-lpspi.c | 3 drivers/spi/spi-intel-pci.c | 1 drivers/spi/spi-meson-spicc.c | 2 drivers/spi/spi-sn-f-ospi.c | 17 drivers/spi/spi.c | 19 drivers/thermal/intel/int340x_thermal/processor_thermal_soc_slider.c | 8 drivers/usb/core/config.c | 6 drivers/usb/core/quirks.c | 5 drivers/virt/coco/tdx-guest/tdx-guest.c | 12 drivers/xen/privcmd.c | 3 fs/btrfs/block-group.c | 2 fs/btrfs/disk-io.c | 4 fs/btrfs/ioctl.c | 7 fs/btrfs/volumes.c | 5 fs/erofs/fileio.c | 6 fs/erofs/zdata.c | 3 fs/ext4/crypto.c | 9 fs/ext4/ext4.h | 1 fs/ext4/extents.c | 23 fs/ext4/fast_commit.c | 17 fs/ext4/fsync.c | 16 fs/ext4/ialloc.c | 6 fs/ext4/inline.c | 10 fs/ext4/inode.c | 75 + fs/ext4/mballoc.c | 30 fs/ext4/page-io.c | 10 fs/ext4/super.c | 16 fs/ext4/sysfs.c | 10 fs/fs-writeback.c | 18 fs/fuse/file.c | 4 fs/fuse/inode.c | 1 fs/jbd2/checkpoint.c | 15 fs/netfs/buffered_read.c | 3 fs/netfs/direct_read.c | 3 fs/netfs/direct_write.c | 15 fs/netfs/iterator.c | 43 + fs/netfs/read_collect.c | 4 fs/netfs/read_retry.c | 5 fs/netfs/read_single.c | 1 fs/netfs/write_collect.c | 4 fs/netfs/write_issue.c | 3 fs/overlayfs/copy_up.c | 6 fs/overlayfs/overlayfs.h | 21 fs/overlayfs/ovl_entry.h | 7 fs/overlayfs/params.c | 33 fs/overlayfs/super.c | 2 fs/overlayfs/util.c | 5 fs/smb/server/oplock.c | 72 + fs/smb/server/smb2pdu.c | 73 + fs/xfs/scrub/quota.c | 4 fs/xfs/scrub/trace.h | 12 fs/xfs/xfs_attr_item.c | 5 fs/xfs/xfs_dquot_item.c | 9 fs/xfs/xfs_inode_item.c | 9 fs/xfs/xfs_mount.c | 7 fs/xfs/xfs_trace.h | 47 - fs/xfs/xfs_trans_ail.c | 26 include/linux/damon.h | 6 include/linux/device.h | 54 + include/linux/device/bus.h | 4 include/linux/dma-mapping.h | 4 include/linux/fs.h | 1 include/linux/mempolicy.h | 1 include/linux/netfs.h | 1 include/linux/pagemap.h | 11 include/linux/platform_device.h | 5 include/linux/spi/spi.h | 5 include/linux/swapops.h | 27 include/linux/usb/quirks.h | 3 include/linux/usb/r8152.h | 1 include/linux/virtio_net.h | 53 + include/net/bluetooth/l2cap.h | 2 include/net/inet_hashtables.h | 14 include/net/ip6_fib.h | 21 include/sound/cs35l56.h | 1 include/trace/events/netfs.h | 8 include/trace/events/task.h | 7 include/uapi/linux/dma-buf.h | 1 include/uapi/linux/netfilter/nf_conntrack_common.h | 4 kernel/bpf/btf.c | 24 kernel/bpf/core.c | 43 - kernel/bpf/verifier.c | 36 kernel/dma/swiotlb.c | 21 kernel/events/core.c | 19 kernel/futex/core.c | 2 kernel/futex/pi.c | 3 kernel/futex/syscalls.c | 8 kernel/module/main.c | 7 kernel/power/main.c | 2 kernel/power/snapshot.c | 11 kernel/sched/ext.c | 2 kernel/sysctl.c | 2 kernel/time/alarmtimer.c | 2 kernel/trace/trace_osnoise.c | 10 mm/damon/core.c | 8 mm/damon/stat.c | 36 mm/damon/sysfs.c | 10 mm/mempolicy.c | 10 mm/mseal.c | 5 mm/pagewalk.c | 25 net/bluetooth/l2cap_core.c | 105 +- net/bluetooth/l2cap_sock.c | 3 net/bluetooth/mgmt.c | 2 net/bluetooth/sco.c | 10 net/can/af_can.c | 4 net/can/af_can.h | 2 net/can/gw.c | 6 net/can/isotp.c | 24 net/can/proc.c | 3 net/core/rtnetlink.c | 28 net/ipv4/esp4.c | 9 net/ipv4/inet_connection_sock.c | 20 net/ipv4/udp.c | 2 net/ipv6/addrconf.c | 4 net/ipv6/esp6.c | 9 net/ipv6/ip6_fib.c | 15 net/ipv6/netfilter/ip6t_rt.c | 4 net/ipv6/route.c | 2 net/key/af_key.c | 19 net/netfilter/nf_conntrack_expect.c | 4 net/netfilter/nf_conntrack_netlink.c | 16 net/netfilter/nf_conntrack_proto_tcp.c | 10 net/netfilter/nf_conntrack_sip.c | 14 net/netfilter/nfnetlink_log.c | 8 net/netfilter/nft_set_rbtree.c | 92 +- net/nfc/nci/core.c | 10 net/openvswitch/flow_netlink.c | 2 net/openvswitch/vport-netdev.c | 11 net/packet/af_packet.c | 1 net/smc/smc_rx.c | 9 net/tls/tls_sw.c | 2 net/xfrm/xfrm_iptfs.c | 17 net/xfrm/xfrm_nat_keepalive.c | 2 net/xfrm/xfrm_policy.c | 2 net/xfrm/xfrm_state.c | 1 net/xfrm/xfrm_user.c | 7 rust/kernel/regulator.rs | 33 rust/pin-init/src/macros.rs | 16 scripts/package/install-extmod-build | 4 sound/firewire/amdtp-stream.c | 2 sound/hda/codecs/hdmi/tegrahdmi.c | 1 sound/hda/codecs/realtek/alc269.c | 42 - sound/hda/codecs/realtek/alc662.c | 9 sound/hda/codecs/senarytech.c | 5 sound/hda/controllers/intel.c | 1 sound/soc/amd/acp/amd-acp63-acpi-match.c | 413 ++++++++++ sound/soc/codecs/adau1372.c | 34 sound/soc/codecs/cs35l56-shared.c | 16 sound/soc/codecs/cs35l56.c | 8 sound/soc/codecs/rt1320-sdw.c | 5 sound/soc/codecs/sma1307.c | 6 sound/soc/codecs/wcd934x.c | 2 sound/soc/fsl/fsl_easrc.c | 14 sound/soc/fsl/imx-card.c | 2 sound/soc/intel/boards/sof_sdw.c | 8 sound/soc/intel/catpt/device.c | 10 sound/soc/intel/catpt/dsp.c | 3 sound/soc/samsung/i2s.c | 6 sound/soc/sof/ipc4-topology.c | 2 sound/usb/quirks.c | 2 tools/objtool/arch/x86/decode.c | 62 - tools/objtool/check.c | 14 tools/testing/selftests/bpf/prog_tests/reg_bounds.c | 62 + tools/testing/selftests/bpf/progs/exceptions_fail.c | 9 tools/testing/selftests/mount_setattr/mount_setattr_test.c | 2 316 files changed, 3573 insertions(+), 1170 deletions(-)
Abel Vesa (1):
phy: qcom: qmp-ufs: Fix SM8650 PCS table for Gear 4
Abhijit Gangurde (1):
RDMA/ionic: Preserve and set Ethernet source MAC after ib_ud_header_init()
Alan Borzeszkowski (1):
spi: intel-pci: Add support for Nova Lake mobile SPI flash
Alberto Garcia (1):
PM: hibernate: Drain trailing zero pages on userspace restore
Alex Hung (1):
drm/amd/display: Fix drm_edid leak in amdgpu_dm
Alexander Stein (1):
dmaengine: xilinx: xdma: Fix regmap init error handling
Alexey Nepomnyashih (1):
ALSA: firewire-lib: fix uninitialized local variable
Ali Norouzi (1):
can: gw: fix OOB heap access in cgw_csum_crc8_rel()
Alice Ryhl (1):
rust: regulator: do not assume that regulator_get() returns non-null
Alison Schofield (1):
cxl/port: Fix use after free of parent_port in cxl_detach_ep()
Alok Tiwari (1):
platform/olpc: olpc-xo175-ec: Fix overflow error message to print inlen
Amelie Delaunay (1):
pinctrl: stm32: fix HDP driver dependency on GPIO_GENERIC
Amir Goldstein (1):
ovl: fix wrong detection of 32bit inode numbers
Anas Iqbal (1):
Bluetooth: hci_ll: Fix firmware leak on error path
Andy Shevchenko (1):
regmap: Synchronize cache for the page selector
Anil Samal (1):
RDMA/irdma: Fix deadlock during netdev reset with active connections
Antheas Kapenekakis (4):
platform/x86: oxpec: Add support for OneXPlayer APEX platform/x86: oxpec: Add support for OneXPlayer X1z platform/x86: oxpec: Add support for Aokzoe A2 Pro platform/x86: oxpec: Add support for OneXPlayer X1 Air
Asad Kamal (1):
drm/amd/pm: Return -EOPNOTSUPP for unsupported OD_MCLK on smu_v13_0_6
Baokun Li (1):
ext4: fix iloc.bh leak in ext4_fc_replay_inode() error paths
Benno Lossin (1):
rust: pin-init: internal: init: document load-bearing fact of field accessors
Biju Das (1):
irqchip/renesas-rzv2h: Fix error path in rzv2h_icu_probe_common()
Boris Burkov (1):
btrfs: set BTRFS_ROOT_ORPHAN_CLEANUP during subvol create
Borislav Petkov (AMD) (1):
x86/cpu: Remove X86_CR4_FRED from the CR4 pinned bits mask
Cen Zhang (1):
Bluetooth: btintel: serialize btintel_hw_error() with hci_req_sync_lock
Cezary Rojewski (1):
ASoC: Intel: catpt: Fix the device initialization
Chaitanya Kulkarni (1):
nvmet: move async event work off nvmet-wq
Charles Mirabile (1):
kbuild: Delete .builtin-dtbs.S when running make clean
Christian Brauner (1):
selftests/mount_setattr: increase tmpfs size for idmapped mount tests
Chuck Lever (2):
tls: Purge async_hold in tls_decrypt_async_wait() RDMA/rw: Fall back to direct SGE on MR pool exhaustion
Claudiu Beznea (2):
dmaengine: sh: rz-dmac: Protect the driver specific lists
dmaengine: sh: rz-dmac: Move CHCTRL updates under spinlock
Cui Chao (1):
cxl: Adjust the startup priority of cxl_pmem to be higher than that of cxl_acpi
Daniel Hodges (1):
nvme-fabrics: use kfree_sensitive() for DHCHAP secrets
Daniel Wade (1):
bpf: Fix unsound scalar forking in maybe_fork_scalars() for BPF_OR
Danilo Krummrich (5):
hwmon: axi-fan: don't use driver_override as IRQ name
sh: platform_early: remove pdev->driver_override check driver core: generalize driver_override in struct device driver core: platform: use generic driver_override infrastructure
spi: use generic driver_override infrastructure
Darrick J. Wong (2):
xfs: don't irele after failing to iget in xfs_attri_recover_work
xfs: remove file_path tracepoint data
David Carlier (1):
netfilter: ctnetlink: use netlink policy range checks
David Howells (2):
netfs: Fix read abandonment during retry
netfs: Fix the handling of stream->front by removing it
David McFarland (1):
platform/x86: intel-hid: disable wakeup_mode during hibernation
Davidlohr Bueso (1):
futex: Clear stale exiting pointer in futex_lock_pi() retry path
Deepanshu Kartikey (3):
ext4: convert inline data to extents when truncate exceeds inline size
netfs: Fix kernel BUG in netfs_limit_iter() for ITER_KVEC iterators
netfs: Fix NULL pointer dereference in netfs_unbuffered_write() on retry
Denis Benato (1):
HID: asus: add xg mobile 2023 external hardware support
Dmitry Torokhov (1):
pinctrl: renesas: rza1: Normalize return value of gpio_get()
Eduard Zingerman (1):
bpf: Fix u32/s32 bounds when ranges cross min/max boundary
Edward Adam Davis (1):
ext4: avoid infinite loops caused by residual data
Eric Dumazet (1):
af_key: validate families in pfkey_send_migrate()
Eric Huang (1):
drm/amdgpu: prevent immediate PASID reuse case
Ethan Tidmore (1):
RDMA/efa: Fix possible deadlock
Fei Lv (1):
ovl: make fsync after metadata copy-up opt-in mount option
Felix Gu (4):
pinctrl: renesas: rzt2h: Fix device node leak in rzt2h_gpio_register()
spi: sn-f-ospi: Fix resource leak in f_ospi_probe()
spi: meson-spicc: Fix double-put in remove path
phy: ti: j721e-wiz: Fix device node reference leak in wiz_get_lane_phy_types()
Fernando Fernandez Mancera (1):
xfrm: iptfs: fix skb_put() panic on non-linear skb during reassembly
Filipe Manana (1):
btrfs: fix lost error when running device stats on multiple devices fs
Florian Fuchs (1):
scsi: devinfo: Add BLIST_SKIP_IO_HINTS for Iomega ZIP
Geoffrey D. Bennett (2):
ALSA: usb-audio: Exclude Scarlett 2i2 1st Gen from SKIP_IFACE_SETUP
ALSA: usb-audio: Exclude Scarlett 2i4 1st Gen from SKIP_IFACE_SETUP
Greg Kroah-Hartman (3):
s390/syscalls: Add spectre boundary for syscall dispatch table
scsi: ses: Handle positive SCSI error from ses_recv_diag() Linux 6.18.21
Guangshuo Li (1):
ASoC: sma1307: fix double free of devm_kzalloc() memory
Guenter Roeck (3):
hwmon: (pmbus) Mark lowest/average/highest/rated attributes as read-only
hwmon: (pmbus) Introduce the concept of "write-only" attributes
hwmon: (pmbus/core) Protect regulator operations with mutex
GuoHan Zhao (1):
xen/privcmd: unregister xenstore notifier on module exit
Günther Noack (3):
HID: asus: avoid memory leak in asus_report_fixup()
HID: magicmouse: avoid memory leak in magicmouse_report_fixup()
HID: apple: avoid memory leak in apple_report_fixup()
Hans de Goede (1):
platform/x86: touchscreen_dmi: Add quirk for y-inverted Goodix touchscreen on SUPI S10
Hao-Yu Yang (1):
futex: Fix UaF between futex_key_to_node_opt() and vma_replace_policy()
Hari Bathini (2):
powerpc64/ftrace: fix OOL stub count with clang powerpc64/bpf: do not increment tailcall count when prog is NULL
Helen Koike (2):
Bluetooth: L2CAP: Fix null-ptr-deref on l2cap_sock_ready_cb
ext4: reject mount if bigalloc with s_first_data_block != 0
Huacai Chen (3):
LoongArch: Workaround LS2K/LS7A GPU DMA hang bug
LoongArch: KVM: Make kvm_get_vcpu_by_cpuid() more robust
LoongArch: KVM: Handle the case that EIOINTC's coremap is empty
Hyunwoo Kim (6):
xfrm: Fix work re-schedule after cancel in xfrm_nat_keepalive_net_fini()
Bluetooth: L2CAP: Validate PDU length before reading SDU length in l2cap_ecred_data_rcv()
Bluetooth: SCO: Fix use-after-free in sco_recv_frame() due to missing sock_hold
Bluetooth: L2CAP: Fix deadlock in l2cap_conn_del()
Bluetooth: L2CAP: Fix ERTM re-init and zero pdu_len infinite loop
ksmbd: do not expire session on binding failure
Ihor Solodrai (2):
bpf: Fix exception exit lock checking for subprogs
module: Fix kernel panic when a symbol st_shndx is out of bounds
Imre Deak (1):
drm/i915/dp_tunnel: Fix error handling when clearing stream BW in atomic state
Isaac J. Manjarres (1):
dma-buf: Include ioctl.h in UAPI header
Ivan Barrera (1):
RDMA/irdma: Clean up unnecessary dereference of event->cm_node
Jacob Moroni (1):
RDMA/irdma: Initialize free_qp completion before using it
Jakub Kicinski (1):
nfc: nci: fix circular locking dependency in nci_close_device
Jan Kara (3):
ext4: fix stale xarray tags after writeback
ext4: fix fsync(2) for nojournal mode
ext4: make recently_deleted() properly work with lazy itable initialization
Janosch Frank (1):
s390/mm: Add missing secure storage access fixups for donated memory
Jassi Brar (1):
irqchip/qcom-mpm: Add missing mailbox TX done acknowledgment
Jenny Guanni Qu (1):
bpf: Fix undefined behavior in interpreter sdiv/smod for INT_MIN
Jiayuan Chen (2):
team: fix header_ops type confusion with non-Ethernet ports
ext4: fix use-after-free in update_super_work when racing with umount
Jie Deng (1):
usb: core: new quirk to handle devices with zero configurations
Jihed Chaibi (3):
ASoC: dt-bindings: stm32: Fix incorrect compatible string in stm32h7-sai match
ASoC: adau1372: Fix unchecked clk_prepare_enable() return value
ASoC: adau1372: Fix clock leak on PLL lock failure
Jinjiang Tu (1):
mm/huge_memory: fix folio isn't locked in softleaf_to_folio()
Jiucheng Xu (1):
erofs: add GFP_NOIO in the bio completion if needed
Joanne Koong (1):
writeback: don't block sync for filesystems with no data integrity guarantees
Josh Law (3):
mm/damon/sysfs: check contexts->nr before accessing contexts_arr[0]
mm/damon/sysfs: check contexts->nr in repeat_call_fn
mm/damon/sysfs: fix param_ctx leak on damon_sysfs_new_test_ctx() failureJosh Poimboeuf (1):
objtool: Handle Clang RSP musical chairs
Joy Zou (1):
dmaengine: fsl-edma: fix channel parameter config for fixed channel requests
Julius Lehmann (1):
HID: magicmouse: fix battery reporting for Apple Magic Trackpad 2
Justin Chen (3):
net: bcmasp: streamline early exit in probe
net: bcmasp: fix double free of WoL irq
net: bcmasp: fix double disable of clk
Keith Busch (2):
nvme-pci: cap queue creation to used queues
nvme-pci: ensure we're polling a polled queue
Kevin Hao (3):
net: macb: Move devm_{free,request}_irq() out of spin lock area
net: macb: Protect access to net_device::ip_ptr with RCU lock
net: macb: Use dev_consume_skb_any() to free TX SKBs
Kohei Enju (1):
iavf: fix out-of-bounds writes in iavf_get_ethtool_stats()
Krishna Chomal (2):
platform/x86: hp-wmi: Add Omen 16-wf0xxx fan and thermal support
platform/x86: hp-wmi: Add Omen 16-xd0xxx fan and thermal supportKumar Kartikeya Dwivedi (1):
bpf: Release module BTF IDR before module unload
Kuniyuki Iwashima (2):
ipv6: Remove permanent routes from tb6_gc_hlist when all exceptions expire.
ipv6: Don't remove permanent routes with exceptions from tb6_gc_hlist.
LUO Haowen (1):
dmaengine: dw-edma: Fix multiple times setting of the CYCLE_STATE and CYCLE_BIT bits for HDMA.
Leif Skunberg (1):
platform/x86: intel-hid: Enable 5-button array on ThinkPad X1 Fold 16 Gen 1
Li Chen (1):
ext4: publish jinode after initialization
Li Jun (1):
LoongArch: Fix missing NULL checks for kstrdup()
Li RongQing (1):
platform/x86: ISST: Check HWP support before MSR access
Liucheng Lu (1):
ALSA: hda/realtek: add HP Laptop 14s-dr5xxx mute LED quirk
Long Li (1):
xfs: fix ri_total validation in xlog_recover_attri_commit_pass2
Lorenzo Stoakes (Oracle) (1):
mm/mseal: update VMA end correctly on merge
Luca Leonardo Scorcia (2):
pinctrl: mediatek: common: Fix probe failure for devices without EINT drm/mediatek: dsi: Store driver data before invoking mipi_dsi_host_register
Luiz Augusto von Dentz (3):
Bluetooth: MGMT: Fix dangling pointer on mgmt_add_adv_patterns_monitor_complete
Bluetooth: L2CAP: Fix not tracking outstanding TX ident
Bluetooth: L2CAP: Fix regressions caused by reusing ident
Luo Haiyang (1):
tracing: Fix potential deadlock in cpu hotplug with osnoise
Maarten Lankhorst (1):
drm/ttm/tests: Fix build failure on PREEMPT_RT
Marc Buerg (1):
sysctl: fix uninitialized variable in proc_do_large_bitmap
Marc Kleine-Budde (2):
spi: spi-fsl-lpspi: fix teardown order issue (UAF)
can: netlink: can_changelink(): add missing error handling to call can_ctrlmode_changelink()
Marc Zyngier (1):
KVM: arm64: Discard PC update state on vcpu reset
Marek Vasut (3):
dmaengine: xilinx: xilinx_dma: Fix dma_device directions
dmaengine: xilinx: xilinx_dma: Fix residue calculation for cyclic DMA
dmaengine: xilinx: xilinx_dma: Fix unmasked residue subtraction
Mario Limonciello (1):
Revert "ALSA: hda/intel: Add MSI X870E Tomahawk to denylist"
Mark Brown (2):
ASoC: fsl_easrc: Fix event generation in fsl_easrc_iec958_set_reg()
ASoC: fsl_easrc: Fix event generation in fsl_easrc_iec958_put_bits()
Mark Harmstone (1):
btrfs: fix super block offset in error message in btrfs_validate_super()
Markus Niebel (1):
arm64: dts: imx8mn-tqma8mqnl: fix LDO5 power off
Martin KaFai Lau (1):
udp: Fix wildcard bind conflict check when using hash2
Matt Roper (1):
drm/xe: Implement recent spec updates to Wa_16025250150
Matthew Auld (1):
drm/xe: always keep track of remap prev/next
Max Boone (1):
mm/pagewalk: fix race between concurrent split and refault
Miguel Ojeda (1):
dma-mapping: add missing inline for dma_free_attrs
Mike Rapoport (Microsoft) (1):
x86/efi: efi_unmap_boot_services: fix calculation of ranges_to_free size
Milos Nikic (1):
jbd2: gracefully abort on checkpointing state corruptions
Minseo Park (1):
Bluetooth: L2CAP: Fix stack-out-of-bounds read in l2cap_ecred_conn_req
Minwoo Ra (1):
xfrm: prevent policy_hthresh.work from racing with netns teardown
Mohammad Heib (1):
ionic: fix persistent MAC address override on PF
Namjae Jeon (2):
ksmbd: replace hardcoded hdr2_len with offsetof() in smb2_calc_max_out_buf_len()
ksmbd: fix potencial OOB in get_file_all_info() for compound requests
Nathan Chancellor (1):
platform/x86: lenovo: wmi-gamezone: Drop gz_chain_head
Nikunj A Dadhania (2):
x86/cpu: Enable FSGSBASE early in cpu_init_exception_handling() x86/fred: Fix early boot failures on SEV-ES/SNP guests
Nilay Shroff (1):
block: break pcpu_alloc_mutex dependency on freeze_lock
Oliver Freyermuth (1):
ASoC: Intel: sof_sdw: Add quirk for Alienware Area 51 (2025) 0CCD SKU
Oliver Hartkopp (2):
can: statistics: add missing atomic access in hot path
can: isotp: fix tx.buf use-after-free in isotp_sendmsg()
Pablo Neira Ayuso (2):
netfilter: nft_set_rbtree: revisit array resize logic
netfilter: nf_conntrack_expect: skip expectations in other netns via proc
Paolo Valerio (1):
net: macb: use the current queue number for stats
Paul Moses (1):
xfrm: iptfs: only publish mode_data after clone setup
Pengpeng Hou (1):
Bluetooth: btusb: clamp SCO altsetting table indices
Peter Metz (1):
platform/x86: intel-hid: Add Dell 14 Plus 2-in-1 to dmi_vgbs_allow_list
Peter Ujfalusi (1):
ASoC: SOF: ipc4-topology: Allow bytes controls without initial payload
Peter Yin (1):
i3c: master: dw-i3c: Fix missing of_node for virtual I2C adapter
Peter Zijlstra (4):
x86/perf: Make sure to program the counter value for stopped events on migration
perf: Make sure to use pmu_ctx->pmu for groups
unwind_user/x86: Fix arch=um build
futex: Require sys_futex_requeue() to have identical flags
Petr Oros (2):
ice: fix inverted ready check for VF representors
ice: use ice_update_eth_stats() for representor stats
Pratap Nirujogi (1):
i2c: designware: amdisp: Fix resume-probe race condition issue
Qi Tang (1):
net/smc: fix double-free of smc_spd_priv when tee() duplicates splice pipe buffer
Qingfang Deng (1):
net: airoha: add RCU lock around dev_fill_forward_path
Ranjan Kumar (1):
scsi: mpi3mr: Clear reset history on ready and recheck state after timeout
Ren Wei (1):
netfilter: ip6t_rt: reject oversized addrnr in rt_mt6_check()
Richard Fitzgerald (1):
ASoC: cs35l56: Only patch ASP registers if the DAI is part of a DAIlink
Romain Sioen (1):
HID: mcp2221: cancel last I2C command on read error
Roshan Kumar (1):
xfrm: iptfs: validate inner IPv4 header length in IPTFS payload
Sabrina Dubroca (7):
xfrm: add missing extack for XFRMA_SA_PCPU in add_acquire and allocspi
xfrm: fix the condition on x->pcpu_num in xfrm_sa_len
xfrm: call xdo_dev_state_delete during state update
esp: fix skb leak with espintcp and async crypto
rtnetlink: count IFLA_PARENT_DEV_{NAME,BUS_NAME} in if_nlmsg_size
rtnetlink: count IFLA_INFO_SLAVE_KIND in if_nlmsg_size
rtnetlink: fix leak of SRCU struct in rtnl_link_register
Sachin Kumar (1):
bpf: Fix constant blinding for PROBE_MEM32 stores
Samasth Norway Ananda (1):
drm/i915/gmbus: fix spurious timeout on 512-byte burst reads
Sanman Pradhan (5):
hwmon: (adm1177) fix sysfs ABI violation and current unit conversion
hwmon: (pmbus/ina233) Fix error handling and sign extension in shunt voltage read
hwmon: (pmbus/isl68137) Add mutex protection for AVS enable sysfs attributes
hwmon: (peci/cputemp) Fix crit_hyst returning delta instead of absolute temperature
hwmon: (peci/cputemp) Fix off-by-one in cputemp_is_visible()
Sean Christopherson (2):
KVM: x86/mmu: Drop/zap existing present SPTE even when creating an MMIO SPTE
KVM: x86/mmu: Only WARN in direct MMUs when overwriting shadow-present SPTE
Sean Rhodes (1):
ALSA: hda/realtek: Sequence GPIO2 on Star Labs StarFighter
SeongJae Park (2):
mm/damon/stat: monitor all System RAM resources mm/damon/core: avoid use of half-online-committed context
Sheetal (1):
ALSA: hda/hdmi: Add Tegra238 HDA codec device ID
Sheng Yong (1):
erofs: set fileio bio failed in short read case
Shengjiu Wang (1):
ASoC: fsl: imx-card: initialize playback_only and capture_only
Shigeru Yoshida (1):
dma: swiotlb: add KMSAN annotations to swiotlb_bounce()
Shin'ichiro Kawasaki (1):
btrfs: fix leak of kobject name for sub-group space_info
Shiraz Saleem (1):
RDMA/irdma: Harden depth calculation functions
Shuming Fan (1):
ASoC: rt1321: fix DMIC ch2/3 mask issue
Simon Trimmer (1):
ASoC: amd: acp: Add ACP6.3 match entries for Cirrus Logic parts
Simon Weber (1):
ext4: fix journal credit check when setting fscrypt context
Smita Koralahalli (1):
cxl/hdm: Avoid incorrect DVSEC fallback when HDM decoders are enabled
Srinivas Kandagatla (1):
ASoC: codecs: wcd934x: fix typo in dt parsing
Srinivas Pandruvada (2):
thermal: intel: int340x: soc_slider: Set offset only for balanced mode platform/x86: ISST: Correct locked bit width
Srinivasan Shanmugam (1):
drm/amdgpu: Fix fence put before wait in amdgpu_amdkfd_submit_ib
Stefan Eichenberger (2):
i2c: imx: fix i2c issue when reading multiple messages
i2c: imx: ensure no clock is generated after last read
Takashi Iwai (1):
HID: apple: Add EPOMAKER TH87 to the non-apple keyboards list
Tatyana Nikolova (4):
RDMA/irdma: Update ibqp state to error if QP is already in error state RDMA/irdma: Remove a NOP wait_event() in irdma_modify_qp_roce() RDMA/irdma: Remove reset check from irdma_modify_qp_to_err() RDMA/irdma: Return EINVAL for invalid arp index error
Tejas Bharambe (1):
ext4: validate p_idx bounds in ext4_ext_correct_indexes
Thangaraj Samynathan (1):
net: lan743x: fix duplex configuration in mac_link_up
Theodore Ts'o (2):
ext4: handle wraparound when searching for blocks for indirect mapped blocks
ext4: always drain queued discard work in ext4_mb_release()
Thomas Weißschuh (1):
kbuild: install-extmod-build: Package resolve_btfids if necessary
Toke Høiland-Jørgensen (1):
net: openvswitch: Avoid releasing netdev before teardown completes
Tomi Valkeinen (1):
dmaengine: xilinx_dma: Fix reset related timeout with two-channel AXIDMA
Tuo Li (1):
dmaengine: idxd: fix possible wrong descriptor completion in llist_abort_desc()
Tyllis Xu (1):
scsi: ibmvfc: Fix OOB access in ibmvfc_discover_targets_done()
Uzair Mughal (1):
ALSA: hda/realtek: Add headset jack quirk for Thinkpad X390
Valentin Spreckels (1):
net: usb: r8152: add TRENDnet TUC-ET2G
Vasily Gorbik (2):
s390/barrier: Make array_index_mask_nospec() __always_inline s390/entry: Scrub r12 register on kernel entry
Ville Syrjälä (2):
drm/i915: Order OP vs. timeout correctly in __wait_for() drm/i915: Unlink NV12 planes earlier
Vinicius Costa Gomes (6):
dmaengine: idxd: Fix crash when the event log is disabled
dmaengine: idxd: Fix possible invalid memory access after FLR
dmaengine: idxd: Fix not releasing workqueue on .release()
dmaengine: idxd: Fix memory leak when a wq is reset
dmaengine: idxd: Fix freeing the allocated ida too late
dmaengine: idxd: Fix leaking event log memory
Viresh Kumar (1):
cpufreq: conservative: Reset requested_freq on limits change
Wei Fang (1):
net: enetc: fix the output issue of 'ethtool --show-ring'
Weiming Shi (3):
netfilter: nfnetlink_log: fix uninitialized padding leak in NFULA_PAYLOAD
netfilter: nf_conntrack_sip: fix use of uninitialized rtp_addr in process_sdp
ACPI: EC: clean up handlers on probe failure in acpi_ec_setup()
Werner Kasselman (2):
ksmbd: fix memory leaks and NULL deref in smb2_lock()
ksmbd: fix use-after-free and NULL deref in smb_grant_oplock()
Xi Ruoyao (1):
LoongArch: vDSO: Emit GNU_EH_FRAME correctly
Xuan Zhuo (2):
virtio-net: correct hdr_len handling for VIRTIO_NET_F_GUEST_HDRLEN
virtio-net: correct hdr_len handling for tunnel gso
Xuewen Yan (1):
tracing: Revert "tracing: Remove pid in task_rename tracing output"
Yang Wang (2):
drm/amdgpu: fix gpu idle power consumption issue for gfx v12 drm/amd/pm: fix amdgpu_irq enabled counter unbalanced on smu v11.0
Yang Yang (2):
openvswitch: defer tunnel netdev_put to RCU release
openvswitch: validate MPLS set/set_masked payload length
Yazhou Tang (1):
bpf: Reset register ID for BPF_END value tracking
Ye Bin (2):
ext4: test if inode's all dirty pages are submitted to disk
ext4: avoid allocate block from corrupted group in ext4_mb_find_by_goal()
Yihang Li (1):
scsi: scsi_transport_sas: Fix the maximum channel scanning issue
Yochai Eisenrich (1):
net: fix fanout UAF in packet_release() via NETDEV_UP race
Yonatan Nachum (3):
RDMA/efa: Check stored completion CTX command ID with received one RDMA/efa: Improve admin completion context state machine RDMA/efa: Fix use of completion ctx after free
Youngjun Park (1):
PM: sleep: Drop spurious WARN_ON() from pm_restore_gfp_mask()
Yuchan Nam (1):
media: mc, v4l2: serialize REINIT and REQBUFS with req_queue_mutex
Yussuf Khalil (1):
drm/amd/display: Do not skip unrelated mode changes in DSC validation
Yuto Ohnuki (4):
xfs: stop reclaim before pushing AIL during unmount
xfs: save ailp before dropping the AIL lock in push callbacks
xfs: avoid dereferencing log items after push callbacks
ext4: replace BUG_ON with proper error handling in ext4_read_inline_folio
Zhan Xusheng (1):
alarmtimer: Fix argument order in alarm_timer_forward()
Zhang Chen (1):
Bluetooth: L2CAP: Fix send LE flow credits in ACL link
Zhang Heng (3):
ALSA: hda/realtek: Add quirk for Gigabyte Technology to fix headphone
ALSA: hda/realtek: add quirk for ASUS UM6702RC
ALSA: hda/realtek: add quirk for ASUS Strix G16 G615JMR
Zhang Lixu (1):
HID: intel-ish-hid: ipc: Add Nova Lake-H/S PCI device IDs
Zhang Yi (1):
ext4: do not check fast symlink during orphan recovery
Zqiang (1):
ext4: fix the might_sleep() warnings in kvfree()
Zubin Mithra (1):
virt: tdx-guest: Fix handling of host controlled 'quote' buffer length
hongao (1):
xfs: scrub: unlock dquot before early return in quota scrub
wangdicheng (1):
ALSA: hda/senary: Ensure EAPD is enabled during init
xietangxin (1):
virtio_net: Fix UAF on dst_ops when IFF_XMIT_DST_RELEASE is cleared and napi_tx is false
zhidao su (1):
sched_ext: Use WRITE_ONCE() for the write side of dsq->seq update
Greg Kroah-Hartman
maintainerDocumentation/admin-guide/kernel-parameters.txt +3 -0
@@ -7925,6 +7925,9 @@ p = USB_QUIRK_SHORT_SET_ADDRESS_REQ_TIMEOUT (Reduce timeout of the SET_ADDRESS request from 5000 ms to 500 ms); + q = USB_QUIRK_FORCE_ONE_CONFIG (Device + claims zero configurations, + forcing to 1); Example: quirks=0781:5580:bk,0a5c:5834:gij usbhid.mousepoll=
Documentation/devicetree/bindings/sound/st,stm32-sai.yaml +1 -1
@@ -164,7 +164,7 @@ allOf: properties: compatible: contains: - const: st,stm32mph7-sai + const: st,stm32h7-sai then: properties: clocks:
Documentation/filesystems/overlayfs.rst +50 -0
56 lines not on this page · raw message
Documentation/hwmon/adm1177.rst +4 -4
@@ -27,10 +27,10 @@ for details. Sysfs entries ------------- -The following attributes are supported. Current maxim attribute +The following attributes are supported. Current maximum attribute is read-write, all other attributes are read-only. -in0_input Measured voltage in microvolts. +in0_input Measured voltage in millivolts. -curr1_input Measured current in microamperes. -curr1_max_alarm Overcurrent alarm in microamperes. +curr1_input Measured current in milliamperes. +curr1_max Overcurrent shutdown threshold in milliamperes.
Documentation/hwmon/peci-cputemp.rst +6 -4
@@ -51,8 +51,9 @@ temp1_max Provides thermal control temperature of the CPU package temp1_crit Provides shutdown temperature of the CPU package which is also known as the maximum processor junction temperature, Tjmax or Tprochot. -temp1_crit_hyst Provides the hysteresis value from Tcontrol to Tjmax of - the CPU package. +temp1_crit_hyst Provides the hysteresis temperature of the CPU + package. Returns Tcontrol, the temperature at which + the critical condition clears. temp2_label "DTS" temp2_input Provides current temperature of the CPU package scaled
@@ -62,8 +63,9 @@ temp2_max Provides thermal control temperature of the CPU package temp2_crit Provides shutdown temperature of the CPU package which is also known as the maximum processor junction temperature, Tjmax or Tprochot. -temp2_crit_hyst Provides the hysteresis value from Tcontrol to Tjmax of - the CPU package. +temp2_crit_hyst Provides the hysteresis temperature of the CPU + package. Returns Tcontrol, the temperature at which + the critical condition clears. temp3_label "Tcontrol" temp3_input Provides current Tcontrol temperature of the CPU
Makefile +2 -2
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 18 -SUBLEVEL = 20 +SUBLEVEL = 21 EXTRAVERSION = NAME = Baby Opossum Posse
@@ -1588,7 +1588,7 @@ CLEAN_FILES += vmlinux.symvers modules-only.symvers \ modules.builtin.ranges vmlinux.o.map vmlinux.unstripped \ compile_commands.json rust/test \ rust-project.json .vmlinux.objs .vmlinux.export.c \ - .builtin-dtbs-list .builtin-dtb.S + .builtin-dtbs-list .builtin-dtbs.S # Directories & files removed with 'make mrproper' MRPROPER_FILES += include/config include/generated \
arch/arm64/boot/dts/freescale/imx8mn-tqma8mqnl-mba8mx.dts +7 -6
@@ -69,6 +69,10 @@ &mipi_dsi { samsung,esc-clock-frequency = <20000000>; }; +®_usdhc2_vqmmc { + status = "okay"; +}; + &sai3 { assigned-clocks = <&clk IMX8MN_CLK_SAI3>; assigned-clock-parents = <&clk IMX8MN_AUDIO_PLL1_OUT>;
@@ -216,8 +220,7 @@ pinctrl_usdhc2: usdhc2grp { <MX8MN_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d4>, <MX8MN_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d4>, <MX8MN_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d4>, - <MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d4>, - <MX8MN_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0x84>; + <MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d4>; }; pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp {
@@ -226,8 +229,7 @@ pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp { <MX8MN_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d4>, <MX8MN_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d4>, <MX8MN_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d4>, - <MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d4>, - <MX8MN_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0x84>; + <MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d4>; }; pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp {
@@ -236,8 +238,7 @@ pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp { <MX8MN_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d4>, <MX8MN_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d4>, <MX8MN_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d4>, - <MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d4>, - <MX8MN_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0x84>; + <MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d4>; }; pinctrl_usdhc2_gpio: usdhc2-gpiogrp {
arch/arm64/boot/dts/freescale/imx8mn-tqma8mqnl.dtsi +22 -0
@@ -30,6 +30,20 @@ reg_vcc3v3: regulator-vcc3v3 { regulator-max-microvolt = <3300000>; }; + reg_usdhc2_vqmmc: regulator-usdhc2-vqmmc { + compatible = "regulator-gpio"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_reg_usdhc2_vqmmc>; + regulator-name = "V_SD2"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3300000>; + gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>; + states = <1800000 0x1>, + <3300000 0x0>; + vin-supply = <&ldo5_reg>; + status = "disabled"; + }; + reserved-memory { #address-cells = <2>; #size-cells = <2>;
@@ -233,6 +247,10 @@ &mipi_dsi { vddio-supply = <&ldo3_reg>; }; +&usdhc2 { + vqmmc-supply = <®_usdhc2_vqmmc>; +}; + &usdhc3 { pinctrl-names = "default", "state_100mhz", "state_200mhz"; pinctrl-0 = <&pinctrl_usdhc3>;
@@ -287,6 +305,10 @@ pinctrl_reg_usdhc2_vmmc: regusdhc2vmmcgrp { fsl,pins = <MX8MN_IOMUXC_SD2_RESET_B_GPIO2_IO19 0x84>; }; + pinctrl_reg_usdhc2_vqmmc: regusdhc2vqmmcgrp { + fsl,pins = <MX8MN_IOMUXC_GPIO1_IO04_GPIO1_IO4 0xc0>; + }; + pinctrl_usdhc3: usdhc3grp { fsl,pins = <MX8MN_IOMUXC_NAND_WE_B_USDHC3_CLK 0x1d4>, <MX8MN_IOMUXC_NAND_WP_B_USDHC3_CMD 0x1d2>,
arch/arm64/kvm/reset.c +14 -0
@@ -247,6 +247,20 @@ void kvm_reset_vcpu(struct kvm_vcpu *vcpu)kvm_vcpu_set_be (vcpu); *vcpu_pc (vcpu) = target_pc; + +/* +* We may come from a state where either a PC update was +* pending (SMC call resulting in PC being increpented to +* skip the SMC) or a pending exception. Make sure we get +* rid of all that, as this cannot be valid out of reset. +* +* Note that clearing the exception mask also clears PC +* updates, but that's an implementation detail, and we +* really want to make it explicit. +*/ +vcpu_clear_flag (vcpu,PENDING_EXCEPTION ); +vcpu_clear_flag (vcpu,EXCEPT_MASK ); +vcpu_clear_flag (vcpu,INCREMENT_PC );vcpu_set_reg (vcpu,0 , reset_state.r0); }
arch/loongarch/include/asm/linkage.h +36 -0
@@ -41,4 +41,40 @@ .cfi_endproc; \SYM_END (name,SYM_T_NONE ) +/* +* This is for the signal handler trampoline, which is used as the return +* address of the signal handlers in userspace instead of called normally. +* The long standing libgcc bug https://gcc.gnu.org/PR124050 requires a +* nop between .cfi_startproc and the actual address of the trampoline, so +* we cannot simply use SYM_FUNC_START. +* +* This wrapper also contains all the .cfi_* directives for recovering +* the content of the GPRs and the "return address" (where the rt_sigreturn +* syscall will jump to), assuming there is a struct rt_sigframe (where +* a struct sigcontext containing those information we need to recover) at +* $sp. The "DWARF for the LoongArch(TM) Architecture" manual states +* column 0 is for $zero, but it does not make too much sense to +* save/restore the hardware zero register. Repurpose this column here +* for the return address (here it's not the content of $ra we cannot use +* the default column 3). + */ +#define SYM_SIGFUNC_START (name) \ + .cfi_startproc; \ + .cfi_signal_frame; \ + .cfi_def_cfa 3, RT_SIGFRAME_SC; \ + .cfi_return_column 0; \ + .cfi_offset 0, SC_PC; \ + \ + .irp num, 1, 2, 3, 4, 5, 6, 7, 8, \ + 9, 10, 11, 12, 13, 14, 15, 16, \ + 17, 18, 19, 20, 21, 22, 23, 24, \ + 25, 26, 27, 28, 29, 30, 31; \ + .cfi_offset \num, SC_REGS + \num * SZREG; \ + .endr; \ + \ + nop; \ + SYM_START(name, SYM_L_GLOBAL, SYM_A_ALIGN) + +#define SYM_SIGFUNC_END (name) SYM_FUNC_END(name) +#endif
arch/loongarch/include/asm/sigframe.h new file +9 -0
@@ -0,0 +1,9 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ + +#include <asm/siginfo.h> +#include <asm/ucontext.h> + +struct rt_sigframe { +struct siginfo rs_info; +struct ucontext rs_uctx; +};
arch/loongarch/kernel/asm-offsets.c +2 -0
@@ -16,6 +16,7 @@#include <asm/ptrace.h> #include <asm/processor.h> #include <asm/ftrace.h> +#include <asm/sigframe.h> #include <vdso/datapage.h> static void __used output_ptreg_defines (void )
@@ -220,6 +221,7 @@ static void __used output_sc_defines(void)COMMENT ("Linux sigcontext offsets." );OFFSET (SC_REGS , sigcontext, sc_regs);OFFSET (SC_PC , sigcontext, sc_pc); +OFFSET (RT_SIGFRAME_SC , rt_sigframe, rs_uctx.uc_mcontext);BLANK (); }
arch/loongarch/kernel/env.c +3 -4
@@ -42,16 +42,15 @@ static int __init init_cpu_fullname(void)int cpu, ret;char *cpuname;const char *model; -struct device_node *root;/* Parsing cpuname from DTS model property */ - root =of_find_node_by_path ("/" ); - ret =of_property_read_string (root,"model" , &model); + ret =of_property_read_string (of_root,"model" , &model);if (ret ==0 ) { cpuname =kstrdup (model,GFP_KERNEL ); +if (!cpuname) +return -ENOMEM ; loongson_sysconf.cpuname =strsep (&cpuname," " ); } -of_node_put (root);if (loongson_sysconf.cpuname && !strncmp (loongson_sysconf.cpuname,"Loongson" ,8 )) {for (cpu =0 ; cpu <NR_CPUS ; cpu++)
arch/loongarch/kernel/signal.c +1 -5
@@ -35,6 +35,7 @@#include <asm/cpu-features.h> #include <asm/fpu.h> #include <asm/lbt.h> +#include <asm/sigframe.h> #include <asm/ucontext.h> #include <asm/vdso.h>
@@ -51,11 +52,6 @@#define lock_lbt_owner () ({ preempt_disable(); pagefault_disable(); })#define unlock_lbt_owner () ({ pagefault_enable(); preempt_enable(); }) -struct rt_sigframe { -struct siginfo rs_info; -struct ucontext rs_uctx; -}; -struct _ctx_layout {struct sctx_info *addr;unsigned int size;
arch/loongarch/kvm/intc/eiointc.c +1 -1
@@ -83,7 +83,7 @@ static inline void eiointc_update_sw_coremap(struct loongarch_eiointc *s,if (!(s->status &BIT (EIOINTC_ENABLE_CPU_ENCODE ))) { cpuid =ffs (cpuid) -1 ; - cpuid = (cpuid >=4 ) ?0 : cpuid; + cpuid = ((cpuid <0 ) || (cpuid >=4 )) ?0 : cpuid; } vcpu =kvm_get_vcpu_by_cpuid (s->kvm, cpuid);
arch/loongarch/kvm/vcpu.c +3 -0
@@ -561,6 +561,9 @@ struct kvm_vcpu *kvm_get_vcpu_by_cpuid(struct kvm *kvm, int cpuid) {struct kvm_phyid_map *map; +if (cpuid <0 ) +return NULL ; +if (cpuid >=KVM_MAX_PHYID )return NULL ;
arch/loongarch/pci/pci.c +80 -0
98 lines not on this page · raw message
arch/loongarch/vdso/Makefile +2 -2
@@ -21,7 +21,7 @@ cflags-vdso := $(ccflags-vdso) \ $(filter -W%,$(filter-out -Wa$(comma)%,$(KBUILD_CFLAGS))) \ -std=gnu11 -O2 -g -fno-strict-aliasing -fno-common -fno-builtin \ -fno-stack-protector -fno-jump-tables -DDISABLE_BRANCH_PROFILING \ - $(call cc-option, -fno-asynchronous-unwind-tables) \ + $(call cc-option, -fasynchronous-unwind-tables) \ $(call cc-option, -fno-stack-protector) aflags-vdso := $(ccflags-vdso) \ -D__ASSEMBLY__ -Wa,-gdwarf-2
@@ -36,7 +36,7 @@ endif # VDSO linker flags. ldflags-y := -Bsymbolic --no-undefined -soname=linux-vdso.so.1 \ - $(filter -E%,$(KBUILD_CFLAGS)) -shared --build-id -T + $(filter -E%,$(KBUILD_CFLAGS)) -shared --build-id --eh-frame-hdr -T # # Shared build commands.
arch/loongarch/vdso/sigreturn.S +3 -3
@@ -12,13 +12,13 @@ #include <asm/regdef.h> #include <asm/asm.h> +#include <asm/asm-offsets.h> .section .text - .cfi_sections .debug_frame -SYM_FUNC_START(__vdso_rt_sigreturn) +SYM_SIGFUNC_START(__vdso_rt_sigreturn) li.w a7, __NR_rt_sigreturn syscall 0 -SYM_FUNC_END(__vdso_rt_sigreturn) +SYM_SIGFUNC_END(__vdso_rt_sigreturn)
arch/powerpc/net/bpf_jit_comp64.c +14 -9
@@ -430,27 +430,32 @@ static int bpf_jit_emit_tail_call(u32 *image, struct codegen_context *ctx, u32 o/* * tail_call_cnt++; +* Writeback this updated value only if tailcall succeeds. */ EMIT (PPC_RAW_ADDI (bpf_to_ppc (TMP_REG_1 ),bpf_to_ppc (TMP_REG_1 ),1 )); -EMIT (PPC_RAW_STD (bpf_to_ppc (TMP_REG_1 ), _R1,bpf_jit_stack_tailcallcnt (ctx)));/* prog = array->ptrs[index]; */ -EMIT (PPC_RAW_MULI (bpf_to_ppc (TMP_REG_1 ), b2p_index,8 )); -EMIT (PPC_RAW_ADD (bpf_to_ppc (TMP_REG_1 ),bpf_to_ppc (TMP_REG_1 ), b2p_bpf_array)); -EMIT (PPC_RAW_LD (bpf_to_ppc (TMP_REG_1 ),bpf_to_ppc (TMP_REG_1 ), offsetof(struct bpf_array , ptrs))); +EMIT (PPC_RAW_MULI (bpf_to_ppc (TMP_REG_2 ), b2p_index,8 )); +EMIT (PPC_RAW_ADD (bpf_to_ppc (TMP_REG_2 ),bpf_to_ppc (TMP_REG_2 ), b2p_bpf_array)); +EMIT (PPC_RAW_LD (bpf_to_ppc (TMP_REG_2 ),bpf_to_ppc (TMP_REG_2 ), + offsetof(struct bpf_array , ptrs)));/* * if (prog == NULL) * goto out; */ -EMIT (PPC_RAW_CMPLDI (bpf_to_ppc (TMP_REG_1 ),0 )); +EMIT (PPC_RAW_CMPLDI (bpf_to_ppc (TMP_REG_2 ),0 ));PPC_BCC_SHORT (COND_EQ , out);/* goto *(prog->bpf_func + prologue_size); */ -EMIT (PPC_RAW_LD (bpf_to_ppc (TMP_REG_1 ),bpf_to_ppc (TMP_REG_1 ), offsetof(struct bpf_prog , bpf_func))); -EMIT (PPC_RAW_ADDI (bpf_to_ppc (TMP_REG_1 ),bpf_to_ppc (TMP_REG_1 ), -FUNCTION_DESCR_SIZE + bpf_tailcall_prologue_size)); -EMIT (PPC_RAW_MTCTR (bpf_to_ppc (TMP_REG_1 ))); +EMIT (PPC_RAW_LD (bpf_to_ppc (TMP_REG_2 ),bpf_to_ppc (TMP_REG_2 ), + offsetof(struct bpf_prog , bpf_func))); +EMIT (PPC_RAW_ADDI (bpf_to_ppc (TMP_REG_2 ),bpf_to_ppc (TMP_REG_2 ), +FUNCTION_DESCR_SIZE + bpf_tailcall_prologue_size)); +EMIT (PPC_RAW_MTCTR (bpf_to_ppc (TMP_REG_2 ))); + +/* Writeback updated tailcall count */ +EMIT (PPC_RAW_STD (bpf_to_ppc (TMP_REG_1 ), _R1,bpf_jit_stack_tailcallcnt (ctx)));/* tear down stack, restore NVRs, ... */ bpf_jit_emit_common_epilogue (image, ctx);
arch/powerpc/tools/ftrace-gen-ool-stubs.sh +2 -2
@@ -15,9 +15,9 @@ if [ -z "$is_64bit" ]; then RELOCATION=R_PPC_ADDR32 fi -num_ool_stubs_total=$($objdump -r -j __patchable_function_entries "$vmlinux_o" | +num_ool_stubs_total=$($objdump -r -j __patchable_function_entries -d "$vmlinux_o" | grep -c "$RELOCATION") -num_ool_stubs_inittext=$($objdump -r -j __patchable_function_entries "$vmlinux_o" | +num_ool_stubs_inittext=$($objdump -r -j __patchable_function_entries -d "$vmlinux_o" | grep -e ".init.text" -e ".text.startup" | grep -c "$RELOCATION") num_ool_stubs_text=$((num_ool_stubs_total - num_ool_stubs_inittext))
arch/s390/include/asm/barrier.h +2 -2
@@ -62,8 +62,8 @@ do { \* @size: number of elements in array */ #define array_index_mask_nospec array_index_mask_nospec -static inline unsigned long array_index_mask_nospec (unsigned long index, -unsigned long size) +static __always_inline unsigned long array_index_mask_nospec (unsigned long index, +unsigned long size) {unsigned long mask;
arch/s390/kernel/entry.S +3 -0
@@ -254,6 +254,7 @@ SYM_CODE_START(system_call) xgr %r9,%r9 xgr %r10,%r10 xgr %r11,%r11 + xgr %r12,%r12 la %r2,STACK_FRAME_OVERHEAD(%r15) # pointer to pt_regs mvc __PT_R8(64,%r2),__LC_SAVE_AREA(%r13) MBEAR %r2,%r13
@@ -390,6 +391,7 @@ SYM_CODE_START(\name) xgr %r6,%r6 xgr %r7,%r7 xgr %r10,%r10 + xgr %r12,%r12 xc __PT_FLAGS(8,%r11),__PT_FLAGS(%r11) mvc __PT_R8(64,%r11),__LC_SAVE_AREA(%r13) MBEAR %r11,%r13
@@ -479,6 +481,7 @@ SYM_CODE_START(mcck_int_handler) xgr %r6,%r6 xgr %r7,%r7 xgr %r10,%r10 + xgr %r12,%r12 stmg %r8,%r9,__PT_PSW(%r11) xc __PT_FLAGS(8,%r11),__PT_FLAGS(%r11) xc __SF_BACKCHAIN(8,%r15),__SF_BACKCHAIN(%r15)
arch/s390/kernel/syscall.c +4 -1
@@ -13,6 +13,7 @@*/ #include <linux/cpufeature.h> +#include <linux/nospec.h> #include <linux/errno.h> #include <linux/sched.h> #include <linux/mm.h>
@@ -121,8 +122,10 @@ void noinstr __do_syscall(struct pt_regs *regs, int per_trap)if (unlikely (test_and_clear_pt_regs_flag (regs,PIF_SYSCALL_RET_SET ))) goto out; regs->gprs[2 ] = -ENOSYS ; -if (likely (nr < NR_syscalls)) +if (likely (nr < NR_syscalls)) { + nr =array_index_nospec (nr, NR_syscalls); regs->gprs[2 ] = current->thread.sys_call_table[nr](regs); + } out:syscall_exit_to_user_mode (regs); }
arch/s390/mm/fault.c +9 -2
@@ -436,10 +436,17 @@ void do_secure_storage_access(struct pt_regs *regs) folio =phys_to_folio (addr);if (unlikely (!folio_try_get (folio)))return ; - rc =arch_make_folio_accessible (folio); + rc =uv_convert_from_secure (folio_to_phys (folio)); +if (!rc) +clear_bit (PG_arch_1, &folio->flags.f);folio_put (folio); +/* +* There are some valid fixup types for kernel +* accesses to donated secure memory. zeropad is one +* of them. +*/ if (rc) -BUG (); +return handle_fault_error_nolock (regs,0 ); }else {if (faulthandler_disabled ())return handle_fault_error_nolock (regs,0 );
arch/sh/drivers/platform_early.c +0 -4
@@ -26,10 +26,6 @@ static int platform_match(struct device *dev, struct device_driver *drv)struct platform_device *pdev =to_platform_device (dev);struct platform_driver *pdrv =to_platform_driver (drv); -/* When driver_override is set, only bind to the matching driver */ -if (pdev->driver_override) -return !strcmp (pdev->driver_override, drv->name); -/* Then try to match against the id table */ if (pdrv->id_table)return platform_match_id (pdrv->id_table, pdev) !=NULL ;
arch/x86/coco/sev/noinstr.c +6 -0
@@ -120,6 +120,9 @@ noinstr struct ghcb *__sev_get_ghcb(struct ghcb_state *state)WARN_ON (!irqs_disabled ()); +if (!sev_cfg.ghcbs_initialized) +return boot_ghcb; + data =this_cpu_read (runtime_data); ghcb = &data->ghcb_page;
@@ -163,6 +166,9 @@ noinstr void __sev_put_ghcb(struct ghcb_state *state)WARN_ON (!irqs_disabled ()); +if (!sev_cfg.ghcbs_initialized) +return ; + data =this_cpu_read (runtime_data); ghcb = &data->ghcb_page;
arch/x86/entry/entry_fred.c +14 -0
@@ -176,6 +176,16 @@ static noinstr void fred_extint(struct pt_regs *regs) } } +#ifdef CONFIG_AMD_MEM_ENCRYPT +noinstr void exc_vmm_communication(struct pt_regs *regs, unsigned long error_code) +{ +if (user_mode (regs)) +return user_exc_vmm_communication (regs, error_code); +else +return kernel_exc_vmm_communication (regs, error_code); +} +#endif + static noinstr void fred_hwexc(struct pt_regs *regs, unsigned long error_code) {/* Optimize for #PF. That's the only exception which matters performance wise */
@@ -206,6 +216,10 @@ static noinstr void fred_hwexc(struct pt_regs *regs, unsigned long error_code)#ifdef CONFIG_X86_CET case X86_TRAP_CP :return exc_control_protection (regs, error_code);#endif +#ifdef CONFIG_AMD_MEM_ENCRYPT +case X86_TRAP_VC :return exc_vmm_communication (regs, error_code); +#endif +default :return fred_bad_type (regs, error_code); }
arch/x86/events/core.c +3 -1
@@ -1361,8 +1361,10 @@ static void x86_pmu_enable(struct pmu *pmu) cpuc->events[hwc->idx] = event; -if (hwc->state &PERF_HES_ARCH ) +if (hwc->state &PERF_HES_ARCH ) { +static_call (x86_pmu_set_period)(event);continue ; + }/* * if cpuc->enabled = 0, then no wrmsr as
arch/x86/include/asm/unwind_user.h +4 -0
@@ -2,6 +2,8 @@#ifndef _ASM_X86_UNWIND_USER_H#define _ASM_X86_UNWIND_USER_H +#ifdef CONFIG_HAVE_UNWIND_USER_FP +#include <asm/ptrace.h> #include <asm/uprobes.h>
@@ -34,4 +36,6 @@ static inline bool unwind_user_at_function_start(struct pt_regs *regs)return is_uprobe_at_func_entry (regs); } +#endif /* CONFIG_HAVE_UNWIND_USER_FP */ +#endif /* _ASM_X86_UNWIND_USER_H */
arch/x86/kernel/cpu/common.c +13 -7
@@ -407,7 +407,7 @@ static __always_inline void setup_umip(struct cpuinfo_x86 *c)/* These bits should not change their value after CPU init is finished. */ static const unsigned long cr4_pinned_mask =X86_CR4_SMEP |X86_CR4_SMAP |X86_CR4_UMIP | -X86_CR4_FSGSBASE |X86_CR4_CET |X86_CR4_FRED ; +X86_CR4_FSGSBASE |X86_CR4_CET ;static DEFINE_STATIC_KEY_FALSE_RO (cr_pinning);static unsigned long cr4_pinned_bits__ro_after_init ;
@@ -2020,12 +2020,6 @@ static void identify_cpu(struct cpuinfo_x86 *c)setup_smap (c);setup_umip (c); -/* Enable FSGSBASE instructions if available. */ -if (cpu_has (c,X86_FEATURE_FSGSBASE )) { -cr4_set_bits (X86_CR4_FSGSBASE ); - elf_hwcap2 |=HWCAP2_FSGSBASE ; - } -/* * The vendor-specific functions might have changed features. * Now we do "generic changes."
@@ -2386,6 +2380,18 @@ void cpu_init_exception_handling(bool boot_cpu)/* GHCB needs to be setup to handle #VC. */ setup_ghcb (); +/* +* On CPUs with FSGSBASE support, paranoid_entry() uses +* ALTERNATIVE-patched RDGSBASE/WRGSBASE instructions. Secondary CPUs +* boot after alternatives are patched globally, so early exceptions +* execute patched code that depends on FSGSBASE. Enable the feature +* before any exceptions occur. +*/ +if (cpu_feature_enabled (X86_FEATURE_FSGSBASE )) { +cr4_set_bits (X86_CR4_FSGSBASE ); + elf_hwcap2 |=HWCAP2_FSGSBASE ; + } +if (cpu_feature_enabled (X86_FEATURE_FRED )) {/* The boot CPU has enabled FRED during early boot */ if (!boot_cpu)
arch/x86/kvm/mmu/mmu.c +10 -7
@@ -3044,12 +3044,6 @@ static int mmu_set_spte(struct kvm_vcpu *vcpu, struct kvm_memory_slot *slot,bool prefetch = !fault || fault->prefetch;bool write_fault = fault && fault->write; -if (unlikely (is_noslot_pfn (pfn))) { - vcpu->stat.pf_mmio_spte_created++; -mark_mmio_spte (vcpu, sptep, gfn, pte_access); -return RET_PF_EMULATE ; - } -if (is_shadow_present_pte (*sptep)) {if (prefetch &&is_last_spte (*sptep, level) && pfn ==spte_to_pfn (*sptep))
@@ -3066,13 +3060,22 @@ static int mmu_set_spte(struct kvm_vcpu *vcpu, struct kvm_memory_slot *slot, child =spte_to_child_sp (pte);drop_parent_pte (vcpu->kvm, child, sptep); flush = true; - }else if (WARN_ON_ONCE (pfn !=spte_to_pfn (*sptep))) { + }else if (pfn !=spte_to_pfn (*sptep)) { +WARN_ON_ONCE (vcpu->arch.mmu->root_role.direct);drop_spte (vcpu->kvm, sptep); flush = true; }else was_rmapped =1 ; } +if (unlikely (is_noslot_pfn (pfn))) { + vcpu->stat.pf_mmio_spte_created++; +mark_mmio_spte (vcpu, sptep, gfn, pte_access); +if (flush) +kvm_flush_remote_tlbs_gfn (vcpu->kvm, gfn, level); +return RET_PF_EMULATE ; + } + wrprot =make_spte (vcpu, sp, slot, pte_access, gfn, pfn, *sptep, prefetch, false, host_writable, &spte);
arch/x86/platform/efi/quirks.c +1 -1
@@ -424,7 +424,7 @@ void __init efi_unmap_boot_services(void)if (efi_enabled (EFI_DBG ))return ; - sz =sizeof (*ranges_to_free) * efi.memmap.nr_map +1 ; + sz =sizeof (*ranges_to_free) * (efi.memmap.nr_map +1 ); ranges_to_free =kzalloc (sz,GFP_KERNEL );if (!ranges_to_free) {pr_err ("Failed to allocate storage for freeable EFI regions\n" );
block/blk-mq.c +30 -15
85 lines not on this page · raw message
drivers/acpi/ec.c +2 -0
@@ -1655,6 +1655,8 @@ static int acpi_ec_setup(struct acpi_ec *ec, struct acpi_device *device, bool ca ret =ec_install_handlers (ec, device, call_reg);if (ret) { +ec_remove_handlers (ec); +if (ec == first_ec) first_ec =NULL ;
drivers/base/bus.c +42 -1
69 lines not on this page · raw message
drivers/base/core.c +2 -0
@@ -2556,6 +2556,7 @@ static void device_release(struct kobject *kobj)devres_release_all (dev);kfree (dev->dma_range_map); +kfree (dev->driver_override.name);if (dev->release) dev->release (dev);
@@ -3159,6 +3160,7 @@ void device_initialize(struct device *dev)kobject_init (&dev->kobj, &device_ktype);INIT_LIST_HEAD (&dev->dma_pools);mutex_init (&dev->mutex); +spin_lock_init (&dev->driver_override.lock);lockdep_set_novalidate_class (&dev->mutex);spin_lock_init (&dev->devres_lock);INIT_LIST_HEAD (&dev->devres_head);
drivers/base/dd.c +60 -0
66 lines not on this page · raw message
drivers/base/platform.c +5 -32
@@ -562,7 +562,6 @@ static void platform_device_release(struct device *dev)kfree (pa->pdev.dev.platform_data);kfree (pa->pdev.mfd_cell);kfree (pa->pdev.resource); -kfree (pa->pdev.driver_override);kfree (pa); }
@@ -1265,38 +1264,9 @@ static ssize_t numa_node_show(struct device *dev, }static DEVICE_ATTR_RO (numa_node); -static ssize_t driver_override_show (struct device *dev, -struct device_attribute *attr,char *buf) -{ -struct platform_device *pdev =to_platform_device (dev); -ssize_t len; - -device_lock (dev); - len =sysfs_emit (buf,"%s\n" , pdev->driver_override); -device_unlock (dev); - -return len; -} - -static ssize_t driver_override_store (struct device *dev, -struct device_attribute *attr, -const char *buf,size_t count) -{ -struct platform_device *pdev =to_platform_device (dev); -int ret; - - ret =driver_set_override (dev, &pdev->driver_override, buf, count); -if (ret) -return ret; - -return count; -} -static DEVICE_ATTR_RW (driver_override); -static struct attribute *platform_dev_attrs[] = { &dev_attr_modalias.attr, &dev_attr_numa_node.attr, - &dev_attr_driver_override.attr,NULL , };
@@ -1336,10 +1306,12 @@ static int platform_match(struct device *dev, const struct device_driver *drv) {struct platform_device *pdev =to_platform_device (dev);struct platform_driver *pdrv =to_platform_driver (drv); +int ret;/* When driver_override is set, only bind to the matching driver */ -if (pdev->driver_override) -return !strcmp (pdev->driver_override, drv->name); + ret =device_match_driver_override (dev, drv); +if (ret >=0 ) +return ret;/* Attempt an OF style match first */ if (of_driver_match_device (dev, drv))
@@ -1475,6 +1447,7 @@ static const struct dev_pm_ops platform_dev_pm_ops = {const struct bus_type platform_bus_type = { .name ="platform" , .dev_groups = platform_dev_groups, + .driver_override = true, .match = platform_match, .uevent = platform_uevent, .probe = platform_probe,
drivers/base/regmap/regmap.c +26 -4
@@ -1543,6 +1543,7 @@ static int _regmap_select_page(struct regmap *map, unsigned int *reg, unsigned int val_num) {void *orig_work_buf; +unsigned int selector_reg;unsigned int win_offset;unsigned int win_page;bool page_chg;
@@ -1561,10 +1562,31 @@ static int _regmap_select_page(struct regmap *map, unsigned int *reg,return -EINVAL ; } -/* It is possible to have selector register inside data window. -In that case, selector register is located on every page and -it needs no page switching, when accessed alone. */ +/* +* Calculate the address of the selector register in the corresponding +* data window if it is located on every page. +*/ + page_chg =in_range (range->selector_reg, range->window_start, range->window_len); +if (page_chg) + selector_reg = range->range_min + win_page * range->window_len + + range->selector_reg - range->window_start; + +/* +* It is possible to have selector register inside data window. +* In that case, selector register is located on every page and it +* needs no page switching, when accessed alone. +* +* Nevertheless we should synchronize the cache values for it. +* This can't be properly achieved if the selector register is +* the first and the only one to be read inside the data window. +* That's why we update it in that case as well. +* +* However, we specifically avoid updating it for the default page, +* when it's overlapped with the real data window, to prevent from +* infinite looping. +*/ if (val_num >1 || + (page_chg && selector_reg != range->selector_reg) || range->window_start + win_offset != range->selector_reg) {/* Use separate work_buf during page switching */ orig_work_buf = map->work_buf;
@@ -1573,7 +1595,7 @@ static int _regmap_select_page(struct regmap *map, unsigned int *reg, ret =_regmap_update_bits (map, range->selector_reg, range->selector_mask, win_page << range->selector_shift, - &page_chg, false); +NULL , false); map->work_buf = orig_work_buf;
drivers/bluetooth/btintel.c +8 -3
@@ -251,11 +251,13 @@ void btintel_hw_error(struct hci_dev *hdev, u8 code)bt_dev_err (hdev,"Hardware error 0x%2.2x" , code); +hci_req_sync_lock (hdev); + skb =__hci_cmd_sync (hdev,HCI_OP_RESET ,0 ,NULL ,HCI_INIT_TIMEOUT );if (IS_ERR (skb)) {bt_dev_err (hdev,"Reset after hardware error failed (%ld)" ,PTR_ERR (skb)); -return ; + goto unlock; }kfree_skb (skb);
@@ -263,18 +265,21 @@ void btintel_hw_error(struct hci_dev *hdev, u8 code)if (IS_ERR (skb)) {bt_dev_err (hdev,"Retrieving Intel exception info failed (%ld)" ,PTR_ERR (skb)); -return ; + goto unlock; }if (skb->len !=13 ) {bt_dev_err (hdev,"Exception info size mismatch" );kfree_skb (skb); -return ; + goto unlock; }bt_dev_err (hdev,"Exception info %s" , (char *)(skb->data +1 ));kfree_skb (skb); + +unlock: +hci_req_sync_unlock (hdev); }EXPORT_SYMBOL_GPL (btintel_hw_error);
drivers/bluetooth/btusb.c +4 -1
@@ -2356,8 +2356,11 @@ static void btusb_work(struct work_struct *work)if (data->air_mode ==HCI_NOTIFY_ENABLE_SCO_CVSD ) {if (hdev->voice_setting &0x0020 ) {static const int alts[3 ] = {2 ,4 ,5 }; +unsigned int sco_idx; - new_alts = alts[data->sco_num -1 ]; + sco_idx = min_t(unsigned int, data->sco_num - 1, +ARRAY_SIZE (alts) -1 ); + new_alts = alts[sco_idx]; }else { new_alts = data->sco_num; }
drivers/bluetooth/hci_ll.c +2 -0
@@ -541,6 +541,8 @@ static int download_firmware(struct ll_device *lldev)if (err || !fw->data || !fw->size) {bt_dev_err (lldev->hu.hdev,"request_firmware failed(errno %d) for %s" , err, bts_scr_name); +if (!err) +release_firmware (fw);return -EINVAL ; } ptr = (void *)fw->data;
drivers/bus/simple-pm-bus.c +2 -2
@@ -36,7 +36,7 @@ static int simple_pm_bus_probe(struct platform_device *pdev)* that's not listed in simple_pm_bus_of_match. We don't want to do any * of the simple-pm-bus tasks for these devices, so return early. */ -if (pdev->driver_override) +if (device_has_driver_override (&pdev->dev))return 0 ; match =of_match_device (dev->driver->of_match_table, dev);
@@ -78,7 +78,7 @@ static void simple_pm_bus_remove(struct platform_device *pdev) {const void *data =of_device_get_match_data (&pdev->dev); -if (pdev->driver_override || data) +if (device_has_driver_override (&pdev->dev) || data)return ;dev_dbg (&pdev->dev,"%s\n" , __func__);
drivers/clk/imx/clk-scu.c +1 -2
@@ -696,8 +696,7 @@ struct clk_hw *imx_clk_scu_alloc_dev(const char *name,if (ret) goto put_device; - ret =driver_set_override (&pdev->dev, &pdev->driver_override, -"imx-scu-clk" ,strlen ("imx-scu-clk" )); + ret =device_set_driver_override (&pdev->dev,"imx-scu-clk" );if (ret) goto put_device;
drivers/cpufreq/cpufreq_conservative.c +12 -0
@@ -313,6 +313,17 @@ static void cs_start(struct cpufreq_policy *policy) dbs_info->requested_freq = policy->cur; } +static void cs_limits (struct cpufreq_policy *policy) +{ +struct cs_policy_dbs_info *dbs_info =to_dbs_info (policy->governor_data); + +/* +* The limits have changed, so may have the current frequency. Reset +* requested_freq to avoid any unintended outcomes due to the mismatch. +*/ + dbs_info->requested_freq = policy->cur; +} +static struct dbs_governor cs_governor = { .gov =CPUFREQ_DBS_GOVERNOR_INITIALIZER ("conservative" ), .kobj_type = { .default_groups = cs_groups },
@@ -322,6 +333,7 @@ static struct dbs_governor cs_governor = { .init = cs_init, .exit = cs_exit, .start = cs_start, + .limits = cs_limits, };#define CPU_FREQ_GOV_CONSERVATIVE (cs_governor.gov)
drivers/cpufreq/cpufreq_governor.c +3 -0
@@ -563,6 +563,7 @@ EXPORT_SYMBOL_GPL(cpufreq_dbs_governor_stop);void cpufreq_dbs_governor_limits (struct cpufreq_policy *policy) { +struct dbs_governor *gov =dbs_governor_of (policy);struct policy_dbs_info *policy_dbs;/* Protect gov->gdbs_data against cpufreq_dbs_governor_exit() */
@@ -574,6 +575,8 @@ void cpufreq_dbs_governor_limits(struct cpufreq_policy *policy)mutex_lock (&policy_dbs->update_mutex);cpufreq_policy_apply_limits (policy);gov_update_sample_delay (policy_dbs,0 ); +if (gov->limits) + gov->limits (policy);mutex_unlock (&policy_dbs->update_mutex); out:
drivers/cpufreq/cpufreq_governor.h +1 -0
@@ -138,6 +138,7 @@ struct dbs_governor {int (*init)(struct dbs_data *dbs_data);void (*exit)(struct dbs_data *dbs_data);void (*start)(struct cpufreq_policy *policy); +void (*limits)(struct cpufreq_policy *policy); };static inline struct dbs_governor *dbs_governor_of (struct cpufreq_policy *policy)
drivers/cxl/core/hdm.c +9 -16
@@ -94,7 +94,6 @@ static bool should_emulate_decoders(struct cxl_endpoint_dvsec_info *info)struct cxl_hdm *cxlhdm;void __iomem *hdm;u32 ctrl; -int i;if (!info)return false;
@@ -113,22 +112,16 @@ static bool should_emulate_decoders(struct cxl_endpoint_dvsec_info *info)return false;/* -* If any decoders are committed already, there should not be any -* emulated DVSEC decoders. +* If HDM decoders are globally enabled, do not fall back to DVSEC +* range emulation. Zeroed decoder registers after region teardown +* do not imply absence of HDM capability. +* +* Falling back to DVSEC here would treat the decoder as AUTO and +* may incorrectly latch default interleave settings. */ -for (i =0 ; i < cxlhdm->decoder_count; i++) { - ctrl =readl (hdm +CXL_HDM_DECODER0_CTRL_OFFSET (i)); -dev_dbg (&info->port->dev, -"decoder%d.%d: committed: %ld base: %#x_%.8x size: %#x_%.8x\n" , - info->port->id, i, -FIELD_GET (CXL_HDM_DECODER0_CTRL_COMMITTED , ctrl), -readl (hdm +CXL_HDM_DECODER0_BASE_HIGH_OFFSET (i)), -readl (hdm +CXL_HDM_DECODER0_BASE_LOW_OFFSET (i)), -readl (hdm +CXL_HDM_DECODER0_SIZE_HIGH_OFFSET (i)), -readl (hdm +CXL_HDM_DECODER0_SIZE_LOW_OFFSET (i))); -if (FIELD_GET (CXL_HDM_DECODER0_CTRL_COMMITTED , ctrl)) -return false; - } + ctrl =readl (hdm +CXL_HDM_DECODER_CTRL_OFFSET ); +if (ctrl &CXL_HDM_DECODER_ENABLE ) +return false;return true; }
drivers/cxl/core/port.c +6 -2
@@ -553,10 +553,13 @@ static void cxl_port_release(struct device *dev)xa_destroy (&port->dports);xa_destroy (&port->regions);ida_free (&cxl_port_ida, port->id); -if (is_cxl_root (port)) + +if (is_cxl_root (port)) {kfree (to_cxl_root (port)); -else + }else { +put_device (dev->parent);kfree (port); + } } static ssize_t decoders_committed_show(struct device *dev,
@@ -722,6 +725,7 @@ static struct cxl_port *cxl_port_alloc(struct device *uport_dev,struct cxl_port *iter; dev->parent = &parent_port->dev; +get_device (dev->parent); port->depth = parent_port->depth +1 ; port->parent_dport = parent_dport;
drivers/cxl/pmem.c +1 -1
@@ -554,7 +554,7 @@ static __exit void cxl_pmem_exit(void)MODULE_DESCRIPTION ("CXL PMEM: Persistent Memory Support" );MODULE_LICENSE ("GPL v2" ); -module_init (cxl_pmem_init); +subsys_initcall (cxl_pmem_init);module_exit (cxl_pmem_exit);MODULE_IMPORT_NS ("CXL" );MODULE_ALIAS_CXL (CXL_DEVICE_NVDIMM_BRIDGE );
drivers/dma/dw-edma/dw-hdma-v0-core.c +3 -3
@@ -252,10 +252,10 @@ static void dw_hdma_v0_core_start(struct dw_edma_chunk *chunk, bool first) lower_32_bits(chunk->ll_region.paddr));SET_CH_32 (dw, chan->dir, chan->id, llp.msb,upper_32_bits (chunk->ll_region.paddr)); +/* Set consumer cycle */ +SET_CH_32 (dw, chan->dir, chan->id, cycle_sync, +HDMA_V0_CONSUMER_CYCLE_STAT |HDMA_V0_CONSUMER_CYCLE_BIT ); } -/* Set consumer cycle */ -SET_CH_32 (dw, chan->dir, chan->id, cycle_sync, -HDMA_V0_CONSUMER_CYCLE_STAT |HDMA_V0_CONSUMER_CYCLE_BIT );dw_hdma_v0_sync_ll_data (chunk);
drivers/dma/fsl-edma-main.c +11 -15
@@ -317,10 +317,8 @@ static struct dma_chan *fsl_edma3_xlate(struct of_phandle_args *dma_spec,return NULL ; i = fsl_chan - fsl_edma->chans; - fsl_chan->priority = dma_spec->args[1 ]; - fsl_chan->is_rxchan = dma_spec->args[2 ] &FSL_EDMA_RX ; - fsl_chan->is_remote = dma_spec->args[2 ] &FSL_EDMA_REMOTE ; - fsl_chan->is_multi_fifo = dma_spec->args[2 ] &FSL_EDMA_MULTI_FIFO ; +if (!b_chmux && i != dma_spec->args[0 ]) +continue ;if ((dma_spec->args[2 ] &FSL_EDMA_EVEN_CH ) && (i &0x1 ))continue ;
@@ -328,17 +326,15 @@ static struct dma_chan *fsl_edma3_xlate(struct of_phandle_args *dma_spec,if ((dma_spec->args[2 ] &FSL_EDMA_ODD_CH ) && !(i &0x1 ))continue ; -if (!b_chmux && i == dma_spec->args[0 ]) { - chan =dma_get_slave_channel (chan); - chan->device->privatecnt++; -return chan; - }else if (b_chmux && !fsl_chan->srcid) { -/* if controller support channel mux, choose a free channel */ - chan =dma_get_slave_channel (chan); - chan->device->privatecnt++; - fsl_chan->srcid = dma_spec->args[0 ]; -return chan; - } + fsl_chan->srcid = dma_spec->args[0 ]; + fsl_chan->priority = dma_spec->args[1 ]; + fsl_chan->is_rxchan = dma_spec->args[2 ] &FSL_EDMA_RX ; + fsl_chan->is_remote = dma_spec->args[2 ] &FSL_EDMA_REMOTE ; + fsl_chan->is_multi_fifo = dma_spec->args[2 ] &FSL_EDMA_MULTI_FIFO ; + + chan =dma_get_slave_channel (chan); + chan->device->privatecnt++; +return chan; }return NULL ; }
drivers/dma/idxd/cdev.c +4 -4
@@ -158,11 +158,7 @@ static const struct device_type idxd_cdev_file_type = {static void idxd_cdev_dev_release (struct device *dev) {struct idxd_cdev *idxd_cdev =dev_to_cdev (dev); -struct idxd_cdev_context *cdev_ctx; -struct idxd_wq *wq = idxd_cdev->wq; - cdev_ctx = &ictx[wq->idxd->data->type]; -ida_free (&cdev_ctx->minor_ida, idxd_cdev->minor);kfree (idxd_cdev); }
@@ -582,11 +578,15 @@ int idxd_wq_add_cdev(struct idxd_wq *wq)void idxd_wq_del_cdev (struct idxd_wq *wq) { +struct idxd_cdev_context *cdev_ctx;struct idxd_cdev *idxd_cdev; idxd_cdev = wq->idxd_cdev; wq->idxd_cdev =NULL ;cdev_device_del (&idxd_cdev->cdev,cdev_dev (idxd_cdev)); + + cdev_ctx = &ictx[wq->idxd->data->type]; +ida_free (&cdev_ctx->minor_ida, idxd_cdev->minor);put_device (cdev_dev (idxd_cdev)); }
drivers/dma/idxd/device.c +2 -4
@@ -174,6 +174,7 @@ void idxd_wq_free_resources(struct idxd_wq *wq)free_descs (wq);dma_free_coherent (dev, wq->compls_size, wq->compls, wq->compls_addr);sbitmap_queue_free (&wq->sbq); + wq->type =IDXD_WQT_NONE ; }EXPORT_SYMBOL_NS_GPL (idxd_wq_free_resources,"IDXD" );
@@ -367,7 +368,6 @@ static void idxd_wq_disable_cleanup(struct idxd_wq *wq)lockdep_assert_held (&wq->wq_lock); wq->state =IDXD_WQ_DISABLED ;memset (wq->wqcfg,0 , idxd->wqcfg_size); - wq->type =IDXD_WQT_NONE ; wq->threshold =0 ; wq->priority =0 ; wq->enqcmds_retries =IDXD_ENQCMDS_RETRIES ;
@@ -815,8 +815,7 @@ static void idxd_device_evl_free(struct idxd_device *idxd)struct device *dev = &idxd->pdev->dev;struct idxd_evl *evl = idxd->evl; - gencfg.bits =ioread32 (idxd->reg_base +IDXD_GENCFG_OFFSET ); -if (!gencfg.evl_en) +if (!evl)return ;mutex_lock (&evl->lock);
@@ -1513,7 +1512,6 @@ void idxd_drv_disable_wq(struct idxd_wq *wq)idxd_wq_reset (wq);idxd_wq_free_resources (wq);percpu_ref_exit (&wq->wq_active); - wq->type =IDXD_WQT_NONE ; wq->client_count =0 ; }EXPORT_SYMBOL_NS_GPL (idxd_drv_disable_wq,"IDXD" );
drivers/dma/idxd/init.c +3 -1
@@ -962,7 +962,8 @@ static void idxd_device_config_restore(struct idxd_device *idxd, idxd->rdbuf_limit = idxd_saved->saved_idxd.rdbuf_limit; - idxd->evl->size = saved_evl->size; +if (idxd->evl) + idxd->evl->size = saved_evl->size;for (i =0 ; i < idxd->max_groups; i++) {struct idxd_group *saved_group, *group;
@@ -1136,6 +1137,7 @@ static void idxd_reset_done(struct pci_dev *pdev) } out:kfree (idxd->idxd_saved); + idxd->idxd_saved =NULL ; }static const struct pci_error_handlers idxd_error_handler = {
drivers/dma/idxd/submit.c +1 -1
@@ -138,7 +138,7 @@ static void llist_abort_desc(struct idxd_wq *wq, struct idxd_irq_entry *ie,*/ list_for_each_entry_safe (d, t, &flist, list) {list_del_init (&d->list); -idxd_dma_complete_txd (found,IDXD_COMPLETE_ABORT , true, +idxd_dma_complete_txd (d,IDXD_COMPLETE_ABORT , true,NULL ,NULL ); } }
drivers/dma/idxd/sysfs.c +1 -0
@@ -1812,6 +1812,7 @@ static void idxd_conf_device_release(struct device *dev) {struct idxd_device *idxd =confdev_to_idxd (dev); +destroy_workqueue (idxd->wq);kfree (idxd->groups);bitmap_free (idxd->wq_enable_map);kfree (idxd->wqs);
drivers/dma/sh/rz-dmac.c +36 -30
121 lines not on this page · raw message
drivers/dma/xilinx/xdma.c +2 -2
@@ -1236,8 +1236,8 @@ static int xdma_probe(struct platform_device *pdev) xdev->rmap =devm_regmap_init_mmio (&pdev->dev, reg_base, &xdma_regmap_config); -if (!xdev->rmap) { -xdma_err (xdev,"config regmap failed: %d" , ret); +if (IS_ERR (xdev->rmap)) { +xdma_err (xdev,"config regmap failed: %pe" , xdev->rmap); goto failed; }INIT_LIST_HEAD (&xdev->dma_dev.channels);
drivers/dma/xilinx/xilinx_dma.c +30 -16
89 lines not on this page · raw message
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c +2 -2
@@ -687,9 +687,9 @@ int amdgpu_amdkfd_submit_ib(struct amdgpu_device *adev, goto err_ib_sched; } -/* Drop the initial kref_init count (see drm_sched_main as example) */ -dma_fence_put (f); ret =dma_fence_wait (f, false); +/* Drop the returned fence reference after the wait completes */ +dma_fence_put (f); err_ib_sched:amdgpu_job_free (job);
drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c +32 -13
74 lines not on this page · raw message
drivers/gpu/drm/amd/amdgpu/amdgpu_ids.h +1 -0
@@ -74,6 +74,7 @@ int amdgpu_pasid_alloc(unsigned int bits);void amdgpu_pasid_free (u32 pasid);void amdgpu_pasid_free_delayed (struct dma_resv *resv,u32 pasid); +void amdgpu_pasid_mgr_cleanup (void );bool amdgpu_vmid_had_gpu_reset (struct amdgpu_device *adev,struct amdgpu_vmid *id);
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +1 -0
@@ -2884,6 +2884,7 @@ void amdgpu_vm_manager_fini(struct amdgpu_device *adev)xa_destroy (&adev->vm_manager.pasids);amdgpu_vmid_mgr_fini (adev); +amdgpu_pasid_mgr_cleanup (); }/**
drivers/gpu/drm/amd/amdgpu/mes_v12_0.c +4 -1
@@ -727,6 +727,9 @@ static int mes_v12_0_set_hw_resources(struct amdgpu_mes *mes, int pipe)int i;struct amdgpu_device *adev = mes->adev;union MESAPI_SET_HW_RESOURCES mes_set_hw_res_pkt; +uint32_t mes_rev = (pipe ==AMDGPU_MES_SCHED_PIPE ) ? + (mes->sched_version &AMDGPU_MES_VERSION_MASK ) : + (mes->kiq_version &AMDGPU_MES_VERSION_MASK );memset (&mes_set_hw_res_pkt,0 ,sizeof (mes_set_hw_res_pkt));
@@ -781,7 +784,7 @@ static int mes_v12_0_set_hw_resources(struct amdgpu_mes *mes, int pipe)* handling support, other queue will not use the oversubscribe timer. * handling mode - 0: disabled; 1: basic version; 2: basic+ version */ - mes_set_hw_res_pkt.oversubscription_timer =50 ; + mes_set_hw_res_pkt.oversubscription_timer = mes_rev <0x8b ?0 :50 ; mes_set_hw_res_pkt.unmapped_doorbell_handling =1 ;if (amdgpu_mes_log_enable) {
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +7 -1
@@ -3822,8 +3822,9 @@ void amdgpu_dm_update_connector_after_detect( aconnector->dc_sink = sink;dc_sink_retain (aconnector->dc_sink); +drm_edid_free (aconnector->drm_edid); + aconnector->drm_edid =NULL ;if (sink->dc_edid.length ==0 ) { - aconnector->drm_edid =NULL ;hdmi_cec_unset_edid (aconnector);if (aconnector->dc_link->aux_mode) {drm_dp_cec_unset_edid (&aconnector->dm_dp_aux.aux);
@@ -12268,6 +12269,11 @@ static int amdgpu_dm_atomic_check(struct drm_device *dev, }if (dc_resource_is_dsc_encoding_supported (dc)) { +for_each_oldnew_crtc_in_state (state, crtc, old_crtc_state, new_crtc_state, i) { + dm_new_crtc_state =to_dm_crtc_state (new_crtc_state); + dm_new_crtc_state->mode_changed_independent_from_dsc = new_crtc_state->mode_changed; + } +for_each_oldnew_crtc_in_state (state, crtc, old_crtc_state, new_crtc_state, i) {if (drm_atomic_crtc_needs_modeset (new_crtc_state)) { ret =add_affected_mst_dsc_crtcs (state, crtc);
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h +1 -0
@@ -965,6 +965,7 @@ struct dm_crtc_state {bool freesync_vrr_info_changed; +bool mode_changed_independent_from_dsc;bool dsc_force_changed;bool vrr_supported;struct mod_freesync_config freesync_config;
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c +3 -1
@@ -1744,9 +1744,11 @@ int pre_validate_dsc(struct drm_atomic_state *state,int ind =find_crtc_index_in_state_by_stream (state, stream);if (ind >=0 ) { +struct dm_crtc_state *dm_new_crtc_state =to_dm_crtc_state (state->crtcs[ind].new_state); +DRM_INFO_ONCE ("%s:%d MST_DSC no mode changed for stream 0x%p\n" , __func__, __LINE__, stream); - state->crtcs[ind].new_state->mode_changed =0 ; + dm_new_crtc_state->base.mode_changed = dm_new_crtc_state->mode_changed_independent_from_dsc; } } }
drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c +5 -2
@@ -1655,9 +1655,12 @@ static int smu_smc_hw_setup(struct smu_context *smu)if (adev->in_suspend &&smu_is_dpm_running (smu)) {dev_info (adev->dev,"dpm has been enabled\n" ); ret =smu_system_features_control (smu, true); -if (ret) +if (ret) {dev_err (adev->dev,"Failed system features control!\n" ); -return ret; +return ret; + } + +return smu_enable_thermal_alert (smu); }break ;default :
drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c +6 -1
@@ -1022,7 +1022,12 @@ int smu_v11_0_enable_thermal_alert(struct smu_context *smu)int smu_v11_0_disable_thermal_alert (struct smu_context *smu) { -return amdgpu_irq_put (smu->adev, &smu->irq_source,0 ); +int ret =0 ; + +if (smu->smu_table.thermal_controller_type) + ret =amdgpu_irq_put (smu->adev, &smu->irq_source,0 ); + +return ret; }static uint16_t convert_to_vddc (uint8_t vid)
drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_6_ppt.c +1 -1
@@ -1494,7 +1494,7 @@ static int smu_v13_0_6_print_clk_levels(struct smu_context *smu,case SMU_OD_MCLK :if (!smu_v13_0_6_cap_supported (smu,SMU_CAP (SET_UCLK_MAX ))) -return 0 ; +return -EOPNOTSUPP ; size +=sysfs_emit_at (buf, size,"%s:\n" ,"OD_MCLK" ); size += sysfs_emit_at(buf, size, "0: %uMhz\n1: %uMhz\n",
drivers/gpu/drm/i915/display/intel_display.c +7 -1
@@ -4568,6 +4568,7 @@ intel_crtc_prepare_cleared_state(struct intel_atomic_state *state,struct intel_crtc_state *crtc_state =intel_atomic_get_new_crtc_state (state, crtc);struct intel_crtc_state *saved_state; +int err; saved_state =intel_crtc_state_alloc (crtc);if (!saved_state)
@@ -4576,7 +4577,12 @@ intel_crtc_prepare_cleared_state(struct intel_atomic_state *state,/* free the old crtc_state->hw members */ intel_crtc_free_hw_state (crtc_state); -intel_dp_tunnel_atomic_clear_stream_bw (state, crtc_state); + err =intel_dp_tunnel_atomic_clear_stream_bw (state, crtc_state); +if (err) { +kfree (saved_state); + +return err; + }/* FIXME: before the switch to atomic started, a new pipe_config was * kzalloc'd. Code that depends on any field being zero should be
drivers/gpu/drm/i915/display/intel_dp_tunnel.c +14 -6
@@ -622,19 +622,27 @@ int intel_dp_tunnel_atomic_compute_stream_bw(struct intel_atomic_state *state,* * Clear any DP tunnel stream BW requirement set by * intel_dp_tunnel_atomic_compute_stream_bw(). +* +* Returns 0 in case of success, a negative error code otherwise. */ -void intel_dp_tunnel_atomic_clear_stream_bw (struct intel_atomic_state *state, -struct intel_crtc_state *crtc_state) +int intel_dp_tunnel_atomic_clear_stream_bw (struct intel_atomic_state *state, +struct intel_crtc_state *crtc_state) {struct intel_crtc *crtc =to_intel_crtc (crtc_state->uapi.crtc); +int err;if (!crtc_state->dp_tunnel_ref.tunnel) -return ; +return 0 ; + + err =drm_dp_tunnel_atomic_set_stream_bw (&state->base, + crtc_state->dp_tunnel_ref.tunnel, + crtc->pipe,0 ); +if (err) +return err; -drm_dp_tunnel_atomic_set_stream_bw (&state->base, - crtc_state->dp_tunnel_ref.tunnel, - crtc->pipe,0 );drm_dp_tunnel_ref_put (&crtc_state->dp_tunnel_ref); + +return 0 ; }/**
drivers/gpu/drm/i915/display/intel_dp_tunnel.h +7 -4
@@ -40,8 +40,8 @@ int intel_dp_tunnel_atomic_compute_stream_bw(struct intel_atomic_state *state,struct intel_dp *intel_dp, const struct intel_connector *connector, struct intel_crtc_state *crtc_state); -void intel_dp_tunnel_atomic_clear_stream_bw (struct intel_atomic_state *state, -struct intel_crtc_state *crtc_state); +int intel_dp_tunnel_atomic_clear_stream_bw (struct intel_atomic_state *state, +struct intel_crtc_state *crtc_state);int intel_dp_tunnel_atomic_add_state_for_crtc (struct intel_atomic_state *state,struct intel_crtc *crtc);
@@ -88,9 +88,12 @@ intel_dp_tunnel_atomic_compute_stream_bw(struct intel_atomic_state *state,return 0 ; } -static inline void +static inline int intel_dp_tunnel_atomic_clear_stream_bw (struct intel_atomic_state *state, -struct intel_crtc_state *crtc_state) {} +struct intel_crtc_state *crtc_state) +{ +return 0 ; +} static inline int intel_dp_tunnel_atomic_add_state_for_crtc(struct intel_atomic_state *state,
drivers/gpu/drm/i915/display/intel_gmbus.c +3 -1
@@ -497,8 +497,10 @@ gmbus_xfer_read_chunk(struct intel_display *display, val =intel_de_read_fw (display,GMBUS3 (display)); do { - if (extra_byte_added && len == 1) + if (extra_byte_added && len == 1) { + len--; break; + } *buf++ = val & 0xff; val >>= 8;
drivers/gpu/drm/i915/display/intel_plane.c +9 -2
@@ -421,11 +421,16 @@ void intel_plane_copy_hw_state(struct intel_plane_state *plane_state,drm_framebuffer_get (plane_state->hw.fb); } +static void unlink_nv12_plane (struct intel_crtc_state *crtc_state, +struct intel_plane_state *plane_state); +void intel_plane_set_invisible (struct intel_crtc_state *crtc_state,struct intel_plane_state *plane_state) {struct intel_plane *plane =to_intel_plane (plane_state->uapi.plane); +unlink_nv12_plane (crtc_state, plane_state); + crtc_state->active_planes &= ~BIT (plane->id); crtc_state->scaled_planes &= ~BIT (plane->id); crtc_state->nv12_planes &= ~BIT (plane->id);
@@ -1498,6 +1503,9 @@ static void unlink_nv12_plane(struct intel_crtc_state *crtc_state,struct intel_display *display =to_intel_display (plane_state);struct intel_plane *plane =to_intel_plane (plane_state->uapi.plane); +if (!plane_state->planar_linked_plane) +return ; + plane_state->planar_linked_plane =NULL ;if (!plane_state->is_y_plane)
@@ -1535,8 +1543,7 @@ static int icl_check_nv12_planes(struct intel_atomic_state *state,if (plane->pipe != crtc->pipe)continue ; -if (plane_state->planar_linked_plane) -unlink_nv12_plane (crtc_state, plane_state); +unlink_nv12_plane (crtc_state, plane_state); }if (!crtc_state->nv12_planes)
drivers/gpu/drm/i915/i915_wait_util.h +1 -1
@@ -25,9 +25,9 @@might_sleep (); \for (;;) { \const bool expired__ =ktime_after (ktime_get_raw (), end__); \ -OP ; \/* Guarantee COND check prior to timeout */ \barrier (); \ +OP ; \if (COND ) { \ ret__ =0 ; \break ; \
drivers/gpu/drm/mediatek/mtk_dsi.c +5 -4
@@ -1232,6 +1232,11 @@ static int mtk_dsi_probe(struct platform_device *pdev) dsi->host.ops = &mtk_dsi_ops; dsi->host.dev = dev; + +init_waitqueue_head (&dsi->irq_wait_queue); + +platform_set_drvdata (pdev, dsi); + ret =mipi_dsi_host_register (&dsi->host);if (ret <0 )return dev_err_probe (dev, ret,"Failed to register DSI host\n" );
@@ -1243,10 +1248,6 @@ static int mtk_dsi_probe(struct platform_device *pdev)return dev_err_probe (&pdev->dev, ret,"Failed to request DSI irq\n" ); } -init_waitqueue_head (&dsi->irq_wait_queue); - -platform_set_drvdata (pdev, dsi); - dsi->bridge.of_node = dev->of_node; dsi->bridge.type =DRM_MODE_CONNECTOR_DSI ;
drivers/gpu/drm/ttm/tests/ttm_bo_test.c +2 -2
@@ -222,13 +222,13 @@ static void ttm_bo_reserve_interrupted(struct kunit *test)KUNIT_FAIL (test,"Couldn't create ttm bo reserve task\n" );/* Take a lock so the threaded reserve has to wait */ -mutex_lock (&bo->base.resv->lock.base); +dma_resv_lock (bo->base.resv,NULL );wake_up_process (task);msleep (20 ); err =kthread_stop (task); -mutex_unlock (&bo->base.resv->lock.base); +dma_resv_unlock (bo->base.resv);KUNIT_ASSERT_EQ (test, err, -ERESTARTSYS ); }
drivers/gpu/drm/xe/regs/xe_gt_regs.h +1 -0
@@ -540,6 +540,7 @@#define ENABLE_SMP_LD_RENDER_SURFACE_CONTROL REG_BIT(44 - 32)#define FORCE_SLM_FENCE_SCOPE_TO_TILE REG_BIT(42 - 32)#define FORCE_UGM_FENCE_SCOPE_TO_TILE REG_BIT(41 - 32) +#define L3_128B_256B_WRT_DIS REG_BIT(40 - 32)#define MAXREQS_PER_BANK REG_GENMASK(39 - 32, 37 - 32)#define DISABLE_128B_EVICTION_COMMAND_UDW REG_BIT(36 - 32)
drivers/gpu/drm/xe/xe_pt.c +6 -6
@@ -1451,9 +1451,9 @@ static int op_check_svm_userptr(struct xe_vm *vm, struct xe_vma_op *op, err =vma_check_userptr (vm, op->map.vma, pt_update);break ;case DRM_GPUVA_OP_REMAP : -if (op->remap.prev) +if (op->remap.prev && !op->remap.skip_prev) err =vma_check_userptr (vm, op->remap.prev, pt_update); -if (!err && op->remap.next) +if (!err && op->remap.next && !op->remap.skip_next) err =vma_check_userptr (vm, op->remap.next, pt_update);break ;case DRM_GPUVA_OP_UNMAP :
@@ -2038,12 +2038,12 @@ static int op_prepare(struct xe_vm *vm, err =unbind_op_prepare (tile, pt_update_ops, old); -if (!err && op->remap.prev) { +if (!err && op->remap.prev && !op->remap.skip_prev) { err =bind_op_prepare (vm, tile, pt_update_ops, op->remap.prev, false); pt_update_ops->wait_vm_bookkeep = true; } -if (!err && op->remap.next) { +if (!err && op->remap.next && !op->remap.skip_next) { err =bind_op_prepare (vm, tile, pt_update_ops, op->remap.next, false); pt_update_ops->wait_vm_bookkeep = true;
@@ -2267,10 +2267,10 @@ static void op_commit(struct xe_vm *vm,unbind_op_commit (vm, tile, pt_update_ops, old, fence, fence2); -if (op->remap.prev) +if (op->remap.prev && !op->remap.skip_prev)bind_op_commit (vm, tile, pt_update_ops, op->remap.prev, fence, fence2, false); -if (op->remap.next) +if (op->remap.next && !op->remap.skip_next)bind_op_commit (vm, tile, pt_update_ops, op->remap.next, fence, fence2, false);break ;
drivers/gpu/drm/xe/xe_vm.c +18 -4
@@ -2503,7 +2503,6 @@ static int xe_vma_op_commit(struct xe_vm *vm, struct xe_vma_op *op)if (!err && op->remap.skip_prev) { op->remap.prev->tile_present = tile_present; - op->remap.prev =NULL ; } }if (op->remap.next) {
@@ -2513,11 +2512,13 @@ static int xe_vma_op_commit(struct xe_vm *vm, struct xe_vma_op *op)if (!err && op->remap.skip_next) { op->remap.next->tile_present = tile_present; - op->remap.next =NULL ; } } -/* Adjust for partial unbind after removing VMA from VM */ +/* +* Adjust for partial unbind after removing VMA from VM. In case +* of unwind we might need to undo this later. +*/ if (!err) { op->base.remap.unmap->va->va.addr = op->remap.start; op->base.remap.unmap->va->va.range = op->remap.range;
@@ -2636,6 +2637,8 @@ static int vm_bind_ioctl_ops_parse(struct xe_vm *vm, struct drm_gpuva_ops *ops, op->remap.start =xe_vma_start (old); op->remap.range =xe_vma_size (old); + op->remap.old_start = op->remap.start; + op->remap.old_range = op->remap.range; flags |= op->base.remap.unmap->va->flags &XE_VMA_CREATE_MASK ;if (op->base.remap.prev) {
@@ -2783,8 +2786,19 @@ static void xe_vma_op_unwind(struct xe_vm *vm, struct xe_vma_op *op,xe_svm_notifier_lock (vm); vma->gpuva.flags &= ~XE_VMA_DESTROYED ;xe_svm_notifier_unlock (vm); -if (post_commit) +if (post_commit) { +/* +* Restore the old va range, in case of the +* prev/next skip optimisation. Otherwise what +* we re-insert here could be smaller than the +* original range. +*/ + op->base.remap.unmap->va->va.addr = + op->remap.old_start; + op->base.remap.unmap->va->va.range = + op->remap.old_range;xe_vm_insert_vma (vm, vma); + } }break ; }
drivers/gpu/drm/xe/xe_vm_types.h +4 -0
@@ -365,6 +365,10 @@ struct xe_vma_op_remap {u64 start;/** @range: range of the VMA unmap */ u64 range; +/** @old_start: Original start of the VMA we unmap */ +u64 old_start; +/** @old_range: Original range of the VMA we unmap */ +u64 old_range;/** @skip_prev: skip prev rebind */ bool skip_prev;/** @skip_next: skip next rebind */
drivers/gpu/drm/xe/xe_wa.c +2 -1
@@ -261,7 +261,8 @@ static const struct xe_rtp_entry_sr gt_was[] = { LSN_DIM_Z_WGT_MASK, LSN_LNI_WGT(1) | LSN_LNE_WGT(1) | LSN_DIM_X_WGT(1) | LSN_DIM_Y_WGT(1) | - LSN_DIM_Z_WGT(1))) + LSN_DIM_Z_WGT(1)), + SET(LSC_CHICKEN_BIT_0_UDW, L3_128B_256B_WRT_DIS)) },/* Xe2_HPM */
drivers/hid/hid-apple.c +4 -3
@@ -365,6 +365,9 @@ static const struct apple_non_apple_keyboard non_apple_keyboards[] = { { "A3R" }, { "hfd.cn" }, { "WKB603" }, + { "TH87" }, /* EPOMAKER TH87 BT mode */ + { "HFD Epomaker TH87" }, /* EPOMAKER TH87 USB mode */ + { "2.4G Wireless Receiver" }, /* EPOMAKER TH87 dongle */ };static bool apple_is_non_apple_keyboard (struct hid_device *hdev)
@@ -686,9 +689,7 @@ static const __u8 *apple_report_fixup(struct hid_device *hdev, __u8 *rdesc,hid_info (hdev,"fixing up Magic Keyboard battery report descriptor\n" ); *rsize = *rsize -1 ; - rdesc =kmemdup (rdesc +1 , *rsize,GFP_KERNEL ); -if (!rdesc) -return NULL ; + rdesc = rdesc +1 ; rdesc[0 ] =0x05 ; rdesc[1 ] =0x01 ;
drivers/hid/hid-asus.c +14 -4
@@ -1305,14 +1305,21 @@ static const __u8 *asus_report_fixup(struct hid_device *hdev, __u8 *rdesc,*/ if (*rsize == rsize_orig && rdesc[offs] ==0x09 && rdesc[offs +1 ] ==0x76 ) { - *rsize = rsize_orig +1 ; - rdesc =kmemdup (rdesc, *rsize,GFP_KERNEL ); -if (!rdesc) -return NULL ; +__u8 *new_rdesc; + + new_rdesc =devm_kzalloc (&hdev->dev, rsize_orig +1 , +GFP_KERNEL ); +if (!new_rdesc) +return rdesc;hid_info (hdev,"Fixing up %s keyb report descriptor\n" , drvdata->quirks &QUIRK_T100CHI ?"T100CHI" :"T90CHI" ); + +memcpy (new_rdesc, rdesc, rsize_orig); + *rsize = rsize_orig +1 ; + rdesc = new_rdesc; +memmove (rdesc + offs +4 , rdesc + offs +2 ,12 ); rdesc[offs] =0x19 ; rdesc[offs +1 ] =0x00 ;
@@ -1396,6 +1403,9 @@ static const struct hid_device_id asus_devices[] = { {HID_USB_DEVICE (USB_VENDOR_ID_ASUSTEK ,USB_DEVICE_ID_ASUSTEK_ROG_NKEY_ALLY_X ), QUIRK_USE_KBD_BACKLIGHT | QUIRK_ROG_NKEY_KEYBOARD | QUIRK_ROG_ALLY_XPAD }, + { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, +USB_DEVICE_ID_ASUSTEK_XGM_2023 ), + }, { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK,USB_DEVICE_ID_ASUSTEK_ROG_CLAYMORE_II_KEYBOARD ), QUIRK_ROG_CLAYMORE_II_KEYBOARD },
drivers/hid/hid-ids.h +1 -0
@@ -229,6 +229,7 @@#define USB_DEVICE_ID_ASUSTEK_ROG_NKEY_ALLY_X 0x1b4c#define USB_DEVICE_ID_ASUSTEK_ROG_CLAYMORE_II_KEYBOARD 0x196b#define USB_DEVICE_ID_ASUSTEK_FX503VD_KEYBOARD 0x1869 +#define USB_DEVICE_ID_ASUSTEK_XGM_2023 0x1a9a#define USB_VENDOR_ID_ATEN 0x0557#define USB_DEVICE_ID_ATEN_UC100KM 0x2004
drivers/hid/hid-magicmouse.c +2 -4
@@ -990,13 +990,11 @@ static const __u8 *magicmouse_report_fixup(struct hid_device *hdev, __u8 *rdesc,*/ if ((is_usb_magicmouse2 (hdev->vendor, hdev->product) ||is_usb_magictrackpad2 (hdev->vendor, hdev->product)) && - *rsize ==83 && rdesc[46 ] ==0x84 && rdesc[58 ] ==0x85 ) { + *rsize >=83 && rdesc[46 ] ==0x84 && rdesc[58 ] ==0x85 ) {hid_info (hdev,"fixing up magicmouse battery report descriptor\n" ); *rsize = *rsize -1 ; - rdesc =kmemdup (rdesc +1 , *rsize,GFP_KERNEL ); -if (!rdesc) -return NULL ; + rdesc = rdesc +1 ; rdesc[0 ] =0x05 ; rdesc[1 ] =0x01 ;
drivers/hid/hid-mcp2221.c +2 -0
@@ -353,6 +353,8 @@ static int mcp_i2c_smbus_read(struct mcp2221 *mcp,usleep_range (90 ,100 ); retries++; }else { +usleep_range (980 ,1000 ); +mcp_cancel_last_cmd (mcp);return ret; } }else {
drivers/hid/intel-ish-hid/ipc/hw-ish.h +2 -0
@@ -39,6 +39,8 @@#define PCI_DEVICE_ID_INTEL_ISH_PTL_H 0xE345#define PCI_DEVICE_ID_INTEL_ISH_PTL_P 0xE445#define PCI_DEVICE_ID_INTEL_ISH_WCL 0x4D45 +#define PCI_DEVICE_ID_INTEL_ISH_NVL_H 0xD354 +#define PCI_DEVICE_ID_INTEL_ISH_NVL_S 0x6E78#define REVISION_ID_CHT_A0 0x6#define REVISION_ID_CHT_Ax_SI 0x0
drivers/hid/intel-ish-hid/ipc/pci-ish.c +12 -0
@@ -28,11 +28,15 @@ enum ishtp_driver_data_index {ISHTP_DRIVER_DATA_LNL_M ,ISHTP_DRIVER_DATA_PTL ,ISHTP_DRIVER_DATA_WCL , +ISHTP_DRIVER_DATA_NVL_H , + ISHTP_DRIVER_DATA_NVL_S, };#define ISH_FW_GEN_LNL_M "lnlm"#define ISH_FW_GEN_PTL "ptl"#define ISH_FW_GEN_WCL "wcl" +#define ISH_FW_GEN_NVL_H "nvlh" +#define ISH_FW_GEN_NVL_S "nvls"#define ISH_FIRMWARE_PATH (gen) "intel/ish/ish_" gen ".bin"#define ISH_FIRMWARE_PATH_ALL "intel/ish/ish_*.bin"
@@ -47,6 +51,12 @@ static struct ishtp_driver_data ishtp_driver_data[] = { [ISHTP_DRIVER_DATA_WCL ] = { .fw_generation =ISH_FW_GEN_WCL , }, + [ISHTP_DRIVER_DATA_NVL_H ] = { + .fw_generation =ISH_FW_GEN_NVL_H , + }, + [ISHTP_DRIVER_DATA_NVL_S ] = { + .fw_generation =ISH_FW_GEN_NVL_S , + }, };static const struct pci_device_id ish_pci_tbl[] = {
@@ -76,6 +86,8 @@ static const struct pci_device_id ish_pci_tbl[] = { {PCI_DEVICE_DATA(INTEL, ISH_PTL_H, ISHTP_DRIVER_DATA_PTL)}, {PCI_DEVICE_DATA(INTEL, ISH_PTL_P, ISHTP_DRIVER_DATA_PTL)}, {PCI_DEVICE_DATA(INTEL, ISH_WCL, ISHTP_DRIVER_DATA_WCL)}, + {PCI_DEVICE_DATA(INTEL, ISH_NVL_H, ISHTP_DRIVER_DATA_NVL_H)}, + {PCI_DEVICE_DATA(INTEL, ISH_NVL_S, ISHTP_DRIVER_DATA_NVL_S)}, {} };MODULE_DEVICE_TABLE (pci, ish_pci_tbl);
drivers/hwmon/adm1177.c +31 -23
111 lines not on this page · raw message
drivers/hwmon/axi-fan-control.c +1 -1
@@ -507,7 +507,7 @@ static int axi_fan_control_probe(struct platform_device *pdev) ret =devm_request_threaded_irq (&pdev->dev, ctl->irq,NULL , axi_fan_control_irq_handler,IRQF_ONESHOT |IRQF_TRIGGER_HIGH , - pdev->driver_override, ctl); +NULL , ctl);if (ret)return dev_err_probe (&pdev->dev, ret,"failed to request an irq\n" );
drivers/hwmon/peci/cputemp.c +2 -2
@@ -133,7 +133,7 @@ static int get_temp_target(struct peci_cputemp *priv, enum peci_temp_target_type *val = priv->temp.target.tjmax;break ;case crit_hyst_type: - *val = priv->temp.target.tjmax - priv->temp.target.tcontrol; + *val = priv->temp.target.tcontrol;break ;default : ret = -EOPNOTSUPP ;
@@ -339,7 +339,7 @@ static umode_t cputemp_is_visible(const void *data, enum hwmon_sensor_types type {const struct peci_cputemp *priv = data; -if (channel >CPUTEMP_CHANNEL_NUMS ) +if (channel >=CPUTEMP_CHANNEL_NUMS )return 0 ;if (channel < channel_core)
drivers/hwmon/pmbus/ina233.c +2 -1
@@ -72,7 +72,8 @@ static int ina233_read_word_data(struct i2c_client *client, int page,/* Adjust returned value to match VIN coefficients */ /* VIN: 1.25 mV VSHUNT: 2.5 uV LSB */ - ret =DIV_ROUND_CLOSEST (ret *25 ,12500 ); + ret =clamp_val (DIV_ROUND_CLOSEST ((s16 )ret *25 ,12500 ), +S16_MIN ,S16_MAX ) &0xffff ;break ;default : ret = -ENODATA ;
drivers/hwmon/pmbus/isl68137.c +18 -3
@@ -94,7 +94,15 @@ static ssize_t isl68137_avs_enable_show_page(struct i2c_client *client,int page, char *buf) { - int val = pmbus_read_byte_data(client, page, PMBUS_OPERATION); + int val; + + val =pmbus_lock_interruptible (client); +if (val) +return val; + + val =pmbus_read_byte_data (client, page,PMBUS_OPERATION ); + +pmbus_unlock (client);if (val <0 )return val;
@@ -116,6 +124,10 @@ static ssize_t isl68137_avs_enable_store_page(struct i2c_client *client, op_val = result ?ISL68137_VOUT_AVS :0 ; + rc =pmbus_lock_interruptible (client); +if (rc) +return rc; +/* * Writes to VOUT setpoint over AVSBus will persist after the VRM is * switched to PMBus control. Switching back to AVSBus control
@@ -127,17 +139,20 @@ static ssize_t isl68137_avs_enable_store_page(struct i2c_client *client, rc =pmbus_read_word_data (client, page,0xff ,PMBUS_VOUT_COMMAND );if (rc <0 ) -return rc; + goto unlock; rc =pmbus_write_word_data (client, page,PMBUS_VOUT_COMMAND , rc);if (rc <0 ) -return rc; + goto unlock; } rc =pmbus_update_byte_data (client, page,PMBUS_OPERATION ,ISL68137_VOUT_AVS , op_val); +unlock: +pmbus_unlock (client); +return (rc <0 ) ? rc : count; }
drivers/hwmon/pmbus/pmbus_core.c +154 -38
511 lines not on this page · raw message
drivers/i2c/busses/i2c-designware-amdisp.c +5 -6
@@ -7,6 +7,7 @@#include <linux/module.h> #include <linux/platform_device.h> +#include <linux/pm_domain.h> #include <linux/pm_runtime.h> #include <linux/soc/amd/isp4_misc.h>
@@ -82,22 +83,20 @@ static int amd_isp_dw_i2c_plat_probe(struct platform_device *pdev)if (isp_i2c_dev->shared_with_punit)pm_runtime_get_noresume (&pdev->dev); -pm_runtime_enable (&pdev->dev); -pm_runtime_get_sync (&pdev->dev); - +dev_pm_genpd_resume (&pdev->dev); ret =i2c_dw_probe (isp_i2c_dev);if (ret) {dev_err_probe (&pdev->dev, ret,"i2c_dw_probe failed\n" ); goto error_release_rpm; } - -pm_runtime_put_sync (&pdev->dev); +dev_pm_genpd_suspend (&pdev->dev); +pm_runtime_set_suspended (&pdev->dev); +pm_runtime_enable (&pdev->dev);return 0 ; error_release_rpm:amd_isp_dw_i2c_plat_pm_cleanup (isp_i2c_dev); -pm_runtime_put_sync (&pdev->dev);return ret; }
drivers/i2c/busses/i2c-imx.c +32 -19
6 lines not on this page · raw message
drivers/infiniband/hw/efa/efa_com.c +88 -85
173 lines not on this page · raw message
drivers/infiniband/hw/ionic/ionic_controlpath.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/airoha/airoha_ppe.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/broadcom/asp2/bcmasp.c +36 -30
66 lines not on this page · raw message
drivers/net/ethernet/cadence/macb_main.c +25 -16
41 lines not on this page · raw message
drivers/net/ethernet/freescale/enetc/enetc_ethtool.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/iavf/iavf_ethtool.c +15 -16
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_ethtool.c +11 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_repr.c +3 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microchip/lan743x_main.c +5 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/pensando/ionic/ionic_lif.c +11 -6
Lines of this file are not shown. View the raw message.
drivers/net/team/team_core.c +64 -1
65 lines not on this page · raw message
drivers/phy/qualcomm/phy-qcom-qmp-ufs.c +1 -2
Lines of this file are not shown. View the raw message.
drivers/pinctrl/mediatek/pinctrl-mtk-common.c +6 -3
Lines of this file are not shown. View the raw message.
drivers/pinctrl/renesas/pinctrl-rzt2h.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/platform/x86/intel/speed_select_if/isst_tpmi_core.c +4 -1
Lines of this file are not shown. View the raw message.
drivers/platform/x86/lenovo/wmi-gamezone.c +0 -2
Lines of this file are not shown. View the raw message.
drivers/platform/x86/touchscreen_dmi.c +18 -0
Lines of this file are not shown. View the raw message.
drivers/thermal/intel/int340x_thermal/processor_thermal_soc_slider.c +7 -1
Lines of this file are not shown. View the raw message.
drivers/virt/coco/tdx-guest/tdx-guest.c +10 -2
Lines of this file are not shown. View the raw message.
fs/ext4/inode.c +60 -15
75 lines not on this page · raw message
fs/netfs/iterator.c +43 -0
43 lines not on this page · raw message
fs/smb/server/oplock.c +45 -27
72 lines not on this page · raw message
fs/smb/server/smb2pdu.c +52 -21
73 lines not on this page · raw message
fs/xfs/xfs_trace.h +34 -13
47 lines not on this page · raw message
include/linux/device.h +54 -0
54 lines not on this page · raw message
include/linux/virtio_net.h +49 -4
53 lines not on this page · raw message
include/uapi/linux/netfilter/nf_conntrack_common.h +4 -0
Lines of this file are not shown. View the raw message.
kernel/bpf/core.c +35 -8
43 lines not on this page · raw message
net/bluetooth/l2cap_core.c +79 -26
105 lines not on this page · raw message
net/netfilter/nft_set_rbtree.c +75 -17
92 lines not on this page · raw message
sound/hda/codecs/realtek/alc269.c +36 -6
42 lines not on this page · raw message
sound/soc/amd/acp/amd-acp63-acpi-match.c +413 -0
413 lines not on this page · raw message
tools/objtool/arch/x86/decode.c +23 -39
62 lines not on this page · raw message
tools/testing/selftests/bpf/prog_tests/reg_bounds.c +58 -4
62 lines not on this page · raw message
tools/testing/selftests/bpf/progs/exceptions_fail.c +6 -3
Lines of this file are not shown. View the raw message.
tools/testing/selftests/mount_setattr/mount_setattr_test.c +1 -1
Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.