Linux 6.16.5
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.16.5 kernel.
All users of the 6.16 kernel series must upgrade.
The updated 6.16.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.16.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/devicetree/bindings/display/msm/qcom,mdp5.yaml | 1 Makefile | 2 arch/arm64/include/asm/mmu.h | 7 arch/arm64/kernel/cpufeature.c | 5 arch/arm64/mm/mmu.c | 7 arch/mips/boot/dts/lantiq/danube_easy50712.dts | 5 arch/mips/lantiq/xway/sysctrl.c | 10 arch/powerpc/kernel/kvm.c | 8 arch/riscv/kvm/vcpu_vector.c | 2 arch/x86/kernel/cpu/intel.c | 2 arch/x86/kernel/cpu/microcode/amd.c | 22 arch/x86/kernel/cpu/topology_amd.c | 23 arch/x86/kvm/lapic.c | 2 arch/x86/kvm/x86.c | 7 block/blk-rq-qos.h | 13 block/blk-zoned.c | 11 drivers/atm/atmtcp.c | 17 drivers/crypto/marvell/octeontx2/otx2_cpt_common.h | 5 drivers/crypto/marvell/octeontx2/otx2_cptpf_mbox.c | 13 drivers/crypto/marvell/octeontx2/otx2_cptpf_ucode.c | 4 drivers/crypto/marvell/octeontx2/otx2_cptvf_mbox.c | 6 drivers/firmware/efi/stmm/tee_stmm_efi.c | 21 drivers/firmware/qcom/qcom_scm.c | 95 +- drivers/firmware/qcom/qcom_scm.h | 1 drivers/firmware/qcom/qcom_tzmem.c | 11 drivers/gpu/drm/amd/amdgpu/amdgpu_csa.c | 4 drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c | 1 drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c | 14 drivers/gpu/drm/amd/amdgpu/gfx_v12_0.c | 8 drivers/gpu/drm/amd/pm/amdgpu_pm.c | 18 drivers/gpu/drm/display/drm_dp_helper.c | 2 drivers/gpu/drm/mediatek/mtk_drm_drv.c | 21 drivers/gpu/drm/mediatek/mtk_hdmi.c | 8 drivers/gpu/drm/mediatek/mtk_plane.c | 3 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 2 drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c | 4 drivers/gpu/drm/msm/msm_gem_submit.c | 14 drivers/gpu/drm/msm/msm_kms.c | 10 drivers/gpu/drm/msm/registers/display/dsi.xml | 28 drivers/gpu/drm/nouveau/dispnv50/wndw.c | 4 drivers/gpu/drm/nouveau/nvkm/falcon/gm200.c | 15 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/fwsec.c | 5 drivers/gpu/drm/xe/xe_bo.c | 8 drivers/gpu/drm/xe/xe_sync.c | 2 drivers/gpu/drm/xe/xe_vm.c | 8 drivers/gpu/drm/xe/xe_vm.h | 15 drivers/hid/hid-asus.c | 8 drivers/hid/hid-elecom.c | 2 drivers/hid/hid-ids.h | 4 drivers/hid/hid-input-test.c | 10 drivers/hid/hid-input.c | 51 - drivers/hid/hid-logitech-dj.c | 4 drivers/hid/hid-logitech-hidpp.c | 2 drivers/hid/hid-multitouch.c | 8 drivers/hid/hid-ntrig.c | 3 drivers/hid/hid-quirks.c | 3 drivers/hid/intel-thc-hid/intel-quicki2c/pci-quicki2c.c | 1 drivers/hid/intel-thc-hid/intel-quicki2c/quicki2c-dev.h | 2 drivers/hid/intel-thc-hid/intel-thc/intel-thc-dev.c | 4 drivers/hid/wacom_wac.c | 1 drivers/isdn/hardware/mISDN/hfcpci.c | 12 drivers/net/ethernet/broadcom/bnxt/bnxt.c | 36 drivers/net/ethernet/cadence/macb_main.c | 11 drivers/net/ethernet/dlink/dl2k.c | 2 drivers/net/ethernet/intel/ice/ice.h | 1 drivers/net/ethernet/intel/ice/ice_adapter.c | 49 - drivers/net/ethernet/intel/ice/ice_adapter.h | 4 drivers/net/ethernet/intel/ice/ice_ddp.c | 44 - drivers/net/ethernet/intel/ice/ice_idc.c | 10 drivers/net/ethernet/intel/ice/ice_main.c | 16 drivers/net/ethernet/intel/ice/ice_txrx.c | 2 drivers/net/ethernet/intel/idpf/idpf_singleq_txrx.c | 61 + drivers/net/ethernet/intel/idpf/idpf_txrx.c | 403 +++++----- drivers/net/ethernet/intel/idpf/idpf_txrx.h | 38 drivers/net/ethernet/intel/ixgbe/ixgbe_e610.c | 2 drivers/net/ethernet/intel/ixgbe/ixgbe_type_e610.h | 2 drivers/net/ethernet/marvell/octeontx2/af/cgx.c | 7 drivers/net/ethernet/marvell/octeontx2/af/mcs_rvu_if.c | 6 drivers/net/ethernet/marvell/octeontx2/af/rvu.c | 30 drivers/net/ethernet/marvell/octeontx2/af/rvu.h | 66 + drivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c | 68 - drivers/net/ethernet/marvell/octeontx2/af/rvu_cn10k.c | 4 drivers/net/ethernet/marvell/octeontx2/af/rvu_cpt.c | 4 drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c | 22 drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c | 54 - drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c | 8 drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_hash.c | 16 drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_hash.h | 4 drivers/net/ethernet/marvell/octeontx2/af/rvu_rep.c | 13 drivers/net/ethernet/marvell/octeontx2/af/rvu_sdp.c | 10 drivers/net/ethernet/marvell/octeontx2/af/rvu_switch.c | 8 drivers/net/ethernet/marvell/octeontx2/nic/cn10k_ipsec.c | 2 drivers/net/ethernet/marvell/octeontx2/nic/cn10k_ipsec.h | 2 drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c | 4 drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.h | 12 drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c | 24 drivers/net/ethernet/marvell/octeontx2/nic/otx2_reg.h | 30 drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c | 3 drivers/net/ethernet/marvell/octeontx2/nic/otx2_vf.c | 10 drivers/net/ethernet/marvell/octeontx2/nic/rep.c | 20 drivers/net/ethernet/marvell/octeontx2/nic/rep.h | 1 drivers/net/ethernet/mellanox/mlx5/core/devlink.c | 2 drivers/net/ethernet/mellanox/mlx5/core/en/port_buffer.c | 3 drivers/net/ethernet/mellanox/mlx5/core/en/port_buffer.h | 12 drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 19 drivers/net/ethernet/mellanox/mlx5/core/fs_core.c | 15 drivers/net/ethernet/mellanox/mlx5/core/fw_reset.c | 126 +-- drivers/net/ethernet/mellanox/mlx5/core/fw_reset.h | 1 drivers/net/ethernet/mellanox/mlx5/core/sf/devlink.c | 10 drivers/net/ethernet/mellanox/mlx5/core/sf/sf.h | 6 drivers/net/ethernet/mellanox/mlx5/core/steering/hws/action.c | 2 drivers/net/ethernet/mellanox/mlx5/core/steering/hws/pat_arg.c | 6 drivers/net/ethernet/mellanox/mlx5/core/steering/hws/pool.c | 1 drivers/net/ethernet/meta/fbnic/fbnic_netdev.c | 4 drivers/net/ethernet/meta/fbnic/fbnic_pci.c | 2 drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c | 13 drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c | 9 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 6 drivers/net/hyperv/netvsc.c | 17 drivers/net/hyperv/rndis_filter.c | 23 drivers/net/phy/mscc/mscc.h | 4 drivers/net/phy/mscc/mscc_main.c | 4 drivers/net/phy/mscc/mscc_ptp.c | 34 drivers/net/usb/qmi_wwan.c | 3 drivers/of/dynamic.c | 9 drivers/of/of_reserved_mem.c | 17 drivers/pinctrl/Kconfig | 1 drivers/pinctrl/mediatek/pinctrl-airoha.c | 8 drivers/platform/x86/intel/int3472/discrete.c | 6 drivers/scsi/scsi_sysfs.c | 4 drivers/thermal/mediatek/lvts_thermal.c | 74 + drivers/vhost/net.c | 9 fs/efivarfs/super.c | 4 fs/erofs/super.c | 24 fs/erofs/zdata.c | 13 fs/smb/client/cifsfs.c | 14 fs/smb/client/inode.c | 34 fs/smb/client/smb2inode.c | 7 fs/xfs/libxfs/xfs_attr_remote.c | 7 fs/xfs/libxfs/xfs_da_btree.c | 6 include/linux/atmdev.h | 1 include/linux/dma-map-ops.h | 3 include/linux/firmware/qcom/qcom_scm.h | 5 include/linux/platform_data/x86/int3472.h | 1 include/linux/soc/marvell/silicons.h | 25 include/linux/virtio_config.h | 2 include/net/bluetooth/hci_sync.h | 2 include/net/rose.h | 18 include/uapi/linux/vhost.h | 4 io_uring/io-wq.c | 8 io_uring/kbuf.c | 20 kernel/dma/contiguous.c | 2 kernel/dma/pool.c | 4 kernel/events/core.c | 6 kernel/trace/fgraph.c | 1 kernel/trace/trace.c | 4 kernel/trace/trace_functions_graph.c | 22 net/atm/common.c | 15 net/bluetooth/hci_conn.c | 58 + net/bluetooth/hci_event.c | 25 net/bluetooth/hci_sync.c | 6 net/bluetooth/mgmt.c | 9 net/core/page_pool.c | 6 net/ipv4/route.c | 10 net/l2tp/l2tp_ppp.c | 25 net/rose/af_rose.c | 13 net/rose/rose_in.c | 12 net/rose/rose_route.c | 62 - net/rose/rose_timer.c | 2 net/sctp/ipv6.c | 2 sound/soc/codecs/lpass-tx-macro.c | 2 sound/soc/codecs/rt1320-sdw.c | 3 sound/soc/codecs/rt721-sdca.c | 2 sound/soc/codecs/rt721-sdca.h | 4 tools/perf/util/symbol-minimal.c | 55 - tools/tracing/latency/Makefile.config | 8 tools/tracing/rtla/Makefile.config | 8 177 files changed, 1755 insertions(+), 977 deletions(-)
Aaron Ma (2):
HID: intel-thc-hid: intel-quicki2c: Fix ACPI dsd ICRS/ISUB length
HID: intel-thc-hid: intel-thc: Fix incorrect pointer arithmetic in I2C regs save
Aleksander Jan Bajkowski (2):
mips: dts: lantiq: danube: add missing burst length property
mips: lantiq: xway: sysctrl: rename the etop node
Alex Deucher (4):
Revert "drm/amdgpu: fix incorrect vm flags to map bo" drm/amdgpu/userq: fix error handling of invalid doorbell drm/amdgpu/gfx11: set MQD as appriopriate for queue types drm/amdgpu/gfx12: set MQD as appriopriate for queue types
Alexander Duyck (1):
fbnic: Move phylink resume out of service_task and into open/close
Alexei Lazar (3):
net/mlx5e: Update and set Xon/Xoff upon MTU set net/mlx5e: Update and set Xon/Xoff upon port speed set net/mlx5e: Set local Xoff after FW update
Alexey Klimov (1):
ASoC: codecs: tx-macro: correct tx_macro_component_drv name
Antheas Kapenekakis (1):
HID: quirks: add support for Legion Go dual dinput modes
Ayushi Makhija (1):
drm/msm: update the high bitfield of certain DSI registers
Bart Van Assche (1):
blk-zoned: Fix a lockdep complaint about recursive locking
Bartosz Golaszewski (4):
firmware: qcom: scm: remove unused arguments from SHM bridge routines
firmware: qcom: scm: take struct device as argument in SHM bridge enable
firmware: qcom: scm: initialize tzmem before marking SCM as available
firmware: qcom: scm: request the waitqueue irq *after* initializing SCM
Borislav Petkov (AMD) (1):
x86/microcode/AMD: Handle the case of no BIOS microcode
Chenyuan Yang (1):
drm/msm/dpu: Add a null ptr check for dpu_encoder_needs_modeset
Damien Le Moal (1):
scsi: core: sysfs: Correct sysfs attributes access rights
Dan Carpenter (1):
of: dynamic: Fix use after free in of_changeset_add_prop_helper()
Dipayaan Roy (1):
net: hv_netvsc: fix loss of early receive events from host during channel open.
Dmitry Baryshkov (3):
drm/msm/kms: move snapshot init earlier in KMS init drm/msm/dpu: correct dpu_plane_virtual_atomic_check()
dt-bindings: display/msm: qcom,mdp5: drop lut clock
Dongcheng Yan (1):
platform/x86: int3472: add hpd pin support
Emil Tantilov (1):
ice: fix NULL pointer dereference in ice_unplug_aux_dev() on reset
Eric Dumazet (3):
sctp: initialize more fields in sctp_v6_from_sk()
l2tp: do not use sock_hold() in pppol2tp_session_get_sock()
net: rose: fix a typo in rose_clear_routes()
Eric Sandeen (1):
xfs: do not propagate ENODATA disk errors into xattr code
Even Xu (1):
HID: intel-thc-hid: Intel-quicki2c: Enhance driver re-install flow
Fabio Porcedda (1):
net: usb: qmi_wwan: add Telit Cinterion LE910C4-WWX new compositions
Fengnan Chang (1):
io_uring/io-wq: add check free worker before create new worker
Greg Kroah-Hartman (1):
Linux 6.16.5
Hariprasad Kelam (2):
Octeontx2-vf: Fix max packet length errors
Octeontx2-af: Fix NIX X2P calibration failures
Horatiu Vultur (1):
phy: mscc: Fix when PTP clock is register and unregister
Ian Rogers (1):
perf symbol-minimal: Fix ehdr reading in filename__read_build_id
Igor Torrente (1):
Revert "virtio: reject shm region if length is zero"
Imre Deak (1):
Revert "drm/dp: Change AUX DPCD probe address from DPCD_REV to LANE0_1_STATUS"
Jacob Keller (2):
ice: don't leave device non-functional if Tx scheduler config fails
ice: use fixed adapter index for E825C embedded devices
James Jones (1):
drm/nouveau/disp: Always accept linear modifier
Jan Kiszka (1):
efi: stmm: Fix incorrect buffer allocation method
Jason-JH Lin (1):
drm/mediatek: Add error handling for old state CRTC in atomic_disable
Jedrzej Jagielski (1):
ixgbe: fix ixgbe_orom_civd_info struct layout
Jens Axboe (1):
io_uring/kbuf: always use READ_ONCE() to read ring provided buffer lengths
Jesse.Zhang (1):
drm/amdgpu: update firmware version checks for user queue support
Joshua Hay (4):
idpf: add support for Tx refillqs in flow scheduling mode
idpf: simplify and fix splitq Tx packet rollback error path
idpf: replace flow scheduling buffer ring with buffer pool
idpf: stop Tx if there are insufficient buffer resources
José Expósito (2):
HID: input: rename hidinput_set_battery_charge_status()
HID: input: report battery status changes immediately
Junli Liu (1):
erofs: fix atomic context detection when !CONFIG_DEBUG_LOCK_ALLOC
K Prateek Nayak (1):
x86/cpu/topology: Use initial APIC ID from XTOPOLOGY leaf on AMD/HYGON
Kees Cook (1):
arm64: mm: Fix CFI failure due to kpti_ng_pgd_alloc function signature
Kuniyuki Iwashima (1):
atm: atmtcp: Prevent arbitrary write in atmtcp_recv_control().
Lama Kayal (4):
net/mlx5: HWS, Fix memory leak in hws_pool_buddy_init error path net/mlx5: HWS, Fix memory leak in hws_action_get_shared_stc_nic error flow net/mlx5: HWS, Fix uninitialized variables in mlx5hws_pat_calc_nop error flow net/mlx5: HWS, Fix pattern destruction in mlx5hws_pat_get_pattern error path
Li Nan (1):
efivarfs: Fix slab-out-of-bounds in efivarfs_d_compare
Lizhi Hou (1):
of: dynamic: Fix memleak when of_pci_add_properties() failed
Lorenzo Bianconi (1):
pinctrl: airoha: Fix return value in pinconf callbacks
Louis-Alexis Eyraud (1):
drm/mediatek: mtk_hdmi: Fix inverted parameters in some regmap_update_bits calls
Ludovico de Nittis (2):
Bluetooth: hci_event: Treat UNKNOWN_CONN_ID on disconnect as success
Bluetooth: hci_event: Mark connection as closed during suspend disconnect
Luiz Augusto von Dentz (2):
Bluetooth: hci_conn: Make unacked packet handling more robust
Bluetooth: hci_event: Detect if HCI_EV_NUM_COMP_PKTS is unbalanced
Ma Ke (1):
drm/mediatek: Fix device/node reference count leaks in mtk_drm_get_all_drm_priv
Madhavan Srinivasan (1):
powerpc/kvm: Fix ifdef to remove build warning
Martin Hilgendorf (1):
HID: elecom: add support for ELECOM M-DT2DRBK
Mason Chang (3):
thermal/drivers/mediatek/lvts_thermal: Change lvts commands array to static const thermal/drivers/mediatek/lvts_thermal: Add lvts commands and their sizes to driver data thermal/drivers/mediatek/lvts_thermal: Add mt7988 lvts commands
Matt Coffin (1):
HID: logitech: Add ids for G PRO 2 LIGHTSPEED
Matthew Brost (1):
drm/xe: Don't trigger rebind on initial dma-buf validation
Michael Chan (2):
bnxt_en: Adjust TX rings if reservation is less than requested
bnxt_en: Fix stats context reservation logic
Michal Kubiak (1):
ice: fix incorrect counter for buffer allocation failures
Mina Almasry (1):
page_pool: fix incorrect mp_ops error handling
Minjong Kim (1):
HID: hid-ntrig: fix unable to handle page fault in ntrig_report_version()
Moshe Shemesh (4):
net/mlx5: Reload auxiliary drivers on fw_activate net/mlx5: Fix lockdep assertion on sync reset unload event net/mlx5: Nack sync reset when SFs are present net/mlx5: Prevent flow steering mode changes in switchdev mode
Namhyung Kim (1):
vhost: Fix ioctl # for VHOST_[GS]ET_FORK_FROM_OWNER
Nathan Chancellor (1):
drm/msm/dpu: Initialize crtc_state to NULL in dpu_plane_virtual_atomic_check()
Neil Mandir (1):
net: macb: Disable clocks once
Nikolay Kuratov (1):
vhost/net: Protect ubufs with rcu read lock in vhost_net_ubuf_put()
Nilay Shroff (1):
block: validate QoS before calling __rq_qos_done_bio()
Oreoluwa Babatunde (1):
of: reserved_mem: Restructure call site for dma_contiguous_early_fixup()
Oscar Maes (1):
net: ipv4: fix regression in local-broadcast routes
Paulo Alcantara (2):
smb: client: fix race with concurrent opens in unlink(2)
smb: client: fix race with concurrent opens in rename(2)
Pavel Shpakovskiy (1):
Bluetooth: hci_sync: fix set_local_name race condition
Ping Cheng (1):
HID: wacom: Add a new Art Pen 2
Qasim Ijaz (2):
HID: asus: fix UAF via HID_CLAIMED_INPUT validation
HID: multitouch: fix slab out-of-bounds access in mt_report_fixup()
Qingyue Zhang (1):
io_uring/kbuf: fix signedness in this_len calculation
Radim Krčmář (1):
RISC-V: KVM: fix stack overrun when loading vlenb
Randy Dunlap (1):
pinctrl: STMFX: add missing HAS_IOMEM dependency
Rob Clark (1):
drm/msm: Defer fd_install in SUBMIT ioctl
Rob Herring (Arm) (1):
of: reserved_mem: Add missing IORESOURCE_MEM flag on resources
Rohan G Thomas (3):
net: stmmac: xgmac: Do not enable RX FIFO Overflow interrupts
net: stmmac: xgmac: Correct supported speed modes
net: stmmac: Set CIC bit only for TX queues with COE
Sean Anderson (1):
net: macb: Fix offset error in gem_update_stats
Shanker Donthineni (1):
dma/pool: Ensure DMA_DIRECT_REMAP allocations are decrypted
Shuhao Fu (1):
fs/smb: Fix inconsistent refcnt update
Shuming Fan (2):
ASoC: rt721: fix FU33 Boost Volume control not working
ASoC: rt1320: fix random cycle mute issue
Sreekanth Reddy (1):
bnxt_en: Fix memory corruption when FW resources change during ifdown
Steve French (1):
smb3 client: fix return code mapping of remap_file_range
Steven Rostedt (1):
fgraph: Copy args in intermediate storage with entry
Subbaraya Sundeep (1):
octeontx2: Set appropriate PF, VF masks and shifts based on silicon
Suchit Karunakaran (1):
x86/cpu/intel: Fix the constant_tsc model check for Pentium 4
Takamitsu Iwai (3):
net: rose: split remove and free operations in rose_remove_neigh()
net: rose: convert 'use' field to refcount_t
net: rose: include node references in rose_neigh refcount
Tao Chen (2):
tools/latency-collector: Check pkg-config install
rtla: Check pkg-config install
Tengda Wu (1):
ftrace: Fix potential warning in trace_printk_seq during ftrace_dump
Thijs Raymakers (1):
KVM: x86: use array_index_nospec with indices that come from guest
Thomas Hellström (2):
drm/xe/vm: Don't pin the vm_resv during validation drm/xe/vm: Clear the scratch_pt pointer on error
Timur Tabi (3):
drm/nouveau: remove unused increment in gm200_flcn_pio_imem_wr drm/nouveau: remove unused memory target test drm/nouveau: fix error path in nvkm_gsp_fwsec_v2
Vladimir Riabchun (1):
mISDN: hfcpci: Fix warning when deleting uninitialized timer
Yang Li (1):
Bluetooth: hci_event: Disconnect device when BIG sync is lost
Yang Wang (1):
drm/amd/amdgpu: disable hwmon power1_cap* for gfx 11.0.3 on vf mode
Ye Weihua (1):
trace/fgraph: Fix the warning caused by missing unregister notifier
Yeounsu Moon (1):
net: dlink: fix multicast stats being counted incorrectly
Yuezhang Mo (1):
erofs: Fallback to normal access if DAX is not supported on extra device
Yunseong Kim (1):
perf: Avoid undefined behavior from stopping/starting inactive events
Zbigniew Kempczyński (1):
drm/xe/xe_sync: avoid race during ufence signaling
luoguangfei (1):
net: macb: fix unregister_netdev call order in macb_remove()
Greg Kroah-Hartman
maintainerDocumentation/devicetree/bindings/display/msm/qcom,mdp5.yaml +0 -1
@@ -60,7 +60,6 @@ properties: - const: bus - const: core - const: vsync - - const: lut - const: tbu - const: tbu_rt # MSM8996 has additional iommu clock
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 16 -SUBLEVEL = 4 +SUBLEVEL = 5 EXTRAVERSION = NAME = Baby Opossum Posse
arch/arm64/include/asm/mmu.h +7 -0
@@ -17,6 +17,13 @@#include <linux/refcount.h> #include <asm/cpufeature.h> +enum pgtable_type { +TABLE_PTE , +TABLE_PMD , +TABLE_PUD , +TABLE_P4D , +}; + typedef struct { atomic64_t id; #ifdef CONFIG_COMPAT
arch/arm64/kernel/cpufeature.c +3 -2
@@ -84,6 +84,7 @@#include <asm/hwcap.h> #include <asm/insn.h> #include <asm/kvm_host.h> +#include <asm/mmu.h> #include <asm/mmu_context.h> #include <asm/mte.h> #include <asm/hypervisor.h>
@@ -1941,11 +1942,11 @@ static bool has_pmuv3(const struct arm64_cpu_capabilities *entry, int scope)extern void create_kpti_ng_temp_pgd (pgd_t *pgdir,phys_addr_t phys,unsigned long virt,phys_addr_t size,pgprot_t prot, -phys_addr_t (*pgtable_alloc)(int ),int flags); +phys_addr_t (*pgtable_alloc)(enum pgtable_type ),int flags);static phys_addr_t __initdata kpti_ng_temp_alloc; -static phys_addr_t __init kpti_ng_pgd_alloc (int shift) +static phys_addr_t __init kpti_ng_pgd_alloc (enum pgtable_type type) { kpti_ng_temp_alloc -=PAGE_SIZE ;return kpti_ng_temp_alloc;
arch/arm64/mm/mmu.c +0 -7
@@ -46,13 +46,6 @@#define NO_CONT_MAPPINGS BIT(1)#define NO_EXEC_MAPPINGS BIT(2)/* assumes FEAT_HPDS is not used */ -enum pgtable_type { -TABLE_PTE , -TABLE_PMD , -TABLE_PUD , -TABLE_P4D , -}; -u64 kimage_voffset__ro_after_init ;EXPORT_SYMBOL (kimage_voffset);
arch/mips/boot/dts/lantiq/danube_easy50712.dts +4 -1
@@ -82,13 +82,16 @@ conf_out { }; }; - etop@e180000 { + ethernet@e180000 { compatible = "lantiq,etop-xway"; reg = <0xe180000 0x40000>; interrupt-parent = <&icu0>; interrupts = <73 78>; + interrupt-names = "tx", "rx"; phy-mode = "rmii"; mac-address = [ 00 11 22 33 44 55 ]; + lantiq,rx-burst-length = <4>; + lantiq,tx-burst-length = <4>; }; stp0: stp@e100bb0 {
arch/mips/lantiq/xway/sysctrl.c +5 -5
@@ -497,7 +497,7 @@ void __init ltq_soc_init(void) ifccr =CGU_IFCCR_VR9 ; pcicr =CGU_PCICR_VR9 ; }else { -clkdev_add_pmu ("1e180000.etop" ,NULL ,1 ,0 ,PMU_PPE ); +clkdev_add_pmu ("1e180000.ethernet" ,NULL ,1 ,0 ,PMU_PPE ); }if (!of_machine_is_compatible ("lantiq,ase" ))
@@ -531,9 +531,9 @@ void __init ltq_soc_init(void) CLOCK_133M, CLOCK_133M);clkdev_add_pmu ("1e101000.usb" ,"otg" ,1 ,0 ,PMU_USB0 );clkdev_add_pmu ("1f203018.usb2-phy" ,"phy" ,1 ,0 ,PMU_USB0_P ); -clkdev_add_pmu ("1e180000.etop" ,"ppe" ,1 ,0 ,PMU_PPE ); -clkdev_add_cgu ("1e180000.etop" ,"ephycgu" ,CGU_EPHY ); -clkdev_add_pmu ("1e180000.etop" ,"ephy" ,1 ,0 ,PMU_EPHY ); +clkdev_add_pmu ("1e180000.ethernet" ,"ppe" ,1 ,0 ,PMU_PPE ); +clkdev_add_cgu ("1e180000.ethernet" ,"ephycgu" ,CGU_EPHY ); +clkdev_add_pmu ("1e180000.ethernet" ,"ephy" ,1 ,0 ,PMU_EPHY );clkdev_add_pmu ("1e103000.sdio" ,NULL ,1 ,0 ,PMU_ASE_SDIO );clkdev_add_pmu ("1e116000.mei" ,"dfe" ,1 ,0 ,PMU_DFE ); }else if (of_machine_is_compatible ("lantiq,grx390" )) {
@@ -592,7 +592,7 @@ void __init ltq_soc_init(void)clkdev_add_pmu ("1e101000.usb" ,"otg" ,1 ,0 ,PMU_USB0 |PMU_AHBM );clkdev_add_pmu ("1f203034.usb2-phy" ,"phy" ,1 ,0 ,PMU_USB1_P );clkdev_add_pmu ("1e106000.usb" ,"otg" ,1 ,0 ,PMU_USB1 |PMU_AHBM ); -clkdev_add_pmu ("1e180000.etop" ,"switch" ,1 ,0 ,PMU_SWITCH ); +clkdev_add_pmu ("1e180000.ethernet" ,"switch" ,1 ,0 ,PMU_SWITCH );clkdev_add_pmu ("1e103000.sdio" ,NULL ,1 ,0 ,PMU_SDIO );clkdev_add_pmu ("1e103100.deu" ,NULL ,1 ,0 ,PMU_DEU );clkdev_add_pmu ("1e116000.mei" ,"dfe" ,1 ,0 ,PMU_DFE );
arch/powerpc/kernel/kvm.c +4 -4
@@ -632,19 +632,19 @@ static void __init kvm_check_ins(u32 *inst, u32 features)#endif } -switch (inst_no_rt & ~KVM_MASK_RB ) {#ifdef CONFIG_PPC_BOOK3S_32 +switch (inst_no_rt & ~KVM_MASK_RB ) {case KVM_INST_MTSRIN :if (features &KVM_MAGIC_FEAT_SR ) {u32 inst_rb = _inst &KVM_MASK_RB ;kvm_patch_ins_mtsrin (inst, inst_rt, inst_rb); }break ; -#endif } +#endif -switch (_inst) {#ifdef CONFIG_BOOKE +switch (_inst) {case KVM_INST_WRTEEI_0 :kvm_patch_ins_wrteei_0 (inst);break ;
@@ -652,8 +652,8 @@ static void __init kvm_check_ins(u32 *inst, u32 features)case KVM_INST_WRTEEI_1 :kvm_patch_ins_wrtee (inst,0 ,1 ); break; -#endif } +#endif }extern u32 kvm_template_start[];
arch/riscv/kvm/vcpu_vector.c +2 -0
@@ -182,6 +182,8 @@ int kvm_riscv_vcpu_set_reg_vector(struct kvm_vcpu *vcpu,struct kvm_cpu_context *cntx = &vcpu->arch.guest_context;unsigned long reg_val; +if (reg_size !=sizeof (reg_val)) +return -EINVAL ;if (copy_from_user (®_val, uaddr, reg_size))return -EFAULT ;if (reg_val != cntx->vector.vlenb)
arch/x86/kernel/cpu/intel.c +1 -1
@@ -262,7 +262,7 @@ static void early_init_intel(struct cpuinfo_x86 *c)if (c->x86_power & (1 <<8 )) {set_cpu_cap (c,X86_FEATURE_CONSTANT_TSC );set_cpu_cap (c,X86_FEATURE_NONSTOP_TSC ); - }else if ((c->x86_vfm >=INTEL_P4_PRESCOTT && c->x86_vfm <=INTEL_P4_WILLAMETTE ) || + }else if ((c->x86_vfm >=INTEL_P4_PRESCOTT && c->x86_vfm <=INTEL_P4_CEDARMILL ) || (c->x86_vfm >=INTEL_CORE_YONAH && c->x86_vfm <=INTEL_IVYBRIDGE )) {set_cpu_cap (c,X86_FEATURE_CONSTANT_TSC ); }
arch/x86/kernel/cpu/microcode/amd.c +20 -2
@@ -171,8 +171,28 @@ static int cmp_id(const void *key, const void *elem)return 1 ; } +static u32 cpuid_to_ucode_rev (unsigned int val) +{ +union zen_patch_rev p = {}; +union cpuid_1_eax c; + + c.full = val; + + p.stepping = c.stepping; + p.model = c.model; + p.ext_model = c.ext_model; + p.ext_fam = c.ext_fam; + +return p.ucode_rev; +} +static bool need_sha_check (u32 cur_rev) { +if (!cur_rev) { + cur_rev =cpuid_to_ucode_rev (bsp_cpuid_1_eax); +pr_info_once ("No current revision, generating the lowest one: 0x%x\n" , cur_rev); + } +switch (cur_rev >>8 ) {case 0x80012 :return cur_rev <=0x800126f ;break ;case 0x80082 :return cur_rev <=0x800820f ;break ;
@@ -749,8 +769,6 @@ static struct ucode_patch *cache_find_patch(struct ucode_cpu_info *uci, u16 equi n.equiv_cpu = equiv_cpu; n.patch_id = uci->cpu_sig.rev; -WARN_ON_ONCE (!n.patch_id); -list_for_each_entry (p, µcode_cache, plist)if (patch_cpus_equivalent (p, &n, false))return p;
arch/x86/kernel/cpu/topology_amd.c +14 -9
@@ -81,20 +81,25 @@ static bool parse_8000_001e(struct topo_scan *tscan, bool has_topoext)cpuid_leaf (0x8000001e , &leaf); - tscan->c->topo.initial_apicid = leaf.ext_apic_id; -/* -* If leaf 0xb is available, then the domain shifts are set -* already and nothing to do here. Only valid for family >= 0x17. +* If leaf 0xb/0x26 is available, then the APIC ID and the domain +* shifts are set already. */ -if (!has_topoext && tscan->c->x86 >=0x17 ) { +if (!has_topoext) { + tscan->c->topo.initial_apicid = leaf.ext_apic_id; +/* -* Leaf 0x80000008 set the CORE domain shift already. -* Update the SMT domain, but do not propagate it. +* Leaf 0x8000008 sets the CORE domain shift but not the +* SMT domain shift. On CPUs with family >= 0x17, there +* might be hyperthreads. */ -unsigned int nthreads = leaf.core_nthreads +1 ; +if (tscan->c->x86 >=0x17 ) { +/* Update the SMT domain, but do not propagate it. */ +unsigned int nthreads = leaf.core_nthreads +1 ; -topology_update_dom (tscan,TOPO_SMT_DOMAIN ,get_count_order (nthreads), nthreads); +topology_update_dom (tscan,TOPO_SMT_DOMAIN , +get_count_order (nthreads), nthreads); + } }store_node (tscan, leaf.nnodes_per_socket +1 , leaf.node_id);
arch/x86/kvm/lapic.c +2 -0
@@ -852,6 +852,8 @@ static int __pv_send_ipi(unsigned long *ipi_bitmap, struct kvm_apic_map *map,if (min > map->max_apic_id)return 0 ; + min =array_index_nospec (min, map->max_apic_id +1 ); +for_each_set_bit (i, ipi_bitmap,min ((u32 )BITS_PER_LONG , (map->max_apic_id - min +1 ))) {if (map->phys_map[min + i]) {
arch/x86/kvm/x86.c +5 -2
@@ -10051,8 +10051,11 @@ static void kvm_sched_yield(struct kvm_vcpu *vcpu, unsigned long dest_id)rcu_read_lock (); map =rcu_dereference (vcpu->kvm->arch.apic_map); -if (likely (map) && dest_id <= map->max_apic_id && map->phys_map[dest_id]) - target = map->phys_map[dest_id]->vcpu; +if (likely (map) && dest_id <= map->max_apic_id) { + dest_id =array_index_nospec (dest_id, map->max_apic_id +1 ); +if (map->phys_map[dest_id]) + target = map->phys_map[dest_id]->vcpu; + }rcu_read_unlock ();
block/blk-rq-qos.h +8 -5
@@ -149,12 +149,15 @@ static inline void rq_qos_done_bio(struct bio *bio) q =bdev_get_queue (bio->bi_bdev);/* -* If a bio has BIO_QOS_xxx set, it implicitly implies that -* q->rq_qos is present. So, we skip re-checking q->rq_qos -* here as an extra optimization and directly call -* __rq_qos_done_bio(). +* A BIO may carry BIO_QOS_* flags even if the associated request_queue +* does not have rq_qos enabled. This can happen with stacked block +* devices — for example, NVMe multipath, where it's possible that the +* bottom device has QoS enabled but the top device does not. Therefore, +* always verify that q->rq_qos is present and QoS is enabled before +* calling __rq_qos_done_bio(). */ -__rq_qos_done_bio (q->rq_qos, bio); +if (test_bit (QUEUE_FLAG_QOS_ENABLED , &q->queue_flags) && q->rq_qos) +__rq_qos_done_bio (q->rq_qos, bio); }static inline void rq_qos_throttle (struct request_queue *q,struct bio *bio)
block/blk-zoned.c +6 -5
@@ -1266,14 +1266,14 @@ static void blk_zone_wplug_bio_work(struct work_struct *work)struct block_device *bdev;unsigned long flags;struct bio *bio; +bool prepared;/* * Submit the next plugged BIO. If we do not have any, clear * the plugged flag. */ -spin_lock_irqsave (&zwplug->lock, flags); - again: +spin_lock_irqsave (&zwplug->lock, flags); bio =bio_list_pop (&zwplug->bio_list);if (!bio) { zwplug->flags &= ~BLK_ZONE_WPLUG_PLUGGED ;
@@ -1281,13 +1281,14 @@ static void blk_zone_wplug_bio_work(struct work_struct *work) goto put_zwplug; } -if (!blk_zone_wplug_prepare_bio (zwplug, bio)) { + prepared =blk_zone_wplug_prepare_bio (zwplug, bio); +spin_unlock_irqrestore (&zwplug->lock, flags); + +if (!prepared) {blk_zone_wplug_bio_io_error (zwplug, bio); goto again; } -spin_unlock_irqrestore (&zwplug->lock, flags); - bdev = bio->bi_bdev;/*
drivers/atm/atmtcp.c +14 -3
@@ -279,6 +279,19 @@ static struct atm_vcc *find_vcc(struct atm_dev *dev, short vpi, int vci)return NULL ; } +static int atmtcp_c_pre_send (struct atm_vcc *vcc,struct sk_buff *skb) +{ +struct atmtcp_hdr *hdr; + +if (skb->len <sizeof (struct atmtcp_hdr )) +return -EINVAL ; + + hdr = (struct atmtcp_hdr *)skb->data; +if (hdr->length ==ATMTCP_HDR_MAGIC ) +return -EINVAL ; + +return 0 ; +}static int atmtcp_c_send (struct atm_vcc *vcc,struct sk_buff *skb) {
@@ -288,9 +301,6 @@ static int atmtcp_c_send(struct atm_vcc *vcc,struct sk_buff *skb)struct sk_buff *new_skb;int result =0 ; -if (skb->len <sizeof (struct atmtcp_hdr )) - goto done; - dev = vcc->dev_data; hdr = (struct atmtcp_hdr *) skb->data;if (hdr->length ==ATMTCP_HDR_MAGIC ) {
@@ -347,6 +357,7 @@ static const struct atmdev_ops atmtcp_v_dev_ops = {static const struct atmdev_ops atmtcp_c_dev_ops = { .close = atmtcp_c_close, + .pre_send = atmtcp_c_pre_send, .send = atmtcp_c_send };
drivers/crypto/marvell/octeontx2/otx2_cpt_common.h +2 -3
@@ -18,9 +18,8 @@#define OTX2_CPT_MAX_VFS_NUM 128#define OTX2_CPT_RVU_FUNC_ADDR_S (blk, slot, offs) \ (((blk) << 20) | ((slot) << 12) | (offs)) -#define OTX2_CPT_RVU_PFFUNC (pf, func) \ - ((((pf) & RVU_PFVF_PF_MASK) << RVU_PFVF_PF_SHIFT) | \ - (((func) & RVU_PFVF_FUNC_MASK) << RVU_PFVF_FUNC_SHIFT)) + +#define OTX2_CPT_RVU_PFFUNC (pdev, pf, func) rvu_make_pcifunc(pdev, pf, func)#define OTX2_CPT_INVALID_CRYPTO_ENG_GRP 0xFF#define OTX2_CPT_NAME_LENGTH 64
drivers/crypto/marvell/octeontx2/otx2_cptpf_mbox.c +6 -7
@@ -142,7 +142,7 @@ static int send_inline_ipsec_inbound_msg(struct otx2_cptpf_dev *cptpf,memset (req,0 ,sizeof (*req)); req->hdr.id =MBOX_MSG_CPT_INLINE_IPSEC_CFG ; req->hdr.sig =OTX2_MBOX_REQ_SIG ; - req->hdr.pcifunc =OTX2_CPT_RVU_PFFUNC (cptpf->pf_id,0 ); + req->hdr.pcifunc =OTX2_CPT_RVU_PFFUNC (cptpf->pdev, cptpf->pf_id,0 ); req->dir =CPT_INLINE_INBOUND ; req->slot = slot; req->sso_pf_func_ovrd = cptpf->sso_pf_func_ovrd;
@@ -184,7 +184,8 @@ static int rx_inline_ipsec_lf_cfg(struct otx2_cptpf_dev *cptpf, u8 egrp, nix_req->gen_cfg.opcode =cpt_inline_rx_opcode (pdev); nix_req->gen_cfg.param1 = req->param1; nix_req->gen_cfg.param2 = req->param2; - nix_req->inst_qsel.cpt_pf_func =OTX2_CPT_RVU_PFFUNC (cptpf->pf_id,0 ); + nix_req->inst_qsel.cpt_pf_func = +OTX2_CPT_RVU_PFFUNC (cptpf->pdev, cptpf->pf_id,0 ); nix_req->inst_qsel.cpt_slot =0 ; ret =otx2_cpt_send_mbox_msg (&cptpf->afpf_mbox, pdev);if (ret)
@@ -392,9 +393,8 @@ void otx2_cptpf_vfpf_mbox_handler(struct work_struct *work) msg = (struct mbox_msghdr *)(mdev->mbase + offset);/* Set which VF sent this message based on mbox IRQ */ - msg->pcifunc = ((u16 )cptpf->pf_id <<RVU_PFVF_PF_SHIFT ) | - ((vf->vf_id +1 ) &RVU_PFVF_FUNC_MASK ); - + msg->pcifunc =rvu_make_pcifunc (cptpf->pdev, cptpf->pf_id, + (vf->vf_id +1 )); err =cptpf_handle_vf_req (cptpf, vf, msg, msg->next_msgoff - offset);/*
@@ -469,8 +469,7 @@ static void process_afpf_mbox_msg(struct otx2_cptpf_dev *cptpf,switch (msg->id) {case MBOX_MSG_READY : - cptpf->pf_id = (msg->pcifunc >>RVU_PFVF_PF_SHIFT ) & -RVU_PFVF_PF_MASK ; + cptpf->pf_id =rvu_get_pf (cptpf->pdev, msg->pcifunc);break ;case MBOX_MSG_MSIX_OFFSET : rsp_msix = (struct msix_offset_rsp *) msg;
drivers/crypto/marvell/octeontx2/otx2_cptpf_ucode.c +3 -1
@@ -176,7 +176,9 @@ static int cptx_set_ucode_base(struct otx2_cpt_eng_grp_info *eng_grp,/* Set PF number for microcode fetches */ ret =otx2_cpt_write_af_reg (&cptpf->afpf_mbox, cptpf->pdev,CPT_AF_PF_FUNC , - cptpf->pf_id <<RVU_PFVF_PF_SHIFT , blkaddr); +rvu_make_pcifunc (cptpf->pdev, + cptpf->pf_id,0 ), + blkaddr);if (ret)return ret;
drivers/crypto/marvell/octeontx2/otx2_cptvf_mbox.c +3 -3
@@ -189,7 +189,7 @@ int otx2_cptvf_send_eng_grp_num_msg(struct otx2_cptvf_dev *cptvf, int eng_type) } req->hdr.id =MBOX_MSG_GET_ENG_GRP_NUM ; req->hdr.sig =OTX2_MBOX_REQ_SIG ; - req->hdr.pcifunc =OTX2_CPT_RVU_PFFUNC (cptvf->vf_id,0 ); + req->hdr.pcifunc =OTX2_CPT_RVU_PFFUNC (cptvf->pdev, cptvf->vf_id,0 ); req->eng_type = eng_type;return otx2_cpt_send_mbox_msg (mbox, pdev);
@@ -210,7 +210,7 @@ int otx2_cptvf_send_kvf_limits_msg(struct otx2_cptvf_dev *cptvf) } req->id =MBOX_MSG_GET_KVF_LIMITS ; req->sig =OTX2_MBOX_REQ_SIG ; - req->pcifunc =OTX2_CPT_RVU_PFFUNC (cptvf->vf_id,0 ); + req->pcifunc =OTX2_CPT_RVU_PFFUNC (cptvf->pdev, cptvf->vf_id,0 );return otx2_cpt_send_mbox_msg (mbox, pdev); }
@@ -230,7 +230,7 @@ int otx2_cptvf_send_caps_msg(struct otx2_cptvf_dev *cptvf) } req->id =MBOX_MSG_GET_CAPS ; req->sig =OTX2_MBOX_REQ_SIG ; - req->pcifunc =OTX2_CPT_RVU_PFFUNC (cptvf->vf_id,0 ); + req->pcifunc =OTX2_CPT_RVU_PFFUNC (cptvf->pdev, cptvf->vf_id,0 );return otx2_cpt_send_mbox_msg (mbox, pdev); }
drivers/firmware/efi/stmm/tee_stmm_efi.c +12 -9
@@ -143,6 +143,10 @@ static efi_status_t mm_communicate(u8 *comm_buf, size_t payload_size)return var_hdr->ret_status; } +#define COMM_BUF_SIZE (__payload_size) (MM_COMMUNICATE_HEADER_SIZE + \ + MM_VARIABLE_COMMUNICATE_SIZE + \ + (__payload_size)) +/** * setup_mm_hdr() - Allocate a buffer for StandAloneMM and initialize the * header data.
@@ -173,9 +177,8 @@ static void *setup_mm_hdr(u8 **dptr, size_t payload_size, size_t func,return NULL ; } - comm_buf =kzalloc (MM_COMMUNICATE_HEADER_SIZE + -MM_VARIABLE_COMMUNICATE_SIZE + payload_size, -GFP_KERNEL ); + comm_buf =alloc_pages_exact (COMM_BUF_SIZE (payload_size), +GFP_KERNEL | __GFP_ZERO);if (!comm_buf) { *ret =EFI_OUT_OF_RESOURCES ;return NULL ;
@@ -239,7 +242,7 @@ static efi_status_t get_max_payload(size_t *size)*/ *size -=2 ; out: -kfree (comm_buf); +free_pages_exact (comm_buf,COMM_BUF_SIZE (payload_size));return ret; }
@@ -282,7 +285,7 @@ static efi_status_t get_property_int(u16 *name, size_t name_size,memcpy (var_property, &smm_property->property,sizeof (*var_property)); out: -kfree (comm_buf); +free_pages_exact (comm_buf,COMM_BUF_SIZE (payload_size));return ret; }
@@ -347,7 +350,7 @@ static efi_status_t tee_get_variable(u16 *name, efi_guid_t *vendor,memcpy (data, (u8 *)var_acc->name + var_acc->name_size, var_acc->data_size); out: -kfree (comm_buf); +free_pages_exact (comm_buf,COMM_BUF_SIZE (payload_size));return ret; }
@@ -404,7 +407,7 @@ static efi_status_t tee_get_next_variable(unsigned long *name_size,memcpy (name, var_getnext->name, var_getnext->name_size); out: -kfree (comm_buf); +free_pages_exact (comm_buf,COMM_BUF_SIZE (payload_size));return ret; }
@@ -467,7 +470,7 @@ static efi_status_t tee_set_variable(efi_char16_t *name, efi_guid_t *vendor, ret =mm_communicate (comm_buf, payload_size);dev_dbg (pvt_data.dev,"Set Variable %s %d %lx\n" , __FILE__, __LINE__, ret); out: -kfree (comm_buf); +free_pages_exact (comm_buf,COMM_BUF_SIZE (payload_size));return ret; }
@@ -507,7 +510,7 @@ static efi_status_t tee_query_variable_info(u32 attributes, *max_variable_size = mm_query_info->max_variable_size; out: -kfree (comm_buf); +free_pages_exact (comm_buf,COMM_BUF_SIZE (payload_size));return ret; }
drivers/firmware/qcom/qcom_scm.c +46 -49
146 lines not on this page · raw message
drivers/firmware/qcom/qcom_scm.h +1 -0
@@ -83,6 +83,7 @@ int scm_legacy_call(struct device *dev, const struct qcom_scm_desc *desc, struct qcom_scm_res *res);struct qcom_tzmem_pool *qcom_scm_get_tzmem_pool (void ); +int qcom_scm_shm_bridge_enable (struct device *scm_dev);#define QCOM_SCM_SVC_BOOT 0x01#define QCOM_SCM_BOOT_SET_ADDR 0x01
drivers/firmware/qcom/qcom_tzmem.c +6 -5
@@ -20,6 +20,7 @@#include <linux/spinlock.h> #include <linux/types.h> +#include "qcom_scm.h" #include "qcom_tzmem.h" struct qcom_tzmem_area {
@@ -94,7 +95,7 @@ static int qcom_tzmem_init(void) goto notsupp; } - ret =qcom_scm_shm_bridge_enable (); + ret =qcom_scm_shm_bridge_enable (qcom_tzmem_dev);if (ret == -EOPNOTSUPP ) goto notsupp;
@@ -124,9 +125,9 @@ static int qcom_tzmem_init_area(struct qcom_tzmem_area *area)if (!handle)return -ENOMEM ; - ret =qcom_scm_shm_bridge_create (qcom_tzmem_dev, pfn_and_ns_perm, - ipfn_and_s_perm, size_and_flags, -QCOM_SCM_VMID_HLOS , handle); + ret =qcom_scm_shm_bridge_create (pfn_and_ns_perm, ipfn_and_s_perm, + size_and_flags,QCOM_SCM_VMID_HLOS , + handle);if (ret)return ret;
@@ -142,7 +143,7 @@ static void qcom_tzmem_cleanup_area(struct qcom_tzmem_area *area)if (!qcom_tzmem_using_shm_bridge)return ; -qcom_scm_shm_bridge_delete (qcom_tzmem_dev, *handle); +qcom_scm_shm_bridge_delete (*handle);kfree (handle); }
drivers/gpu/drm/amd/amdgpu/amdgpu_csa.c +2 -2
@@ -88,8 +88,8 @@ int amdgpu_map_static_csa(struct amdgpu_device *adev, struct amdgpu_vm *vm, } r =amdgpu_vm_bo_map (adev, *bo_va, csa_addr,0 , size, -AMDGPU_VM_PAGE_READABLE |AMDGPU_VM_PAGE_WRITEABLE | -AMDGPU_VM_PAGE_EXECUTABLE ); +AMDGPU_PTE_READABLE |AMDGPU_PTE_WRITEABLE | +AMDGPU_PTE_EXECUTABLE );if (r) {DRM_ERROR ("failed to do bo_map on static CSA, err=%d\n" , r);
drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c +1 -0
@@ -426,6 +426,7 @@ amdgpu_userq_create(struct drm_file *filp, union drm_amdgpu_userq *args)if (index == (uint64_t )-EINVAL ) {drm_file_err (uq_mgr->file,"Failed to get doorbell for queue\n" );kfree (queue); + r = -EINVAL ; goto unlock; }
drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c +9 -5
@@ -1612,9 +1612,9 @@ static int gfx_v11_0_sw_init(struct amdgpu_ip_block *ip_block)case IP_VERSION (11 ,0 ,2 ):case IP_VERSION (11 ,0 ,3 ):if (!adev->gfx.disable_uq && - adev->gfx.me_fw_version >=2390 && - adev->gfx.pfp_fw_version >=2530 && - adev->gfx.mec_fw_version >=2600 && + adev->gfx.me_fw_version >=2420 && + adev->gfx.pfp_fw_version >=2580 && + adev->gfx.mec_fw_version >=2650 && adev->mes.fw_version[0 ] >=120 ) { adev->userq_funcs[AMDGPU_HW_IP_GFX ] = &userq_mes_funcs; adev->userq_funcs[AMDGPU_HW_IP_COMPUTE ] = &userq_mes_funcs;
@@ -4124,6 +4124,8 @@ static int gfx_v11_0_gfx_mqd_init(struct amdgpu_device *adev, void *m,#endif if (prop->tmz_queue) tmp =REG_SET_FIELD (tmp,CP_GFX_HQD_CNTL ,TMZ_MATCH ,1 ); +if (!prop->kernel_queue) + tmp =REG_SET_FIELD (tmp,CP_GFX_HQD_CNTL ,RB_NON_PRIV ,1 ); mqd->cp_gfx_hqd_cntl = tmp;/* set up cp_doorbell_control */
@@ -4276,8 +4278,10 @@ static int gfx_v11_0_compute_mqd_init(struct amdgpu_device *adev, void *m, tmp =REG_SET_FIELD (tmp,CP_HQD_PQ_CONTROL ,UNORD_DISPATCH ,1 ); tmp =REG_SET_FIELD (tmp,CP_HQD_PQ_CONTROL ,TUNNEL_DISPATCH , prop->allow_tunneling); - tmp =REG_SET_FIELD (tmp,CP_HQD_PQ_CONTROL ,PRIV_STATE ,1 ); - tmp =REG_SET_FIELD (tmp,CP_HQD_PQ_CONTROL ,KMD_QUEUE ,1 ); +if (prop->kernel_queue) { + tmp =REG_SET_FIELD (tmp,CP_HQD_PQ_CONTROL ,PRIV_STATE ,1 ); + tmp =REG_SET_FIELD (tmp,CP_HQD_PQ_CONTROL ,KMD_QUEUE ,1 ); + }if (prop->tmz_queue) tmp =REG_SET_FIELD (tmp,CP_HQD_PQ_CONTROL ,TMZ ,1 ); mqd->cp_hqd_pq_control = tmp;
drivers/gpu/drm/amd/amdgpu/gfx_v12_0.c +6 -2
@@ -3022,6 +3022,8 @@ static int gfx_v12_0_gfx_mqd_init(struct amdgpu_device *adev, void *m,#endif if (prop->tmz_queue) tmp =REG_SET_FIELD (tmp,CP_GFX_HQD_CNTL ,TMZ_MATCH ,1 ); +if (!prop->kernel_queue) + tmp =REG_SET_FIELD (tmp,CP_GFX_HQD_CNTL ,RB_NON_PRIV ,1 ); mqd->cp_gfx_hqd_cntl = tmp;/* set up cp_doorbell_control */
@@ -3171,8 +3173,10 @@ static int gfx_v12_0_compute_mqd_init(struct amdgpu_device *adev, void *m, (order_base_2(AMDGPU_GPU_PAGE_SIZE / 4) - 1)); tmp =REG_SET_FIELD (tmp,CP_HQD_PQ_CONTROL ,UNORD_DISPATCH ,1 ); tmp =REG_SET_FIELD (tmp,CP_HQD_PQ_CONTROL ,TUNNEL_DISPATCH ,0 ); - tmp =REG_SET_FIELD (tmp,CP_HQD_PQ_CONTROL ,PRIV_STATE ,1 ); - tmp =REG_SET_FIELD (tmp,CP_HQD_PQ_CONTROL ,KMD_QUEUE ,1 ); +if (prop->kernel_queue) { + tmp =REG_SET_FIELD (tmp,CP_HQD_PQ_CONTROL ,PRIV_STATE ,1 ); + tmp =REG_SET_FIELD (tmp,CP_HQD_PQ_CONTROL ,KMD_QUEUE ,1 ); + }if (prop->tmz_queue) tmp =REG_SET_FIELD (tmp,CP_HQD_PQ_CONTROL ,TMZ ,1 ); mqd->cp_hqd_pq_control = tmp;
drivers/gpu/drm/amd/pm/amdgpu_pm.c +10 -8
@@ -3458,14 +3458,16 @@ static umode_t hwmon_attributes_visible(struct kobject *kobj, effective_mode &= ~S_IWUSR ;/* not implemented yet for APUs other than GC 10.3.1 (vangogh) and 9.4.3 */ -if (((adev->family ==AMDGPU_FAMILY_SI ) || - ((adev->flags &AMD_IS_APU ) && (gc_ver !=IP_VERSION (10 ,3 ,1 )) && - (gc_ver !=IP_VERSION (9 ,4 ,3 ) && gc_ver !=IP_VERSION (9 ,4 ,4 )))) && - (attr == &sensor_dev_attr_power1_cap_max.dev_attr.attr || - attr == &sensor_dev_attr_power1_cap_min.dev_attr.attr || - attr == &sensor_dev_attr_power1_cap.dev_attr.attr || - attr == &sensor_dev_attr_power1_cap_default.dev_attr.attr)) -return 0 ; +if (attr == &sensor_dev_attr_power1_cap_max.dev_attr.attr || + attr == &sensor_dev_attr_power1_cap_min.dev_attr.attr || + attr == &sensor_dev_attr_power1_cap.dev_attr.attr || + attr == &sensor_dev_attr_power1_cap_default.dev_attr.attr) { +if (adev->family ==AMDGPU_FAMILY_SI || + ((adev->flags &AMD_IS_APU ) && gc_ver !=IP_VERSION (10 ,3 ,1 ) && + (gc_ver !=IP_VERSION (9 ,4 ,3 ) && gc_ver !=IP_VERSION (9 ,4 ,4 ))) || + (amdgpu_sriov_vf (adev) && gc_ver ==IP_VERSION (11 ,0 ,3 ))) +return 0 ; + }/* not implemented yet for APUs having < GC 9.3.0 (Renoir) */ if (((adev->family == AMDGPU_FAMILY_SI) ||
drivers/gpu/drm/display/drm_dp_helper.c +1 -1
@@ -725,7 +725,7 @@ ssize_t drm_dp_dpcd_read(struct drm_dp_aux *aux, unsigned int offset,* monitor doesn't power down exactly after the throw away read. */ if (!aux->is_remote) { - ret =drm_dp_dpcd_probe (aux,DP_LANE0_1_STATUS ); + ret =drm_dp_dpcd_probe (aux,DP_DPCD_REV );if (ret <0 )return ret; }
drivers/gpu/drm/mediatek/mtk_drm_drv.c +14 -7
@@ -388,19 +388,19 @@ static bool mtk_drm_get_all_drm_priv(struct device *dev) of_id =of_match_node (mtk_drm_of_ids, node);if (!of_id) -continue ; + goto next_put_node; pdev =of_find_device_by_node (node);if (!pdev) -continue ; + goto next_put_node; drm_dev =device_find_child (&pdev->dev,NULL , mtk_drm_match);if (!drm_dev) -continue ; + goto next_put_device_pdev_dev; temp_drm_priv =dev_get_drvdata (drm_dev);if (!temp_drm_priv) -continue ; + goto next_put_device_drm_dev;if (temp_drm_priv->data->main_len) all_drm_priv[CRTC_MAIN ] = temp_drm_priv;
@@ -412,10 +412,17 @@ static bool mtk_drm_get_all_drm_priv(struct device *dev)if (temp_drm_priv->mtk_drm_bound) cnt++; -if (cnt ==MAX_CRTC ) { -of_node_put (node); +next_put_device_drm_dev: +put_device (drm_dev); + +next_put_device_pdev_dev: +put_device (&pdev->dev); + +next_put_node: +of_node_put (node); + +if (cnt ==MAX_CRTC )break ; - } }if (drm_priv->data->mmsys_dev_num == cnt) {
drivers/gpu/drm/mediatek/mtk_hdmi.c +4 -4
@@ -182,8 +182,8 @@ static inline struct mtk_hdmi *hdmi_ctx_from_bridge(struct drm_bridge *b)static void mtk_hdmi_hw_vid_black (struct mtk_hdmi *hdmi,bool black) { -regmap_update_bits (hdmi->regs,VIDEO_SOURCE_SEL , -VIDEO_CFG_4 , black ?GEN_RGB :NORMAL_PATH ); +regmap_update_bits (hdmi->regs,VIDEO_CFG_4 , +VIDEO_SOURCE_SEL , black ?GEN_RGB :NORMAL_PATH ); }static void mtk_hdmi_hw_make_reg_writable (struct mtk_hdmi *hdmi,bool enable)
@@ -310,8 +310,8 @@ static void mtk_hdmi_hw_send_info_frame(struct mtk_hdmi *hdmi, u8 *buffer,static void mtk_hdmi_hw_send_aud_packet (struct mtk_hdmi *hdmi,bool enable) { -regmap_update_bits (hdmi->regs,AUDIO_PACKET_OFF , -GRL_SHIFT_R2 , enable ?0 :AUDIO_PACKET_OFF ); +regmap_update_bits (hdmi->regs,GRL_SHIFT_R2 , +AUDIO_PACKET_OFF , enable ?0 :AUDIO_PACKET_OFF ); }static void mtk_hdmi_hw_config_sys (struct mtk_hdmi *hdmi)
drivers/gpu/drm/mediatek/mtk_plane.c +2 -1
@@ -292,7 +292,8 @@ static void mtk_plane_atomic_disable(struct drm_plane *plane,wmb ();/* Make sure the above parameter is set before update */ mtk_plane_state->pending.dirty = true; -mtk_crtc_plane_disable (old_state->crtc, plane); +if (old_state && old_state->crtc) +mtk_crtc_plane_disable (old_state->crtc, plane); } static void mtk_plane_atomic_update(struct drm_plane *plane,
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c +2 -0
@@ -729,6 +729,8 @@ bool dpu_encoder_needs_modeset(struct drm_encoder *drm_enc, struct drm_atomic_streturn false; conn_state =drm_atomic_get_new_connector_state (state, connector); +if (!conn_state) +return false;/** * These checks are duplicated from dpu_encoder_update_topology() since
drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c +2 -2
@@ -1136,7 +1136,7 @@ static int dpu_plane_virtual_atomic_check(struct drm_plane *plane,struct drm_plane_state *old_plane_state =drm_atomic_get_old_plane_state (state, plane);struct dpu_plane_state *pstate =to_dpu_plane_state (plane_state); -struct drm_crtc_state *crtc_state; +struct drm_crtc_state *crtc_state =NULL ;int ret;if (IS_ERR (plane_state))
@@ -1169,7 +1169,7 @@ static int dpu_plane_virtual_atomic_check(struct drm_plane *plane,if (!old_plane_state || !old_plane_state->fb || old_plane_state->src_w != plane_state->src_w || old_plane_state->src_h != plane_state->src_h || - old_plane_state->src_w != plane_state->src_w || + old_plane_state->crtc_w != plane_state->crtc_w || old_plane_state->crtc_h != plane_state->crtc_h ||msm_framebuffer_format (old_plane_state->fb) !=msm_framebuffer_format (plane_state->fb))
drivers/gpu/drm/msm/msm_gem_submit.c +7 -7
@@ -869,12 +869,8 @@ int msm_ioctl_gem_submit(struct drm_device *dev, void *data,if (ret ==0 && args->flags &MSM_SUBMIT_FENCE_FD_OUT ) { sync_file =sync_file_create (submit->user_fence); -if (!sync_file) { +if (!sync_file) ret = -ENOMEM ; - }else { -fd_install (out_fence_fd, sync_file->file); - args->fence_fd = out_fence_fd; - } }if (ret)
@@ -902,10 +898,14 @@ int msm_ioctl_gem_submit(struct drm_device *dev, void *data, out_unlock:mutex_unlock (&queue->lock); out_post_unlock: -if (ret && (out_fence_fd >=0 )) { -put_unused_fd (out_fence_fd); +if (ret) { +if (out_fence_fd >=0 ) +put_unused_fd (out_fence_fd);if (sync_file)fput (sync_file->file); + }else if (sync_file) { +fd_install (out_fence_fd, sync_file->file); + args->fence_fd = out_fence_fd; }if (!IS_ERR_OR_NULL (submit)) {
drivers/gpu/drm/msm/msm_kms.c +6 -4
@@ -258,6 +258,12 @@ int msm_drm_kms_init(struct device *dev, const struct drm_driver *drv)if (ret)return ret; + ret =msm_disp_snapshot_init (ddev); +if (ret) { +DRM_DEV_ERROR (dev,"msm_disp_snapshot_init failed ret = %d\n" , ret); +return ret; + } + ret = priv->kms_init (ddev);if (ret) {DRM_DEV_ERROR (dev,"failed to load kms\n" );
@@ -310,10 +316,6 @@ int msm_drm_kms_init(struct device *dev, const struct drm_driver *drv) goto err_msm_uninit; } - ret =msm_disp_snapshot_init (ddev); -if (ret) -DRM_DEV_ERROR (dev,"msm_disp_snapshot_init failed ret = %d\n" , ret); -drm_mode_config_reset (ddev);return 0 ;
drivers/gpu/drm/msm/registers/display/dsi.xml +14 -14
@@ -159,28 +159,28 @@ xsi:schemaLocation="https://gitlab.freedesktop.org/freedreno/ rules-fd.xsd"> <bitfield name="RGB_SWAP" low="12" high="14" type="dsi_rgb_swap"/> </reg32> <reg32 offset="0x00020" name="ACTIVE_H"> - <bitfield name="START" low="0" high="11" type="uint"/> - <bitfield name="END" low="16" high="27" type="uint"/> + <bitfield name="START" low="0" high="15" type="uint"/> + <bitfield name="END" low="16" high="31" type="uint"/> </reg32> <reg32 offset="0x00024" name="ACTIVE_V"> - <bitfield name="START" low="0" high="11" type="uint"/> - <bitfield name="END" low="16" high="27" type="uint"/> + <bitfield name="START" low="0" high="15" type="uint"/> + <bitfield name="END" low="16" high="31" type="uint"/> </reg32> <reg32 offset="0x00028" name="TOTAL"> - <bitfield name="H_TOTAL" low="0" high="11" type="uint"/> - <bitfield name="V_TOTAL" low="16" high="27" type="uint"/> + <bitfield name="H_TOTAL" low="0" high="15" type="uint"/> + <bitfield name="V_TOTAL" low="16" high="31" type="uint"/> </reg32> <reg32 offset="0x0002c" name="ACTIVE_HSYNC"> - <bitfield name="START" low="0" high="11" type="uint"/> - <bitfield name="END" low="16" high="27" type="uint"/> + <bitfield name="START" low="0" high="15" type="uint"/> + <bitfield name="END" low="16" high="31" type="uint"/> </reg32> <reg32 offset="0x00030" name="ACTIVE_VSYNC_HPOS"> - <bitfield name="START" low="0" high="11" type="uint"/> - <bitfield name="END" low="16" high="27" type="uint"/> + <bitfield name="START" low="0" high="15" type="uint"/> + <bitfield name="END" low="16" high="31" type="uint"/> </reg32> <reg32 offset="0x00034" name="ACTIVE_VSYNC_VPOS"> - <bitfield name="START" low="0" high="11" type="uint"/> - <bitfield name="END" low="16" high="27" type="uint"/> + <bitfield name="START" low="0" high="15" type="uint"/> + <bitfield name="END" low="16" high="31" type="uint"/> </reg32> <reg32 offset="0x00038" name="CMD_DMA_CTRL">
@@ -209,8 +209,8 @@ xsi:schemaLocation="https://gitlab.freedesktop.org/freedreno/ rules-fd.xsd"> <bitfield name="WORD_COUNT" low="16" high="31" type="uint"/> </reg32> <reg32 offset="0x00058" name="CMD_MDP_STREAM0_TOTAL"> - <bitfield name="H_TOTAL" low="0" high="11" type="uint"/> - <bitfield name="V_TOTAL" low="16" high="27" type="uint"/> + <bitfield name="H_TOTAL" low="0" high="15" type="uint"/> + <bitfield name="V_TOTAL" low="16" high="31" type="uint"/> </reg32> <reg32 offset="0x0005c" name="CMD_MDP_STREAM1_CTRL"> <bitfield name="DATA_TYPE" low="0" high="5" type="uint"/>
drivers/gpu/drm/nouveau/dispnv50/wndw.c +4 -0
@@ -795,6 +795,10 @@ static bool nv50_plane_format_mod_supported(struct drm_plane *plane,struct nouveau_drm *drm =nouveau_drm (plane->dev);uint8_t i; +/* All chipsets can display all formats in linear layout */ +if (modifier ==DRM_FORMAT_MOD_LINEAR ) +return true; +if (drm->client.device.info.chipset <0xc0 ) {const struct drm_format_info *info =drm_format_info (format);const uint8_t kind = (modifier >>12 ) &0xff ;
drivers/gpu/drm/nouveau/nvkm/falcon/gm200.c +4 -11
@@ -103,7 +103,7 @@ gm200_flcn_pio_imem_wr_init(struct nvkm_falcon *falcon, u8 port, bool sec, u32 istatic void gm200_flcn_pio_imem_wr (struct nvkm_falcon *falcon,u8 port,const u8 *img,int len,u16 tag) { -nvkm_falcon_wr32 (falcon,0x188 + (port *0x10 ), tag++); +nvkm_falcon_wr32 (falcon,0x188 + (port *0x10 ), tag);while (len >=4 ) {nvkm_falcon_wr32 (falcon,0x184 + (port *0x10 ), *(u32 *)img); img +=4 ;
@@ -249,9 +249,11 @@ int gm200_flcn_fw_load(struct nvkm_falcon_fw *fw) {struct nvkm_falcon *falcon = fw->falcon; -int target, ret; +int ret;if (fw->inst) { +int target; +nvkm_falcon_mask (falcon,0x048 ,0x00000001 ,0x00000001 );switch (nvkm_memory_target (fw->inst)) {
@@ -285,15 +287,6 @@ gm200_flcn_fw_load(struct nvkm_falcon_fw *fw) }if (fw->boot) { -switch (nvkm_memory_target (&fw->fw.mem.memory)) { -case NVKM_MEM_TARGET_VRAM : target =4 ;break ; -case NVKM_MEM_TARGET_HOST : target =5 ;break ; -case NVKM_MEM_TARGET_NCOH : target =6 ;break ; -default : -WARN_ON (1 ); -return -EINVAL ; - } - ret =nvkm_falcon_pio_wr (falcon, fw->boot,0 ,0 ,IMEM , falcon->code.limit - fw->boot_size, fw->boot_size, fw->boot_addr >>8 , false);
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/fwsec.c +3 -2
@@ -209,11 +209,12 @@ nvkm_gsp_fwsec_v2(struct nvkm_gsp *gsp, const char *name, fw->boot_addr = bld->start_tag <<8 ; fw->boot_size = bld->code_size; fw->boot =kmemdup (bl->data + hdr->data_offset + bld->code_off, fw->boot_size,GFP_KERNEL ); -if (!fw->boot) - ret = -ENOMEM ;nvkm_firmware_put (bl); +if (!fw->boot) +return -ENOMEM ; +/* Patch in interface data. */ return nvkm_gsp_fwsec_patch (gsp, fw, desc->InterfaceOffset, init_cmd); }
drivers/gpu/drm/xe/xe_bo.c +4 -4
@@ -796,7 +796,8 @@ static int xe_bo_move(struct ttm_buffer_object *ttm_bo, bool evict, }if (ttm_bo->type == ttm_bo_type_sg) { - ret =xe_bo_move_notify (bo, ctx); +if (new_mem->mem_type ==XE_PL_SYSTEM ) + ret =xe_bo_move_notify (bo, ctx);if (!ret) ret =xe_bo_move_dmabuf (ttm_bo, new_mem);return ret;
@@ -2435,7 +2436,6 @@ int xe_bo_validate(struct xe_bo *bo, struct xe_vm *vm, bool allow_res_evict) .no_wait_gpu = false, .gfp_retry_mayfail = true, }; -struct pin_cookie cookie;int ret;if (vm) {
@@ -2446,10 +2446,10 @@ int xe_bo_validate(struct xe_bo *bo, struct xe_vm *vm, bool allow_res_evict) ctx.resv =xe_vm_resv (vm); } - cookie =xe_vm_set_validating (vm, allow_res_evict); +xe_vm_set_validating (vm, allow_res_evict);trace_xe_bo_validate (bo); ret =ttm_bo_validate (&bo->ttm, &bo->placement, &ctx); -xe_vm_clear_validating (vm, allow_res_evict, cookie); +xe_vm_clear_validating (vm, allow_res_evict);return ret; }
drivers/gpu/drm/xe/xe_sync.c +1 -1
@@ -77,6 +77,7 @@ static void user_fence_worker(struct work_struct *w) { struct xe_user_fence *ufence = container_of(w, struct xe_user_fence, worker); +WRITE_ONCE (ufence->signalled,1 );if (mmget_not_zero (ufence->mm)) {kthread_use_mm (ufence->mm);if (copy_to_user (ufence->addr, &ufence->value,sizeof (ufence->value)))
@@ -91,7 +92,6 @@ static void user_fence_worker(struct work_struct *w)* Wake up waiters only after updating the ufence state, allowing the UMD * to safely reuse the same ufence without encountering -EBUSY errors. */ -WRITE_ONCE (ufence->signalled,1 );wake_up_all (&ufence->xe->ufence_wq);user_fence_put (ufence); }
drivers/gpu/drm/xe/xe_vm.c +6 -2
@@ -1582,8 +1582,12 @@ static int xe_vm_create_scratch(struct xe_device *xe, struct xe_tile *tile,for (i =MAX_HUGEPTE_LEVEL ; i < vm->pt_root[id]->level; i++) { vm->scratch_pt[id][i] =xe_pt_create (vm, tile, i); -if (IS_ERR (vm->scratch_pt[id][i])) -return PTR_ERR (vm->scratch_pt[id][i]); +if (IS_ERR (vm->scratch_pt[id][i])) { +int err =PTR_ERR (vm->scratch_pt[id][i]); + + vm->scratch_pt[id][i] =NULL ; +return err; + }xe_pt_populate_empty (tile, vm, vm->scratch_pt[id][i]); }
drivers/gpu/drm/xe/xe_vm.h +2 -13
@@ -310,22 +310,14 @@ void xe_vm_snapshot_free(struct xe_vm_snapshot *snap);* Register this task as currently making bos resident for the vm. Intended * to avoid eviction by the same task of shared bos bound to the vm. * Call with the vm's resv lock held. -* -* Return: A pin cookie that should be used for xe_vm_clear_validating(). */ -static inline struct pin_cookie xe_vm_set_validating (struct xe_vm *vm, -bool allow_res_evict) +static inline void xe_vm_set_validating (struct xe_vm *vm,bool allow_res_evict) { -struct pin_cookie cookie = {}; -if (vm && !allow_res_evict) {xe_vm_assert_held (vm); - cookie =lockdep_pin_lock (&xe_vm_resv (vm)->lock.base);/* Pairs with READ_ONCE in xe_vm_is_validating() */ WRITE_ONCE (vm->validating, current); } - -return cookie; }/**
@@ -333,17 +325,14 @@ static inline struct pin_cookie xe_vm_set_validating(struct xe_vm *vm,* @vm: Pointer to the vm or NULL * @allow_res_evict: Eviction from @vm was allowed. Must be set to the same * value as for xe_vm_set_validation(). -* @cookie: Cookie obtained from xe_vm_set_validating(). * * Register this task as currently making bos resident for the vm. Intended * to avoid eviction by the same task of shared bos bound to the vm. * Call with the vm's resv lock held. */ -static inline void xe_vm_clear_validating (struct xe_vm *vm,bool allow_res_evict, -struct pin_cookie cookie) +static inline void xe_vm_clear_validating (struct xe_vm *vm,bool allow_res_evict) {if (vm && !allow_res_evict) { -lockdep_unpin_lock (&xe_vm_resv (vm)->lock.base, cookie);/* Pairs with READ_ONCE in xe_vm_is_validating() */ WRITE_ONCE (vm->validating,NULL ); }
drivers/hid/hid-asus.c +7 -1
@@ -1213,7 +1213,13 @@ static int asus_probe(struct hid_device *hdev, const struct hid_device_id *id)return ret; } -if (!drvdata->input) { +/* +* Check that input registration succeeded. Checking that +* HID_CLAIMED_INPUT is set prevents a UAF when all input devices +* were freed during registration due to no usages being mapped, +* leaving drvdata->input pointing to freed memory. +*/ +if (!drvdata->input || !(hdev->claimed &HID_CLAIMED_INPUT )) {hid_err (hdev,"Asus input not registered\n" ); ret = -ENOMEM ; goto err_stop_hw;
drivers/hid/hid-elecom.c +2 -0
@@ -101,6 +101,7 @@ 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_DT2DRBK :case USB_DEVICE_ID_ELECOM_M_HT1DRBK_011C :/* * Report descriptor format:
@@ -123,6 +124,7 @@ static const struct hid_device_id elecom_devices[] = { { 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) }, + { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_DT2DRBK) }, { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1URBK_010C) }, { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1URBK_019B) }, { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1DRBK_010D) },
drivers/hid/hid-ids.h +4 -0
@@ -448,6 +448,7 @@#define USB_DEVICE_ID_ELECOM_M_XT4DRBK 0x00fd#define USB_DEVICE_ID_ELECOM_M_DT1URBK 0x00fe#define USB_DEVICE_ID_ELECOM_M_DT1DRBK 0x00ff +#define USB_DEVICE_ID_ELECOM_M_DT2DRBK 0x018d#define USB_DEVICE_ID_ELECOM_M_HT1URBK_010C 0x010c#define USB_DEVICE_ID_ELECOM_M_HT1URBK_019B 0x019b#define USB_DEVICE_ID_ELECOM_M_HT1DRBK_010D 0x010d
@@ -831,6 +832,8 @@#define USB_DEVICE_ID_LENOVO_PIXART_USB_MOUSE_6019 0x6019#define USB_DEVICE_ID_LENOVO_PIXART_USB_MOUSE_602E 0x602e#define USB_DEVICE_ID_LENOVO_PIXART_USB_MOUSE_6093 0x6093 +#define USB_DEVICE_ID_LENOVO_LEGION_GO_DUAL_DINPUT 0x6184 +#define USB_DEVICE_ID_LENOVO_LEGION_GO2_DUAL_DINPUT 0x61ed#define USB_VENDOR_ID_LETSKETCH 0x6161#define USB_DEVICE_ID_WP9620N 0x4d15
@@ -904,6 +907,7 @@#define USB_DEVICE_ID_LOGITECH_NANO_RECEIVER_2 0xc534#define USB_DEVICE_ID_LOGITECH_NANO_RECEIVER_LIGHTSPEED_1 0xc539#define USB_DEVICE_ID_LOGITECH_NANO_RECEIVER_LIGHTSPEED_1_1 0xc53f +#define USB_DEVICE_ID_LOGITECH_NANO_RECEIVER_LIGHTSPEED_1_2 0xc543#define USB_DEVICE_ID_LOGITECH_NANO_RECEIVER_POWERPLAY 0xc53a#define USB_DEVICE_ID_LOGITECH_BOLT_RECEIVER 0xc548#define USB_DEVICE_ID_SPACETRAVELLER 0xc623
drivers/hid/hid-input-test.c +5 -5
@@ -7,7 +7,7 @@#include <kunit/test.h> -static void hid_test_input_set_battery_charge_status (struct kunit *test) +static void hid_test_input_update_battery_charge_status (struct kunit *test) {struct hid_device *dev;bool handled;
@@ -15,15 +15,15 @@ static void hid_test_input_set_battery_charge_status(struct kunit *test) dev =kunit_kzalloc (test,sizeof (*dev),GFP_KERNEL );KUNIT_ASSERT_NOT_ERR_OR_NULL (test, dev); - handled =hidinput_set_battery_charge_status (dev,HID_DG_HEIGHT ,0 ); + handled =hidinput_update_battery_charge_status (dev,HID_DG_HEIGHT ,0 );KUNIT_EXPECT_FALSE (test, handled);KUNIT_EXPECT_EQ (test, dev->battery_charge_status,POWER_SUPPLY_STATUS_UNKNOWN ); - handled =hidinput_set_battery_charge_status (dev,HID_BAT_CHARGING ,0 ); + handled =hidinput_update_battery_charge_status (dev,HID_BAT_CHARGING ,0 );KUNIT_EXPECT_TRUE (test, handled);KUNIT_EXPECT_EQ (test, dev->battery_charge_status,POWER_SUPPLY_STATUS_DISCHARGING ); - handled =hidinput_set_battery_charge_status (dev,HID_BAT_CHARGING ,1 ); + handled =hidinput_update_battery_charge_status (dev,HID_BAT_CHARGING ,1 );KUNIT_EXPECT_TRUE (test, handled);KUNIT_EXPECT_EQ (test, dev->battery_charge_status,POWER_SUPPLY_STATUS_CHARGING ); }
@@ -63,7 +63,7 @@ static void hid_test_input_get_battery_property(struct kunit *test) }static struct kunit_case hid_input_tests[] = { -KUNIT_CASE (hid_test_input_set_battery_charge_status), +KUNIT_CASE (hid_test_input_update_battery_charge_status),KUNIT_CASE (hid_test_input_get_battery_property), { } };
drivers/hid/hid-input.c +24 -27
82 lines not on this page · raw message
drivers/hid/hid-logitech-dj.c +4 -0
@@ -1983,6 +1983,10 @@ static const struct hid_device_id logi_dj_receivers[] = { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_NANO_RECEIVER_LIGHTSPEED_1_1), .driver_data = recvr_type_gaming_hidpp}, + {/* Logitech lightspeed receiver (0xc543) */ +HID_USB_DEVICE (USB_VENDOR_ID_LOGITECH , + USB_DEVICE_ID_LOGITECH_NANO_RECEIVER_LIGHTSPEED_1_2), + .driver_data = recvr_type_gaming_hidpp}, { /* Logitech 27 MHz HID++ 1.0 receiver (0xc513) */ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_MX3000_RECEIVER),
drivers/hid/hid-logitech-hidpp.c +2 -0
@@ -4596,6 +4596,8 @@ static const struct hid_device_id hidpp_devices[] = { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, 0xC094) }, {/* Logitech G Pro X Superlight 2 Gaming Mouse over USB */ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, 0xC09b) }, + { /* Logitech G PRO 2 LIGHTSPEED Wireless Mouse over USB */ + HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, 0xc09a) }, { /* G935 Gaming Headset */ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, 0x0a87),
drivers/hid/hid-multitouch.c +8 -0
@@ -1461,6 +1461,14 @@ static const __u8 *mt_report_fixup(struct hid_device *hdev, __u8 *rdesc,if (hdev->vendor ==I2C_VENDOR_ID_GOODIX && (hdev->product ==I2C_DEVICE_ID_GOODIX_01E8 || hdev->product ==I2C_DEVICE_ID_GOODIX_01E9 )) { +if (*size <608 ) { +dev_info ( + &hdev->dev, +"GT7868Q fixup: report descriptor is only %u bytes, skipping\n" , + *size); +return rdesc; + } +if (rdesc[607 ] ==0x15 ) { rdesc[607 ] =0x25 ; dev_info(
drivers/hid/hid-ntrig.c +3 -0
@@ -144,6 +144,9 @@ static void ntrig_report_version(struct hid_device *hdev)struct usb_device *usb_dev =hid_to_usb_dev (hdev);unsigned char *data =kmalloc (8 ,GFP_KERNEL ); +if (!hid_is_usb (hdev)) +return ; +if (!data) goto err_free;
drivers/hid/hid-quirks.c +3 -0
@@ -124,6 +124,8 @@ static const struct hid_device_id hid_quirks[] = { { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_MOUSEPEN_I608X_V2), HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_PENSKETCH_T609A), HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_LABTEC, USB_DEVICE_ID_LABTEC_ODDOR_HANDBRAKE), HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_LEGION_GO_DUAL_DINPUT), HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_LEGION_GO2_DUAL_DINPUT), HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_OPTICAL_USB_MOUSE_600E), HID_QUIRK_ALWAYS_POLL }, { HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_PIXART_USB_MOUSE_608D), HID_QUIRK_ALWAYS_POLL }, { HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_PIXART_USB_MOUSE_6019), HID_QUIRK_ALWAYS_POLL },
@@ -410,6 +412,7 @@ static const struct hid_device_id hid_have_special_driver[] = { { 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) }, + { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_DT2DRBK) }, { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1URBK_010C) }, { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1URBK_019B) }, { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1DRBK_010D) },
drivers/hid/intel-thc-hid/intel-quicki2c/pci-quicki2c.c +1 -0
@@ -406,6 +406,7 @@ static struct quicki2c_device *quicki2c_dev_init(struct pci_dev *pdev, void __io*/ static void quicki2c_dev_deinit (struct quicki2c_device *qcdev) { +thc_interrupt_quiesce (qcdev->thc_hw, true);thc_interrupt_enable (qcdev->thc_hw, false);thc_ltr_unconfig (qcdev->thc_hw);
drivers/hid/intel-thc-hid/intel-quicki2c/quicki2c-dev.h +2 -0
@@ -71,6 +71,7 @@ struct quicki2c_subip_acpi_parameter {u16 device_address;u64 connection_speed;u8 addressing_mode; +u8 reserved; } __packed;/**
@@ -120,6 +121,7 @@ struct quicki2c_subip_acpi_config {u64 HMTD ;u64 HMRD ;u64 HMSL ; +u8 reserved; };struct device ;
drivers/hid/intel-thc-hid/intel-thc/intel-thc-dev.c +2 -2
@@ -1539,7 +1539,7 @@ int thc_i2c_subip_regs_save(struct thc_device *dev)for (int i =0 ; i <ARRAY_SIZE (i2c_subip_regs); i++) { ret =thc_i2c_subip_pio_read (dev, i2c_subip_regs[i], - &read_size, (u32 *)&dev->i2c_subip_regs + i); + &read_size, &dev->i2c_subip_regs[i]);if (ret <0 )return ret; }
@@ -1562,7 +1562,7 @@ int thc_i2c_subip_regs_restore(struct thc_device *dev)for (int i =0 ; i <ARRAY_SIZE (i2c_subip_regs); i++) { ret =thc_i2c_subip_pio_write (dev, i2c_subip_regs[i], - write_size, (u32 *)&dev->i2c_subip_regs + i); + write_size, &dev->i2c_subip_regs[i]);if (ret <0 )return ret; }
drivers/hid/wacom_wac.c +1 -0
@@ -684,6 +684,7 @@ static bool wacom_is_art_pen(int tool_id)case 0x885 :/* Intuos3 Marker Pen */ case 0x804 :/* Intuos4/5 13HD/24HD Marker Pen */ case 0x10804 :/* Intuos4/5 13HD/24HD Art Pen */ +case 0x204 :/* Art Pen 2 */ is_art_pen = true;break ; }
drivers/isdn/hardware/mISDN/hfcpci.c +5 -7
@@ -39,12 +39,13 @@#include "hfc_pci.h" +static void hfcpci_softirq (struct timer_list *unused);static const char *hfcpci_revision ="2.0" ;static int HFC_cnt;static uint debug;static uint poll, tics; -static struct timer_list hfc_tl; +static DEFINE_TIMER(hfc_tl, hfcpci_softirq);static unsigned long hfc_jiffies;MODULE_AUTHOR ("Karsten Keil" );
@@ -2305,8 +2306,7 @@ hfcpci_softirq(struct timer_list *unused) hfc_jiffies = jiffies +1 ; else hfc_jiffies += tics; - hfc_tl.expires = hfc_jiffies; -add_timer (&hfc_tl); +mod_timer (&hfc_tl, hfc_jiffies); } static int __init
@@ -2332,10 +2332,8 @@ HFC_init(void)if (poll !=HFCPCI_BTRANS_THRESHOLD ) {printk (KERN_INFO "%s: Using alternative poll value of %d\n" , __func__, poll); -timer_setup (&hfc_tl, hfcpci_softirq,0 ); - hfc_tl.expires = jiffies + tics; - hfc_jiffies = hfc_tl.expires; -add_timer (&hfc_tl); + hfc_jiffies = jiffies + tics; +mod_timer (&hfc_tl, hfc_jiffies); }else tics =0 ;/* indicate the use of controller's timer */
drivers/net/ethernet/broadcom/bnxt/bnxt.c +30 -6
@@ -8009,7 +8009,8 @@ static int __bnxt_reserve_rings(struct bnxt *bp) } rx_rings =min_t (int, rx_rings, hwr.grp); hwr.cp =min_t (int, hwr.cp, bp->cp_nr_rings); -if (hwr.stat >bnxt_get_ulp_stat_ctxs (bp)) +if (bnxt_ulp_registered (bp->edev) && + hwr.stat >bnxt_get_ulp_stat_ctxs (bp)) hwr.stat -=bnxt_get_ulp_stat_ctxs (bp); hwr.cp =min_t (int, hwr.cp, hwr.stat); rc =bnxt_trim_rings (bp, &rx_rings, &hwr.tx, hwr.cp, sh);
@@ -8017,6 +8018,11 @@ static int __bnxt_reserve_rings(struct bnxt *bp) hwr.rx = rx_rings <<1 ; tx_cp =bnxt_num_tx_to_cp (bp, hwr.tx); hwr.cp = sh ?max_t (int, tx_cp, rx_rings) : tx_cp + rx_rings; +if (hwr.tx != bp->tx_nr_rings) { +netdev_warn (bp->dev, +"Able to reserve only %d out of %d requested TX rings\n" , + hwr.tx, bp->tx_nr_rings); + } bp->tx_nr_rings = hwr.tx;/* If we cannot reserve all the RX rings, reset the RSS map only
@@ -12844,6 +12850,17 @@ static int bnxt_set_xps_mapping(struct bnxt *bp)return rc; } +static int bnxt_tx_nr_rings (struct bnxt *bp) +{ +return bp->num_tc ? bp->tx_nr_rings_per_tc * bp->num_tc : + bp->tx_nr_rings_per_tc; +} + +static int bnxt_tx_nr_rings_per_tc (struct bnxt *bp) +{ +return bp->num_tc ? bp->tx_nr_rings / bp->num_tc : bp->tx_nr_rings; +} +static int __bnxt_open_nic (struct bnxt *bp,bool irq_re_init,bool link_re_init) {int rc =0 ;
@@ -12861,6 +12878,13 @@ static int __bnxt_open_nic(struct bnxt *bp, bool irq_re_init, bool link_re_init)if (rc)return rc; +/* Make adjustments if reserved TX rings are less than requested */ + bp->tx_nr_rings -= bp->tx_nr_rings_xdp; + bp->tx_nr_rings_per_tc =bnxt_tx_nr_rings_per_tc (bp); +if (bp->tx_nr_rings_xdp) { + bp->tx_nr_rings_xdp = bp->tx_nr_rings_per_tc; + bp->tx_nr_rings += bp->tx_nr_rings_xdp; + } rc =bnxt_alloc_mem (bp, irq_re_init);if (rc) {netdev_err (bp->dev,"bnxt_alloc_mem err: %x\n" , rc);
@@ -16338,7 +16362,7 @@ static void bnxt_trim_dflt_sh_rings(struct bnxt *bp) bp->cp_nr_rings =min_t (int, bp->tx_nr_rings_per_tc, bp->rx_nr_rings); bp->rx_nr_rings = bp->cp_nr_rings; bp->tx_nr_rings_per_tc = bp->cp_nr_rings; - bp->tx_nr_rings = bp->tx_nr_rings_per_tc; + bp->tx_nr_rings =bnxt_tx_nr_rings (bp); }static int bnxt_set_dflt_rings (struct bnxt *bp,bool sh)
@@ -16370,7 +16394,7 @@ static int bnxt_set_dflt_rings(struct bnxt *bp, bool sh)bnxt_trim_dflt_sh_rings (bp); else bp->cp_nr_rings = bp->tx_nr_rings_per_tc + bp->rx_nr_rings; - bp->tx_nr_rings = bp->tx_nr_rings_per_tc; + bp->tx_nr_rings =bnxt_tx_nr_rings (bp); avail_msix =bnxt_get_max_func_irqs (bp) - bp->cp_nr_rings;if (avail_msix >=BNXT_MIN_ROCE_CP_RINGS ) {
@@ -16383,7 +16407,7 @@ static int bnxt_set_dflt_rings(struct bnxt *bp, bool sh) rc =__bnxt_reserve_rings (bp);if (rc && rc != -ENODEV )netdev_warn (bp->dev,"Unable to reserve tx rings\n" ); - bp->tx_nr_rings_per_tc = bp->tx_nr_rings; + bp->tx_nr_rings_per_tc =bnxt_tx_nr_rings_per_tc (bp);if (sh)bnxt_trim_dflt_sh_rings (bp);
@@ -16392,7 +16416,7 @@ static int bnxt_set_dflt_rings(struct bnxt *bp, bool sh) rc =__bnxt_reserve_rings (bp);if (rc && rc != -ENODEV )netdev_warn (bp->dev,"2nd rings reservation failed.\n" ); - bp->tx_nr_rings_per_tc = bp->tx_nr_rings; + bp->tx_nr_rings_per_tc =bnxt_tx_nr_rings_per_tc (bp); }if (BNXT_CHIP_TYPE_NITRO_A0 (bp)) { bp->rx_nr_rings++;
@@ -16426,7 +16450,7 @@ static int bnxt_init_dflt_ring_mode(struct bnxt *bp)if (rc) goto init_dflt_ring_err; - bp->tx_nr_rings_per_tc = bp->tx_nr_rings; + bp->tx_nr_rings_per_tc =bnxt_tx_nr_rings_per_tc (bp);bnxt_set_dflt_rfs (bp);
drivers/net/ethernet/cadence/macb_main.c +4 -7
@@ -3090,7 +3090,7 @@ static void gem_update_stats(struct macb *bp)/* Add GEM_OCTTXH, GEM_OCTRXH */ val = bp->macb_reg_readl (bp, offset +4 ); bp->ethtool_stats[i] += ((u64 )val) <<32 ; - *(p++) += ((u64 )val) <<32 ; + *p += ((u64 )val) <<32 ; } }
@@ -5391,19 +5391,16 @@ static void macb_remove(struct platform_device *pdev)if (dev) { bp =netdev_priv (dev); +unregister_netdev (dev);phy_exit (bp->sgmii_phy);mdiobus_unregister (bp->mii_bus);mdiobus_free (bp->mii_bus); -unregister_netdev (dev); +device_set_wakeup_enable (&bp->pdev->dev,0 );cancel_work_sync (&bp->hresp_err_bh_work);pm_runtime_disable (&pdev->dev);pm_runtime_dont_use_autosuspend (&pdev->dev); -if (!pm_runtime_suspended (&pdev->dev)) { -macb_clks_disable (bp->pclk, bp->hclk, bp->tx_clk, - bp->rx_clk, bp->tsu_clk); -pm_runtime_set_suspended (&pdev->dev); - } +pm_runtime_set_suspended (&pdev->dev);phylink_destroy (bp->phylink);free_netdev (dev); }
drivers/net/ethernet/dlink/dl2k.c +1 -1
@@ -1091,7 +1091,7 @@ get_stats (struct net_device *dev) dev->stats.rx_bytes +=dr32 (OctetRcvOk); dev->stats.tx_bytes +=dr32 (OctetXmtOk); - dev->stats.multicast =dr32 (McstFramesRcvdOk); + dev->stats.multicast +=dr32 (McstFramesRcvdOk); dev->stats.collisions +=dr32 (SingleColFrames) +dr32 (MultiColFrames);
drivers/net/ethernet/intel/ice/ice.h +1 -0
@@ -509,6 +509,7 @@ enum ice_pf_flags {ICE_FLAG_LINK_LENIENT_MODE_ENA ,ICE_FLAG_PLUG_AUX_DEV ,ICE_FLAG_UNPLUG_AUX_DEV , +ICE_FLAG_AUX_DEV_CREATED ,ICE_FLAG_MTU_CHANGED ,ICE_FLAG_GNSS ,/* GNSS successfully initialized */ ICE_FLAG_DPLL, /* SyncE/PTP dplls initialized */
drivers/net/ethernet/intel/ice/ice_adapter.c +38 -11
96 lines not on this page · raw message
drivers/net/ethernet/intel/ice/ice_adapter.h +2 -2
@@ -32,7 +32,7 @@ struct ice_port_list {* @refcount: Reference count. struct ice_pf objects hold the references. * @ctrl_pf: Control PF of the adapter * @ports: Ports list -* @device_serial_number: DSN cached for collision detection on 32bit systems +* @index: 64-bit index cached for collision detection on 32bit systems */ struct ice_adapter {refcount_t refcount;
@@ -41,7 +41,7 @@ struct ice_adapter {struct ice_pf *ctrl_pf;struct ice_port_list ports; -u64 device_serial_number; +u64 index; };struct ice_adapter *ice_adapter_get (struct pci_dev *pdev);
drivers/net/ethernet/intel/ice/ice_ddp.c +32 -12
77 lines not on this page · raw message
drivers/net/ethernet/intel/ice/ice_idc.c +6 -4
@@ -336,6 +336,7 @@ int ice_plug_aux_dev(struct ice_pf *pf)mutex_lock (&pf->adev_mutex); cdev->adev = adev;mutex_unlock (&pf->adev_mutex); +set_bit (ICE_FLAG_AUX_DEV_CREATED , pf->flags);return 0 ; }
@@ -347,15 +348,16 @@ void ice_unplug_aux_dev(struct ice_pf *pf) {struct auxiliary_device *adev; +if (!test_and_clear_bit (ICE_FLAG_AUX_DEV_CREATED , pf->flags)) +return ; +mutex_lock (&pf->adev_mutex); adev = pf->cdev_info->adev; pf->cdev_info->adev =NULL ;mutex_unlock (&pf->adev_mutex); -if (adev) { -auxiliary_device_delete (adev); -auxiliary_device_uninit (adev); - } +auxiliary_device_delete (adev); +auxiliary_device_uninit (adev); }/**
drivers/net/ethernet/intel/ice/ice_main.c +11 -5
@@ -4532,17 +4532,23 @@ ice_init_tx_topology(struct ice_hw *hw, const struct firmware *firmware)dev_info (dev,"Tx scheduling layers switching feature disabled\n" ); else dev_info(dev, "Tx scheduling layers switching feature enabled\n"); -/* if there was a change in topology ice_cfg_tx_topo triggered -* a CORER and we need to re-init hw +return 0 ; + }else if (err == -ENODEV ) { +/* If we failed to re-initialize the device, we can no longer +* continue loading. */ -ice_deinit_hw (hw); - err =ice_init_hw (hw); - +dev_warn (dev,"Failed to initialize hardware after applying Tx scheduling configuration.\n" );return err; }else if (err == -EIO ) {dev_info (dev,"DDP package does not support Tx scheduling layers switching feature - please update to the latest DDP package and try again\n" ); +return 0 ; + }else if (err == -EEXIST ) { +return 0 ; } +/* Do not treat this as a fatal error. */ +dev_info (dev,"Failed to apply Tx scheduling configuration, err %pe\n" , +ERR_PTR (err));return 0 ; }
drivers/net/ethernet/intel/ice/ice_txrx.c +1 -1
@@ -1295,7 +1295,7 @@ int ice_clean_rx_irq(struct ice_rx_ring *rx_ring, int budget) skb =ice_construct_skb (rx_ring, xdp);/* exit if we failed to retrieve a buffer */ if (!skb) { - rx_ring->ring_stats->rx_stats.alloc_page_failed++; + rx_ring->ring_stats->rx_stats.alloc_buf_failed++; xdp_verdict =ICE_XDP_CONSUMED ; }ice_put_rx_mbuf (rx_ring, xdp, &xdp_xmit, ntc, xdp_verdict);
drivers/net/ethernet/intel/idpf/idpf_singleq_txrx.c +57 -4
82 lines not on this page · raw message
drivers/net/ethernet/intel/idpf/idpf_txrx.c +233 -170
678 lines not on this page · raw message
drivers/net/ethernet/intel/idpf/idpf_txrx.h +30 -8
@@ -107,8 +107,8 @@ do { \*/ #define IDPF_TX_SPLITQ_RE_MIN_GAP 64 -#define IDPF_RX_BI_GEN_M BIT(16) -#define IDPF_RX_BI_BUFID_M GENMASK(15, 0) +#define IDPF_RFL_BI_GEN_M BIT(16) +#define IDPF_RFL_BI_BUFID_M GENMASK(15, 0)#define IDPF_RXD_EOF_SPLITQ VIRTCHNL2_RX_FLEX_DESC_ADV_STATUS0_EOF_M#define IDPF_RXD_EOF_SINGLEQ VIRTCHNL2_RX_BASE_DESC_STATUS_EOF_M
@@ -136,6 +136,8 @@ do { \ ((++(txq)->compl_tag_cur_gen) >= (txq)->compl_tag_gen_max ? \ 0 : (txq)->compl_tag_cur_gen) +#define IDPF_TXBUF_NULL U32_MAX +#define IDPF_TXD_LAST_DESC_CMD (IDPF_TX_DESC_CMD_EOP | IDPF_TX_DESC_CMD_RS)#define IDPF_TX_FLAGS_TSO BIT(0)
@@ -195,6 +197,9 @@ struct idpf_tx_offload_params {* @compl_tag: Associated tag for completion * @td_tag: Descriptor tunneling tag * @offload: Offload parameters +* @prev_ntu: stored TxQ next_to_use in case of rollback +* @prev_refill_ntc: stored refillq next_to_clean in case of packet rollback +* @prev_refill_gen: stored refillq generation bit in case of packet rollback */ struct idpf_tx_splitq_params {enum idpf_tx_desc_dtype_value dtype;
@@ -205,6 +210,10 @@ struct idpf_tx_splitq_params { };struct idpf_tx_offload_params offload; + +u16 prev_ntu; +u16 prev_refill_ntc; +bool prev_refill_gen; };enum idpf_tx_ctx_desc_eipt_offload {
@@ -621,6 +630,7 @@ libeth_cacheline_set_assert(struct idpf_rx_queue, 64,* @cleaned_pkts: Number of packets cleaned for the above said case * @tx_max_bufs: Max buffers that can be transmitted with scatter-gather * @stash: Tx buffer stash for Flow-based scheduling mode +* @refillq: Pointer to refill queue * @compl_tag_bufid_m: Completion tag buffer id mask * @compl_tag_cur_gen: Used to keep track of current completion tag generation * @compl_tag_gen_max: To determine when compl_tag_cur_gen should be reset
@@ -632,6 +642,7 @@ libeth_cacheline_set_assert(struct idpf_rx_queue, 64,* @size: Length of descriptor ring in bytes * @dma: Physical address of ring * @q_vector: Backreference to associated vector +* @buf_pool_size: Total number of idpf_tx_buf */ struct idpf_tx_queue {__cacheline_group_begin_aligned (read_mostly);
@@ -670,6 +681,7 @@ struct idpf_tx_queue {u16 tx_max_bufs;struct idpf_txq_stash *stash; +struct idpf_sw_queue *refillq;u16 compl_tag_bufid_m;u16 compl_tag_cur_gen;
@@ -688,11 +700,12 @@ struct idpf_tx_queue {dma_addr_t dma;struct idpf_q_vector *q_vector; +u32 buf_pool_size;__cacheline_group_end_aligned (cold); }; libeth_cacheline_set_assert(struct idpf_tx_queue, 64, -112 +sizeof (struct u64_stats_sync ), - 24); +120 +sizeof (struct u64_stats_sync ), + 32);/** * struct idpf_buf_queue - software structure representing a buffer queue
@@ -1010,6 +1023,17 @@ static inline void idpf_vport_intr_set_wb_on_itr(struct idpf_q_vector *q_vector) reg->dyn_ctl); } +/** +* idpf_tx_splitq_get_free_bufs - get number of free buf_ids in refillq +* @refillq: pointer to refillq containing buf_ids +*/ +static inline u32 idpf_tx_splitq_get_free_bufs (struct idpf_sw_queue *refillq) +{ +return (refillq->next_to_use > refillq->next_to_clean ? +0 : refillq->desc_count) + + refillq->next_to_use - refillq->next_to_clean -1 ; +} +int idpf_vport_singleq_napi_poll (struct napi_struct *napi,int budget);void idpf_vport_init_num_qs (struct idpf_vport *vport,struct virtchnl2_create_vport *vport_msg);
@@ -1037,10 +1061,8 @@ void idpf_tx_buf_hw_update(struct idpf_tx_queue *tx_q, u32 val, bool xmit_more);unsigned int idpf_size_to_txd_count (unsigned int size);netdev_tx_t idpf_tx_drop_skb (struct idpf_tx_queue *tx_q,struct sk_buff *skb); -void idpf_tx_dma_map_error (struct idpf_tx_queue *txq,struct sk_buff *skb, -struct idpf_tx_buf *first,u16 ring_idx); -unsigned int idpf_tx_desc_count_required (struct idpf_tx_queue *txq, -struct sk_buff *skb); +unsigned int idpf_tx_res_count_required (struct idpf_tx_queue *txq, +struct sk_buff *skb,u32 *buf_count);void idpf_tx_timeout (struct net_device *netdev,unsigned int txqueue);netdev_tx_t idpf_tx_singleq_frame (struct sk_buff *skb,struct idpf_tx_queue *tx_q);
drivers/net/ethernet/intel/ixgbe/ixgbe_e610.c +1 -1
@@ -3123,7 +3123,7 @@ static int ixgbe_get_orom_ver_info(struct ixgbe_hw *hw,if (err)return err; - combo_ver =le32_to_cpu (civd.combo_ver); + combo_ver =get_unaligned_le32 (&civd.combo_ver); orom->major = (u8 )FIELD_GET (IXGBE_OROM_VER_MASK , combo_ver); orom->patch = (u8 )FIELD_GET (IXGBE_OROM_VER_PATCH_MASK , combo_ver);
drivers/net/ethernet/intel/ixgbe/ixgbe_type_e610.h +1 -1
@@ -1150,7 +1150,7 @@ struct ixgbe_orom_civd_info {__le32 combo_ver;/* Combo Image Version number */ u8 combo_name_len;/* Length of the unicode combo image version string, max of 32 */ __le16 combo_name[32 ];/* Unicode string representing the Combo Image version */ -}; +} __packed;/* Function specific capabilities */ struct ixgbe_hw_func_caps {
drivers/net/ethernet/marvell/octeontx2/af/cgx.c +7 -0
@@ -1940,6 +1940,13 @@ static int cgx_probe(struct pci_dev *pdev, const struct pci_device_id *id) goto err_release_regions; } +if (!is_cn20k (pdev) && + !is_cgx_mapped_to_nix (pdev->subsystem_device, cgx->cgx_id)) { +dev_notice (dev,"CGX %d not mapped to NIX, skipping probe\n" , + cgx->cgx_id); + goto err_release_regions; + } + cgx->lmac_count = cgx->mac_ops->get_nr_lmacs (cgx);if (!cgx->lmac_count) {dev_notice (dev,"CGX %d LMAC count is zero, skipping probe\n" , cgx->cgx_id);
drivers/net/ethernet/marvell/octeontx2/af/mcs_rvu_if.c +3 -3
@@ -97,7 +97,7 @@ int mcs_add_intr_wq_entry(struct mcs *mcs, struct mcs_intr_event *event)if (pcifunc &RVU_PFVF_FUNC_MASK ) pfvf = &mcs->vf[rvu_get_hwvf (rvu, pcifunc)];else - pfvf = &mcs->pf[rvu_get_pf (pcifunc)]; + pfvf = &mcs->pf[rvu_get_pf (rvu->pdev, pcifunc)]; event->intr_mask &= pfvf->intr_mask;
@@ -123,7 +123,7 @@ static int mcs_notify_pfvf(struct mcs_intr_event *event, struct rvu *rvu)struct mcs_intr_info *req;int pf; - pf =rvu_get_pf (event->pcifunc); + pf =rvu_get_pf (rvu->pdev, event->pcifunc);mutex_lock (&rvu->mbox_lock);
@@ -193,7 +193,7 @@ int rvu_mbox_handler_mcs_intr_cfg(struct rvu *rvu,if (pcifunc &RVU_PFVF_FUNC_MASK ) pfvf = &mcs->vf[rvu_get_hwvf (rvu, pcifunc)];else - pfvf = &mcs->pf[rvu_get_pf (pcifunc)]; + pfvf = &mcs->pf[rvu_get_pf (rvu->pdev, pcifunc)]; mcs->pf_map[0 ] = pcifunc; pfvf->intr_mask = req->intr_mask;
drivers/net/ethernet/marvell/octeontx2/af/rvu.c +12 -18
@@ -294,7 +294,7 @@ int rvu_get_blkaddr(struct rvu *rvu, int blktype, u16 pcifunc) devnum =rvu_get_hwvf (rvu, pcifunc); }else { is_pf = true; - devnum =rvu_get_pf (pcifunc); + devnum =rvu_get_pf (rvu->pdev, pcifunc); }/* Check if the 'pcifunc' has a NIX LF from 'BLKADDR_NIX0' or
@@ -359,7 +359,7 @@ static void rvu_update_rsrc_map(struct rvu *rvu, struct rvu_pfvf *pfvf, devnum =rvu_get_hwvf (rvu, pcifunc); }else { is_pf = true; - devnum =rvu_get_pf (pcifunc); + devnum =rvu_get_pf (rvu->pdev, pcifunc); } block->fn_map[lf] = attach ? pcifunc :0 ;
@@ -400,11 +400,6 @@ static void rvu_update_rsrc_map(struct rvu *rvu, struct rvu_pfvf *pfvf,rvu_write64 (rvu,BLKADDR_RVUM , reg | (devnum <<16 ), num_lfs); } -inline int rvu_get_pf (u16 pcifunc) -{ -return (pcifunc >>RVU_PFVF_PF_SHIFT ) &RVU_PFVF_PF_MASK ; -} -void rvu_get_pf_numvfs (struct rvu *rvu,int pf,int *numvfs,int *hwvf) {u64 cfg;
@@ -422,7 +417,7 @@ int rvu_get_hwvf(struct rvu *rvu, int pcifunc)int pf, func;u64 cfg; - pf =rvu_get_pf (pcifunc); + pf =rvu_get_pf (rvu->pdev, pcifunc); func = pcifunc &RVU_PFVF_FUNC_MASK ;/* Get first HWVF attached to this PF */
@@ -437,7 +432,7 @@ struct rvu_pfvf *rvu_get_pfvf(struct rvu *rvu, int pcifunc)if (pcifunc &RVU_PFVF_FUNC_MASK )return &rvu->hwvf[rvu_get_hwvf (rvu, pcifunc)];else -return &rvu->pf[rvu_get_pf (pcifunc)]; +return &rvu->pf[rvu_get_pf (rvu->pdev, pcifunc)]; }static bool is_pf_func_valid (struct rvu *rvu,u16 pcifunc)
@@ -445,7 +440,7 @@ static bool is_pf_func_valid(struct rvu *rvu, u16 pcifunc)int pf, vf, nvfs;u64 cfg; - pf =rvu_get_pf (pcifunc); + pf =rvu_get_pf (rvu->pdev, pcifunc);if (pf >= rvu->hw->total_pfs)return false;
@@ -1487,7 +1482,7 @@ int rvu_get_nix_blkaddr(struct rvu *rvu, u16 pcifunc) pf =rvu_get_pfvf (rvu, pcifunc & ~RVU_PFVF_FUNC_MASK );/* All CGX mapped PFs are set with assigned NIX block during init */ -if (is_pf_cgxmapped (rvu,rvu_get_pf (pcifunc))) { +if (is_pf_cgxmapped (rvu,rvu_get_pf (rvu->pdev, pcifunc))) { blkaddr = pf->nix_blkaddr; }else if (is_lbk_vf (rvu, pcifunc)) { vf = pcifunc -1 ;
@@ -1501,7 +1496,7 @@ int rvu_get_nix_blkaddr(struct rvu *rvu, u16 pcifunc) }/* if SDP1 then the blkaddr is NIX1 */ -if (is_sdp_pfvf (pcifunc) && pf->sdp_info->node_id ==1 ) +if (is_sdp_pfvf (rvu, pcifunc) && pf->sdp_info->node_id ==1 ) blkaddr =BLKADDR_NIX1 ;switch (blkaddr) {
@@ -2006,7 +2001,7 @@ int rvu_mbox_handler_vf_flr(struct rvu *rvu, struct msg_req *req, vf = pcifunc &RVU_PFVF_FUNC_MASK ; cfg =rvu_read64 (rvu,BLKADDR_RVUM , -RVU_PRIV_PFX_CFG (rvu_get_pf (pcifunc))); +RVU_PRIV_PFX_CFG (rvu_get_pf (rvu->pdev, pcifunc))); numvfs = (cfg >>12 ) &0xFF ;if (vf && vf <= numvfs)
@@ -2229,9 +2224,8 @@ static void __rvu_mbox_handler(struct rvu_work *mwork, int type, bool poll)/* Set which PF/VF sent this message based on mbox IRQ */ switch (type) {case TYPE_AFPF : - msg->pcifunc &= - ~(RVU_PFVF_PF_MASK <<RVU_PFVF_PF_SHIFT ); - msg->pcifunc |= (devid <<RVU_PFVF_PF_SHIFT ); + msg->pcifunc &=rvu_pcifunc_pf_mask (rvu->pdev); + msg->pcifunc |=rvu_make_pcifunc (rvu->pdev, devid,0 );break ;case TYPE_AFVF : msg->pcifunc &=
@@ -2249,7 +2243,7 @@ static void __rvu_mbox_handler(struct rvu_work *mwork, int type, bool poll)if (msg->pcifunc &RVU_PFVF_FUNC_MASK )dev_warn (rvu->dev,"Error %d when processing message %s (0x%x) from PF%d:VF%d\n" , err,otx2_mbox_id2name (msg->id), - msg->id,rvu_get_pf (msg->pcifunc), + msg->id,rvu_get_pf (rvu->pdev, msg->pcifunc), (msg->pcifunc &RVU_PFVF_FUNC_MASK ) -1 );else dev_warn(rvu->dev, "Error %d when processing message %s (0x%x) from PF%d\n",
@@ -2773,7 +2767,7 @@ static void rvu_flr_handler(struct work_struct *work) cfg =rvu_read64 (rvu,BLKADDR_RVUM ,RVU_PRIV_PFX_CFG (pf)); numvfs = (cfg >>12 ) &0xFF ; - pcifunc = pf <<RVU_PFVF_PF_SHIFT ; + pcifunc =rvu_make_pcifunc (rvu->pdev, pf,0 );for (vf =0 ; vf < numvfs; vf++)__rvu_flr_handler (rvu, (pcifunc | (vf +1 )));
drivers/net/ethernet/marvell/octeontx2/af/rvu.h +57 -9
112 lines not on this page · raw message
drivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c +34 -34
59 lines not on this page · raw message
drivers/net/ethernet/marvell/octeontx2/af/rvu_cn10k.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/af/rvu_cpt.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c +11 -11
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c +29 -25
54 lines not on this page · raw message
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c +5 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_hash.c +8 -8
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_hash.h +1 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/af/rvu_rep.c +6 -7
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/af/rvu_sdp.c +5 -5
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/af/rvu_switch.c +4 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/nic/cn10k_ipsec.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/nic/cn10k_ipsec.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.h +2 -10
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c +15 -9
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/nic/otx2_reg.h +0 -30
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/nic/otx2_vf.c +10 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/nic/rep.c +16 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/nic/rep.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/devlink.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en/port_buffer.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en/port_buffer.h +12 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_main.c +18 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c +7 -8
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/fw_reset.c +73 -53
126 lines not on this page · raw message
drivers/net/ethernet/mellanox/mlx5/core/fw_reset.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/sf/devlink.c +10 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/sf/sf.h +6 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/action.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/pat_arg.c +4 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/pool.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/meta/fbnic/fbnic_netdev.c +4 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/meta/fbnic/fbnic_pci.c +0 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c +11 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c +5 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +4 -2
Lines of this file are not shown. View the raw message.
drivers/pinctrl/mediatek/pinctrl-airoha.c +4 -4
Lines of this file are not shown. View the raw message.
drivers/platform/x86/intel/int3472/discrete.c +6 -0
Lines of this file are not shown. View the raw message.
drivers/thermal/mediatek/lvts_thermal.c +61 -13
74 lines not on this page · raw message
include/linux/platform_data/x86/int3472.h +1 -0
Lines of this file are not shown. View the raw message.
include/linux/soc/marvell/silicons.h new file +25 -0
Lines of this file are not shown. View the raw message.
net/bluetooth/hci_conn.c +41 -17
58 lines not on this page · raw message
net/rose/rose_route.c +38 -24
62 lines not on this page · raw message
tools/perf/util/symbol-minimal.c +27 -28
55 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.