Skip to contentSkip to conversation

Linux 6.1.5

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Jan 12, 2023 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 6.1.5 kernel.

All users of the 6.1 kernel series must upgrade.

The updated 6.1.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.1.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary

thanks,

greg k-h

------------

 Makefile                                                            |    2 
 arch/arm/include/asm/thread_info.h                                  |   13 
 arch/mips/ralink/of.c                                               |    2 
 arch/riscv/include/asm/uaccess.h                                    |    2 
 arch/riscv/kernel/probes/simulate-insn.h                            |    4 
 arch/x86/kernel/cpu/bugs.c                                          |    2 
 arch/x86/kernel/crash.c                                             |    4 
 block/blk-merge.c                                                   |   10 
 drivers/acpi/acpi_video.c                                           |   17 
 drivers/block/ublk_drv.c                                            |    3 
 drivers/block/virtio_blk.c                                          |   33 -
 drivers/char/tpm/tpm-interface.c                                    |    4 
 drivers/crypto/virtio/virtio_crypto_skcipher_algs.c                 |    3 
 drivers/firmware/efi/efi.c                                          |    4 
 drivers/firmware/efi/libstub/efistub.h                              |    2 
 drivers/firmware/efi/libstub/random.c                               |   42 +
 drivers/gpio/gpio-pca953x.c                                         |    3 
 drivers/gpio/gpio-sifive.c                                          |    1 
 drivers/gpu/drm/amd/amdgpu/amdgpu.h                                 |    1 
 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h                          |    4 
 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c                    |   39 +
 drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c                             |   27 +
 drivers/gpu/drm/amd/amdgpu/amdgpu_object.c                          |   19 
 drivers/gpu/drm/amd/amdkfd/kfd_process.c                            |   24 
 drivers/gpu/drm/amd/amdkfd/kfd_topology.c                           |    2 
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c                   |   16 
 drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_32.c      |   39 +
 drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.c |   69 ++
 drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.h |   18 
 drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.h               |    2 
 drivers/gpu/drm/i915/display/intel_dsi_vbt.c                        |   94 +++
 drivers/gpu/drm/i915/gvt/debugfs.c                                  |   17 
 drivers/gpu/drm/i915/gvt/gtt.c                                      |   17 
 drivers/gpu/drm/i915/gvt/scheduler.c                                |    1 
 drivers/gpu/drm/i915/i915_irq.c                                     |    3 
 drivers/gpu/drm/i915/i915_reg.h                                     |    1 
 drivers/gpu/drm/imx/ipuv3-plane.c                                   |   14 
 drivers/gpu/drm/meson/meson_viu.c                                   |    5 
 drivers/gpu/drm/panfrost/panfrost_drv.c                             |   27 -
 drivers/gpu/drm/panfrost/panfrost_gem.c                             |   16 
 drivers/gpu/drm/panfrost/panfrost_gem.h                             |    5 
 drivers/gpu/drm/virtio/virtgpu_object.c                             |    6 
 drivers/infiniband/hw/mlx5/counters.c                               |    6 
 drivers/infiniband/hw/mlx5/qp.c                                     |   49 +
 drivers/net/bonding/bond_3ad.c                                      |    1 
 drivers/net/bonding/bond_main.c                                     |    8 
 drivers/net/dsa/mv88e6xxx/Kconfig                                   |    4 
 drivers/net/dsa/qca/qca8k-8xxx.c                                    |  106 +---
 drivers/net/dsa/qca/qca8k.h                                         |    5 
 drivers/net/ethernet/amazon/ena/ena_com.c                           |   29 -
 drivers/net/ethernet/amazon/ena/ena_ethtool.c                       |    6 
 drivers/net/ethernet/amazon/ena/ena_netdev.c                        |   83 ++-
 drivers/net/ethernet/amazon/ena/ena_netdev.h                        |   17 
 drivers/net/ethernet/amd/xgbe/xgbe-drv.c                            |    3 
 drivers/net/ethernet/amd/xgbe/xgbe-i2c.c                            |    4 
 drivers/net/ethernet/amd/xgbe/xgbe-mdio.c                           |    4 
 drivers/net/ethernet/broadcom/bnxt/bnxt.c                           |   22 
 drivers/net/ethernet/broadcom/bnxt/bnxt.h                           |   15 
 drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c                       |   20 
 drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.h                       |    6 
 drivers/net/ethernet/hisilicon/hns3/hns3_enet.c                     |   10 
 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c             |  132 +++--
 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h             |    7 
 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c              |   71 ++
 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c           |    3 
 drivers/net/ethernet/intel/ice/ice_xsk.c                            |    2 
 drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c            |   30 -
 drivers/net/ethernet/mellanox/mlx5/core/devlink.c                   |    4 
 drivers/net/ethernet/mellanox/mlx5/core/en/reporter_rx.c            |    6 
 drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c                  |    7 
 drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c           |    9 
 drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_geneve.c          |    5 
 drivers/net/ethernet/mellanox/mlx5/core/en_main.c                   |    2 
 drivers/net/ethernet/mellanox/mlx5/core/esw/acl/egress_lgcy.c       |    7 
 drivers/net/ethernet/mellanox/mlx5/core/esw/acl/ingress_lgcy.c      |   33 +
 drivers/net/ethernet/mellanox/mlx5/core/eswitch.c                   |   30 -
 drivers/net/ethernet/mellanox/mlx5/core/eswitch.h                   |    6 
 drivers/net/ethernet/mellanox/mlx5/core/health.c                    |    6 
 drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c               |    4 
 drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c                   |    1 
 drivers/net/ethernet/mellanox/mlx5/core/main.c                      |    4 
 drivers/net/ethernet/microchip/lan966x/lan966x_port.c               |    2 
 drivers/net/ethernet/microchip/sparx5/sparx5_main.c                 |    2 
 drivers/net/ethernet/qlogic/qed/qed_debug.c                         |   28 -
 drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c               |    8 
 drivers/net/ethernet/qlogic/qlcnic/qlcnic_dcb.h                     |   10 
 drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c                    |    8 
 drivers/net/phy/xilinx_gmii2rgmii.c                                 |    1 
 drivers/net/usb/rndis_host.c                                        |    3 
 drivers/net/veth.c                                                  |    5 
 drivers/net/vmxnet3/vmxnet3_drv.c                                   |    8 
 drivers/net/vrf.c                                                   |    6 
 drivers/net/vxlan/vxlan_core.c                                      |   19 
 drivers/net/wireless/ath/ath11k/qmi.c                               |    3 
 drivers/net/wireless/ath/ath9k/htc.h                                |   14 
 drivers/nvme/host/core.c                                            |   32 -
 drivers/nvme/host/nvme.h                                            |    2 
 drivers/nvme/target/admin-cmd.c                                     |   35 -
 drivers/of/fdt.c                                                    |    6 
 drivers/phy/qualcomm/phy-qcom-qmp-combo.c                           |   20 
 drivers/thermal/intel/int340x_thermal/processor_thermal_rfim.c      |    4 
 drivers/usb/dwc3/dwc3-xilinx.c                                      |    1 
 drivers/usb/dwc3/gadget.c                                           |    5 
 drivers/vdpa/mlx5/net/mlx5_vnet.c                                   |   10 
 drivers/vdpa/vdpa_sim/vdpa_sim.c                                    |    7 
 drivers/vdpa/vdpa_sim/vdpa_sim_blk.c                                |    4 
 drivers/vdpa/vdpa_sim/vdpa_sim_net.c                                |    4 
 drivers/vdpa/virtio_pci/vp_vdpa.c                                   |    2 
 drivers/vhost/vdpa.c                                                |   52 +
 drivers/vhost/vhost.c                                               |    4 
 drivers/vhost/vringh.c                                              |    5 
 drivers/vhost/vsock.c                                               |    9 
 drivers/video/fbdev/matrox/matroxfb_base.c                          |    4 
 fs/btrfs/disk-io.c                                                  |    8 
 fs/btrfs/disk-io.h                                                  |    2 
 fs/btrfs/extent-io-tree.c                                           |    2 
 fs/btrfs/extent_io.c                                                |   11 
 fs/btrfs/file.c                                                     |    2 
 fs/btrfs/ioctl.c                                                    |    9 
 fs/btrfs/rcu-string.h                                               |    6 
 fs/btrfs/super.c                                                    |    2 
 fs/btrfs/tree-defrag.c                                              |    6 
 fs/ceph/caps.c                                                      |    2 
 fs/ceph/locks.c                                                     |    4 
 fs/ceph/super.h                                                     |    1 
 fs/cifs/sess.c                                                      |    3 
 fs/cifs/smb2ops.c                                                   |    3 
 fs/hfs/inode.c                                                      |   15 
 fs/ksmbd/auth.c                                                     |    3 
 fs/ksmbd/connection.c                                               |    7 
 fs/ksmbd/smb2pdu.c                                                  |    7 
 fs/ksmbd/transport_tcp.c                                            |    5 
 fs/locks.c                                                          |   23 
 fs/nfsd/nfs4xdr.c                                                   |   11 
 fs/nfsd/nfssvc.c                                                    |    2 
 fs/ntfs3/file.c                                                     |    4 
 fs/udf/inode.c                                                      |    2 
 include/acpi/video.h                                                |    2 
 include/drm/drm_plane_helper.h                                      |    1 
 include/linux/dsa/tag_qca.h                                         |    4 
 include/linux/efi.h                                                 |    2 
 include/linux/fs.h                                                  |    6 
 include/linux/mlx5/device.h                                         |    5 
 include/linux/mlx5/mlx5_ifc.h                                       |    3 
 include/linux/netfilter/ipset/ip_set.h                              |    2 
 include/linux/sunrpc/rpc_pipe_fs.h                                  |    5 
 include/net/inet_hashtables.h                                       |    4 
 include/net/inet_timewait_sock.h                                    |    5 
 include/net/netfilter/nf_tables.h                                   |   25 
 io_uring/cancel.c                                                   |    9 
 io_uring/io_uring.c                                                 |   19 
 kernel/bpf/trampoline.c                                             |    4 
 kernel/bpf/verifier.c                                               |   12 
 lib/kunit/string-stream.c                                           |    4 
 net/9p/client.c                                                     |   15 
 net/9p/trans_fd.c                                                   |   12 
 net/9p/trans_rdma.c                                                 |    4 
 net/9p/trans_virtio.c                                               |    9 
 net/9p/trans_xen.c                                                  |    4 
 net/caif/cfctrl.c                                                   |    6 
 net/core/filter.c                                                   |    7 
 net/ipv4/inet_connection_sock.c                                     |   40 +
 net/ipv4/inet_hashtables.c                                          |    8 
 net/ipv4/inet_timewait_sock.c                                       |   31 +
 net/ipv4/tcp_ulp.c                                                  |    4 
 net/mptcp/protocol.c                                                |   20 
 net/mptcp/protocol.h                                                |    4 
 net/mptcp/subflow.c                                                 |   19 
 net/netfilter/ipset/ip_set_core.c                                   |    7 
 net/netfilter/ipset/ip_set_hash_ip.c                                |   14 
 net/netfilter/ipset/ip_set_hash_ipmark.c                            |   13 
 net/netfilter/ipset/ip_set_hash_ipport.c                            |   13 
 net/netfilter/ipset/ip_set_hash_ipportip.c                          |   13 
 net/netfilter/ipset/ip_set_hash_ipportnet.c                         |   13 
 net/netfilter/ipset/ip_set_hash_net.c                               |   17 
 net/netfilter/ipset/ip_set_hash_netiface.c                          |   15 
 net/netfilter/ipset/ip_set_hash_netnet.c                            |   23 
 net/netfilter/ipset/ip_set_hash_netport.c                           |   19 
 net/netfilter/ipset/ip_set_hash_netportnet.c                        |   40 -
 net/netfilter/nf_tables_api.c                                       |  261 ++++++----
 net/nfc/netlink.c                                                   |   52 +
 net/sched/cls_tcindex.c                                             |   12 
 net/sched/sch_atm.c                                                 |    5 
 net/sched/sch_cbq.c                                                 |    4 
 net/sunrpc/auth_gss/auth_gss.c                                      |   19 
 sound/soc/intel/boards/bytcr_rt5640.c                               |   15 
 sound/soc/sof/core.c                                                |    9 
 sound/soc/sof/intel/hda-dsp.c                                       |   72 ++
 sound/soc/sof/intel/hda.h                                           |    1 
 sound/soc/sof/intel/tgl.c                                           |    2 
 sound/soc/sof/mediatek/mtk-adsp-common.c                            |    2 
 tools/perf/builtin-lock.c                                           |    2 
 tools/perf/util/bpf_counter_cgroup.c                                |   14 
 tools/perf/util/cgroup.c                                            |   23 
 tools/perf/util/data.c                                              |    2 
 tools/perf/util/dwarf-aux.c                                         |   23 
 tools/testing/selftests/net/arp_ndisc_evict_nocarrier.sh            |   15 
 197 files changed, 1987 insertions(+), 875 deletions(-)

Adham Faris (1):
net/mlx5e: Fix hw mtu initializing at XDP SQ allocation

Andreas Rammhold (1):
of/fdt: run soc memory setup when early_init_dt_scan_memory fails

Antoine Tenart (1):
net: vrf: determine the dst using the original ifindex for multicast

Ard Biesheuvel (1):
efi: random: combine bootloader provided RNG seed with RNG protocol output

Arnd Bergmann (2):
wifi: ath9k: use proper statements in conditionals
usb: dwc3: xilinx: include linux/gpio/consumer.h

Baochen Qiang (1):
wifi: ath11k: Send PME message during wakeup from D3cold

Ben Dooks (1):
riscv: uaccess: fix type of 0 variable on error in get_user()

Björn Töpel (1):
riscv, kprobes: Stricter c.jr/c.jalr decoding

Caleb Sander (1):
qed: allow sleep in qed_mcp_trace_dump()

Carlo Caione (1):
drm/meson: Reduce the FIFO lines held when AFBC is not used

Chris Mi (2):
net/mlx5e: CT: Fix ct debugfs folder name net/mlx5e: Always clear dest encap in neigh-update-del

Christian Marangi (3):
Revert "net: dsa: qca8k: cache lo and hi for mdio write"
net: dsa: qca8k: fix wrong length value for mgmt eth packet
net: dsa: tag_qca: fix wrong MGMT_DATA2 size

Christoph Hellwig (2):
nvmet: use NVME_CMD_EFFECTS_CSUPP instead of open coding it
nvme: also return I/O command effects from nvme_command_effects

Chuang Wang (1):

      bpf: Fix panic due to wrong pageattr of im->image

Cindy Lu (1):
vhost_vdpa: fix the crash in unmap a large memory

Dan Carpenter (1):
drm/i915: unpin on error in intel_vgpu_shadow_mm_pin()

Daniil Tatianin (2):
qlcnic: prevent ->dcb use-after-free on qlcnic_dcb_enable() failure drivers/net/bonding/bond_3ad: return when there's no aggregator

David Arinzon (7):
net: ena: Fix toeplitz initial hash value
net: ena: Don't register memory info on XDP exchange
net: ena: Account for the number of processed bytes in XDP
net: ena: Use bitmask to indicate packet redirection
net: ena: Fix rx_copybreak value update
net: ena: Set default value for RX interrupt moderation
net: ena: Update NUMA TPH hint register upon NUMA node update

Dillon Varone (1):
drm/amd/display: Add check for DET fetch latency hiding for dcn32

Dmitry Fomichev (1):
virtio-blk: use a helper to handle request queuing errors

Dominique Martinet (1):

      9p/client: fix data race on req->status

Dragos Tatulea (1):
net/mlx5e: IPoIB, Don't allow CQE compression to be turned on by default

Eli Cohen (3):
vdpa/mlx5: Fix rule forwarding VLAN to TIR vdpa/mlx5: Fix wrong mac address deletion net/mlx5: Lag, fix failure to cancel delayed bond work

Eric Dumazet (1):
bonding: fix lockdep splat in bond_miimon_commit()

Filipe Manana (1):
btrfs: fix off-by-one in delalloc search during lseek

Geetha sowjanya (1):
octeontx2-pf: Fix lmtst ID used in aura free

Greg Kroah-Hartman (1):

      Linux 6.1.5

Haibo Chen (1):
gpio: pca953x: avoid to use uninitialized value pinctrl

Hans de Goede (1):
ASoC: Intel: bytcr_rt5640: Add quirk for the Advantech MICA-071 tablet

Hawkins Jiawei (1):
net: sched: fix memory leak in tcindex_set_parms

Horatiu Vultur (2):
net: lan966x: Fix configuration of the PCS
net: sparx5: Fix reading of the MAC address

Ido Schimmel (1):
vxlan: Fix memory leaks in error path

Jakub Kicinski (1):
bpf: pull before calling skb_postpull_rcsum()

Jamal Hadi Salim (2):
net: sched: atm: dont intepret cls results when asked to drop
net: sched: cbq: dont intepret cls results when asked to drop

Jan Kara (1):
udf: Fix extension of the last extent in the file

Jani Nikula (2):
drm/i915/dsi: add support for ICL+ native MIPI GPIO sequence drm/i915/dsi: fix MIPI_BKLT_EN_1 native GPIO index

Jason A. Donenfeld (1):
tpm: Allow system suspend to continue when TPM suspend fails

Jason Wang (1):
vdpasim: fix memory leak when freeing IOTLBs

Jeff Layton (3):
nfsd: shut down the NFSv4 state objects before the filecache
filelock: new helper: vfs_inode_has_locks
nfsd: fix handling of readdir in v4root vs. mount upcall timeout

Jens Axboe (4):
ARM: renumber bits related to _TIF_WORK_MASK io_uring/cancel: re-grab ctx mutex after finishing wait
io_uring: check for valid register opcode earlier
block: don't allow splitting of a REQ_NOWAIT bio

Jian Shen (3):
net: hns3: fix miss L3E checking for rx packet
net: hns3: fix VF promisc mode not update when mac table full
net: hns3: refine the handling for VF heartbeat

Jie Wang (1):
net: hns3: add interrupts re-initialization while doing VF FLR

Jiguang Xiao (1):
net: amd-xgbe: add missed tasklet_kill

Jiri Pirko (1):
net/mlx5: Add forgotten cleanup calls into mlx5_init_once() error path

Johan Hovold (1):
phy: qcom-qmp-combo: fix broken power on

Johnny S. Lee (1):
net: dsa: mv88e6xxx: depend on PTP conditionally

Jozsef Kadlecsik (2):
netfilter: ipset: fix hash:net,port,net hang with /0 subnet
netfilter: ipset: Rework long task execution when adding/deleting entries

Kai Vehmanen (2):
ASoC: SOF: Revert: "core: unregister clients and machine drivers in .shutdown"
ASoC: SOF: Intel: pci-tgl: unblock S5 entry if DMA stop has failed"

Kees Cook (1):
bpf: Always use maximal size for copy_array()

Kuniyuki Iwashima (1):
tcp: Add TIME_WAIT sockets in bhash2.

