Skip to contentSkip to conversation

Linux 6.16.5

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Sep 4, 2025 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'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()

author maintainer
#1 lore raw
Documentation/devicetree/bindings/display/msm/qcom,mdp5.yaml +0 -1
index e153f8d26e7a..2735c78b0b67 100644
@@ -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
index e5509045fe3f..58a78d215577 100644
@@ -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
index 6e8aa8e72601..49f1a810df16 100644
@@ -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
index e151585c6cca..7f58ef66dbc5 100644
@@ -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
index 00ab1d648db6..566ab1d2e0c6 100644
@@ -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
index 1ce20b7d05cb..c4d7aa5753b0 100644
@@ -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
index 5a75283d17f1..6031a0272d87 100644
@@ -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
index 5b3c093611ba..7209d00a9c25 100644
@@ -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
index a5f88cb717f3..05f3cc2d8e31 100644
@@ -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(&reg_val, uaddr, reg_size))
 			return -EFAULT;
 		if (reg_val != cntx->vector.vlenb)
arch/x86/kernel/cpu/intel.c +1 -1
index 076eaa41b8c8..98ae4c37c93e 100644
@@ -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
index 097e39327942..514f63340880 100644
@@ -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, &microcode_cache, plist)
 		if (patch_cpus_equivalent(p, &n, false))
 			return p;
