Linux 5.8.15
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.8.15 kernel.
All users of the 5.8 kernel series must upgrade.
The updated 5.8.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.8.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/arm64/crypto/aes-neonbs-core.S | 4 arch/riscv/mm/init.c | 1 block/partitions/ibm.c | 7 block/scsi_ioctl.c | 1 drivers/gpio/gpiolib.c | 2 drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 1 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_hdcp.c | 2 drivers/gpu/drm/amd/powerplay/hwmgr/smu10_hwmgr.c | 10 drivers/gpu/drm/nouveau/nouveau_mem.c | 2 drivers/gpu/drm/nouveau/nvkm/engine/device/base.c | 1 drivers/i2c/busses/i2c-meson.c | 52 - drivers/i2c/busses/i2c-owl.c | 6 drivers/input/misc/ati_remote2.c | 4 drivers/iommu/intel/iommu.c | 4 drivers/mmc/core/queue.c | 2 drivers/net/bonding/bond_main.c | 1 drivers/net/dsa/ocelot/felix_vsc9959.c | 35 drivers/net/ethernet/cavium/octeon/octeon_mgmt.c | 6 drivers/net/ethernet/huawei/hinic/Kconfig | 1 drivers/net/ethernet/huawei/hinic/hinic_hw_api_cmd.c | 27 drivers/net/ethernet/huawei/hinic/hinic_hw_api_cmd.h | 4 drivers/net/ethernet/huawei/hinic/hinic_hw_cmdq.c | 2 drivers/net/ethernet/huawei/hinic/hinic_hw_cmdq.h | 2 drivers/net/ethernet/huawei/hinic/hinic_hw_dev.c | 12 drivers/net/ethernet/huawei/hinic/hinic_hw_eqs.c | 39 drivers/net/ethernet/huawei/hinic/hinic_hw_eqs.h | 6 drivers/net/ethernet/huawei/hinic/hinic_hw_if.c | 23 drivers/net/ethernet/huawei/hinic/hinic_hw_if.h | 10 drivers/net/ethernet/huawei/hinic/hinic_hw_mbox.c | 2 drivers/net/ethernet/huawei/hinic/hinic_hw_mgmt.c | 1 drivers/net/ethernet/huawei/hinic/hinic_port.c | 68 - drivers/net/ethernet/huawei/hinic/hinic_sriov.c | 18 drivers/net/ethernet/intel/iavf/iavf_main.c | 49 - drivers/net/ethernet/intel/ice/ice_lib.c | 20 drivers/net/ethernet/intel/ice/ice_lib.h | 6 drivers/net/ethernet/intel/ice/ice_main.c | 13 drivers/net/ethernet/marvell/mvneta.c | 13 drivers/net/ethernet/marvell/octeontx2/af/mbox.c | 12 drivers/net/ethernet/marvell/octeontx2/af/mbox.h | 1 drivers/net/ethernet/marvell/octeontx2/af/rvu.h | 3 drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c | 5 drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c | 26 drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c | 16 drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.c | 1 drivers/net/ethernet/marvell/octeontx2/nic/otx2_vf.c | 4 drivers/net/ethernet/mellanox/mlx5/core/cmd.c | 181 +++- drivers/net/ethernet/mellanox/mlx5/core/en.h | 8 drivers/net/ethernet/mellanox/mlx5/core/en/port.c | 3 drivers/net/ethernet/mellanox/mlx5/core/en/rep/neigh.c | 81 +- drivers/net/ethernet/mellanox/mlx5/core/en_fs.c | 14 drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 74 + drivers/net/ethernet/mellanox/mlx5/core/en_rep.h | 6 drivers/net/ethernet/mellanox/mlx5/core/eq.c | 42 + drivers/net/ethernet/mellanox/mlx5/core/lib/eq.h | 2 drivers/net/ethernet/mellanox/mlx5/core/pci_irq.c | 2 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c | 3 drivers/net/ethernet/mscc/Makefile | 2 drivers/net/ethernet/mscc/ocelot.c | 43 - drivers/net/ethernet/mscc/ocelot_board.c | 626 --------------- drivers/net/ethernet/mscc/ocelot_vsc7514.c | 639 ++++++++++++++++ drivers/net/ethernet/realtek/r8169_main.c | 11 drivers/net/ethernet/renesas/ravb_main.c | 110 +- drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c | 1 drivers/net/ethernet/stmicro/stmmac/stmmac.h | 2 drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c | 27 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 23 drivers/net/macsec.c | 4 drivers/net/phy/Kconfig | 1 drivers/net/phy/realtek.c | 31 drivers/net/team/team.c | 3 drivers/net/usb/ax88179_178a.c | 1 drivers/net/usb/rtl8150.c | 16 drivers/net/virtio_net.c | 8 drivers/net/vmxnet3/vmxnet3_drv.c | 5 drivers/net/vmxnet3/vmxnet3_ethtool.c | 28 drivers/net/vmxnet3/vmxnet3_int.h | 4 drivers/nvme/host/core.c | 4 drivers/nvme/host/tcp.c | 7 drivers/platform/olpc/olpc-ec.c | 4 drivers/platform/x86/Kconfig | 2 drivers/platform/x86/asus-nb-wmi.c | 32 drivers/platform/x86/asus-wmi.c | 16 drivers/platform/x86/asus-wmi.h | 1 drivers/platform/x86/intel-vbtn.c | 64 + drivers/platform/x86/thinkpad_acpi.c | 6 drivers/tty/vt/selection.c | 2 drivers/vhost/vdpa.c | 122 +-- drivers/vhost/vhost.c | 12 drivers/video/console/newport_con.c | 7 drivers/video/fbdev/core/fbcon.c | 12 drivers/video/fbdev/core/fbcon.h | 7 drivers/video/fbdev/core/fbcon_rotate.c | 1 drivers/video/fbdev/core/tileblit.c | 1 fs/afs/inode.c | 47 - fs/afs/internal.h | 1 fs/afs/write.c | 11 fs/btrfs/dev-replace.c | 6 fs/btrfs/volumes.c | 13 fs/btrfs/volumes.h | 3 fs/cifs/smb2ops.c | 2 fs/exfat/cache.c | 11 fs/exfat/exfat_fs.h | 3 fs/exfat/inode.c | 2 fs/exfat/super.c | 5 fs/io_uring.c | 19 fs/pipe.c | 11 fs/splice.c | 20 include/asm-generic/vmlinux.lds.h | 2 include/linux/font.h | 13 include/linux/khugepaged.h | 5 include/linux/mlx5/driver.h | 2 include/linux/net.h | 16 include/linux/pagemap.h | 3 include/linux/watch_queue.h | 6 include/net/act_api.h | 2 include/net/netlink.h | 3 include/net/xfrm.h | 16 include/soc/mscc/ocelot.h | 1 kernel/bpf/sysfs_btf.c | 6 kernel/bpf/verifier.c | 8 kernel/events/core.c | 5 kernel/umh.c | 9 lib/fonts/font_10x18.c | 9 lib/fonts/font_6x10.c | 9 lib/fonts/font_6x11.c | 9 lib/fonts/font_7x14.c | 9 lib/fonts/font_8x16.c | 9 lib/fonts/font_8x8.c | 9 lib/fonts/font_acorn_8x8.c | 9 lib/fonts/font_mini_4x6.c | 8 lib/fonts/font_pearl_8x8.c | 9 lib/fonts/font_sun12x22.c | 9 lib/fonts/font_sun8x16.c | 7 lib/fonts/font_ter16x32.c | 9 mm/khugepaged.c | 25 mm/page_alloc.c | 3 net/bridge/br_fdb.c | 2 net/core/skbuff.c | 4 net/ipv4/tcp.c | 3 net/ipv4/tcp_ipv4.c | 6 net/netlink/genetlink.c | 9 net/netlink/policy.c | 24 net/openvswitch/conntrack.c | 22 net/qrtr/ns.c | 34 net/rxrpc/conn_event.c | 6 net/rxrpc/key.c | 20 net/sched/act_api.c | 52 - net/sched/act_bpf.c | 4 net/sched/act_connmark.c | 1 net/sched/act_csum.c | 3 net/sched/act_ct.c | 2 net/sched/act_ctinfo.c | 3 net/sched/act_gact.c | 2 net/sched/act_gate.c | 3 net/sched/act_ife.c | 3 net/sched/act_ipt.c | 2 net/sched/act_mirred.c | 2 net/sched/act_mpls.c | 2 net/sched/act_nat.c | 3 net/sched/act_pedit.c | 2 net/sched/act_police.c | 2 net/sched/act_sample.c | 2 net/sched/act_simple.c | 2 net/sched/act_skbedit.c | 2 net/sched/act_skbmod.c | 2 net/sched/act_tunnel_key.c | 3 net/sched/act_vlan.c | 2 net/sctp/auth.c | 1 net/tls/tls_sw.c | 9 net/wireless/nl80211.c | 3 net/xdp/xsk.c | 17 net/xfrm/espintcp.c | 6 net/xfrm/xfrm_interface.c | 2 net/xfrm/xfrm_state.c | 42 - 175 files changed, 2142 insertions(+), 1379 deletions(-)
Aaron Ma (1):
platform/x86: thinkpad_acpi: re-initialize ACPI buffer size when reuse
Alexey Kardashevskiy (1):
tty/vt: Do not warn when huge selection requested
Anant Thazhemadam (3):
net: wireless: nl80211: fix out-of-bounds access in nl80211_del_key()
net: team: fix memory leak in __team_options_register
net: usb: rtl8150: set random MAC address when set_ethernet_addr() fails
Andy Shevchenko (1):
gpiolib: Disable compat ->read() code in UML case
Antony Antony (4):
xfrm: clone XFRMA_SET_MARK in xfrm_do_migrate
xfrm: clone XFRMA_REPLAY_ESN_VAL in xfrm_do_migrate
xfrm: clone XFRMA_SEC_CTX in xfrm_do_migrate
xfrm: clone whole liftime_cur structure in xfrm_do_migrate
Atish Patra (1):
RISC-V: Make sure memblock reserves the memory containing DT
Aya Levin (5):
net/mlx5e: Add resiliency in Striding RQ mode for packets larger than MTU net/mlx5e: Fix return status when setting unsupported FEC mode net/mlx5e: Fix VLAN cleanup flow
net/mlx5e: Fix VLAN create flow
net/mlx5e: Fix driver's declaration to support GRE offload
Chaitanya Kulkarni (1):
nvme-core: put ctrl ref when module ref get fail
Christoph Hellwig (1):
partitions/ibm: fix non-DASD devices
Coly Li (4):
net: introduce helper sendpage_ok() in include/linux/net.h
tcp: use sendpage_ok() to detect misused .sendpage
nvme-tcp: check page by sendpage_ok() before calling kernel_sendpage()
mmc: core: don't set limits.discard_granularity as 0
Cong Wang (2):
net_sched: defer tcf_idr_insert() in tcf_action_init_1()
net_sched: commit action insertions together
Cristian Ciocaltea (1):
i2c: owl: Clear NACK and BUS error bits
Daniel Borkmann (1):
bpf: Fix scalar32_min_max_or bounds tracking
David Howells (5):
rxrpc: Downgrade the BUG() for unsupported token type in rxrpc_read()
rxrpc: Fix some missing _bh annotations on locking conn->state_lock
rxrpc: The server keyring isn't network-namespaced
rxrpc: Fix server keyring leak
afs: Fix deadlock between writeback and truncate
Dinghao Liu (1):
Platform: OLPC: Fix memleak in olpc_ec_probe
Dumitru Ceara (1):
openvswitch: handle DNAT tuple collision
Eran Ben Elisha (4):
net/mlx5: Fix a race when moving command interface to polling mode net/mlx5: Avoid possible free of command entry while timeout comp handler net/mlx5: poll cmd EQ in case of command timeout
net/mlx5: Add retry mechanism to the command entry index allocation
Eric Dumazet (5):
macsec: avoid use-after-free in macsec_handle_frame()
sctp: fix sctp_auth_init_hmacs() error path
team: set dev->needed_headroom in team_setup_by_port()
bonding: set dev->needed_headroom in bond_setup_by_slave()
tcp: fix receive window update in tcp_add_backlog()
Flora Cui (1):
drm/amd/display: fix return value check for hdcp_work
Geert Uytterhoeven (1):
Revert "ravb: Fixed to be able to unload modules"
Geetha sowjanya (1):
octeontx2-pf: Fix TCP/UDP checksum offload for IPv6 frames
Greg Kroah-Hartman (1):
Linux 5.8.15
Greg Kurz (2):
vhost: Don't call access_ok() when using IOTLB
vhost: Use vhost_get_used_size() in vhost_vring_set_addr()
Guillaume Nault (1):
net/core: check length before updating Ethertype in skb_mpls_{push,pop}Hans de Goede (3):
platform/x86: intel-vbtn: Fix SW_TABLET_MODE always reporting 1 on the HP Pavilion 11 x360 platform/x86: asus-wmi: Fix SW_TABLET_MODE always reporting 1 on many different models platform/x86: intel-vbtn: Switch to an allow-list for SW_TABLET_MODE reporting
Hariprasad Kelam (2):
octeontx2-pf: Fix the device state on error
octeontx2-pf: Fix synchnorization issue in mbox
Heiner Kallweit (2):
r8169: consider that PHY reset may still be in progress after applying firmware
r8169: fix RTL8168f/RTL8411 EPHY config
Herbert Xu (1):
xfrm: Use correct address family in xfrm_state_find
Hugh Dickins (1):
mm/khugepaged: fix filemap page_to_pgoff(page) != offset
Ido Schimmel (1):
mlxsw: spectrum_acl: Fix mlxsw_sp_acl_tcam_group_add()'s error path
Ivan Khoronzhuk (1):
net: ethernet: cavium: octeon_mgmt: use phy_start and phy_stop
Jacob Keller (2):
ice: fix memory leak if register_netdev_fails
ice: fix memory leak in ice_vsi_setup
Jens Axboe (1):
io_uring: fix potential ABBA deadlock in ->show_fdinfo()
Jeremy Linton (1):
crypto: arm64: Use x16 with indirect branch to bti_c
Jerome Brunet (2):
i2c: meson: fix clock setting overwrite
i2c: meson: keep peripheral clock enabled
Johannes Berg (1):
netlink: fix policy dump leak
Josef Bacik (2):
btrfs: move btrfs_scratch_superblocks into btrfs_dev_replace_finishing
btrfs: move btrfs_rm_dev_replace_free_srcdev outside of all locks
Kajol Jain (1):
perf: Fix task_function_call() error handling
Karol Herbst (2):
drm/nouveau/device: return error for unknown chipsets drm/nouveau/mem: guard against NULL pointer access in mem_del
Linus Torvalds (2):
usermodehelper: reset umask to default before executing user process
splice: teach splice pipe reading about empty pipe buffers
Lu Baolu (1):
iommu/vt-d: Fix lockdep splat in iommu_flush_dev_iotlb()
Luo bin (2):
hinic: add log in exception handling processes
hinic: fix wrong return value of mac-set cmd
Magnus Karlsson (1):
xsk: Do not discard packet when NETDEV_TX_BUSY
Manivannan Sadhasivam (1):
net: qrtr: ns: Protect radix_tree_deref_slot() using rcu read locks
Maor Gottlieb (1):
net/mlx5: Fix request_irqs error flow
Marc Dionne (1):
rxrpc: Fix rxkad token xdr encoding
Maxim Kochetkov (1):
net: mscc: ocelot: extend watermark encoding function
Minchan Kim (1):
mm: validate inode in mapping_set_error()
Namjae Jeon (1):
exfat: fix use of uninitialized spinlock on error path
Necip Fazil Yildiran (2):
platform/x86: fix kconfig dependency warning for LG_LAPTOP platform/x86: fix kconfig dependency warning for FUJITSU_LAPTOP
Nicolas Belin (1):
i2c: meson: fixup rate calculation with filter delay
Nikolay Aleksandrov (1):
net: bridge: fdb: don't flush ext_learn entries
Peilin Ye (4):
fbdev, newport_con: Move FONT_EXTRA_WORDS macros into linux/font.h
Fonts: Support FONT_EXTRA_WORDS macros for built-in fonts
fbcon: Fix global-out-of-bounds read in fbcon_get_font() block/scsi-ioctl: Fix kernel-infoleak in scsi_put_cdrom_generic_arg()
Philip Yang (1):
drm/amdgpu: prevent double kfree ttm->sg
Qian Cai (1):
pipe: Fix memory leaks in create_pipe_files()
Randy Dunlap (2):
mdio: fix mdio-thunder.c dependency & build error
net: hinic: fix DEVLINK build errors
Rohit Maheshwari (1):
net/tls: race causes kernel panic
Ronak Doshi (1):
vmxnet3: fix cksum offload issues for non-udp tunnels
Sabrina Dubroca (2):
xfrmi: drop ignore_df check before updating pmtu
espintcp: restore IP CB before handing the packet to xfrm
Si-Wei Liu (2):
vhost-vdpa: fix vhost_vdpa_map() on error condition
vhost-vdpa: fix page pinning leakage in error path
Subbaraya Sundeep (1):
octeontx2-af: Fix enable/disable of default NPC entries
Sudheesh Mavila (1):
drm/amd/pm: Removed fixed clock in auto mode DPM
Sylwester Dziedziuch (1):
iavf: Fix incorrect adapter get in iavf_resume
Tom Rix (2):
platform/x86: thinkpad_acpi: initialize tp_nvram_state variable
net: mvneta: fix double free of txq->buf
Tonghao Zhang (1):
virtio-net: don't disable guest csum when disable LRO
Tony Ambardar (2):
bpf: Fix sysfs export of empty BTF section
bpf: Prevent .BTF section elimination
Vaibhav Gupta (1):
iavf: use generic power management
Vijay Balakrishna (1):
mm: khugepaged: recalculate min_free_kbytes after memory hotplug as expected by khugepaged
Vineetha G. Jaya Kumaran (1):
net: stmmac: Modify configuration method of EEE timers
Vlad Buslov (1):
net/mlx5e: Fix race condition on nhe->n pointer in neigh update
Vladimir Oltean (3):
net: mscc: ocelot: rename ocelot_board.c to ocelot_vsc7514.c
net: mscc: ocelot: split writes to pause frame enable bit and to thresholds
net: mscc: ocelot: divide watermark value by 60 when writing to SYS_ATOP
Vladimir Zapolskiy (1):
cifs: Fix incomplete memory allocation on setxattr path
Voon Weifeng (1):
net: stmmac: removed enabling eee in EEE set callback
Wilken Gottwalt (1):
net: usb: ax88179_178a: fix missing stop entry in driver_info
Willy Liu (1):
net: phy: realtek: fix rtl8211e rx/tx delay config
Wong Vee Khee (1):
net: stmmac: Fix clock handling on remove path
Xiaoliang Yang (1):
net: dsa: felix: convert TAS link speed based on phylink speed
Xiongfeng Wang (1):
Input: ati_remote2 - add missing newlines when printing module parameters
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 8 -SUBLEVEL = 14 +SUBLEVEL = 15 EXTRAVERSION = NAME = Kleptomaniac Octopus
arch/arm64/crypto/aes-neonbs-core.S +2 -2
@@ -788,7 +788,7 @@ SYM_FUNC_START_LOCAL(__xts_crypt8) 0: mov bskey, x21 mov rounds, x22 - br x7 + br x16 SYM_FUNC_END(__xts_crypt8) .macro __xts_crypt, do8, o0, o1, o2, o3, o4, o5, o6, o7
@@ -806,7 +806,7 @@ SYM_FUNC_END(__xts_crypt8) uzp1 v30.4s, v30.4s, v25.4s ld1 {v25.16b}, [x24] -99: adr x7, \do8 +99: adr x16, \do8 bl __xts_crypt8 ldp q16, q17, [sp, #.Lframe_local_offset]
arch/riscv/mm/init.c +1 -0
@@ -515,6 +515,7 @@ asmlinkage void __init setup_vm(uintptr_t dtb_pa)#else dtb_early_va = (void *)dtb_pa;#endif + dtb_early_pa = dtb_pa; }static inline void setup_vm_final (void )
block/partitions/ibm.c +3 -4
@@ -305,8 +305,6 @@ int ibm_partition(struct parsed_partitions *state)if (!disk->fops->getgeo) goto out_exit; fn =symbol_get (dasd_biodasdinfo); -if (!fn) - goto out_exit; blocksize =bdev_logical_block_size (bdev);if (blocksize <=0 ) goto out_symbol;
@@ -326,7 +324,7 @@ int ibm_partition(struct parsed_partitions *state) geo->start =get_start_sect (bdev);if (disk->fops->getgeo (bdev, geo)) goto out_freeall; -if (fn (disk, info)) { +if (!fn ||fn (disk, info)) {kfree (info); info =NULL ; }
@@ -370,7 +368,8 @@ int ibm_partition(struct parsed_partitions *state) out_nogeo:kfree (info); out_symbol: -symbol_put (dasd_biodasdinfo); +if (fn) +symbol_put (dasd_biodasdinfo); out_exit:return res; }
block/scsi_ioctl.c +1 -0
@@ -651,6 +651,7 @@ struct compat_cdrom_generic_command {compat_int_t stat;compat_caddr_t sense;unsigned char data_direction; +unsigned char pad[3 ];compat_int_t quiet;compat_int_t timeout;compat_caddr_t reserved[1 ];
drivers/gpio/gpiolib.c +1 -1
@@ -838,7 +838,7 @@ static __poll_t lineevent_poll(struct file *filep,static ssize_t lineevent_get_size (void ) { -#ifdef __x86_64__ +#if defined(CONFIG_X86_64 ) && !defined(CONFIG_UML )/* i386 has no padding after 'id' */ if (in_ia32_syscall ()) { struct compat_gpioeevent_data {
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +1 -0
@@ -1052,6 +1052,7 @@ static int amdgpu_ttm_tt_pin_userptr(struct ttm_tt *ttm) release_sg:kfree (ttm->sg); + ttm->sg =NULL ;return r; }
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_hdcp.c +1 -1
@@ -568,7 +568,7 @@ struct hdcp_workqueue *hdcp_create_workqueue(struct amdgpu_device *adev, structint i =0 ; hdcp_work =kcalloc (max_caps,sizeof (*hdcp_work),GFP_KERNEL ); -if (hdcp_work ==NULL ) +if (ZERO_OR_NULL_PTR (hdcp_work))return NULL ; hdcp_work->srm =kcalloc (PSP_HDCP_SRM_FIRST_GEN_MAX_SIZE ,sizeof (*hdcp_work->srm),GFP_KERNEL );
drivers/gpu/drm/amd/powerplay/hwmgr/smu10_hwmgr.c +6 -4
@@ -563,6 +563,8 @@ static int smu10_dpm_force_dpm_level(struct pp_hwmgr *hwmgr,struct smu10_hwmgr *data = hwmgr->backend;uint32_t min_sclk = hwmgr->display_config->min_core_set_clock;uint32_t min_mclk = hwmgr->display_config->min_mem_set_clock/100 ; +uint32_t index_fclk = data->clock_vol_info.vdd_dep_on_fclk->count -1 ; +uint32_t index_socclk = data->clock_vol_info.vdd_dep_on_socclk->count -1 ;if (hwmgr->smu_version <0x1E3700 ) {pr_info ("smu firmware version too old, can not set dpm level\n" );
@@ -676,13 +678,13 @@ static int smu10_dpm_force_dpm_level(struct pp_hwmgr *hwmgr,smum_send_msg_to_smc_with_parameter (hwmgr, PPSMC_MSG_SetHardMinFclkByFreq, hwmgr->display_config->num_display >3 ? -SMU10_UMD_PSTATE_PEAK_FCLK : + data->clock_vol_info.vdd_dep_on_fclk->entries[0 ].clk : min_mclk,NULL );smum_send_msg_to_smc_with_parameter (hwmgr, PPSMC_MSG_SetHardMinSocclkByFreq, -SMU10_UMD_PSTATE_MIN_SOCCLK , + data->clock_vol_info.vdd_dep_on_socclk->entries[0 ].clk,NULL ); smum_send_msg_to_smc_with_parameter(hwmgr, PPSMC_MSG_SetHardMinVcn,
@@ -695,11 +697,11 @@ static int smu10_dpm_force_dpm_level(struct pp_hwmgr *hwmgr, NULL);smum_send_msg_to_smc_with_parameter (hwmgr, PPSMC_MSG_SetSoftMaxFclkByFreq, -SMU10_UMD_PSTATE_PEAK_FCLK , + data->clock_vol_info.vdd_dep_on_fclk->entries[index_fclk].clk,NULL );smum_send_msg_to_smc_with_parameter (hwmgr, PPSMC_MSG_SetSoftMaxSocclkByFreq, -SMU10_UMD_PSTATE_PEAK_SOCCLK , + data->clock_vol_info.vdd_dep_on_socclk->entries[index_socclk].clk,NULL ); smum_send_msg_to_smc_with_parameter(hwmgr, PPSMC_MSG_SetSoftMaxVcn,
drivers/gpu/drm/nouveau/nouveau_mem.c +2 -0
@@ -176,6 +176,8 @@ void nouveau_mem_del(struct ttm_mem_reg *reg) {struct nouveau_mem *mem =nouveau_mem (reg); +if (!mem) +return ;nouveau_mem_fini (mem);kfree (reg->mm_node); reg->mm_node =NULL ;
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c +1 -0
@@ -3149,6 +3149,7 @@ nvkm_device_ctor(const struct nvkm_device_func *func,case 0x168 : device->chip = &nv168_chipset;break ;default :nvdev_error (device,"unknown chipset (%08x)\n" , boot0); + ret = -ENODEV ; goto done; }
drivers/i2c/busses/i2c-meson.c +33 -19
117 lines not on this page · raw message
drivers/i2c/busses/i2c-owl.c +6 -0
@@ -176,6 +176,9 @@ static irqreturn_t owl_i2c_interrupt(int irq, void *_dev) fifostat =readl (i2c_dev->base +OWL_I2C_REG_FIFOSTAT );if (fifostat &OWL_I2C_FIFOSTAT_RNB ) { i2c_dev->err = -ENXIO ; +/* Clear NACK error bit by writing "1" */ +owl_i2c_update_reg (i2c_dev->base +OWL_I2C_REG_FIFOSTAT , +OWL_I2C_FIFOSTAT_RNB , true); goto stop; }
@@ -183,6 +186,9 @@ static irqreturn_t owl_i2c_interrupt(int irq, void *_dev) stat =readl (i2c_dev->base +OWL_I2C_REG_STAT );if (stat &OWL_I2C_STAT_BEB ) { i2c_dev->err = -EIO ; +/* Clear BUS error bit by writing "1" */ +owl_i2c_update_reg (i2c_dev->base +OWL_I2C_REG_STAT , +OWL_I2C_STAT_BEB , true); goto stop; }
drivers/input/misc/ati_remote2.c +2 -2
@@ -68,7 +68,7 @@ static int ati_remote2_get_channel_mask(char *buffer, {pr_debug ("%s()\n" , __func__); -return sprintf (buffer,"0x%04x" , *(unsigned int *)kp->arg); +return sprintf (buffer,"0x%04x\n" , *(unsigned int *)kp->arg); } static int ati_remote2_set_mode_mask(const char *val,
@@ -84,7 +84,7 @@ static int ati_remote2_get_mode_mask(char *buffer, {pr_debug ("%s()\n" , __func__); -return sprintf (buffer,"0x%02x" , *(unsigned int *)kp->arg); +return sprintf (buffer,"0x%02x\n" , *(unsigned int *)kp->arg); }static unsigned int channel_mask =ATI_REMOTE2_MAX_CHANNEL_MASK ;
drivers/iommu/intel/iommu.c +2 -2
@@ -2617,7 +2617,7 @@ static struct dmar_domain *dmar_insert_one_dev_info(struct intel_iommu *iommu, }/* Setup the PASID entry for requests without PASID: */ -spin_lock (&iommu->lock); +spin_lock_irqsave (&iommu->lock, flags);if (hw_pass_through &&domain_type_is_si (domain)) ret =intel_pasid_setup_pass_through (iommu, domain, dev,PASID_RID2PASID );
@@ -2627,7 +2627,7 @@ static struct dmar_domain *dmar_insert_one_dev_info(struct intel_iommu *iommu,else ret =intel_pasid_setup_second_level (iommu, domain, dev,PASID_RID2PASID ); -spin_unlock (&iommu->lock); +spin_unlock_irqrestore (&iommu->lock, flags);if (ret) {dev_err (dev,"Setup RID2PASID failed\n" );dmar_remove_one_dev_info (dev);
drivers/mmc/core/queue.c +1 -1
@@ -190,7 +190,7 @@ static void mmc_queue_setup_discard(struct request_queue *q, q->limits.discard_granularity = card->pref_erase <<9 ;/* granularity must not be greater than max. discard */ if (card->pref_erase > max_discard) - q->limits.discard_granularity =0 ; + q->limits.discard_granularity =SECTOR_SIZE ;if (mmc_can_secure_erase_trim (card))blk_queue_flag_set (QUEUE_FLAG_SECERASE , q); }
drivers/net/bonding/bond_main.c +1 -0
@@ -1195,6 +1195,7 @@ static void bond_setup_by_slave(struct net_device *bond_dev, bond_dev->type = slave_dev->type; bond_dev->hard_header_len = slave_dev->hard_header_len; + bond_dev->needed_headroom = slave_dev->needed_headroom; bond_dev->addr_len = slave_dev->addr_len; memcpy(bond_dev->broadcast, slave_dev->broadcast,
drivers/net/dsa/ocelot/felix_vsc9959.c +34 -1
@@ -1105,8 +1105,21 @@ static int vsc9959_prevalidate_phy_mode(struct ocelot *ocelot, int port, } } +/* Watermark encode +* Bit 8: Unit; 0:1, 1:16 +* Bit 7-0: Value to be multiplied with unit +*/ +static u16 vsc9959_wm_enc (u16 value) +{ +if (value >=BIT (8 )) +return BIT (8 ) | (value /16 ); + +return value; +} +static const struct ocelot_ops vsc9959_ops = { .reset = vsc9959_reset, + .wm_enc = vsc9959_wm_enc, };static int vsc9959_mdio_bus_alloc (struct ocelot *ocelot)
@@ -1215,8 +1228,28 @@ static void vsc9959_mdio_bus_free(struct ocelot *ocelot)static void vsc9959_sched_speed_set (struct ocelot *ocelot,int port,u32 speed) { +u8 tas_speed; + +switch (speed) { +case SPEED_10 : + tas_speed =OCELOT_SPEED_10 ; +break ; +case SPEED_100 : + tas_speed =OCELOT_SPEED_100 ; +break ; +case SPEED_1000 : + tas_speed =OCELOT_SPEED_1000 ; +break ; +case SPEED_2500 : + tas_speed =OCELOT_SPEED_2500 ; +break ; +default : + tas_speed =OCELOT_SPEED_1000 ; +break ; + } +ocelot_rmw_rix (ocelot, -QSYS_TAG_CONFIG_LINK_SPEED (speed), +QSYS_TAG_CONFIG_LINK_SPEED (tas_speed),QSYS_TAG_CONFIG_LINK_SPEED_M ,QSYS_TAG_CONFIG , port); }
drivers/net/ethernet/cavium/octeon/octeon_mgmt.c +4 -2
@@ -1219,7 +1219,7 @@ static int octeon_mgmt_open(struct net_device *netdev)*/ if (netdev->phydev) {netif_carrier_off (netdev); -phy_start_aneg (netdev->phydev); +phy_start (netdev->phydev); }netif_wake_queue (netdev);
@@ -1247,8 +1247,10 @@ static int octeon_mgmt_stop(struct net_device *netdev)napi_disable (&p->napi);netif_stop_queue (netdev); -if (netdev->phydev) +if (netdev->phydev) { +phy_stop (netdev->phydev);phy_disconnect (netdev->phydev); + }netif_carrier_off (netdev);
drivers/net/ethernet/huawei/hinic/Kconfig +1 -0
@@ -6,6 +6,7 @@ config HINIC tristate "Huawei Intelligent PCIE Network Interface Card" depends on (PCI_MSI && (X86 || ARM64)) + select NET_DEVLINK help This driver supports HiNIC PCIE Ethernet cards. To compile this driver as part of the kernel, choose Y here.
drivers/net/ethernet/huawei/hinic/hinic_hw_api_cmd.c +25 -2
@@ -112,6 +112,26 @@ static u32 get_hw_cons_idx(struct hinic_api_cmd_chain *chain)return HINIC_API_CMD_STATUS_GET (val,CONS_IDX ); } +static void dump_api_chain_reg (struct hinic_api_cmd_chain *chain) +{ +u32 addr, val; + + addr =HINIC_CSR_API_CMD_STATUS_ADDR (chain->chain_type); + val =hinic_hwif_read_reg (chain->hwif, addr); + +dev_err (&chain->hwif->pdev->dev,"Chain type: 0x%x, cpld error: 0x%x, check error: 0x%x, current fsm: 0x%x\n" , + chain->chain_type,HINIC_API_CMD_STATUS_GET (val,CPLD_ERR ), +HINIC_API_CMD_STATUS_GET (val,CHKSUM_ERR ), +HINIC_API_CMD_STATUS_GET (val,FSM )); + +dev_err (&chain->hwif->pdev->dev,"Chain hw current ci: 0x%x\n" , +HINIC_API_CMD_STATUS_GET (val,CONS_IDX )); + + addr =HINIC_CSR_API_CMD_CHAIN_PI_ADDR (chain->chain_type); + val =hinic_hwif_read_reg (chain->hwif, addr); +dev_err (&chain->hwif->pdev->dev,"Chain hw current pi: 0x%x\n" , val); +} +/** * chain_busy - check if the chain is still processing last requests * @chain: chain to check
@@ -131,8 +151,10 @@ static int chain_busy(struct hinic_api_cmd_chain *chain)/* check for a space for a new command */ if (chain->cons_idx ==MASKED_IDX (chain, prod_idx +1 )) { -dev_err (&pdev->dev,"API CMD chain %d is busy\n" , - chain->chain_type); +dev_err (&pdev->dev,"API CMD chain %d is busy, cons_idx: %d, prod_idx: %d\n" , + chain->chain_type, chain->cons_idx, + chain->prod_idx); +dump_api_chain_reg (chain);return -EBUSY ; }break ;
@@ -332,6 +354,7 @@ static int wait_for_api_cmd_completion(struct hinic_api_cmd_chain *chain) err =wait_for_status_poll (chain);if (err) {dev_err (&pdev->dev,"API CMD Poll status timeout\n" ); +dump_api_chain_reg (chain);break ; }break ;
drivers/net/ethernet/huawei/hinic/hinic_hw_api_cmd.h +4 -0
@@ -103,10 +103,14 @@ HINIC_API_CMD_STATUS_HEADER_##member##_MASK)#define HINIC_API_CMD_STATUS_CONS_IDX_SHIFT 0 +#define HINIC_API_CMD_STATUS_FSM_SHIFT 24#define HINIC_API_CMD_STATUS_CHKSUM_ERR_SHIFT 28 +#define HINIC_API_CMD_STATUS_CPLD_ERR_SHIFT 30#define HINIC_API_CMD_STATUS_CONS_IDX_MASK 0xFFFFFF +#define HINIC_API_CMD_STATUS_FSM_MASK 0xFU#define HINIC_API_CMD_STATUS_CHKSUM_ERR_MASK 0x3 +#define HINIC_API_CMD_STATUS_CPLD_ERR_MASK 0x1U#define HINIC_API_CMD_STATUS_GET (val, member) \ (((val) >> HINIC_API_CMD_STATUS_##member##_SHIFT) & \
drivers/net/ethernet/huawei/hinic/hinic_hw_cmdq.c +2 -0
@@ -401,6 +401,7 @@ static int cmdq_sync_cmd_direct_resp(struct hinic_cmdq *cmdq,spin_unlock_bh (&cmdq->cmdq_lock); +hinic_dump_ceq_info (cmdq->hwdev);return -ETIMEDOUT ; }
@@ -807,6 +808,7 @@ static int init_cmdqs_ctxt(struct hinic_hwdev *hwdev, cmdq_type =HINIC_CMDQ_SYNC ;for (; cmdq_type <HINIC_MAX_CMDQ_TYPES ; cmdq_type++) { + cmdqs->cmdq[cmdq_type].hwdev = hwdev; err =init_cmdq (&cmdqs->cmdq[cmdq_type], &cmdqs->saved_wqs[cmdq_type], cmdq_type, db_area[cmdq_type]);
drivers/net/ethernet/huawei/hinic/hinic_hw_cmdq.h +2 -0
@@ -130,6 +130,8 @@ struct hinic_cmdq_ctxt { };struct hinic_cmdq { +struct hinic_hwdev *hwdev; +struct hinic_wq *wq;enum hinic_cmdq_type cmdq_type;
drivers/net/ethernet/huawei/hinic/hinic_hw_dev.c +6 -6
@@ -253,9 +253,9 @@ static int init_fw_ctxt(struct hinic_hwdev *hwdev) &fw_ctxt,sizeof (fw_ctxt), &fw_ctxt, &out_size);if (err || (out_size !=sizeof (fw_ctxt)) || fw_ctxt.status) { -dev_err (&pdev->dev,"Failed to init FW ctxt, ret = %d\n" , - fw_ctxt.status); -return -EFAULT ; +dev_err (&pdev->dev,"Failed to init FW ctxt, err: %d, status: 0x%x, out size: 0x%x\n" , + err, fw_ctxt.status, out_size); +return -EIO ; }return 0 ;
@@ -420,9 +420,9 @@ static int get_base_qpn(struct hinic_hwdev *hwdev, u16 *base_qpn) &cmd_base_qpn,sizeof (cmd_base_qpn), &cmd_base_qpn, &out_size);if (err || (out_size !=sizeof (cmd_base_qpn)) || cmd_base_qpn.status) { -dev_err (&pdev->dev,"Failed to get base qpn, status = %d\n" , - cmd_base_qpn.status); -return -EFAULT ; +dev_err (&pdev->dev,"Failed to get base qpn, err: %d, status: 0x%x, out size: 0x%x\n" , + err, cmd_base_qpn.status, out_size); +return -EIO ; } *base_qpn = cmd_base_qpn.qpn;
drivers/net/ethernet/huawei/hinic/hinic_hw_eqs.c +39 -0
@@ -953,3 +953,42 @@ void hinic_ceqs_free(struct hinic_ceqs *ceqs)for (q_id =0 ; q_id < ceqs->num_ceqs; q_id++)remove_eq (&ceqs->ceq[q_id]); } + +void hinic_dump_ceq_info (struct hinic_hwdev *hwdev) +{ +struct hinic_eq *eq =NULL ; +u32 addr, ci, pi; +int q_id; + +for (q_id =0 ; q_id < hwdev->func_to_io.ceqs.num_ceqs; q_id++) { + eq = &hwdev->func_to_io.ceqs.ceq[q_id]; + addr =EQ_CONS_IDX_REG_ADDR (eq); + ci =hinic_hwif_read_reg (hwdev->hwif, addr); + addr =EQ_PROD_IDX_REG_ADDR (eq); + pi =hinic_hwif_read_reg (hwdev->hwif, addr); +dev_err (&hwdev->hwif->pdev->dev,"Ceq id: %d, ci: 0x%08x, sw_ci: 0x%08x, pi: 0x%x, tasklet_state: 0x%lx, wrap: %d, ceqe: 0x%x\n" , + q_id, ci, eq->cons_idx, pi, + eq->ceq_tasklet.state, + eq->wrapped,be32_to_cpu (*(__be32 *)(GET_CURR_CEQ_ELEM (eq)))); + } +} + +void hinic_dump_aeq_info (struct hinic_hwdev *hwdev) +{ +struct hinic_aeq_elem *aeqe_pos =NULL ; +struct hinic_eq *eq =NULL ; +u32 addr, ci, pi; +int q_id; + +for (q_id =0 ; q_id < hwdev->aeqs.num_aeqs; q_id++) { + eq = &hwdev->aeqs.aeq[q_id]; + addr =EQ_CONS_IDX_REG_ADDR (eq); + ci =hinic_hwif_read_reg (hwdev->hwif, addr); + addr =EQ_PROD_IDX_REG_ADDR (eq); + pi =hinic_hwif_read_reg (hwdev->hwif, addr); + aeqe_pos =GET_CURR_AEQ_ELEM (eq); +dev_err (&hwdev->hwif->pdev->dev,"Aeq id: %d, ci: 0x%08x, pi: 0x%x, work_state: 0x%x, wrap: %d, desc: 0x%x\n" , + q_id, ci, pi,work_busy (&eq->aeq_work.work), + eq->wrapped,be32_to_cpu (aeqe_pos->desc)); + } +}
drivers/net/ethernet/huawei/hinic/hinic_hw_eqs.h +5 -1
@@ -162,7 +162,7 @@ enum hinic_eqe_state {struct hinic_aeq_elem {u8 data[HINIC_AEQE_DATA_SIZE ]; -u32 desc; +__be32 desc; };struct hinic_eq_work {
@@ -254,4 +254,8 @@ int hinic_ceqs_init(struct hinic_ceqs *ceqs, struct hinic_hwif *hwif,void hinic_ceqs_free (struct hinic_ceqs *ceqs); +void hinic_dump_ceq_info (struct hinic_hwdev *hwdev); + +void hinic_dump_aeq_info (struct hinic_hwdev *hwdev); +#endif
drivers/net/ethernet/huawei/hinic/hinic_hw_if.c +23 -0
@@ -21,6 +21,8 @@#define WAIT_HWIF_READY_TIMEOUT 10000 +#define HINIC_SELFTEST_RESULT 0x883C +/** * hinic_msix_attr_set - set message attribute for msix entry * @hwif: the HW interface of a pci function device
@@ -369,6 +371,26 @@ u16 hinic_pf_id_of_vf_hw(struct hinic_hwif *hwif)return HINIC_FA0_GET (attr0,PF_IDX ); } +static void __print_selftest_reg (struct hinic_hwif *hwif) +{ +u32 addr, attr0, attr1; + + addr =HINIC_CSR_FUNC_ATTR1_ADDR ; + attr1 =hinic_hwif_read_reg (hwif, addr); + +if (attr1 ==HINIC_PCIE_LINK_DOWN ) { +dev_err (&hwif->pdev->dev,"PCIE is link down\n" ); +return ; + } + + addr =HINIC_CSR_FUNC_ATTR0_ADDR ; + attr0 =hinic_hwif_read_reg (hwif, addr); +if (HINIC_FA0_GET (attr0,FUNC_TYPE ) !=HINIC_VF && + !HINIC_FA0_GET (attr0,PCI_INTF_IDX )) +dev_err (&hwif->pdev->dev,"Selftest reg: 0x%08x\n" , +hinic_hwif_read_reg (hwif,HINIC_SELFTEST_RESULT )); +} +/** * hinic_init_hwif - initialize the hw interface * @hwif: the HW interface of a pci function device
@@ -398,6 +420,7 @@ int hinic_init_hwif(struct hinic_hwif *hwif, struct pci_dev *pdev) err =wait_hwif_ready (hwif);if (err) {dev_err (&pdev->dev,"HW interface is not ready\n" ); +__print_selftest_reg (hwif); goto err_hwif_ready; }
drivers/net/ethernet/huawei/hinic/hinic_hw_if.h +8 -2
@@ -12,6 +12,8 @@#include <linux/types.h> #include <asm/byteorder.h> +#define HINIC_PCIE_LINK_DOWN 0xFFFFFFFF +#define HINIC_DMA_ATTR_ST_SHIFT 0#define HINIC_DMA_ATTR_AT_SHIFT 8#define HINIC_DMA_ATTR_PH_SHIFT 10
@@ -249,13 +251,17 @@ struct hinic_hwif {static inline u32 hinic_hwif_read_reg (struct hinic_hwif *hwif,u32 reg) { -return be32_to_cpu (readl (hwif->cfg_regs_bar + reg)); +u32 out =readl (hwif->cfg_regs_bar + reg); + +return be32_to_cpu (*(__be32 *)&out); }static inline void hinic_hwif_write_reg (struct hinic_hwif *hwif,u32 reg,u32 val) { -writel (cpu_to_be32 (val), hwif->cfg_regs_bar + reg); +__be32 in =cpu_to_be32 (val); + +writel (*(u32 *)&in, hwif->cfg_regs_bar + reg); } int hinic_msix_attr_set(struct hinic_hwif *hwif, u16 msix_index,
drivers/net/ethernet/huawei/hinic/hinic_hw_mbox.c +2 -0
@@ -650,6 +650,7 @@ wait_for_mbox_seg_completion(struct hinic_mbox_func_to_func *func_to_func,if (!wait_for_completion_timeout (done, jif)) {dev_err (&hwdev->hwif->pdev->dev,"Send mailbox segment timeout\n" );dump_mox_reg (hwdev); +hinic_dump_aeq_info (hwdev);return -ETIMEDOUT ; }
@@ -897,6 +898,7 @@ int hinic_mbox_to_func(struct hinic_mbox_func_to_func *func_to_func,set_mbox_to_func_event (func_to_func,EVENT_TIMEOUT );dev_err (&func_to_func->hwif->pdev->dev,"Send mbox msg timeout, msg_id: %d\n" , msg_info.msg_id); +hinic_dump_aeq_info (func_to_func->hwdev); err = -ETIMEDOUT ; goto err_send_mbox; }
drivers/net/ethernet/huawei/hinic/hinic_hw_mgmt.c +1 -0
@@ -276,6 +276,7 @@ static int msg_to_mgmt_sync(struct hinic_pf_to_mgmt *pf_to_mgmt,if (!wait_for_completion_timeout (recv_done, timeo)) {dev_err (&pdev->dev,"MGMT timeout, MSG id = %d\n" , msg_id); +hinic_dump_aeq_info (pf_to_mgmt->hwdev); err = -ETIMEDOUT ; goto unlock_sync_msg; }
drivers/net/ethernet/huawei/hinic/hinic_port.c +34 -34
141 lines not on this page · raw message
drivers/net/ethernet/huawei/hinic/hinic_sriov.c +5 -13
@@ -38,11 +38,10 @@ static int hinic_set_mac(struct hinic_hwdev *hwdev, const u8 *mac_addr, err =hinic_port_msg_cmd (hwdev,HINIC_PORT_CMD_SET_MAC , &mac_info,sizeof (mac_info), &mac_info, &out_size);if (err || out_size !=sizeof (mac_info) || - (mac_info.status && mac_info.status !=HINIC_PF_SET_VF_ALREADY && - mac_info.status !=HINIC_MGMT_STATUS_EXIST )) { -dev_err (&hwdev->func_to_io.hwif->pdev->dev,"Failed to change MAC, ret = %d\n" , - mac_info.status); -return -EFAULT ; + (mac_info.status && mac_info.status !=HINIC_MGMT_STATUS_EXIST )) { +dev_err (&hwdev->func_to_io.hwif->pdev->dev,"Failed to set MAC, err: %d, status: 0x%x, out size: 0x%x\n" , + err, mac_info.status, out_size); +return -EIO ; }return 0 ;
@@ -452,8 +451,7 @@ struct hinic_sriov_info *hinic_get_sriov_info_by_pcidev(struct pci_dev *pdev)static int hinic_check_mac_info (u8 status,u16 vlan_id) { -if ((status && status !=HINIC_MGMT_STATUS_EXIST && - status !=HINIC_PF_SET_VF_ALREADY ) || +if ((status && status !=HINIC_MGMT_STATUS_EXIST ) || (vlan_id &CHECK_IPSU_15BIT && status ==HINIC_MGMT_STATUS_EXIST ))return -EINVAL ;
@@ -495,12 +493,6 @@ static int hinic_update_mac(struct hinic_hwdev *hwdev, u8 *old_mac,return -EINVAL ; } -if (mac_info.status ==HINIC_PF_SET_VF_ALREADY ) { -dev_warn (&hwdev->hwif->pdev->dev, -"PF has already set VF MAC. Ignore update operation\n" ); -return HINIC_PF_SET_VF_ALREADY ; - } -if (mac_info.status ==HINIC_MGMT_STATUS_EXIST )dev_warn (&hwdev->hwif->pdev->dev,"MAC is repeated. Ignore update operation\n" );
drivers/net/ethernet/intel/iavf/iavf_main.c +14 -35
91 lines not on this page · raw message
drivers/net/ethernet/intel/ice/ice_lib.c +16 -4
@@ -240,7 +240,7 @@ static int ice_get_free_slot(void *array, int size, int curr)* ice_vsi_delete - delete a VSI from the switch * @vsi: pointer to VSI being removed */ -void ice_vsi_delete (struct ice_vsi *vsi) +static void ice_vsi_delete (struct ice_vsi *vsi) {struct ice_pf *pf = vsi->back;struct ice_vsi_ctx *ctxt;
@@ -307,7 +307,7 @@ static void ice_vsi_free_arrays(struct ice_vsi *vsi)* * Returns 0 on success, negative on failure */ -int ice_vsi_clear (struct ice_vsi *vsi) +static int ice_vsi_clear (struct ice_vsi *vsi) {struct ice_pf *pf =NULL ;struct device *dev;
@@ -557,7 +557,7 @@ static int ice_vsi_get_qs(struct ice_vsi *vsi)* ice_vsi_put_qs - Release queues from VSI to PF * @vsi: the VSI that is going to release queues */ -void ice_vsi_put_qs (struct ice_vsi *vsi) +static void ice_vsi_put_qs (struct ice_vsi *vsi) {struct ice_pf *pf = vsi->back;int i;
@@ -1190,6 +1190,18 @@ static void ice_vsi_clear_rings(struct ice_vsi *vsi) {int i; +/* Avoid stale references by clearing map from vector to ring */ +if (vsi->q_vectors) { +ice_for_each_q_vector (vsi, i) { +struct ice_q_vector *q_vector = vsi->q_vectors[i]; + +if (q_vector) { + q_vector->tx.ring =NULL ; + q_vector->rx.ring =NULL ; + } + } + } +if (vsi->tx_rings) {for (i =0 ; i < vsi->alloc_txq; i++) {if (vsi->tx_rings[i]) {
@@ -2254,7 +2266,7 @@ ice_vsi_setup(struct ice_pf *pf, struct ice_port_info *pi,if (status) {dev_err (dev,"VSI %d failed lan queue config, error %s\n" , vsi->vsi_num,ice_stat_str (status)); - goto unroll_vector_base; + goto unroll_clear_rings; }/* Add switch rule to drop all Tx Flow Control Frames, of look up
drivers/net/ethernet/intel/ice/ice_lib.h +0 -6
@@ -43,10 +43,6 @@ int ice_cfg_vlan_pruning(struct ice_vsi *vsi, bool ena, bool vlan_promisc);void ice_cfg_sw_lldp (struct ice_vsi *vsi,bool tx,bool create); -void ice_vsi_delete (struct ice_vsi *vsi); - -int ice_vsi_clear (struct ice_vsi *vsi); -#ifdef CONFIG_DCB int ice_vsi_cfg_tc (struct ice_vsi *vsi,u8 ena_tc);#endif /* CONFIG_DCB */
@@ -77,8 +73,6 @@ bool ice_is_reset_in_progress(unsigned long *state);void ice_write_qrxflxp_cntxt (struct ice_hw *hw,u16 pf_q,u32 rxdid,u32 prio); -void ice_vsi_put_qs (struct ice_vsi *vsi); -void ice_vsi_dis_irq (struct ice_vsi *vsi);void ice_vsi_free_irq (struct ice_vsi *vsi);
drivers/net/ethernet/intel/ice/ice_main.c +3 -10
@@ -2605,10 +2605,8 @@ static int ice_setup_pf_sw(struct ice_pf *pf)return -EBUSY ; vsi =ice_pf_vsi_setup (pf, pf->hw.port_info); -if (!vsi) { - status = -ENOMEM ; - goto unroll_vsi_setup; - } +if (!vsi) +return -ENOMEM ; status =ice_cfg_netdev (vsi);if (status) {
@@ -2655,12 +2653,7 @@ static int ice_setup_pf_sw(struct ice_pf *pf) } unroll_vsi_setup: -if (vsi) { -ice_vsi_free_q_vectors (vsi); -ice_vsi_delete (vsi); -ice_vsi_put_qs (vsi); -ice_vsi_clear (vsi); - } +ice_vsi_release (vsi);return status; }
drivers/net/ethernet/marvell/mvneta.c +2 -11
@@ -3372,24 +3372,15 @@ static int mvneta_txq_sw_init(struct mvneta_port *pp, txq->last_desc = txq->size -1 ; txq->buf =kmalloc_array (txq->size,sizeof (*txq->buf),GFP_KERNEL ); -if (!txq->buf) { -dma_free_coherent (pp->dev->dev.parent, - txq->size *MVNETA_DESC_ALIGNED_SIZE , - txq->descs, txq->descs_phys); +if (!txq->buf)return -ENOMEM ; - }/* Allocate DMA buffers for TSO MAC/IP/TCP headers */ txq->tso_hdrs =dma_alloc_coherent (pp->dev->dev.parent, txq->size *TSO_HEADER_SIZE , &txq->tso_hdrs_phys,GFP_KERNEL ); -if (!txq->tso_hdrs) { -kfree (txq->buf); -dma_free_coherent (pp->dev->dev.parent, - txq->size *MVNETA_DESC_ALIGNED_SIZE , - txq->descs, txq->descs_phys); +if (!txq->tso_hdrs)return -ENOMEM ; - }/* Setup XPS mapping */ if (txq_number >1 )
drivers/net/ethernet/marvell/octeontx2/af/mbox.c +10 -2
@@ -17,7 +17,7 @@static const u16 msgs_offset =ALIGN (sizeof (struct mbox_hdr ),MBOX_MSG_ALIGN ); -void otx2_mbox_reset (struct otx2_mbox *mbox,int devid) +void __otx2_mbox_reset (struct otx2_mbox *mbox,int devid) {void *hw_mbase = mbox->hwbase + (devid *MBOX_SIZE );struct otx2_mbox_dev *mdev = &mbox->dev[devid];
@@ -26,13 +26,21 @@ void otx2_mbox_reset(struct otx2_mbox *mbox, int devid) tx_hdr = hw_mbase + mbox->tx_start; rx_hdr = hw_mbase + mbox->rx_start; -spin_lock (&mdev->mbox_lock); mdev->msg_size =0 ; mdev->rsp_size =0 ; tx_hdr->num_msgs =0 ; tx_hdr->msg_size =0 ; rx_hdr->num_msgs =0 ; rx_hdr->msg_size =0 ; +} +EXPORT_SYMBOL (__otx2_mbox_reset); + +void otx2_mbox_reset (struct otx2_mbox *mbox,int devid) +{ +struct otx2_mbox_dev *mdev = &mbox->dev[devid]; + +spin_lock (&mdev->mbox_lock); +__otx2_mbox_reset (mbox, devid);spin_unlock (&mdev->mbox_lock); }EXPORT_SYMBOL (otx2_mbox_reset);
drivers/net/ethernet/marvell/octeontx2/af/mbox.h +1 -0
@@ -93,6 +93,7 @@ struct mbox_msghdr { };void otx2_mbox_reset (struct otx2_mbox *mbox,int devid); +void __otx2_mbox_reset (struct otx2_mbox *mbox,int devid);void otx2_mbox_destroy (struct otx2_mbox *mbox); int otx2_mbox_init(struct otx2_mbox *mbox, void __force *hwbase, struct pci_dev *pdev, void __force *reg_base,
drivers/net/ethernet/marvell/octeontx2/af/rvu.h +2 -1
@@ -463,6 +463,7 @@ void rvu_nix_freemem(struct rvu *rvu);int rvu_get_nixlf_count (struct rvu *rvu);void rvu_nix_lf_teardown (struct rvu *rvu,u16 pcifunc,int blkaddr,int npalf);int nix_get_nixlf (struct rvu *rvu,u16 pcifunc,int *nixlf,int *nix_blkaddr); +int nix_update_bcast_mce_list (struct rvu *rvu,u16 pcifunc,bool add);/* NPC APIs */ int rvu_npc_init (struct rvu *rvu);
@@ -477,7 +478,7 @@ void rvu_npc_disable_promisc_entry(struct rvu *rvu, u16 pcifunc, int nixlf);void rvu_npc_enable_promisc_entry (struct rvu *rvu,u16 pcifunc,int nixlf);void rvu_npc_install_bcast_match_entry (struct rvu *rvu,u16 pcifunc,int nixlf,u64 chan); -void rvu_npc_disable_bcast_entry (struct rvu *rvu,u16 pcifunc); +void rvu_npc_enable_bcast_entry (struct rvu *rvu,u16 pcifunc,bool enable);int rvu_npc_update_rxvlan (struct rvu *rvu,u16 pcifunc,int nixlf);void rvu_npc_disable_mcam_entries (struct rvu *rvu,u16 pcifunc,int nixlf);void rvu_npc_disable_default_entries (struct rvu *rvu,u16 pcifunc,int nixlf);
drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c +2 -3
@@ -17,7 +17,6 @@#include "npc.h" #include "cgx.h" -static int nix_update_bcast_mce_list (struct rvu *rvu,u16 pcifunc,bool add);static int rvu_nix_get_bpid (struct rvu *rvu,struct nix_bp_cfg_req *req,int type,int chan_id);
@@ -2020,7 +2019,7 @@ static int nix_update_mce_list(struct nix_mce_list *mce_list,return 0 ; } -static int nix_update_bcast_mce_list (struct rvu *rvu,u16 pcifunc,bool add) +int nix_update_bcast_mce_list (struct rvu *rvu,u16 pcifunc,bool add) {int err =0 , idx, next_idx, last_idx;struct nix_mce_list *mce_list;
@@ -2065,7 +2064,7 @@ static int nix_update_bcast_mce_list(struct rvu *rvu, u16 pcifunc, bool add)/* Disable MCAM entry in NPC */ if (!mce_list->count) { -rvu_npc_disable_bcast_entry (rvu, pcifunc); +rvu_npc_enable_bcast_entry (rvu, pcifunc, false); goto end; }
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c +19 -7
@@ -530,7 +530,7 @@ void rvu_npc_install_bcast_match_entry(struct rvu *rvu, u16 pcifunc, NIX_INTF_RX, &entry, true); } -void rvu_npc_disable_bcast_entry (struct rvu *rvu,u16 pcifunc) +void rvu_npc_enable_bcast_entry (struct rvu *rvu,u16 pcifunc,bool enable) {struct npc_mcam *mcam = &rvu->hw->mcam;int blkaddr, index;
@@ -543,7 +543,7 @@ void rvu_npc_disable_bcast_entry(struct rvu *rvu, u16 pcifunc) pcifunc = pcifunc & ~RVU_PFVF_FUNC_MASK ; index =npc_get_nixlf_mcam_index (mcam, pcifunc,0 ,NIXLF_BCAST_ENTRY ); -npc_enable_mcam_entry (rvu, mcam, blkaddr, index, false); +npc_enable_mcam_entry (rvu, mcam, blkaddr, index, enable); } void rvu_npc_update_flowkey_alg_idx(struct rvu *rvu, u16 pcifunc, int nixlf,
@@ -622,23 +622,35 @@ static void npc_enadis_default_entries(struct rvu *rvu, u16 pcifunc, nixlf, NIXLF_UCAST_ENTRY);npc_enable_mcam_entry (rvu, mcam, blkaddr, index, enable); -/* For PF, ena/dis promisc and bcast MCAM match entries */ -if (pcifunc &RVU_PFVF_FUNC_MASK ) +/* For PF, ena/dis promisc and bcast MCAM match entries. +* For VFs add/delete from bcast list when RX multicast +* feature is present. +*/ +if (pcifunc &RVU_PFVF_FUNC_MASK && !rvu->hw->cap.nix_rx_multicast)return ;/* For bcast, enable/disable only if it's action is not * packet replication, incase if action is replication -* then this PF's nixlf is removed from bcast replication +* then this PF/VF's nixlf is removed from bcast replication * list. */ - index =npc_get_nixlf_mcam_index (mcam, pcifunc, + index =npc_get_nixlf_mcam_index (mcam, pcifunc & ~RVU_PFVF_FUNC_MASK , nixlf,NIXLF_BCAST_ENTRY ); bank =npc_get_bank (mcam, index); *(u64 *)&action =rvu_read64 (rvu, blkaddr,NPC_AF_MCAMEX_BANKX_ACTION (index & (mcam->banksize -1 ), bank)); -if (action.op !=NIX_RX_ACTIONOP_MCAST ) + +/* VFs will not have BCAST entry */ +if (action.op !=NIX_RX_ACTIONOP_MCAST && + !(pcifunc &RVU_PFVF_FUNC_MASK )) {npc_enable_mcam_entry (rvu, mcam, blkaddr, index, enable); + }else { +nix_update_bcast_mce_list (rvu, pcifunc, enable); +/* Enable PF's BCAST entry for packet replication */ +rvu_npc_enable_bcast_entry (rvu, pcifunc, enable); + } +if (enable)rvu_npc_enable_promisc_entry (rvu, pcifunc, nixlf);else
drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c +10 -6
@@ -370,8 +370,8 @@ static int otx2_forward_vf_mbox_msgs(struct otx2_nic *pf, dst_mbox = &pf->mbox; dst_size = dst_mbox->mbox.tx_size -ALIGN (sizeof (*mbox_hdr),MBOX_MSG_ALIGN ); -/* Check if msgs fit into destination area */ -if (mbox_hdr->msg_size > dst_size) +/* Check if msgs fit into destination area and has valid size */ +if (mbox_hdr->msg_size > dst_size || !mbox_hdr->msg_size)return -EINVAL ; dst_mdev = &dst_mbox->mbox.dev[0 ];
@@ -526,10 +526,10 @@ static void otx2_pfvf_mbox_up_handler(struct work_struct *work) end: offset = mbox->rx_start + msg->next_msgoff; +if (mdev->msgs_acked == (vf_mbox->up_num_msgs -1 )) +__otx2_mbox_reset (mbox,0 ); mdev->msgs_acked++; } - -otx2_mbox_reset (mbox, vf_idx); }static irqreturn_t otx2_pfvf_mbox_intr_handler (int irq,void *pf_irq)
@@ -803,10 +803,11 @@ static void otx2_pfaf_mbox_handler(struct work_struct *work) msg = (struct mbox_msghdr *)(mdev->mbase + offset);otx2_process_pfaf_mbox_msg (pf, msg); offset = mbox->rx_start + msg->next_msgoff; +if (mdev->msgs_acked == (af_mbox->num_msgs -1 )) +__otx2_mbox_reset (mbox,0 ); mdev->msgs_acked++; } -otx2_mbox_reset (mbox,0 ); }static void otx2_handle_link_event (struct otx2_nic *pf)
@@ -1560,10 +1561,13 @@ int otx2_open(struct net_device *netdev) err =otx2_rxtx_enable (pf, true);if (err) - goto err_free_cints; + goto err_tx_stop_queues;return 0 ; +err_tx_stop_queues: +netif_tx_stop_all_queues (netdev); +netif_carrier_off (netdev); err_free_cints:otx2_free_cints (pf, qidx); vec = pci_irq_vector(pf->pdev,
drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.c +1 -0
@@ -524,6 +524,7 @@ static void otx2_sqe_add_hdr(struct otx2_nic *pfvf, struct otx2_snd_queue *sq, sqe_hdr->ol3type =NIX_SENDL3TYPE_IP4_CKSUM ; }else if (skb->protocol ==htons (ETH_P_IPV6 )) { proto =ipv6_hdr (skb)->nexthdr; + sqe_hdr->ol3type =NIX_SENDL3TYPE_IP6 ; }if (proto ==IPPROTO_TCP )
drivers/net/ethernet/marvell/octeontx2/nic/otx2_vf.c +2 -2
@@ -99,10 +99,10 @@ static void otx2vf_vfaf_mbox_handler(struct work_struct *work) msg = (struct mbox_msghdr *)(mdev->mbase + offset);otx2vf_process_vfaf_mbox_msg (af_mbox->pfvf, msg); offset = mbox->rx_start + msg->next_msgoff; +if (mdev->msgs_acked == (af_mbox->num_msgs -1 )) +__otx2_mbox_reset (mbox,0 ); mdev->msgs_acked++; } - -otx2_mbox_reset (mbox,0 ); } static int otx2vf_process_mbox_msg_up(struct otx2_nic *vf,
drivers/net/ethernet/mellanox/mlx5/core/cmd.c +135 -46
347 lines not on this page · raw message
drivers/net/ethernet/mellanox/mlx5/core/en.h +7 -1
@@ -90,7 +90,12 @@ struct page_pool;#define MLX5_MPWRQ_PAGES_PER_WQE BIT(MLX5_MPWRQ_WQE_PAGE_ORDER)#define MLX5_MTT_OCTW (npages) (ALIGN(npages, 8) / 2) -#define MLX5E_REQUIRED_WQE_MTTS (ALIGN(MLX5_MPWRQ_PAGES_PER_WQE, 8)) +/* Add another page to MLX5E_REQUIRED_WQE_MTTS as a buffer between +* WQEs, This page will absorb write overflow by the hardware, when +* receiving packets larger than MTU. These oversize packets are +* dropped by the driver at a later stage. +*/ +#define MLX5E_REQUIRED_WQE_MTTS (ALIGN(MLX5_MPWRQ_PAGES_PER_WQE + 1, 8))#define MLX5E_LOG_ALIGNED_MPWQE_PPW (ilog2(MLX5E_REQUIRED_WQE_MTTS))#define MLX5E_REQUIRED_MTTS (wqes) (wqes * MLX5E_REQUIRED_WQE_MTTS)#define MLX5E_MAX_RQ_NUM_MTTS \
@@ -621,6 +626,7 @@ struct mlx5e_rq {u32 rqn;struct mlx5_core_dev *mdev;struct mlx5_core_mkey umr_mkey; +struct mlx5e_dma_info wqe_overflow;/* XDP read-mostly */ struct xdp_rxq_info xdp_rxq;
drivers/net/ethernet/mellanox/mlx5/core/en/port.c +3 -0
@@ -566,6 +566,9 @@ int mlx5e_set_fec_mode(struct mlx5_core_dev *dev, u16 fec_policy)if (fec_policy >= (1 <<MLX5E_FEC_LLRS_272_257_1 ) && !fec_50g_per_lane)return -EOPNOTSUPP ; +if (fec_policy && !mlx5e_fec_in_caps (dev, fec_policy)) +return -EOPNOTSUPP ; +MLX5_SET (pplm_reg, in, local_port,1 ); err =mlx5_core_access_reg (dev, in, sz, out, sz,MLX5_REG_PPLM ,0 ,0 );if (err)
drivers/net/ethernet/mellanox/mlx5/core/en/rep/neigh.c +50 -31
122 lines not on this page · raw message
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c +10 -4
@@ -217,6 +217,9 @@ static int __mlx5e_add_vlan_rule(struct mlx5e_priv *priv,break ; } +if (WARN_ONCE (*rule_p,"VLAN rule already exists type %d" , rule_type)) +return 0 ; + *rule_p =mlx5_add_flow_rules (ft, spec, &flow_act, &dest,1 );if (IS_ERR (*rule_p)) {
@@ -397,8 +400,7 @@ static void mlx5e_add_vlan_rules(struct mlx5e_priv *priv)for_each_set_bit (i, priv->fs.vlan.active_svlans,VLAN_N_VID )mlx5e_add_vlan_rule (priv,MLX5E_VLAN_RULE_TYPE_MATCH_STAG_VID , i); -if (priv->fs.vlan.cvlan_filter_disabled && - !(priv->netdev->flags &IFF_PROMISC )) +if (priv->fs.vlan.cvlan_filter_disabled)mlx5e_add_any_vid_rules (priv); }
@@ -415,8 +417,12 @@ static void mlx5e_del_vlan_rules(struct mlx5e_priv *priv)for_each_set_bit (i, priv->fs.vlan.active_svlans,VLAN_N_VID )mlx5e_del_vlan_rule (priv,MLX5E_VLAN_RULE_TYPE_MATCH_STAG_VID , i); -if (priv->fs.vlan.cvlan_filter_disabled && - !(priv->netdev->flags &IFF_PROMISC )) +WARN_ON_ONCE (!(test_bit (MLX5E_STATE_DESTROYING , &priv->state))); + +/* must be called after DESTROY bit is set and +* set_rx_mode is called and flushed +*/ +if (priv->fs.vlan.cvlan_filter_disabled)mlx5e_del_any_vid_rules (priv); }
drivers/net/ethernet/mellanox/mlx5/core/en_main.c +69 -5
138 lines not on this page · raw message
drivers/net/ethernet/mellanox/mlx5/core/en_rep.h +0 -6
@@ -133,12 +133,6 @@ struct mlx5e_neigh_hash_entry {/* encap list sharing the same neigh */ struct list_head encap_list; -/* valid only when the neigh reference is taken during -* neigh_update_work workqueue callback. -*/ -struct neighbour *n; -struct work_struct neigh_update_work; -/* neigh hash entry can be deleted only when the refcount is zero. * refcount is needed to avoid neigh hash entry removal by TC, while * it's used by the neigh notification call.
drivers/net/ethernet/mellanox/mlx5/core/eq.c +41 -1
80 lines not on this page · raw message
drivers/net/ethernet/mellanox/mlx5/core/lib/eq.h +2 -0
@@ -37,6 +37,7 @@ struct mlx5_eq {struct mlx5_eq_async {struct mlx5_eq core;struct notifier_block irq_nb; +spinlock_t lock;/* To avoid irq EQ handle races with resiliency flows */ };struct mlx5_eq_comp {
@@ -81,6 +82,7 @@ void mlx5_cq_tasklet_cb(unsigned long data);struct cpumask *mlx5_eq_comp_cpumask (struct mlx5_core_dev *dev,int ix);u32 mlx5_eq_poll_irq_disabled (struct mlx5_eq_comp *eq); +void mlx5_cmd_eq_recover (struct mlx5_core_dev *dev);void mlx5_eq_synchronize_async_irq (struct mlx5_core_dev *dev);void mlx5_eq_synchronize_cmd_irq (struct mlx5_core_dev *dev);
drivers/net/ethernet/mellanox/mlx5/core/pci_irq.c +1 -1
@@ -115,7 +115,7 @@ static int request_irqs(struct mlx5_core_dev *dev, int nvec)return 0 ; err_request_irq: -for (; i >=0 ; i--) { +while (i--) {struct mlx5_irq *irq =mlx5_irq_get (dev, i);int irqn =pci_irq_vector (dev->pdev, i);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c +2 -1
@@ -292,13 +292,14 @@ mlxsw_sp_acl_tcam_group_add(struct mlxsw_sp_acl_tcam *tcam,int err; group->tcam = tcam; -mutex_init (&group->lock);INIT_LIST_HEAD (&group->region_list); err =mlxsw_sp_acl_tcam_group_id_get (tcam, &group->id);if (err)return err; +mutex_init (&group->lock); +return 0 ; }
drivers/net/ethernet/mscc/Makefile +1 -1
@@ -2,4 +2,4 @@ obj-$(CONFIG_MSCC_OCELOT_SWITCH) += mscc_ocelot_common.o mscc_ocelot_common-y := ocelot.o ocelot_io.o mscc_ocelot_common-y += ocelot_regs.o ocelot_tc.o ocelot_police.o ocelot_ace.o ocelot_flower.o ocelot_ptp.o -obj-$(CONFIG_MSCC_OCELOT_SWITCH_OCELOT) += ocelot_board.o +obj-$(CONFIG_MSCC_OCELOT_SWITCH_OCELOT) += ocelot_vsc7514.o
drivers/net/ethernet/mscc/ocelot.c +18 -25
69 lines not on this page · raw message
drivers/net/ethernet/mscc/ocelot_board.c deleted +0 -626
626 lines not on this page · raw message
drivers/net/ethernet/mscc/ocelot_vsc7514.c new file +639 -0
271 lines not on this page · raw message
drivers/net/ethernet/realtek/r8169_main.c +9 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/renesas/ravb_main.c +55 -55
110 lines not on this page · raw message
drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c +0 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac.h +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c +15 -12
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +15 -8
Lines of this file are not shown. View the raw message.
drivers/platform/x86/intel-vbtn.c +51 -13
64 lines not on this page · raw message
drivers/vhost/vdpa.c +74 -48
122 lines not on this page · raw message
drivers/video/fbdev/core/fbcon_rotate.c +1 -0
Lines of this file are not shown. View the raw message.
fs/afs/inode.c +38 -9
47 lines not on this page · raw message
net/sched/act_api.c +34 -18
52 lines not on this page · raw message
net/xfrm/xfrm_state.c +37 -5
42 lines not on this page · raw message
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.