Linus Torvalds (1):
hfs/hfsplus: avoid WARN_ON() for sanity check, use proper error handling

Luben Tuikov (1):
drm/amdgpu: Fix size validation for non-exclusive domains (v4)

Ma Jun (1):
drm/plane-helper: Add the missing declaration of drm_atomic_state

Maciej Fijalkowski (1):

      ice: xsk: do not use xdp_return_frame() on tx_buf->raw_buf

Maor Dickman (1):
net/mlx5e: Set geneve_tlv_option_0_exist when matching on geneve option

Maor Gottlieb (1):
RDMA/mlx5: Fix validation of max_rd_atomic caps for DC

Mario Limonciello (3):
ACPI: video: Allow GPU drivers to report no panels drm/amd/display: Report to ACPI video if no panels were found
ACPI: video: Don't enable fallback path for creating ACPI backlight by default

Marios Makassikis (1):
ksmbd: send proper error response in smb2_tree_connect()

Masami Hiramatsu (Google) (2):
perf probe: Use dwarf_attr_integrate as generic DWARF attr accessor perf probe: Fix to get the DW_AT_decl_file and DW_AT_call_file as unsinged data

Miaoqian Lin (4):
nfc: Fix potential resource leaks
net: phy: xgmiitorgmii: Fix refcount leak in xgmiitorgmii_probe
gpio: sifive: Fix refcount leak in sifive_gpio_probe perf tools: Fix resources leak in perf_data__open_dir()

Michael Chan (4):
bnxt_en: Simplify bnxt_xdp_buff_init()
bnxt_en: Fix XDP RX path
bnxt_en: Fix first buffer size calculations for XDP multi-buffer
bnxt_en: Fix HDS and jumbo thresholds for RX packets

Michel Dänzer (1):
Revert "drm/amd/display: Enable Freesync Video Mode by default"

Ming Lei (1):
ublk: honor IO_URING_F_NONBLOCK for handling control command

Moshe Shemesh (1):
net/mlx5: E-Switch, properly handle ingress tagged packets on VST

Mukul Joshi (1):
drm/amdkfd: Fix kernel warning during topology setup

Namhyung Kim (2):
perf stat: Fix handling of unsupported cgroup events when using BPF counters perf stat: Fix handling of --for-each-cgroup with --bpf-counters to match non BPF mode

Namjae Jeon (1):
ksmbd: fix infinite loop in ksmbd_conn_handler_loop()

Pablo Neira Ayuso (4):
netfilter: nf_tables: consolidate set description
netfilter: nf_tables: add function to create set stateful expressions
netfilter: nf_tables: perform type checking for existing sets
netfilter: nf_tables: honor set timeout and garbage collection updates

Paolo Abeni (3):
mptcp: fix deadlock in fastopen error path
mptcp: fix lockdep false positive
net/ulp: prevent ULP without clone op from entering the LISTEN status

Paul Menzel (1):
fbdev: matroxfb: G200eW: Increase max memory from 1 MB to 16 MB

Pavel Begunkov (2):
io_uring: pin context while queueing deferred tw
io_uring: fix CQ waiting timeout handling

Philip Yang (2):
drm/amdkfd: Fix kfd_process_device_init_vm error handling drm/amdkfd: Fix double release compute pasid

Philipp Zabel (1):
drm/imx: ipuv3-plane: Fix overlay plane width

Po-Hsu Lin (2):
selftests: net: fix cleanup_v6() for arp_ndisc_evict_nocarrier
selftests: net: return non-zero for failures reported in arp_ndisc_evict_nocarrier

Qu Wenruo (2):
btrfs: fix compat_ro checks against remount
btrfs: handle case when repair happens with dev-replace

Rafael Mendonca (1):
virtio_blk: Fix signedness bug in virtblk_prep_rq()

Rodrigo Branco (1):
x86/bugs: Flush IBP in ib_prctl_set()

Ronak Doshi (1):
vmxnet3: correctly report csum_level for encapsulated packet

Rong Wang (1):
vdpa/vp_vdpa: fix kfree a wrong pointer in vp_vdpa_remove

Samson Tam (1):
drm/amd/display: Uninitialized variables causing 4k60 UCLK to stay at DPM1 and not DPM0

Sasha Levin (2):
btrfs: replace strncpy() with strscpy()
btrfs: fix an error handling path in btrfs_defrag_leaves()

Shawn Bohrer (1):
veth: Fix race with AF_XDP exposing old or uninitialized descriptors

Shay Drory (4):
net/mlx5: Fix io_eq_size and event_eq_size params validation net/mlx5: Avoid recovery in probe flows
net/mlx5: Fix RoCE setting at HCA level RDMA/mlx5: Fix mlx5_ib_get_hw_stats when used for device

Shyam Prasad N (2):
cifs: fix interface count calculation during refresh
cifs: refcount only the selected iface during interface update

Srinivas Pandruvada (1):

      thermal: int340x: Add missing attribute for data rate base

Stefano Garzarella (4):
vringh: fix range used in iotlb_translate()
vhost: fix range used in translate_desc()
vhost-vdpa: fix an iotlb memory leak
vdpa_sim: fix vringh initialization in vdpasim_queue_ready()

Steven Price (1):
drm/panfrost: Fix GEM handle creation ref-counting

Szymon Heidrich (1):
usb: rndis_host: Secure rndis_query check against int overflow

Takashi Iwai (1):
x86/kexec: Fix double-free of elf header buffer

Tariq Toukan (1):
net/mlx5e: Fix RX reporter for XSK RQs

Tetsuo Handa (1):
fs/ntfs3: don't hold ni_lock when calling truncate_setsize()

Thinh Nguyen (1):
usb: dwc3: gadget: Ignore End Transfer delay on teardown

Thomas Richter (1):
perf lock contention: Fix core dump related to not finding the "__sched_text_end" symbol on s/390

Wei Yongjun (1):
virtio-crypto: fix memory leak in virtio_crypto_alg_skcipher_close_session()

William Liu (1):
ksmbd: check nt_len to be at least CIFS_ENCPWD_SIZE in ksmbd_decode_ntlmssp_auth_blob

Xiu Jianfeng (1):
drm/virtio: Fix memory leak in virtio_gpu_object_create()

Xiubo Li (1):
ceph: switch to vfs_inode_has_locks() to fix file lock bug

YC Hung (1):
ASoC: SOF: mediatek: initialize panic_info to zero

Yanjun Zhang (1):
nvme: fix multipath crash caused by flush request when blktrace is enabled

YoungJun.park (1):
kunit: alloc_string_stream_fragment error handling bug fix

Yuan Can (1):
vhost/vsock: Fix error handling in vhost_vsock_init()

Zheng Wang (1):
drm/i915/gvt: fix double free bug in split_2MB_gtt_entry

Zhengchao Shao (1):
caif: fix memory leak in cfctrl_linkup_request()

Zhenyu Wang (2):
drm/i915/gvt: fix gvt debugfs destroy drm/i915/gvt: fix vgpu debugfs clean in remove

minoura makoto (1):
SUNRPC: ensure the matching upcall is in-flight upon downcall

ruanjinjie (1):
vdpa_sim: fix possible memory leak in vdpasim_net_init() and vdpasim_blk_init()

author maintainer
#1 lore raw
Makefile +1 -1
index 56afd1509c74..ddbd2fc917c5 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 6
 PATCHLEVEL = 1
-SUBLEVEL = 4
+SUBLEVEL = 5
 EXTRAVERSION =
 NAME = Hurr durr I'ma ninja sloth
 
arch/arm/include/asm/thread_info.h +7 -6
index aecc403b2880..7f092cb55a41 100644
@@ -128,15 +128,16 @@ extern int vfp_restore_user_hwstate(struct user_vfp *,
 #define TIF_NEED_RESCHED	1	/* rescheduling necessary */
 #define TIF_NOTIFY_RESUME	2	/* callback before returning to user */
 #define TIF_UPROBE		3	/* breakpointed or singlestepping */
-#define TIF_SYSCALL_TRACE	4	/* syscall trace active */
-#define TIF_SYSCALL_AUDIT	5	/* syscall auditing active */
-#define TIF_SYSCALL_TRACEPOINT	6	/* syscall tracepoint instrumentation */
-#define TIF_SECCOMP		7	/* seccomp syscall filtering active */
-#define TIF_NOTIFY_SIGNAL	8	/* signal notifications exist */
+#define TIF_NOTIFY_SIGNAL	4	/* signal notifications exist */
 
 #define TIF_USING_IWMMXT	17
 #define TIF_MEMDIE		18	/* is terminating due to OOM killer */
-#define TIF_RESTORE_SIGMASK	20
+#define TIF_RESTORE_SIGMASK	19
+#define TIF_SYSCALL_TRACE	20	/* syscall trace active */
+#define TIF_SYSCALL_AUDIT	21	/* syscall auditing active */
+#define TIF_SYSCALL_TRACEPOINT	22	/* syscall tracepoint instrumentation */
+#define TIF_SECCOMP		23	/* seccomp syscall filtering active */
+
 
 #define _TIF_SIGPENDING		(1 << TIF_SIGPENDING)
 #define _TIF_NEED_RESCHED	(1 << TIF_NEED_RESCHED)
arch/mips/ralink/of.c +1 -1
index 01c132bc33d5..4d06de77d92a 100644
@@ -64,7 +64,7 @@ void __init plat_mem_setup(void)
 	dtb = get_fdt();
 	__dt_setup_arch(dtb);
 
-	if (!early_init_dt_scan_memory())
+	if (early_init_dt_scan_memory())
 		return;
 
 	if (soc_info.mem_detect)
arch/riscv/include/asm/uaccess.h +1 -1
index 855450bed9f5..ec0cab9fbddd 100644
@@ -165,7 +165,7 @@ do {								\
 	might_fault();						\
 	access_ok(__p, sizeof(*__p)) ?		\
 		__get_user((x), __p) :				\
-		((x) = 0, -EFAULT);				\
+		((x) = (__force __typeof__(x))0, -EFAULT);	\
 })
 
 #define __put_user_asm(insn, x, ptr, err)			\
arch/riscv/kernel/probes/simulate-insn.h +2 -2
index cb6ff7dccb92..de8474146a9b 100644
@@ -31,9 +31,9 @@ __RISCV_INSN_FUNCS(fence,	0x7f, 0x0f);
 	} while (0)
 
 __RISCV_INSN_FUNCS(c_j,		0xe003, 0xa001);
-__RISCV_INSN_FUNCS(c_jr,	0xf007, 0x8002);
+__RISCV_INSN_FUNCS(c_jr,	0xf07f, 0x8002);
 __RISCV_INSN_FUNCS(c_jal,	0xe003, 0x2001);
-__RISCV_INSN_FUNCS(c_jalr,	0xf007, 0x9002);
+__RISCV_INSN_FUNCS(c_jalr,	0xf07f, 0x9002);
 __RISCV_INSN_FUNCS(c_beqz,	0xe003, 0xc001);
 __RISCV_INSN_FUNCS(c_bnez,	0xe003, 0xe001);
 __RISCV_INSN_FUNCS(c_ebreak,	0xffff, 0x9002);
arch/x86/kernel/cpu/bugs.c +2 -0
index 6daf84229548..16d8e43be775 100644
@@ -1951,6 +1951,8 @@ static int ib_prctl_set(struct task_struct *task, unsigned long ctrl)
 		if (ctrl == PR_SPEC_FORCE_DISABLE)
 			task_set_spec_ib_force_disable(task);
 		task_update_spec_tif(task);
+		if (task == current)
+			indirect_branch_prediction_barrier();
 		break;
 	default:
 		return -ERANGE;
arch/x86/kernel/crash.c +1 -3
index 9730c88530fc..305514431f26 100644
@@ -401,10 +401,8 @@ int crash_load_segments(struct kimage *image)
 	kbuf.buf_align = ELF_CORE_HEADER_ALIGN;
 	kbuf.mem = KEXEC_BUF_MEM_UNKNOWN;
 	ret = kexec_add_buffer(&kbuf);
-	if (ret) {
-		vfree((void *)image->elf_headers);
+	if (ret)
 		return ret;
-	}
 	image->elf_load_addr = kbuf.mem;
 	pr_debug("Loaded ELF headers at 0x%lx bufsz=0x%lx memsz=0x%lx\n",
 		 image->elf_load_addr, kbuf.bufsz, kbuf.memsz);
