Linux 6.0.19
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.0.19 kernel.
Note, this is the LAST 6.0.y kernel release. All users must move to the 6.1.y branch at this point in time, as this branch is now end-of-life.
The updated 6.0.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.0.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/block/ublk_drv.c | 3 drivers/block/virtio_blk.c | 33 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-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 | 12 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/imx/ipuv3-plane.c | 14 drivers/gpu/drm/meson/meson_viu.c | 5 drivers/gpu/drm/mgag200/mgag200_pll.c | 3 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/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/hclge_mbx.h | 11 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 | 486 ++++++---- 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/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/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/block-rsv.c | 1 fs/btrfs/ctree.h | 30 fs/btrfs/disk-io.c | 271 +++-- fs/btrfs/disk-io.h | 9 fs/btrfs/extent_io.c | 11 fs/btrfs/ioctl.c | 9 fs/btrfs/rcu-string.h | 6 fs/btrfs/super.c | 95 + fs/btrfs/sysfs.c | 2 fs/btrfs/transaction.c | 8 fs/btrfs/tree-defrag.c | 6 fs/btrfs/volumes.c | 2 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/ext4/super.c | 19 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/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/netfilter/nf_tables.h | 25 include/uapi/linux/btrfs.h | 6 io_uring/io_uring.c | 11 kernel/bpf/trampoline.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 | 14 net/ipv4/tcp_ulp.c | 4 net/mptcp/protocol.c | 2 net/mptcp/protocol.h | 2 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 182 files changed, 2178 insertions(+), 1141 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
Baokun Li (1):
ext4: correct inconsistent error msg in nojournal mode
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
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()
Geetha sowjanya (1):
octeontx2-pf: Fix lmtst ID used in aura free
Greg Kroah-Hartman (1):
Linux 6.0.19
Hans de Goede (1):
ASoC: Intel: bytcr_rt5640: Add quirk for the Advantech MICA-071 tablet
Hao Lan (1):
net: hns3: refactor function hclge_mbx_handler()
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
Jason Wang (1):
vdpasim: fix memory leak when freeing IOTLBs
Jason Yan (1):
ext4: goto right label 'failed_mount3a'
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 (3):
ARM: renumber bits related to _TIF_WORK_MASK
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
Jocelyn Falempe (1):
drm/mgag200: Fix PLL setup for G200_SE_A rev >=4
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"
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)
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
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 (2):
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 (1):
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 (7):
btrfs: check superblock to ensure the fs was not modified at thaw time
btrfs: don't save block group root into super block
btrfs: separate BLOCK_GROUP_TREE compat RO flag from EXTENT_TREE_V2
btrfs: relax block-group-tree feature dependency checks
btrfs: fix compat_ro checks against remount
btrfs: handle case when repair happens with dev-replace
btrfs: make thaw time super block check to also verify checksum
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
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
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
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
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()
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 0 -SUBLEVEL = 18 +SUBLEVEL = 19 EXTRAVERSION = NAME = Hurr durr I'ma ninja sloth
arch/arm/include/asm/thread_info.h +7 -6
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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/block/ublk_drv.c +3 -0
@@ -1718,6 +1718,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
@@ -311,22 +311,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);
@@ -360,15 +373,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/crypto/virtio/virtio_crypto_skcipher_algs.c +2 -1
@@ -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
@@ -608,7 +608,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" );
@@ -617,8 +617,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
@@ -873,6 +873,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-sifive.c +1 -0
@@ -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
@@ -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
@@ -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
@@ -1471,10 +1471,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;
@@ -1485,10 +1484,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. */
@@ -1497,14 +1492,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
@@ -177,6 +177,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;
@@ -862,6 +863,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
@@ -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
@@ -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,
@@ -1581,9 +1581,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;
@@ -1598,13 +1598,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
@@ -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 +7 -5
@@ -5821,7 +5821,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);
@@ -6895,7 +6896,7 @@ static void amdgpu_dm_connector_add_freesync_modes(struct drm_connector *connectstruct 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 )
@@ -8766,7 +8767,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;
@@ -8801,7 +8803,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;
@@ -8813,7 +8815,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/i915/gvt/debugfs.c +13 -4
@@ -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
@@ -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
@@ -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/imx/ipuv3-plane.c +8 -6
@@ -615,6 +615,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 );/*
@@ -623,8 +628,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);
@@ -679,9 +683,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],
@@ -745,8 +748,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
@@ -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/mgag200/mgag200_pll.c +2 -1
@@ -269,7 +269,8 @@ static void mgag200_pixpll_update_g200se_04(struct mgag200_pll *pixpll, pixpllcp = pixpllc->p -1 ; pixpllcs = pixpllc->s; - xpixpllcm = pixpllcm | ((pixpllcn &BIT (8 )) >>1 ); +// For G200SE A, BIT(7) should be set unconditionally. + xpixpllcm =BIT (7 ) | pixpllcm; xpixpllcn = pixpllcn; xpixpllcp = (pixpllcs <<3 ) | pixpllcp;
drivers/gpu/drm/panfrost/panfrost_drv.c +18 -9
@@ -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
@@ -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
@@ -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/infiniband/hw/mlx5/counters.c +3 -3
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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 1struct 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
@@ -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
@@ -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/hclge_mbx.h +11 -0
@@ -233,6 +233,17 @@ struct hclgevf_mbx_arq_ring {__le16 msg_q[HCLGE_MBX_MAX_ARQ_MSG_NUM ][HCLGE_MBX_MAX_ARQ_MSG_SIZE ]; }; +struct hclge_dev ; + +#define HCLGE_MBX_OPCODE_MAX 256 +struct hclge_mbx_ops_param { +struct hclge_vport *vport; +struct hclge_mbx_vf_to_pf_cmd *req; +struct hclge_respond_to_vf_msg *resp_msg; +}; + +typedef int (*hclge_mbx_ops_fn )(struct hclge_mbx_ops_param *param); +#define hclge_mbx_ring_ptr_move_crq (crq) \ (crq->next_to_use = (crq->next_to_use + 1) % crq->desc_num)#define hclge_mbx_tail_ptr_move_arq (arq) \
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c +4 -6
@@ -3813,18 +3813,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,
@@ -3884,8 +3882,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 )))
@@ -3894,6 +3891,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
@@ -972,9 +972,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;
@@ -1021,6 +1027,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 +335 -151
541 lines not on this page · raw message
drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c +2 -1
@@ -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
@@ -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
@@ -977,6 +977,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
@@ -996,6 +997,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; }
@@ -1333,6 +1335,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);
@@ -1341,18 +1344,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);
@@ -1391,18 +1400,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
@@ -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/tc_ct.c +1 -6
@@ -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
@@ -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
@@ -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
@@ -1146,7 +1146,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
@@ -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
@@ -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
@@ -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 ; }
@@ -1806,6 +1815,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))
@@ -1813,9 +1823,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
@@ -513,6 +513,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
@@ -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
@@ -70,6 +70,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
@@ -201,6 +201,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
@@ -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));
@@ -1017,6 +1017,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
@@ -369,7 +369,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
@@ -819,7 +819,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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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]) &
Lines of this file are not shown. View the raw message.
drivers/phy/qualcomm/phy-qcom-qmp-combo.c +13 -7
Lines of this file are not shown. View the raw message.
drivers/thermal/intel/int340x_thermal/processor_thermal_rfim.c +4 -0
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/video/fbdev/matrox/matroxfb_base.c +2 -2
Lines of this file are not shown. View the raw message.
fs/btrfs/disk-io.c +166 -105
271 lines not on this page · raw message
fs/btrfs/super.c +79 -16
95 lines not on this page · raw message
net/netfilter/ipset/ip_set_hash_ipmark.c +7 -6
Lines of this file are not shown. View the raw message.
net/netfilter/ipset/ip_set_hash_ipport.c +7 -6
Lines of this file are not shown. View the raw message.
net/netfilter/ipset/ip_set_hash_ipportip.c +7 -6
Lines of this file are not shown. View the raw message.
net/netfilter/ipset/ip_set_hash_ipportnet.c +8 -5
Lines of this file are not shown. View the raw message.
net/netfilter/ipset/ip_set_hash_netiface.c +6 -9
Lines of this file are not shown. View the raw message.
net/netfilter/ipset/ip_set_hash_netnet.c +7 -16
Lines of this file are not shown. View the raw message.
net/netfilter/ipset/ip_set_hash_netport.c +7 -12
Lines of this file are not shown. View the raw message.
net/netfilter/ipset/ip_set_hash_netportnet.c +21 -19
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
sound/soc/sof/intel/hda-dsp.c +72 -0
72 lines not on this page · raw message
sound/soc/sof/mediatek/mtk-adsp-common.c +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/arp_ndisc_evict_nocarrier.sh +11 -4
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.