Linux 6.18.10
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.18.10 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
------------
Makefile | 2 arch/arm/include/asm/string.h | 5 arch/loongarch/kernel/traps.c | 5 arch/loongarch/mm/cache.c | 8 arch/riscv/include/asm/uaccess.h | 14 arch/riscv/kernel/Makefile | 15 arch/riscv/kernel/traps.c | 4 arch/x86/coco/sev/Makefile | 2 arch/x86/include/asm/kfence.h | 7 arch/x86/include/asm/vmware.h | 4 arch/x86/kvm/svm/svm.c | 2 arch/x86/kvm/vmx/vmx.c | 2 arch/x86/kvm/x86.c | 30 - arch/x86/kvm/x86.h | 2 block/bfq-cgroup.c | 2 drivers/android/binder.c | 19 drivers/android/binder/rust_binderfs.c | 8 drivers/android/binder/thread.rs | 109 ++-- drivers/android/binderfs.c | 8 drivers/base/regmap/regcache-maple.c | 11 drivers/block/rbd.c | 33 - drivers/bus/mhi/host/pci_generic.c | 13 drivers/crypto/intel/qat/qat_common/adf_aer.c | 2 drivers/dma/ioat/init.c | 1 drivers/dma/mmp_pdma.c | 6 drivers/firmware/cirrus/cs_dsp.c | 82 ++- drivers/firmware/cirrus/cs_dsp.h | 18 drivers/firmware/cirrus/test/cs_dsp_test_bin.c | 22 drivers/firmware/cirrus/test/cs_dsp_test_bin_error.c | 24 drivers/firmware/cirrus/test/cs_dsp_test_wmfw.c | 26 - drivers/firmware/cirrus/test/cs_dsp_test_wmfw_error.c | 24 drivers/firmware/cirrus/test/cs_dsp_tests.c | 1 drivers/gpio/gpio-loongson-64bit.c | 2 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 3 drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 3 drivers/gpu/drm/amd/amdgpu/mes_v11_0.c | 2 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c | 11 drivers/gpu/drm/amd/display/dc/dcn30/dcn30_cm_common.c | 7 drivers/gpu/drm/amd/display/dc/dml/dcn30/display_mode_vba_30.c | 258 ++-------- drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c | 7 drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_2_ppt.c | 9 drivers/gpu/drm/mgag200/mgag200_bmc.c | 31 - drivers/gpu/drm/mgag200/mgag200_drv.h | 6 drivers/gpu/drm/nouveau/include/nvif/client.h | 2 drivers/gpu/drm/nouveau/include/nvif/driver.h | 2 drivers/gpu/drm/nouveau/include/nvkm/core/device.h | 3 drivers/gpu/drm/nouveau/include/nvkm/core/engine.h | 2 drivers/gpu/drm/nouveau/include/nvkm/core/object.h | 5 drivers/gpu/drm/nouveau/include/nvkm/core/oproxy.h | 2 drivers/gpu/drm/nouveau/include/nvkm/core/subdev.h | 4 drivers/gpu/drm/nouveau/include/nvkm/core/suspend_state.h | 11 drivers/gpu/drm/nouveau/include/nvkm/subdev/gsp.h | 6 drivers/gpu/drm/nouveau/nouveau_drm.c | 2 drivers/gpu/drm/nouveau/nouveau_nvif.c | 10 drivers/gpu/drm/nouveau/nvif/client.c | 4 drivers/gpu/drm/nouveau/nvkm/core/engine.c | 4 drivers/gpu/drm/nouveau/nvkm/core/ioctl.c | 4 drivers/gpu/drm/nouveau/nvkm/core/object.c | 20 drivers/gpu/drm/nouveau/nvkm/core/oproxy.c | 2 drivers/gpu/drm/nouveau/nvkm/core/subdev.c | 18 drivers/gpu/drm/nouveau/nvkm/core/uevent.c | 2 drivers/gpu/drm/nouveau/nvkm/engine/ce/ga100.c | 2 drivers/gpu/drm/nouveau/nvkm/engine/ce/priv.h | 2 drivers/gpu/drm/nouveau/nvkm/engine/device/base.c | 22 drivers/gpu/drm/nouveau/nvkm/engine/device/pci.c | 4 drivers/gpu/drm/nouveau/nvkm/engine/device/priv.h | 2 drivers/gpu/drm/nouveau/nvkm/engine/device/user.c | 2 drivers/gpu/drm/nouveau/nvkm/engine/disp/base.c | 4 drivers/gpu/drm/nouveau/nvkm/engine/disp/chan.c | 2 drivers/gpu/drm/nouveau/nvkm/engine/falcon.c | 4 drivers/gpu/drm/nouveau/nvkm/engine/fifo/base.c | 2 drivers/gpu/drm/nouveau/nvkm/engine/fifo/uchan.c | 6 drivers/gpu/drm/nouveau/nvkm/engine/gr/base.c | 4 drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c | 2 drivers/gpu/drm/nouveau/nvkm/engine/gr/nv04.c | 2 drivers/gpu/drm/nouveau/nvkm/engine/gr/nv10.c | 2 drivers/gpu/drm/nouveau/nvkm/engine/gr/nv20.c | 2 drivers/gpu/drm/nouveau/nvkm/engine/gr/nv20.h | 2 drivers/gpu/drm/nouveau/nvkm/engine/gr/nv40.c | 4 drivers/gpu/drm/nouveau/nvkm/engine/mpeg/nv44.c | 2 drivers/gpu/drm/nouveau/nvkm/engine/sec2/base.c | 2 drivers/gpu/drm/nouveau/nvkm/engine/xtensa.c | 4 drivers/gpu/drm/nouveau/nvkm/subdev/acr/base.c | 2 drivers/gpu/drm/nouveau/nvkm/subdev/bar/base.c | 2 drivers/gpu/drm/nouveau/nvkm/subdev/clk/base.c | 2 drivers/gpu/drm/nouveau/nvkm/subdev/devinit/base.c | 4 drivers/gpu/drm/nouveau/nvkm/subdev/fault/base.c | 2 drivers/gpu/drm/nouveau/nvkm/subdev/fault/user.c | 2 drivers/gpu/drm/nouveau/nvkm/subdev/gpio/base.c | 2 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/base.c | 2 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/gh100.c | 2 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/priv.h | 8 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/fbsr.c | 2 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gsp.c | 8 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/rpc.c | 6 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/fbsr.c | 8 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/gsp.c | 2 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/rm.h | 2 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/tu102.c | 2 drivers/gpu/drm/nouveau/nvkm/subdev/i2c/base.c | 2 drivers/gpu/drm/nouveau/nvkm/subdev/instmem/base.c | 2 drivers/gpu/drm/nouveau/nvkm/subdev/pci/base.c | 2 drivers/gpu/drm/nouveau/nvkm/subdev/pmu/base.c | 2 drivers/gpu/drm/nouveau/nvkm/subdev/therm/base.c | 6 drivers/gpu/drm/nouveau/nvkm/subdev/timer/base.c | 2 drivers/gpu/drm/xe/xe_guc.c | 6 drivers/gpu/drm/xe/xe_guc.h | 2 drivers/gpu/drm/xe/xe_pm.c | 13 drivers/gpu/drm/xe/xe_query.c | 2 drivers/hid/hid-elecom.c | 15 drivers/hid/hid-ids.h | 7 drivers/hid/hid-logitech-hidpp.c | 2 drivers/hid/hid-multitouch.c | 1 drivers/hid/hid-playstation.c | 5 drivers/hid/hid-quirks.c | 5 drivers/hid/i2c-hid/i2c-hid-core.c | 1 drivers/hid/intel-ish-hid/ishtp-hid-client.c | 1 drivers/hid/intel-ish-hid/ishtp/bus.c | 12 drivers/hid/intel-thc-hid/intel-thc/intel-thc-dma.c | 5 drivers/hwmon/acpi_power_meter.c | 17 drivers/hwmon/dell-smm-hwmon.c | 8 drivers/hwmon/gpio-fan.c | 6 drivers/hwmon/occ/common.c | 1 drivers/i2c/busses/i2c-imx.c | 3 drivers/md/md.c | 4 drivers/net/ethernet/adi/adin1110.c | 3 drivers/net/ethernet/broadcom/bnx2.c | 2 drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 1 drivers/net/ethernet/broadcom/tg3.c | 1 drivers/net/ethernet/cavium/liquidio/lio_main.c | 39 - drivers/net/ethernet/cavium/liquidio/lio_vf_main.c | 4 drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c | 1 drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c | 2 drivers/net/ethernet/freescale/dpaa2/dpaa2-switch.c | 10 drivers/net/ethernet/freescale/enetc/enetc.c | 11 drivers/net/ethernet/freescale/enetc/enetc4_pf.c | 6 drivers/net/ethernet/freescale/enetc/enetc_cbdr.c | 4 drivers/net/ethernet/freescale/enetc/enetc_hw.h | 17 drivers/net/ethernet/google/gve/gve_ethtool.c | 77 +- drivers/net/ethernet/google/gve/gve_main.c | 4 drivers/net/ethernet/hisilicon/hibmcge/hbg_err.c | 1 drivers/net/ethernet/intel/e1000e/netdev.c | 1 drivers/net/ethernet/intel/fm10k/fm10k_pci.c | 6 drivers/net/ethernet/intel/i40e/i40e_main.c | 2 drivers/net/ethernet/intel/ice/ice_main.c | 28 - drivers/net/ethernet/intel/ice/ice_ptp.c | 179 ++++-- drivers/net/ethernet/intel/ice/ice_ptp.h | 18 drivers/net/ethernet/intel/igb/igb_main.c | 2 drivers/net/ethernet/intel/igc/igc_main.c | 2 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 1 drivers/net/ethernet/mellanox/mlx4/main.c | 1 drivers/net/ethernet/mellanox/mlx5/core/main.c | 1 drivers/net/ethernet/meta/fbnic/fbnic_pci.c | 1 drivers/net/ethernet/microchip/lan743x_main.c | 1 drivers/net/ethernet/myricom/myri10ge/myri10ge.c | 4 drivers/net/ethernet/neterion/s2io.c | 1 drivers/net/ethernet/spacemit/k1_emac.c | 21 drivers/net/ethernet/ti/cpsw.c | 41 + drivers/net/ethernet/ti/cpsw_new.c | 34 + drivers/net/ethernet/ti/cpsw_priv.h | 1 drivers/net/macvlan.c | 5 drivers/net/phy/sfp.c | 2 drivers/net/usb/r8152.c | 29 - drivers/net/usb/sr9700.c | 5 drivers/net/wireless/intel/iwlwifi/mld/iface.c | 2 drivers/net/wireless/intel/iwlwifi/mld/mac80211.c | 2 drivers/net/wireless/intel/iwlwifi/mld/ptp.c | 7 drivers/net/wireless/intel/iwlwifi/mvm/d3.c | 6 drivers/net/wireless/intel/iwlwifi/mvm/ptp.c | 7 drivers/net/wireless/ti/wlcore/tx.c | 5 drivers/nvme/host/fc.c | 2 drivers/nvme/host/pci.c | 45 + drivers/nvme/target/tcp.c | 26 - drivers/pci/bus.c | 3 drivers/pci/controller/dwc/pcie-qcom.c | 4 drivers/pci/pci.c | 3 drivers/pci/pcie/portdrv.c | 1 drivers/platform/x86/dell/dell-lis3lv02d.c | 1 drivers/platform/x86/hp/hp-bioscfg/bioscfg.c | 5 drivers/platform/x86/intel/plr_tpmi.c | 2 drivers/platform/x86/intel/telemetry/debugfs.c | 4 drivers/platform/x86/intel/telemetry/pltdrv.c | 2 drivers/platform/x86/toshiba_haps.c | 2 drivers/pmdomain/imx/gpcv2.c | 8 drivers/pmdomain/imx/imx8m-blk-ctrl.c | 2 drivers/pmdomain/imx/imx8mp-blk-ctrl.c | 30 + drivers/pmdomain/qcom/rpmpd.c | 2 drivers/regulator/spacemit-p1.c | 6 drivers/scsi/bfa/bfad.c | 1 drivers/scsi/csiostor/csio_init.c | 1 drivers/scsi/ipr.c | 1 drivers/scsi/lpfc/lpfc_init.c | 6 drivers/scsi/qla2xxx/qla_os.c | 5 drivers/scsi/qla4xxx/ql4_os.c | 5 drivers/spi/spi-hisi-kunpeng.c | 4 drivers/spi/spi-intel-pci.c | 1 drivers/spi/spi-tegra114.c | 3 drivers/spi/spi-tegra20-slink.c | 6 drivers/spi/spi-tegra210-quad.c | 56 ++ drivers/target/iscsi/iscsi_target_util.c | 10 drivers/tty/serial/8250/8250_pci.c | 1 drivers/tty/serial/jsm/jsm_driver.c | 1 fs/btrfs/disk-io.c | 13 fs/btrfs/fs.h | 8 fs/btrfs/inode.c | 22 fs/btrfs/tree-log.c | 2 fs/btrfs/volumes.c | 2 fs/ceph/crypto.c | 9 fs/ceph/mds_client.c | 5 fs/ceph/mdsmap.c | 26 - fs/ceph/mdsmap.h | 1 fs/ceph/super.h | 16 fs/proc/task_mmu.c | 42 + fs/smb/client/smb2file.c | 1 fs/smb/server/smb2pdu.c | 8 include/linux/buildid.h | 3 include/linux/ceph/ceph_fs.h | 6 include/linux/firmware/cirrus/cs_dsp.h | 4 include/linux/skbuff.h | 12 io_uring/io_uring.c | 2 io_uring/rw.c | 15 io_uring/zcrx.c | 1 kernel/cgroup/dmem.c | 70 ++ kernel/sched/fair.c | 54 +- kernel/trace/ring_buffer.c | 2 kernel/trace/trace.c | 8 kernel/trace/trace.h | 7 kernel/trace/trace_entries.h | 32 - kernel/trace/trace_export.c | 21 lib/buildid.c | 42 + mm/shmem.c | 23 mm/slub.c | 6 net/bridge/netfilter/ebtables.c | 2 net/core/filter.c | 8 net/core/gro.c | 2 net/core/link_watch.c | 20 net/core/net-procfs.c | 50 + net/ethtool/common.c | 3 net/ethtool/rss.c | 9 net/ipv6/ip6_fib.c | 3 net/mac80211/iface.c | 8 net/mac80211/key.c | 3 net/mac80211/mlme.c | 5 net/mac80211/ocb.c | 3 net/mac80211/sta_info.c | 7 net/netfilter/nf_log.c | 4 net/netfilter/nf_tables_api.c | 2 net/netfilter/x_tables.c | 2 net/sched/cls_u32.c | 13 net/tipc/crypto.c | 4 net/wireless/util.c | 8 sound/drivers/aloop.c | 62 +- sound/hda/codecs/realtek/alc269.c | 27 + sound/hda/codecs/side-codecs/tas2781_hda_i2c.c | 5 sound/soc/amd/renoir/acp3x-pdm-dma.c | 2 sound/soc/amd/yc/acp6x-mach.c | 7 sound/soc/codecs/tlv320adcx140.c | 3 sound/soc/generic/simple-card-utils.c | 4 sound/soc/intel/boards/sof_sdw.c | 8 sound/soc/ti/davinci-evm.c | 39 + sound/usb/mixer_quirks.c | 9 sound/usb/pcm.c | 3 sound/usb/quirks.c | 2 tools/testing/selftests/kvm/Makefile.kvm | 1 virt/kvm/eventfd.c | 44 - 265 files changed, 1871 insertions(+), 1032 deletions(-)
Aaron Ma (1):
ice: Fix PTP NULL pointer dereference during VSI rebuild
Alan Borzeszkowski (1):
spi: intel-pci: Add support for Nova Lake SPI serial flash
Alex Deucher (1):
Revert "drm/amd/display: pause the workload setting in dm"
Alexandre Negrel (1):
io_uring: use GFP_NOWAIT for overflow CQEs on legacy rings
Alice Ryhl (2):
rust_binder: correctly handle FDA objects of length zero
rust_binder: add additional alignment checks
Andrew Cooper (1):
x86/kfence: fix booting on 32bit non-PAE systems
Andrew Fasano (1):
netfilter: nf_tables: fix inverted genmask check in nft_map_catchall_activate()
Andrii Nakryiko (1):
procfs: avoid fetching build ID while holding VMA lock
Arnd Bergmann (1):
hwmon: (occ) Mark occ_init_attribute() as __printf
Arnoud Willemsen (1):
HID: Elecom: Add support for ELECOM M-XT3DRBK (018C)
Baochen Qiang (1):
wifi: mac80211: collect station statistics earlier when disconnect
Bert Karwatzki (1):
Revert "drm/amd: Check if ASPM is enabled from PCIe subsystem"
Brendan Jackman (1):
x86/sev: Disable GCOV on noinstr object
Breno Leitao (6):
spi: tegra210-quad: Return IRQ_HANDLED when timeout already processed transfer
spi: tegra210-quad: Move curr_xfer read inside spinlock
spi: tegra210-quad: Protect curr_xfer assignment in tegra_qspi_setup_transfer_one
spi: tegra210-quad: Protect curr_xfer in tegra_qspi_combined_seq_xfer
spi: tegra210-quad: Protect curr_xfer clearing in tegra_qspi_non_combined_seq_xfer
spi: tegra210-quad: Protect curr_xfer check in IRQ handler
Carlos Llamas (4):
rust_binderfs: fix ida_alloc_max() upper bound
binder: fix UAF in binder_netlink_report()
binder: fix BR_FROZEN_REPLY error log
binderfs: fix ida_alloc_max() upper bound
Chaitanya Kulkarni (1):
nvme-fc: release admin tagset if init fails
Chen Ni (2):
net: ethernet: adi: adin1110: Check return value of devm_gpiod_get_optional() in adin1110_check_spi()
gpio: loongson-64bit: Fix incorrect NULL check after devm_kcalloc()
Chen Ridong (3):
cgroup/dmem: fix NULL pointer dereference when setting max cgroup/dmem: avoid rcu warning when unregister region cgroup/dmem: avoid pool UAF
ChenXiaoSong (1):
smb/client: fix memory leak in smb2_open_file()
Chenghao Duan (1):
LoongArch: Enable exception fixup for specific ADE subcode
Chris Bainbridge (1):
ASoC: amd: fix memory leak in acp3x pdm dma ops
Chris Chiu (1):
HID: quirks: Add another Chicony HP 5MP Cameras to hid_ignore_list
Claudiu Manoil (4):
net: enetc: Remove SI/BDR cacheability AXI settings for ENETC v4
net: enetc: Remove CBDR cacheability AXI settings for ENETC v4
net: enetc: Convert 16-bit register writes to 32-bit for ENETC v4
net: enetc: Convert 16-bit register reads to 32-bit for ENETC v4
Daniel Gomez (1):
netfilter: replace -EEXIST with -EBUSY
Daniel Hodges (1):
tipc: use kfree_sensitive() for session key material
Daniel Vogelbacher (1):
ceph: fix oops due to invalid pointer for kfree() in parse_longname()
Daniele Ceraolo Spurio (1):
drm/xe/guc: Fix CFI violation in debugfs access.
Daniele Palmas (1):
bus: mhi: host: pci_generic: Add Telit FE990B40 modem support
Dave Airlie (3):
nouveau: add a third state to the fini handler. nouveau/gsp: use rpc sequence numbers properly. nouveau/gsp: fix suspend/resume regression on r570 firmware
DaytonCL (1):
HID: multitouch: add MT_QUIRK_STICKY_FINGERS to MT_CLS_VTL
Debarghya Kundu (1):
gve: Fix stats report corruption on queue count change
Deep Harsora (1):
ASoC: Intel: sof_sdw: Add new quirks for PTL on Dell with CS42L43
Dennis Marttinen (1):
HID: logitech: add HID++ support for Logitech MX Anywhere 3S
Devyn Liu (1):
spi: hisi-kunpeng: Fixed the wrong debugfs node name in hisi_spi debugfs initialization
Dimitrios Katsaros (1):
ASoC: tlv320adcx140: Propagate error codes during probe
Dmytro Bagrii (1):
platform/x86: dell-lis3lv02d: Add Latitude 5400
Edward Adam Davis (2):
ALSA: usb-audio: Prevent excessive number of frames
btrfs: sync read disk super and set block size
Eric Dumazet (4):
net: add skb_header_pointer_careful() helper net/sched: cls_u32: use skb_header_pointer_careful()
macvlan: fix error recovery in macvlan_common_newlink()
net: add proper RCU protection to /proc/net/ptype
Ethan Nelson-Moore (1):
net: usb: sr9700: support devices with virtual driver CD
Even Xu (1):
HID: Intel-thc-hid: Intel-thc: Add safety check for reading DMA buffer
Felix Gu (1):
spi: tegra: Fix a memory leak in tegra_slink_probe()
FengWei Shih (1):
md: suspend array while updating raid_disks via sysfs
Filipe Manana (2):
btrfs: do not free data reservation in fallback from inline due to -ENOSPC
btrfs: fix reservation leak in some error paths when inserting inline extent
Gabor Juhos (3):
pmdomain: qcom: rpmpd: fix off-by-one error in clamping to the highest state
hwmon: (gpio-fan) Fix set_rpm() return value
hwmon: (gpio-fan) Allow to stop FANs when CONFIG_PM is disabled
Greg Kroah-Hartman (1):
Linux 6.18.10
Grzegorz Nitka (1):
ice: fix missing TX timestamps interrupts on E825 devices
Guodong Xu (2):
dmaengine: mmp_pdma: Fix race condition in mmp_pdma_residue()
regulator: spacemit-p1: Fix n_voltages for BUCK and LDO regulators
Hannes Reinecke (1):
nvmet-tcp: fixup hang in nvmet_tcp_listen_data_ready()
Hao Ge (1):
mm/slab: Add alloc_tagging_slab_free_hook for memcg_alloc_abort_single
Huacai Chen (1):
LoongArch: Set correct protection_map[] for VM_NONE/VM_SHARED
Ian Rogers (1):
tracing: Avoid possible signed 64-bit truncation
Ilya Dryomov (1):
rbd: check for EOD after exclusive lock is ensured to be held
Jacky Bai (1):
pmdomain: imx: gpcv2: Fix the imx8mm gpu hang due to wrong adb400 reset
Jacob Keller (2):
ice: PTP: fix missing timestamps on E825 hardware drm/mgag200: fix mgag200_bmc_stop_scanout()
Jakub Kicinski (2):
net: don't touch dev->stats in BPF redirect paths
net: rss: fix reporting RXH_XFRM_NO_CHANGE as input_xfrm for contexts
Jens Axboe (1):
io_uring/rw: free potentially allocated iovec on cache put failure
Jiayuan Chen (1):
linkwatch: use __dev_put() in callers to prevent UAF
Johannes Berg (1):
wifi: mac80211: don't WARN for connections on invalid channels
Josh Poimboeuf (1):
x86/vmware: Fix hypercall clobbers
Junrui Luo (2):
dpaa2-switch: prevent ZERO_SIZE_PTR dereference when num_ifs is zero
dpaa2-switch: add bounds check for if_id in IRQ handler
Kairui Song (1):
mm, shmem: prevent infinite loop on truncate race
Karthik Poosa (1):
drm/xe/pm: Disable D3Cold for BMG only on specific platforms
Kaushlendra Kumar (3):
platform/x86: intel_telemetry: Fix swapped arrays in PSS output
regmap: maple: free entry on mas_store_gfp() failure platform/x86: intel_telemetry: Fix PSS event register mask
Keith Busch (1):
nvme-pci: handle changing device dma map requirements
Kery Qi (1):
ASoC: davinci-evm: Fix reference leak in davinci_evm_probe
Kevin Hao (2):
net: cpsw: Execute ndo_set_rx_mode callback in a work queue
net: cpsw_new: Execute ndo_set_rx_mode callback in a work queue
Kwok Kin Ming (1):
HID: i2c-hid: fix potential buffer overflow in i2c_hid_get_report()
LI Qingwu (1):
i2c: imx: preserve error state in block data length handler
Lianqin Hu (1):
ALSA: usb-audio: Add delay quirk for MOONDROP Moonriver2 Ti
Lukas Gerlach (1):
riscv: Sanitize syscall table indexing under speculation
Lukas Wunner (2):
PCI/ERR: Ensure error recoverability at all times
treewide: Drop pci_save_state() after pci_restore_state()
Manivannan Sadhasivam (1):
PCI: qcom: Remove ASPM L0s support for MSM8996 SoC
Marek Behún (1):
net: sfp: Fix quirk for Ubiquiti U-Fiber Instant SFP module
Mario Limonciello (2):
drm/amd: Set minimum version for set_hw_resource_1 on gfx11 to 0x52 platform/x86: hp-bioscfg: Skip empty attribute names
Martin Hamilton (1):
ALSA: hda/realtek: ALC269 fixup for Lenovo Yoga Book 9i 13IRU8 audio
Martin Kaiser (1):
riscv: trace: fix snapshot deadlock with sbi ecall
Matouš Lánský (1):
ALSA: hda/realtek: Add quirk for Acer Nitro AN517-55
Maurizio Lombardi (2):
scsi: target: iscsi: Fix use-after-free in iscsit_dec_session_usage_count()
scsi: target: iscsi: Fix use-after-free in iscsit_dec_conn_usage_count()
Max Yuan (1):
gve: Correct ethtool rx_dropped calculation
Melissa Wen (1):
drm/amd/display: fix wrong color value mapping on MCM shaper LUT
Miri Korenblit (4):
wifi: mac80211: correctly check if CSA is active
wifi: mac80211: don't increment crypto_tx_tailroom_needed_cnt twice
wifi: iwlwifi: mld: cancel mlo_scan_start_wk
wifi: iwlwifi: mvm: pause TCM on fast resume
Mohammad Heib (2):
ice: drop udp_tunnel_get_rx_info() call from ndo_open()
i40e: drop udp_tunnel_get_rx_info() call from i40e_open()
Moon Hee Lee (1):
wifi: mac80211: ocb: skip rx_no_sta when interface is not joined
Nathan Chancellor (3):
drm/amd/display: Reduce number of arguments of dcn30's CalculatePrefetchSchedule()
riscv: Use 64-bit variable for output in __get_user_asm
riscv: Add intermediate cast to 'unsigned long' in __get_user_asm
Paolo Abeni (1):
net: gro: fix outer network offset
Pavel Begunkov (1):
io_uring/zcrx: fix page array leak
Perry Yuan (1):
drm/amd/pm: Disable MMIO access during SMU Mode 1 reset
Peter Zijlstra (1):
sched/fair: Have SD_SERIALIZE affect newidle balancing
Peter Åstrand (1):
wifi: wlcore: ensure skb headroom before skb_push
Qiang Ma (1):
btrfs: fix Wmaybe-uninitialized warning in replay_one_buffer()
Qu Wenruo (1):
btrfs: reject new transactions if the fs is fully read-only
Radhi Bajahaw (1):
ASoC: amd: yc: Fix microphone on ASUS M6500RE
Rafael J. Wysocki (2):
platform/x86: toshiba_haps: Fix memory leaks in add/remove routines
hwmon: (acpi_power_meter) Fix deadlocks related to acpi_power_meter_notify()
Ricardo Neri (1):
platform/x86/intel/tpmi/plr: Make the file domain<n>/status writeable
Richard Fitzgerald (2):
firmware: cs_dsp: Factor out common debugfs string read
firmware: cs_dsp: rate-limit log messages in KUnit builds
Rodrigo Lugathe da Conceição Alves (1):
HID: Apply quirk HID_QUIRK_ALWAYS_POLL to Edifier QR30 (2d99:a101)
Ruslan Krupitsa (1):
ALSA: hda/realtek: add HP Laptop 15s-eq1xxx mute LED quirk
Sean Christopherson (2):
KVM: x86: Explicitly configure supported XSS from {svm,vmx}_set_cpu_caps()
KVM: Don't clobber irqfd routing type when deassigning irqfd
Sergey Senozhatsky (1):
net: usb: r8152: fix resume reset deadlock
Sergey Shtylyov (1):
ALSA: usb-audio: fix broken logic in snd_audigy2nx_led_update()
Shenghao Ding (1):
ALSA: hda/tas2781: Add newly-released HP laptop
Shengjiu Wang (1):
ASoC: simple-card-utils: Check device node before overwrite direction
Shigeru Yoshida (1):
ipv6: Fix ECMP sibling count mismatch when clearing RTF_ADDRCONF
Shuicheng Lin (1):
drm/xe/query: Fix topology query pointer advance
Siarhei Vishniakou (1):
HID: playstation: Center initial joystick axes to prevent spurious events
Steven Rostedt (1):
tracing: Fix ftrace event field alignments
Takashi Iwai (2):
ALSA: aloop: Fix racy access at PCM trigger
ALSA: usb-audio: Use the right limit for PCM OOB check
Thomas Weissschuh (1):
ARM: 9468/1: fix memset64() on big-endian
Tim Chen (1):
sched/fair: Skip sched_balance_running cmpxchg when balance is not due
Tim Guttzeit (1):
ALSA: hda/realtek: Fix headset mic for TongFang X6AR55xU
Tomas Hlavacek (1):
net: spacemit: k1-emac: fix jumbo frame support
Veerendranath Jakkam (1):
wifi: cfg80211: Fix bitrate calculation overflow for HE rates
Viacheslav Dubeyko (1):
ceph: fix NULL pointer dereference in ceph_mds_auth_match()
Vishwaroop A (1):
spi: tegra114: Preserve SPI mode bits in def_command1_reg
Werner Sembach (1):
ALSA: hda/realtek: Really fix headset mic for TongFang X6AR55xU.
Wupeng Ma (1):
ring-buffer: Avoid softlockup in ring_buffer_resize() during memory free
Xu Yang (3):
pmdomain: imx8mp-blk-ctrl: Keep gpc power domain on for system wakeup
pmdomain: imx8mp-blk-ctrl: Keep usb phy power domain on for system wakeup
pmdomain: imx8m-blk-ctrl: fix out-of-range access of bc->domains
Yao Zi (1):
wifi: iwlwifi: Implement settime64 as stub for MVM/MLD PTP
YunJe Shin (1):
nvmet-tcp: add bounds checks in nvmet_tcp_build_pdu_iovec
Zhang Lixu (2):
HID: intel-ish-hid: Update ishtp bus match to support device ID table
HID: intel-ish-hid: Reset enum_devices_done before enumeration
ZhangGuoDong (3):
smb/server: call ksmbd_session_rpc_close() on error path in create_smb2_pipe() smb/server: fix refcount leak in smb2_open()
smb/server: fix refcount leak in parse_durable_handle_context()
Zhiquan Li (1):
KVM: selftests: Add -U_FORTIFY_SOURCE to avoid some unpredictable test failures
Zilin Guan (3):
net: liquidio: Initialize netdev pointer before queue setup
net: liquidio: Fix off-by-one error in PF setup_nic_devices() cleanup
net: liquidio: Fix off-by-one error in VF setup_nic_devices() cleanup
[email protected] (1):
hwmon: (dell-smm) Add Dell G15 5510 to fan control whitelist
shechenglong (1):
block,bfq: fix aux stat accumulation destination
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 18 -SUBLEVEL = 9 +SUBLEVEL = 10 EXTRAVERSION = NAME = Baby Opossum Posse
arch/arm/include/asm/string.h +4 -1
@@ -42,7 +42,10 @@ static inline void *memset32(uint32_t *p, uint32_t v, __kernel_size_t n)extern void *__memset64 (uint64_t *,uint32_t low,__kernel_size_t ,uint32_t hi);static inline void *memset64 (uint64_t *p,uint64_t v,__kernel_size_t n) { -return __memset64 (p, v, n *8 , v >>32 ); +if (IS_ENABLED (CONFIG_CPU_LITTLE_ENDIAN )) +return __memset64 (p, v, n *8 , v >>32 ); +else +return __memset64 (p, v >>32 , n *8 , v); }/*
arch/loongarch/kernel/traps.c +5 -0
@@ -535,10 +535,15 @@ asmlinkage void noinstr do_fpe(struct pt_regs *regs, unsigned long fcsr) asmlinkage void noinstr do_ade(struct pt_regs *regs) {irqentry_state_t state =irqentry_enter (regs); +unsigned int esubcode =FIELD_GET (CSR_ESTAT_ESUBCODE , regs->csr_estat); + +if ((esubcode ==EXSUBCODE_ADEM ) &&fixup_exception (regs)) + goto out;die_if_kernel ("Kernel ade access" , regs);force_sig_fault (SIGBUS ,BUS_ADRERR , (void __user *)regs->csr_badvaddr); +out:irqentry_exit (regs, state); }
arch/loongarch/mm/cache.c +4 -4
@@ -160,8 +160,8 @@ void cpu_cache_init(void)static const pgprot_t protection_map[16 ] = { [VM_NONE ] =__pgprot (_CACHE_CC | _PAGE_USER | - _PAGE_PROTNONE | _PAGE_NO_EXEC | - _PAGE_NO_READ), + _PAGE_NO_EXEC | _PAGE_NO_READ | + (_PAGE_PROTNONE ? : _PAGE_PRESENT)), [VM_READ ] =__pgprot (_CACHE_CC | _PAGE_VALID | _PAGE_USER | _PAGE_PRESENT | _PAGE_NO_EXEC),
@@ -180,8 +180,8 @@ static const pgprot_t protection_map[16] = { [VM_EXEC | VM_WRITE | VM_READ] = __pgprot(_CACHE_CC | _PAGE_VALID | _PAGE_USER | _PAGE_PRESENT), [VM_SHARED ] =__pgprot (_CACHE_CC | _PAGE_USER | - _PAGE_PROTNONE | _PAGE_NO_EXEC | - _PAGE_NO_READ), + _PAGE_NO_EXEC | _PAGE_NO_READ | + (_PAGE_PROTNONE ? : _PAGE_PRESENT)), [VM_SHARED |VM_READ ] =__pgprot (_CACHE_CC | _PAGE_VALID | _PAGE_USER | _PAGE_PRESENT | _PAGE_NO_EXEC),
arch/riscv/include/asm/uaccess.h +12 -2
@@ -97,13 +97,23 @@ static inline unsigned long __untagged_addr_remote(struct mm_struct *mm, unsigne*/ #ifdef CONFIG_CC_HAS_ASM_GOTO_OUTPUT +/* +* Use a temporary variable for the output of the asm goto to avoid a +* triggering an LLVM assertion due to sign extending the output when +* it is used in later function calls: +* https://github.com/llvm/llvm-project/issues/143795 +*/ #define __get_user_asm (insn, x, ptr, label) \ +do { \ + u64 __tmp; \ asm_goto_output( \ "1:\n" \ " " insn " %0, %1\n" \ _ASM_EXTABLE_UACCESS_ERR(1b, %l2, %0) \ - : "=&r" (x) \ - : "m" (*(ptr)) : : label) + : "=&r" (__tmp) \ + : "m" (*(ptr)) : : label); \ + (x) = (__typeof__(x))(unsigned long)__tmp; \ +} while (0)#else /* !CONFIG_CC_HAS_ASM_GOTO_OUTPUT */ #define __get_user_asm (insn, x, ptr, label) \ do { \
arch/riscv/kernel/Makefile +8 -7
@@ -3,12 +3,6 @@ # Makefile for the RISC-V Linux kernel # -ifdef CONFIG_FTRACE -CFLAGS_REMOVE_ftrace.o = $(CC_FLAGS_FTRACE) -CFLAGS_REMOVE_patch.o = $(CC_FLAGS_FTRACE) -CFLAGS_REMOVE_sbi.o = $(CC_FLAGS_FTRACE) -CFLAGS_REMOVE_return_address.o = $(CC_FLAGS_FTRACE) -endif CFLAGS_syscall_table.o += $(call cc-disable-warning, override-init) CFLAGS_compat_syscall_table.o += $(call cc-disable-warning, override-init)
@@ -24,7 +18,6 @@ CFLAGS_sbi_ecall.o := -mcmodel=medany ifdef CONFIG_FTRACE CFLAGS_REMOVE_alternative.o = $(CC_FLAGS_FTRACE) CFLAGS_REMOVE_cpufeature.o = $(CC_FLAGS_FTRACE) -CFLAGS_REMOVE_sbi_ecall.o = $(CC_FLAGS_FTRACE) endif ifdef CONFIG_RELOCATABLE CFLAGS_alternative.o += -fno-pie
@@ -43,6 +36,14 @@ CFLAGS_sbi_ecall.o += -D__NO_FORTIFY endif endif +ifdef CONFIG_FTRACE +CFLAGS_REMOVE_ftrace.o = $(CC_FLAGS_FTRACE) +CFLAGS_REMOVE_patch.o = $(CC_FLAGS_FTRACE) +CFLAGS_REMOVE_sbi.o = $(CC_FLAGS_FTRACE) +CFLAGS_REMOVE_return_address.o = $(CC_FLAGS_FTRACE) +CFLAGS_REMOVE_sbi_ecall.o = $(CC_FLAGS_FTRACE) +endif + always-$(KBUILD_BUILTIN) += vmlinux.lds obj-y += head.o
arch/riscv/kernel/traps.c +3 -1
@@ -339,8 +339,10 @@ void do_trap_ecall_u(struct pt_regs *regs)add_random_kstack_offset (); -if (syscall >=0 && syscall < NR_syscalls) +if (syscall >=0 && syscall < NR_syscalls) { + syscall =array_index_nospec (syscall, NR_syscalls);syscall_handler (regs, syscall); + }/* * Ultimately, this value will get limited by KSTACK_OFFSET_MAX(),
arch/x86/coco/sev/Makefile +2 -0
@@ -8,3 +8,5 @@ UBSAN_SANITIZE_noinstr.o := n # GCC may fail to respect __no_sanitize_address or __no_kcsan when inlining KASAN_SANITIZE_noinstr.o := n KCSAN_SANITIZE_noinstr.o := n + +GCOV_PROFILE_noinstr.o := n
arch/x86/include/asm/kfence.h +4 -3
@@ -42,7 +42,7 @@ static inline bool kfence_protect_page(unsigned long addr, bool protect) {unsigned int level;pte_t *pte =lookup_address (addr, &level); -pteval_t val; +pteval_t val, new;if (WARN_ON (!pte || level !=PG_LEVEL_4K ))return false;
@@ -57,11 +57,12 @@ static inline bool kfence_protect_page(unsigned long addr, bool protect)return true;/* -* Otherwise, invert the entire PTE. This avoids writing out an +* Otherwise, flip the Present bit, taking care to avoid writing an * L1TF-vulnerable PTE (not present, without the high address bits * set). */ -set_pte (pte,__pte (~val)); + new = val ^ _PAGE_PRESENT; +set_pte (pte,__pte (flip_protnone_guard (val, new,PTE_PFN_MASK )));/* * If the page was protected (non-present) and we're making it
arch/x86/include/asm/vmware.h +2 -2
@@ -140,7 +140,7 @@ unsigned long vmware_hypercall3(unsigned long cmd, unsigned long in1, "b" (in1), "c" (cmd), "d" (0) - : "cc", "memory"); + : "di", "si", "cc", "memory");return out0; }
@@ -165,7 +165,7 @@ unsigned long vmware_hypercall4(unsigned long cmd, unsigned long in1, "b" (in1), "c" (cmd), "d" (0) - : "cc", "memory"); + : "di", "si", "cc", "memory");return out0; }
arch/x86/kvm/svm/svm.c +2 -0
@@ -5285,6 +5285,8 @@ static __init void svm_set_cpu_caps(void)*/ kvm_cpu_cap_clear (X86_FEATURE_BUS_LOCK_DETECT );kvm_cpu_cap_clear (X86_FEATURE_MSR_IMM ); + +kvm_setup_xss_caps (); }static __init int svm_hardware_setup (void )
arch/x86/kvm/vmx/vmx.c +2 -0
@@ -8021,6 +8021,8 @@ static __init void vmx_set_cpu_caps(void)kvm_cpu_cap_clear (X86_FEATURE_SHSTK );kvm_cpu_cap_clear (X86_FEATURE_IBT ); } + +kvm_setup_xss_caps (); } static bool vmx_is_io_intercepted(struct kvm_vcpu *vcpu,
arch/x86/kvm/x86.c +17 -13
@@ -9954,6 +9954,23 @@ static struct notifier_block pvclock_gtod_notifier = { };#endif +void kvm_setup_xss_caps (void ) +{ +if (!kvm_cpu_cap_has (X86_FEATURE_XSAVES )) + kvm_caps.supported_xss =0 ; + +if (!kvm_cpu_cap_has (X86_FEATURE_SHSTK ) && + !kvm_cpu_cap_has (X86_FEATURE_IBT )) + kvm_caps.supported_xss &= ~XFEATURE_MASK_CET_ALL ; + +if ((kvm_caps.supported_xss &XFEATURE_MASK_CET_ALL ) !=XFEATURE_MASK_CET_ALL ) { +kvm_cpu_cap_clear (X86_FEATURE_SHSTK ); +kvm_cpu_cap_clear (X86_FEATURE_IBT ); + kvm_caps.supported_xss &= ~XFEATURE_MASK_CET_ALL ; + } +} +EXPORT_SYMBOL_FOR_KVM_INTERNAL (kvm_setup_xss_caps); +static inline void kvm_ops_update (struct kvm_x86_init_ops *ops) {memcpy (&kvm_x86_ops, ops->runtime_ops,sizeof (kvm_x86_ops));
@@ -10132,19 +10149,6 @@ int kvm_x86_vendor_init(struct kvm_x86_init_ops *ops)if (!tdp_enabled) kvm_caps.supported_quirks &= ~KVM_X86_QUIRK_IGNORE_GUEST_PAT ; -if (!kvm_cpu_cap_has (X86_FEATURE_XSAVES )) - kvm_caps.supported_xss =0 ; - -if (!kvm_cpu_cap_has (X86_FEATURE_SHSTK ) && - !kvm_cpu_cap_has (X86_FEATURE_IBT )) - kvm_caps.supported_xss &= ~XFEATURE_MASK_CET_ALL ; - -if ((kvm_caps.supported_xss &XFEATURE_MASK_CET_ALL ) !=XFEATURE_MASK_CET_ALL ) { -kvm_cpu_cap_clear (X86_FEATURE_SHSTK ); -kvm_cpu_cap_clear (X86_FEATURE_IBT ); - kvm_caps.supported_xss &= ~XFEATURE_MASK_CET_ALL ; - } -if (kvm_caps.has_tsc_control) {/* * Make sure the user can only configure tsc_khz values that
arch/x86/kvm/x86.h +2 -0
@@ -457,6 +457,8 @@ extern struct kvm_host_values kvm_host;extern bool enable_pmu; +void kvm_setup_xss_caps (void ); +/* * Get a filtered version of KVM's supported XCR0 that strips out dynamic * features for which the current process doesn't (yet) have permission to use.
block/bfq-cgroup.c +1 -1
@@ -380,7 +380,7 @@ static void bfqg_stats_add_aux(struct bfqg_stats *to, struct bfqg_stats *from)blkg_rwstat_add_aux (&to->merged, &from->merged);blkg_rwstat_add_aux (&to->service_time, &from->service_time);blkg_rwstat_add_aux (&to->wait_time, &from->wait_time); -bfq_stat_add_aux (&from->time, &from->time); +bfq_stat_add_aux (&to->time, &from->time);bfq_stat_add_aux (&to->avg_queue_size_sum, &from->avg_queue_size_sum);bfq_stat_add_aux (&to->avg_queue_size_samples, &from->avg_queue_size_samples);
drivers/android/binder.c +16 -3
@@ -2991,6 +2991,10 @@ static void binder_set_txn_from_error(struct binder_transaction *t, int id,* @t: the binder transaction that failed * @data_size: the user provided data size for the transaction * @error: enum binder_driver_return_protocol returned to sender +* +* Note that t->buffer is not safe to access here, as it may have been +* released (or not yet allocated). Callers should guarantee all the +* transaction items used here are safe to access. */ static void binder_netlink_report(struct binder_proc *proc, struct binder_transaction *t,
@@ -3780,6 +3784,14 @@ static void binder_transaction(struct binder_proc *proc, goto err_dead_proc_or_thread; } }else { +/* +* Make a transaction copy. It is not safe to access 't' after +* binder_proc_transaction() reported a pending frozen. The +* target could thaw and consume the transaction at any point. +* Instead, use a safe 't_copy' for binder_netlink_report(). +*/ +struct binder_transaction t_copy = *t; +BUG_ON (target_node ==NULL );BUG_ON (t->buffer->async_transaction !=1 ); return_error =binder_proc_transaction (t, target_proc,NULL );
@@ -3790,7 +3802,7 @@ static void binder_transaction(struct binder_proc *proc,*/ if (return_error ==BR_TRANSACTION_PENDING_FROZEN ) { tcomplete->type =BINDER_WORK_TRANSACTION_PENDING ; -binder_netlink_report (proc, t, tr->data_size, +binder_netlink_report (proc, &t_copy, tr->data_size, return_error); }binder_enqueue_thread_work (thread, tcomplete);
@@ -3812,8 +3824,9 @@ static void binder_transaction(struct binder_proc *proc,return ; err_dead_proc_or_thread: -binder_txn_error ("%d:%d dead process or thread\n" , - thread->pid, proc->pid); +binder_txn_error ("%d:%d %s process or thread\n" , + proc->pid, thread->pid, + return_error ==BR_FROZEN_REPLY ?"frozen" :"dead" ); return_error_line = __LINE__;binder_dequeue_work (proc, tcomplete); err_translate_failed:
drivers/android/binder/rust_binderfs.c +4 -4
@@ -132,8 +132,8 @@ static int binderfs_binder_device_create(struct inode *ref_inode,mutex_lock (&binderfs_minors_mutex);if (++info->device_count <= info->mount_opts.max) minor =ida_alloc_max (&binderfs_minors, - use_reserve ?BINDERFS_MAX_MINOR : -BINDERFS_MAX_MINOR_CAPPED , + use_reserve ?BINDERFS_MAX_MINOR -1 : +BINDERFS_MAX_MINOR_CAPPED -1 ,GFP_KERNEL );else minor = -ENOSPC ;
@@ -416,8 +416,8 @@ static int binderfs_binder_ctl_create(struct super_block *sb)/* Reserve a new minor number for the new device. */ mutex_lock (&binderfs_minors_mutex); minor =ida_alloc_max (&binderfs_minors, - use_reserve ?BINDERFS_MAX_MINOR : -BINDERFS_MAX_MINOR_CAPPED , + use_reserve ?BINDERFS_MAX_MINOR -1 : +BINDERFS_MAX_MINOR_CAPPED -1 ,GFP_KERNEL );mutex_unlock (&binderfs_minors_mutex);if (minor <0 ) {
drivers/android/binder/thread.rs +70 -39
213 lines not on this page · raw message
drivers/android/binderfs.c +4 -4
@@ -132,8 +132,8 @@ static int binderfs_binder_device_create(struct inode *ref_inode,mutex_lock (&binderfs_minors_mutex);if (++info->device_count <= info->mount_opts.max) minor =ida_alloc_max (&binderfs_minors, - use_reserve ?BINDERFS_MAX_MINOR : -BINDERFS_MAX_MINOR_CAPPED , + use_reserve ?BINDERFS_MAX_MINOR -1 : +BINDERFS_MAX_MINOR_CAPPED -1 ,GFP_KERNEL );else minor = -ENOSPC ;
@@ -424,8 +424,8 @@ static int binderfs_binder_ctl_create(struct super_block *sb)/* Reserve a new minor number for the new device. */ mutex_lock (&binderfs_minors_mutex); minor =ida_alloc_max (&binderfs_minors, - use_reserve ?BINDERFS_MAX_MINOR : -BINDERFS_MAX_MINOR_CAPPED , + use_reserve ?BINDERFS_MAX_MINOR -1 : +BINDERFS_MAX_MINOR_CAPPED -1 ,GFP_KERNEL );mutex_unlock (&binderfs_minors_mutex);if (minor <0 ) {
drivers/base/regmap/regcache-maple.c +6 -5
@@ -95,12 +95,13 @@ static int regcache_maple_write(struct regmap *map, unsigned int reg,mas_unlock (&mas); -if (ret ==0 ) { -kfree (lower); -kfree (upper); +if (ret) { +kfree (entry); +return ret; } - -return ret; +kfree (lower); +kfree (upper); +return 0 ; } static int regcache_maple_drop(struct regmap *map, unsigned int min,
drivers/block/rbd.c +21 -12
@@ -3495,11 +3495,29 @@ static void rbd_img_object_requests(struct rbd_img_request *img_req)rbd_assert (!need_exclusive_lock (img_req) ||__rbd_is_lock_owner (rbd_dev)); -if (rbd_img_is_write (img_req)) { -rbd_assert (!img_req->snapc); +if (test_bit (IMG_REQ_CHILD , &img_req->flags)) { +rbd_assert (!rbd_img_is_write (img_req)); + }else { +struct request *rq =blk_mq_rq_from_pdu (img_req); +u64 off = (u64 )blk_rq_pos (rq) <<SECTOR_SHIFT ; +u64 len =blk_rq_bytes (rq); +u64 mapping_size; +down_read (&rbd_dev->header_rwsem); - img_req->snapc =ceph_get_snap_context (rbd_dev->header.snapc); + mapping_size = rbd_dev->mapping.size; +if (rbd_img_is_write (img_req)) { +rbd_assert (!img_req->snapc); + img_req->snapc = +ceph_get_snap_context (rbd_dev->header.snapc); + }up_read (&rbd_dev->header_rwsem); + +if (unlikely (off + len > mapping_size)) { +rbd_warn (rbd_dev,"beyond EOD (%llu~%llu > %llu)" , + off, len, mapping_size); + img_req->pending.result = -EIO ; +return ; + } }for_each_obj_request (img_req, obj_req) {
@@ -4725,7 +4743,6 @@ static void rbd_queue_workfn(struct work_struct *work)struct request *rq =blk_mq_rq_from_pdu (img_request);u64 offset = (u64 )blk_rq_pos (rq) <<SECTOR_SHIFT ;u64 length =blk_rq_bytes (rq); -u64 mapping_size;int result;/* Ignore/skip any zero-length requests */
@@ -4738,17 +4755,9 @@ static void rbd_queue_workfn(struct work_struct *work)blk_mq_start_request (rq);down_read (&rbd_dev->header_rwsem); - mapping_size = rbd_dev->mapping.size;rbd_img_capture_header (img_request);up_read (&rbd_dev->header_rwsem); -if (offset + length > mapping_size) { -rbd_warn (rbd_dev,"beyond EOD (%llu~%llu > %llu)" , offset, - length, mapping_size); - result = -EIO ; - goto err_img_request; - } -dout ("%s rbd_dev %p img_req %p %s %llu~%llu\n" , __func__, rbd_dev, img_request,obj_op_name (op_type), offset, length);
drivers/bus/mhi/host/pci_generic.c +13 -0
@@ -877,6 +877,16 @@ static const struct mhi_pci_dev_info mhi_telit_fn990b40_info = { .edl_trigger = true, }; +static const struct mhi_pci_dev_info mhi_telit_fe990b40_info = { + .name ="telit-fe990b40" , + .config = &modem_telit_fn920c04_config, + .bar_num =MHI_PCI_DEFAULT_BAR_NUM , + .dma_data_width =32 , + .sideband_wake = false, + .mru_default =32768 , + .edl_trigger = true, +}; +static const struct mhi_pci_dev_info mhi_netprisma_lcur57_info = { .name ="netprisma-lcur57" , .edl ="qcom/prog_firehose_sdx24.mbn" ,
@@ -933,6 +943,9 @@ static const struct pci_device_id mhi_pci_id_table[] = {/* Telit FN990B40 (sdx72) */ { PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0309, 0x1c5d, 0x201a), .driver_data = (kernel_ulong_t) &mhi_telit_fn990b40_info }, +/* Telit FE990B40 (sdx72) */ + { PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0309, 0x1c5d, 0x2025), + .driver_data = (kernel_ulong_t) &mhi_telit_fe990b40_info }, { PCI_DEVICE(PCI_VENDOR_ID_QCOM, 0x0309), .driver_data = (kernel_ulong_t) &mhi_qcom_sdx75_info },/* QDU100, x100-DU */
drivers/crypto/intel/qat/qat_common/adf_aer.c +0 -2
@@ -103,7 +103,6 @@ void adf_dev_restore(struct adf_accel_dev *accel_dev) accel_dev->accel_id); hw_device->reset_device (accel_dev);pci_restore_state (pdev); -pci_save_state (pdev); } }
@@ -202,7 +201,6 @@ static pci_ers_result_t adf_slot_reset(struct pci_dev *pdev)if (!pdev->is_busmaster)pci_set_master (pdev);pci_restore_state (pdev); -pci_save_state (pdev); res =adf_dev_up (accel_dev, false);if (res && res != -EALREADY )return PCI_ERS_RESULT_DISCONNECT ;
drivers/dma/ioat/init.c +0 -1
@@ -1286,7 +1286,6 @@ static pci_ers_result_t ioat_pcie_error_slot_reset(struct pci_dev *pdev) }else {pci_set_master (pdev);pci_restore_state (pdev); -pci_save_state (pdev);pci_wake_from_d3 (pdev, false); }
drivers/dma/mmp_pdma.c +6 -0
@@ -928,6 +928,7 @@ static unsigned int mmp_pdma_residue(struct mmp_pdma_chan *chan, {struct mmp_pdma_desc_sw *sw;struct mmp_pdma_device *pdev =to_mmp_pdma_dev (chan->chan.device); +unsigned long flags;u64 curr;u32 residue =0 ;bool passed = false;
@@ -945,6 +946,8 @@ static unsigned int mmp_pdma_residue(struct mmp_pdma_chan *chan,else curr = pdev->ops->read_src_addr (chan->phy); +spin_lock_irqsave (&chan->desc_lock, flags); +list_for_each_entry (sw, &chan->chain_running, node) {u64 start, end;u32 len;
@@ -989,6 +992,7 @@ static unsigned int mmp_pdma_residue(struct mmp_pdma_chan *chan,continue ;if (sw->async_tx.cookie == cookie) { +spin_unlock_irqrestore (&chan->desc_lock, flags);return residue; }else { residue =0 ;
@@ -996,6 +1000,8 @@ static unsigned int mmp_pdma_residue(struct mmp_pdma_chan *chan, } } +spin_unlock_irqrestore (&chan->desc_lock, flags); +/* We should only get here in case of cyclic transactions */ return residue; }
drivers/firmware/cirrus/cs_dsp.c +58 -24
119 lines not on this page · raw message
drivers/firmware/cirrus/cs_dsp.h new file +18 -0
@@ -0,0 +1,18 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* +* cs_dsp.h -- Private header for cs_dsp driver. +* +* Copyright (C) 2026 Cirrus Logic, Inc. and +* Cirrus Logic International Semiconductor Ltd. +*/ + +#ifndef FW_CS_DSP_H +#define FW_CS_DSP_H + +#if IS_ENABLED (CONFIG_KUNIT ) +extern bool cs_dsp_suppress_err_messages; +extern bool cs_dsp_suppress_warn_messages; +extern bool cs_dsp_suppress_info_messages; +#endif + +#endif /* ifndef FW_CS_DSP_H */
drivers/firmware/cirrus/test/cs_dsp_test_bin.c +21 -1
@@ -17,6 +17,8 @@#include <linux/random.h> #include <linux/regmap.h> +#include "../cs_dsp.h" +/* * Test method is: *
@@ -2224,7 +2226,22 @@ static int cs_dsp_bin_test_common_init(struct kunit *test, struct cs_dsp *dsp)return ret;/* Automatically call cs_dsp_remove() when test case ends */ -return kunit_add_action_or_reset (priv->test, _cs_dsp_remove_wrapper, dsp); + ret =kunit_add_action_or_reset (priv->test, _cs_dsp_remove_wrapper, dsp); +if (ret) +return ret; + +/* +* The large number of test cases will cause an unusually large amount +* of dev_info() messages from cs_dsp, so suppress these. +*/ + cs_dsp_suppress_info_messages = true; + +return 0 ; +} + +static void cs_dsp_bin_test_exit (struct kunit *test) +{ + cs_dsp_suppress_info_messages = false; }static int cs_dsp_bin_test_halo_init (struct kunit *test)
@@ -2536,18 +2553,21 @@ static struct kunit_case cs_dsp_bin_test_cases_adsp2[] = {static struct kunit_suite cs_dsp_bin_test_halo = { .name ="cs_dsp_bin_halo" , .init = cs_dsp_bin_test_halo_init, + .exit = cs_dsp_bin_test_exit, .test_cases = cs_dsp_bin_test_cases_halo, };static struct kunit_suite cs_dsp_bin_test_adsp2_32bit = { .name ="cs_dsp_bin_adsp2_32bit" , .init = cs_dsp_bin_test_adsp2_32bit_init, + .exit = cs_dsp_bin_test_exit, .test_cases = cs_dsp_bin_test_cases_adsp2, };static struct kunit_suite cs_dsp_bin_test_adsp2_16bit = { .name ="cs_dsp_bin_adsp2_16bit" , .init = cs_dsp_bin_test_adsp2_16bit_init, + .exit = cs_dsp_bin_test_exit, .test_cases = cs_dsp_bin_test_cases_adsp2, };
drivers/firmware/cirrus/test/cs_dsp_test_bin_error.c +18 -6
@@ -18,6 +18,8 @@#include <linux/string.h> #include <linux/vmalloc.h> +#include "../cs_dsp.h" + KUNIT_DEFINE_ACTION_WRAPPER(_put_device_wrapper, put_device, struct device *); KUNIT_DEFINE_ACTION_WRAPPER(_cs_dsp_remove_wrapper, cs_dsp_remove, struct cs_dsp *);
@@ -380,11 +382,9 @@ static void bin_block_payload_len_garbage(struct kunit *test)static void cs_dsp_bin_err_test_exit (struct kunit *test) { -/* -* Testing error conditions can produce a lot of log output -* from cs_dsp error messages, so rate limit the test cases. -*/ -usleep_range (200 ,500 ); + cs_dsp_suppress_err_messages = false; + cs_dsp_suppress_warn_messages = false; + cs_dsp_suppress_info_messages = false; } static int cs_dsp_bin_err_test_common_init(struct kunit *test, struct cs_dsp *dsp,
@@ -474,7 +474,19 @@ static int cs_dsp_bin_err_test_common_init(struct kunit *test, struct cs_dsp *dsreturn ret;/* Automatically call cs_dsp_remove() when test case ends */ -return kunit_add_action_or_reset (priv->test, _cs_dsp_remove_wrapper, dsp); + ret =kunit_add_action_or_reset (priv->test, _cs_dsp_remove_wrapper, dsp); +if (ret) +return ret; + +/* +* Testing error conditions can produce a lot of log output +* from cs_dsp error messages, so suppress messages. +*/ + cs_dsp_suppress_err_messages = true; + cs_dsp_suppress_warn_messages = true; + cs_dsp_suppress_info_messages = true; + +return 0 ; }static int cs_dsp_bin_err_test_halo_init (struct kunit *test)
drivers/firmware/cirrus/test/cs_dsp_test_wmfw.c +25 -1
@@ -18,6 +18,8 @@#include <linux/string.h> #include <linux/vmalloc.h> +#include "../cs_dsp.h" +/* * Test method is: *
@@ -1853,7 +1855,22 @@ static int cs_dsp_wmfw_test_common_init(struct kunit *test, struct cs_dsp *dsp,return ret;/* Automatically call cs_dsp_remove() when test case ends */ -return kunit_add_action_or_reset (priv->test, _cs_dsp_remove_wrapper, dsp); + ret =kunit_add_action_or_reset (priv->test, _cs_dsp_remove_wrapper, dsp); +if (ret) +return ret; + +/* +* The large number of test cases will cause an unusually large amount +* of dev_info() messages from cs_dsp, so suppress these. +*/ + cs_dsp_suppress_info_messages = true; + +return 0 ; +} + +static void cs_dsp_wmfw_test_exit (struct kunit *test) +{ + cs_dsp_suppress_info_messages = false; }static int cs_dsp_wmfw_test_halo_init (struct kunit *test)
@@ -2163,42 +2180,49 @@ static struct kunit_case cs_dsp_wmfw_test_cases_adsp2[] = {static struct kunit_suite cs_dsp_wmfw_test_halo = { .name ="cs_dsp_wmfwV3_halo" , .init = cs_dsp_wmfw_test_halo_init, + .exit = cs_dsp_wmfw_test_exit, .test_cases = cs_dsp_wmfw_test_cases_halo, };static struct kunit_suite cs_dsp_wmfw_test_adsp2_32bit_wmfw0 = { .name ="cs_dsp_wmfwV0_adsp2_32bit" , .init = cs_dsp_wmfw_test_adsp2_32bit_wmfw0_init, + .exit = cs_dsp_wmfw_test_exit, .test_cases = cs_dsp_wmfw_test_cases_adsp2, };static struct kunit_suite cs_dsp_wmfw_test_adsp2_32bit_wmfw1 = { .name ="cs_dsp_wmfwV1_adsp2_32bit" , .init = cs_dsp_wmfw_test_adsp2_32bit_wmfw1_init, + .exit = cs_dsp_wmfw_test_exit, .test_cases = cs_dsp_wmfw_test_cases_adsp2, };static struct kunit_suite cs_dsp_wmfw_test_adsp2_32bit_wmfw2 = { .name ="cs_dsp_wmfwV2_adsp2_32bit" , .init = cs_dsp_wmfw_test_adsp2_32bit_wmfw2_init, + .exit = cs_dsp_wmfw_test_exit, .test_cases = cs_dsp_wmfw_test_cases_adsp2, };static struct kunit_suite cs_dsp_wmfw_test_adsp2_16bit_wmfw0 = { .name ="cs_dsp_wmfwV0_adsp2_16bit" , .init = cs_dsp_wmfw_test_adsp2_16bit_wmfw0_init, + .exit = cs_dsp_wmfw_test_exit, .test_cases = cs_dsp_wmfw_test_cases_adsp2, };static struct kunit_suite cs_dsp_wmfw_test_adsp2_16bit_wmfw1 = { .name ="cs_dsp_wmfwV1_adsp2_16bit" , .init = cs_dsp_wmfw_test_adsp2_16bit_wmfw1_init, + .exit = cs_dsp_wmfw_test_exit, .test_cases = cs_dsp_wmfw_test_cases_adsp2, };static struct kunit_suite cs_dsp_wmfw_test_adsp2_16bit_wmfw2 = { .name ="cs_dsp_wmfwV2_adsp2_16bit" , .init = cs_dsp_wmfw_test_adsp2_16bit_wmfw2_init, + .exit = cs_dsp_wmfw_test_exit, .test_cases = cs_dsp_wmfw_test_cases_adsp2, };
drivers/firmware/cirrus/test/cs_dsp_test_wmfw_error.c +18 -6
@@ -18,6 +18,8 @@#include <linux/string.h> #include <linux/vmalloc.h> +#include "../cs_dsp.h" + KUNIT_DEFINE_ACTION_WRAPPER(_put_device_wrapper, put_device, struct device *); KUNIT_DEFINE_ACTION_WRAPPER(_cs_dsp_remove_wrapper, cs_dsp_remove, struct cs_dsp *);
@@ -989,11 +991,9 @@ static void wmfw_v2_coeff_description_exceeds_block(struct kunit *test)static void cs_dsp_wmfw_err_test_exit (struct kunit *test) { -/* -* Testing error conditions can produce a lot of log output -* from cs_dsp error messages, so rate limit the test cases. -*/ -usleep_range (200 ,500 ); + cs_dsp_suppress_err_messages = false; + cs_dsp_suppress_warn_messages = false; + cs_dsp_suppress_info_messages = false; } static int cs_dsp_wmfw_err_test_common_init(struct kunit *test, struct cs_dsp *dsp,
@@ -1072,7 +1072,19 @@ static int cs_dsp_wmfw_err_test_common_init(struct kunit *test, struct cs_dsp *dreturn ret;/* Automatically call cs_dsp_remove() when test case ends */ -return kunit_add_action_or_reset (priv->test, _cs_dsp_remove_wrapper, dsp); + ret =kunit_add_action_or_reset (priv->test, _cs_dsp_remove_wrapper, dsp); +if (ret) +return ret; + +/* +* Testing error conditions can produce a lot of log output +* from cs_dsp error messages, so suppress messages. +*/ + cs_dsp_suppress_err_messages = true; + cs_dsp_suppress_warn_messages = true; + cs_dsp_suppress_info_messages = true; + +return 0 ; }static int cs_dsp_wmfw_err_test_halo_init (struct kunit *test)
drivers/firmware/cirrus/test/cs_dsp_tests.c +1 -0
@@ -12,3 +12,4 @@ MODULE_AUTHOR("Richard Fitzgerald <[email protected]>");MODULE_LICENSE ("GPL" );MODULE_IMPORT_NS ("FW_CS_DSP" );MODULE_IMPORT_NS ("FW_CS_DSP_KUNIT_TEST_UTILS" ); +MODULE_IMPORT_NS ("EXPORTED_FOR_KUNIT_TESTING" );
drivers/gpio/gpio-loongson-64bit.c +1 -1
@@ -263,7 +263,7 @@ static int loongson_gpio_init_irqchip(struct platform_device *pdev, chip->irq.num_parents = data->intr_num; chip->irq.parents =devm_kcalloc (&pdev->dev, data->intr_num,sizeof (*chip->irq.parents),GFP_KERNEL ); -if (!chip->parent) +if (!chip->irq.parents)return -ENOMEM ;for (i =0 ; i < data->intr_num; i++) {
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +3 -0
@@ -5739,6 +5739,9 @@ int amdgpu_device_mode1_reset(struct amdgpu_device *adev)if (ret) goto mode1_reset_failed; +/* enable mmio access after mode 1 reset completed */ + adev->no_hw_access = false; +amdgpu_device_load_pci_state (adev->pdev); ret =amdgpu_psp_wait_for_bootloader (adev);if (ret)
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +0 -3
@@ -2334,9 +2334,6 @@ static int amdgpu_pci_probe(struct pci_dev *pdev,return -ENODEV ; } -if (amdgpu_aspm ==-1 && !pcie_aspm_enabled (pdev)) - amdgpu_aspm =0 ; -if (amdgpu_virtual_display ||amdgpu_device_asic_has_dc_support (pdev, flags &AMD_ASIC_MASK )) supports_atomic = true;
drivers/gpu/drm/amd/amdgpu/mes_v11_0.c +1 -1
@@ -1667,7 +1667,7 @@ static int mes_v11_0_hw_init(struct amdgpu_ip_block *ip_block)if (r) goto failure; -if ((adev->mes.sched_version &AMDGPU_MES_VERSION_MASK ) >=0x50 ) { +if ((adev->mes.sched_version &AMDGPU_MES_VERSION_MASK ) >=0x52 ) { r =mes_v11_0_set_hw_resources_1 (&adev->mes);if (r) {DRM_ERROR ("failed mes_v11_0_set_hw_resources_1, r=%d\n" , r);
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c +0 -11
@@ -248,8 +248,6 @@ static void amdgpu_dm_crtc_vblank_control_worker(struct work_struct *work)struct vblank_control_work *vblank_work = container_of(work, struct vblank_control_work, work);struct amdgpu_display_manager *dm = vblank_work->dm; -struct amdgpu_device *adev =drm_to_adev (dm->ddev); -int r;mutex_lock (&dm->dc_lock);
@@ -279,16 +277,7 @@ static void amdgpu_dm_crtc_vblank_control_worker(struct work_struct *work)if (dm->active_vblank_irq_count ==0 ) {dc_post_update_surfaces_to_stream (dm->dc); - - r =amdgpu_dpm_pause_power_profile (adev, true); -if (r) -dev_warn (adev->dev,"failed to set default power profile mode\n" ); -dc_allow_idle_optimizations (dm->dc, true); - - r =amdgpu_dpm_pause_power_profile (adev, false); -if (r) -dev_warn (adev->dev,"failed to restore the power profile mode\n" ); }mutex_unlock (&dm->dc_lock);
drivers/gpu/drm/amd/display/dc/dcn30/dcn30_cm_common.c +5 -2
@@ -163,6 +163,11 @@ bool cm3_helper_translate_curve_to_hw_format( hw_points += (1 << seg_distr[k]); } +// DCN3+ have 257 pts in lieu of no separate slope registers +// Prior HW had 256 base+slope pairs +// Shaper LUT (i.e. fixpoint == true) is still 256 bases and 256 deltas + hw_points = fixpoint ? (hw_points -1 ) : hw_points; + j =0 ;for (k =0 ; k < (region_end - region_start); k++) { increment =NUMBER_SW_SEGMENTS / (1 << seg_distr[k]);
@@ -223,8 +228,6 @@ bool cm3_helper_translate_curve_to_hw_format( corner_points[1 ].green.slope = dc_fixpt_zero; corner_points[1 ].blue.slope = dc_fixpt_zero; -// DCN3+ have 257 pts in lieu of no separate slope registers -// Prior HW had 256 base+slope pairs lut_params->hw_points_num = hw_points +1 ; k =0 ;
drivers/gpu/drm/amd/display/dc/dml/dcn30/display_mode_vba_30.c +73 -185
535 lines not on this page · raw message
drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c +6 -1
@@ -2922,8 +2922,13 @@ static int smu_v13_0_0_mode1_reset(struct smu_context *smu)break ; } -if (!ret) +if (!ret) { +/* disable mmio access while doing mode 1 reset*/ + smu->adev->no_hw_access = true; +/* ensure no_hw_access is globally visible before any MMIO */ +smp_mb ();msleep (SMU13_MODE1_RESET_WAIT_TIME_IN_MS ); + }return ret; }
drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_2_ppt.c +7 -2
@@ -2143,10 +2143,15 @@ static int smu_v14_0_2_mode1_reset(struct smu_context *smu) ret =smu_cmn_send_debug_smc_msg (smu, DEBUGSMC_MSG_Mode1Reset);if (!ret) { -if (amdgpu_emu_mode ==1 ) +if (amdgpu_emu_mode ==1 ) {msleep (50000 ); -else + }else { +/* disable mmio access while doing mode 1 reset*/ + smu->adev->no_hw_access = true; +/* ensure no_hw_access is globally visible before any MMIO */ +smp_mb ();msleep (1000 ); + } }return ret;
drivers/gpu/drm/mgag200/mgag200_bmc.c +12 -19
@@ -1,6 +1,7 @@// SPDX-License-Identifier: GPL-2.0-only #include <linux/delay.h> +#include <linux/iopoll.h> #include <drm/drm_atomic_helper.h> #include <drm/drm_edid.h>
@@ -12,7 +13,7 @@void mgag200_bmc_stop_scanout (struct mga_device *mdev) {u8 tmp; -int iter_max; +int ret;/* * 1 - The first step is to inform the BMC of an upcoming mode
@@ -42,30 +43,22 @@ void mgag200_bmc_stop_scanout(struct mga_device *mdev)/* * 3a- The third step is to verify if there is an active scan. -* We are waiting for a 0 on remhsyncsts <XSPAREREG<0>). +* We are waiting for a 0 on remhsyncsts (<XSPAREREG<0>). */ - iter_max =300 ; -while (!(tmp &0x1 ) && iter_max) { -WREG8 (DAC_INDEX ,MGA1064_SPAREREG ); - tmp =RREG8 (DAC_DATA ); -udelay (1000 ); - iter_max--; - } + ret =read_poll_timeout (RREG_DAC , tmp, !(tmp &0x1 ), +1000 ,300000 , false, +MGA1064_SPAREREG ); +if (ret == -ETIMEDOUT ) +return ;/* -* 3b- This step occurs only if the remove is actually +* 3b- This step occurs only if the remote BMC is actually * scanning. We are waiting for the end of the frame which is * a 1 on remvsyncsts (XSPAREREG<1>) */ -if (iter_max) { - iter_max =300 ; -while ((tmp &0x2 ) && iter_max) { -WREG8 (DAC_INDEX ,MGA1064_SPAREREG ); - tmp =RREG8 (DAC_DATA ); -udelay (1000 ); - iter_max--; - } - } + (void )read_poll_timeout (RREG_DAC , tmp, (tmp &0x2 ), +1000 ,300000 , false, +MGA1064_SPAREREG ); }void mgag200_bmc_start_scanout (struct mga_device *mdev)
drivers/gpu/drm/mgag200/mgag200_drv.h +6 -0
@@ -111,6 +111,12 @@#define DAC_INDEX 0x3c00#define DAC_DATA 0x3c0a +#define RREG_DAC (reg) \ + ({ \ + WREG8(DAC_INDEX, reg); \ + RREG8(DAC_DATA); \ + }) \ +#define WREG_DAC (reg, v) \ do { \ WREG8(DAC_INDEX, reg); \
drivers/gpu/drm/nouveau/include/nvif/client.h +1 -1
@@ -11,7 +11,7 @@ struct nvif_client {int nvif_client_ctor (struct nvif_client *parent,const char *name,struct nvif_client *);void nvif_client_dtor (struct nvif_client *); -int nvif_client_suspend (struct nvif_client *); +int nvif_client_suspend (struct nvif_client *,bool );int nvif_client_resume (struct nvif_client *);/*XXX*/
drivers/gpu/drm/nouveau/include/nvif/driver.h +1 -1
@@ -8,7 +8,7 @@ struct nvif_driver {const char *name;int (*init)(const char *name,u64 device,const char *cfg,const char *dbg,void **priv); -int (*suspend)(void *priv); +int (*suspend)(void *priv,bool runtime);int (*resume)(void *priv);int (*ioctl)(void *priv,void *data,u32 size,void **hack);void __iomem *(*map)(void *priv,u64 handle,u32 size);
drivers/gpu/drm/nouveau/include/nvkm/core/device.h +2 -1
@@ -2,6 +2,7 @@#ifndef __NVKM_DEVICE_H__#define __NVKM_DEVICE_H__#include <core/oclass.h> +#include <core/suspend_state.h> #include <core/intr.h> enum nvkm_subdev_type ;
@@ -93,7 +94,7 @@ struct nvkm_device_func {void *(*dtor)(struct nvkm_device *);int (*preinit)(struct nvkm_device *);int (*init)(struct nvkm_device *); -void (*fini)(struct nvkm_device *,bool suspend); +void (*fini)(struct nvkm_device *,enum nvkm_suspend_state suspend);int (*irq)(struct nvkm_device *);resource_size_t (*resource_addr)(struct nvkm_device *,enum nvkm_bar_id );resource_size_t (*resource_size)(struct nvkm_device *,enum nvkm_bar_id );
drivers/gpu/drm/nouveau/include/nvkm/core/engine.h +1 -1
@@ -20,7 +20,7 @@ struct nvkm_engine_func {int (*oneinit)(struct nvkm_engine *);int (*info)(struct nvkm_engine *,u64 mthd,u64 *data);int (*init)(struct nvkm_engine *); -int (*fini)(struct nvkm_engine *,bool suspend); +int (*fini)(struct nvkm_engine *,enum nvkm_suspend_state suspend);int (*reset)(struct nvkm_engine *);int (*nonstall)(struct nvkm_engine *);void (*intr)(struct nvkm_engine *);
drivers/gpu/drm/nouveau/include/nvkm/core/object.h +3 -2
@@ -2,6 +2,7 @@#ifndef __NVKM_OBJECT_H__#define __NVKM_OBJECT_H__#include <core/oclass.h> +#include <core/suspend_state.h> struct nvkm_event ;struct nvkm_gpuobj ;struct nvkm_uevent ;
@@ -27,7 +28,7 @@ enum nvkm_object_map {struct nvkm_object_func {void *(*dtor)(struct nvkm_object *);int (*init)(struct nvkm_object *); -int (*fini)(struct nvkm_object *,bool suspend); +int (*fini)(struct nvkm_object *,enum nvkm_suspend_state suspend);int (*mthd)(struct nvkm_object *,u32 mthd,void *data,u32 size);int (*ntfy)(struct nvkm_object *,u32 mthd,struct nvkm_event **); int (*map)(struct nvkm_object *, void *argv, u32 argc,
@@ -49,7 +50,7 @@ int nvkm_object_new(const struct nvkm_oclass *, void *data, u32 size,void nvkm_object_del (struct nvkm_object **);void *nvkm_object_dtor (struct nvkm_object *);int nvkm_object_init (struct nvkm_object *); -int nvkm_object_fini (struct nvkm_object *,bool suspend); +int nvkm_object_fini (struct nvkm_object *,enum nvkm_suspend_state );int nvkm_object_mthd (struct nvkm_object *,u32 mthd,void *data,u32 size);int nvkm_object_ntfy (struct nvkm_object *,u32 mthd,struct nvkm_event **); int nvkm_object_map(struct nvkm_object *, void *argv, u32 argc,
drivers/gpu/drm/nouveau/include/nvkm/core/oproxy.h +1 -1
@@ -13,7 +13,7 @@ struct nvkm_oproxy {struct nvkm_oproxy_func {void (*dtor[2 ])(struct nvkm_oproxy *);int (*init[2 ])(struct nvkm_oproxy *); -int (*fini[2 ])(struct nvkm_oproxy *,bool suspend); +int (*fini[2 ])(struct nvkm_oproxy *,enum nvkm_suspend_state suspend); }; void nvkm_oproxy_ctor(const struct nvkm_oproxy_func *,
drivers/gpu/drm/nouveau/include/nvkm/core/subdev.h +2 -2
@@ -40,7 +40,7 @@ struct nvkm_subdev_func {int (*oneinit)(struct nvkm_subdev *);int (*info)(struct nvkm_subdev *,u64 mthd,u64 *data);int (*init)(struct nvkm_subdev *); -int (*fini)(struct nvkm_subdev *,bool suspend); +int (*fini)(struct nvkm_subdev *,enum nvkm_suspend_state suspend);void (*intr)(struct nvkm_subdev *); };
@@ -65,7 +65,7 @@ void nvkm_subdev_unref(struct nvkm_subdev *);int nvkm_subdev_preinit (struct nvkm_subdev *);int nvkm_subdev_oneinit (struct nvkm_subdev *);int nvkm_subdev_init (struct nvkm_subdev *); -int nvkm_subdev_fini (struct nvkm_subdev *,bool suspend); +int nvkm_subdev_fini (struct nvkm_subdev *,enum nvkm_suspend_state suspend);int nvkm_subdev_info (struct nvkm_subdev *,u64 ,u64 *);void nvkm_subdev_intr (struct nvkm_subdev *);
drivers/gpu/drm/nouveau/include/nvkm/core/suspend_state.h new file +11 -0
@@ -0,0 +1,11 @@ +/* SPDX-License-Identifier: MIT */ +#ifndef __NVKM_SUSPEND_STATE_H__ +#define __NVKM_SUSPEND_STATE_H__ + +enum nvkm_suspend_state { +NVKM_POWEROFF , +NVKM_SUSPEND , +NVKM_RUNTIME_SUSPEND , +}; + +#endif
drivers/gpu/drm/nouveau/include/nvkm/subdev/gsp.h +6 -0
@@ -44,6 +44,9 @@ typedef void (*nvkm_gsp_event_func)(struct nvkm_gsp_event *, void *repv, u32 rep* NVKM_GSP_RPC_REPLY_NOWAIT - If specified, immediately return to the * caller after the GSP RPC command is issued. * +* NVKM_GSP_RPC_REPLY_NOSEQ - If specified, exactly like NOWAIT +* but don't emit RPC sequence number. +* * NVKM_GSP_RPC_REPLY_RECV - If specified, wait and receive the entire GSP * RPC message after the GSP RPC command is issued. *
@@ -53,6 +56,7 @@ typedef void (*nvkm_gsp_event_func)(struct nvkm_gsp_event *, void *repv, u32 rep*/ enum nvkm_gsp_rpc_reply_policy {NVKM_GSP_RPC_REPLY_NOWAIT =0 , +NVKM_GSP_RPC_REPLY_NOSEQ ,NVKM_GSP_RPC_REPLY_RECV ,NVKM_GSP_RPC_REPLY_POLL , };
@@ -242,6 +246,8 @@ struct nvkm_gsp {/* The size of the registry RPC */ size_t registry_rpc_size; +u32 rpc_seq; +#ifdef CONFIG_DEBUG_FS /* * Logging buffers in debugfs. The wrapper objects need to remain
drivers/gpu/drm/nouveau/nouveau_drm.c +1 -1
@@ -983,7 +983,7 @@ nouveau_do_suspend(struct nouveau_drm *drm, bool runtime) }NV_DEBUG (drm,"suspending object tree...\n" ); - ret =nvif_client_suspend (&drm->_client); + ret =nvif_client_suspend (&drm->_client, runtime);if (ret) goto fail_client;
drivers/gpu/drm/nouveau/nouveau_nvif.c +8 -2
@@ -62,10 +62,16 @@ nvkm_client_resume(void *priv) }static int -nvkm_client_suspend (void *priv) +nvkm_client_suspend (void *priv,bool runtime) {struct nvkm_client *client = priv; -return nvkm_object_fini (&client->object, true); +enum nvkm_suspend_state state; + +if (runtime) + state =NVKM_RUNTIME_SUSPEND ; +else + state =NVKM_SUSPEND ; +return nvkm_object_fini (&client->object, state); } static int
drivers/gpu/drm/nouveau/nvif/client.c +2 -2
@@ -30,9 +30,9 @@#include <nvif/if0000.h> int -nvif_client_suspend (struct nvif_client *client) +nvif_client_suspend (struct nvif_client *client,bool runtime) { -return client->driver->suspend (client->object.priv); +return client->driver->suspend (client->object.priv, runtime); }int
drivers/gpu/drm/nouveau/nvkm/core/engine.c +2 -2
@@ -41,7 +41,7 @@ nvkm_engine_reset(struct nvkm_engine *engine)if (engine->func->reset)return engine->func->reset (engine); -nvkm_subdev_fini (&engine->subdev, false); +nvkm_subdev_fini (&engine->subdev,NVKM_POWEROFF );return nvkm_subdev_init (&engine->subdev); }
@@ -98,7 +98,7 @@ nvkm_engine_info(struct nvkm_subdev *subdev, u64 mthd, u64 *data) }static int -nvkm_engine_fini (struct nvkm_subdev *subdev,bool suspend) +nvkm_engine_fini (struct nvkm_subdev *subdev,enum nvkm_suspend_state suspend) {struct nvkm_engine *engine =nvkm_engine (subdev);if (engine->func->fini)
drivers/gpu/drm/nouveau/nvkm/core/ioctl.c +2 -2
@@ -141,7 +141,7 @@ nvkm_ioctl_new(struct nvkm_client *client, } ret = -EEXIST ; } -nvkm_object_fini (object, false); +nvkm_object_fini (object,NVKM_POWEROFF ); }nvkm_object_del (&object);
@@ -160,7 +160,7 @@ nvkm_ioctl_del(struct nvkm_client *client,nvif_ioctl (object,"delete size %d\n" , size);if (!(ret =nvif_unvers (ret, &data, &size, args->none))) {nvif_ioctl (object,"delete\n" ); -nvkm_object_fini (object, false); +nvkm_object_fini (object,NVKM_POWEROFF );nvkm_object_del (&object); }
drivers/gpu/drm/nouveau/nvkm/core/object.c +16 -4
@@ -142,13 +142,25 @@ nvkm_object_bind(struct nvkm_object *object, struct nvkm_gpuobj *gpuobj, }int -nvkm_object_fini (struct nvkm_object *object,bool suspend) +nvkm_object_fini (struct nvkm_object *object,enum nvkm_suspend_state suspend) { -const char *action = suspend ?"suspend" :"fini" ; +const char *action;struct nvkm_object *child;s64 time;int ret; +switch (suspend) { +case NVKM_POWEROFF : +default : + action ="fini" ; +break ; +case NVKM_SUSPEND : + action ="suspend" ; +break ; +case NVKM_RUNTIME_SUSPEND : + action ="runtime" ; +break ; + }nvif_debug (object,"%s children...\n" , action); time =ktime_to_us (ktime_get ());list_for_each_entry_reverse (child, &object->tree, head) {
@@ -212,11 +224,11 @@ nvkm_object_init(struct nvkm_object *object) fail_child:list_for_each_entry_continue_reverse (child, &object->tree, head) -nvkm_object_fini (child, false); +nvkm_object_fini (child,NVKM_POWEROFF ); fail:nvif_error (object,"init failed with %d\n" , ret);if (object->func->fini) - object->func->fini (object, false); + object->func->fini (object,NVKM_POWEROFF );return ret; }
drivers/gpu/drm/nouveau/nvkm/core/oproxy.c +1 -1
@@ -87,7 +87,7 @@ nvkm_oproxy_uevent(struct nvkm_object *object, void *argv, u32 argc, }static int -nvkm_oproxy_fini (struct nvkm_object *object,bool suspend) +nvkm_oproxy_fini (struct nvkm_object *object,enum nvkm_suspend_state suspend) {struct nvkm_oproxy *oproxy =nvkm_oproxy (object);int ret;
drivers/gpu/drm/nouveau/nvkm/core/subdev.c +15 -3
@@ -51,12 +51,24 @@ nvkm_subdev_info(struct nvkm_subdev *subdev, u64 mthd, u64 *data) }int -nvkm_subdev_fini (struct nvkm_subdev *subdev,bool suspend) +nvkm_subdev_fini (struct nvkm_subdev *subdev,enum nvkm_suspend_state suspend) {struct nvkm_device *device = subdev->device; -const char *action = suspend ?"suspend" : subdev->use.enabled ?"fini" :"reset" ; +const char *action;s64 time; +switch (suspend) { +case NVKM_POWEROFF : +default : + action = subdev->use.enabled ?"fini" :"reset" ; +break ; +case NVKM_SUSPEND : + action ="suspend" ; +break ; +case NVKM_RUNTIME_SUSPEND : + action ="runtime" ; +break ; + }nvkm_trace (subdev,"%s running...\n" , action); time =ktime_to_us (ktime_get ());
@@ -186,7 +198,7 @@ void nvkm_subdev_unref(struct nvkm_subdev *subdev) {if (refcount_dec_and_mutex_lock (&subdev->use.refcount, &subdev->use.mutex)) { -nvkm_subdev_fini (subdev, false); +nvkm_subdev_fini (subdev,NVKM_POWEROFF );mutex_unlock (&subdev->use.mutex); } }
drivers/gpu/drm/nouveau/nvkm/core/uevent.c +1 -1
@@ -73,7 +73,7 @@ nvkm_uevent_mthd(struct nvkm_object *object, u32 mthd, void *argv, u32 argc) }static int -nvkm_uevent_fini (struct nvkm_object *object,bool suspend) +nvkm_uevent_fini (struct nvkm_object *object,enum nvkm_suspend_state suspend) {struct nvkm_uevent *uevent =nvkm_uevent (object);
drivers/gpu/drm/nouveau/nvkm/engine/ce/ga100.c +1 -1
@@ -46,7 +46,7 @@ ga100_ce_nonstall(struct nvkm_engine *engine) }int -ga100_ce_fini (struct nvkm_engine *engine,bool suspend) +ga100_ce_fini (struct nvkm_engine *engine,enum nvkm_suspend_state suspend) {nvkm_inth_block (&engine->subdev.inth);return 0 ;
drivers/gpu/drm/nouveau/nvkm/engine/ce/priv.h +1 -1
@@ -14,7 +14,7 @@ extern const struct nvkm_object_func gv100_ce_cclass;int ga100_ce_oneinit (struct nvkm_engine *);int ga100_ce_init (struct nvkm_engine *); -int ga100_ce_fini (struct nvkm_engine *,bool ); +int ga100_ce_fini (struct nvkm_engine *,enum nvkm_suspend_state );int ga100_ce_nonstall (struct nvkm_engine *);u32 gb202_ce_grce_mask (struct nvkm_device *);
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c +17 -5
@@ -2935,13 +2935,25 @@ nvkm_device_engine(struct nvkm_device *device, int type, int inst) }int -nvkm_device_fini (struct nvkm_device *device,bool suspend) +nvkm_device_fini (struct nvkm_device *device,enum nvkm_suspend_state suspend) { -const char *action = suspend ?"suspend" :"fini" ; +const char *action;struct nvkm_subdev *subdev;int ret;s64 time; +switch (suspend) { +case NVKM_POWEROFF : +default : + action ="fini" ; +break ; +case NVKM_SUSPEND : + action ="suspend" ; +break ; +case NVKM_RUNTIME_SUSPEND : + action ="runtime" ; +break ; + }nvdev_trace (device,"%s running...\n" , action); time =ktime_to_us (ktime_get ());
@@ -3031,7 +3043,7 @@ nvkm_device_init(struct nvkm_device *device)if (ret)return ret; -nvkm_device_fini (device, false); +nvkm_device_fini (device,NVKM_POWEROFF );nvdev_trace (device,"init running...\n" ); time =ktime_to_us (ktime_get ());
@@ -3059,9 +3071,9 @@ nvkm_device_init(struct nvkm_device *device) fail_subdev:list_for_each_entry_from (subdev, &device->subdev, head) -nvkm_subdev_fini (subdev, false); +nvkm_subdev_fini (subdev,NVKM_POWEROFF ); fail: -nvkm_device_fini (device, false); +nvkm_device_fini (device,NVKM_POWEROFF );nvdev_error (device,"init failed with %d\n" , ret);return ret;
drivers/gpu/drm/nouveau/nvkm/engine/device/pci.c +2 -2
@@ -1605,10 +1605,10 @@ nvkm_device_pci_irq(struct nvkm_device *device) }static void -nvkm_device_pci_fini (struct nvkm_device *device,bool suspend) +nvkm_device_pci_fini (struct nvkm_device *device,enum nvkm_suspend_state suspend) {struct nvkm_device_pci *pdev =nvkm_device_pci (device); -if (suspend) { +if (suspend !=NVKM_POWEROFF ) {pci_disable_device (pdev->pdev); pdev->suspend = true; }
drivers/gpu/drm/nouveau/nvkm/engine/device/priv.h +1 -1
@@ -56,5 +56,5 @@ int nvkm_device_ctor(const struct nvkm_device_func *, const char *name, const char *cfg, const char *dbg, struct nvkm_device *);int nvkm_device_init (struct nvkm_device *); -int nvkm_device_fini (struct nvkm_device *,bool suspend); +int nvkm_device_fini (struct nvkm_device *,enum nvkm_suspend_state suspend);#endif
drivers/gpu/drm/nouveau/nvkm/engine/device/user.c +1 -1
@@ -218,7 +218,7 @@ nvkm_udevice_map(struct nvkm_object *object, void *argv, u32 argc, }static int -nvkm_udevice_fini (struct nvkm_object *object,bool suspend) +nvkm_udevice_fini (struct nvkm_object *object,enum nvkm_suspend_state suspend) {struct nvkm_udevice *udev =nvkm_udevice (object);struct nvkm_device *device = udev->device;
drivers/gpu/drm/nouveau/nvkm/engine/disp/base.c +2 -2
@@ -99,13 +99,13 @@ nvkm_disp_intr(struct nvkm_engine *engine) }static int -nvkm_disp_fini (struct nvkm_engine *engine,bool suspend) +nvkm_disp_fini (struct nvkm_engine *engine,enum nvkm_suspend_state suspend) {struct nvkm_disp *disp =nvkm_disp (engine);struct nvkm_outp *outp;if (disp->func->fini) - disp->func->fini (disp, suspend); + disp->func->fini (disp, suspend !=NVKM_POWEROFF );list_for_each_entry (outp, &disp->outps, head) {if (outp->func->fini)
drivers/gpu/drm/nouveau/nvkm/engine/disp/chan.c +1 -1
@@ -128,7 +128,7 @@ nvkm_disp_chan_child_get(struct nvkm_object *object, int index, struct nvkm_ocla }static int -nvkm_disp_chan_fini (struct nvkm_object *object,bool suspend) +nvkm_disp_chan_fini (struct nvkm_object *object,enum nvkm_suspend_state suspend) {struct nvkm_disp_chan *chan =nvkm_disp_chan (object);
drivers/gpu/drm/nouveau/nvkm/engine/falcon.c +2 -2
@@ -93,13 +93,13 @@ nvkm_falcon_intr(struct nvkm_engine *engine) }static int -nvkm_falcon_fini (struct nvkm_engine *engine,bool suspend) +nvkm_falcon_fini (struct nvkm_engine *engine,enum nvkm_suspend_state suspend) {struct nvkm_falcon *falcon =nvkm_falcon (engine);struct nvkm_device *device = falcon->engine.subdev.device;const u32 base = falcon->addr; -if (!suspend) { +if (suspend ==NVKM_POWEROFF ) {nvkm_memory_unref (&falcon->core);if (falcon->external) {vfree (falcon->data.data);
drivers/gpu/drm/nouveau/nvkm/engine/fifo/base.c +1 -1
@@ -122,7 +122,7 @@ nvkm_fifo_class_get(struct nvkm_oclass *oclass, int index, const struct nvkm_dev }static int -nvkm_fifo_fini (struct nvkm_engine *engine,bool suspend) +nvkm_fifo_fini (struct nvkm_engine *engine,enum nvkm_suspend_state suspend) {struct nvkm_fifo *fifo =nvkm_fifo (engine);struct nvkm_runl *runl;
drivers/gpu/drm/nouveau/nvkm/engine/fifo/uchan.c +3 -3
@@ -72,7 +72,7 @@ struct nvkm_uobj { };static int -nvkm_uchan_object_fini_1 (struct nvkm_oproxy *oproxy,bool suspend) +nvkm_uchan_object_fini_1 (struct nvkm_oproxy *oproxy,enum nvkm_suspend_state suspend) {struct nvkm_uobj *uobj =container_of (oproxy,typeof (*uobj), oproxy);struct nvkm_chan *chan = uobj->chan;
@@ -87,7 +87,7 @@ nvkm_uchan_object_fini_1(struct nvkm_oproxy *oproxy, bool suspend)nvkm_chan_cctx_bind (chan, ectx->engn,NULL );if (refcount_dec_and_test (&ectx->uses)) -nvkm_object_fini (ectx->object, false); +nvkm_object_fini (ectx->object,NVKM_POWEROFF );mutex_unlock (&chan->cgrp->mutex); }
@@ -269,7 +269,7 @@ nvkm_uchan_map(struct nvkm_object *object, void *argv, u32 argc, }static int -nvkm_uchan_fini (struct nvkm_object *object,bool suspend) +nvkm_uchan_fini (struct nvkm_object *object,enum nvkm_suspend_state suspend) {struct nvkm_chan *chan =nvkm_uchan (object)->chan;
drivers/gpu/drm/nouveau/nvkm/engine/gr/base.c +2 -2
@@ -168,11 +168,11 @@ nvkm_gr_init(struct nvkm_engine *engine) }static int -nvkm_gr_fini (struct nvkm_engine *engine,bool suspend) +nvkm_gr_fini (struct nvkm_engine *engine,enum nvkm_suspend_state suspend) {struct nvkm_gr *gr =nvkm_gr (engine);if (gr->func->fini) -return gr->func->fini (gr, suspend); +return gr->func->fini (gr, suspend !=NVKM_POWEROFF );return 0 ; }
drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c +1 -1
@@ -2330,7 +2330,7 @@ gf100_gr_reset(struct nvkm_gr *base)WARN_ON (gf100_gr_fecs_halt_pipeline (gr)); - subdev->func->fini (subdev, false); + subdev->func->fini (subdev,NVKM_POWEROFF );nvkm_mc_disable (device, subdev->type, subdev->inst);if (gr->func->gpccs.reset) gr->func->gpccs.reset (gr);
drivers/gpu/drm/nouveau/nvkm/engine/gr/nv04.c +1 -1
@@ -1158,7 +1158,7 @@ nv04_gr_chan_dtor(struct nvkm_object *object) }static int -nv04_gr_chan_fini (struct nvkm_object *object,bool suspend) +nv04_gr_chan_fini (struct nvkm_object *object,enum nvkm_suspend_state suspend) {struct nv04_gr_chan *chan =nv04_gr_chan (object);struct nv04_gr *gr = chan->gr;
drivers/gpu/drm/nouveau/nvkm/engine/gr/nv10.c +1 -1
@@ -951,7 +951,7 @@ nv10_gr_context_switch(struct nv10_gr *gr) }static int -nv10_gr_chan_fini (struct nvkm_object *object,bool suspend) +nv10_gr_chan_fini (struct nvkm_object *object,enum nvkm_suspend_state suspend) {struct nv10_gr_chan *chan =nv10_gr_chan (object);struct nv10_gr *gr = chan->gr;
drivers/gpu/drm/nouveau/nvkm/engine/gr/nv20.c +1 -1
@@ -27,7 +27,7 @@ nv20_gr_chan_init(struct nvkm_object *object) }int -nv20_gr_chan_fini (struct nvkm_object *object,bool suspend) +nv20_gr_chan_fini (struct nvkm_object *object,enum nvkm_suspend_state suspend) {struct nv20_gr_chan *chan =nv20_gr_chan (object);struct nv20_gr *gr = chan->gr;
drivers/gpu/drm/nouveau/nvkm/engine/gr/nv20.h +1 -1
@@ -31,5 +31,5 @@ struct nv20_gr_chan {void *nv20_gr_chan_dtor (struct nvkm_object *);int nv20_gr_chan_init (struct nvkm_object *); -int nv20_gr_chan_fini (struct nvkm_object *,bool ); +int nv20_gr_chan_fini (struct nvkm_object *,enum nvkm_suspend_state );#endif
drivers/gpu/drm/nouveau/nvkm/engine/gr/nv40.c +2 -2
@@ -89,7 +89,7 @@ nv40_gr_chan_bind(struct nvkm_object *object, struct nvkm_gpuobj *parent, }static int -nv40_gr_chan_fini (struct nvkm_object *object,bool suspend) +nv40_gr_chan_fini (struct nvkm_object *object,enum nvkm_suspend_state suspend) {struct nv40_gr_chan *chan =nv40_gr_chan (object);struct nv40_gr *gr = chan->gr;
@@ -101,7 +101,7 @@ nv40_gr_chan_fini(struct nvkm_object *object, bool suspend)nvkm_mask (device,0x400720 ,0x00000001 ,0x00000000 );if (nvkm_rd32 (device,0x40032c ) == inst) { -if (suspend) { +if (suspend !=NVKM_POWEROFF ) {nvkm_wr32 (device,0x400720 ,0x00000000 );nvkm_wr32 (device,0x400784 , inst);nvkm_mask (device,0x400310 ,0x00000020 ,0x00000020 );
drivers/gpu/drm/nouveau/nvkm/engine/mpeg/nv44.c +1 -1
@@ -65,7 +65,7 @@ nv44_mpeg_chan_bind(struct nvkm_object *object, struct nvkm_gpuobj *parent, }static int -nv44_mpeg_chan_fini (struct nvkm_object *object,bool suspend) +nv44_mpeg_chan_fini (struct nvkm_object *object,enum nvkm_suspend_state suspend) {struct nv44_mpeg_chan *chan =nv44_mpeg_chan (object);
drivers/gpu/drm/nouveau/nvkm/engine/sec2/base.c +1 -1
@@ -37,7 +37,7 @@ nvkm_sec2_finimsg(void *priv, struct nvfw_falcon_msg *hdr) }static int -nvkm_sec2_fini (struct nvkm_engine *engine,bool suspend) +nvkm_sec2_fini (struct nvkm_engine *engine,enum nvkm_suspend_state suspend) {struct nvkm_sec2 *sec2 =nvkm_sec2 (engine);struct nvkm_subdev *subdev = &sec2->engine.subdev;
drivers/gpu/drm/nouveau/nvkm/engine/xtensa.c +2 -2
@@ -76,7 +76,7 @@ nvkm_xtensa_intr(struct nvkm_engine *engine) }static int -nvkm_xtensa_fini (struct nvkm_engine *engine,bool suspend) +nvkm_xtensa_fini (struct nvkm_engine *engine,enum nvkm_suspend_state suspend) {struct nvkm_xtensa *xtensa =nvkm_xtensa (engine);struct nvkm_device *device = xtensa->engine.subdev.device;
@@ -85,7 +85,7 @@ nvkm_xtensa_fini(struct nvkm_engine *engine, bool suspend)nvkm_wr32 (device, base +0xd84 ,0 );/* INTR_EN */ nvkm_wr32 (device, base +0xd94 ,0 );/* FIFO_CTRL */ -if (!suspend) +if (suspend ==NVKM_POWEROFF )nvkm_memory_unref (&xtensa->gpu_fw);return 0 ; }
drivers/gpu/drm/nouveau/nvkm/subdev/acr/base.c +1 -1
@@ -182,7 +182,7 @@ nvkm_acr_managed_falcon(struct nvkm_device *device, enum nvkm_acr_lsf_id id) }static int -nvkm_acr_fini (struct nvkm_subdev *subdev,bool suspend) +nvkm_acr_fini (struct nvkm_subdev *subdev,enum nvkm_suspend_state suspend) {if (!subdev->use.enabled)return 0 ;
drivers/gpu/drm/nouveau/nvkm/subdev/bar/base.c +1 -1
@@ -90,7 +90,7 @@ nvkm_bar_bar2_init(struct nvkm_device *device) }static int -nvkm_bar_fini (struct nvkm_subdev *subdev,bool suspend) +nvkm_bar_fini (struct nvkm_subdev *subdev,enum nvkm_suspend_state suspend) {struct nvkm_bar *bar =nvkm_bar (subdev);
drivers/gpu/drm/nouveau/nvkm/subdev/clk/base.c +1 -1
@@ -577,7 +577,7 @@ nvkm_clk_read(struct nvkm_clk *clk, enum nv_clk_src src) }static int -nvkm_clk_fini (struct nvkm_subdev *subdev,bool suspend) +nvkm_clk_fini (struct nvkm_subdev *subdev,enum nvkm_suspend_state suspend) {struct nvkm_clk *clk =nvkm_clk (subdev);flush_work (&clk->work);
drivers/gpu/drm/nouveau/nvkm/subdev/devinit/base.c +2 -2
@@ -67,11 +67,11 @@ nvkm_devinit_post(struct nvkm_devinit *init) }static int -nvkm_devinit_fini (struct nvkm_subdev *subdev,bool suspend) +nvkm_devinit_fini (struct nvkm_subdev *subdev,enum nvkm_suspend_state suspend) {struct nvkm_devinit *init =nvkm_devinit (subdev);/* force full reinit on resume */ -if (suspend) +if (suspend !=NVKM_POWEROFF ) init->post = true;return 0 ; }
drivers/gpu/drm/nouveau/nvkm/subdev/fault/base.c +1 -1
@@ -51,7 +51,7 @@ nvkm_fault_intr(struct nvkm_subdev *subdev) }static int -nvkm_fault_fini (struct nvkm_subdev *subdev,bool suspend) +nvkm_fault_fini (struct nvkm_subdev *subdev,enum nvkm_suspend_state suspend) {struct nvkm_fault *fault =nvkm_fault (subdev);if (fault->func->fini)
drivers/gpu/drm/nouveau/nvkm/subdev/fault/user.c +1 -1
@@ -56,7 +56,7 @@ nvkm_ufault_map(struct nvkm_object *object, void *argv, u32 argc, }static int -nvkm_ufault_fini (struct nvkm_object *object,bool suspend) +nvkm_ufault_fini (struct nvkm_object *object,enum nvkm_suspend_state suspend) {struct nvkm_fault_buffer *buffer =nvkm_fault_buffer (object); buffer->fault->func->buffer.fini (buffer);
drivers/gpu/drm/nouveau/nvkm/subdev/gpio/base.c +1 -1
@@ -144,7 +144,7 @@ nvkm_gpio_intr(struct nvkm_subdev *subdev) }static int -nvkm_gpio_fini (struct nvkm_subdev *subdev,bool suspend) +nvkm_gpio_fini (struct nvkm_subdev *subdev,enum nvkm_suspend_state suspend) {struct nvkm_gpio *gpio =nvkm_gpio (subdev);u32 mask = (1ULL << gpio->func->lines) -1 ;
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/base.c +1 -1
@@ -48,7 +48,7 @@ nvkm_gsp_intr_stall(struct nvkm_gsp *gsp, enum nvkm_subdev_type type, int inst) }static int -nvkm_gsp_fini (struct nvkm_subdev *subdev,bool suspend) +nvkm_gsp_fini (struct nvkm_subdev *subdev,enum nvkm_suspend_state suspend) {struct nvkm_gsp *gsp =nvkm_gsp (subdev);
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/gh100.c +1 -1
@@ -17,7 +17,7 @@#include <nvhw/ref/gh100/dev_riscv_pri.h> int -gh100_gsp_fini (struct nvkm_gsp *gsp,bool suspend) +gh100_gsp_fini (struct nvkm_gsp *gsp,enum nvkm_suspend_state suspend) {struct nvkm_falcon *falcon = &gsp->falcon;int ret, time =4000 ;
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/priv.h +4 -4
@@ -59,7 +59,7 @@ struct nvkm_gsp_func {void (*dtor)(struct nvkm_gsp *);int (*oneinit)(struct nvkm_gsp *);int (*init)(struct nvkm_gsp *); -int (*fini)(struct nvkm_gsp *,bool suspend); +int (*fini)(struct nvkm_gsp *,enum nvkm_suspend_state suspend);int (*reset)(struct nvkm_gsp *);struct {
@@ -75,7 +75,7 @@ int tu102_gsp_fwsec_sb_ctor(struct nvkm_gsp *);void tu102_gsp_fwsec_sb_dtor (struct nvkm_gsp *);int tu102_gsp_oneinit (struct nvkm_gsp *);int tu102_gsp_init (struct nvkm_gsp *); -int tu102_gsp_fini (struct nvkm_gsp *,bool suspend); +int tu102_gsp_fini (struct nvkm_gsp *,enum nvkm_suspend_state suspend);int tu102_gsp_reset (struct nvkm_gsp *);u64 tu102_gsp_wpr_heap_size (struct nvkm_gsp *);
@@ -87,12 +87,12 @@ int ga102_gsp_reset(struct nvkm_gsp *);int gh100_gsp_oneinit (struct nvkm_gsp *);int gh100_gsp_init (struct nvkm_gsp *); -int gh100_gsp_fini (struct nvkm_gsp *,bool suspend); +int gh100_gsp_fini (struct nvkm_gsp *,enum nvkm_suspend_state suspend);void r535_gsp_dtor (struct nvkm_gsp *);int r535_gsp_oneinit (struct nvkm_gsp *);int r535_gsp_init (struct nvkm_gsp *); -int r535_gsp_fini (struct nvkm_gsp *,bool suspend); +int r535_gsp_fini (struct nvkm_gsp *,enum nvkm_suspend_state suspend);int nvkm_gsp_new_ (const struct nvkm_gsp_fwif *,struct nvkm_device *,enum nvkm_subdev_type ,int ,struct nvkm_gsp **);
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/fbsr.c +1 -1
@@ -208,7 +208,7 @@ r535_fbsr_resume(struct nvkm_gsp *gsp) }static int -r535_fbsr_suspend (struct nvkm_gsp *gsp) +r535_fbsr_suspend (struct nvkm_gsp *gsp,bool runtime) {struct nvkm_subdev *subdev = &gsp->subdev;struct nvkm_device *device = subdev->device;
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gsp.c +4 -4
@@ -704,7 +704,7 @@ r535_gsp_rpc_set_registry(struct nvkm_gsp *gsp)build_registry (gsp, rpc); -return nvkm_gsp_rpc_wr (gsp, rpc,NVKM_GSP_RPC_REPLY_NOWAIT ); +return nvkm_gsp_rpc_wr (gsp, rpc,NVKM_GSP_RPC_REPLY_NOSEQ ); fail:clean_registry (gsp);
@@ -921,7 +921,7 @@ r535_gsp_set_system_info(struct nvkm_gsp *gsp) info->pciConfigMirrorSize = device->pci->func->cfg.size;r535_gsp_acpi_info (gsp, &info->acpiMethodData); -return nvkm_gsp_rpc_wr (gsp, info,NVKM_GSP_RPC_REPLY_NOWAIT ); +return nvkm_gsp_rpc_wr (gsp, info,NVKM_GSP_RPC_REPLY_NOSEQ ); } static int
@@ -1721,7 +1721,7 @@ r535_gsp_sr_data_size(struct nvkm_gsp *gsp) }int -r535_gsp_fini (struct nvkm_gsp *gsp,bool suspend) +r535_gsp_fini (struct nvkm_gsp *gsp,enum nvkm_suspend_state suspend) {struct nvkm_rm *rm = gsp->rm;int ret;
@@ -1748,7 +1748,7 @@ r535_gsp_fini(struct nvkm_gsp *gsp, bool suspend) sr->sysmemAddrOfSuspendResumeData = gsp->sr.radix3.lvl0.addr; sr->sizeOfSuspendResumeData = len; - ret = rm->api->fbsr->suspend (gsp); + ret = rm->api->fbsr->suspend (gsp, suspend ==NVKM_RUNTIME_SUSPEND );if (ret) {nvkm_gsp_mem_dtor (&gsp->sr.meta);nvkm_gsp_radix3_dtor (gsp, &gsp->sr.radix3);
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/rpc.c +6 -0
@@ -557,6 +557,7 @@ r535_gsp_rpc_handle_reply(struct nvkm_gsp *gsp, u32 fn,switch (policy) {case NVKM_GSP_RPC_REPLY_NOWAIT : +case NVKM_GSP_RPC_REPLY_NOSEQ :break ;case NVKM_GSP_RPC_REPLY_RECV : reply =r535_gsp_msg_recv (gsp, fn, gsp_rpc_len);
@@ -588,6 +589,11 @@ r535_gsp_rpc_send(struct nvkm_gsp *gsp, void *payload, rpc->data, rpc->length - sizeof(*rpc), true); } +if (policy ==NVKM_GSP_RPC_REPLY_NOSEQ ) + rpc->sequence =0 ; +else + rpc->sequence = gsp->rpc_seq++; + ret =r535_gsp_cmdq_push (gsp, rpc);if (ret)return ERR_PTR (ret);
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/fbsr.c +4 -4
@@ -62,7 +62,7 @@ r570_fbsr_resume(struct nvkm_gsp *gsp) }static int -r570_fbsr_init (struct nvkm_gsp *gsp,struct sg_table *sgt,u64 size) +r570_fbsr_init (struct nvkm_gsp *gsp,struct sg_table *sgt,u64 size,bool runtime) {NV2080_CTRL_INTERNAL_FBSR_INIT_PARAMS *ctrl;struct nvkm_gsp_object memlist;
@@ -81,7 +81,7 @@ r570_fbsr_init(struct nvkm_gsp *gsp, struct sg_table *sgt, u64 size) ctrl->hClient = gsp->internal.client.object.handle; ctrl->hSysMem = memlist.handle; ctrl->sysmemAddrOfSuspendResumeData = gsp->sr.meta.addr; - ctrl->bEnteringGcoffState =1 ; + ctrl->bEnteringGcoffState = runtime ?1 :0 ; ret =nvkm_gsp_rm_ctrl_wr (&gsp->internal.device.subdevice, ctrl);if (ret)
@@ -92,7 +92,7 @@ r570_fbsr_init(struct nvkm_gsp *gsp, struct sg_table *sgt, u64 size) }static int -r570_fbsr_suspend (struct nvkm_gsp *gsp) +r570_fbsr_suspend (struct nvkm_gsp *gsp,bool runtime) {struct nvkm_subdev *subdev = &gsp->subdev;struct nvkm_device *device = subdev->device;
@@ -133,7 +133,7 @@ r570_fbsr_suspend(struct nvkm_gsp *gsp)return ret;/* Initialise FBSR on RM. */ - ret =r570_fbsr_init (gsp, &gsp->sr.fbsr, size); + ret =r570_fbsr_init (gsp, &gsp->sr.fbsr, size, runtime);if (ret) {nvkm_gsp_sg_free (device, &gsp->sr.fbsr);return ret;
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/gsp.c +1 -1
@@ -176,7 +176,7 @@ r570_gsp_set_system_info(struct nvkm_gsp *gsp) info->bIsPrimary =video_is_primary_device (device->dev); info->bPreserveVideoMemoryAllocations = false; -return nvkm_gsp_rpc_wr (gsp, info,NVKM_GSP_RPC_REPLY_NOWAIT ); +return nvkm_gsp_rpc_wr (gsp, info,NVKM_GSP_RPC_REPLY_NOSEQ ); } static void
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/rm.h +1 -1
@@ -78,7 +78,7 @@ struct nvkm_rm_api { } *device;const struct nvkm_rm_api_fbsr { -int (*suspend)(struct nvkm_gsp *); +int (*suspend)(struct nvkm_gsp *,bool runtime);void (*resume)(struct nvkm_gsp *); } *fbsr;
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/tu102.c +1 -1
@@ -161,7 +161,7 @@ tu102_gsp_reset(struct nvkm_gsp *gsp) }int -tu102_gsp_fini (struct nvkm_gsp *gsp,bool suspend) +tu102_gsp_fini (struct nvkm_gsp *gsp,enum nvkm_suspend_state suspend) {u32 mbox0 =0xff , mbox1 =0xff ;int ret;
drivers/gpu/drm/nouveau/nvkm/subdev/i2c/base.c +1 -1
@@ -135,7 +135,7 @@ nvkm_i2c_intr(struct nvkm_subdev *subdev) }static int -nvkm_i2c_fini (struct nvkm_subdev *subdev,bool suspend) +nvkm_i2c_fini (struct nvkm_subdev *subdev,enum nvkm_suspend_state suspend) {struct nvkm_i2c *i2c =nvkm_i2c (subdev);struct nvkm_i2c_pad *pad;
drivers/gpu/drm/nouveau/nvkm/subdev/instmem/base.c +1 -1
@@ -176,7 +176,7 @@ nvkm_instmem_boot(struct nvkm_instmem *imem) }static int -nvkm_instmem_fini (struct nvkm_subdev *subdev,bool suspend) +nvkm_instmem_fini (struct nvkm_subdev *subdev,enum nvkm_suspend_state suspend) {struct nvkm_instmem *imem =nvkm_instmem (subdev);int ret;
drivers/gpu/drm/nouveau/nvkm/subdev/pci/base.c +1 -1
@@ -74,7 +74,7 @@ nvkm_pci_rom_shadow(struct nvkm_pci *pci, bool shadow) }static int -nvkm_pci_fini (struct nvkm_subdev *subdev,bool suspend) +nvkm_pci_fini (struct nvkm_subdev *subdev,enum nvkm_suspend_state suspend) {struct nvkm_pci *pci =nvkm_pci (subdev);
drivers/gpu/drm/nouveau/nvkm/subdev/pmu/base.c +1 -1
@@ -77,7 +77,7 @@ nvkm_pmu_intr(struct nvkm_subdev *subdev) }static int -nvkm_pmu_fini (struct nvkm_subdev *subdev,bool suspend) +nvkm_pmu_fini (struct nvkm_subdev *subdev,enum nvkm_suspend_state suspend) {struct nvkm_pmu *pmu =nvkm_pmu (subdev);
drivers/gpu/drm/nouveau/nvkm/subdev/therm/base.c +3 -3
@@ -341,15 +341,15 @@ nvkm_therm_intr(struct nvkm_subdev *subdev) }static int -nvkm_therm_fini (struct nvkm_subdev *subdev,bool suspend) +nvkm_therm_fini (struct nvkm_subdev *subdev,enum nvkm_suspend_state suspend) {struct nvkm_therm *therm =nvkm_therm (subdev);if (therm->func->fini) therm->func->fini (therm); -nvkm_therm_fan_fini (therm, suspend); -nvkm_therm_sensor_fini (therm, suspend); +nvkm_therm_fan_fini (therm, suspend !=NVKM_POWEROFF ); +nvkm_therm_sensor_fini (therm, suspend !=NVKM_POWEROFF );if (suspend) { therm->suspend = therm->mode;
drivers/gpu/drm/nouveau/nvkm/subdev/timer/base.c +1 -1
@@ -149,7 +149,7 @@ nvkm_timer_intr(struct nvkm_subdev *subdev) }static int -nvkm_timer_fini (struct nvkm_subdev *subdev,bool suspend) +nvkm_timer_fini (struct nvkm_subdev *subdev,enum nvkm_suspend_state suspend) {struct nvkm_timer *tmr =nvkm_timer (subdev); tmr->func->alarm_fini (tmr);
drivers/gpu/drm/xe/xe_guc.c +4 -2
@@ -1632,7 +1632,7 @@ int xe_guc_start(struct xe_guc *guc)return xe_guc_submit_start (guc); } -void xe_guc_print_info (struct xe_guc *guc,struct drm_printer *p) +int xe_guc_print_info (struct xe_guc *guc,struct drm_printer *p) {struct xe_gt *gt =guc_to_gt (guc);unsigned int fw_ref;
@@ -1644,7 +1644,7 @@ void xe_guc_print_info(struct xe_guc *guc, struct drm_printer *p)if (!IS_SRIOV_VF (gt_to_xe (gt))) { fw_ref =xe_force_wake_get (gt_to_fw (gt),XE_FW_GT );if (!fw_ref) -return ; +return -EIO ; status =xe_mmio_read32 (>->mmio,GUC_STATUS );
@@ -1672,6 +1672,8 @@ void xe_guc_print_info(struct xe_guc *guc, struct drm_printer *p)drm_puts (p,"\n" );xe_guc_submit_print (guc, p); + +return 0 ; }/**
drivers/gpu/drm/xe/xe_guc.h +1 -1
@@ -45,7 +45,7 @@ int xe_guc_self_cfg32(struct xe_guc *guc, u16 key, u32 val);int xe_guc_self_cfg64 (struct xe_guc *guc,u16 key,u64 val);void xe_guc_irq_handler (struct xe_guc *guc,const u16 iir);void xe_guc_sanitize (struct xe_guc *guc); -void xe_guc_print_info (struct xe_guc *guc,struct drm_printer *p); +int xe_guc_print_info (struct xe_guc *guc,struct drm_printer *p);int xe_guc_reset_prepare (struct xe_guc *guc);void xe_guc_reset_wait (struct xe_guc *guc);void xe_guc_stop_prepare (struct xe_guc *guc);
drivers/gpu/drm/xe/xe_pm.c +10 -3
@@ -8,6 +8,7 @@#include <linux/fault-inject.h> #include <linux/pm_runtime.h> #include <linux/suspend.h> +#include <linux/dmi.h> #include <drm/drm_managed.h> #include <drm/ttm/ttm_placement.h>
@@ -300,9 +301,15 @@ ALLOW_ERROR_INJECTION(xe_pm_init_early, ERRNO); /* See xe_pci_probe() */static u32 vram_threshold_value (struct xe_device *xe) { -/* FIXME: D3Cold temporarily disabled by default on BMG */ -if (xe->info.platform ==XE_BATTLEMAGE ) -return 0 ; +if (xe->info.platform ==XE_BATTLEMAGE ) { +const char *product_name; + + product_name =dmi_get_system_info (DMI_PRODUCT_NAME ); +if (product_name &&strstr (product_name,"NUC13RNG" )) { +drm_warn (&xe->drm,"BMG + D3Cold not supported on this platform\n" ); +return 0 ; + } + }return DEFAULT_VRAM_THRESHOLD ; }
drivers/gpu/drm/xe/xe_query.c +1 -1
@@ -491,7 +491,7 @@ static int copy_mask(void __user **ptr,if (copy_to_user (*ptr, topo,sizeof (*topo)))return -EFAULT ; - *ptr +=sizeof (topo); + *ptr +=sizeof (*topo);if (copy_to_user (*ptr, mask, mask_size))return -EFAULT ;
drivers/hid/hid-elecom.c +13 -2
@@ -77,7 +77,7 @@ static const __u8 *elecom_report_fixup(struct hid_device *hdev, __u8 *rdesc,break ;case USB_DEVICE_ID_ELECOM_M_XT3URBK_00FB :case USB_DEVICE_ID_ELECOM_M_XT3URBK_018F : -case USB_DEVICE_ID_ELECOM_M_XT3DRBK : +case USB_DEVICE_ID_ELECOM_M_XT3DRBK_00FC :case USB_DEVICE_ID_ELECOM_M_XT4DRBK :/* * Report descriptor format:
@@ -102,6 +102,16 @@ static const __u8 *elecom_report_fixup(struct hid_device *hdev, __u8 *rdesc,*/ mouse_button_fixup (hdev, rdesc, *rsize,12 ,30 ,14 ,20 ,8 );break ; +case USB_DEVICE_ID_ELECOM_M_XT3DRBK_018C : +/* +* Report descriptor format: +* 22: button bit count +* 30: padding bit count +* 24: button report size +* 16: button usage maximum +*/ +mouse_button_fixup (hdev, rdesc, *rsize,22 ,30 ,24 ,16 ,6 ); +break ;case USB_DEVICE_ID_ELECOM_M_DT2DRBK :case USB_DEVICE_ID_ELECOM_M_HT1DRBK_011C :/*
@@ -122,7 +132,8 @@ static const struct hid_device_id elecom_devices[] = { { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_XGL20DLBK) }, { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_XT3URBK_00FB) }, { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_XT3URBK_018F) }, - { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_XT3DRBK) }, + { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_XT3DRBK_00FC) }, + { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_XT3DRBK_018C) }, { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_XT4DRBK) }, { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_DT1URBK) }, { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_DT1DRBK) },
drivers/hid/hid-ids.h +6 -1
@@ -317,6 +317,7 @@#define USB_DEVICE_ID_CHICONY_ACER_SWITCH12 0x1421#define USB_DEVICE_ID_CHICONY_HP_5MP_CAMERA 0xb824#define USB_DEVICE_ID_CHICONY_HP_5MP_CAMERA2 0xb82c +#define USB_DEVICE_ID_CHICONY_HP_5MP_CAMERA3 0xb882#define USB_VENDOR_ID_CHUNGHWAT 0x2247#define USB_DEVICE_ID_CHUNGHWAT_MULTITOUCH 0x0001
@@ -438,6 +439,9 @@#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_A001 0xa001#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_C002 0xc002 +#define USB_VENDOR_ID_EDIFIER 0x2d99 +#define USB_DEVICE_ID_EDIFIER_QR30 0xa101/* EDIFIER Hal0 2.0 SE */ +#define USB_VENDOR_ID_ELAN 0x04f3#define USB_DEVICE_ID_TOSHIBA_CLICK_L9W 0x0401#define USB_DEVICE_ID_HP_X2 0x074d
@@ -451,7 +455,8 @@#define USB_DEVICE_ID_ELECOM_M_XGL20DLBK 0x00e6#define USB_DEVICE_ID_ELECOM_M_XT3URBK_00FB 0x00fb#define USB_DEVICE_ID_ELECOM_M_XT3URBK_018F 0x018f -#define USB_DEVICE_ID_ELECOM_M_XT3DRBK 0x00fc +#define USB_DEVICE_ID_ELECOM_M_XT3DRBK_00FC 0x00fc +#define USB_DEVICE_ID_ELECOM_M_XT3DRBK_018C 0x018c#define USB_DEVICE_ID_ELECOM_M_XT4DRBK 0x00fd#define USB_DEVICE_ID_ELECOM_M_DT1URBK 0x00fe#define USB_DEVICE_ID_ELECOM_M_DT1DRBK 0x00ff
drivers/hid/hid-logitech-hidpp.c +2 -0
@@ -4661,6 +4661,8 @@ static const struct hid_device_id hidpp_devices[] = { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH, 0xb025) }, {/* MX Master 3S mouse over Bluetooth */ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH, 0xb034) }, + { /* MX Anywhere 3S mouse over Bluetooth */ + HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH, 0xb037) }, { /* MX Anywhere 3SB mouse over Bluetooth */ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH, 0xb038) }, {}
drivers/hid/hid-multitouch.c +1 -0
@@ -393,6 +393,7 @@ static const struct mt_class mt_classes[] = { { .name = MT_CLS_VTL, .quirks = MT_QUIRK_ALWAYS_VALID | MT_QUIRK_CONTACT_CNT_ACCURATE | + MT_QUIRK_STICKY_FINGERS | MT_QUIRK_FORCE_GET_FEATURE, }, { .name = MT_CLS_GOOGLE,
drivers/hid/hid-playstation.c +5 -0
@@ -753,11 +753,16 @@ ps_gamepad_create(struct hid_device *hdev,if (IS_ERR (gamepad))return ERR_CAST (gamepad); +/* Set initial resting state for joysticks to 128 (center) */ input_set_abs_params (gamepad,ABS_X ,0 ,255 ,0 ,0 ); + gamepad->absinfo[ABS_X ].value =128 ;input_set_abs_params (gamepad,ABS_Y ,0 ,255 ,0 ,0 ); + gamepad->absinfo[ABS_Y ].value =128 ;input_set_abs_params (gamepad,ABS_Z ,0 ,255 ,0 ,0 );input_set_abs_params (gamepad,ABS_RX ,0 ,255 ,0 ,0 ); + gamepad->absinfo[ABS_RX ].value =128 ;input_set_abs_params (gamepad,ABS_RY ,0 ,255 ,0 ,0 ); + gamepad->absinfo[ABS_RY ].value =128 ;input_set_abs_params (gamepad,ABS_RZ ,0 ,255 ,0 ,0 );input_set_abs_params (gamepad,ABS_HAT0X ,-1 ,1 ,0 ,0 );
drivers/hid/hid-quirks.c +4 -1
@@ -81,6 +81,7 @@ static const struct hid_device_id hid_quirks[] = { { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_PS3), HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_WIIU), HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER), HID_QUIRK_MULTI_INPUT | HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_EDIFIER, USB_DEVICE_ID_EDIFIER_QR30), HID_QUIRK_ALWAYS_POLL }, { HID_USB_DEVICE(USB_VENDOR_ID_ELAN, HID_ANY_ID), HID_QUIRK_ALWAYS_POLL }, { HID_USB_DEVICE(USB_VENDOR_ID_ELO, USB_DEVICE_ID_ELO_TS2700), HID_QUIRK_NOGET }, { HID_USB_DEVICE(USB_VENDOR_ID_EMS, USB_DEVICE_ID_EMS_TRIO_LINKER_PLUS_II), HID_QUIRK_MULTI_INPUT },
@@ -421,7 +422,8 @@ static const struct hid_device_id hid_have_special_driver[] = { { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_XGL20DLBK) }, { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_XT3URBK_00FB) }, { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_XT3URBK_018F) }, - { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_XT3DRBK) }, + { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_XT3DRBK_00FC) }, + { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_XT3DRBK_018C) }, { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_XT4DRBK) }, { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_DT1URBK) }, { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_DT1DRBK) },
@@ -778,6 +780,7 @@ static const struct hid_device_id hid_ignore_list[] = { { HID_USB_DEVICE(USB_VENDOR_ID_BERKSHIRE, USB_DEVICE_ID_BERKSHIRE_PCWD) }, { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_HP_5MP_CAMERA) }, { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_HP_5MP_CAMERA2) }, + { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_HP_5MP_CAMERA3) }, { HID_USB_DEVICE(USB_VENDOR_ID_CIDC, 0x0103) }, { HID_USB_DEVICE(USB_VENDOR_ID_CYGNAL, USB_DEVICE_ID_CYGNAL_RADIO_SI470X) }, { HID_USB_DEVICE(USB_VENDOR_ID_CYGNAL, USB_DEVICE_ID_CYGNAL_RADIO_SI4713) },
drivers/hid/i2c-hid/i2c-hid-core.c +1 -0
@@ -286,6 +286,7 @@ static int i2c_hid_get_report(struct i2c_hid *ihid,* In addition to report data device will supply data length * in the first 2 bytes of the response, so adjust . */ + recv_len =min (recv_len, ihid->bufsize -sizeof (__le16)); error =i2c_hid_xfer (ihid, ihid->cmdbuf, length, ihid->rawbuf, recv_len +sizeof (__le16));if (error) {
drivers/hid/intel-ish-hid/ishtp-hid-client.c +1 -0
@@ -495,6 +495,7 @@ static int ishtp_enum_enum_devices(struct ishtp_cl *hid_ishtp_cl)int rv;/* Send HOSTIF_DM_ENUM_DEVICES */ + client_data->enum_devices_done = false;memset (&msg,0 ,sizeof (struct hostif_msg )); msg.hdr.command =HOSTIF_DM_ENUM_DEVICES ; rv = ishtp_cl_send(hid_ishtp_cl, (unsigned char *)&msg,
drivers/hid/intel-ish-hid/ishtp/bus.c +10 -2
@@ -240,9 +240,17 @@ static int ishtp_cl_bus_match(struct device *dev, const struct device_driver *dr {struct ishtp_cl_device *device =to_ishtp_cl_device (dev);struct ishtp_cl_driver *driver =to_ishtp_cl_driver (drv); +struct ishtp_fw_client *client = device->fw_client; +const struct ishtp_device_id *id; -return (device->fw_client ?guid_equal (&driver->id[0 ].guid, - &device->fw_client->props.protocol_name) :0 ); +if (client) { +for (id = driver->id; !guid_is_null (&id->guid); id++) { +if (guid_equal (&id->guid, &client->props.protocol_name)) +return 1 ; + } + } + +return 0 ; }/**
drivers/hid/intel-thc-hid/intel-thc/intel-thc-dma.c +5 -0
@@ -575,6 +575,11 @@ static int read_dma_buffer(struct thc_device *dev,return -EINVAL ; } +if (!read_config->prd_tbls || !read_config->sgls[prd_table_index]) { +dev_err_once (dev->dev,"PRD tables are not ready yet\n" ); +return -EINVAL ; + } + prd_tbl = &read_config->prd_tbls[prd_table_index]; mes_len =calc_message_len (prd_tbl, &nent);if (mes_len > read_config->max_packet_size) {
drivers/hwmon/acpi_power_meter.c +14 -3
@@ -47,6 +47,8 @@static int cap_in_hardware;static bool force_cap_on; +static DEFINE_MUTEX (acpi_notify_lock); +static int can_cap_in_hardware (void ) {return force_cap_on || cap_in_hardware;
@@ -823,18 +825,26 @@ static void acpi_power_meter_notify(struct acpi_device *device, u32 event) resource =acpi_driver_data (device); +guard (mutex)(&acpi_notify_lock); +switch (event) {case METER_NOTIFY_CONFIG : +if (!IS_ERR (resource->hwmon_dev)) +hwmon_device_unregister (resource->hwmon_dev); +mutex_lock (&resource->lock); +free_capabilities (resource);remove_domain_devices (resource); -hwmon_device_unregister (resource->hwmon_dev); res =read_capabilities (resource);if (res)dev_err_once (&device->dev,"read capabilities failed.\n" ); res =read_domain_devices (resource);if (res && res != -ENODEV )dev_err_once (&device->dev,"read domain devices failed.\n" ); + +mutex_unlock (&resource->lock); + resource->hwmon_dev = hwmon_device_register_with_info(&device->dev, ACPI_POWER_METER_NAME,
@@ -843,7 +853,7 @@ static void acpi_power_meter_notify(struct acpi_device *device, u32 event) power_extra_groups);if (IS_ERR (resource->hwmon_dev))dev_err_once (&device->dev,"register hwmon device failed.\n" ); -mutex_unlock (&resource->lock); +break ;case METER_NOTIFY_TRIP :sysfs_notify (&device->dev.kobj,NULL ,POWER_AVERAGE_NAME );
@@ -953,7 +963,8 @@ static void acpi_power_meter_remove(struct acpi_device *device)return ; resource =acpi_driver_data (device); -hwmon_device_unregister (resource->hwmon_dev); +if (!IS_ERR (resource->hwmon_dev)) +hwmon_device_unregister (resource->hwmon_dev);remove_domain_devices (resource);free_capabilities (resource);
drivers/hwmon/dell-smm-hwmon.c +8 -0
@@ -1630,6 +1630,14 @@ static const struct dmi_system_id i8k_whitelist_fan_control[] __initconst = { }, .driver_data = (void *)&i8k_fan_control_data[I8K_FAN_30A3_31A3], }, + { + .ident = "Dell G15 5510", + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"Dell Inc." ), + DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Dell G15 5510"), + }, + .driver_data = (void *)&i8k_fan_control_data[I8K_FAN_30A3_31A3], + }, { .ident ="Dell G15 5511" , .matches = {
drivers/hwmon/gpio-fan.c +3 -3
@@ -148,7 +148,7 @@ static int set_fan_speed(struct gpio_fan_data *fan_data, int speed_index)int ret; ret =pm_runtime_put_sync (fan_data->dev); -if (ret <0 ) +if (ret <0 && ret != -ENOSYS )return ret; }
@@ -291,7 +291,7 @@ static ssize_t set_rpm(struct device *dev, struct device_attribute *attr, {struct gpio_fan_data *fan_data =dev_get_drvdata (dev);unsigned long rpm; -int ret = count; +int ret;if (kstrtoul (buf,10 , &rpm))return -EINVAL ;
@@ -308,7 +308,7 @@ static ssize_t set_rpm(struct device *dev, struct device_attribute *attr, exit_unlock:mutex_unlock (&fan_data->lock); -return ret; +return ret ? ret : count; }static DEVICE_ATTR_RW (pwm1);
drivers/hwmon/occ/common.c +1 -0
@@ -749,6 +749,7 @@ static ssize_t occ_show_extended(struct device *dev,* are dynamically allocated, we cannot use the existing kernel macros which * stringify the name argument. */ +__printf(7, 8) static void occ_init_attribute(struct occ_attribute *attr, int mode, ssize_t (*show)(struct device *dev, struct device_attribute *attr, char *buf), ssize_t (*store)(struct device *dev, struct device_attribute *attr,
drivers/i2c/busses/i2c-imx.c +2 -1
@@ -1103,7 +1103,8 @@ static irqreturn_t i2c_imx_master_isr(struct imx_i2c_struct *i2c_imx, unsigned icase IMX_I2C_STATE_READ_BLOCK_DATA_LEN :i2c_imx_isr_read_block_data_len (i2c_imx); - i2c_imx->state =IMX_I2C_STATE_READ_CONTINUE ; +if (i2c_imx->state ==IMX_I2C_STATE_READ_BLOCK_DATA_LEN ) + i2c_imx->state =IMX_I2C_STATE_READ_CONTINUE ;break ;case IMX_I2C_STATE_WRITE :
drivers/md/md.c +2 -2
@@ -4396,7 +4396,7 @@ raid_disks_store(struct mddev *mddev, const char *buf, size_t len)if (err <0 )return err; - err =mddev_lock (mddev); + err =mddev_suspend_and_lock (mddev);if (err)return err;if (mddev->pers)
@@ -4421,7 +4421,7 @@ raid_disks_store(struct mddev *mddev, const char *buf, size_t len) }else mddev->raid_disks = n; out_unlock: -mddev_unlock (mddev); +mddev_unlock_and_resume (mddev);return err ? err : len; } static struct md_sysfs_entry md_raid_disks =
drivers/net/ethernet/adi/adin1110.c +3 -0
@@ -1089,6 +1089,9 @@ static int adin1110_check_spi(struct adin1110_priv *priv) reset_gpio =devm_gpiod_get_optional (&priv->spidev->dev,"reset" ,GPIOD_OUT_LOW ); +if (IS_ERR (reset_gpio)) +return dev_err_probe (&priv->spidev->dev,PTR_ERR (reset_gpio), +"failed to get reset gpio\n" );if (reset_gpio) {/* MISO pin is used for internal configuration, can't have * anyone else disturbing the SDO line.
drivers/net/ethernet/broadcom/bnx2.c +0 -2
@@ -6444,7 +6444,6 @@ bnx2_reset_task(struct work_struct *work)if (!(pcicmd &PCI_COMMAND_MEMORY )) {/* in case PCI block has reset */ pci_restore_state (bp->pdev); -pci_save_state (bp->pdev); } rc =bnx2_init_nic (bp,1 );if (rc) {
@@ -8718,7 +8717,6 @@ static pci_ers_result_t bnx2_io_slot_reset(struct pci_dev *pdev) }else {pci_set_master (pdev);pci_restore_state (pdev); -pci_save_state (pdev);if (netif_running (dev)) err =bnx2_init_nic (bp,1 );
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c +0 -1
@@ -14216,7 +14216,6 @@ static pci_ers_result_t bnx2x_io_slot_reset(struct pci_dev *pdev)pci_set_master (pdev);pci_restore_state (pdev); -pci_save_state (pdev);if (netif_running (dev))bnx2x_set_power_state (bp,PCI_D0 );
drivers/net/ethernet/broadcom/tg3.c +0 -1
@@ -18349,7 +18349,6 @@ static pci_ers_result_t tg3_io_slot_reset(struct pci_dev *pdev)pci_set_master (pdev);pci_restore_state (pdev); -pci_save_state (pdev);if (!netdev || !netif_running (netdev)) { rc =PCI_ERS_RESULT_RECOVERED ;
drivers/net/ethernet/cavium/liquidio/lio_main.c +20 -19
@@ -3515,6 +3515,23 @@ static int setup_nic_devices(struct octeon_device *octeon_dev)*/ netdev->netdev_ops = &lionetdevops; + lio =GET_LIO (netdev); + +memset (lio,0 ,sizeof (struct lio )); + + lio->ifidx = ifidx_or_pfnum; + + props = &octeon_dev->props[i]; + props->gmxport = resp->cfg_info.linfo.gmxport; + props->netdev = netdev; + +/* Point to the properties for octeon device to which this +* interface belongs. +*/ + lio->oct_dev = octeon_dev; + lio->octprops = props; + lio->netdev = netdev; + retval =netif_set_real_num_rx_queues (netdev, num_oqueues);if (retval) { dev_err(&octeon_dev->pci_dev->dev,
@@ -3531,16 +3548,6 @@ static int setup_nic_devices(struct octeon_device *octeon_dev) goto setup_nic_dev_free; } - lio =GET_LIO (netdev); - -memset (lio,0 ,sizeof (struct lio )); - - lio->ifidx = ifidx_or_pfnum; - - props = &octeon_dev->props[i]; - props->gmxport = resp->cfg_info.linfo.gmxport; - props->netdev = netdev; - lio->linfo.num_rxpciq = num_oqueues; lio->linfo.num_txpciq = num_iqueues;for (j =0 ; j < num_oqueues; j++) {
@@ -3606,13 +3613,6 @@ static int setup_nic_devices(struct octeon_device *octeon_dev) netdev->min_mtu =LIO_MIN_MTU_SIZE ; netdev->max_mtu =LIO_MAX_MTU_SIZE ; -/* Point to the properties for octeon device to which this -* interface belongs. -*/ - lio->oct_dev = octeon_dev; - lio->octprops = props; - lio->netdev = netdev; - dev_dbg(&octeon_dev->pci_dev->dev, "if%d gmx: %d hw_addr: 0x%llx\n", i,
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/cavium/liquidio/lio_vf_main.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c +0 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c +0 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch.c +10 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/freescale/enetc/enetc.c +7 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/freescale/enetc/enetc4_pf.c +3 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/freescale/enetc/enetc_cbdr.c +0 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/freescale/enetc/enetc_hw.h +14 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/google/gve/gve_ethtool.c +51 -26
77 lines not on this page · raw message
drivers/net/ethernet/google/gve/gve_main.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/hisilicon/hibmcge/hbg_err.c +0 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/e1000e/netdev.c +0 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/fm10k/fm10k_pci.c +0 -6
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_main.c +0 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_main.c +14 -14
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_ptp.c +109 -70
179 lines not on this page · raw message
drivers/net/ethernet/intel/ice/ice_ptp.h +13 -5
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/igb/igb_main.c +0 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/igc/igc_main.c +0 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +0 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx4/main.c +0 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/main.c +0 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/meta/fbnic/fbnic_pci.c +0 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microchip/lan743x_main.c +0 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/myricom/myri10ge/myri10ge.c +0 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/spacemit/k1_emac.c +15 -6
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/ti/cpsw.c +35 -6
41 lines not on this page · raw message
drivers/net/wireless/intel/iwlwifi/mld/iface.c +0 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/mld/mac80211.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/mld/ptp.c +7 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/mvm/d3.c +5 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/mvm/ptp.c +7 -0
Lines of this file are not shown. View the raw message.
drivers/nvme/host/pci.c +30 -15
45 lines not on this page · raw message
drivers/platform/x86/dell/dell-lis3lv02d.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/platform/x86/hp/hp-bioscfg/bioscfg.c +5 -0
Lines of this file are not shown. View the raw message.
drivers/platform/x86/intel/telemetry/debugfs.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/platform/x86/intel/telemetry/pltdrv.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/pmdomain/imx/imx8mp-blk-ctrl.c +30 -0
Lines of this file are not shown. View the raw message.
drivers/spi/spi-tegra210-quad.c +52 -4
56 lines not on this page · raw message
drivers/target/iscsi/iscsi_target_util.c +8 -2
Lines of this file are not shown. View the raw message.
fs/proc/task_mmu.c +27 -15
42 lines not on this page · raw message
kernel/cgroup/dmem.c +63 -7
70 lines not on this page · raw message
kernel/sched/fair.c +28 -26
54 lines not on this page · raw message
lib/buildid.c +30 -12
42 lines not on this page · raw message
net/core/net-procfs.c +34 -16
50 lines not on this page · raw message
sound/drivers/aloop.c +36 -26
62 lines not on this page · raw message
sound/hda/codecs/side-codecs/tas2781_hda_i2c.c +4 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/kvm/Makefile.kvm +1 -0
Lines of this file are not shown. View the raw message.
virt/kvm/eventfd.c +24 -20
44 lines not on this page · raw message
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.