block/blk-merge.c +10 -0
index ff04e9290715..f46c87ef951d 100644
@@ -300,6 +300,16 @@ static struct bio *bio_split_rw(struct bio *bio, struct queue_limits *lim,
 	*segs = nsegs;
 	return NULL;
 split:
+	/*
+	 * We can't sanely support splitting for a REQ_NOWAIT bio. End it
+	 * with EAGAIN if splitting is required and return an error pointer.
+	 */
+	if (bio->bi_opf & REQ_NOWAIT) {
+		bio->bi_status = BLK_STS_AGAIN;
+		bio_endio(bio);
+		return ERR_PTR(-EAGAIN);
+	}
+
 	*segs = nsegs;
 
 	/*
drivers/acpi/acpi_video.c +12 -5
index 32953646caeb..0c79f463fbfd 100644
@@ -70,11 +70,7 @@ module_param(device_id_scheme, bool, 0444);
 static int only_lcd = -1;
 module_param(only_lcd, int, 0444);
 
-/*
- * Display probing is known to take up to 5 seconds, so delay the fallback
- * backlight registration by 5 seconds + 3 seconds for some extra margin.
- */
-static int register_backlight_delay = 8;
+static int register_backlight_delay;
 module_param(register_backlight_delay, int, 0444);
 MODULE_PARM_DESC(register_backlight_delay,
 	"Delay in seconds before doing fallback (non GPU driver triggered) "
@@ -2178,6 +2174,17 @@ static bool should_check_lcd_flag(void)
 	return false;
 }
 
+/*
+ * At least one graphics driver has reported that no LCD is connected
+ * via the native interface. cancel the registration for fallback acpi_video0.
+ * If another driver still deems this necessary, it can explicitly register it.
+ */
+void acpi_video_report_nolcd(void)
+{
+	cancel_delayed_work(&video_bus_register_backlight_work);
+}
+EXPORT_SYMBOL(acpi_video_report_nolcd);
+
 int acpi_video_register(void)
 {
 	int ret = 0;
drivers/block/ublk_drv.c +3 -0
index e9de9d846b73..17b677b5d3b2 100644
@@ -1992,6 +1992,9 @@ static int ublk_ctrl_uring_cmd(struct io_uring_cmd *cmd,
 	struct ublksrv_ctrl_cmd *header = (struct ublksrv_ctrl_cmd *)cmd->cmd;
 	int ret = -EINVAL;
 
+	if (issue_flags & IO_URING_F_NONBLOCK)
+		return -EAGAIN;
+
 	ublk_ctrl_cmd_dump(cmd);
 
 	if (!(issue_flags & IO_URING_F_SQE128))
drivers/block/virtio_blk.c +19 -14
index 19da5defd734..a7697027ce43 100644
@@ -315,22 +315,35 @@ static void virtio_commit_rqs(struct blk_mq_hw_ctx *hctx)
 		virtqueue_notify(vq->vq);
 }
 
+static blk_status_t virtblk_fail_to_queue(struct request *req, int rc)
+{
+	virtblk_cleanup_cmd(req);
+	switch (rc) {
+	case -ENOSPC:
+		return BLK_STS_DEV_RESOURCE;
+	case -ENOMEM:
+		return BLK_STS_RESOURCE;
+	default:
+		return BLK_STS_IOERR;
+	}
+}
+
 static blk_status_t virtblk_prep_rq(struct blk_mq_hw_ctx *hctx,
 					struct virtio_blk *vblk,
 					struct request *req,
 					struct virtblk_req *vbr)
 {
 	blk_status_t status;
+	int num;
 
 	status = virtblk_setup_cmd(vblk->vdev, req, vbr);
 	if (unlikely(status))
 		return status;
 
-	vbr->sg_table.nents = virtblk_map_data(hctx, req, vbr);
-	if (unlikely(vbr->sg_table.nents < 0)) {
-		virtblk_cleanup_cmd(req);
-		return BLK_STS_RESOURCE;
-	}
+	num = virtblk_map_data(hctx, req, vbr);
+	if (unlikely(num < 0))
+		return virtblk_fail_to_queue(req, -ENOMEM);
+	vbr->sg_table.nents = num;
 
 	blk_mq_start_request(req);
 
@@ -364,15 +377,7 @@ static blk_status_t virtio_queue_rq(struct blk_mq_hw_ctx *hctx,
 			blk_mq_stop_hw_queue(hctx);
 		spin_unlock_irqrestore(&vblk->vqs[qid].lock, flags);
 		virtblk_unmap_data(req, vbr);
-		virtblk_cleanup_cmd(req);
-		switch (err) {
-		case -ENOSPC:
-			return BLK_STS_DEV_RESOURCE;
-		case -ENOMEM:
-			return BLK_STS_RESOURCE;
-		default:
-			return BLK_STS_IOERR;
-		}
+		return virtblk_fail_to_queue(req, err);
 	}
 
 	if (bd->last && virtqueue_kick_prepare(vblk->vqs[qid].vq))
drivers/char/tpm/tpm-interface.c +3 -1
index d69905233aff..7e513b771832 100644
@@ -412,7 +412,9 @@ int tpm_pm_suspend(struct device *dev)
 	}
 
 suspended:
-	return rc;
+	if (rc)
+		dev_err(dev, "Ignoring error %d while suspending\n", rc);
+	return 0;
 }
 EXPORT_SYMBOL_GPL(tpm_pm_suspend);
 
drivers/crypto/virtio/virtio_crypto_skcipher_algs.c +2 -1
index e553ccadbcbc..e5876286828b 100644
@@ -239,7 +239,8 @@ static int virtio_crypto_alg_skcipher_close_session(
 		pr_err("virtio_crypto: Close session failed status: %u, session_id: 0x%llx\n",
 			ctrl_status->status, destroy_session->session_id);
 
-		return -EINVAL;
+		err = -EINVAL;
+		goto out;
 	}
 
 	err = 0;
drivers/firmware/efi/efi.c +2 -2
index a46df5d1d094..f12cc29bd4b8 100644
@@ -611,7 +611,7 @@ int __init efi_config_parse_tables(const efi_config_table_t *config_tables,
 
 		seed = early_memremap(efi_rng_seed, sizeof(*seed));
 		if (seed != NULL) {
-			size = min(seed->size, EFI_RANDOM_SEED_SIZE);
+			size = min_t(u32, seed->size, SZ_1K); // sanity check
 			early_memunmap(seed, sizeof(*seed));
 		} else {
 			pr_err("Could not map UEFI random seed!\n");
@@ -620,8 +620,8 @@ int __init efi_config_parse_tables(const efi_config_table_t *config_tables,
 			seed = early_memremap(efi_rng_seed,
 					      sizeof(*seed) + size);
 			if (seed != NULL) {
-				pr_notice("seeding entropy pool\n");
 				add_bootloader_randomness(seed->bits, size);
+				memzero_explicit(seed->bits, size);
 				early_memunmap(seed, sizeof(*seed) + size);
 			} else {
 				pr_err("Could not map UEFI random seed!\n");
drivers/firmware/efi/libstub/efistub.h +2 -0
index eb03d5a9aac8..900df67a2078 100644
@@ -882,6 +882,8 @@ efi_status_t efi_get_random_bytes(unsigned long size, u8 *out);
 efi_status_t efi_random_alloc(unsigned long size, unsigned long align,
 			      unsigned long *addr, unsigned long random_seed);
 
+efi_status_t efi_random_get_seed(void);
+
 efi_status_t check_platform_features(void);
 
 void *get_efi_config_table(efi_guid_t guid);
drivers/firmware/efi/libstub/random.c +36 -6

77 lines not on this page · raw message

drivers/gpio/gpio-pca953x.c +3 -0
index ebe1943b85dd..bf21803a0036 100644
@@ -473,6 +473,9 @@ static u8 pcal6534_recalc_addr(struct pca953x_chip *chip, int reg, int off)
 	case PCAL6524_DEBOUNCE:
 		pinctrl = ((reg & PCAL_PINCTRL_MASK) >> 1) + 0x1c;
 		break;
+	default:
+		pinctrl = 0;
+		break;
 	}
 
 	return pinctrl + addr + (off / BANK_SZ);
drivers/gpio/gpio-sifive.c +1 -0
index 238f3210970c..bc5660f61c57 100644
@@ -215,6 +215,7 @@ static int sifive_gpio_probe(struct platform_device *pdev)
 		return -ENODEV;
 	}
 	parent = irq_find_host(irq_parent);
+	of_node_put(irq_parent);
 	if (!parent) {
 		dev_err(dev, "no IRQ parent domain\n");
 		return -ENODEV;
drivers/gpu/drm/amd/amdgpu/amdgpu.h +1 -0
index 2eca58220550..5f1d0990c6f3 100644
@@ -196,6 +196,7 @@ extern int amdgpu_emu_mode;
 extern uint amdgpu_smu_memory_pool_size;
 extern int amdgpu_smu_pptable_id;
 extern uint amdgpu_dc_feature_mask;
+extern uint amdgpu_freesync_vid_mode;
 extern uint amdgpu_dc_debug_mask;
 extern uint amdgpu_dc_visual_confirm;
 extern uint amdgpu_dm_abm_level;
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h +3 -1
index 647220a8762d..30f145dc8724 100644
@@ -265,8 +265,10 @@ int amdgpu_amdkfd_get_pcie_bandwidth_mbytes(struct amdgpu_device *adev, bool is_
 	(&((struct amdgpu_fpriv *)					\
 		((struct drm_file *)(drm_priv))->driver_priv)->vm)
 
+int amdgpu_amdkfd_gpuvm_set_vm_pasid(struct amdgpu_device *adev,
+				     struct file *filp, u32 pasid);
 int amdgpu_amdkfd_gpuvm_acquire_process_vm(struct amdgpu_device *adev,
-					struct file *filp, u32 pasid,
+					struct file *filp,
 					void **process_info,
 					struct dma_fence **ef);
 void amdgpu_amdkfd_gpuvm_release_process_vm(struct amdgpu_device *adev,
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +28 -11
index fe87b3402f06..29f045079a3e 100644
@@ -1473,10 +1473,9 @@ static void amdgpu_amdkfd_gpuvm_unpin_bo(struct amdgpu_bo *bo)
 	amdgpu_bo_unreserve(bo);
 }
 
-int amdgpu_amdkfd_gpuvm_acquire_process_vm(struct amdgpu_device *adev,
-					   struct file *filp, u32 pasid,
-					   void **process_info,
-					   struct dma_fence **ef)
+int amdgpu_amdkfd_gpuvm_set_vm_pasid(struct amdgpu_device *adev,
+				     struct file *filp, u32 pasid)
+
 {
 	struct amdgpu_fpriv *drv_priv;
 	struct amdgpu_vm *avm;
@@ -1487,10 +1486,6 @@ int amdgpu_amdkfd_gpuvm_acquire_process_vm(struct amdgpu_device *adev,
 		return ret;
 	avm = &drv_priv->vm;
 
-	/* Already a compute VM? */
-	if (avm->process_info)
-		return -EINVAL;
-
 	/* Free the original amdgpu allocated pasid,
 	 * will be replaced with kfd allocated pasid.
 	 */
@@ -1499,14 +1494,36 @@ int amdgpu_amdkfd_gpuvm_acquire_process_vm(struct amdgpu_device *adev,
 		amdgpu_vm_set_pasid(adev, avm, 0);
 	}
 
-	/* Convert VM into a compute VM */
-	ret = amdgpu_vm_make_compute(adev, avm);
+	ret = amdgpu_vm_set_pasid(adev, avm, pasid);
 	if (ret)
 		return ret;
 
-	ret = amdgpu_vm_set_pasid(adev, avm, pasid);
+	return 0;
+}
+
+int amdgpu_amdkfd_gpuvm_acquire_process_vm(struct amdgpu_device *adev,
+					   struct file *filp,
+					   void **process_info,
+					   struct dma_fence **ef)
+{
+	struct amdgpu_fpriv *drv_priv;
+	struct amdgpu_vm *avm;
+	int ret;
+
+	ret = amdgpu_file_to_fpriv(filp, &drv_priv);
 	if (ret)
 		return ret;
+	avm = &drv_priv->vm;
+
+	/* Already a compute VM? */
+	if (avm->process_info)
+		return -EINVAL;
+
+	/* Convert VM into a compute VM */
+	ret = amdgpu_vm_make_compute(adev, avm);
+	if (ret)
+		return ret;
+
 	/* Initialize KFD part of the VM and process info */
 	ret = init_kfd_vm(avm, process_info, ef);
 	if (ret)
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +27 -0
index d8dfbb9b735d..b59466972ed7 100644
@@ -180,6 +180,7 @@ int amdgpu_mes_kiq;
 int amdgpu_noretry = -1;
 int amdgpu_force_asic_type = -1;
 int amdgpu_tmz = -1; /* auto */
+uint amdgpu_freesync_vid_mode;
 int amdgpu_reset_method = -1; /* auto */
 int amdgpu_num_kcq = -1;
 int amdgpu_smartshift_bias;
@@ -877,6 +878,32 @@ module_param_named(backlight, amdgpu_backlight, bint, 0444);
 MODULE_PARM_DESC(tmz, "Enable TMZ feature (-1 = auto (default), 0 = off, 1 = on)");
 module_param_named(tmz, amdgpu_tmz, int, 0444);
 
+/**
+ * DOC: freesync_video (uint)
+ * Enable the optimization to adjust front porch timing to achieve seamless
+ * mode change experience when setting a freesync supported mode for which full
+ * modeset is not needed.
+ *
+ * The Display Core will add a set of modes derived from the base FreeSync
+ * video mode into the corresponding connector's mode list based on commonly
+ * used refresh rates and VRR range of the connected display, when users enable
+ * this feature. From the userspace perspective, they can see a seamless mode
+ * change experience when the change between different refresh rates under the
+ * same resolution. Additionally, userspace applications such as Video playback
+ * can read this modeset list and change the refresh rate based on the video
+ * frame rate. Finally, the userspace can also derive an appropriate mode for a
+ * particular refresh rate based on the FreeSync Mode and add it to the
+ * connector's mode list.
+ *
+ * Note: This is an experimental feature.
+ *
+ * The default value: 0 (off).
+ */
+MODULE_PARM_DESC(
+	freesync_video,
+	"Enable freesync modesetting optimization feature (0 = off (default), 1 = on)");
+module_param_named(freesync_video, amdgpu_freesync_vid_mode, uint, 0444);
+
 /**
  * DOC: reset_method (int)
  * GPU reset method (-1 = auto (default), 0 = legacy, 1 = mode0, 2 = mode1, 3 = mode2, 4 = baco)
drivers/gpu/drm/amd/amdgpu/amdgpu_object.c +8 -11
index 3df13d841e4d..3be3cba3a16d 100644
@@ -446,27 +446,24 @@ static bool amdgpu_bo_validate_size(struct amdgpu_device *adev,
 
 	/*
 	 * If GTT is part of requested domains the check must succeed to
-	 * allow fall back to GTT
+	 * allow fall back to GTT.
 	 */
 	if (domain & AMDGPU_GEM_DOMAIN_GTT) {
 		man = ttm_manager_type(&adev->mman.bdev, TTM_PL_TT);
 
-		if (size < man->size)
+		if (man && size < man->size)
 			return true;
-		else
-			goto fail;
-	}
-
-	if (domain & AMDGPU_GEM_DOMAIN_VRAM) {
+		else if (!man)
+			WARN_ON_ONCE("GTT domain requested but GTT mem manager uninitialized");
+		goto fail;
+	} else if (domain & AMDGPU_GEM_DOMAIN_VRAM) {
 		man = ttm_manager_type(&adev->mman.bdev, TTM_PL_VRAM);
 
-		if (size < man->size)
+		if (man && size < man->size)
 			return true;
-		else
-			goto fail;
+		goto fail;
 	}
 
-
 	/* TODO add more domains checks, such as AMDGPU_GEM_DOMAIN_CPU */
 	return true;
 
drivers/gpu/drm/amd/amdkfd/kfd_process.c +15 -9
index 951b63677248..dd351105c1bc 100644
@@ -689,13 +689,13 @@ void kfd_process_destroy_wq(void)
 }
 
 static void kfd_process_free_gpuvm(struct kgd_mem *mem,
-			struct kfd_process_device *pdd, void *kptr)
+			struct kfd_process_device *pdd, void **kptr)
 {
 	struct kfd_dev *dev = pdd->dev;
 
-	if (kptr) {
+	if (kptr && *kptr) {
 		amdgpu_amdkfd_gpuvm_unmap_gtt_bo_from_kernel(mem);
-		kptr = NULL;
+		*kptr = NULL;
 	}
 
 	amdgpu_amdkfd_gpuvm_unmap_memory_from_gpu(dev->adev, mem, pdd->drm_priv);
@@ -795,7 +795,7 @@ static void kfd_process_device_destroy_ib_mem(struct kfd_process_device *pdd)
 	if (!qpd->ib_kaddr || !qpd->ib_base)
 		return;
 
-	kfd_process_free_gpuvm(qpd->ib_mem, pdd, qpd->ib_kaddr);
+	kfd_process_free_gpuvm(qpd->ib_mem, pdd, &qpd->ib_kaddr);
 }
 
 struct kfd_process *kfd_create_process(struct file *filep)
@@ -1277,7 +1277,7 @@ static void kfd_process_device_destroy_cwsr_dgpu(struct kfd_process_device *pdd)
 	if (!dev->cwsr_enabled || !qpd->cwsr_kaddr || !qpd->cwsr_base)
 		return;
 
-	kfd_process_free_gpuvm(qpd->cwsr_mem, pdd, qpd->cwsr_kaddr);
+	kfd_process_free_gpuvm(qpd->cwsr_mem, pdd, &qpd->cwsr_kaddr);
 }
 
 void kfd_process_set_trap_handler(struct qcm_process_device *qpd,
@@ -1576,9 +1576,9 @@ int kfd_process_device_init_vm(struct kfd_process_device *pdd,
 	p = pdd->process;
 	dev = pdd->dev;
 
-	ret = amdgpu_amdkfd_gpuvm_acquire_process_vm(
-		dev->adev, drm_file, p->pasid,
-		&p->kgd_process_info, &p->ef);
+	ret = amdgpu_amdkfd_gpuvm_acquire_process_vm(dev->adev, drm_file,
+						     &p->kgd_process_info,
+						     &p->ef);
 	if (ret) {
 		pr_err("Failed to create process VM object\n");
 		return ret;
@@ -1593,13 +1593,19 @@ int kfd_process_device_init_vm(struct kfd_process_device *pdd,
 	if (ret)
 		goto err_init_cwsr;
 
+	ret = amdgpu_amdkfd_gpuvm_set_vm_pasid(dev->adev, drm_file, p->pasid);
+	if (ret)
+		goto err_set_pasid;
+
 	pdd->drm_file = drm_file;
 
 	return 0;
 
+err_set_pasid:
+	kfd_process_device_destroy_cwsr_dgpu(pdd);
 err_init_cwsr:
+	kfd_process_device_destroy_ib_mem(pdd);
 err_reserve_ib_mem:
-	kfd_process_device_free_bos(pdd);
 	pdd->drm_priv = NULL;
 
 	return ret;
drivers/gpu/drm/amd/amdkfd/kfd_topology.c +1 -1
index 3f0a4a415907..35a9b702508a 100644
@@ -801,7 +801,7 @@ static int kfd_build_sysfs_node_entry(struct kfd_topology_device *dev,
 
 		p2plink->attr.name = "properties";
 		p2plink->attr.mode = KFD_SYSFS_FILE_MODE;
-		sysfs_attr_init(&iolink->attr);
+		sysfs_attr_init(&p2plink->attr);
 		ret = sysfs_create_file(p2plink->kobj, &p2plink->attr);
 		if (ret < 0)
 			return ret;
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +11 -5
index c2c26fbea512..dacad8b85963 100644
@@ -4372,6 +4372,10 @@ static int amdgpu_dm_initialize_drm_device(struct amdgpu_device *adev)
 		amdgpu_set_panel_orientation(&aconnector->base);
 	}
 
+	/* If we didn't find a panel, notify the acpi video detection */
+	if (dm->adev->flags & AMD_IS_APU && dm->num_of_edps == 0)
+		acpi_video_report_nolcd();
+
 	/* Software is initialized. Now we can register interrupt handlers. */
 	switch (adev->asic_type) {
 #if defined(CONFIG_DRM_AMD_DC_SI)
@@ -5803,7 +5807,8 @@ create_stream_for_sink(struct amdgpu_dm_connector *aconnector,
 		 */
 		DRM_DEBUG_DRIVER("No preferred mode found\n");
 	} else {
-		recalculate_timing = is_freesync_video_mode(&mode, aconnector);
+		recalculate_timing = amdgpu_freesync_vid_mode &&
+				 is_freesync_video_mode(&mode, aconnector);
 		if (recalculate_timing) {
 			freesync_mode = get_highest_refresh_rate_mode(aconnector, false);
 			drm_mode_copy(&saved_mode, &mode);
@@ -6888,7 +6893,7 @@ static void amdgpu_dm_connector_add_freesync_modes(struct drm_connector *connect
 	struct amdgpu_dm_connector *amdgpu_dm_connector =
 		to_amdgpu_dm_connector(connector);
 
-	if (!edid)
+	if (!(amdgpu_freesync_vid_mode && edid))
 		return;
 
 	if (amdgpu_dm_connector->max_vfreq - amdgpu_dm_connector->min_vfreq > 10)
@@ -8749,7 +8754,8 @@ static int dm_update_crtc_state(struct amdgpu_display_manager *dm,
 		 * TODO: Refactor this function to allow this check to work
 		 * in all conditions.
 		 */
-		if (dm_new_crtc_state->stream &&
+		if (amdgpu_freesync_vid_mode &&
+		    dm_new_crtc_state->stream &&
 		    is_timing_unchanged_for_freesync(new_crtc_state, old_crtc_state))
 			goto skip_modeset;
 
@@ -8784,7 +8790,7 @@ static int dm_update_crtc_state(struct amdgpu_display_manager *dm,
 		if (!dm_old_crtc_state->stream)
 			goto skip_modeset;
 
-		if (dm_new_crtc_state->stream &&
+		if (amdgpu_freesync_vid_mode && dm_new_crtc_state->stream &&
 		    is_timing_unchanged_for_freesync(new_crtc_state,
 						     old_crtc_state)) {
 			new_crtc_state->mode_changed = false;
@@ -8796,7 +8802,7 @@ static int dm_update_crtc_state(struct amdgpu_display_manager *dm,
 			set_freesync_fixed_config(dm_new_crtc_state);
 
 			goto skip_modeset;
-		} else if (aconnector &&
+		} else if (amdgpu_freesync_vid_mode && aconnector &&
 			   is_freesync_video_mode(&new_crtc_state->mode,
 						  aconnector)) {
 			struct drm_display_mode *high_mode;
drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_32.c +39 -0
index 9afd9ba23fb2..820042f6aaca 100644
@@ -670,6 +670,25 @@ static void DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerforman
 		v->cursor_bw[k] = mode_lib->vba.NumberOfCursors[k] * mode_lib->vba.CursorWidth[k][0] * mode_lib->vba.CursorBPP[k][0] / 8 / (mode_lib->vba.HTotal[k] / mode_lib->vba.PixelClock[k]) * mode_lib->vba.VRatio[k];
 	}
 
+	v->NotEnoughDETSwathFillLatencyHiding = dml32_CalculateDETSwathFillLatencyHiding(
+						mode_lib->vba.NumberOfActiveSurfaces,
+						mode_lib->vba.ReturnBW,
+						v->UrgentLatency,
+						mode_lib->vba.SwathHeightY,
+						mode_lib->vba.SwathHeightC,
+						v->swath_width_luma_ub,
+						v->swath_width_chroma_ub,
+						v->BytePerPixelDETY,
+						v->BytePerPixelDETC,
+						mode_lib->vba.DETBufferSizeY,
+						mode_lib->vba.DETBufferSizeC,
+						mode_lib->vba.DPPPerPlane,
+						mode_lib->vba.HTotal,
+						mode_lib->vba.PixelClock,
+						mode_lib->vba.VRatio,
+						mode_lib->vba.VRatioChroma,
+						mode_lib->vba.UsesMALLForPStateChange);
+
 	for (k = 0; k < mode_lib->vba.NumberOfActiveSurfaces; ++k) {
 		v->MaxVStartupLines[k] = ((mode_lib->vba.Interlace[k] &&
 				!mode_lib->vba.ProgressiveToInterlaceUnitInOPP) ?
@@ -1664,6 +1683,7 @@ static void mode_support_configuration(struct vba_vars_st *v,
 				&& mode_lib->vba.PTEBufferSizeNotExceeded[i][j] == true
 				&& mode_lib->vba.DCCMetaBufferSizeNotExceeded[i][j] == true
 				&& mode_lib->vba.NonsupportedDSCInputBPC == false
+				&& mode_lib->vba.NotEnoughDETSwathFillLatencyHidingPerState[i][j] == false
 				&& !mode_lib->vba.ExceededMALLSize
 				&& ((mode_lib->vba.HostVMEnable == false
 				&& !mode_lib->vba.ImmediateFlipRequiredFinal)
@@ -3158,6 +3178,25 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l
 					mode_lib->vba.UrgentBurstFactorChroma,
 					mode_lib->vba.UrgentBurstFactorCursor);
 
+			mode_lib->vba.NotEnoughDETSwathFillLatencyHidingPerState[i][j] = dml32_CalculateDETSwathFillLatencyHiding(
+					mode_lib->vba.NumberOfActiveSurfaces,
+					mode_lib->vba.ReturnBWPerState[i][j],
+					mode_lib->vba.UrgLatency[i],
+					mode_lib->vba.SwathHeightYThisState,
+					mode_lib->vba.SwathHeightCThisState,
+					mode_lib->vba.swath_width_luma_ub_this_state,
+					mode_lib->vba.swath_width_chroma_ub_this_state,
+					mode_lib->vba.BytePerPixelInDETY,
+					mode_lib->vba.BytePerPixelInDETC,
+					mode_lib->vba.DETBufferSizeYThisState,
+					mode_lib->vba.DETBufferSizeCThisState,
+					mode_lib->vba.NoOfDPPThisState,
+					mode_lib->vba.HTotal,
+					mode_lib->vba.PixelClock,
+					mode_lib->vba.VRatio,
+					mode_lib->vba.VRatioChroma,
+					mode_lib->vba.UsesMALLForPStateChange);
+
 			v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.VMDataOnlyReturnBWPerState = dml32_get_return_bw_mbps_vm_only(&mode_lib->vba.soc, i,
 					mode_lib->vba.DCFCLKState[i][j], mode_lib->vba.FabricClockPerState[i],
 					mode_lib->vba.DRAMSpeedPerState[i]);
drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.c +69 -0

72 lines not on this page · raw message

drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.h +18 -0
index 3989c2a28fae..779c6805f599 100644
@@ -1141,4 +1141,22 @@ void dml32_CalculateImmediateFlipBandwithSupport(unsigned int NumberOfActiveSurf
 		double  *FractionOfUrgentBandwidth,
 		bool *ImmediateFlipBandwidthSupport);
 
+bool dml32_CalculateDETSwathFillLatencyHiding(unsigned int NumberOfActiveSurfaces,
+		double ReturnBW,
+		double UrgentLatency,
+		unsigned int SwathHeightY[],
+		unsigned int SwathHeightC[],
+		unsigned int SwathWidthY[],
+		unsigned int SwathWidthC[],
+		double  BytePerPixelInDETY[],
+		double  BytePerPixelInDETC[],
+		unsigned int    DETBufferSizeY[],
+		unsigned int    DETBufferSizeC[],
+		unsigned int	NumOfDPP[],
+		unsigned int	HTotal[],
+		double	PixelClock[],
+		double	VRatioY[],
+		double	VRatioC[],
+		enum dm_use_mall_for_pstate_change_mode UsesMALLForPStateChange[DC__NUM_DPP__MAX]);
+
 #endif
drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.h +2 -0
index a0207a8f8756..2b34b02dbd45 100644
@@ -1041,6 +1041,7 @@ struct vba_vars_st {
 	double MinFullDETBufferingTime;
 	double AverageReadBandwidthGBytePerSecond;
 	bool   FirstMainPlane;
+	bool NotEnoughDETSwathFillLatencyHiding;
 
 	unsigned int ViewportWidthChroma[DC__NUM_DPP__MAX];
 	unsigned int ViewportHeightChroma[DC__NUM_DPP__MAX];
@@ -1224,6 +1225,7 @@ struct vba_vars_st {
 	unsigned int BlockWidthC[DC__NUM_DPP__MAX];
 	unsigned int SubViewportLinesNeededInMALL[DC__NUM_DPP__MAX];
 	bool VActiveBandwithSupport[DC__VOLTAGE_STATES][2];
+	bool NotEnoughDETSwathFillLatencyHidingPerState[DC__VOLTAGE_STATES][2];
 	struct dummy_vars dummy_vars;
 };
 
drivers/gpu/drm/i915/display/intel_dsi_vbt.c +91 -3

124 lines not on this page · raw message

drivers/gpu/drm/i915/gvt/debugfs.c +13 -4
index 9f1c209d9251..e08ed0e9f165 100644
@@ -175,8 +175,13 @@ void intel_gvt_debugfs_add_vgpu(struct intel_vgpu *vgpu)
  */
 void intel_gvt_debugfs_remove_vgpu(struct intel_vgpu *vgpu)
 {
-	debugfs_remove_recursive(vgpu->debugfs);
-	vgpu->debugfs = NULL;
+	struct intel_gvt *gvt = vgpu->gvt;
+	struct drm_minor *minor = gvt->gt->i915->drm.primary;
+
+	if (minor->debugfs_root && gvt->debugfs_root) {
+		debugfs_remove_recursive(vgpu->debugfs);
+		vgpu->debugfs = NULL;
+	}
 }
 
 /**
@@ -199,6 +204,10 @@ void intel_gvt_debugfs_init(struct intel_gvt *gvt)
  */
 void intel_gvt_debugfs_clean(struct intel_gvt *gvt)
 {
-	debugfs_remove_recursive(gvt->debugfs_root);
-	gvt->debugfs_root = NULL;
+	struct drm_minor *minor = gvt->gt->i915->drm.primary;
+
+	if (minor->debugfs_root) {
+		debugfs_remove_recursive(gvt->debugfs_root);
+		gvt->debugfs_root = NULL;
+	}
 }
drivers/gpu/drm/i915/gvt/gtt.c +13 -4
index ce0eb03709c3..80c60754a5c1 100644
@@ -1214,10 +1214,8 @@ static int split_2MB_gtt_entry(struct intel_vgpu *vgpu,
 	for_each_shadow_entry(sub_spt, &sub_se, sub_index) {
 		ret = intel_gvt_dma_map_guest_page(vgpu, start_gfn + sub_index,
 						   PAGE_SIZE, &dma_addr);
-		if (ret) {
-			ppgtt_invalidate_spt(spt);
-			return ret;
-		}
+		if (ret)
+			goto err;
 		sub_se.val64 = se->val64;
 
 		/* Copy the PAT field from PDE. */
@@ -1236,6 +1234,17 @@ static int split_2MB_gtt_entry(struct intel_vgpu *vgpu,
 	ops->set_pfn(se, sub_spt->shadow_page.mfn);
 	ppgtt_set_shadow_entry(spt, se, index);
 	return 0;
+err:
+	/* Cancel the existing addess mappings of DMA addr. */
+	for_each_present_shadow_entry(sub_spt, &sub_se, sub_index) {
+		gvt_vdbg_mm("invalidate 4K entry\n");
+		ppgtt_invalidate_pte(sub_spt, &sub_se);
+	}
+	/* Release the new allocated spt. */
+	trace_spt_change(sub_spt->vgpu->id, "release", sub_spt,
+		sub_spt->guest_page.gfn, sub_spt->shadow_page.type);
+	ppgtt_free_spt(sub_spt);
+	return ret;
 }
 
 static int split_64KB_gtt_entry(struct intel_vgpu *vgpu,
drivers/gpu/drm/i915/gvt/scheduler.c +1 -0
index d6fe94cd0fdb..8342d95f56cb 100644
@@ -696,6 +696,7 @@ intel_vgpu_shadow_mm_pin(struct intel_vgpu_workload *workload)
 
 	if (workload->shadow_mm->type != INTEL_GVT_MM_PPGTT ||
 	    !workload->shadow_mm->ppgtt_mm.shadowed) {
+		intel_vgpu_unpin_mm(workload->shadow_mm);
 		gvt_vgpu_err("workload shadow ppgtt isn't ready\n");
 		return -EINVAL;
 	}
drivers/gpu/drm/i915/i915_irq.c +3 -0
index 86a42d9e8041..f93ffa6626a5 100644
@@ -1981,8 +1981,11 @@ static void icp_irq_handler(struct drm_i915_private *dev_priv, u32 pch_iir)
 	if (ddi_hotplug_trigger) {
 		u32 dig_hotplug_reg;
 
+		/* Locking due to DSI native GPIO sequences */
+		spin_lock(&dev_priv->irq_lock);
 		dig_hotplug_reg = intel_uncore_read(&dev_priv->uncore, SHOTPLUG_CTL_DDI);
 		intel_uncore_write(&dev_priv->uncore, SHOTPLUG_CTL_DDI, dig_hotplug_reg);
+		spin_unlock(&dev_priv->irq_lock);
 
 		intel_get_hpd_pins(dev_priv, &pin_mask, &long_mask,
 				   ddi_hotplug_trigger, dig_hotplug_reg,
drivers/gpu/drm/i915/i915_reg.h +1 -0
index da35bb2db26b..64eacd11b8bf 100644
@@ -6035,6 +6035,7 @@
 
 #define SHOTPLUG_CTL_DDI				_MMIO(0xc4030)
 #define   SHOTPLUG_CTL_DDI_HPD_ENABLE(hpd_pin)			(0x8 << (_HPD_PIN_DDI(hpd_pin) * 4))
+#define   SHOTPLUG_CTL_DDI_HPD_OUTPUT_DATA(hpd_pin)		(0x4 << (_HPD_PIN_DDI(hpd_pin) * 4))
 #define   SHOTPLUG_CTL_DDI_HPD_STATUS_MASK(hpd_pin)		(0x3 << (_HPD_PIN_DDI(hpd_pin) * 4))
 #define   SHOTPLUG_CTL_DDI_HPD_NO_DETECT(hpd_pin)		(0x0 << (_HPD_PIN_DDI(hpd_pin) * 4))
 #define   SHOTPLUG_CTL_DDI_HPD_SHORT_DETECT(hpd_pin)		(0x1 << (_HPD_PIN_DDI(hpd_pin) * 4))
drivers/gpu/drm/imx/ipuv3-plane.c +8 -6
index dba4f7d81d69..80142d9a4a55 100644
@@ -614,6 +614,11 @@ static void ipu_plane_atomic_update(struct drm_plane *plane,
 		break;
 	}
 
+	if (ipu_plane->dp_flow == IPU_DP_FLOW_SYNC_BG)
+		width = ipu_src_rect_width(new_state);
+	else
+		width = drm_rect_width(&new_state->src) >> 16;
+
 	eba = drm_plane_state_to_eba(new_state, 0);
 
 	/*
@@ -622,8 +627,7 @@ static void ipu_plane_atomic_update(struct drm_plane *plane,
 	 */
 	if (ipu_state->use_pre) {
 		axi_id = ipu_chan_assign_axi_id(ipu_plane->dma);
-		ipu_prg_channel_configure(ipu_plane->ipu_ch, axi_id,
-					  ipu_src_rect_width(new_state),
+		ipu_prg_channel_configure(ipu_plane->ipu_ch, axi_id, width,
 					  drm_rect_height(&new_state->src) >> 16,
 					  fb->pitches[0], fb->format->format,
 					  fb->modifier, &eba);
@@ -678,9 +682,8 @@ static void ipu_plane_atomic_update(struct drm_plane *plane,
 		break;
 	}
 
-	ipu_dmfc_config_wait4eot(ipu_plane->dmfc, ALIGN(drm_rect_width(dst), 8));
+	ipu_dmfc_config_wait4eot(ipu_plane->dmfc, width);
 
-	width = ipu_src_rect_width(new_state);
 	height = drm_rect_height(&new_state->src) >> 16;
 	info = drm_format_info(fb->format->format);
 	ipu_calculate_bursts(width, info->cpp[0], fb->pitches[0],
@@ -744,8 +747,7 @@ static void ipu_plane_atomic_update(struct drm_plane *plane,
 		ipu_cpmem_set_burstsize(ipu_plane->ipu_ch, 16);
 
 		ipu_cpmem_zero(ipu_plane->alpha_ch);
-		ipu_cpmem_set_resolution(ipu_plane->alpha_ch,
-					 ipu_src_rect_width(new_state),
+		ipu_cpmem_set_resolution(ipu_plane->alpha_ch, width,
 					 drm_rect_height(&new_state->src) >> 16);
 		ipu_cpmem_set_format_passthrough(ipu_plane->alpha_ch, 8);
 		ipu_cpmem_set_high_priority(ipu_plane->alpha_ch);
drivers/gpu/drm/meson/meson_viu.c +2 -3
index d4b907889a21..cd399b0b7181 100644
@@ -436,15 +436,14 @@ void meson_viu_init(struct meson_drm *priv)
 
 	/* Initialize OSD1 fifo control register */
 	reg = VIU_OSD_DDR_PRIORITY_URGENT |
-		VIU_OSD_HOLD_FIFO_LINES(31) |
 		VIU_OSD_FIFO_DEPTH_VAL(32) | /* fifo_depth_val: 32*8=256 */
 		VIU_OSD_WORDS_PER_BURST(4) | /* 4 words in 1 burst */
 		VIU_OSD_FIFO_LIMITS(2);      /* fifo_lim: 2*16=32 */
 
 	if (meson_vpu_is_compatible(priv, VPU_COMPATIBLE_G12A))
-		reg |= VIU_OSD_BURST_LENGTH_32;
+		reg |= (VIU_OSD_BURST_LENGTH_32 | VIU_OSD_HOLD_FIFO_LINES(31));
 	else
-		reg |= VIU_OSD_BURST_LENGTH_64;
+		reg |= (VIU_OSD_BURST_LENGTH_64 | VIU_OSD_HOLD_FIFO_LINES(4));
 
 	writel_relaxed(reg, priv->io_base + _REG(VIU_OSD1_FIFO_CTRL_STAT));
 	writel_relaxed(reg, priv->io_base + _REG(VIU_OSD2_FIFO_CTRL_STAT));
drivers/gpu/drm/panfrost/panfrost_drv.c +18 -9
index 2fa5afe21288..919e6cc04982 100644
@@ -82,6 +82,7 @@ static int panfrost_ioctl_create_bo(struct drm_device *dev, void *data,
 	struct panfrost_gem_object *bo;
 	struct drm_panfrost_create_bo *args = data;
 	struct panfrost_gem_mapping *mapping;
+	int ret;
 
 	if (!args->size || args->pad ||
 	    (args->flags & ~(PANFROST_BO_NOEXEC | PANFROST_BO_HEAP)))
@@ -92,21 +93,29 @@ static int panfrost_ioctl_create_bo(struct drm_device *dev, void *data,
 	    !(args->flags & PANFROST_BO_NOEXEC))
 		return -EINVAL;
 
-	bo = panfrost_gem_create_with_handle(file, dev, args->size, args->flags,
-					     &args->handle);
+	bo = panfrost_gem_create(dev, args->size, args->flags);
 	if (IS_ERR(bo))
 		return PTR_ERR(bo);
 
+	ret = drm_gem_handle_create(file, &bo->base.base, &args->handle);
+	if (ret)
+		goto out;
+
 	mapping = panfrost_gem_mapping_get(bo, priv);
-	if (!mapping) {
-		drm_gem_object_put(&bo->base.base);
-		return -EINVAL;
+	if (mapping) {
+		args->offset = mapping->mmnode.start << PAGE_SHIFT;
+		panfrost_gem_mapping_put(mapping);
+	} else {
+		/* This can only happen if the handle from
+		 * drm_gem_handle_create() has already been guessed and freed
+		 * by user space
+		 */
+		ret = -EINVAL;
 	}
 
-	args->offset = mapping->mmnode.start << PAGE_SHIFT;
-	panfrost_gem_mapping_put(mapping);
-
-	return 0;
+out:
+	drm_gem_object_put(&bo->base.base);
+	return ret;
 }
 
 /**
drivers/gpu/drm/panfrost/panfrost_gem.c +1 -15
index 293e799e2fe8..3c812fbd126f 100644
@@ -235,12 +235,8 @@ struct drm_gem_object *panfrost_gem_create_object(struct drm_device *dev, size_t
 }
 
 struct panfrost_gem_object *
-panfrost_gem_create_with_handle(struct drm_file *file_priv,
-				struct drm_device *dev, size_t size,
-				u32 flags,
-				uint32_t *handle)
+panfrost_gem_create(struct drm_device *dev, size_t size, u32 flags)
 {
-	int ret;
 	struct drm_gem_shmem_object *shmem;
 	struct panfrost_gem_object *bo;
 
@@ -256,16 +252,6 @@ panfrost_gem_create_with_handle(struct drm_file *file_priv,
 	bo->noexec = !!(flags & PANFROST_BO_NOEXEC);
 	bo->is_heap = !!(flags & PANFROST_BO_HEAP);
 
-	/*
-	 * Allocate an id of idr table where the obj is registered
-	 * and handle has the id what user can see.
-	 */
-	ret = drm_gem_handle_create(file_priv, &shmem->base, handle);
-	/* drop reference from allocate - handle holds it now. */
-	drm_gem_object_put(&shmem->base);
-	if (ret)
-		return ERR_PTR(ret);
-
 	return bo;
 }
 
drivers/gpu/drm/panfrost/panfrost_gem.h +1 -4
index 8088d5fd8480..ad2877eeeccd 100644
@@ -69,10 +69,7 @@ panfrost_gem_prime_import_sg_table(struct drm_device *dev,
 				   struct sg_table *sgt);
 
 struct panfrost_gem_object *
-panfrost_gem_create_with_handle(struct drm_file *file_priv,
-				struct drm_device *dev, size_t size,
-				u32 flags,
-				uint32_t *handle);
+panfrost_gem_create(struct drm_device *dev, size_t size, u32 flags);
 
 int panfrost_gem_open(struct drm_gem_object *obj, struct drm_file *file_priv);
 void panfrost_gem_close(struct drm_gem_object *obj,
drivers/gpu/drm/virtio/virtgpu_object.c +4 -2
index 8d7728181de0..c7e74cf13022 100644
@@ -184,7 +184,7 @@ int virtio_gpu_object_create(struct virtio_gpu_device *vgdev,
 	struct virtio_gpu_object_array *objs = NULL;
 	struct drm_gem_shmem_object *shmem_obj;
 	struct virtio_gpu_object *bo;
-	struct virtio_gpu_mem_entry *ents;
+	struct virtio_gpu_mem_entry *ents = NULL;
 	unsigned int nents;
 	int ret;
 
@@ -210,7 +210,7 @@ int virtio_gpu_object_create(struct virtio_gpu_device *vgdev,
 		ret = -ENOMEM;
 		objs = virtio_gpu_array_alloc(1);
 		if (!objs)
-			goto err_put_id;
+			goto err_free_entry;
 		virtio_gpu_array_add_obj(objs, &bo->base.base);
 
 		ret = virtio_gpu_array_lock_resv(objs);
@@ -239,6 +239,8 @@ int virtio_gpu_object_create(struct virtio_gpu_device *vgdev,
 
 err_put_objs:
 	virtio_gpu_array_put_free(objs);
+err_free_entry:
+	kvfree(ents);
 err_put_id:
 	virtio_gpu_resource_id_put(vgdev, bo->hw_res_handle);
 err_free_gem:
drivers/infiniband/hw/mlx5/counters.c +3 -3
index 945758f39523..3e1272695d99 100644
@@ -278,7 +278,6 @@ static int do_get_hw_stats(struct ib_device *ibdev,
 	const struct mlx5_ib_counters *cnts = get_counters(dev, port_num - 1);
 	struct mlx5_core_dev *mdev;
 	int ret, num_counters;
-	u32 mdev_port_num;
 
 	if (!stats)
 		return -EINVAL;
@@ -299,8 +298,9 @@ static int do_get_hw_stats(struct ib_device *ibdev,
 	}
 
 	if (MLX5_CAP_GEN(dev->mdev, cc_query_allowed)) {
-		mdev = mlx5_ib_get_native_port_mdev(dev, port_num,
-						    &mdev_port_num);
+		if (!port_num)
+			port_num = 1;
+		mdev = mlx5_ib_get_native_port_mdev(dev, port_num, NULL);
 		if (!mdev) {
 			/* If port is not affiliated yet, its in down state
 			 * which doesn't have any counters yet, so it would be
drivers/infiniband/hw/mlx5/qp.c +35 -14

62 lines not on this page · raw message

drivers/net/bonding/bond_3ad.c +1 -0
index e58a1e0cadd2..9270977e6c7f 100644
@@ -1540,6 +1540,7 @@ static void ad_port_selection_logic(struct port *port, bool *update_slave_arr)
 			slave_err(bond->dev, port->slave->dev,
 				  "Port %d did not find a suitable aggregator\n",
 				  port->actor_port_number);
+			return;
 		}
 	}
 	/* if all aggregator's ports are READY_N == TRUE, set ready=TRUE
drivers/net/bonding/bond_main.c +5 -3
index b108f2f4adc2..fce9301c8ebb 100644
@@ -2653,10 +2653,12 @@ static void bond_miimon_link_change(struct bonding *bond,
 
 static void bond_miimon_commit(struct bonding *bond)
 {
-	struct slave *slave, *primary;
+	struct slave *slave, *primary, *active;
 	bool do_failover = false;
 	struct list_head *iter;
 
+	ASSERT_RTNL();
+
 	bond_for_each_slave(bond, slave, iter) {
 		switch (slave->link_new_state) {
 		case BOND_LINK_NOCHANGE:
@@ -2699,8 +2701,8 @@ static void bond_miimon_commit(struct bonding *bond)
 
 			bond_miimon_link_change(bond, slave, BOND_LINK_UP);
 
-			if (!rcu_access_pointer(bond->curr_active_slave) || slave == primary ||
-			    slave->prio > rcu_dereference(bond->curr_active_slave)->prio)
+			active = rtnl_dereference(bond->curr_active_slave);
+			if (!active || slave == primary || slave->prio > active->prio)
 				do_failover = true;
 
 			continue;
drivers/net/dsa/mv88e6xxx/Kconfig +2 -2
index 7a2445a34eb7..e3181d5471df 100644
@@ -2,7 +2,6 @@
 config NET_DSA_MV88E6XXX
 	tristate "Marvell 88E6xxx Ethernet switch fabric support"
 	depends on NET_DSA
-	depends on PTP_1588_CLOCK_OPTIONAL
 	select IRQ_DOMAIN
 	select NET_DSA_TAG_EDSA
 	select NET_DSA_TAG_DSA
@@ -13,7 +12,8 @@ config NET_DSA_MV88E6XXX
 config NET_DSA_MV88E6XXX_PTP
 	bool "PTP support for Marvell 88E6xxx"
 	default n
-	depends on NET_DSA_MV88E6XXX && PTP_1588_CLOCK
+	depends on (NET_DSA_MV88E6XXX = y && PTP_1588_CLOCK = y) || \
+	           (NET_DSA_MV88E6XXX = m && PTP_1588_CLOCK)
 	help
 	  Say Y to enable PTP hardware timestamping on Marvell 88E6xxx switch
 	  chips that support it.
drivers/net/dsa/qca/qca8k-8xxx.c +47 -59

181 lines not on this page · raw message

drivers/net/dsa/qca/qca8k.h +0 -5
index 0b7a5cb12321..03514f7a20be 100644
@@ -375,11 +375,6 @@ struct qca8k_mdio_cache {
  * mdio writes
  */
 	u16 page;
-/* lo and hi can also be cached and from Documentation we can skip one
- * extra mdio write if lo or hi is didn't change.
- */
-	u16 lo;
-	u16 hi;
 };
 
 struct qca8k_pcs {
drivers/net/ethernet/amazon/ena/ena_com.c +9 -20
index 8c8b4c88c7de..451c3a1b6255 100644
@@ -2400,29 +2400,18 @@ int ena_com_fill_hash_function(struct ena_com_dev *ena_dev,
 		return -EOPNOTSUPP;
 	}
 
-	switch (func) {
-	case ENA_ADMIN_TOEPLITZ:
-		if (key) {
-			if (key_len != sizeof(hash_key->key)) {
-				netdev_err(ena_dev->net_device,
-					   "key len (%u) doesn't equal the supported size (%zu)\n",
-					   key_len, sizeof(hash_key->key));
-				return -EINVAL;
-			}
-			memcpy(hash_key->key, key, key_len);
-			rss->hash_init_val = init_val;
-			hash_key->key_parts = key_len / sizeof(hash_key->key[0]);
+	if ((func == ENA_ADMIN_TOEPLITZ) && key) {
+		if (key_len != sizeof(hash_key->key)) {
+			netdev_err(ena_dev->net_device,
+				   "key len (%u) doesn't equal the supported size (%zu)\n",
+				   key_len, sizeof(hash_key->key));
+			return -EINVAL;
 		}
-		break;
-	case ENA_ADMIN_CRC32:
-		rss->hash_init_val = init_val;
-		break;
-	default:
-		netdev_err(ena_dev->net_device, "Invalid hash function (%d)\n",
-			   func);
-		return -EINVAL;
+		memcpy(hash_key->key, key, key_len);
+		hash_key->key_parts = key_len / sizeof(hash_key->key[0]);
 	}
 
+	rss->hash_init_val = init_val;
 	old_func = rss->hash_func;
 	rss->hash_func = func;
 	rc = ena_com_set_hash_function(ena_dev);
drivers/net/ethernet/amazon/ena/ena_ethtool.c +1 -5
index 98d6386b7f39..444ccef76da2 100644
@@ -887,11 +887,7 @@ static int ena_set_tunable(struct net_device *netdev,
 	switch (tuna->id) {
 	case ETHTOOL_RX_COPYBREAK:
 		len = *(u32 *)data;
-		if (len > adapter->netdev->mtu) {
-			ret = -EINVAL;
-			break;
-		}
-		adapter->rx_copybreak = len;
+		ret = ena_set_rx_copybreak(adapter, len);
 		break;
 	default:
 		ret = -EINVAL;
drivers/net/ethernet/amazon/ena/ena_netdev.c +60 -23

245 lines not on this page · raw message

drivers/net/ethernet/amazon/ena/ena_netdev.h +15 -2
index 1bdce99bf688..2cb141079474 100644
@@ -262,9 +262,11 @@ struct ena_ring {
 	bool disable_meta_caching;
 	u16 no_interrupt_event_cnt;
 
-	/* cpu for TPH */
+	/* cpu and NUMA for TPH */
 	int cpu;
-	 /* number of tx/rx_buffer_info's entries */
+	int numa_node;
+
+	/* number of tx/rx_buffer_info's entries */
 	int ring_size;
 
 	enum ena_admin_placement_policy_type tx_mem_queue_type;
@@ -392,6 +394,8 @@ int ena_update_queue_sizes(struct ena_adapter *adapter,
 
 int ena_update_queue_count(struct ena_adapter *adapter, u32 new_channel_count);
 
+int ena_set_rx_copybreak(struct ena_adapter *adapter, u32 rx_copybreak);
+
 int ena_get_sset_count(struct net_device *netdev, int sset);
 
 static inline void ena_reset_device(struct ena_adapter *adapter,
@@ -409,6 +413,15 @@ enum ena_xdp_errors_t {
 	ENA_XDP_NO_ENOUGH_QUEUES,
 };
 
+enum ENA_XDP_ACTIONS {
+	ENA_XDP_PASS		= 0,
+	ENA_XDP_TX		= BIT(0),
+	ENA_XDP_REDIRECT	= BIT(1),
+	ENA_XDP_DROP		= BIT(2)
+};
+
+#define ENA_XDP_FORWARDED (ENA_XDP_TX | ENA_XDP_REDIRECT)
+
 static inline bool ena_xdp_present(struct ena_adapter *adapter)
 {
 	return !!adapter->xdp_bpf_prog;
drivers/net/ethernet/amd/xgbe/xgbe-drv.c +3 -0
index 7b666106feee..614c0278419b 100644
@@ -1064,6 +1064,9 @@ static void xgbe_free_irqs(struct xgbe_prv_data *pdata)
 
 	devm_free_irq(pdata->dev, pdata->dev_irq, pdata);
 
+	tasklet_kill(&pdata->tasklet_dev);
+	tasklet_kill(&pdata->tasklet_ecc);
+
 	if (pdata->vdata->ecc_support && (pdata->dev_irq != pdata->ecc_irq))
 		devm_free_irq(pdata->dev, pdata->ecc_irq, pdata);
 
drivers/net/ethernet/amd/xgbe/xgbe-i2c.c +3 -1
index 22d4fc547a0a..a9ccc4258ee5 100644
@@ -447,8 +447,10 @@ static void xgbe_i2c_stop(struct xgbe_prv_data *pdata)
 	xgbe_i2c_disable(pdata);
 	xgbe_i2c_clear_all_interrupts(pdata);
 
-	if (pdata->dev_irq != pdata->i2c_irq)
+	if (pdata->dev_irq != pdata->i2c_irq) {
 		devm_free_irq(pdata->dev, pdata->i2c_irq, pdata);
+		tasklet_kill(&pdata->tasklet_i2c);
+	}
 }
 
 static int xgbe_i2c_start(struct xgbe_prv_data *pdata)
drivers/net/ethernet/amd/xgbe/xgbe-mdio.c +3 -1
index 4e97b4869522..0c5c1b155683 100644
@@ -1390,8 +1390,10 @@ static void xgbe_phy_stop(struct xgbe_prv_data *pdata)
 	/* Disable auto-negotiation */
 	xgbe_an_disable_all(pdata);
 
-	if (pdata->dev_irq != pdata->an_irq)
+	if (pdata->dev_irq != pdata->an_irq) {
 		devm_free_irq(pdata->dev, pdata->an_irq, pdata);
+		tasklet_kill(&pdata->tasklet_an);
+	}
 
 	pdata->phy_if.phy_impl.stop(pdata);
 
drivers/net/ethernet/broadcom/bnxt/bnxt.c +12 -10
index 9f8a6ce4b356..f5a8bae8d79a 100644
@@ -988,8 +988,7 @@ static struct sk_buff *bnxt_rx_multi_page_skb(struct bnxt *bp,
 	dma_addr -= bp->rx_dma_offset;
 	dma_unmap_page_attrs(&bp->pdev->dev, dma_addr, PAGE_SIZE, bp->rx_dir,
 			     DMA_ATTR_WEAK_ORDERING);
-	skb = build_skb(page_address(page), BNXT_PAGE_MODE_BUF_SIZE +
-					    bp->rx_dma_offset);
+	skb = build_skb(page_address(page), PAGE_SIZE);
 	if (!skb) {
 		__free_page(page);
 		return NULL;
@@ -1922,7 +1921,7 @@ static int bnxt_rx_pkt(struct bnxt *bp, struct bnxt_cp_ring_info *cpr,
 	dma_addr = rx_buf->mapping;
 
 	if (bnxt_xdp_attached(bp, rxr)) {
-		bnxt_xdp_buff_init(bp, rxr, cons, &data_ptr, &len, &xdp);
+		bnxt_xdp_buff_init(bp, rxr, cons, data_ptr, len, &xdp);
 		if (agg_bufs) {
 			u32 frag_len = bnxt_rx_agg_pages_xdp(bp, cpr, &xdp,
 							     cp_cons, agg_bufs,
@@ -1937,7 +1936,7 @@ static int bnxt_rx_pkt(struct bnxt *bp, struct bnxt_cp_ring_info *cpr,
 	}
 
 	if (xdp_active) {
-		if (bnxt_rx_xdp(bp, rxr, cons, xdp, data, &len, event)) {
+		if (bnxt_rx_xdp(bp, rxr, cons, xdp, data, &data_ptr, &len, event)) {
 			rc = 1;
 			goto next_rx;
 		}
@@ -3966,8 +3965,10 @@ void bnxt_set_ring_params(struct bnxt *bp)
 		bp->rx_agg_ring_mask = (bp->rx_agg_nr_pages * RX_DESC_CNT) - 1;
 
 		if (BNXT_RX_PAGE_MODE(bp)) {
-			rx_space = BNXT_PAGE_MODE_BUF_SIZE;
-			rx_size = BNXT_MAX_PAGE_MODE_MTU;
+			rx_space = PAGE_SIZE;
+			rx_size = PAGE_SIZE -
+				  ALIGN(max(NET_SKB_PAD, XDP_PACKET_HEADROOM), 8) -
+				  SKB_DATA_ALIGN(sizeof(struct skb_shared_info));
 		} else {
 			rx_size = SKB_DATA_ALIGN(BNXT_RX_COPY_THRESH + NET_IP_ALIGN);
 			rx_space = rx_size + NET_SKB_PAD +
@@ -5370,15 +5371,16 @@ static int bnxt_hwrm_vnic_set_hds(struct bnxt *bp, u16 vnic_id)
 	req->flags = cpu_to_le32(VNIC_PLCMODES_CFG_REQ_FLAGS_JUMBO_PLACEMENT);
 	req->enables = cpu_to_le32(VNIC_PLCMODES_CFG_REQ_ENABLES_JUMBO_THRESH_VALID);
 
-	if (BNXT_RX_PAGE_MODE(bp) && !BNXT_RX_JUMBO_MODE(bp)) {
+	if (BNXT_RX_PAGE_MODE(bp)) {
+		req->jumbo_thresh = cpu_to_le16(bp->rx_buf_use_size);
+	} else {
 		req->flags |= cpu_to_le32(VNIC_PLCMODES_CFG_REQ_FLAGS_HDS_IPV4 |
 					  VNIC_PLCMODES_CFG_REQ_FLAGS_HDS_IPV6);
 		req->enables |=
 			cpu_to_le32(VNIC_PLCMODES_CFG_REQ_ENABLES_HDS_THRESHOLD_VALID);
+		req->jumbo_thresh = cpu_to_le16(bp->rx_copy_thresh);
+		req->hds_threshold = cpu_to_le16(bp->rx_copy_thresh);
 	}
-	/* thresholds not implemented in firmware yet */
-	req->jumbo_thresh = cpu_to_le16(bp->rx_copy_thresh);
-	req->hds_threshold = cpu_to_le16(bp->rx_copy_thresh);
 	req->vnic_id = cpu_to_le32(vnic->fw_vnic_id);
 	return hwrm_req_send(bp, req);
 }
drivers/net/ethernet/broadcom/bnxt/bnxt.h +11 -4
index d5fa43cfe524..02741d499bf4 100644
@@ -591,12 +591,20 @@ struct nqe_cn {
 #define BNXT_RX_PAGE_SIZE (1 << BNXT_RX_PAGE_SHIFT)
 
 #define BNXT_MAX_MTU		9500
-#define BNXT_PAGE_MODE_BUF_SIZE \
+
+/* First RX buffer page in XDP multi-buf mode
+ *
+ * +-------------------------------------------------------------------------+
+ * | XDP_PACKET_HEADROOM | bp->rx_buf_use_size              | skb_shared_info|
+ * | (bp->rx_dma_offset) |                                  |                |
+ * +-------------------------------------------------------------------------+
+ */
+#define BNXT_MAX_PAGE_MODE_MTU_SBUF \
 	((unsigned int)PAGE_SIZE - VLAN_ETH_HLEN - NET_IP_ALIGN -	\
 	 XDP_PACKET_HEADROOM)
 #define BNXT_MAX_PAGE_MODE_MTU	\
-	BNXT_PAGE_MODE_BUF_SIZE - \
-	SKB_DATA_ALIGN((unsigned int)sizeof(struct skb_shared_info))
+	(BNXT_MAX_PAGE_MODE_MTU_SBUF - \
+	 SKB_DATA_ALIGN((unsigned int)sizeof(struct skb_shared_info)))
 
 #define BNXT_MIN_PKT_SIZE	52
 
@@ -2131,7 +2139,6 @@ struct bnxt {
 #define BNXT_DUMP_CRASH		1
 
 	struct bpf_prog		*xdp_prog;
-	u8			xdp_has_frags;
 
 	struct bnxt_ptp_cfg	*ptp_cfg;
 	u8			ptp_all_rx_tstamp;
drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c +9 -11
index c3065ec0a479..36d5202c0aee 100644
@@ -177,7 +177,7 @@ bool bnxt_xdp_attached(struct bnxt *bp, struct bnxt_rx_ring_info *rxr)
 }
 
 void bnxt_xdp_buff_init(struct bnxt *bp, struct bnxt_rx_ring_info *rxr,
-			u16 cons, u8 **data_ptr, unsigned int *len,
+			u16 cons, u8 *data_ptr, unsigned int len,
 			struct xdp_buff *xdp)
 {
 	struct bnxt_sw_rx_bd *rx_buf;
@@ -191,13 +191,10 @@ void bnxt_xdp_buff_init(struct bnxt *bp, struct bnxt_rx_ring_info *rxr,
 	offset = bp->rx_offset;
 
 	mapping = rx_buf->mapping - bp->rx_dma_offset;
-	dma_sync_single_for_cpu(&pdev->dev, mapping + offset, *len, bp->rx_dir);
-
-	if (bp->xdp_has_frags)
-		buflen = BNXT_PAGE_MODE_BUF_SIZE + offset;
+	dma_sync_single_for_cpu(&pdev->dev, mapping + offset, len, bp->rx_dir);
 
 	xdp_init_buff(xdp, buflen, &rxr->xdp_rxq);
-	xdp_prepare_buff(xdp, *data_ptr - offset, offset, *len, false);
+	xdp_prepare_buff(xdp, data_ptr - offset, offset, len, false);
 }
 
 void bnxt_xdp_buff_frags_free(struct bnxt_rx_ring_info *rxr,
@@ -222,7 +219,8 @@ void bnxt_xdp_buff_frags_free(struct bnxt_rx_ring_info *rxr,
  * false   - packet should be passed to the stack.
  */
 bool bnxt_rx_xdp(struct bnxt *bp, struct bnxt_rx_ring_info *rxr, u16 cons,
-		 struct xdp_buff xdp, struct page *page, unsigned int *len, u8 *event)
+		 struct xdp_buff xdp, struct page *page, u8 **data_ptr,
+		 unsigned int *len, u8 *event)
 {
 	struct bpf_prog *xdp_prog = READ_ONCE(rxr->xdp_prog);
 	struct bnxt_tx_ring_info *txr;
@@ -255,8 +253,10 @@ bool bnxt_rx_xdp(struct bnxt *bp, struct bnxt_rx_ring_info *rxr, u16 cons,
 		*event &= ~BNXT_RX_EVENT;
 
 	*len = xdp.data_end - xdp.data;
-	if (orig_data != xdp.data)
+	if (orig_data != xdp.data) {
 		offset = xdp.data - xdp.data_hard_start;
+		*data_ptr = xdp.data_hard_start + offset;
+	}
 
 	switch (act) {
 	case XDP_PASS:
@@ -401,10 +401,8 @@ static int bnxt_xdp_set(struct bnxt *bp, struct bpf_prog *prog)
 		netdev_warn(dev, "ethtool rx/tx channels must be combined to support XDP.\n");
 		return -EOPNOTSUPP;
 	}
-	if (prog) {
+	if (prog)
 		tx_xdp = bp->rx_nr_rings;
-		bp->xdp_has_frags = prog->aux->xdp_has_frags;
-	}
 
 	tc = netdev_get_num_tc(dev);
 	if (!tc)
drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.h +3 -3
index 505911ae095d..ea430d6961df 100644
@@ -18,8 +18,8 @@ struct bnxt_sw_tx_bd *bnxt_xmit_bd(struct bnxt *bp,
 				   struct xdp_buff *xdp);
 void bnxt_tx_int_xdp(struct bnxt *bp, struct bnxt_napi *bnapi, int nr_pkts);
 bool bnxt_rx_xdp(struct bnxt *bp, struct bnxt_rx_ring_info *rxr, u16 cons,
-		 struct xdp_buff xdp, struct page *page, unsigned int *len,
-		 u8 *event);
+		 struct xdp_buff xdp, struct page *page, u8 **data_ptr,
+		 unsigned int *len, u8 *event);
 int bnxt_xdp(struct net_device *dev, struct netdev_bpf *xdp);
 int bnxt_xdp_xmit(struct net_device *dev, int num_frames,
 		  struct xdp_frame **frames, u32 flags);
@@ -27,7 +27,7 @@ int bnxt_xdp_xmit(struct net_device *dev, int num_frames,
 bool bnxt_xdp_attached(struct bnxt *bp, struct bnxt_rx_ring_info *rxr);
 
 void bnxt_xdp_buff_init(struct bnxt *bp, struct bnxt_rx_ring_info *rxr,
-			u16 cons, u8 **data_ptr, unsigned int *len,
+			u16 cons, u8 *data_ptr, unsigned int len,
 			struct xdp_buff *xdp);
 void bnxt_xdp_buff_frags_free(struct bnxt_rx_ring_info *rxr,
 			      struct xdp_buff *xdp);
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c +4 -6
index 028577943ec5..248f15dac86b 100644
@@ -3855,18 +3855,16 @@ static int hns3_gro_complete(struct sk_buff *skb, u32 l234info)
 	return 0;
 }
 
-static bool hns3_checksum_complete(struct hns3_enet_ring *ring,
+static void hns3_checksum_complete(struct hns3_enet_ring *ring,
 				   struct sk_buff *skb, u32 ptype, u16 csum)
 {
 	if (ptype == HNS3_INVALID_PTYPE ||
 	    hns3_rx_ptype_tbl[ptype].ip_summed != CHECKSUM_COMPLETE)
-		return false;
+		return;
 
 	hns3_ring_stats_update(ring, csum_complete);
 	skb->ip_summed = CHECKSUM_COMPLETE;
 	skb->csum = csum_unfold((__force __sum16)csum);
-
-	return true;
 }
 
 static void hns3_rx_handle_csum(struct sk_buff *skb, u32 l234info,
@@ -3926,8 +3924,7 @@ static void hns3_rx_checksum(struct hns3_enet_ring *ring, struct sk_buff *skb,
 		ptype = hnae3_get_field(ol_info, HNS3_RXD_PTYPE_M,
 					HNS3_RXD_PTYPE_S);
 
-	if (hns3_checksum_complete(ring, skb, ptype, csum))
-		return;
+	hns3_checksum_complete(ring, skb, ptype, csum);
 
 	/* check if hardware has done checksum */
 	if (!(bd_base_info & BIT(HNS3_RXD_L3L4P_B)))
@@ -3936,6 +3933,7 @@ static void hns3_rx_checksum(struct hns3_enet_ring *ring, struct sk_buff *skb,
 	if (unlikely(l234info & (BIT(HNS3_RXD_L3E_B) | BIT(HNS3_RXD_L4E_B) |
 				 BIT(HNS3_RXD_OL3E_B) |
 				 BIT(HNS3_RXD_OL4E_B)))) {
+		skb->ip_summed = CHECKSUM_NONE;
 		hns3_ring_stats_update(ring, l3l4_csum_err);
 
 		return;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c +86 -46

221 lines not on this page · raw message

drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h +7 -0
index 495b639b0dc2..13f23d606e77 100644
@@ -995,9 +995,15 @@ enum HCLGE_VPORT_STATE {
 	HCLGE_VPORT_STATE_MAC_TBL_CHANGE,
 	HCLGE_VPORT_STATE_PROMISC_CHANGE,
 	HCLGE_VPORT_STATE_VLAN_FLTR_CHANGE,
+	HCLGE_VPORT_STATE_INITED,
 	HCLGE_VPORT_STATE_MAX
 };
 
+enum HCLGE_VPORT_NEED_NOTIFY {
+	HCLGE_VPORT_NEED_NOTIFY_RESET,
+	HCLGE_VPORT_NEED_NOTIFY_VF_VLAN,
+};
+
 struct hclge_vlan_info {
 	u16 vlan_proto; /* so far support 802.1Q only */
 	u16 qos;
@@ -1044,6 +1050,7 @@ struct hclge_vport {
 	struct hnae3_handle roce;
 
 	unsigned long state;
+	unsigned long need_notify;
 	unsigned long last_active_jiffies;
 	u32 mps; /* Max packet size */
 	struct hclge_vf_info vf_info;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c +62 -9

105 lines not on this page · raw message

drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c +2 -1
index db6f7cdba958..081bd2c3f289 100644
@@ -2767,7 +2767,8 @@ static int hclgevf_pci_reset(struct hclgevf_dev *hdev)
 	struct pci_dev *pdev = hdev->pdev;
 	int ret = 0;
 
-	if (hdev->reset_type == HNAE3_VF_FULL_RESET &&
+	if ((hdev->reset_type == HNAE3_VF_FULL_RESET ||
+	     hdev->reset_type == HNAE3_FLR_RESET) &&
 	    test_bit(HCLGEVF_STATE_IRQ_INITED, &hdev->state)) {
 		hclgevf_misc_irq_uninit(hdev);
 		hclgevf_uninit_msi(hdev);
drivers/net/ethernet/intel/ice/ice_xsk.c +1 -1
index 056c904b83cc..79fa65d1cf20 100644
@@ -772,7 +772,7 @@ int ice_clean_rx_irq_zc(struct ice_rx_ring *rx_ring, int budget)
 static void
 ice_clean_xdp_tx_buf(struct ice_tx_ring *xdp_ring, struct ice_tx_buf *tx_buf)
 {
-	xdp_return_frame((struct xdp_frame *)tx_buf->raw_buf);
+	page_frag_free(tx_buf->raw_buf);
 	xdp_ring->xdp_tx_active--;
 	dma_unmap_single(xdp_ring->dev, dma_unmap_addr(tx_buf, dma),
 			 dma_unmap_len(tx_buf, len), DMA_TO_DEVICE);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c +21 -9
index 9e10e7471b88..88f8772a61cd 100644
@@ -1012,6 +1012,7 @@ static void otx2_pool_refill_task(struct work_struct *work)
 	rbpool = cq->rbpool;
 	free_ptrs = cq->pool_ptrs;
 
+	get_cpu();
 	while (cq->pool_ptrs) {
 		if (otx2_alloc_rbuf(pfvf, rbpool, &bufptr)) {
 			/* Schedule a WQ if we fails to free atleast half of the
@@ -1031,6 +1032,7 @@ static void otx2_pool_refill_task(struct work_struct *work)
 		pfvf->hw_ops->aura_freeptr(pfvf, qidx, bufptr + OTX2_HEAD_ROOM);
 		cq->pool_ptrs--;
 	}
+	put_cpu();
 	cq->refill_task_sched = false;
 }
 
@@ -1368,6 +1370,7 @@ int otx2_sq_aura_pool_init(struct otx2_nic *pfvf)
 	if (err)
 		goto fail;
 
+	get_cpu();
 	/* Allocate pointers and free them to aura/pool */
 	for (qidx = 0; qidx < hw->tot_tx_queues; qidx++) {
 		pool_id = otx2_get_pool_idx(pfvf, AURA_NIX_SQ, qidx);
@@ -1376,18 +1379,24 @@ int otx2_sq_aura_pool_init(struct otx2_nic *pfvf)
 		sq = &qset->sq[qidx];
 		sq->sqb_count = 0;
 		sq->sqb_ptrs = kcalloc(num_sqbs, sizeof(*sq->sqb_ptrs), GFP_KERNEL);
-		if (!sq->sqb_ptrs)
-			return -ENOMEM;
+		if (!sq->sqb_ptrs) {
+			err = -ENOMEM;
+			goto err_mem;
+		}
 
 		for (ptr = 0; ptr < num_sqbs; ptr++) {
-			if (otx2_alloc_rbuf(pfvf, pool, &bufptr))
-				return -ENOMEM;
+			err = otx2_alloc_rbuf(pfvf, pool, &bufptr);
+			if (err)
+				goto err_mem;
 			pfvf->hw_ops->aura_freeptr(pfvf, pool_id, bufptr);
 			sq->sqb_ptrs[sq->sqb_count++] = (u64)bufptr;
 		}
 	}
 
-	return 0;
+err_mem:
+	put_cpu();
+	return err ? -ENOMEM : 0;
+
 fail:
 	otx2_mbox_reset(&pfvf->mbox.mbox, 0);
 	otx2_aura_pool_free(pfvf);
@@ -1426,18 +1435,21 @@ int otx2_rq_aura_pool_init(struct otx2_nic *pfvf)
 	if (err)
 		goto fail;
 
+	get_cpu();
 	/* Allocate pointers and free them to aura/pool */
 	for (pool_id = 0; pool_id < hw->rqpool_cnt; pool_id++) {
 		pool = &pfvf->qset.pool[pool_id];
 		for (ptr = 0; ptr < num_ptrs; ptr++) {
-			if (otx2_alloc_rbuf(pfvf, pool, &bufptr))
-				return -ENOMEM;
+			err = otx2_alloc_rbuf(pfvf, pool, &bufptr);
+			if (err)
+				goto err_mem;
 			pfvf->hw_ops->aura_freeptr(pfvf, pool_id,
 						   bufptr + OTX2_HEAD_ROOM);
 		}
 	}
-
-	return 0;
+err_mem:
+	put_cpu();
+	return err ? -ENOMEM : 0;
 fail:
 	otx2_mbox_reset(&pfvf->mbox.mbox, 0);
 	otx2_aura_pool_free(pfvf);
drivers/net/ethernet/mellanox/mlx5/core/devlink.c +2 -2
index 66c6a7017695..97e9ec44a759 100644
@@ -468,7 +468,7 @@ static int mlx5_devlink_enable_roce_validate(struct devlink *devlink, u32 id,
 	bool new_state = val.vbool;
 
 	if (new_state && !MLX5_CAP_GEN(dev, roce) &&
-	    !MLX5_CAP_GEN(dev, roce_rw_supported)) {
+	    !(MLX5_CAP_GEN(dev, roce_rw_supported) && MLX5_CAP_GEN_MAX(dev, roce))) {
 		NL_SET_ERR_MSG_MOD(extack, "Device doesn't support RoCE");
 		return -EOPNOTSUPP;
 	}
@@ -563,7 +563,7 @@ static int mlx5_devlink_eq_depth_validate(struct devlink *devlink, u32 id,
 					  union devlink_param_value val,
 					  struct netlink_ext_ack *extack)
 {
-	return (val.vu16 >= 64 && val.vu16 <= 4096) ? 0 : -EINVAL;
+	return (val.vu32 >= 64 && val.vu32 <= 4096) ? 0 : -EINVAL;
 }
 
 static const struct devlink_param mlx5_devlink_params[] = {
drivers/net/ethernet/mellanox/mlx5/core/en/reporter_rx.c +5 -1
index 5f6f95ad6888..1ae15b8536a8 100644
@@ -459,7 +459,11 @@ static int mlx5e_rx_reporter_diagnose(struct devlink_health_reporter *reporter,
 		goto unlock;
 
 	for (i = 0; i < priv->channels.num; i++) {
-		struct mlx5e_rq *rq = &priv->channels.c[i]->rq;
+		struct mlx5e_channel *c = priv->channels.c[i];
+		struct mlx5e_rq *rq;
+
+		rq = test_bit(MLX5E_CHANNEL_STATE_XSK, c->state) ?
+			&c->xskrq : &c->rq;
 
 		err = mlx5e_rx_reporter_build_diagnose_output(rq, fmsg);
 		if (err)
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c +1 -6
index 864ce0c393e6..f01f7dfdbcf8 100644
@@ -2080,14 +2080,9 @@ mlx5_tc_ct_init_check_support(struct mlx5e_priv *priv,
 static void
 mlx5_ct_tc_create_dbgfs(struct mlx5_tc_ct_priv *ct_priv)
 {
-	bool is_fdb = ct_priv->ns_type == MLX5_FLOW_NAMESPACE_FDB;
 	struct mlx5_tc_ct_debugfs *ct_dbgfs = &ct_priv->debugfs;
-	char dirname[16] = {};
 
-	if (sscanf(dirname, "ct_%s", is_fdb ? "fdb" : "nic") < 0)
-		return;
-
-	ct_dbgfs->root = debugfs_create_dir(dirname, mlx5_debugfs_get_dev_root(ct_priv->dev));
+	ct_dbgfs->root = debugfs_create_dir("ct", mlx5_debugfs_get_dev_root(ct_priv->dev));
 	debugfs_create_atomic_t("offloaded", 0400, ct_dbgfs->root,
 				&ct_dbgfs->stats.offloaded);
 	debugfs_create_atomic_t("rx_dropped", 0400, ct_dbgfs->root,
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c +8 -1
index ff73d25bc6eb..2aaf8ab857b8 100644
@@ -222,7 +222,7 @@ void mlx5e_tc_encap_flows_del(struct mlx5e_priv *priv,
 	int err;
 
 	list_for_each_entry(flow, flow_list, tmp_list) {
-		if (!mlx5e_is_offloaded_flow(flow) || flow_flag_test(flow, SLOW))
+		if (!mlx5e_is_offloaded_flow(flow))
 			continue;
 
 		attr = mlx5e_tc_get_encap_attr(flow);
@@ -231,6 +231,13 @@ void mlx5e_tc_encap_flows_del(struct mlx5e_priv *priv,
 		esw_attr->dests[flow->tmp_entry_index].flags &= ~MLX5_ESW_DEST_ENCAP_VALID;
 		esw_attr->dests[flow->tmp_entry_index].pkt_reformat = NULL;
 
+		/* Clear pkt_reformat before checking slow path flag. Because
+		 * in next iteration, the same flow is already set slow path
+		 * flag, but still need to clear the pkt_reformat.
+		 */
+		if (flow_flag_test(flow, SLOW))
+			continue;
+
 		/* update from encap rule to slow path rule */
 		spec = &flow->attr->parse_attr->spec;
 		rule = mlx5e_tc_offload_to_slow_path(esw, flow, spec);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_geneve.c +5 -0
index f5b26f5a7de4..054d80c4e65c 100644
@@ -273,6 +273,11 @@ static int mlx5e_tc_tun_parse_geneve_options(struct mlx5e_priv *priv,
 		 geneve_tlv_option_0_data, be32_to_cpu(opt_data_key));
 	MLX5_SET(fte_match_set_misc3, misc_3_c,
 		 geneve_tlv_option_0_data, be32_to_cpu(opt_data_mask));
+	if (MLX5_CAP_ESW_FLOWTABLE_FDB(priv->mdev,
+				       ft_field_support.geneve_tlv_option_0_exist)) {
+		MLX5_SET_TO_ONES(fte_match_set_misc, misc_c, geneve_tlv_option_0_exist);
+		MLX5_SET_TO_ONES(fte_match_set_misc, misc_v, geneve_tlv_option_0_exist);
+	}
 
 	spec->match_criteria_enable |= MLX5_MATCH_MISC_PARAMETERS_3;
 
drivers/net/ethernet/mellanox/mlx5/core/en_main.c +1 -1
index 5e41dfdf79c8..951ede433813 100644
@@ -1298,7 +1298,7 @@ static int mlx5e_alloc_xdpsq(struct mlx5e_channel *c,
 	sq->channel   = c;
 	sq->uar_map   = mdev->mlx5e_res.hw_objs.bfreg.map;
 	sq->min_inline_mode = params->tx_min_inline_mode;
-	sq->hw_mtu    = MLX5E_SW2HW_MTU(params, params->sw_mtu);
+	sq->hw_mtu    = MLX5E_SW2HW_MTU(params, params->sw_mtu) - ETH_FCS_LEN;
 	sq->xsk_pool  = xsk_pool;
 
 	sq->stats = sq->xsk_pool ?
drivers/net/ethernet/mellanox/mlx5/core/esw/acl/egress_lgcy.c +6 -1
index 60a73990017c..6b4c9ffad95b 100644
@@ -67,6 +67,7 @@ static void esw_acl_egress_lgcy_groups_destroy(struct mlx5_vport *vport)
 int esw_acl_egress_lgcy_setup(struct mlx5_eswitch *esw,
 			      struct mlx5_vport *vport)
 {
+	bool vst_mode_steering = esw_vst_mode_is_steering(esw);
 	struct mlx5_flow_destination drop_ctr_dst = {};
 	struct mlx5_flow_destination *dst = NULL;
 	struct mlx5_fc *drop_counter = NULL;
@@ -77,6 +78,7 @@ int esw_acl_egress_lgcy_setup(struct mlx5_eswitch *esw,
 	 */
 	int table_size = 2;
 	int dest_num = 0;
+	int actions_flag;
 	int err = 0;
 
 	if (vport->egress.legacy.drop_counter) {
@@ -119,8 +121,11 @@ int esw_acl_egress_lgcy_setup(struct mlx5_eswitch *esw,
 		  vport->vport, vport->info.vlan, vport->info.qos);
 
 	/* Allowed vlan rule */
+	actions_flag = MLX5_FLOW_CONTEXT_ACTION_ALLOW;
+	if (vst_mode_steering)
+		actions_flag |= MLX5_FLOW_CONTEXT_ACTION_VLAN_POP;
 	err = esw_egress_acl_vlan_create(esw, vport, NULL, vport->info.vlan,
-					 MLX5_FLOW_CONTEXT_ACTION_ALLOW);
+					 actions_flag);
 	if (err)
 		goto out;
 
drivers/net/ethernet/mellanox/mlx5/core/esw/acl/ingress_lgcy.c +28 -5
index b1a5199260f6..093ed86a0acd 100644
@@ -139,11 +139,14 @@ static void esw_acl_ingress_lgcy_groups_destroy(struct mlx5_vport *vport)
 int esw_acl_ingress_lgcy_setup(struct mlx5_eswitch *esw,
 			       struct mlx5_vport *vport)
 {
+	bool vst_mode_steering = esw_vst_mode_is_steering(esw);
 	struct mlx5_flow_destination drop_ctr_dst = {};
 	struct mlx5_flow_destination *dst = NULL;
 	struct mlx5_flow_act flow_act = {};
 	struct mlx5_flow_spec *spec = NULL;
 	struct mlx5_fc *counter = NULL;
+	bool vst_check_cvlan = false;
+	bool vst_push_cvlan = false;
 	/* The ingress acl table contains 4 groups
 	 * (2 active rules at the same time -
 	 *      1 allow rule from one of the first 3 groups.
@@ -203,7 +206,26 @@ int esw_acl_ingress_lgcy_setup(struct mlx5_eswitch *esw,
 		goto out;
 	}
 
-	if (vport->info.vlan || vport->info.qos)
+	if ((vport->info.vlan || vport->info.qos)) {
+		if (vst_mode_steering)
+			vst_push_cvlan = true;
+		else if (!MLX5_CAP_ESW(esw->dev, vport_cvlan_insert_always))
+			vst_check_cvlan = true;
+	}
+
+	if (vst_check_cvlan || vport->info.spoofchk)
+		spec->match_criteria_enable = MLX5_MATCH_OUTER_HEADERS;
+
+	/* Create ingress allow rule */
+	flow_act.action = MLX5_FLOW_CONTEXT_ACTION_ALLOW;
+	if (vst_push_cvlan) {
+		flow_act.action |= MLX5_FLOW_CONTEXT_ACTION_VLAN_PUSH;
+		flow_act.vlan[0].prio = vport->info.qos;
+		flow_act.vlan[0].vid = vport->info.vlan;
+		flow_act.vlan[0].ethtype = ETH_P_8021Q;
+	}
+
+	if (vst_check_cvlan)
 		MLX5_SET_TO_ONES(fte_match_param, spec->match_criteria,
 				 outer_headers.cvlan_tag);
 
@@ -218,9 +240,6 @@ int esw_acl_ingress_lgcy_setup(struct mlx5_eswitch *esw,
 		ether_addr_copy(smac_v, vport->info.mac);
 	}
 
-	/* Create ingress allow rule */
-	spec->match_criteria_enable = MLX5_MATCH_OUTER_HEADERS;
-	flow_act.action = MLX5_FLOW_CONTEXT_ACTION_ALLOW;
 	vport->ingress.allow_rule = mlx5_add_flow_rules(vport->ingress.acl, spec,
 							&flow_act, NULL, 0);
 	if (IS_ERR(vport->ingress.allow_rule)) {
@@ -232,6 +251,9 @@ int esw_acl_ingress_lgcy_setup(struct mlx5_eswitch *esw,
 		goto out;
 	}
 
+	if (!vst_check_cvlan && !vport->info.spoofchk)
+		goto out;
+
 	memset(&flow_act, 0, sizeof(flow_act));
 	flow_act.action = MLX5_FLOW_CONTEXT_ACTION_DROP;
 	/* Attach drop flow counter */
@@ -257,7 +279,8 @@ int esw_acl_ingress_lgcy_setup(struct mlx5_eswitch *esw,
 	return 0;
 
 out:
-	esw_acl_ingress_lgcy_cleanup(esw, vport);
+	if (err)
+		esw_acl_ingress_lgcy_cleanup(esw, vport);
 	kvfree(spec);
 	return err;
 }
drivers/net/ethernet/mellanox/mlx5/core/eswitch.c +21 -9
index 374e3fbdc2cf..788a6ab5c463 100644
@@ -161,10 +161,17 @@ static int modify_esw_vport_cvlan(struct mlx5_core_dev *dev, u16 vport,
 			 esw_vport_context.vport_cvlan_strip, 1);
 
 	if (set_flags & SET_VLAN_INSERT) {
-		/* insert only if no vlan in packet */
-		MLX5_SET(modify_esw_vport_context_in, in,
-			 esw_vport_context.vport_cvlan_insert, 1);
-
+		if (MLX5_CAP_ESW(dev, vport_cvlan_insert_always)) {
+			/* insert either if vlan exist in packet or not */
+			MLX5_SET(modify_esw_vport_context_in, in,
+				 esw_vport_context.vport_cvlan_insert,
+				 MLX5_VPORT_CVLAN_INSERT_ALWAYS);
+		} else {
+			/* insert only if no vlan in packet */
+			MLX5_SET(modify_esw_vport_context_in, in,
+				 esw_vport_context.vport_cvlan_insert,
+				 MLX5_VPORT_CVLAN_INSERT_WHEN_NO_CVLAN);
+		}
 		MLX5_SET(modify_esw_vport_context_in, in,
 			 esw_vport_context.cvlan_pcp, qos);
 		MLX5_SET(modify_esw_vport_context_in, in,
@@ -774,6 +781,7 @@ static void esw_vport_cleanup_acl(struct mlx5_eswitch *esw,
 
 static int esw_vport_setup(struct mlx5_eswitch *esw, struct mlx5_vport *vport)
 {
+	bool vst_mode_steering = esw_vst_mode_is_steering(esw);
 	u16 vport_num = vport->vport;
 	int flags;
 	int err;
@@ -800,8 +808,9 @@ static int esw_vport_setup(struct mlx5_eswitch *esw, struct mlx5_vport *vport)
 
 	flags = (vport->info.vlan || vport->info.qos) ?
 		SET_VLAN_STRIP | SET_VLAN_INSERT : 0;
-	modify_esw_vport_cvlan(esw->dev, vport_num, vport->info.vlan,
-			       vport->info.qos, flags);
+	if (esw->mode == MLX5_ESWITCH_OFFLOADS || !vst_mode_steering)
+		modify_esw_vport_cvlan(esw->dev, vport_num, vport->info.vlan,
+				       vport->info.qos, flags);
 
 	return 0;
 }
@@ -1805,6 +1814,7 @@ int __mlx5_eswitch_set_vport_vlan(struct mlx5_eswitch *esw,
 				  u16 vport, u16 vlan, u8 qos, u8 set_flags)
 {
 	struct mlx5_vport *evport = mlx5_eswitch_get_vport(esw, vport);
+	bool vst_mode_steering = esw_vst_mode_is_steering(esw);
 	int err = 0;
 
 	if (IS_ERR(evport))
@@ -1812,9 +1822,11 @@ int __mlx5_eswitch_set_vport_vlan(struct mlx5_eswitch *esw,
 	if (vlan > 4095 || qos > 7)
 		return -EINVAL;
 
-	err = modify_esw_vport_cvlan(esw->dev, vport, vlan, qos, set_flags);
-	if (err)
-		return err;
+	if (esw->mode == MLX5_ESWITCH_OFFLOADS || !vst_mode_steering) {
+		err = modify_esw_vport_cvlan(esw->dev, vport, vlan, qos, set_flags);
+		if (err)
+			return err;
+	}
 
 	evport->info.vlan = vlan;
 	evport->info.qos = qos;
drivers/net/ethernet/mellanox/mlx5/core/eswitch.h +6 -0
index 3029bc1c0dd0..5db76af35d3f 100644
@@ -518,6 +518,12 @@ int mlx5_eswitch_del_vlan_action(struct mlx5_eswitch *esw,
 int __mlx5_eswitch_set_vport_vlan(struct mlx5_eswitch *esw,
 				  u16 vport, u16 vlan, u8 qos, u8 set_flags);
 
+static inline bool esw_vst_mode_is_steering(struct mlx5_eswitch *esw)
+{
+	return (MLX5_CAP_ESW_EGRESS_ACL(esw->dev, pop_vlan) &&
+		MLX5_CAP_ESW_INGRESS_ACL(esw->dev, push_vlan));
+}
+
 static inline bool mlx5_eswitch_vlan_actions_supported(struct mlx5_core_dev *dev,
 						       u8 vlan_depth)
 {
drivers/net/ethernet/mellanox/mlx5/core/health.c +6 -0
index 86ed87d704f7..96417c5feed7 100644
@@ -674,6 +674,12 @@ static void mlx5_fw_fatal_reporter_err_work(struct work_struct *work)
 	dev = container_of(priv, struct mlx5_core_dev, priv);
 	devlink = priv_to_devlink(dev);
 
+	mutex_lock(&dev->intf_state_mutex);
+	if (test_bit(MLX5_DROP_NEW_HEALTH_WORK, &health->flags)) {
+		mlx5_core_err(dev, "health works are not permitted at this stage\n");
+		return;
+	}
+	mutex_unlock(&dev->intf_state_mutex);
 	enter_error_state(dev, false);
 	if (IS_ERR_OR_NULL(health->fw_fatal_reporter)) {
 		devl_lock(devlink);
drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c +4 -0
index 4e3a75496dd9..84f5352b0ce1 100644
@@ -71,6 +71,10 @@ static void mlx5i_build_nic_params(struct mlx5_core_dev *mdev,
 	params->packet_merge.type = MLX5E_PACKET_MERGE_NONE;
 	params->hard_mtu = MLX5_IB_GRH_BYTES + MLX5_IPOIB_HARD_LEN;
 	params->tunneled_offload_en = false;
+
+	/* CQE compression is not supported for IPoIB */
+	params->rx_cqe_compress_def = false;
+	MLX5E_SET_PFLAG(params, MLX5E_PFLAG_RX_CQE_COMPRESS, params->rx_cqe_compress_def);
 }
 
 /* Called directly after IPoIB netdevice was created to initialize SW structs */
drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c +1 -0
index 32c3e0a649a7..ad32b80e8501 100644
@@ -228,6 +228,7 @@ static void mlx5_ldev_free(struct kref *ref)
 	if (ldev->nb.notifier_call)
 		unregister_netdevice_notifier_net(&init_net, &ldev->nb);
 	mlx5_lag_mp_cleanup(ldev);
+	cancel_delayed_work_sync(&ldev->bond_work);
 	destroy_workqueue(ldev->wq);
 	mlx5_lag_mpesw_cleanup(ldev);
 	mutex_destroy(&ldev->lock);
drivers/net/ethernet/mellanox/mlx5/core/main.c +3 -1
index e58775a7d955..00758312df06 100644
@@ -614,7 +614,7 @@ static int handle_hca_cap(struct mlx5_core_dev *dev, void *set_ctx)
 		MLX5_SET(cmd_hca_cap, set_hca_cap, num_total_dynamic_vf_msix,
 			 MLX5_CAP_GEN_MAX(dev, num_total_dynamic_vf_msix));
 
-	if (MLX5_CAP_GEN(dev, roce_rw_supported))
+	if (MLX5_CAP_GEN(dev, roce_rw_supported) && MLX5_CAP_GEN_MAX(dev, roce))
 		MLX5_SET(cmd_hca_cap, set_hca_cap, roce,
 			 mlx5_is_roce_on(dev));
 
@@ -1051,6 +1051,8 @@ static int mlx5_init_once(struct mlx5_core_dev *dev)
 err_tables_cleanup:
 	mlx5_geneve_destroy(dev->geneve);
 	mlx5_vxlan_destroy(dev->vxlan);
+	mlx5_cleanup_clock(dev);
+	mlx5_cleanup_reserved_gids(dev);
 	mlx5_cq_debugfs_cleanup(dev);
 	mlx5_fw_reset_cleanup(dev);
 err_events_cleanup:
drivers/net/ethernet/microchip/lan966x/lan966x_port.c +1 -1
index 1a61c6cdb077..0050fcb988b7 100644
@@ -381,7 +381,7 @@ int lan966x_port_pcs_set(struct lan966x_port *port,
 	}
 
 	/* Take PCS out of reset */
-	lan_rmw(DEV_CLOCK_CFG_LINK_SPEED_SET(2) |
+	lan_rmw(DEV_CLOCK_CFG_LINK_SPEED_SET(LAN966X_SPEED_1000) |
 		DEV_CLOCK_CFG_PCS_RX_RST_SET(0) |
 		DEV_CLOCK_CFG_PCS_TX_RST_SET(0),
 		DEV_CLOCK_CFG_LINK_SPEED |
drivers/net/ethernet/microchip/sparx5/sparx5_main.c +1 -1
index b6bbb3c9bd7a..3423c95cc84a 100644
@@ -824,7 +824,7 @@ static int mchp_sparx5_probe(struct platform_device *pdev)
 	if (err)
 		goto cleanup_config;
 
-	if (!of_get_mac_address(np, sparx5->base_mac)) {
+	if (of_get_mac_address(np, sparx5->base_mac)) {
 		dev_info(sparx5->dev, "MAC addr was not set, use random MAC\n");
 		eth_random_addr(sparx5->base_mac);
 		sparx5->base_mac[5] = 0;
drivers/net/ethernet/qlogic/qed/qed_debug.c +20 -8
index 86ecb080b153..cdcead614e9f 100644
@@ -1832,7 +1832,8 @@ static enum dbg_status qed_find_nvram_image(struct qed_hwfn *p_hwfn,
 					    struct qed_ptt *p_ptt,
 					    u32 image_type,
 					    u32 *nvram_offset_bytes,
-					    u32 *nvram_size_bytes)
+					    u32 *nvram_size_bytes,
+					    bool b_can_sleep)
 {
 	u32 ret_mcp_resp, ret_mcp_param, ret_txn_size;
 	struct mcp_file_att file_att;
@@ -1846,7 +1847,8 @@ static enum dbg_status qed_find_nvram_image(struct qed_hwfn *p_hwfn,
 					&ret_mcp_resp,
 					&ret_mcp_param,
 					&ret_txn_size,
-					(u32 *)&file_att, false);
+					(u32 *)&file_att,
+					b_can_sleep);
 
 	/* Check response */
 	if (nvm_result || (ret_mcp_resp & FW_MSG_CODE_MASK) !=
@@ -1873,7 +1875,9 @@ static enum dbg_status qed_find_nvram_image(struct qed_hwfn *p_hwfn,
 static enum dbg_status qed_nvram_read(struct qed_hwfn *p_hwfn,
 				      struct qed_ptt *p_ptt,
 				      u32 nvram_offset_bytes,
-				      u32 nvram_size_bytes, u32 *ret_buf)
+				      u32 nvram_size_bytes,
+				      u32 *ret_buf,
+				      bool b_can_sleep)
 {
 	u32 ret_mcp_resp, ret_mcp_param, ret_read_size, bytes_to_copy;
 	s32 bytes_left = nvram_size_bytes;
@@ -1899,7 +1903,7 @@ static enum dbg_status qed_nvram_read(struct qed_hwfn *p_hwfn,
 				       &ret_mcp_resp,
 				       &ret_mcp_param, &ret_read_size,
 				       (u32 *)((u8 *)ret_buf + read_offset),
-				       false))
+				       b_can_sleep))
 			return DBG_STATUS_NVRAM_READ_FAILED;
 
 		/* Check response */
@@ -3380,7 +3384,8 @@ static u32 qed_grc_dump_mcp_hw_dump(struct qed_hwfn *p_hwfn,
 				      p_ptt,
 				      NVM_TYPE_HW_DUMP_OUT,
 				      &hw_dump_offset_bytes,
-				      &hw_dump_size_bytes);
+				      &hw_dump_size_bytes,
+				      false);
 	if (status != DBG_STATUS_OK)
 		return 0;
 
@@ -3397,7 +3402,9 @@ static u32 qed_grc_dump_mcp_hw_dump(struct qed_hwfn *p_hwfn,
 		status = qed_nvram_read(p_hwfn,
 					p_ptt,
 					hw_dump_offset_bytes,
-					hw_dump_size_bytes, dump_buf + offset);
+					hw_dump_size_bytes,
+					dump_buf + offset,
+					false);
 		if (status != DBG_STATUS_OK) {
 			DP_NOTICE(p_hwfn,
 				  "Failed to read MCP HW Dump image from NVRAM\n");
@@ -4123,7 +4130,9 @@ static enum dbg_status qed_mcp_trace_get_meta_info(struct qed_hwfn *p_hwfn,
 	return qed_find_nvram_image(p_hwfn,
 				    p_ptt,
 				    nvram_image_type,
-				    trace_meta_offset, trace_meta_size);
+				    trace_meta_offset,
+				    trace_meta_size,
+				    true);
 }
 
 /* Reads the MCP Trace meta data from NVRAM into the specified buffer */
@@ -4139,7 +4148,10 @@ static enum dbg_status qed_mcp_trace_read_meta(struct qed_hwfn *p_hwfn,
 	/* Read meta data from NVRAM */
 	status = qed_nvram_read(p_hwfn,
 				p_ptt,
-				nvram_offset_in_bytes, size_in_bytes, buf);
+				nvram_offset_in_bytes,
+				size_in_bytes,
+				buf,
+				true);
 	if (status != DBG_STATUS_OK)
 		return status;
 
drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c +7 -1
index dbb800769cb6..c95d56e56c59 100644
@@ -2505,7 +2505,13 @@ int qlcnic_83xx_init(struct qlcnic_adapter *adapter)
 		goto disable_mbx_intr;
 
 	qlcnic_83xx_clear_function_resources(adapter);
-	qlcnic_dcb_enable(adapter->dcb);
+
+	err = qlcnic_dcb_enable(adapter->dcb);
+	if (err) {
+		qlcnic_dcb_free(adapter->dcb);
+		goto disable_mbx_intr;
+	}
+
 	qlcnic_83xx_initialize_nic(adapter, 1);
 	qlcnic_dcb_get_info(adapter->dcb);
 
drivers/net/ethernet/qlogic/qlcnic/qlcnic_dcb.h +2 -8
index 7519773eaca6..22afa2be85fd 100644
@@ -41,11 +41,6 @@ struct qlcnic_dcb {
 	unsigned long			state;
 };
 
-static inline void qlcnic_clear_dcb_ops(struct qlcnic_dcb *dcb)
-{
-	kfree(dcb);
-}
-
 static inline int qlcnic_dcb_get_hw_capability(struct qlcnic_dcb *dcb)
 {
 	if (dcb && dcb->ops->get_hw_capability)
@@ -112,9 +107,8 @@ static inline void qlcnic_dcb_init_dcbnl_ops(struct qlcnic_dcb *dcb)
 		dcb->ops->init_dcbnl_ops(dcb);
 }
 
-static inline void qlcnic_dcb_enable(struct qlcnic_dcb *dcb)
+static inline int qlcnic_dcb_enable(struct qlcnic_dcb *dcb)
 {
-	if (dcb && qlcnic_dcb_attach(dcb))
-		qlcnic_clear_dcb_ops(dcb);
+	return dcb ? qlcnic_dcb_attach(dcb) : 0;
 }
 #endif
drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c +7 -1
index 28476b982bab..44dac3c0908e 100644
@@ -2599,7 +2599,13 @@ qlcnic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 			 "Device does not support MSI interrupts\n");
 
 	if (qlcnic_82xx_check(adapter)) {
-		qlcnic_dcb_enable(adapter->dcb);
+		err = qlcnic_dcb_enable(adapter->dcb);
+		if (err) {
+			qlcnic_dcb_free(adapter->dcb);
+			dev_err(&pdev->dev, "Failed to enable DCB\n");
+			goto err_out_free_hw;
+		}
+
 		qlcnic_dcb_get_info(adapter->dcb);
 		err = qlcnic_setup_intr(adapter);
 
drivers/net/phy/xilinx_gmii2rgmii.c +1 -0
index 8dcb49ed1f3d..7fd9fe6a602b 100644
@@ -105,6 +105,7 @@ static int xgmiitorgmii_probe(struct mdio_device *mdiodev)
 
 	if (!priv->phy_dev->drv) {
 		dev_info(dev, "Attached phy not ready\n");
+		put_device(&priv->phy_dev->mdio.dev);
 		return -EPROBE_DEFER;
 	}
 
drivers/net/usb/rndis_host.c +2 -1
index f79333fe1783..7b3739b29c8f 100644
@@ -255,7 +255,8 @@ static int rndis_query(struct usbnet *dev, struct usb_interface *intf,
 
 	off = le32_to_cpu(u.get_c->offset);
 	len = le32_to_cpu(u.get_c->len);
-	if (unlikely((8 + off + len) > CONTROL_BUFFER_SIZE))
+	if (unlikely((off > CONTROL_BUFFER_SIZE - 8) ||
+		     (len > CONTROL_BUFFER_SIZE - 8 - off)))
 		goto response_error;
 
 	if (*reply_len != -1 && len != *reply_len)
drivers/net/veth.c +3 -2
index 09682ea3354e..bd385ccd0d18 100644
@@ -974,6 +974,9 @@ static int veth_poll(struct napi_struct *napi, int budget)
 	xdp_set_return_frame_no_direct();
 	done = veth_xdp_rcv(rq, budget, &bq, &stats);
 
+	if (stats.xdp_redirect > 0)
+		xdp_do_flush();
+
 	if (done < budget && napi_complete_done(napi, done)) {
 		/* Write rx_notify_masked before reading ptr_ring */
 		smp_store_mb(rq->rx_notify_masked, false);
@@ -987,8 +990,6 @@ static int veth_poll(struct napi_struct *napi, int budget)
 
 	if (stats.xdp_tx > 0)
 		veth_xdp_flush(rq, &bq);
-	if (stats.xdp_redirect > 0)
-		xdp_do_flush();
 	xdp_clear_return_frame_no_direct();
 
 	return done;
drivers/net/vmxnet3/vmxnet3_drv.c +8 -0
index 6f1e560fb15c..56267c327f0b 100644
@@ -1288,6 +1288,10 @@ vmxnet3_rx_csum(struct vmxnet3_adapter *adapter,
 		    (le32_to_cpu(gdesc->dword[3]) &
 		     VMXNET3_RCD_CSUM_OK) == VMXNET3_RCD_CSUM_OK) {
 			skb->ip_summed = CHECKSUM_UNNECESSARY;
+			if ((le32_to_cpu(gdesc->dword[0]) &
+				     (1UL << VMXNET3_RCD_HDR_INNER_SHIFT))) {
+				skb->csum_level = 1;
+			}
 			WARN_ON_ONCE(!(gdesc->rcd.tcp || gdesc->rcd.udp) &&
 				     !(le32_to_cpu(gdesc->dword[0]) &
 				     (1UL << VMXNET3_RCD_HDR_INNER_SHIFT)));
@@ -1297,6 +1301,10 @@ vmxnet3_rx_csum(struct vmxnet3_adapter *adapter,
 		} else if (gdesc->rcd.v6 && (le32_to_cpu(gdesc->dword[3]) &
 					     (1 << VMXNET3_RCD_TUC_SHIFT))) {
 			skb->ip_summed = CHECKSUM_UNNECESSARY;
+			if ((le32_to_cpu(gdesc->dword[0]) &
+				     (1UL << VMXNET3_RCD_HDR_INNER_SHIFT))) {
+				skb->csum_level = 1;
+			}
 			WARN_ON_ONCE(!(gdesc->rcd.tcp || gdesc->rcd.udp) &&
 				     !(le32_to_cpu(gdesc->dword[0]) &
 				     (1UL << VMXNET3_RCD_HDR_INNER_SHIFT)));
drivers/net/vrf.c +3 -3
index badf6f09ae51..f6dcec66f0a4 100644
@@ -1385,8 +1385,8 @@ static struct sk_buff *vrf_ip6_rcv(struct net_device *vrf_dev,
 
 	/* loopback, multicast & non-ND link-local traffic; do not push through
 	 * packet taps again. Reset pkt_type for upper layers to process skb.
-	 * For strict packets with a source LLA, determine the dst using the
-	 * original ifindex.
+	 * For non-loopback strict packets, determine the dst using the original
+	 * ifindex.
 	 */
 	if (skb->pkt_type == PACKET_LOOPBACK || (need_strict && !is_ndisc)) {
 		skb->dev = vrf_dev;
@@ -1395,7 +1395,7 @@ static struct sk_buff *vrf_ip6_rcv(struct net_device *vrf_dev,
 
 		if (skb->pkt_type == PACKET_LOOPBACK)
 			skb->pkt_type = PACKET_HOST;
-		else if (ipv6_addr_type(&ipv6_hdr(skb)->saddr) & IPV6_ADDR_LINKLOCAL)
+		else
 			vrf_ip6_input_dst(skb, vrf_dev, orig_iif);
 
 		goto out;
drivers/net/vxlan/vxlan_core.c +13 -6
index 6ab669dcd1c6..d4be39b19a6b 100644
@@ -2917,16 +2917,23 @@ static int vxlan_init(struct net_device *dev)
 		vxlan_vnigroup_init(vxlan);
 
 	dev->tstats = netdev_alloc_pcpu_stats(struct pcpu_sw_netstats);
-	if (!dev->tstats)
-		return -ENOMEM;
+	if (!dev->tstats) {
+		err = -ENOMEM;
+		goto err_vnigroup_uninit;
+	}
 
 	err = gro_cells_init(&vxlan->gro_cells, dev);
-	if (err) {
-		free_percpu(dev->tstats);
-		return err;
-	}
+	if (err)
+		goto err_free_percpu;
 
 	return 0;
+
+err_free_percpu:
+	free_percpu(dev->tstats);
+err_vnigroup_uninit:
+	if (vxlan->cfg.flags & VXLAN_F_VNIFILTER)
+		vxlan_vnigroup_uninit(vxlan);
+	return err;
 }
 
 static void vxlan_fdb_delete_default(struct vxlan_dev *vxlan, __be32 vni)
drivers/net/wireless/ath/ath11k/qmi.c +3 -0
index 8358fe08c234..7cc5fa325152 100644
@@ -19,6 +19,7 @@
 #define SLEEP_CLOCK_SELECT_INTERNAL_BIT	0x02
 #define HOST_CSTATE_BIT			0x04
 #define PLATFORM_CAP_PCIE_GLOBAL_RESET	0x08
+#define PLATFORM_CAP_PCIE_PME_D3COLD	0x10
 
 #define FW_BUILD_ID_MASK "QC_IMAGE_VERSION_STRING="
 
@@ -1752,6 +1753,8 @@ static int ath11k_qmi_host_cap_send(struct ath11k_base *ab)
 	if (ab->hw_params.global_reset)
 		req.nm_modem |= PLATFORM_CAP_PCIE_GLOBAL_RESET;
 
+	req.nm_modem |= PLATFORM_CAP_PCIE_PME_D3COLD;
+
 	ath11k_dbg(ab, ATH11K_DBG_QMI, "qmi host cap request\n");
[… more lines in the raw message]

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

drivers/net/wireless/ath/ath9k/htc.h +7 -7
index 30f0765fb9fd..237f4ec2cffd 100644

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

drivers/nvme/host/core.c +26 -6
index 108b5022cead..1ded96d1bfd2 100644

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

drivers/nvme/host/nvme.h +1 -1
index 8a0db9e06dc6..cbda8a19409b 100644

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

drivers/nvme/target/admin-cmd.c +19 -16
index c8a061ce3ee5..76ceaadd6eea 100644

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

drivers/of/fdt.c +4 -2
index 7b571a631639..4f88e8bbdd27 100644

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

drivers/phy/qualcomm/phy-qcom-qmp-combo.c +13 -7
index 91f8ee79000d..adcda7762acf 100644

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

drivers/thermal/intel/int340x_thermal/processor_thermal_rfim.c +4 -0
index 8c42e7662033..92ed1213fe37 100644

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

drivers/usb/dwc3/dwc3-xilinx.c +1 -0
index 8607d4c23283..0745e9f11b2e 100644

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

drivers/usb/dwc3/gadget.c +4 -1
index 6d524fa76443..ed958da0e1c9 100644

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

drivers/vdpa/mlx5/net/mlx5_vnet.c +6 -4
index 90913365def4..444d6572b2d0 100644

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

drivers/vdpa/vdpa_sim/vdpa_sim.c +4 -3
index b071f0d842fb..cb88891b44a8 100644

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

drivers/vdpa/vdpa_sim/vdpa_sim_blk.c +3 -1
index c6db1a1baf76..f745926237a8 100644

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

drivers/vdpa/vdpa_sim/vdpa_sim_net.c +3 -1
index c3cb225ea469..11f5a121df24 100644

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

drivers/vdpa/virtio_pci/vp_vdpa.c +1 -1
index d448db0c4de3..8fe267ca3e76 100644

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

drivers/vhost/vdpa.c +31 -21

52 lines not on this page · raw message

drivers/vhost/vhost.c +2 -2
index 40097826cff0..3c2359570df9 100644

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

drivers/vhost/vringh.c +2 -3
index 11f59dd06a74..828c29306565 100644

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

drivers/vhost/vsock.c +8 -1
index 5703775af129..10a7d23731fe 100644

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

drivers/video/fbdev/matrox/matroxfb_base.c +2 -2
index 775d34115e2d..82f53e998b01 100644

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

fs/btrfs/disk-io.c +5 -3
index d99bf7c64611..6538f52262ca 100644

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

fs/btrfs/disk-io.h +1 -1
index 9fa923e005a3..7322af63c0cc 100644

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

fs/btrfs/extent-io-tree.c +1 -1
index 7b93719a486c..09ae0e73e680 100644

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

fs/btrfs/extent_io.c +10 -1
index 4dcf22e051ff..acb3c5c3b025 100644

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

fs/btrfs/file.c +1 -1
index ed4e1c3705d0..9bef8eaa074a 100644

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

fs/btrfs/ioctl.c +3 -6
index 5ba2e810dc6e..fd1902573cde 100644

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

fs/btrfs/rcu-string.h +5 -1
index 5c1a617eb25d..5c2b66d155ef 100644

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

fs/btrfs/super.c +1 -1
index 5942b9384088..abfd7c897075 100644

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

fs/btrfs/tree-defrag.c +4 -2
index b6cf39f4e7e4..072ab9a1374b 100644

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

fs/ceph/caps.c +1 -1
index e54814d0c2f7..cd69bf267d1b 100644

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

fs/ceph/locks.c +0 -4
index 3e2843e86e27..b191426bf880 100644

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

fs/ceph/super.h +0 -1
index 40630e6f691c..ae4126f63410 100644

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

fs/cifs/sess.c +2 -1
index 9e7d9f0baa18..0b842a07e157 100644

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

fs/cifs/smb2ops.c +2 -1
index b24e68b5ccd6..8da98918cf86 100644

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

fs/hfs/inode.c +10 -5
index a0746be3c1de..80d17c520d0b 100644

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

fs/ksmbd/auth.c +2 -1
index 2a39ffb8423b..6e61b5bc7d86 100644

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

fs/ksmbd/connection.c +5 -2
index 12be8386446a..fd0a288af299 100644

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

fs/ksmbd/smb2pdu.c +5 -2
index b2fc85d440d0..533742ebcb37 100644

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

fs/ksmbd/transport_tcp.c +4 -1
index 63d55f543bd2..4c6bd0b69979 100644

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

fs/locks.c +23 -0
index 607f94a0e789..7dc129cc1a26 100644

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

fs/nfsd/nfs4xdr.c +11 -0
index bcfeb1a922c0..78849646fe83 100644

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

fs/nfsd/nfssvc.c +1 -1
index bfbd9f672f59..8b1afde19211 100644

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

fs/ntfs3/file.c +2 -2
index 4f2ffc7ef296..f31c0389a2e7 100644

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

fs/udf/inode.c +1 -1
index f713d108f21d..e92a16435a29 100644

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

include/acpi/video.h +2 -0
index a275c35e5249..8ed9bec03e53 100644

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

include/drm/drm_plane_helper.h +1 -0
index ff83d2621687..3a574e8cd22f 100644

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

include/linux/dsa/tag_qca.h +2 -2
index b1b5720d89a5..ee657452f122 100644

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

include/linux/efi.h +0 -2
index 7603fc58c47c..4aa1dbc7b064 100644

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

include/linux/fs.h +6 -0
index 6b115bce14b9..081d1f539628 100644

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

include/linux/mlx5/device.h +5 -0
index 1ff91cb79ded..2383076a7306 100644

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

include/linux/mlx5/mlx5_ifc.h +2 -1
index 5a4e914e2a6f..e45bdec73baf 100644

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

include/linux/netfilter/ipset/ip_set.h +1 -1
index ada1296c87d5..72f5ebc5c97a 100644

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

include/linux/sunrpc/rpc_pipe_fs.h +5 -0
index cd188a527d16..3b35b6f6533a 100644

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

include/net/inet_hashtables.h +4 -0
index 69174093078f..99bd823e97f6 100644

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

include/net/inet_timewait_sock.h +5 -0
index 5b47545f22d3..4a8e578405cb 100644

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

include/net/netfilter/nf_tables.h +24 -1
index cdb7db9b0e25..1daededfa75e 100644

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

io_uring/cancel.c +4 -5
index 2291a53cdabd..b4f5dfacc0c3 100644

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

io_uring/io_uring.c +13 -6
index 71f1cabb9f3d..cea5de98c423 100644

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

kernel/bpf/trampoline.c +4 -0
index bf0906e1e2b9..f1504cb5b6e1 100644

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

kernel/bpf/verifier.c +7 -5
index 242fe307032f..b4d5b343c191 100644

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

lib/kunit/string-stream.c +3 -1
index a608746020a9..7aeabe1a3dc5 100644

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

net/9p/client.c +8 -7
index b554f8357f96..b5aa25f82b78 100644

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

net/9p/trans_fd.c +6 -6
index 07db2f436d44..5a1aecf7fe48 100644

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

net/9p/trans_rdma.c +2 -2
index 6ff706760676..e9a830c69058 100644

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

net/9p/trans_virtio.c +5 -4
index e757f0601304..3f3eb03cda7d 100644

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

net/9p/trans_xen.c +2 -2
index aaa5fd364691..cf1b89ba522b 100644

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

net/caif/cfctrl.c +5 -1
index cc405d8c7c30..8480684f2762 100644

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

net/core/filter.c +5 -2
index a368edd9057c..0c2666e041d3 100644

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

net/ipv4/inet_connection_sock.c +36 -4
index 4a34bc7cb15e..647b3c6b575e 100644

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

net/ipv4/inet_hashtables.c +5 -3
index 3cec471a2cd2..67f5e5440802 100644

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

net/ipv4/inet_timewait_sock.c +29 -2
index 66fc940f9521..1d77d992e6e7 100644

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

net/ipv4/tcp_ulp.c +4 -0
index 9ae50b1bd844..05b6077b9f2c 100644

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

net/mptcp/protocol.c +16 -4
index 1dbc62537259..e97465f0c667 100644

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

net/mptcp/protocol.h +2 -2
index 6a09ab99a12d..62e9ff237b6e 100644

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

net/mptcp/subflow.c +17 -2
index 613f515fedf0..9d3701fdb293 100644

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

net/netfilter/ipset/ip_set_core.c +4 -3
index e7ba5b6dd2b7..46ebee9400da 100644

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

net/netfilter/ipset/ip_set_hash_ip.c +7 -7
index 75d556d71652..24adcdd7a0b1 100644

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

net/netfilter/ipset/ip_set_hash_ipmark.c +7 -6
index 153de3457423..a22ec1a6f6ec 100644

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

net/netfilter/ipset/ip_set_hash_ipport.c +7 -6
index 7303138e46be..10481760a9b2 100644

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

net/netfilter/ipset/ip_set_hash_ipportip.c +7 -6
index 334fb1ad0e86..39a01934b153 100644

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

net/netfilter/ipset/ip_set_hash_ipportnet.c +8 -5
index 7df94f437f60..5c6de605a9fb 100644

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

net/netfilter/ipset/ip_set_hash_net.c +7 -10
index 1422739d9aa2..ce0a9ce5a91f 100644

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

net/netfilter/ipset/ip_set_hash_netiface.c +6 -9
index 9810f5bf63f5..031073286236 100644

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

net/netfilter/ipset/ip_set_hash_netnet.c +7 -16
index 3d09eefe998a..c07b70bf32db 100644

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

net/netfilter/ipset/ip_set_hash_netport.c +7 -12
index 09cf72eb37f8..d1a0628df4ef 100644

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

net/netfilter/ipset/ip_set_hash_netportnet.c +21 -19
index 19bcdb3141f6..005a7ce87217 100644

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

net/netfilter/nf_tables_api.c +175 -86

261 lines not on this page · raw message

net/nfc/netlink.c +38 -14

52 lines not on this page · raw message

net/sched/cls_tcindex.c +2 -10
index 1c9eeb98d826..4bdcbee4bec5 100644

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

net/sched/sch_atm.c +4 -1
index f52255fea652..4a981ca90b0b 100644

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

net/sched/sch_cbq.c +2 -2
index 6568e17c4c63..36db5f6782f2 100644

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

net/sunrpc/auth_gss/auth_gss.c +17 -2
index 7bb247c51e2f..2d7b1e03110a 100644

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

sound/soc/intel/boards/bytcr_rt5640.c +15 -0
index fb9d9e271845..ddd2625bed90 100644

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

sound/soc/sof/core.c +0 -9
index 3e6141d03770..625977a29d8a 100644

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

sound/soc/sof/intel/hda-dsp.c +72 -0

72 lines not on this page · raw message

sound/soc/sof/intel/hda.h +1 -0
index 2ab3c3840b92..9acd21901e68 100644

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

sound/soc/sof/intel/tgl.c +1 -1
index 9ae2890e9dac..8637fe102c87 100644

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

sound/soc/sof/mediatek/mtk-adsp-common.c +1 -1
index 1e0769c668a7..de8dbe27cd0d 100644

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

tools/perf/builtin-lock.c +2 -0
index 66520712a167..470106643ed5 100644

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

tools/perf/util/bpf_counter_cgroup.c +3 -11
index 3c2df7522f6f..1c82377ed78b 100644

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

tools/perf/util/cgroup.c +18 -5
index e99b41f9be45..cd978c240e0d 100644

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

tools/perf/util/data.c +2 -0
index a7f68c309545..fc16299c915f 100644

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

tools/perf/util/dwarf-aux.c +5 -18
index 609ca1671501..623527edeac1 100644

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

tools/testing/selftests/net/arp_ndisc_evict_nocarrier.sh +11 -4
index b5af08af8559..4a110bb01e53 100755

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.