arch/x86/kernel/cpu/topology_amd.c +14 -9
index 843b1655ab45..827dd0dbb6e9 100644
@@ -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
index 73418dc0ebb2..0725d2cae742 100644
@@ -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
index 45c8cabba524..7d4cb1cbd629 100644
@@ -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
index 1fe22000a379..b538f2c0febc 100644
@@ -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
index efe71b1a1da1..9104c3a34642 100644
@@ -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
index eeae160c898d..fa3c76a2b49d 100644
@@ -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
index d529bcb03775..062def303dce 100644
@@ -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
index 12c0e966fa65..b4b2d3d1cbc2 100644
@@ -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
index 56645b3eb717..cc47e361089a 100644
@@ -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
index 931b72580fd9..92e49babd79a 100644
@@ -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
index f741ca279052..e15d11ed165e 100644
@@ -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
index 3133d826f5fa..0e8dd838099e 100644
@@ -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
index 94196ad87105..ea0a35355657 100644
@@ -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
index dfb6cfd83760..02138aa55793 100644
@@ -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
index aac0de86f3e8..a966ede1dba2 100644
@@ -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
index e632e97d63be..96566870f079 100644
@@ -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
index 097ec7d99c5a..b56e0ba73032 100644
@@ -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
index 39ee81085088..f417c5eb0f41 100644
@@ -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
index dc622c78db9d..f2a6559a2710 100644
@@ -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
index 7c0c12dde488..34131ae2c207 100644
@@ -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
index 8803cd4a8bc9..4404e1b527b5 100644
@@ -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
index cbc4f37da8ba..02349bd44001 100644
@@ -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
index c0ed110a7d30..4bddb9504796 100644
@@ -729,6 +729,8 @@ bool dpu_encoder_needs_modeset(struct drm_encoder *drm_enc, struct drm_atomic_st
 		return 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
index 421138bc3cb7..d059ed1e4b70 100644
@@ -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
index d4f71bb54e84..081d59979e31 100644
@@ -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
index 35d5397e73b4..f2c00716f9d1 100644
@@ -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
index 501ffc585a9f..c7a7b633d747 100644
@@ -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
index 11d5b923d6e7..e2c55f4b9c5a 100644
@@ -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
index b7da3ab44c27..7c43397c19e6 100644
@@ -103,7 +103,7 @@ gm200_flcn_pio_imem_wr_init(struct nvkm_falcon *falcon, u8 port, bool sec, u32 i
 static 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
index 52412965fac1..5b721bd9d799 100644
@@ -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
index 7aa2c17825da..74635b444122 100644
@@ -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
index f87276df18f2..82872a51f098 100644
@@ -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
index 3b11b1d52bee..e278aad1a6eb 100644
@@ -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
index 0158ec0ae3b2..e54ca835b582 100644
@@ -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
index 4b45e31f0bab..d27dcfb2b9e4 100644
@@ -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
index 0ad7d25d9864..69771fd35006 100644
@@ -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
index 33cc5820f2be..a752c667fbca 100644
@@ -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
index 77c2d45ac62a..6f5c71660d82 100644
@@ -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
index 34fa71ceec2b..cce54dd9884a 100644
@@ -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
index 10a3bc5f931b..aaef405a717e 100644
@@ -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
index a1c54ffe02b4..4c22bd2ba170 100644
@@ -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
index 2738ce947434..0f76e241e0af 100644
@@ -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
index 9bf9ce8dc803..416160cfde77 100644
@@ -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
index 8a8c4a46f927..142e5c40192e 100644
@@ -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
index 6ddb584bd611..97085a6a7452 100644
@@ -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
index c105df7f6c87..4698722e0d0a 100644
@@ -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
index 955b39d22524..9b2c710f8da1 100644
@@ -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
index 2b05722d4dbe..ea8a0ab47afd 100644
@@ -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
index ec8752c298e6..cb76ab78904f 100644
@@ -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
index d1f1ae5ea161..d949d2ba6cb9 100644
@@ -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
index da9b7715df05..f828f38cd768 100644
@@ -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
index ddd0ad68185b..0ef11b7ab477 100644
@@ -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
index ac15c0d2bc1a..409467847c75 100644
@@ -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
index 6ab53e430f91..420d45c2558b 100644
@@ -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
index 0a11b4281092..d42892c8c5a1 100644
@@ -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
index 0e5107fe62ad..c50cf3ad190e 100644
@@ -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
index 36a0f828a6f8..54b314ceee73 100644
@@ -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
index 71ea25de1bac..754c176fd4a7 100644
@@ -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
index 09df67f03cf4..38a41d81de0f 100644
@@ -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
index 971993586fb4..442305463cc0 100644
@@ -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
index 0277d226293e..d7030dfa5dad 100644
@@ -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
index a8025f0486c9..39f664d60ecf 100644
@@ -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
index 4a3370a40dd8..05adc54535eb 100644

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

drivers/net/ethernet/marvell/octeontx2/af/rvu_cpt.c +2 -2
index 3c5bbaf12e59..f404117bf6c8 100644

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

drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c +11 -11
index c827da626471..0c20642f81b9 100644

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
index da15bb451178..c7c70429eb6c 100644

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

drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_hash.c +8 -8
index d2661e7fabdb..999f6d93c7fe 100644

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

drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_hash.h +1 -3
index 57a09328d46b..cb25cf478f1f 100644

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

drivers/net/ethernet/marvell/octeontx2/af/rvu_rep.c +6 -7
index 32953cca108c..03099bc570bd 100644

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

drivers/net/ethernet/marvell/octeontx2/af/rvu_sdp.c +5 -5
index 38cfe148f4b7..e4a5f9fa6fd4 100644

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

drivers/net/ethernet/marvell/octeontx2/af/rvu_switch.c +4 -4
index 268efb7c1c15..49ce38685a7e 100644

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

drivers/net/ethernet/marvell/octeontx2/nic/cn10k_ipsec.c +1 -1
index a6500e3673f2..c691f0722154 100644

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

drivers/net/ethernet/marvell/octeontx2/nic/cn10k_ipsec.h +1 -1
index 9965df0faa3e..43fbce0d6039 100644

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

drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c +3 -1
index 6b5c9536d26d..6f7b608261d9 100644

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

drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.h +2 -10
index ca0e6ab12ceb..f4fc915a0b5f 100644

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

drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c +15 -9
index db7c466fdc39..c6d2f2249cc3 100644

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

drivers/net/ethernet/marvell/octeontx2/nic/otx2_reg.h +0 -30
index e3aee6e36215..858f084b9d47 100644

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

drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c +2 -1
index 9a226ca74425..5f80b23c5335 100644

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

drivers/net/ethernet/marvell/octeontx2/nic/otx2_vf.c +10 -0
index 8a8b598bd389..76dd2e965cf0 100644

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

drivers/net/ethernet/marvell/octeontx2/nic/rep.c +16 -4
index 2cd3da3b6843..b476733a0234 100644

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

drivers/net/ethernet/marvell/octeontx2/nic/rep.h +1 -0
index 38446b3e4f13..5bc9e2c7d800 100644

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

drivers/net/ethernet/mellanox/mlx5/core/devlink.c +1 -1
index 73cd74644378..ca03dbcb07da 100644

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

drivers/net/ethernet/mellanox/mlx5/core/en/port_buffer.c +2 -1
index 3efa8bf1d14e..4720523813b9 100644

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

drivers/net/ethernet/mellanox/mlx5/core/en/port_buffer.h +12 -0
index f4a19ffbb641..66d276a1be83 100644

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

drivers/net/ethernet/mellanox/mlx5/core/en_main.c +18 -1
index 16d818943487..e39c51cfc8e6 100644

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

drivers/net/ethernet/mellanox/mlx5/core/fs_core.c +7 -8
index 3dd9a6f40709..29ce09af59ae 100644

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
index ea527d06a85f..d5b28525c960 100644

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

drivers/net/ethernet/mellanox/mlx5/core/sf/devlink.c +10 -0
index 0864ba625c07..3304f25cc805 100644

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

drivers/net/ethernet/mellanox/mlx5/core/sf/sf.h +6 -0
index 860f9ddb7107..89559a37997a 100644

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

drivers/net/ethernet/mellanox/mlx5/core/steering/hws/action.c +1 -1
index 447ea3f8722c..8e4a085f4a2e 100644

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

drivers/net/ethernet/mellanox/mlx5/core/steering/hws/pat_arg.c +4 -2
index 51e4c551e0ef..d56271a9e4f0 100644

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

drivers/net/ethernet/mellanox/mlx5/core/steering/hws/pool.c +1 -0
index 7e37d6e9eb83..7b5071c3df36 100644

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

drivers/net/ethernet/meta/fbnic/fbnic_netdev.c +4 -0
index 553bd8b8bb05..d3d1003df831 100644

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

drivers/net/ethernet/meta/fbnic/fbnic_pci.c +0 -2
index 249d3ef862d5..38045cce3801 100644

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

drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c +11 -2
index 6cadf8de4fdf..00e929bf280b 100644

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

drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c +5 -4
index 5dcc95bc0ad2..4d6bb995d8d8 100644

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

drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +4 -2
index e0fb06af1f94..36082d4917bc 100644

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

drivers/net/hyperv/netvsc.c +8 -9
index 720104661d7f..60a4629fe6ba 100644

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

drivers/net/hyperv/rndis_filter.c +16 -7
index 9e73959e61ee..c35f9685b6bf 100644

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

drivers/net/phy/mscc/mscc.h +4 -0
index 58c6d47fbe04..2bfe314ef881 100644

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

drivers/net/phy/mscc/mscc_main.c +1 -3
index c3209cf00e96..ac9b6130ef50 100644

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

drivers/net/phy/mscc/mscc_ptp.c +21 -13
index de6c7312e8f2..72847320cb65 100644

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

drivers/net/usb/qmi_wwan.c +3 -0
index e56901bb6ebc..11352d85475a 100644

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

drivers/of/dynamic.c +7 -2
index 0aba760f7577..2eaaddcb0ec4 100644

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

drivers/of/of_reserved_mem.c +13 -4
index 77016c0cc296..2e9ea751ed2d 100644

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

drivers/pinctrl/Kconfig +1 -0
index 33db9104df17..3952f77081a3 100644

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

drivers/pinctrl/mediatek/pinctrl-airoha.c +4 -4
index b97b28ebb37a..3fa5131d81e5 100644

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

drivers/platform/x86/intel/int3472/discrete.c +6 -0
index 4c0aed6e626f..bdfb8a800c54 100644

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

drivers/scsi/scsi_sysfs.c +2 -2
index d772258e29ad..e6464b998960 100644

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

drivers/vhost/net.c +7 -2
index 7cbfc7d718b3..53551aafd470 100644

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

fs/efivarfs/super.c +4 -0
index 284d6dbba2ec..5c0d45cccc10 100644

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

fs/erofs/super.c +14 -10
index 799fef437aa8..cad87e4d6694 100644

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

fs/erofs/zdata.c +11 -2
index e3f28a1bb945..9bb53f00c2c6 100644

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

fs/smb/client/cifsfs.c +14 -0
index 697badd0445a..0375250ccb2b 100644

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

fs/smb/client/inode.c +32 -2
index 75be4b46bc6f..fe453a4b3dc8 100644

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

fs/smb/client/smb2inode.c +5 -2
index a11a2a693c51..8b271bbe41c4 100644

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

fs/xfs/libxfs/xfs_attr_remote.c +7 -0
index 4c44ce1c8a64..bff3dc226f81 100644

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

fs/xfs/libxfs/xfs_da_btree.c +6 -0
index 17d9e6154f19..723a0643b838 100644

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

include/linux/atmdev.h +1 -0
index 45f2f278b50a..70807c679f1a 100644

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

include/linux/dma-map-ops.h +3 -0
index f48e5fb88bd5..332b80c42b6f 100644

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

include/linux/firmware/qcom/qcom_scm.h +2 -3
index 983e1591bbba..0f667bf1d4d9 100644

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

include/linux/platform_data/x86/int3472.h +1 -0
index 78276a11c48d..1571e9157fa5 100644

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

include/linux/soc/marvell/silicons.h new file +25 -0
new file mode 100644
index 000000000000..66bb9bfaf17d

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

include/linux/virtio_config.h +0 -2
index b3e1d30c765b..169c7d367fac 100644

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

include/net/bluetooth/hci_sync.h +1 -1
index 5224f57f6af2..e352a4e0ef8d 100644

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

include/net/rose.h +17 -1
index 23267b4efcfa..2b5491bbf39a 100644

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

include/uapi/linux/vhost.h +2 -2
index e72f2655459e..d284a35d8104 100644

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

io_uring/io-wq.c +8 -0
index be91edf34f01..17dfaa0395c4 100644

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

io_uring/kbuf.c +13 -7
index f2d2cc319faa..19a8bde5e1e1 100644

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

kernel/dma/contiguous.c +0 -2
index 67af8a55185d..d9b9dcba6ff7 100644

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

kernel/dma/pool.c +2 -2
index 7b04f7575796..ee45dee33d49 100644

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

kernel/events/core.c +6 -0
index 8060c2857bb2..872122e074e5 100644

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

kernel/trace/fgraph.c +1 -0
index c5b207992fb4..dac2d58f3949 100644

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

kernel/trace/trace.c +2 -2
index 8ea6ada38c40..b91fa02cc54a 100644

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

kernel/trace/trace_functions_graph.c +16 -6
index 14d74a7491b8..97fb32aaebeb 100644

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

net/atm/common.c +12 -3
index d7f7976ea13a..881c7f259dbd 100644

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/bluetooth/hci_event.c +23 -2
index 5ef54853bc5e..0ffdbe249f5d 100644

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

net/bluetooth/hci_sync.c +3 -3
index 115dc1cd99ce..749bba1512eb 100644

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

net/bluetooth/mgmt.c +7 -2
index 3166f5fb876b..50634ef5c8b7 100644

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

net/core/page_pool.c +4 -2
index 368412baad26..e14d743554ec 100644

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

net/ipv4/route.c +7 -3
index 7b8e80c4f1d9..bf82434c3541 100644

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

net/l2tp/l2tp_ppp.c +8 -17
index fc5c2fd8f34c..5e12e7ce17d8 100644

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

net/rose/af_rose.c +7 -6
index 4e72b636a46a..543f9e8ebb69 100644

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

net/rose/rose_in.c +6 -6
index 4d67f36dce1b..7caae93937ee 100644

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

net/rose/rose_route.c +38 -24

62 lines not on this page · raw message

net/rose/rose_timer.c +1 -1
index 020369c49587..bb60a1654d61 100644

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

net/sctp/ipv6.c +2 -0
index a9ed2ccab1bd..2bb5e19e10ca 100644

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

sound/soc/codecs/lpass-tx-macro.c +1 -1
index 27bae58f4072..fe000ff522d2 100644

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

sound/soc/codecs/rt1320-sdw.c +2 -1
index 015cc710e6dc..d6d54168cccd 100644

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

sound/soc/codecs/rt721-sdca.c +2 -0
index ba080957e933..98d8ebc6607f 100644

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

sound/soc/codecs/rt721-sdca.h +4 -0
index 0a82c107b19a..71fac9cd8739 100644

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

tools/perf/util/symbol-minimal.c +27 -28

55 lines not on this page · raw message

tools/tracing/latency/Makefile.config +8 -0
index 0fe6b50f029b..6efa13e3ca93 100644

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

tools/tracing/rtla/Makefile.config +8 -0
index 5f2231d8d626..07ff5e8f3006 100644

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

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

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