Skip to contentSkip to conversation

Linux 5.10.30

DISCUSSION Greg Kroah-Hartman 2 participants 3 messages Apr 14, 2021 – Apr 15, 2021 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 5.10.30 kernel.

All users of the 5.10 kernel series must upgrade.

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

thanks,

greg k-h

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

 Documentation/devicetree/bindings/net/ethernet-controller.yaml |    2 
 Makefile                                                       |    2 
 arch/arm/boot/dts/armada-385-turris-omnia.dts                  |    1 
 arch/arm/boot/dts/imx6qdl-phytec-pfla02.dtsi                   |    2 
 arch/arm/mach-omap2/omap-secure.c                              |   39 ++
 arch/arm/mach-omap2/omap-secure.h                              |    1 
 arch/arm/mach-omap2/pmic-cpcap.c                               |    4 
 arch/arm64/boot/dts/freescale/imx8mm-pinfunc.h                 |    2 
 arch/arm64/boot/dts/freescale/imx8mq-pinfunc.h                 |    2 
 arch/ia64/include/asm/ptrace.h                                 |    8 
 arch/nds32/mm/cacheflush.c                                     |    2 
 arch/parisc/include/asm/cmpxchg.h                              |    2 
 arch/s390/kernel/cpcmd.c                                       |    6 
 arch/x86/include/asm/smp.h                                     |    2 
 arch/x86/kernel/smpboot.c                                      |   26 -
 arch/x86/kvm/mmu/mmu.c                                         |   13 
 arch/x86/kvm/mmu/tdp_iter.c                                    |   30 -
 arch/x86/kvm/mmu/tdp_iter.h                                    |   11 
 arch/x86/kvm/mmu/tdp_mmu.c                                     |   99 +++--
 arch/x86/kvm/mmu/tdp_mmu.h                                     |   18 
 drivers/acpi/processor_idle.c                                  |    4 
 drivers/base/dd.c                                              |    8 
 drivers/char/agp/Kconfig                                       |    2 
 drivers/clk/clk.c                                              |   47 +-
 drivers/clk/socfpga/clk-gate.c                                 |    2 
 drivers/gpio/gpiolib.c                                         |   12 
 drivers/gpu/drm/i915/display/intel_acpi.c                      |   22 +
 drivers/gpu/drm/msm/msm_drv.c                                  |    1 
 drivers/gpu/drm/vc4/vc4_crtc.c                                 |   17 
 drivers/i2c/busses/i2c-designware-master.c                     |    1 
 drivers/i2c/busses/i2c-jz4780.c                                |    4 
 drivers/i2c/i2c-core-base.c                                    |    7 
 drivers/infiniband/core/addr.c                                 |    4 
 drivers/infiniband/hw/cxgb4/cm.c                               |    3 
 drivers/infiniband/hw/hfi1/affinity.c                          |   21 -
 drivers/infiniband/hw/hfi1/hfi.h                               |    1 
 drivers/infiniband/hw/hfi1/init.c                              |   10 
 drivers/infiniband/hw/hfi1/netdev_rx.c                         |    3 
 drivers/infiniband/hw/qedr/verbs.c                             |    3 
 drivers/infiniband/ulp/rtrs/rtrs-clt.c                         |    2 
 drivers/net/can/spi/mcp251x.c                                  |   24 -
 drivers/net/can/usb/peak_usb/pcan_usb_core.c                   |    6 
 drivers/net/dsa/lantiq_gswip.c                                 |  195 ++++++++--
 drivers/net/ethernet/amd/xgbe/xgbe.h                           |    6 
 drivers/net/ethernet/cadence/macb_main.c                       |    7 
 drivers/net/ethernet/chelsio/cxgb4/cudbg_lib.c                 |   23 -
 drivers/net/ethernet/chelsio/cxgb4/t4_hw.c                     |    3 
 drivers/net/ethernet/freescale/gianfar.c                       |    6 
 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c      |    4 
 drivers/net/ethernet/intel/i40e/i40e.h                         |    1 
 drivers/net/ethernet/intel/i40e/i40e_debugfs.c                 |    3 
 drivers/net/ethernet/intel/i40e/i40e_ethtool.c                 |   55 ++
 drivers/net/ethernet/intel/i40e/i40e_main.c                    |   11 
 drivers/net/ethernet/intel/i40e/i40e_txrx.c                    |   12 
 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c             |    9 
 drivers/net/ethernet/intel/ice/ice.h                           |    4 
 drivers/net/ethernet/intel/ice/ice_common.c                    |    2 
 drivers/net/ethernet/intel/ice/ice_controlq.h                  |    4 
 drivers/net/ethernet/intel/ice/ice_dcb.c                       |   76 ++-
 drivers/net/ethernet/intel/ice/ice_dcb_lib.c                   |   47 +-
 drivers/net/ethernet/intel/ice/ice_dcb_nl.c                    |   52 +-
 drivers/net/ethernet/intel/ice/ice_ethtool.c                   |    8 
 drivers/net/ethernet/intel/ice/ice_lib.c                       |    7 
 drivers/net/ethernet/intel/ice/ice_main.c                      |   53 ++
 drivers/net/ethernet/intel/ice/ice_switch.c                    |   15 
 drivers/net/ethernet/intel/ice/ice_txrx.c                      |    2 
 drivers/net/ethernet/intel/ice/ice_type.h                      |   17 
 drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c             |   36 +
 drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c           |   22 -
 drivers/net/ethernet/mellanox/mlx5/core/eq.c                   |   13 
 drivers/net/ethernet/mellanox/mlxsw/spectrum.h                 |   15 
 drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c            |    7 
 drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c             |    7 
 drivers/net/ethernet/myricom/myri10ge/myri10ge.c               |    2 
 drivers/net/ethernet/netronome/nfp/bpf/cmsg.c                  |    1 
 drivers/net/ethernet/netronome/nfp/flower/main.h               |    8 
 drivers/net/ethernet/netronome/nfp/flower/metadata.c           |   16 
 drivers/net/ethernet/netronome/nfp/flower/offload.c            |   48 ++
 drivers/net/geneve.c                                           |   24 +
 drivers/net/ieee802154/atusb.c                                 |    1 
 drivers/net/phy/bcm-phy-lib.c                                  |   13 
 drivers/net/tun.c                                              |   48 ++
 drivers/net/usb/hso.c                                          |   33 -
 drivers/net/vxlan.c                                            |   18 
 drivers/net/wan/hdlc_fr.c                                      |    5 
 drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c             |    2 
 drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c       |   31 -
 drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info.c            |    3 
 drivers/net/wireless/intel/iwlwifi/pcie/trans-gen2.c           |   35 +
 drivers/of/property.c                                          |   11 
 drivers/ras/cec.c                                              |   15 
 drivers/regulator/bd9571mwv-regulator.c                        |    4 
 drivers/remoteproc/qcom_pil_info.c                             |    2 
 drivers/scsi/pm8001/pm8001_hwi.c                               |    8 
 drivers/scsi/ufs/ufshcd.c                                      |   31 -
 drivers/soc/fsl/qbman/qman.c                                   |    2 
 drivers/target/iscsi/iscsi_target.c                            |    3 
 drivers/thunderbolt/retimer.c                                  |    4 
 drivers/usb/usbip/stub_dev.c                                   |   11 
 drivers/usb/usbip/usbip_common.h                               |    3 
 drivers/usb/usbip/usbip_event.c                                |    2 
 drivers/usb/usbip/vhci_hcd.c                                   |    1 
 drivers/usb/usbip/vhci_sysfs.c                                 |   30 +
 drivers/usb/usbip/vudc_dev.c                                   |    1 
 drivers/usb/usbip/vudc_sysfs.c                                 |    5 
 drivers/vdpa/mlx5/core/mlx5_vdpa.h                             |    4 
 drivers/vdpa/mlx5/net/mlx5_vnet.c                              |   40 +-
 drivers/xen/events/events_base.c                               |   12 
 fs/direct-io.c                                                 |    5 
 fs/hostfs/hostfs_kern.c                                        |    7 
 fs/namei.c                                                     |    8 
 fs/ocfs2/aops.c                                                |   11 
 fs/ocfs2/file.c                                                |    8 
 include/linux/avf/virtchnl.h                                   |    2 
 include/linux/mlx5/mlx5_ifc.h                                  |   10 
 include/linux/skmsg.h                                          |    7 
 include/linux/virtio_net.h                                     |    2 
 include/net/act_api.h                                          |   12 
 include/net/netns/xfrm.h                                       |    4 
 include/net/red.h                                              |    4 
 include/net/sock.h                                             |    9 
 include/net/xfrm.h                                             |    4 
 kernel/bpf/inode.c                                             |    2 
 kernel/bpf/stackmap.c                                          |   12 
 kernel/bpf/verifier.c                                          |    5 
 kernel/gcov/clang.c                                            |   29 -
 kernel/locking/lockdep.c                                       |    2 
 kernel/workqueue.c                                             |    2 
 mm/percpu-internal.h                                           |    2 
 mm/percpu-stats.c                                              |    9 
 mm/percpu.c                                                    |   14 
 net/batman-adv/translation-table.c                             |    2 
 net/can/bcm.c                                                  |   10 
 net/can/isotp.c                                                |   11 
 net/can/raw.c                                                  |   14 
 net/core/skmsg.c                                               |   12 
 net/core/sock.c                                                |   12 
 net/core/xdp.c                                                 |    3 
 net/dsa/dsa2.c                                                 |    8 
 net/ethtool/eee.c                                              |    4 
 net/hsr/hsr_device.c                                           |    1 
 net/hsr/hsr_forward.c                                          |    6 
 net/ieee802154/nl-mac.c                                        |    7 
 net/ieee802154/nl802154.c                                      |   23 -
 net/ipv4/ah4.c                                                 |    2 
 net/ipv4/esp4.c                                                |    2 
 net/ipv4/esp4_offload.c                                        |   17 
 net/ipv4/udp.c                                                 |    4 
 net/ipv6/ah6.c                                                 |    2 
 net/ipv6/esp6.c                                                |    2 
 net/ipv6/esp6_offload.c                                        |   17 
 net/ipv6/raw.c                                                 |    2 
 net/ipv6/route.c                                               |    8 
 net/mac80211/mlme.c                                            |    5 
 net/mac80211/tx.c                                              |    2 
 net/mac802154/llsec.c                                          |    2 
 net/mptcp/protocol.c                                           |   45 ++
 net/ncsi/ncsi-manage.c                                         |   20 -
 net/nfc/llcp_sock.c                                            |   10 
 net/openvswitch/conntrack.c                                    |   14 
 net/qrtr/qrtr.c                                                |    5 
 net/rds/message.c                                              |    3 
 net/sched/act_api.c                                            |   48 +-
 net/sched/cls_api.c                                            |   16 
 net/sched/sch_teql.c                                           |    3 
 net/sctp/ipv6.c                                                |    7 
 net/tipc/crypto.c                                              |    3 
 net/tipc/socket.c                                              |    2 
 net/wireless/nl80211.c                                         |   10 
 net/wireless/scan.c                                            |   14 
 net/wireless/sme.c                                             |    2 
 net/xfrm/xfrm_compat.c                                         |   12 
 net/xfrm/xfrm_device.c                                         |    2 
 net/xfrm/xfrm_interface.c                                      |    3 
 net/xfrm/xfrm_output.c                                         |   10 
 net/xfrm/xfrm_state.c                                          |   10 
 security/selinux/ss/avtab.c                                    |  101 +----
 security/selinux/ss/avtab.h                                    |    2 
 security/selinux/ss/conditional.c                              |   12 
 security/selinux/ss/services.c                                 |  157 ++++++--
 security/selinux/ss/sidtab.c                                   |   21 +
 security/selinux/ss/sidtab.h                                   |    4 
 sound/drivers/aloop.c                                          |   11 
 sound/pci/hda/patch_conexant.c                                 |    1 
 sound/pci/hda/patch_realtek.c                                  |   16 
 sound/soc/codecs/wm8960.c                                      |    8 
 sound/soc/intel/atom/sst-mfld-platform-pcm.c                   |    6 
 sound/soc/sof/intel/hda-dsp.c                                  |   15 
 sound/soc/sunxi/sun4i-codec.c                                  |    5 
 tools/lib/bpf/ringbuf.c                                        |    2 
 tools/lib/bpf/xsk.c                                            |   57 +-
 tools/perf/builtin-inject.c                                    |    2 
 tools/perf/util/block-info.c                                   |    6 
 193 files changed, 1827 insertions(+), 861 deletions(-)

Adrian Hunter (1):
perf inject: Fix repipe usage

Ahmed S. Darwish (1):
net: xfrm: Localize sequence counter per network namespace

Al Viro (2):
LOOKUP_MOUNTPOINT: we are cleaning "jumped" flag too late
hostfs: fix memory handling in follow_link()

Alexander Aring (8):
net: ieee802154: nl-mac: fix check on panid
net: ieee802154: fix nl802154 del llsec key
net: ieee802154: fix nl802154 del llsec dev
net: ieee802154: fix nl802154 add llsec key
net: ieee802154: fix nl802154 del llsec devkey
net: ieee802154: forbid monitor for set llsec params
net: ieee802154: forbid monitor for del llsec seclevel
net: ieee802154: stop dump llsec params for monitors

Alexander Gordeev (1):
s390/cpcmd: fix inline assembly register clobbering

Andy Shevchenko (2):
i2c: designware: Adjust bus_freq_hz when refuse high speed mode set
gpiolib: Read "gpio-line-names" from a firmware node

Anirudh Rayabharam (1):
net: hso: fix null-ptr-deref during tty device unregistration

Anirudh Venkataramanan (2):
ice: Continue probe on link/PHY errors
ice: Use port number instead of PF ID for WoL

Antoine Tenart (2):
vxlan: do not modify the shared tunnel info when PMTU triggers an ICMP reply
geneve: do not modify the shared tunnel info when PMTU triggers an ICMP reply

Ariel Levkovich (1):
net/mlx5e: Fix mapping of ct_label zero

Arkadiusz Kubalewski (4):
i40e: Fix sparse warning: missing error code 'err'
i40e: Fix sparse error: 'vsi->netdev' could be null
i40e: Fix sparse error: uninitialized symbol 'ring'
i40e: Fix sparse errors in i40e_txrx.c

Arnd Bergmann (3):
remoteproc: qcom: pil_info: avoid 64-bit division soc/fsl: qbman: fix conflicting alignment attributes
lockdep: Address clang -Wformat warning printing for %hd

Aya Levin (3):
net/mlx5e: Fix ethtool indication of connector type net/mlx5: Fix PPLM register mapping net/mlx5: Fix PBMC register mapping

Bastian Germann (1):
ASoC: sunxi: sun4i-codec: fill ASoC card owner

Ben Gardon (5):
KVM: x86/mmu: change TDP MMU yield function returns to match cond_resched
KVM: x86/mmu: Merge flush and non-flush tdp_mmu_iter_cond_resched
KVM: x86/mmu: Rename goal_gfn to next_last_level_gfn
KVM: x86/mmu: Ensure forward progress when yielding in TDP MMU iter
KVM: x86/mmu: Yield in TDU MMU iter even if no SPTES changed

Ben Greear (1):
mac80211: fix time-is-after bug in mlme

Bruce Allan (1):
ice: fix memory allocation call

Can Guo (2):
scsi: ufs: core: Fix task management request completion timeout
scsi: ufs: core: Fix wrong Task Tag used in task management request UPIUs

Carlos Leija (1):
ARM: OMAP4: PM: update ROM return address for OSWR and OFF

Chinh T Cao (2):
ice: Refactor DCB related variables out of the ice_port_info struct
ice: Recognize 860 as iSCSI port in CEE mode

Ciara Loftus (3):
libbpf: Ensure umem pointer is non-NULL before dereferencing
libbpf: Restore umem state after socket create failure
libbpf: Only create rx and tx XDP rings when necessary

Claudiu Beznea (1):
net: macb: restore cmp registers on resume path

Claudiu Manoil (1):
gianfar: Handle error code at MAC address change

Dan Carpenter (2):
thunderbolt: Fix a leak in tb_retimer_add()
thunderbolt: Fix off by one in tb_port_find_retimer()

Daniel Jurgens (1):
net/mlx5: Don't request more than supported EQs

Dave Ertman (1):
ice: remove DCBNL_DEVRESET bit from PF state

Dave Marchevsky (1):
bpf: Refcount task stack in bpf_get_task_stack

Dmitry Safonov (1):
xfrm/compat: Cleanup WARN()s that can be user-triggered

Dom Cobley (1):
drm/vc4: crtc: Reduce PV fifo threshold on hvs4

Du Cheng (1):

      cfg80211: remove WARN_ON() in cfg80211_sme_connect

Eli Cohen (2):
vdpa/mlx5: Fix suspend/resume index restoration vdpa/mlx5: Fix wrong use of bit numbers

Eric Dumazet (2):
net: ensure mac header is set in virtio_net_hdr_to_skb()
sch_red: fix off-by-one checks in red_check_params()

Eryk Rybak (2):
i40e: Fix kernel oops when i40e driver removes VF's
i40e: Fix display statistics for veb_tc

Evan Nimmo (1):
xfrm: Use actual socket sk instead of skb socket for xfrm_output_resume

Eyal Birger (1):
xfrm: interface: fix ipv4 pmtu check to honor ip header df

Fabio Pricoco (1):
ice: Increase control queue timeout

Florian Fainelli (1):
net: phy: broadcom: Only advertise EEE for supported modes

Gao Xiang (1):
parisc: avoid a warning on u8 cast for cmpxchg on u8 pointers

Geert Uytterhoeven (1):
regulator: bd9571mwv: Fix AVS and DVFS voltage range

Greg Kroah-Hartman (1):

      Linux 5.10.30

Grzegorz Siwik (1):
i40e: Fix parameters in aq_get_phy_register()

Guangbin Huang (1):
net: hns3: clear VF down state bit before request link status

Guennadi Liakhovetski (1):
ASoC: SOF: Intel: HDA: fix core status verification

Hans de Goede (1):
ASoC: intel: atom: Stop advertising non working S24LE support

Helge Deller (1):
parisc: parisc-agp requires SBA IOMMU driver

Ido Schimmel (1):
mlxsw: spectrum: Fix ECN marking in tunnel decapsulation

Ilya Lipnitskiy (1):
of: property: fw_devlink: do not link ".*,nr-gpios"

Ilya Maximets (1):
openvswitch: fix send of uninitialized stack memory in ct limit reply

Jacek Bułatek (1):
ice: Fix for dereference of NULL pointer

Jack Qiu (1):

      fs: direct-io: fix missing sdio->boundary

Jin Yao (1):
perf report: Fix wrong LBR block sorting

Johannes Berg (5):
iwlwifi: pcie: properly set LTR workarounds on 22000 devices
nl80211: fix beacon head validation
nl80211: fix potential leak of ACL params
cfg80211: check S1G beacon compat element length
mac80211: fix TXQ AC confusion

John Fastabend (2):
bpf, sockmap: Fix sk->prot unhash op reset bpf, sockmap: Fix incorrect fwd_alloc accounting

Jonas Holmberg (1):
ALSA: aloop: Fix initialization of controls

Kamal Heib (1):
RDMA/qedr: Fix kernel panic when trying to access recv_cq

Krzysztof Goreczny (1):
ice: prevent ice_open and ice_stop during reset

Krzysztof Kozlowski (1):
clk: socfpga: fix iomem pointer cast on 64-bit

Kumar Kartikeya Dwivedi (1):
net: sched: bump refcount for new action in ACT replace mode

Kurt Kanzenbach (1):
net: hsr: Reset MAC header for Tx path

Leon Romanovsky (1):
RDMA/addr: Be strict with gid size

Loic Poulain (1):
net: qrtr: Fix memory leak on qrtr_tx_wait failure

Lorenz Bauer (1):
bpf: link: Refuse non-O_RDWR flags in BPF_OBJ_GET

Luca Coelho (1):
iwlwifi: fix 11ax disabled bit in the regulatory capability flags

Luca Fancellu (1):
xen/evtchn: Change irq_info lock to raw_spinlock_t

Lukasz Bartosik (2):
clk: fix invalid usage of list cursor in register
clk: fix invalid usage of list cursor in unregister

Lv Yunlong (5):
ethernet/netronome/nfp: Fix a use after free in nfp_bpf_ctrl_msg_rx drivers/net/wan/hdlc_fr: Fix a double free in pvc_xmit
ethernet: myri10ge: Fix a use after free in myri10ge_sw_tso net:tipc: Fix a double free in tipc_sk_mcast_rcv net/rds: Fix a use after free in rds_message_map_pages

Maciej Żenczykowski (1):
net-ipv6: bugfix - raw & sctp - switch to ipv6_can_nonlocal_bind()

Marc Kleine-Budde (1):
can: mcp251x: fix support for half duplex SPI host controllers

Marek Behún (1):
ARM: dts: turris-omnia: configure LED[2]/INTn pin as interrupt pin

Martin Blumenstingl (3):
net: dsa: lantiq_gswip: Let GSWIP automatically set the xMII clock
net: dsa: lantiq_gswip: Don't use PHY auto polling
net: dsa: lantiq_gswip: Configure all remaining GSWIP_MII_CFG bits

Mateusz Palczewski (1):
i40e: Added Asym_Pause to supported link modes

Maxim Kochetkov (1):
net: dsa: Fix type was not set for devlink port

Md Haris Iqbal (1):
RDMA/rtrs-clt: Close rtrs client conn before destroying rtrs clt session files

Mike Marciniszyn (1):
IB/hfi1: Fix probe time panic when AIP is enabled with a buggy BIOS

Mike Rapoport (1):
nds32: flush_dcache_page: use page_mapping_file to avoid races with swapoff

Milton Miller (1):
net/ncsi: Avoid channel_monitor hrtimer deadlock

Muhammad Usama Anjum (1):

      net: ipv6: check for validity before dereferencing cfg->fc_nlinfo.nlh

Nick Desaulniers (1):
gcov: re-fix clang-11+ support

Norbert Ciosek (1):
virtchnl: Fix layout of RSS structures

Norman Maurer (1):

      net: udp: Add support for getsockopt(..., ..., UDP_GRO, ..., ...);

Oliver Hartkopp (2):
can: bcm/raw: fix msg_namelen values depending on CAN_REQUIRED_SIZE
can: isotp: fix msg_namelen values depending on CAN_REQUIRED_SIZE

Oliver Stäbler (1):
arm64: dts: imx8mm/q: Fix pad control of SD1_DATA0

Ondrej Mosnacek (3):
selinux: make nslot handling in avtab more robust
selinux: fix cond_list corruption when changing booleans
selinux: fix race between old and new sidtab

Ong Boon Leong (1):
xdp: fix xdp_return_frame() kernel BUG throw for page_pool memory model

Paolo Abeni (2):
net: let skb_orphan_partial wake-up waiters.
mptcp: forbit mcast-related sockopt on MPTCP sockets

Paolo Bonzini (1):
KVM: x86/mmu: preserve pending TLB flush across calls to kvm_tdp_mmu_zap_sp

Pavel Skripkin (3):
drivers: net: fix memory leak in atusb_probe
drivers: net: fix memory leak in peak_usb_create_dev
net: mac802154: Fix general protection fault

Pavel Tikhomirov (1):
net: sched: sch_teql: fix null-pointer dereference

Pedro Tammela (1):
libbpf: Fix bail out from 'ringbuf_process_ring()' on error

Phillip Potter (1):

      net: tun: set tun->dev->addr_len during TUNSETLINK processing

Potnuri Bharat Teja (1):
RDMA/cxgb4: check for ipv6 address properly while destroying listener

Raed Salem (1):
net/mlx5: Fix placement of log_max_flow_counter

Rafał Miłecki (1):
dt-bindings: net: ethernet-controller: fix typo in NVMEM

Rahul Lakkireddy (1):
cxgb4: avoid collecting SGE_QBASE regs during traffic

Robert Malz (1):
ice: Cleanup fltr list in case of allocation issues

Roman Bolshakov (1):
scsi: target: iscsi: Fix zero tag inside a trace event

Roman Gushchin (1):
percpu: make pcpu_nr_empty_pop_pages per chunk type

Saravana Kannan (1):
driver core: Fix locking bug in deferred_probe_timeout_work_func()

Sean Christopherson (3):
KVM: x86/mmu: Ensure TLBs are flushed when yielding during GFN range zap
KVM: x86/mmu: Ensure TLBs are flushed for TDP MMU during NX zapping
KVM: x86/mmu: Don't allow TDP MMU to yield when recovering NX pages

Sergei Trofimovich (1):
ia64: fix user_stack_pointer() for ptrace()

Shengjiu Wang (1):
ASoC: wm8960: Fix wrong bclk and lrclk with pll enabled for some chips

Shuah Khan (4):
usbip: add sysfs_lock to synchronize sysfs code paths
usbip: stub-dev synchronize sysfs code paths
usbip: vudc synchronize sysfs code paths
usbip: synchronize event handler with sysfs code paths

Shyam Sundar S K (1):
amd-xgbe: Update DMA coherency values

Si-Wei Liu (1):
vdpa/mlx5: should exclude header length and fcs from mtu

Stefan Riedmueller (1):
ARM: dts: imx6: pbab01: Set vmmc supply for both SD interfaces

Steffen Klassert (2):
xfrm: Fix NULL pointer dereference on policy lookup
xfrm: Provide private skb extensions for segmented and hw offloaded ESP packets

Stephen Boyd (1):
drm/msm: Set drvdata to NULL when msm_drm_init() fails

Takashi Iwai (3):
ALSA: hda/realtek: Fix speaker amp setup on Acer Aspire E1
ALSA: hda/conexant: Apply quirk for another HP ZBook G5 model drm/i915: Fix invalid access to ACPI _DSM objects

Tetsuo Handa (1):

      batman-adv: initialize "struct batadv_tvlv_tt_vlan_data"->reserved field

Toke Høiland-Jørgensen (1):
bpf: Enforce that struct_ops programs be GPL-only

Tony Lindgren (1):
ARM: OMAP4: Fix PMIC voltage domains for bionic

Viswas G (1):

      scsi: pm80xx: Fix chip initialization failure

Vitaly Kuznetsov (1):
ACPI: processor: Fix build when CONFIG_ACPI_PROCESSOR=m

Vlad Buslov (3):
net: sched: fix action overwrite reference counting
net: sched: fix err handler in tcf_action_init()
Revert "net: sched: bump refcount for new action in ACT replace mode"

Wengang Wang (1):
ocfs2: fix deadlock between setattr and dio_end_io_write

William Roche (1):
RAS/CEC: Correct ce_add_elem()'s returned values

Wolfram Sang (1):
i2c: turn recovery error on init to debug

Wong Vee Khee (1):
ethtool: fix incorrect datatype in set_eee ops

Xiaoming Ni (4):
nfc: fix refcount leak in llcp_sock_bind()
nfc: fix refcount leak in llcp_sock_connect()
nfc: fix memory leak in llcp_sock_connect()
nfc: Avoid endless loops caused by repeated llcp_sock_connect()

Xin Long (2):
esp: delete NETIF_F_SCTP_CRC bit from features for esp offload
tipc: increment the tmp aead refcnt before attaching it

Yinjun Zhang (1):
nfp: flower: ignore duplicate merge hints from FW

Yongxin Liu (1):
ice: fix memory leak of aRFS after resuming from suspend

Yunjian Wang (1):

      net: cls_api: Fix uninitialised struct field bo->unlocked_driver_cb

Zheng Yongjun (1):
net: openvswitch: conntrack: simplify the return expression of ovs_ct_limit_get_default_limit()

Zqiang (1):
workqueue: Move the position of debug_work_activate() in __queue_work()

周琰杰 (Zhou Yanjie) (1):

      I2C: JZ4780: Fix bug for Ingenic X1000.
author maintainer
#1 lore raw
Documentation/devicetree/bindings/net/ethernet-controller.yaml +1 -1
index 39147d33e8c7..9e41dad9ef4d 100644
@@ -49,7 +49,7 @@ properties:
     description:
       Reference to an nvmem node for the MAC address
 
-  nvmem-cells-names:
+  nvmem-cell-names:
     const: mac-address
 
   phy-connection-type:
Makefile +1 -1
index 1d4a50ebe3b7..872af26e085a 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 5
 PATCHLEVEL = 10
-SUBLEVEL = 29
+SUBLEVEL = 30
 EXTRAVERSION =
 NAME = Dare mighty things
 
arch/arm/boot/dts/armada-385-turris-omnia.dts +1 -0
index 768b6c5d2129..fde4c302f08e 100644
@@ -236,6 +236,7 @@ phy1: phy@1 {
 		status = "okay";
 		compatible = "ethernet-phy-id0141.0DD1", "ethernet-phy-ieee802.3-c22";
 		reg = <1>;
+		marvell,reg-init = <3 18 0 0x4985>;
 
 		/* irq is connected to &pcawan pin 7 */
 	};
arch/arm/boot/dts/imx6qdl-phytec-pfla02.dtsi +2 -0
index e361df26a168..5f84e9f2b576 100644
@@ -432,6 +432,7 @@ &usdhc2 {
 	pinctrl-0 = <&pinctrl_usdhc2>;
 	cd-gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
 	wp-gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;
+	vmmc-supply = <&vdd_sd1_reg>;
 	status = "disabled";
 };
 
@@ -441,5 +442,6 @@ &usdhc3 {
 		     &pinctrl_usdhc3_cdwp>;
 	cd-gpios = <&gpio1 27 GPIO_ACTIVE_LOW>;
 	wp-gpios = <&gpio1 29 GPIO_ACTIVE_HIGH>;
+	vmmc-supply = <&vdd_sd0_reg>;
 	status = "disabled";
 };
arch/arm/mach-omap2/omap-secure.c +39 -0
index f70d561f37f7..0659ab4cb0af 100644
@@ -9,6 +9,7 @@
  */
 
 #include <linux/arm-smccc.h>
+#include <linux/cpu_pm.h>
 #include <linux/kernel.h>
 #include <linux/init.h>
 #include <linux/io.h>
@@ -20,6 +21,7 @@
 
 #include "common.h"
 #include "omap-secure.h"
+#include "soc.h"
 
 static phys_addr_t omap_secure_memblock_base;
 
@@ -213,3 +215,40 @@ void __init omap_secure_init(void)
 {
 	omap_optee_init_check();
 }
+
+/*
+ * Dummy dispatcher call after core OSWR and MPU off. Updates the ROM return
+ * address after MMU has been re-enabled after CPU1 has been woken up again.
+ * Otherwise the ROM code will attempt to use the earlier physical return
+ * address that got set with MMU off when waking up CPU1. Only used on secure
+ * devices.
+ */
+static int cpu_notifier(struct notifier_block *nb, unsigned long cmd, void *v)
+{
+	switch (cmd) {
+	case CPU_CLUSTER_PM_EXIT:
+		omap_secure_dispatcher(OMAP4_PPA_SERVICE_0,
+				       FLAG_START_CRITICAL,
+				       0, 0, 0, 0, 0);
+		break;
+	default:
+		break;
+	}
+
+	return NOTIFY_OK;
+}
+
+static struct notifier_block secure_notifier_block = {
+	.notifier_call = cpu_notifier,
+};
+
+static int __init secure_pm_init(void)
+{
+	if (omap_type() == OMAP2_DEVICE_TYPE_GP || !soc_is_omap44xx())
+		return 0;
+
+	cpu_pm_register_notifier(&secure_notifier_block);
+
+	return 0;
+}
+omap_arch_initcall(secure_pm_init);
arch/arm/mach-omap2/omap-secure.h +1 -0
index 4aaa95706d39..172069f31616 100644
@@ -50,6 +50,7 @@
 #define OMAP5_DRA7_MON_SET_ACR_INDEX	0x107
 
 /* Secure PPA(Primary Protected Application) APIs */
+#define OMAP4_PPA_SERVICE_0		0x21
 #define OMAP4_PPA_L2_POR_INDEX		0x23
 #define OMAP4_PPA_CPU_ACTRL_SMP_INDEX	0x25
 
arch/arm/mach-omap2/pmic-cpcap.c +2 -2
index 09076ad0576d..668dc84fd31e 100644
@@ -246,10 +246,10 @@ int __init omap4_cpcap_init(void)
 	omap_voltage_register_pmic(voltdm, &omap443x_max8952_mpu);
 
 	if (of_machine_is_compatible("motorola,droid-bionic")) {
-		voltdm = voltdm_lookup("mpu");
+		voltdm = voltdm_lookup("core");
 		omap_voltage_register_pmic(voltdm, &omap_cpcap_core);
 
-		voltdm = voltdm_lookup("mpu");
+		voltdm = voltdm_lookup("iva");
 		omap_voltage_register_pmic(voltdm, &omap_cpcap_iva);
 	} else {
 		voltdm = voltdm_lookup("core");
arch/arm64/boot/dts/freescale/imx8mm-pinfunc.h +1 -1
index 5ccc4cc91959..a003e6af3353 100644
@@ -124,7 +124,7 @@
 #define MX8MM_IOMUXC_SD1_CMD_USDHC1_CMD                                     0x0A4 0x30C 0x000 0x0 0x0
 #define MX8MM_IOMUXC_SD1_CMD_GPIO2_IO1                                      0x0A4 0x30C 0x000 0x5 0x0
 #define MX8MM_IOMUXC_SD1_DATA0_USDHC1_DATA0                                 0x0A8 0x310 0x000 0x0 0x0
-#define MX8MM_IOMUXC_SD1_DATA0_GPIO2_IO2                                    0x0A8 0x31  0x000 0x5 0x0
+#define MX8MM_IOMUXC_SD1_DATA0_GPIO2_IO2                                    0x0A8 0x310 0x000 0x5 0x0
 #define MX8MM_IOMUXC_SD1_DATA1_USDHC1_DATA1                                 0x0AC 0x314 0x000 0x0 0x0
 #define MX8MM_IOMUXC_SD1_DATA1_GPIO2_IO3                                    0x0AC 0x314 0x000 0x5 0x0
 #define MX8MM_IOMUXC_SD1_DATA2_USDHC1_DATA2                                 0x0B0 0x318 0x000 0x0 0x0
arch/arm64/boot/dts/freescale/imx8mq-pinfunc.h +1 -1
index b94b02080a34..68e8fa172974 100644
@@ -130,7 +130,7 @@
 #define MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD                                     0x0A4 0x30C 0x000 0x0 0x0
 #define MX8MQ_IOMUXC_SD1_CMD_GPIO2_IO1                                      0x0A4 0x30C 0x000 0x5 0x0
 #define MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0                                 0x0A8 0x310 0x000 0x0 0x0
-#define MX8MQ_IOMUXC_SD1_DATA0_GPIO2_IO2                                    0x0A8 0x31  0x000 0x5 0x0
+#define MX8MQ_IOMUXC_SD1_DATA0_GPIO2_IO2                                    0x0A8 0x310 0x000 0x5 0x0
 #define MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1                                 0x0AC 0x314 0x000 0x0 0x0
 #define MX8MQ_IOMUXC_SD1_DATA1_GPIO2_IO3                                    0x0AC 0x314 0x000 0x5 0x0
 #define MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2                                 0x0B0 0x318 0x000 0x0 0x0
arch/ia64/include/asm/ptrace.h +1 -7
index b3aa46090101..08179135905c 100644
@@ -54,8 +54,7 @@
 
 static inline unsigned long user_stack_pointer(struct pt_regs *regs)
 {
-	/* FIXME: should this be bspstore + nr_dirty regs? */
-	return regs->ar_bspstore;
+	return regs->r12;
 }
 
 static inline int is_syscall_success(struct pt_regs *regs)
@@ -79,11 +78,6 @@ static inline long regs_return_value(struct pt_regs *regs)
 	unsigned long __ip = instruction_pointer(regs);			\
 	(__ip & ~3UL) + ((__ip & 3UL) << 2);				\
 })
-/*
- * Why not default?  Because user_stack_pointer() on ia64 gives register
- * stack backing store instead...
- */
-#define current_user_stack_pointer() (current_pt_regs()->r12)
 
   /* given a pointer to a task_struct, return the user's pt_regs */
 # define task_pt_regs(t)		(((struct pt_regs *) ((char *) (t) + IA64_STK_OFFSET)) - 1)
arch/nds32/mm/cacheflush.c +1 -1
index 6eb98a7ad27d..ad5344ef5d33 100644
@@ -238,7 +238,7 @@ void flush_dcache_page(struct page *page)
 {
 	struct address_space *mapping;
 
-	mapping = page_mapping(page);
+	mapping = page_mapping_file(page);
 	if (mapping && !mapping_mapped(mapping))
 		set_bit(PG_dcache_dirty, &page->flags);
 	else {
arch/parisc/include/asm/cmpxchg.h +1 -1
index cf5ee9b0b393..84ee232278a6 100644
@@ -72,7 +72,7 @@ __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new_, int size)
 #endif
 	case 4: return __cmpxchg_u32((unsigned int *)ptr,
 				     (unsigned int)old, (unsigned int)new_);
-	case 1: return __cmpxchg_u8((u8 *)ptr, (u8)old, (u8)new_);
+	case 1: return __cmpxchg_u8((u8 *)ptr, old & 0xff, new_ & 0xff);
 	}
 	__cmpxchg_called_with_bad_pointer();
 	return old;
arch/s390/kernel/cpcmd.c +4 -2
index af013b4244d3..2da027359798 100644
@@ -37,10 +37,12 @@ static int diag8_noresponse(int cmdlen)
 
 static int diag8_response(int cmdlen, char *response, int *rlen)
 {
+	unsigned long _cmdlen = cmdlen | 0x40000000L;
+	unsigned long _rlen = *rlen;
 	register unsigned long reg2 asm ("2") = (addr_t) cpcmd_buf;
 	register unsigned long reg3 asm ("3") = (addr_t) response;
-	register unsigned long reg4 asm ("4") = cmdlen | 0x40000000L;
-	register unsigned long reg5 asm ("5") = *rlen;
+	register unsigned long reg4 asm ("4") = _cmdlen;
+	register unsigned long reg5 asm ("5") = _rlen;
 
 	asm volatile(
 		"	diag	%2,%0,0x8\n"
arch/x86/include/asm/smp.h +1 -1
index 57ef2094af93..630ff08532be 100644
@@ -132,7 +132,7 @@ void native_play_dead(void);
 void play_dead_common(void);
 void wbinvd_on_cpu(int cpu);
 int wbinvd_on_all_cpus(void);
-bool wakeup_cpu0(void);
+void cond_wakeup_cpu0(void);
 
 void native_smp_send_reschedule(int cpu);
 void native_send_call_func_ipi(const struct cpumask *mask);
arch/x86/kernel/smpboot.c +12 -14
index 5ea5f964f0a9..b95d1c533fef 100644
@@ -1655,13 +1655,17 @@ void play_dead_common(void)
 	local_irq_disable();
 }
 
-bool wakeup_cpu0(void)
+/**
+ * cond_wakeup_cpu0 - Wake up CPU0 if needed.
+ *
+ * If NMI wants to wake up CPU0, start CPU0.
+ */
+void cond_wakeup_cpu0(void)
 {
 	if (smp_processor_id() == 0 && enable_start_cpu0)
-		return true;
-
-	return false;
+		start_cpu0();
 }
+EXPORT_SYMBOL_GPL(cond_wakeup_cpu0);
 
 /*
  * We need to flush the caches before going to sleep, lest we have
@@ -1730,11 +1734,8 @@ static inline void mwait_play_dead(void)
 		__monitor(mwait_ptr, 0, 0);
 		mb();
 		__mwait(eax, 0);
-		/*
-		 * If NMI wants to wake up CPU0, start CPU0.
-		 */
-		if (wakeup_cpu0())
-			start_cpu0();
+
+		cond_wakeup_cpu0();
 	}
 }
 
@@ -1745,11 +1746,8 @@ void hlt_play_dead(void)
 
 	while (1) {
 		native_halt();
-		/*
-		 * If NMI wants to wake up CPU0, start CPU0.
-		 */
-		if (wakeup_cpu0())
-			start_cpu0();
+
+		cond_wakeup_cpu0();
 	}
 }
 
arch/x86/kvm/mmu/mmu.c +7 -6
index dacbd13d32c6..15717a28b212 100644
@@ -5972,6 +5972,7 @@ static void kvm_recover_nx_lpages(struct kvm *kvm)
 	struct kvm_mmu_page *sp;
 	unsigned int ratio;
 	LIST_HEAD(invalid_list);
+	bool flush = false;
 	ulong to_zap;
 
 	rcu_idx = srcu_read_lock(&kvm->srcu);
@@ -5992,20 +5993,20 @@ static void kvm_recover_nx_lpages(struct kvm *kvm)
 				      struct kvm_mmu_page,
 				      lpage_disallowed_link);
 		WARN_ON_ONCE(!sp->lpage_disallowed);
-		if (sp->tdp_mmu_page)
-			kvm_tdp_mmu_zap_gfn_range(kvm, sp->gfn,
-				sp->gfn + KVM_PAGES_PER_HPAGE(sp->role.level));
-		else {
+		if (sp->tdp_mmu_page) {
+			flush |= kvm_tdp_mmu_zap_sp(kvm, sp);
+		} else {
 			kvm_mmu_prepare_zap_page(kvm, sp, &invalid_list);
 			WARN_ON_ONCE(sp->lpage_disallowed);
 		}
 
 		if (need_resched() || spin_needbreak(&kvm->mmu_lock)) {
-			kvm_mmu_commit_zap_page(kvm, &invalid_list);
+			kvm_mmu_remote_flush_or_zap(kvm, &invalid_list, flush);
 			cond_resched_lock(&kvm->mmu_lock);
+			flush = false;
 		}
 	}
-	kvm_mmu_commit_zap_page(kvm, &invalid_list);
+	kvm_mmu_remote_flush_or_zap(kvm, &invalid_list, flush);
 
 	spin_unlock(&kvm->mmu_lock);
 	srcu_read_unlock(&kvm->srcu, rcu_idx);
arch/x86/kvm/mmu/tdp_iter.c +7 -23
index 87b7e16911db..1a09d212186b 100644
@@ -22,21 +22,22 @@ static gfn_t round_gfn_for_level(gfn_t gfn, int level)
 
 /*
  * Sets a TDP iterator to walk a pre-order traversal of the paging structure
- * rooted at root_pt, starting with the walk to translate goal_gfn.
+ * rooted at root_pt, starting with the walk to translate next_last_level_gfn.
  */
 void tdp_iter_start(struct tdp_iter *iter, u64 *root_pt, int root_level,
-		    int min_level, gfn_t goal_gfn)
+		    int min_level, gfn_t next_last_level_gfn)
 {
 	WARN_ON(root_level < 1);
 	WARN_ON(root_level > PT64_ROOT_MAX_LEVEL);
 
-	iter->goal_gfn = goal_gfn;
+	iter->next_last_level_gfn = next_last_level_gfn;
+	iter->yielded_gfn = iter->next_last_level_gfn;
 	iter->root_level = root_level;
 	iter->min_level = min_level;
 	iter->level = root_level;
 	iter->pt_path[iter->level - 1] = root_pt;
 
-	iter->gfn = round_gfn_for_level(iter->goal_gfn, iter->level);
+	iter->gfn = round_gfn_for_level(iter->next_last_level_gfn, iter->level);
 	tdp_iter_refresh_sptep(iter);
 
 	iter->valid = true;
@@ -82,7 +83,7 @@ static bool try_step_down(struct tdp_iter *iter)
 
 	iter->level--;
 	iter->pt_path[iter->level - 1] = child_pt;
-	iter->gfn = round_gfn_for_level(iter->goal_gfn, iter->level);
+	iter->gfn = round_gfn_for_level(iter->next_last_level_gfn, iter->level);
 	tdp_iter_refresh_sptep(iter);
 
 	return true;
@@ -106,7 +107,7 @@ static bool try_step_side(struct tdp_iter *iter)
 		return false;
 
 	iter->gfn += KVM_PAGES_PER_HPAGE(iter->level);
-	iter->goal_gfn = iter->gfn;
+	iter->next_last_level_gfn = iter->gfn;
 	iter->sptep++;
 	iter->old_spte = READ_ONCE(*iter->sptep);
 
@@ -158,23 +159,6 @@ void tdp_iter_next(struct tdp_iter *iter)
 	iter->valid = false;
 }
 
-/*
- * Restart the walk over the paging structure from the root, starting from the
- * highest gfn the iterator had previously reached. Assumes that the entire
- * paging structure, except the root page, may have been completely torn down
- * and rebuilt.
- */
-void tdp_iter_refresh_walk(struct tdp_iter *iter)
-{
-	gfn_t goal_gfn = iter->goal_gfn;
-
-	if (iter->gfn > goal_gfn)
-		goal_gfn = iter->gfn;
-
-	tdp_iter_start(iter, iter->pt_path[iter->root_level - 1],
-		       iter->root_level, iter->min_level, goal_gfn);
-}
-
 u64 *tdp_iter_root_pt(struct tdp_iter *iter)
 {
 	return iter->pt_path[iter->root_level - 1];
arch/x86/kvm/mmu/tdp_iter.h +8 -3
index 47170d0dc98e..d480c540ee27 100644
@@ -15,7 +15,13 @@ struct tdp_iter {
 	 * The iterator will traverse the paging structure towards the mapping
 	 * for this GFN.
 	 */
-	gfn_t goal_gfn;
+	gfn_t next_last_level_gfn;
+	/*
+	 * The next_last_level_gfn at the time when the thread last
+	 * yielded. Only yielding when the next_last_level_gfn !=
+	 * yielded_gfn helps ensure forward progress.
+	 */
+	gfn_t yielded_gfn;
 	/* Pointers to the page tables traversed to reach the current SPTE */
 	u64 *pt_path[PT64_ROOT_MAX_LEVEL];
 	/* A pointer to the current SPTE */
@@ -52,9 +58,8 @@ struct tdp_iter {
 u64 *spte_to_child_pt(u64 pte, int level);
 
 void tdp_iter_start(struct tdp_iter *iter, u64 *root_pt, int root_level,
-		    int min_level, gfn_t goal_gfn);
+		    int min_level, gfn_t next_last_level_gfn);
 void tdp_iter_next(struct tdp_iter *iter);
-void tdp_iter_refresh_walk(struct tdp_iter *iter);
 u64 *tdp_iter_root_pt(struct tdp_iter *iter);
 
 #endif /* __KVM_X86_MMU_TDP_ITER_H */
arch/x86/kvm/mmu/tdp_mmu.c +64 -35

208 lines not on this page · raw message

arch/x86/kvm/mmu/tdp_mmu.h +17 -1
index cbbdbadd1526..a7a3f6db263d 100644
@@ -12,7 +12,23 @@ bool is_tdp_mmu_root(struct kvm *kvm, hpa_t root);
 hpa_t kvm_tdp_mmu_get_vcpu_root_hpa(struct kvm_vcpu *vcpu);
 void kvm_tdp_mmu_free_root(struct kvm *kvm, struct kvm_mmu_page *root);
 
-bool kvm_tdp_mmu_zap_gfn_range(struct kvm *kvm, gfn_t start, gfn_t end);
+bool __kvm_tdp_mmu_zap_gfn_range(struct kvm *kvm, gfn_t start, gfn_t end,
+				 bool can_yield);
+static inline bool kvm_tdp_mmu_zap_gfn_range(struct kvm *kvm, gfn_t start,
+					     gfn_t end)
+{
+	return __kvm_tdp_mmu_zap_gfn_range(kvm, start, end, true);
+}
+static inline bool kvm_tdp_mmu_zap_sp(struct kvm *kvm, struct kvm_mmu_page *sp)
+{
+	gfn_t end = sp->gfn + KVM_PAGES_PER_HPAGE(sp->role.level);
+
+	/*
+	 * Don't allow yielding, as the caller may have pending pages to zap
+	 * on the shadow MMU.
+	 */
+	return __kvm_tdp_mmu_zap_gfn_range(kvm, sp->gfn, end, false);
+}
 void kvm_tdp_mmu_zap_all(struct kvm *kvm);
 
 int kvm_tdp_mmu_map(struct kvm_vcpu *vcpu, gpa_t gpa, u32 error_code,
drivers/acpi/processor_idle.c +1 -3
index 4e303964f7e7..fb161a21d0ae 100644
@@ -545,9 +545,7 @@ static int acpi_idle_play_dead(struct cpuidle_device *dev, int index)
 			return -ENODEV;
 
 #if defined(CONFIG_X86) && defined(CONFIG_HOTPLUG_CPU)
-		/* If NMI wants to wake up CPU0, start CPU0. */
-		if (wakeup_cpu0())
-			start_cpu0();
+		cond_wakeup_cpu0();
 #endif
 	}
 
drivers/base/dd.c +5 -3
index 43130d64e213..8d7f94ef0cfe 100644
@@ -292,14 +292,16 @@ int driver_deferred_probe_check_state(struct device *dev)
 
 static void deferred_probe_timeout_work_func(struct work_struct *work)
 {
-	struct device_private *private, *p;
+	struct device_private *p;
 
 	driver_deferred_probe_timeout = 0;
 	driver_deferred_probe_trigger();
 	flush_work(&deferred_probe_work);
 
-	list_for_each_entry_safe(private, p, &deferred_probe_pending_list, deferred_probe)
-		dev_info(private->device, "deferred probe pending\n");
+	mutex_lock(&deferred_probe_mutex);
+	list_for_each_entry(p, &deferred_probe_pending_list, deferred_probe)
+		dev_info(p->device, "deferred probe pending\n");
+	mutex_unlock(&deferred_probe_mutex);
 	wake_up_all(&probe_timeout_waitqueue);
 }
 static DECLARE_DELAYED_WORK(deferred_probe_timeout_work, deferred_probe_timeout_work_func);
drivers/char/agp/Kconfig +1 -1
index a086dd34f932..4f501e4842ab 100644
@@ -125,7 +125,7 @@ config AGP_HP_ZX1
 
 config AGP_PARISC
 	tristate "HP Quicksilver AGP support"
-	depends on AGP && PARISC && 64BIT
+	depends on AGP && PARISC && 64BIT && IOMMU_SBA
 	help
 	  This option gives you AGP GART support for the HP Quicksilver
 	  AGP bus adapter on HP PA-RISC machines (Ok, just on the C8000
drivers/clk/clk.c +21 -26

73 lines not on this page · raw message

drivers/clk/socfpga/clk-gate.c +1 -1
index 43ecd507bf83..cf94a12459ea 100644
@@ -99,7 +99,7 @@ static unsigned long socfpga_clk_recalc_rate(struct clk_hw *hwclk,
 		val = readl(socfpgaclk->div_reg) >> socfpgaclk->shift;
 		val &= GENMASK(socfpgaclk->width - 1, 0);
 		/* Check for GPIO_DB_CLK by its offset */
-		if ((int) socfpgaclk->div_reg & SOCFPGA_GPIO_DB_CLK_OFFSET)
+		if ((uintptr_t) socfpgaclk->div_reg & SOCFPGA_GPIO_DB_CLK_OFFSET)
 			div = val + 1;
 		else
 			div = (1 << val);
drivers/gpio/gpiolib.c +4 -8
index 0a2c4adcd833..af5bb8fedfea 100644
@@ -364,22 +364,18 @@ static int gpiochip_set_desc_names(struct gpio_chip *gc)
  *
  * Looks for device property "gpio-line-names" and if it exists assigns
  * GPIO line names for the chip. The memory allocated for the assigned
- * names belong to the underlying software node and should not be released
+ * names belong to the underlying firmware node and should not be released
  * by the caller.
  */
 static int devprop_gpiochip_set_names(struct gpio_chip *chip)
 {
 	struct gpio_device *gdev = chip->gpiodev;
-	struct device *dev = chip->parent;
+	struct fwnode_handle *fwnode = dev_fwnode(&gdev->dev);
 	const char **names;
 	int ret, i;
 	int count;
 
-	/* GPIO chip may not have a parent device whose properties we inspect. */
-	if (!dev)
-		return 0;
-
-	count = device_property_string_array_count(dev, "gpio-line-names");
+	count = fwnode_property_string_array_count(fwnode, "gpio-line-names");
 	if (count < 0)
 		return 0;
 
@@ -393,7 +389,7 @@ static int devprop_gpiochip_set_names(struct gpio_chip *chip)
 	if (!names)
 		return -ENOMEM;
 
-	ret = device_property_read_string_array(dev, "gpio-line-names",
+	ret = fwnode_property_read_string_array(fwnode, "gpio-line-names",
 						names, count);
 	if (ret < 0) {
 		dev_warn(&gdev->dev, "failed to read GPIO line names\n");
drivers/gpu/drm/i915/display/intel_acpi.c +20 -2
index e21fb14d5e07..833d0c1be4f1 100644
@@ -84,13 +84,31 @@ static void intel_dsm_platform_mux_info(acpi_handle dhandle)
 		return;
 	}
 
+	if (!pkg->package.count) {
+		DRM_DEBUG_DRIVER("no connection in _DSM\n");
+		return;
+	}
+
 	connector_count = &pkg->package.elements[0];
 	DRM_DEBUG_DRIVER("MUX info connectors: %lld\n",
 		  (unsigned long long)connector_count->integer.value);
 	for (i = 1; i < pkg->package.count; i++) {
 		union acpi_object *obj = &pkg->package.elements[i];
-		union acpi_object *connector_id = &obj->package.elements[0];
-		union acpi_object *info = &obj->package.elements[1];
+		union acpi_object *connector_id;
+		union acpi_object *info;
+
+		if (obj->type != ACPI_TYPE_PACKAGE || obj->package.count < 2) {
+			DRM_DEBUG_DRIVER("Invalid object for MUX #%d\n", i);
+			continue;
+		}
+
+		connector_id = &obj->package.elements[0];
+		info = &obj->package.elements[1];
+		if (info->type != ACPI_TYPE_BUFFER || info->buffer.length < 4) {
+			DRM_DEBUG_DRIVER("Invalid info for MUX obj #%d\n", i);
+			continue;
+		}
+
 		DRM_DEBUG_DRIVER("Connector id: 0x%016llx\n",
 			  (unsigned long long)connector_id->integer.value);
 		DRM_DEBUG_DRIVER("  port id: %s\n",
drivers/gpu/drm/msm/msm_drv.c +1 -0
index b38ebccad42f..0aacc43faefa 100644
@@ -557,6 +557,7 @@ static int msm_drm_init(struct device *dev, struct drm_driver *drv)
 	kfree(priv);
 err_put_drm_dev:
 	drm_dev_put(ddev);
+	platform_set_drvdata(pdev, NULL);
 	return ret;
 }
 
drivers/gpu/drm/vc4/vc4_crtc.c +17 -0
index 482219fb4db2..1d2416d466a3 100644
@@ -210,6 +210,7 @@ static u32 vc4_get_fifo_full_level(struct vc4_crtc *vc4_crtc, u32 format)
 {
 	const struct vc4_crtc_data *crtc_data = vc4_crtc_to_vc4_crtc_data(vc4_crtc);
 	const struct vc4_pv_data *pv_data = vc4_crtc_to_vc4_pv_data(vc4_crtc);
+	struct vc4_dev *vc4 = to_vc4_dev(vc4_crtc->base.dev);
 	u32 fifo_len_bytes = pv_data->fifo_depth;
 
 	/*
@@ -238,6 +239,22 @@ static u32 vc4_get_fifo_full_level(struct vc4_crtc *vc4_crtc, u32 format)
 		if (crtc_data->hvs_output == 5)
 			return 32;
 
+		/*
+		 * It looks like in some situations, we will overflow
+		 * the PixelValve FIFO (with the bit 10 of PV stat being
+		 * set) and stall the HVS / PV, eventually resulting in
+		 * a page flip timeout.
+		 *
+		 * Displaying the video overlay during a playback with
+		 * Kodi on an RPi3 seems to be a great solution with a
+		 * failure rate around 50%.
+		 *
+		 * Removing 1 from the FIFO full level however
+		 * seems to completely remove that issue.
+		 */
+		if (!vc4->hvs->hvs5)
+			return fifo_len_bytes - 3 * HVS_FIFO_LATENCY_PIX - 1;
+
 		return fifo_len_bytes - 3 * HVS_FIFO_LATENCY_PIX;
 	}
 }
drivers/i2c/busses/i2c-designware-master.c +1 -0
index d6425ad6e6a3..2871cf2ee8b4 100644
@@ -129,6 +129,7 @@ static int i2c_dw_set_timings_master(struct dw_i2c_dev *dev)
 		if ((comp_param1 & DW_IC_COMP_PARAM_1_SPEED_MODE_MASK)
 			!= DW_IC_COMP_PARAM_1_SPEED_MODE_HIGH) {
 			dev_err(dev->dev, "High Speed not supported!\n");
+			t->bus_freq_hz = I2C_MAX_FAST_MODE_FREQ;
 			dev->master_cfg &= ~DW_IC_CON_SPEED_MASK;
 			dev->master_cfg |= DW_IC_CON_SPEED_FAST;
 			dev->hs_hcnt = 0;
drivers/i2c/busses/i2c-jz4780.c +2 -2
index cb4a25ebb890..2a946c207928 100644
@@ -526,8 +526,8 @@ static irqreturn_t jz4780_i2c_irq(int irqno, void *dev_id)
 				i2c_sta = jz4780_i2c_readw(i2c, JZ4780_I2C_STA);
 				data = *i2c->wbuf;
 				data &= ~JZ4780_I2C_DC_READ;
-				if ((!i2c->stop_hold) && (i2c->cdata->version >=
-						ID_X1000))
+				if ((i2c->wt_len == 1) && (!i2c->stop_hold) &&
+						(i2c->cdata->version >= ID_X1000))
 					data |= X1000_I2C_DC_STOP;
 				jz4780_i2c_writew(i2c, JZ4780_I2C_DC, data);
 				i2c->wbuf++;
drivers/i2c/i2c-core-base.c +4 -3
index 573b5da145d1..c13e7f107dd3 100644
@@ -378,7 +378,7 @@ static int i2c_gpio_init_recovery(struct i2c_adapter *adap)
 static int i2c_init_recovery(struct i2c_adapter *adap)
 {
 	struct i2c_bus_recovery_info *bri = adap->bus_recovery_info;
-	char *err_str;
+	char *err_str, *err_level = KERN_ERR;
 
 	if (!bri)
 		return 0;
@@ -387,7 +387,8 @@ static int i2c_init_recovery(struct i2c_adapter *adap)
 		return -EPROBE_DEFER;
 
 	if (!bri->recover_bus) {
-		err_str = "no recover_bus() found";
+		err_str = "no suitable method provided";
+		err_level = KERN_DEBUG;
 		goto err;
 	}
 
@@ -414,7 +415,7 @@ static int i2c_init_recovery(struct i2c_adapter *adap)
 
 	return 0;
  err:
-	dev_err(&adap->dev, "Not using recovery: %s\n", err_str);
+	dev_printk(err_level, &adap->dev, "Not using recovery: %s\n", err_str);
 	adap->bus_recovery_info = NULL;
 
 	return -EINVAL;
drivers/infiniband/core/addr.c +3 -1
index 0abce004a959..65e3e7df8a4b 100644
@@ -76,7 +76,9 @@ static struct workqueue_struct *addr_wq;
 
 static const struct nla_policy ib_nl_addr_policy[LS_NLA_TYPE_MAX] = {
 	[LS_NLA_TYPE_DGID] = {.type = NLA_BINARY,
-		.len = sizeof(struct rdma_nla_ls_gid)},
+		.len = sizeof(struct rdma_nla_ls_gid),
+		.validation_type = NLA_VALIDATE_MIN,
+		.min = sizeof(struct rdma_nla_ls_gid)},
 };
 
 static inline bool ib_nl_is_good_ip_resp(const struct nlmsghdr *nlh)
drivers/infiniband/hw/cxgb4/cm.c +2 -1
index 81903749d241..e42c812e74c3 100644
@@ -3616,7 +3616,8 @@ int c4iw_destroy_listen(struct iw_cm_id *cm_id)
 		c4iw_init_wr_wait(ep->com.wr_waitp);
 		err = cxgb4_remove_server(
 				ep->com.dev->rdev.lldi.ports[0], ep->stid,
-				ep->com.dev->rdev.lldi.rxq_ids[0], true);
+				ep->com.dev->rdev.lldi.rxq_ids[0],
+				ep->com.local_addr.ss_family == AF_INET6);
 		if (err)
 			goto done;
 		err = c4iw_wait_for_reply(&ep->com.dev->rdev, ep->com.wr_waitp,
drivers/infiniband/hw/hfi1/affinity.c +5 -16
index 2a91b8d95e12..04b1e8f021f6 100644
@@ -632,22 +632,11 @@ static void _dev_comp_vect_cpu_mask_clean_up(struct hfi1_devdata *dd,
  */
 int hfi1_dev_affinity_init(struct hfi1_devdata *dd)
 {
-	int node = pcibus_to_node(dd->pcidev->bus);
 	struct hfi1_affinity_node *entry;
 	const struct cpumask *local_mask;
 	int curr_cpu, possible, i, ret;
 	bool new_entry = false;
 
-	/*
-	 * If the BIOS does not have the NUMA node information set, select
-	 * NUMA 0 so we get consistent performance.
-	 */
-	if (node < 0) {
-		dd_dev_err(dd, "Invalid PCI NUMA node. Performance may be affected\n");
-		node = 0;
-	}
-	dd->node = node;
-
 	local_mask = cpumask_of_node(dd->node);
 	if (cpumask_first(local_mask) >= nr_cpu_ids)
 		local_mask = topology_core_cpumask(0);
@@ -660,7 +649,7 @@ int hfi1_dev_affinity_init(struct hfi1_devdata *dd)
 	 * create an entry in the global affinity structure and initialize it.
 	 */
 	if (!entry) {
-		entry = node_affinity_allocate(node);
+		entry = node_affinity_allocate(dd->node);
 		if (!entry) {
 			dd_dev_err(dd,
 				   "Unable to allocate global affinity node\n");
@@ -751,6 +740,7 @@ int hfi1_dev_affinity_init(struct hfi1_devdata *dd)
 	if (new_entry)
 		node_affinity_add_tail(entry);
 
+	dd->affinity_entry = entry;
 	mutex_unlock(&node_affinity.lock);
 
 	return 0;
@@ -766,10 +756,9 @@ void hfi1_dev_affinity_clean_up(struct hfi1_devdata *dd)
 {
 	struct hfi1_affinity_node *entry;
 
-	if (dd->node < 0)
-		return;
-
 	mutex_lock(&node_affinity.lock);
+	if (!dd->affinity_entry)
+		goto unlock;
 	entry = node_affinity_lookup(dd->node);
 	if (!entry)
 		goto unlock;
@@ -780,8 +769,8 @@ void hfi1_dev_affinity_clean_up(struct hfi1_devdata *dd)
 	 */
 	_dev_comp_vect_cpu_mask_clean_up(dd, entry);
 unlock:
+	dd->affinity_entry = NULL;
 	mutex_unlock(&node_affinity.lock);
-	dd->node = NUMA_NO_NODE;
 }
 
 /*
drivers/infiniband/hw/hfi1/hfi.h +1 -0
index e09e8244a94c..2a9a040569eb 100644
@@ -1409,6 +1409,7 @@ struct hfi1_devdata {
 	spinlock_t irq_src_lock;
 	int vnic_num_vports;
 	struct net_device *dummy_netdev;
+	struct hfi1_affinity_node *affinity_entry;
 
 	/* Keeps track of IPoIB RSM rule users */
 	atomic_t ipoib_rsm_usr_num;
drivers/infiniband/hw/hfi1/init.c +9 -1
index cb7ad1288821..786c6316273f 100644
@@ -1277,7 +1277,6 @@ static struct hfi1_devdata *hfi1_alloc_devdata(struct pci_dev *pdev,
 	dd->pport = (struct hfi1_pportdata *)(dd + 1);
 	dd->pcidev = pdev;
 	pci_set_drvdata(pdev, dd);
-	dd->node = NUMA_NO_NODE;
 
 	ret = xa_alloc_irq(&hfi1_dev_table, &dd->unit, dd, xa_limit_32b,
 			GFP_KERNEL);
@@ -1287,6 +1286,15 @@ static struct hfi1_devdata *hfi1_alloc_devdata(struct pci_dev *pdev,
 		goto bail;
 	}
 	rvt_set_ibdev_name(&dd->verbs_dev.rdi, "%s_%d", class_name(), dd->unit);
+	/*
+	 * If the BIOS does not have the NUMA node information set, select
+	 * NUMA 0 so we get consistent performance.
+	 */
+	dd->node = pcibus_to_node(pdev->bus);
+	if (dd->node == NUMA_NO_NODE) {
+		dd_dev_err(dd, "Invalid PCI NUMA node. Performance may be affected\n");
+		dd->node = 0;
+	}
 
 	/*
 	 * Initialize all locks for the device. This needs to be as early as
drivers/infiniband/hw/hfi1/netdev_rx.c +1 -2
index 6d263c9749b3..ea95baada2b6 100644
@@ -173,8 +173,7 @@ u32 hfi1_num_netdev_contexts(struct hfi1_devdata *dd, u32 available_contexts,
 		return 0;
 	}
 
-	cpumask_and(node_cpu_mask, cpu_mask,
-		    cpumask_of_node(pcibus_to_node(dd->pcidev->bus)));
+	cpumask_and(node_cpu_mask, cpu_mask, cpumask_of_node(dd->node));
 
 	available_cpus = cpumask_weight(node_cpu_mask);
 
drivers/infiniband/hw/qedr/verbs.c +2 -1
index 511c95bb3d01..cdfb7732dff3 100644
@@ -1241,7 +1241,8 @@ static int qedr_check_qp_attrs(struct ib_pd *ibpd, struct qedr_dev *dev,
 	 * TGT QP isn't associated with RQ/SQ
 	 */
 	if ((attrs->qp_type != IB_QPT_GSI) && (dev->gsi_qp_created) &&
-	    (attrs->qp_type != IB_QPT_XRC_TGT)) {
+	    (attrs->qp_type != IB_QPT_XRC_TGT) &&
+	    (attrs->qp_type != IB_QPT_XRC_INI)) {
 		struct qedr_cq *send_cq = get_qedr_cq(attrs->send_cq);
 		struct qedr_cq *recv_cq = get_qedr_cq(attrs->recv_cq);
 
drivers/infiniband/ulp/rtrs/rtrs-clt.c +1 -1
index 6eb95e3c4c8a..6ff97fbf8756 100644
@@ -2739,8 +2739,8 @@ void rtrs_clt_close(struct rtrs_clt *clt)
 
 	/* Now it is safe to iterate over all paths without locks */
 	list_for_each_entry_safe(sess, tmp, &clt->paths_list, s.entry) {
-		rtrs_clt_destroy_sess_files(sess, NULL);
 		rtrs_clt_close_conns(sess, true);
+		rtrs_clt_destroy_sess_files(sess, NULL);
 		kobject_put(&sess->kobj);
 	}
 	free_clt(clt);
drivers/net/can/spi/mcp251x.c +18 -6
index 22d814ae4edc..42c3046fa304 100644
@@ -314,6 +314,18 @@ static int mcp251x_spi_trans(struct spi_device *spi, int len)
 	return ret;
 }
 
+static int mcp251x_spi_write(struct spi_device *spi, int len)
+{
+	struct mcp251x_priv *priv = spi_get_drvdata(spi);
+	int ret;
+
+	ret = spi_write(spi, priv->spi_tx_buf, len);
+	if (ret)
+		dev_err(&spi->dev, "spi write failed: ret = %d\n", ret);
+
+	return ret;
+}
+
 static u8 mcp251x_read_reg(struct spi_device *spi, u8 reg)
 {
 	struct mcp251x_priv *priv = spi_get_drvdata(spi);
@@ -361,7 +373,7 @@ static void mcp251x_write_reg(struct spi_device *spi, u8 reg, u8 val)
 	priv->spi_tx_buf[1] = reg;
 	priv->spi_tx_buf[2] = val;
 
-	mcp251x_spi_trans(spi, 3);
+	mcp251x_spi_write(spi, 3);
 }
 
 static void mcp251x_write_2regs(struct spi_device *spi, u8 reg, u8 v1, u8 v2)
@@ -373,7 +385,7 @@ static void mcp251x_write_2regs(struct spi_device *spi, u8 reg, u8 v1, u8 v2)
 	priv->spi_tx_buf[2] = v1;
 	priv->spi_tx_buf[3] = v2;
 
-	mcp251x_spi_trans(spi, 4);
+	mcp251x_spi_write(spi, 4);
 }
 
 static void mcp251x_write_bits(struct spi_device *spi, u8 reg,
@@ -386,7 +398,7 @@ static void mcp251x_write_bits(struct spi_device *spi, u8 reg,
 	priv->spi_tx_buf[2] = mask;
 	priv->spi_tx_buf[3] = val;
 
-	mcp251x_spi_trans(spi, 4);
+	mcp251x_spi_write(spi, 4);
 }
 
 static u8 mcp251x_read_stat(struct spi_device *spi)
@@ -618,7 +630,7 @@ static void mcp251x_hw_tx_frame(struct spi_device *spi, u8 *buf,
 					  buf[i]);
 	} else {
 		memcpy(priv->spi_tx_buf, buf, TXBDAT_OFF + len);
-		mcp251x_spi_trans(spi, TXBDAT_OFF + len);
+		mcp251x_spi_write(spi, TXBDAT_OFF + len);
 	}
 }
 
@@ -650,7 +662,7 @@ static void mcp251x_hw_tx(struct spi_device *spi, struct can_frame *frame,
 
 	/* use INSTRUCTION_RTS, to avoid "repeated frame problem" */
 	priv->spi_tx_buf[0] = INSTRUCTION_RTS(1 << tx_buf_idx);
-	mcp251x_spi_trans(priv->spi, 1);
+	mcp251x_spi_write(priv->spi, 1);
 }
 
 static void mcp251x_hw_rx_frame(struct spi_device *spi, u8 *buf,
@@ -888,7 +900,7 @@ static int mcp251x_hw_reset(struct spi_device *spi)
 	mdelay(MCP251X_OST_DELAY_MS);
 
 	priv->spi_tx_buf[0] = INSTRUCTION_RESET;
-	ret = mcp251x_spi_trans(spi, 1);
+	ret = mcp251x_spi_write(spi, 1);
 	if (ret)
 		return ret;
 
drivers/net/can/usb/peak_usb/pcan_usb_core.c +5 -1
index 204ccb27d6d9..73c1bc3cb70d 100644
@@ -856,7 +856,7 @@ static int peak_usb_create_dev(const struct peak_usb_adapter *peak_usb_adapter,
 	if (dev->adapter->dev_set_bus) {
 		err = dev->adapter->dev_set_bus(dev, 0);
 		if (err)
-			goto lbl_unregister_candev;
+			goto adap_dev_free;
 	}
 
 	/* get device number early */
@@ -868,6 +868,10 @@ static int peak_usb_create_dev(const struct peak_usb_adapter *peak_usb_adapter,
 
 	return 0;
 
+adap_dev_free:
+	if (dev->adapter->dev_free)
+		dev->adapter->dev_free(dev);
+
 lbl_unregister_candev:
 	unregister_candev(netdev);
 
drivers/net/dsa/lantiq_gswip.c +173 -22

262 lines not on this page · raw message

drivers/net/ethernet/amd/xgbe/xgbe.h +3 -3
index ba8321ec1ee7..3305979a9f7c 100644
@@ -180,9 +180,9 @@
 #define XGBE_DMA_SYS_AWCR	0x30303030
 
 /* DMA cache settings - PCI device */
-#define XGBE_DMA_PCI_ARCR	0x00000003
-#define XGBE_DMA_PCI_AWCR	0x13131313
-#define XGBE_DMA_PCI_AWARCR	0x00000313
+#define XGBE_DMA_PCI_ARCR	0x000f0f0f
+#define XGBE_DMA_PCI_AWCR	0x0f0f0f0f
+#define XGBE_DMA_PCI_AWARCR	0x00000f0f
 
 /* DMA channel interrupt modes */
 #define XGBE_IRQ_MODE_EDGE	0
drivers/net/ethernet/cadence/macb_main.c +7 -0
index 286f0341bdf8..48a6bda2a8cc 100644
@@ -3111,6 +3111,9 @@ static void gem_prog_cmp_regs(struct macb *bp, struct ethtool_rx_flow_spec *fs)
 	bool cmp_b = false;
 	bool cmp_c = false;
 
+	if (!macb_is_gem(bp))
+		return;
+
 	tp4sp_v = &(fs->h_u.tcp_ip4_spec);
 	tp4sp_m = &(fs->m_u.tcp_ip4_spec);
 
@@ -3479,6 +3482,7 @@ static void macb_restore_features(struct macb *bp)
 {
 	struct net_device *netdev = bp->dev;
 	netdev_features_t features = netdev->features;
+	struct ethtool_rx_fs_item *item;
 
 	/* TX checksum offload */
 	macb_set_txcsum_feature(bp, features);
@@ -3487,6 +3491,9 @@ static void macb_restore_features(struct macb *bp)
 	macb_set_rxcsum_feature(bp, features);
 
 	/* RX Flow Filters */
+	list_for_each_entry(item, &bp->rx_fs_list.list, list)
+		gem_prog_cmp_regs(bp, &item->fs);
+
 	macb_set_rxflow_feature(bp, features);
 }
 
drivers/net/ethernet/chelsio/cxgb4/cudbg_lib.c +19 -4
index 75474f810249..c5b0e725b238 100644
@@ -1794,11 +1794,25 @@ int cudbg_collect_sge_indirect(struct cudbg_init *pdbg_init,
 	struct cudbg_buffer temp_buff = { 0 };
 	struct sge_qbase_reg_field *sge_qbase;
 	struct ireg_buf *ch_sge_dbg;
+	u8 padap_running = 0;
 	int i, rc;
+	u32 size;
 
-	rc = cudbg_get_buff(pdbg_init, dbg_buff,
-			    sizeof(*ch_sge_dbg) * 2 + sizeof(*sge_qbase),
-			    &temp_buff);
+	/* Accessing SGE_QBASE_MAP[0-3] and SGE_QBASE_INDEX regs can
+	 * lead to SGE missing doorbells under heavy traffic. So, only
+	 * collect them when adapter is idle.
+	 */
+	for_each_port(padap, i) {
+		padap_running = netif_running(padap->port[i]);
+		if (padap_running)
+			break;
+	}
+
+	size = sizeof(*ch_sge_dbg) * 2;
+	if (!padap_running)
+		size += sizeof(*sge_qbase);
+
+	rc = cudbg_get_buff(pdbg_init, dbg_buff, size, &temp_buff);
 	if (rc)
 		return rc;
 
@@ -1820,7 +1834,8 @@ int cudbg_collect_sge_indirect(struct cudbg_init *pdbg_init,
 		ch_sge_dbg++;
 	}
 
-	if (CHELSIO_CHIP_VERSION(padap->params.chip) > CHELSIO_T5) {
+	if (CHELSIO_CHIP_VERSION(padap->params.chip) > CHELSIO_T5 &&
+	    !padap_running) {
 		sge_qbase = (struct sge_qbase_reg_field *)ch_sge_dbg;
 		/* 1 addr reg SGE_QBASE_INDEX and 4 data reg
 		 * SGE_QBASE_MAP[0-3]
drivers/net/ethernet/chelsio/cxgb4/t4_hw.c +2 -1
index 98d01a7497ec..581670dced6e 100644
@@ -2090,7 +2090,8 @@ void t4_get_regs(struct adapter *adap, void *buf, size_t buf_size)
 		0x1190, 0x1194,
 		0x11a0, 0x11a4,
 		0x11b0, 0x11b4,
-		0x11fc, 0x1274,
+		0x11fc, 0x123c,
+		0x1254, 0x1274,
 		0x1280, 0x133c,
 		0x1800, 0x18fc,
 		0x3000, 0x302c,
drivers/net/ethernet/freescale/gianfar.c +5 -1
index 4fab2ee5bbf5..e4d9c4c640e5 100644
@@ -364,7 +364,11 @@ static void gfar_set_mac_for_addr(struct net_device *dev, int num,
 
 static int gfar_set_mac_addr(struct net_device *dev, void *p)
 {
-	eth_mac_addr(dev, p);
+	int ret;
+
+	ret = eth_mac_addr(dev, p);
+	if (ret)
+		return ret;
 
 	gfar_set_mac_for_addr(dev, 0, dev->dev_addr);
 
drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c +2 -2
index dc5d150a9c54..ac6980acb6f0 100644
@@ -2554,14 +2554,14 @@ static int hclgevf_ae_start(struct hnae3_handle *handle)
 {
 	struct hclgevf_dev *hdev = hclgevf_ae_get_hdev(handle);
 
+	clear_bit(HCLGEVF_STATE_DOWN, &hdev->state);
+
 	hclgevf_reset_tqp_stats(handle);
 
 	hclgevf_request_link_info(hdev);
 
 	hclgevf_update_link_mode(hdev);
 
-	clear_bit(HCLGEVF_STATE_DOWN, &hdev->state);
-
 	return 0;
 }
 
drivers/net/ethernet/intel/i40e/i40e.h +1 -0
index 118473dfdcbd..fe1258778cbc 100644
@@ -142,6 +142,7 @@ enum i40e_state_t {
 	__I40E_VIRTCHNL_OP_PENDING,
 	__I40E_RECOVERY_MODE,
 	__I40E_VF_RESETS_DISABLED,	/* disable resets during i40e_remove */
+	__I40E_VFS_RELEASING,
 	/* This must be last as it determines the size of the BITMAP */
 	__I40E_STATE_SIZE__,
 };
drivers/net/ethernet/intel/i40e/i40e_debugfs.c +3 -0
index d7c13ca9be7d..d627b59ad446 100644
@@ -578,6 +578,9 @@ static void i40e_dbg_dump_desc(int cnt, int vsi_seid, int ring_id, int desc_n,
 	case RING_TYPE_XDP:
 		ring = kmemdup(vsi->xdp_rings[ring_id], sizeof(*ring), GFP_KERNEL);
 		break;
+	default:
+		ring = NULL;
+		break;
 	}
 	if (!ring)
 		return;
drivers/net/ethernet/intel/i40e/i40e_ethtool.c +48 -7

92 lines not on this page · raw message

drivers/net/ethernet/intel/i40e/i40e_main.c +7 -4
index 4a2d03cada01..7fab60128c76 100644
@@ -2560,8 +2560,7 @@ int i40e_sync_vsi_filters(struct i40e_vsi *vsi)
 				 i40e_stat_str(hw, aq_ret),
 				 i40e_aq_str(hw, hw->aq.asq_last_status));
 		} else {
-			dev_info(&pf->pdev->dev, "%s is %s allmulti mode.\n",
-				 vsi->netdev->name,
+			dev_info(&pf->pdev->dev, "%s allmulti mode.\n",
 				 cur_multipromisc ? "entering" : "leaving");
 		}
 	}
@@ -14647,12 +14646,16 @@ static int i40e_init_recovery_mode(struct i40e_pf *pf, struct i40e_hw *hw)
 	 * in order to register the netdev
 	 */
 	v_idx = i40e_vsi_mem_alloc(pf, I40E_VSI_MAIN);
-	if (v_idx < 0)
+	if (v_idx < 0) {
+		err = v_idx;
 		goto err_switch_setup;
+	}
 	pf->lan_vsi = v_idx;
 	vsi = pf->vsi[v_idx];
-	if (!vsi)
+	if (!vsi) {
+		err = -EFAULT;
 		goto err_switch_setup;
+	}
 	vsi->alloc_queue_pairs = 1;
 	err = i40e_config_netdev(vsi);
 	if (err)
drivers/net/ethernet/intel/i40e/i40e_txrx.c +5 -7
index 899714243af7..62b439232fa5 100644
@@ -2187,8 +2187,7 @@ int i40e_xmit_xdp_tx_ring(struct xdp_buff *xdp, struct i40e_ring *xdp_ring)
  * @rx_ring: Rx ring being processed
  * @xdp: XDP buffer containing the frame
  **/
-static struct sk_buff *i40e_run_xdp(struct i40e_ring *rx_ring,
-				    struct xdp_buff *xdp)
+static int i40e_run_xdp(struct i40e_ring *rx_ring, struct xdp_buff *xdp)
 {
 	int err, result = I40E_XDP_PASS;
 	struct i40e_ring *xdp_ring;
@@ -2227,7 +2226,7 @@ static struct sk_buff *i40e_run_xdp(struct i40e_ring *rx_ring,
 	}
 xdp_out:
 	rcu_read_unlock();
-	return ERR_PTR(-result);
+	return result;
 }
 
 /**
@@ -2339,6 +2338,7 @@ static int i40e_clean_rx_irq(struct i40e_ring *rx_ring, int budget)
 	unsigned int xdp_xmit = 0;
 	bool failure = false;
 	struct xdp_buff xdp;
+	int xdp_res = 0;
 
 #if (PAGE_SIZE < 8192)
 	xdp.frame_sz = i40e_rx_frame_truesize(rx_ring, 0);
@@ -2405,12 +2405,10 @@ static int i40e_clean_rx_irq(struct i40e_ring *rx_ring, int budget)
 			/* At larger PAGE_SIZE, frame_sz depend on len size */
 			xdp.frame_sz = i40e_rx_frame_truesize(rx_ring, size);
 #endif
-			skb = i40e_run_xdp(rx_ring, &xdp);
+			xdp_res = i40e_run_xdp(rx_ring, &xdp);
 		}
 
-		if (IS_ERR(skb)) {
-			unsigned int xdp_res = -PTR_ERR(skb);
-
+		if (xdp_res) {
 			if (xdp_res & (I40E_XDP_TX | I40E_XDP_REDIR)) {
 				xdp_xmit |= xdp_res;
 				i40e_rx_buffer_flip(rx_ring, rx_buffer, size);
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c +9 -0
index 3b269c70dcfe..e4f13a49c3df 100644
@@ -137,6 +137,7 @@ void i40e_vc_notify_vf_reset(struct i40e_vf *vf)
  **/
 static inline void i40e_vc_disable_vf(struct i40e_vf *vf)
 {
+	struct i40e_pf *pf = vf->pf;
 	int i;
 
 	i40e_vc_notify_vf_reset(vf);
@@ -147,6 +148,11 @@ static inline void i40e_vc_disable_vf(struct i40e_vf *vf)
 	 * ensure a reset.
 	 */
 	for (i = 0; i < 20; i++) {
+		/* If PF is in VFs releasing state reset VF is impossible,
+		 * so leave it.
+		 */
+		if (test_bit(__I40E_VFS_RELEASING, pf->state))
+			return;
 		if (i40e_reset_vf(vf, false))
 			return;
 		usleep_range(10000, 20000);
@@ -1574,6 +1580,8 @@ void i40e_free_vfs(struct i40e_pf *pf)
 
 	if (!pf->vf)
 		return;
+
+	set_bit(__I40E_VFS_RELEASING, pf->state);
 	while (test_and_set_bit(__I40E_VF_DISABLE, pf->state))
 		usleep_range(1000, 2000);
 
@@ -1631,6 +1639,7 @@ void i40e_free_vfs(struct i40e_pf *pf)
 		}
 	}
 	clear_bit(__I40E_VF_DISABLE, pf->state);
+	clear_bit(__I40E_VFS_RELEASING, pf->state);
 }
 
 #ifdef CONFIG_PCI_IOV
drivers/net/ethernet/intel/ice/ice.h +2 -2
index 5b3f2bb22eba..6a57b41ddb54 100644
@@ -194,7 +194,6 @@ enum ice_state {
 	__ICE_NEEDS_RESTART,
 	__ICE_PREPARED_FOR_RESET,	/* set by driver when prepared */
 	__ICE_RESET_OICR_RECV,		/* set by driver after rcv reset OICR */
-	__ICE_DCBNL_DEVRESET,		/* set by dcbnl devreset */
 	__ICE_PFR_REQ,			/* set by driver and peers */
 	__ICE_CORER_REQ,		/* set by driver and peers */
 	__ICE_GLOBR_REQ,		/* set by driver and peers */
@@ -587,7 +586,7 @@ int ice_schedule_reset(struct ice_pf *pf, enum ice_reset_req reset);
 void ice_print_link_msg(struct ice_vsi *vsi, bool isup);
 const char *ice_stat_str(enum ice_status stat_err);
 const char *ice_aq_str(enum ice_aq_err aq_err);
-bool ice_is_wol_supported(struct ice_pf *pf);
+bool ice_is_wol_supported(struct ice_hw *hw);
 int
 ice_fdir_write_fltr(struct ice_pf *pf, struct ice_fdir_fltr *input, bool add,
 		    bool is_tun);
@@ -605,6 +604,7 @@ int ice_fdir_create_dflt_rules(struct ice_pf *pf);
 int ice_aq_wait_for_event(struct ice_pf *pf, u16 opcode, unsigned long timeout,
 			  struct ice_rq_event_info *event);
 int ice_open(struct net_device *netdev);
+int ice_open_internal(struct net_device *netdev);
 int ice_stop(struct net_device *netdev);
 void ice_service_task_schedule(struct ice_pf *pf);
 
drivers/net/ethernet/intel/ice/ice_common.c +1 -1
index 7db5fd977367..2239a5f45e5a 100644
@@ -717,8 +717,8 @@ static enum ice_status ice_cfg_fw_log(struct ice_hw *hw, bool enable)
 
 			if (!data) {
 				data = devm_kcalloc(ice_hw_to_dev(hw),
-						    sizeof(*data),
 						    ICE_AQC_FW_LOG_ID_MAX,
+						    sizeof(*data),
 						    GFP_KERNEL);
 				if (!data)
 					return ICE_ERR_NO_MEMORY;
drivers/net/ethernet/intel/ice/ice_controlq.h +2 -2
index faaa08e8171b..68866f4f0eb0 100644
@@ -31,8 +31,8 @@ enum ice_ctl_q {
 	ICE_CTL_Q_MAILBOX,
 };
 
-/* Control Queue timeout settings - max delay 250ms */
-#define ICE_CTL_Q_SQ_CMD_TIMEOUT	2500  /* Count 2500 times */
+/* Control Queue timeout settings - max delay 1s */
+#define ICE_CTL_Q_SQ_CMD_TIMEOUT	10000 /* Count 10000 times */
 #define ICE_CTL_Q_SQ_CMD_USEC		100   /* Check every 100usec */
 #define ICE_CTL_Q_ADMIN_INIT_TIMEOUT	10    /* Count 10 times */
 #define ICE_CTL_Q_ADMIN_INIT_MSEC	100   /* Check every 100msec */
drivers/net/ethernet/intel/ice/ice_dcb.c +48 -28

177 lines not on this page · raw message

drivers/net/ethernet/intel/ice/ice_dcb_lib.c +25 -22

155 lines not on this page · raw message

drivers/net/ethernet/intel/ice/ice_dcb_nl.c +25 -27

189 lines not on this page · raw message

drivers/net/ethernet/intel/ice/ice_ethtool.c +4 -4
index aebebd2102da..d70573f5072c 100644
@@ -2986,7 +2986,7 @@ ice_get_pauseparam(struct net_device *netdev, struct ethtool_pauseparam *pause)
 	pause->rx_pause = 0;
 	pause->tx_pause = 0;
 
-	dcbx_cfg = &pi->local_dcbx_cfg;
+	dcbx_cfg = &pi->qos_cfg.local_dcbx_cfg;
 
 	pcaps = kzalloc(sizeof(*pcaps), GFP_KERNEL);
 	if (!pcaps)
@@ -3038,7 +3038,7 @@ ice_set_pauseparam(struct net_device *netdev, struct ethtool_pauseparam *pause)
 
 	pi = vsi->port_info;
 	hw_link_info = &pi->phy.link_info;
-	dcbx_cfg = &pi->local_dcbx_cfg;
+	dcbx_cfg = &pi->qos_cfg.local_dcbx_cfg;
 	link_up = hw_link_info->link_info & ICE_AQ_LINK_UP;
 
 	/* Changing the port's flow control is not supported if this isn't the
@@ -3472,7 +3472,7 @@ static void ice_get_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
 		netdev_warn(netdev, "Wake on LAN is not supported on this interface!\n");
 
 	/* Get WoL settings based on the HW capability */
-	if (ice_is_wol_supported(pf)) {
+	if (ice_is_wol_supported(&pf->hw)) {
 		wol->supported = WAKE_MAGIC;
 		wol->wolopts = pf->wol_ena ? WAKE_MAGIC : 0;
 	} else {
@@ -3492,7 +3492,7 @@ static int ice_set_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
 	struct ice_vsi *vsi = np->vsi;
 	struct ice_pf *pf = vsi->back;
 
-	if (vsi->type != ICE_VSI_PF || !ice_is_wol_supported(pf))
+	if (vsi->type != ICE_VSI_PF || !ice_is_wol_supported(&pf->hw))
 		return -EOPNOTSUPP;
 
 	/* only magic packet is supported */
drivers/net/ethernet/intel/ice/ice_lib.c +3 -4
index ad9c22a1b97a..170367eaa95a 100644
@@ -2078,7 +2078,7 @@ int ice_cfg_vlan_pruning(struct ice_vsi *vsi, bool ena, bool vlan_promisc)
 
 static void ice_vsi_set_tc_cfg(struct ice_vsi *vsi)
 {
-	struct ice_dcbx_cfg *cfg = &vsi->port_info->local_dcbx_cfg;
+	struct ice_dcbx_cfg *cfg = &vsi->port_info->qos_cfg.local_dcbx_cfg;
 
 	vsi->tc_cfg.ena_tc = ice_dcb_get_ena_tc(cfg);
 	vsi->tc_cfg.numtc = ice_dcb_get_num_tc(cfg);
@@ -2489,7 +2489,7 @@ int ice_ena_vsi(struct ice_vsi *vsi, bool locked)
 			if (!locked)
 				rtnl_lock();
 
-			err = ice_open(vsi->netdev);
+			err = ice_open_internal(vsi->netdev);
 
 			if (!locked)
 				rtnl_unlock();
@@ -2518,7 +2518,7 @@ void ice_dis_vsi(struct ice_vsi *vsi, bool locked)
 			if (!locked)
 				rtnl_lock();
 
-			ice_stop(vsi->netdev);
+			ice_vsi_close(vsi);
 
 			if (!locked)
 				rtnl_unlock();
@@ -2944,7 +2944,6 @@ int ice_vsi_rebuild(struct ice_vsi *vsi, bool init_vsi)
 bool ice_is_reset_in_progress(unsigned long *state)
 {
 	return test_bit(__ICE_RESET_OICR_RECV, state) ||
-	       test_bit(__ICE_DCBNL_DEVRESET, state) ||
 	       test_bit(__ICE_PFR_REQ, state) ||
 	       test_bit(__ICE_CORER_REQ, state) ||
 	       test_bit(__ICE_GLOBR_REQ, state);
drivers/net/ethernet/intel/ice/ice_main.c +39 -14

107 lines not on this page · raw message

drivers/net/ethernet/intel/ice/ice_switch.c +9 -6
index c3a6c41385ee..5ce8590cdb37 100644
@@ -1239,6 +1239,9 @@ ice_add_update_vsi_list(struct ice_hw *hw,
 			ice_create_vsi_list_map(hw, &vsi_handle_arr[0], 2,
 						vsi_list_id);
 
+		if (!m_entry->vsi_list_info)
+			return ICE_ERR_NO_MEMORY;
+
 		/* If this entry was large action then the large action needs
 		 * to be updated to point to FWD to VSI list
 		 */
@@ -2224,6 +2227,7 @@ ice_vsi_uses_fltr(struct ice_fltr_mgmt_list_entry *fm_entry, u16 vsi_handle)
 	return ((fm_entry->fltr_info.fltr_act == ICE_FWD_TO_VSI &&
 		 fm_entry->fltr_info.vsi_handle == vsi_handle) ||
 		(fm_entry->fltr_info.fltr_act == ICE_FWD_TO_VSI_LIST &&
+		 fm_entry->vsi_list_info &&
 		 (test_bit(vsi_handle, fm_entry->vsi_list_info->vsi_map))));
 }
 
@@ -2296,14 +2300,12 @@ ice_add_to_vsi_fltr_list(struct ice_hw *hw, u16 vsi_handle,
 		return ICE_ERR_PARAM;
 
 	list_for_each_entry(fm_entry, lkup_list_head, list_entry) {
-		struct ice_fltr_info *fi;
-
-		fi = &fm_entry->fltr_info;
-		if (!fi || !ice_vsi_uses_fltr(fm_entry, vsi_handle))
+		if (!ice_vsi_uses_fltr(fm_entry, vsi_handle))
 			continue;
 
 		status = ice_add_entry_to_vsi_fltr_list(hw, vsi_handle,
-							vsi_list_head, fi);
+							vsi_list_head,
+							&fm_entry->fltr_info);
 		if (status)
 			return status;
 	}
@@ -2626,7 +2628,7 @@ ice_remove_vsi_lkup_fltr(struct ice_hw *hw, u16 vsi_handle,
 					  &remove_list_head);
 	mutex_unlock(rule_lock);
 	if (status)
-		return;
+		goto free_fltr_list;
 
 	switch (lkup) {
 	case ICE_SW_LKUP_MAC:
@@ -2649,6 +2651,7 @@ ice_remove_vsi_lkup_fltr(struct ice_hw *hw, u16 vsi_handle,
 		break;
 	}
 
+free_fltr_list:
 	list_for_each_entry_safe(fm_entry, tmp, &remove_list_head, list_entry) {
 		list_del(&fm_entry->list_entry);
 		devm_kfree(ice_hw_to_dev(hw), fm_entry);
drivers/net/ethernet/intel/ice/ice_txrx.c +1 -1
index af5b7f33db9a..0f2544c420ac 100644
@@ -2421,7 +2421,7 @@ ice_xmit_frame_ring(struct sk_buff *skb, struct ice_ring *tx_ring)
 	/* allow CONTROL frames egress from main VSI if FW LLDP disabled */
 	if (unlikely(skb->priority == TC_PRIO_CONTROL &&
 		     vsi->type == ICE_VSI_PF &&
-		     vsi->port_info->is_sw_lldp))
+		     vsi->port_info->qos_cfg.is_sw_lldp))
 		offload.cd_qw1 |= (u64)(ICE_TX_DESC_DTYPE_CTX |
 					ICE_TX_CTX_DESC_SWTCH_UPLINK <<
 					ICE_TXD_CTX_QW1_CMD_S);
drivers/net/ethernet/intel/ice/ice_type.h +10 -7
index 2226a291a394..1bed183d96a0 100644
@@ -493,6 +493,7 @@ struct ice_dcb_app_priority_table {
 #define ICE_TLV_STATUS_ERR	0x4
 #define ICE_APP_PROT_ID_FCOE	0x8906
 #define ICE_APP_PROT_ID_ISCSI	0x0cbc
+#define ICE_APP_PROT_ID_ISCSI_860 0x035c
 #define ICE_APP_PROT_ID_FIP	0x8914
 #define ICE_APP_SEL_ETHTYPE	0x1
 #define ICE_APP_SEL_TCPIP	0x2
@@ -514,6 +515,14 @@ struct ice_dcbx_cfg {
 #define ICE_DCBX_APPS_NON_WILLING	0x1
 };
 
+struct ice_qos_cfg {
+	struct ice_dcbx_cfg local_dcbx_cfg;	/* Oper/Local Cfg */
+	struct ice_dcbx_cfg desired_dcbx_cfg;	/* CEE Desired Cfg */
+	struct ice_dcbx_cfg remote_dcbx_cfg;	/* Peer Cfg */
+	u8 dcbx_status : 3;			/* see ICE_DCBX_STATUS_DIS */
+	u8 is_sw_lldp : 1;
+};
+
 struct ice_port_info {
 	struct ice_sched_node *root;	/* Root Node per Port */
 	struct ice_hw *hw;		/* back pointer to HW instance */
@@ -537,13 +546,7 @@ struct ice_port_info {
 		sib_head[ICE_MAX_TRAFFIC_CLASS][ICE_AQC_TOPO_MAX_LEVEL_NUM];
 	/* List contain profile ID(s) and other params per layer */
 	struct list_head rl_prof_list[ICE_AQC_TOPO_MAX_LEVEL_NUM];
-	struct ice_dcbx_cfg local_dcbx_cfg;	/* Oper/Local Cfg */
-	/* DCBX info */
-	struct ice_dcbx_cfg remote_dcbx_cfg;	/* Peer Cfg */
-	struct ice_dcbx_cfg desired_dcbx_cfg;	/* CEE Desired Cfg */
-	/* LLDP/DCBX Status */
-	u8 dcbx_status:3;		/* see ICE_DCBX_STATUS_DIS */
-	u8 is_sw_lldp:1;
+	struct ice_qos_cfg qos_cfg;
 	u8 is_vf:1;
 };
 
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c +29 -7
index b42396df3111..0469f53dfb99 100644
@@ -184,6 +184,28 @@ mlx5_tc_ct_entry_has_nat(struct mlx5_ct_entry *entry)
 	return !!(entry->tuple_nat_node.next);
 }
 
+static int
+mlx5_get_label_mapping(struct mlx5_tc_ct_priv *ct_priv,
+		       u32 *labels, u32 *id)
+{
+	if (!memchr_inv(labels, 0, sizeof(u32) * 4)) {
+		*id = 0;
+		return 0;
+	}
+
+	if (mapping_add(ct_priv->labels_mapping, labels, id))
+		return -EOPNOTSUPP;
+
+	return 0;
+}
+
+static void
+mlx5_put_label_mapping(struct mlx5_tc_ct_priv *ct_priv, u32 id)
+{
+	if (id)
+		mapping_remove(ct_priv->labels_mapping, id);
+}
+
 static int
 mlx5_tc_ct_rule_to_tuple(struct mlx5_ct_tuple *tuple, struct flow_rule *rule)
 {
@@ -435,7 +457,7 @@ mlx5_tc_ct_entry_del_rule(struct mlx5_tc_ct_priv *ct_priv,
 	mlx5_tc_rule_delete(netdev_priv(ct_priv->netdev), zone_rule->rule, attr);
 	mlx5e_mod_hdr_detach(ct_priv->dev,
 			     ct_priv->mod_hdr_tbl, zone_rule->mh);
-	mapping_remove(ct_priv->labels_mapping, attr->ct_attr.ct_labels_id);
+	mlx5_put_label_mapping(ct_priv, attr->ct_attr.ct_labels_id);
 	kfree(attr);
 }
 
@@ -638,8 +660,8 @@ mlx5_tc_ct_entry_create_mod_hdr(struct mlx5_tc_ct_priv *ct_priv,
 	if (!meta)
 		return -EOPNOTSUPP;
 
-	err = mapping_add(ct_priv->labels_mapping, meta->ct_metadata.labels,
-			  &attr->ct_attr.ct_labels_id);
+	err = mlx5_get_label_mapping(ct_priv, meta->ct_metadata.labels,
+				     &attr->ct_attr.ct_labels_id);
 	if (err)
 		return -EOPNOTSUPP;
 	if (nat) {
@@ -675,7 +697,7 @@ mlx5_tc_ct_entry_create_mod_hdr(struct mlx5_tc_ct_priv *ct_priv,
 
 err_mapping:
 	dealloc_mod_hdr_actions(&mod_acts);
-	mapping_remove(ct_priv->labels_mapping, attr->ct_attr.ct_labels_id);
+	mlx5_put_label_mapping(ct_priv, attr->ct_attr.ct_labels_id);
 	return err;
 }
 
@@ -743,7 +765,7 @@ mlx5_tc_ct_entry_add_rule(struct mlx5_tc_ct_priv *ct_priv,
 err_rule:
 	mlx5e_mod_hdr_detach(ct_priv->dev,
 			     ct_priv->mod_hdr_tbl, zone_rule->mh);
-	mapping_remove(ct_priv->labels_mapping, attr->ct_attr.ct_labels_id);
+	mlx5_put_label_mapping(ct_priv, attr->ct_attr.ct_labels_id);
 err_mod_hdr:
 	kfree(attr);
 err_attr:
@@ -1198,7 +1220,7 @@ void mlx5_tc_ct_match_del(struct mlx5_tc_ct_priv *priv, struct mlx5_ct_attr *ct_
 	if (!priv || !ct_attr->ct_labels_id)
 		return;
 
-	mapping_remove(priv->labels_mapping, ct_attr->ct_labels_id);
+	mlx5_put_label_mapping(priv, ct_attr->ct_labels_id);
 }
 
 int
@@ -1276,7 +1298,7 @@ mlx5_tc_ct_match_add(struct mlx5_tc_ct_priv *priv,
 		ct_labels[1] = key->ct_labels[1] & mask->ct_labels[1];
 		ct_labels[2] = key->ct_labels[2] & mask->ct_labels[2];
 		ct_labels[3] = key->ct_labels[3] & mask->ct_labels[3];
-		if (mapping_add(priv->labels_mapping, ct_labels, &ct_attr->ct_labels_id))
+		if (mlx5_get_label_mapping(priv, ct_labels, &ct_attr->ct_labels_id))
 			return -EOPNOTSUPP;
 		mlx5e_tc_match_to_reg_match(spec, LABELS_TO_REG, ct_attr->ct_labels_id,
 					    MLX5_CT_LABELS_MASK);
drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c +11 -11
index bcd05457647e..986f0d86e94d 100644
@@ -744,11 +744,11 @@ static int get_fec_supported_advertised(struct mlx5_core_dev *dev,
 	return 0;
 }
 
-static void ptys2ethtool_supported_advertised_port(struct ethtool_link_ksettings *link_ksettings,
-						   u32 eth_proto_cap,
-						   u8 connector_type, bool ext)
+static void ptys2ethtool_supported_advertised_port(struct mlx5_core_dev *mdev,
+						   struct ethtool_link_ksettings *link_ksettings,
+						   u32 eth_proto_cap, u8 connector_type)
 {
-	if ((!connector_type && !ext) || connector_type >= MLX5E_CONNECTOR_TYPE_NUMBER) {
+	if (!MLX5_CAP_PCAM_FEATURE(mdev, ptys_connector_type)) {
 		if (eth_proto_cap & (MLX5E_PROT_MASK(MLX5E_10GBASE_CR)
 				   | MLX5E_PROT_MASK(MLX5E_10GBASE_SR)
 				   | MLX5E_PROT_MASK(MLX5E_40GBASE_CR4)
@@ -884,9 +884,9 @@ static int ptys2connector_type[MLX5E_CONNECTOR_TYPE_NUMBER] = {
 		[MLX5E_PORT_OTHER]              = PORT_OTHER,
 	};
 
-static u8 get_connector_port(u32 eth_proto, u8 connector_type, bool ext)
+static u8 get_connector_port(struct mlx5_core_dev *mdev, u32 eth_proto, u8 connector_type)
 {
-	if ((connector_type || ext) && connector_type < MLX5E_CONNECTOR_TYPE_NUMBER)
+	if (MLX5_CAP_PCAM_FEATURE(mdev, ptys_connector_type))
 		return ptys2connector_type[connector_type];
 
 	if (eth_proto &
@@ -987,11 +987,11 @@ int mlx5e_ethtool_get_link_ksettings(struct mlx5e_priv *priv,
 			 data_rate_oper, link_ksettings);
 
 	eth_proto_oper = eth_proto_oper ? eth_proto_oper : eth_proto_cap;
-
-	link_ksettings->base.port = get_connector_port(eth_proto_oper,
-						       connector_type, ext);
-	ptys2ethtool_supported_advertised_port(link_ksettings, eth_proto_admin,
-					       connector_type, ext);
+	connector_type = connector_type < MLX5E_CONNECTOR_TYPE_NUMBER ?
+			 connector_type : MLX5E_PORT_UNKNOWN;
+	link_ksettings->base.port = get_connector_port(mdev, eth_proto_oper, connector_type);
+	ptys2ethtool_supported_advertised_port(mdev, link_ksettings, eth_proto_admin,
+					       connector_type);
 	get_lp_advertising(mdev, eth_proto_lp, link_ksettings);
 
 	if (an_status == MLX5_AN_COMPLETE)
drivers/net/ethernet/mellanox/mlx5/core/eq.c +12 -1
index 8ebfe782f95e..ccd53a7a2b80 100644
@@ -926,13 +926,24 @@ void mlx5_core_eq_free_irqs(struct mlx5_core_dev *dev)
 	mutex_unlock(&table->lock);
 }
 
+#ifdef CONFIG_INFINIBAND_ON_DEMAND_PAGING
+#define MLX5_MAX_ASYNC_EQS 4
+#else
+#define MLX5_MAX_ASYNC_EQS 3
+#endif
+
 int mlx5_eq_table_create(struct mlx5_core_dev *dev)
 {
 	struct mlx5_eq_table *eq_table = dev->priv.eq_table;
+	int num_eqs = MLX5_CAP_GEN(dev, max_num_eqs) ?
+		      MLX5_CAP_GEN(dev, max_num_eqs) :
+		      1 << MLX5_CAP_GEN(dev, log_max_eq);
 	int err;
 
 	eq_table->num_comp_eqs =
-		mlx5_irq_get_num_comp(eq_table->irq_table);
+		min_t(int,
+		      mlx5_irq_get_num_comp(eq_table->irq_table),
+		      num_eqs - MLX5_MAX_ASYNC_EQS);
 
 	err = create_async_eqs(dev);
 	if (err) {
drivers/net/ethernet/mellanox/mlxsw/spectrum.h +15 -0
index 74b3959b36d4..3e7576e671df 100644
@@ -20,6 +20,7 @@
 #include <net/red.h>
 #include <net/vxlan.h>
 #include <net/flow_offload.h>
+#include <net/inet_ecn.h>
 
 #include "port.h"
 #include "core.h"
@@ -345,6 +346,20 @@ struct mlxsw_sp_port_type_speed_ops {
 	u32 (*ptys_proto_cap_masked_get)(u32 eth_proto_cap);
 };
 
+static inline u8 mlxsw_sp_tunnel_ecn_decap(u8 outer_ecn, u8 inner_ecn,
+					   bool *trap_en)
+{
+	bool set_ce = false;
+
+	*trap_en = !!__INET_ECN_decapsulate(outer_ecn, inner_ecn, &set_ce);
+	if (set_ce)
+		return INET_ECN_CE;
+	else if (outer_ecn == INET_ECN_ECT_1 && inner_ecn == INET_ECN_ECT_0)
+		return INET_ECN_ECT_1;
+	else
+		return inner_ecn;
+}
+
 static inline struct net_device *
 mlxsw_sp_bridge_vxlan_dev_find(struct net_device *br_dev)
 {
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c +3 -4
index a8525992528f..3262a2c15ea7 100644
@@ -371,12 +371,11 @@ static int mlxsw_sp_ipip_ecn_decap_init_one(struct mlxsw_sp *mlxsw_sp,
 					    u8 inner_ecn, u8 outer_ecn)
 {
 	char tidem_pl[MLXSW_REG_TIDEM_LEN];
-	bool trap_en, set_ce = false;
 	u8 new_inner_ecn;
+	bool trap_en;
 
-	trap_en = __INET_ECN_decapsulate(outer_ecn, inner_ecn, &set_ce);
-	new_inner_ecn = set_ce ? INET_ECN_CE : inner_ecn;
-
+	new_inner_ecn = mlxsw_sp_tunnel_ecn_decap(outer_ecn, inner_ecn,
+						  &trap_en);
 	mlxsw_reg_tidem_pack(tidem_pl, outer_ecn, inner_ecn, new_inner_ecn,
 			     trap_en, trap_en ? MLXSW_TRAP_ID_DECAP_ECN0 : 0);
 	return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(tidem), tidem_pl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c +3 -4
index 54d3e7dcd303..a2d1b95d1f58 100644
@@ -909,12 +909,11 @@ static int __mlxsw_sp_nve_ecn_decap_init(struct mlxsw_sp *mlxsw_sp,
 					 u8 inner_ecn, u8 outer_ecn)
 {
 	char tndem_pl[MLXSW_REG_TNDEM_LEN];
-	bool trap_en, set_ce = false;
 	u8 new_inner_ecn;
+	bool trap_en;
 
-	trap_en = !!__INET_ECN_decapsulate(outer_ecn, inner_ecn, &set_ce);
-	new_inner_ecn = set_ce ? INET_ECN_CE : inner_ecn;
-
+	new_inner_ecn = mlxsw_sp_tunnel_ecn_decap(outer_ecn, inner_ecn,
+						  &trap_en);
 	mlxsw_reg_tndem_pack(tndem_pl, outer_ecn, inner_ecn, new_inner_ecn,
 			     trap_en, trap_en ? MLXSW_TRAP_ID_DECAP_ECN0 : 0);
 	return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(tndem), tndem_pl);
drivers/net/ethernet/myricom/myri10ge/myri10ge.c +1 -1
index 1634ca6d4a8f..c84c8bf2bc20 100644
@@ -2897,7 +2897,7 @@ static netdev_tx_t myri10ge_sw_tso(struct sk_buff *skb,
 			dev_kfree_skb_any(curr);
 			if (segs != NULL) {
 				curr = segs;
-				segs = segs->next;
+				segs = next;
 				curr->next = NULL;
 				dev_kfree_skb_any(segs);
 			}
drivers/net/ethernet/netronome/nfp/bpf/cmsg.c +1 -0
index 0e2db6ea79e9..2ec62c8d86e1 100644
@@ -454,6 +454,7 @@ void nfp_bpf_ctrl_msg_rx(struct nfp_app *app, struct sk_buff *skb)
 			dev_consume_skb_any(skb);
 		else
 			dev_kfree_skb_any(skb);
+		return;
 	}
 
 	nfp_ccm_rx(&bpf->ccm, skb);
drivers/net/ethernet/netronome/nfp/flower/main.h +8 -0
index caf12eec9945..56833a41f3d2 100644
@@ -190,6 +190,7 @@ struct nfp_fl_internal_ports {
  * @qos_rate_limiters:	Current active qos rate limiters
  * @qos_stats_lock:	Lock on qos stats updates
  * @pre_tun_rule_cnt:	Number of pre-tunnel rules offloaded
+ * @merge_table:	Hash table to store merged flows
  */
 struct nfp_flower_priv {
 	struct nfp_app *app;
@@ -223,6 +224,7 @@ struct nfp_flower_priv {
 	unsigned int qos_rate_limiters;
 	spinlock_t qos_stats_lock; /* Protect the qos stats */
 	int pre_tun_rule_cnt;
+	struct rhashtable merge_table;
 };
 
 /**
@@ -350,6 +352,12 @@ struct nfp_fl_payload_link {
 };
 
 extern const struct rhashtable_params nfp_flower_table_params;
+extern const struct rhashtable_params merge_table_params;
+
+struct nfp_merge_info {
+	u64 parent_ctx;
+	struct rhash_head ht_node;
+};
 
 struct nfp_fl_stats_frame {
 	__be32 stats_con_id;
drivers/net/ethernet/netronome/nfp/flower/metadata.c +15 -1
index aa06fcb38f8b..327bb56b3ef5 100644
@@ -490,6 +490,12 @@ const struct rhashtable_params nfp_flower_table_params = {
 	.automatic_shrinking	= true,
 };
 
+const struct rhashtable_params merge_table_params = {
+	.key_offset	= offsetof(struct nfp_merge_info, parent_ctx),
+	.head_offset	= offsetof(struct nfp_merge_info, ht_node),
+	.key_len	= sizeof(u64),
+};
+
 int nfp_flower_metadata_init(struct nfp_app *app, u64 host_ctx_count,
 			     unsigned int host_num_mems)
 {
@@ -506,6 +512,10 @@ int nfp_flower_metadata_init(struct nfp_app *app, u64 host_ctx_count,
 	if (err)
 		goto err_free_flow_table;
 
+	err = rhashtable_init(&priv->merge_table, &merge_table_params);
+	if (err)
+		goto err_free_stats_ctx_table;
+
 	get_random_bytes(&priv->mask_id_seed, sizeof(priv->mask_id_seed));
 
 	/* Init ring buffer and unallocated mask_ids. */
@@ -513,7 +523,7 @@ int nfp_flower_metadata_init(struct nfp_app *app, u64 host_ctx_count,
 		kmalloc_array(NFP_FLOWER_MASK_ENTRY_RS,
 			      NFP_FLOWER_MASK_ELEMENT_RS, GFP_KERNEL);
 	if (!priv->mask_ids.mask_id_free_list.buf)
-		goto err_free_stats_ctx_table;
+		goto err_free_merge_table;
 
 	priv->mask_ids.init_unallocated = NFP_FLOWER_MASK_ENTRY_RS - 1;
 
@@ -550,6 +560,8 @@ int nfp_flower_metadata_init(struct nfp_app *app, u64 host_ctx_count,
 	kfree(priv->mask_ids.last_used);
 err_free_mask_id:
 	kfree(priv->mask_ids.mask_id_free_list.buf);
+err_free_merge_table:
+	rhashtable_destroy(&priv->merge_table);
 err_free_stats_ctx_table:
 	rhashtable_destroy(&priv->stats_ctx_table);
 err_free_flow_table:
@@ -568,6 +580,8 @@ void nfp_flower_metadata_cleanup(struct nfp_app *app)
 				    nfp_check_rhashtable_empty, NULL);
 	rhashtable_free_and_destroy(&priv->stats_ctx_table,
 				    nfp_check_rhashtable_empty, NULL);
+	rhashtable_free_and_destroy(&priv->merge_table,
+				    nfp_check_rhashtable_empty, NULL);
 	kvfree(priv->stats);
 	kfree(priv->mask_ids.mask_id_free_list.buf);
 	kfree(priv->mask_ids.last_used);
drivers/net/ethernet/netronome/nfp/flower/offload.c +46 -2

89 lines not on this page · raw message

drivers/net/geneve.c +20 -4
index 1426bfc009bc..abd37f26af68 100644
@@ -907,8 +907,16 @@ static int geneve_xmit_skb(struct sk_buff *skb, struct net_device *dev,
 
 		info = skb_tunnel_info(skb);
 		if (info) {
-			info->key.u.ipv4.dst = fl4.saddr;
-			info->key.u.ipv4.src = fl4.daddr;
+			struct ip_tunnel_info *unclone;
+
+			unclone = skb_tunnel_info_unclone(skb);
+			if (unlikely(!unclone)) {
+				dst_release(&rt->dst);
+				return -ENOMEM;
+			}
+
+			unclone->key.u.ipv4.dst = fl4.saddr;
+			unclone->key.u.ipv4.src = fl4.daddr;
 		}
 
 		if (!pskb_may_pull(skb, ETH_HLEN)) {
@@ -992,8 +1000,16 @@ static int geneve6_xmit_skb(struct sk_buff *skb, struct net_device *dev,
 		struct ip_tunnel_info *info = skb_tunnel_info(skb);
 
 		if (info) {
-			info->key.u.ipv6.dst = fl6.saddr;
-			info->key.u.ipv6.src = fl6.daddr;
+			struct ip_tunnel_info *unclone;
+
+			unclone = skb_tunnel_info_unclone(skb);
+			if (unlikely(!unclone)) {
+				dst_release(dst);
+				return -ENOMEM;
+			}
+
+			unclone->key.u.ipv6.dst = fl6.saddr;
+			unclone->key.u.ipv6.src = fl6.daddr;
 		}
 
 		if (!pskb_may_pull(skb, ETH_HLEN)) {
drivers/net/ieee802154/atusb.c +1 -0
index 0dd0ba915ab9..23ee0b14cbfa 100644
@@ -365,6 +365,7 @@ static int atusb_alloc_urbs(struct atusb *atusb, int n)
 			return -ENOMEM;
 		}
 		usb_anchor_urb(urb, &atusb->idle_urbs);
+		usb_free_urb(urb);
 		n--;
 	}
 	return 0;
drivers/net/phy/bcm-phy-lib.c +10 -3
index ef6825b30323..b72e11ca974f 100644
@@ -328,7 +328,7 @@ EXPORT_SYMBOL_GPL(bcm_phy_enable_apd);
 
 int bcm_phy_set_eee(struct phy_device *phydev, bool enable)
 {
-	int val;
+	int val, mask = 0;
 
 	/* Enable EEE at PHY level */
 	val = phy_read_mmd(phydev, MDIO_MMD_AN, BRCM_CL45VEN_EEE_CONTROL);
@@ -347,10 +347,17 @@ int bcm_phy_set_eee(struct phy_device *phydev, bool enable)
 	if (val < 0)
 		return val;
 
+	if (linkmode_test_bit(ETHTOOL_LINK_MODE_1000baseT_Full_BIT,
+			      phydev->supported))
+		mask |= MDIO_EEE_1000T;
+	if (linkmode_test_bit(ETHTOOL_LINK_MODE_100baseT_Full_BIT,
+			      phydev->supported))
+		mask |= MDIO_EEE_100TX;
+
 	if (enable)
-		val |= (MDIO_EEE_100TX | MDIO_EEE_1000T);
+		val |= mask;
 	else
-		val &= ~(MDIO_EEE_100TX | MDIO_EEE_1000T);
+		val &= ~mask;
 
 	phy_write_mmd(phydev, MDIO_MMD_AN, BCM_CL45VEN_EEE_ADV, (u32)val);
 
drivers/net/tun.c +48 -0

66 lines not on this page · raw message

drivers/net/usb/hso.c +12 -21
index 2bb28db89432..d18642a8144c 100644
@@ -611,7 +611,7 @@ static struct hso_serial *get_serial_by_index(unsigned index)
 	return serial;
 }
 
-static int get_free_serial_index(void)
+static int obtain_minor(struct hso_serial *serial)
 {
 	int index;
 	unsigned long flags;
@@ -619,8 +619,10 @@ static int get_free_serial_index(void)
 	spin_lock_irqsave(&serial_table_lock, flags);
 	for (index = 0; index < HSO_SERIAL_TTY_MINORS; index++) {
 		if (serial_table[index] == NULL) {
+			serial_table[index] = serial->parent;
+			serial->minor = index;
 			spin_unlock_irqrestore(&serial_table_lock, flags);
-			return index;
+			return 0;
 		}
 	}
 	spin_unlock_irqrestore(&serial_table_lock, flags);
@@ -629,15 +631,12 @@ static int get_free_serial_index(void)
 	return -1;
 }
[… more lines in the raw message]

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

drivers/net/vxlan.c +14 -4
index 50cb8f045a1e..d3b698d9e2e6 100644

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

drivers/net/wan/hdlc_fr.c +3 -2
index 409e5a7ad8e2..857912ae84d7 100644

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

drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c +1 -1
index 6d19de3058d2..cbde21e772b1 100644

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

drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c +1 -30
index 81ef4fc8d783..ec1d6025081d 100644

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

drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info.c +1 -2
index 13fe9c00d7e8..f65d363cc892 100644

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

drivers/net/wireless/intel/iwlwifi/pcie/trans-gen2.c +35 -0
index 91ec9379c061..4c3ca2a37696 100644

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

drivers/of/property.c +10 -1
index 408a7b5f06a9..1d7d24e7094b 100644

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

drivers/ras/cec.c +12 -3
index ddecf25b5dd4..d7894f178bd4 100644

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

drivers/regulator/bd9571mwv-regulator.c +2 -2
index e690c2ce5b3c..25e33028871c 100644

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

drivers/remoteproc/qcom_pil_info.c +1 -1
index 5521c4437ffa..7c007dd7b200 100644

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

drivers/scsi/pm8001/pm8001_hwi.c +4 -4
index 95ba1bd16db9..c4705269e39f 100644

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

drivers/scsi/ufs/ufshcd.c +14 -17
index 97d9d5d99adc..4215d9a8e5de 100644

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

drivers/soc/fsl/qbman/qman.c +1 -1
index 9888a7061873..feb97470699d 100644

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

drivers/target/iscsi/iscsi_target.c +1 -2
index 518fac4864cf..a237f1cf9bd6 100644

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

drivers/thunderbolt/retimer.c +2 -2
index 620bcf586ee2..c44fad2b9fbb 100644

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

drivers/usb/usbip/stub_dev.c +9 -2
index 8f1de1fbbeed..d8d3892e5a69 100644

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

drivers/usb/usbip/usbip_common.h +3 -0
index 8be857a4fa13..a7e6ce96f62c 100644

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

drivers/usb/usbip/usbip_event.c +2 -0
index 5d88917c9631..086ca76dd053 100644

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

drivers/usb/usbip/vhci_hcd.c +1 -0
index a20a8380ca0c..4ba6bcdaa8e9 100644

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

drivers/usb/usbip/vhci_sysfs.c +25 -5
index e64ea314930b..ebc7be1d9820 100644

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

drivers/usb/usbip/vudc_dev.c +1 -0
index c8eeabdd9b56..2bc428f2e261 100644

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

drivers/usb/usbip/vudc_sysfs.c +5 -0
index 7383a543c6d1..f7633ee655a1 100644

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

drivers/vdpa/mlx5/core/mlx5_vdpa.h +4 -0
index 08f742fd2409..b6cc53ba980c 100644

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

drivers/vdpa/mlx5/net/mlx5_vnet.c +24 -16
index 5a86ede36c1c..65cfbd377130 100644

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

drivers/xen/events/events_base.c +6 -6
index 7bd03f6e0422..b91c19b90b8b 100644

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

fs/direct-io.c +3 -2
index d53fa92a1ab6..c64d4eb38995 100644

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

fs/hostfs/hostfs_kern.c +3 -4
index c070c0d8e3e9..d4e360234579 100644

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

fs/namei.c +4 -4
index 7af66d5a0c1b..4c9d0c36545d 100644

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

fs/ocfs2/aops.c +1 -10
index 3bfb4147895a..ad20403b383f 100644

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

fs/ocfs2/file.c +6 -2
index 85979e2214b3..8880071ee4ee 100644

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

include/linux/avf/virtchnl.h +0 -2
index 40bad71865ea..532bcbfc4716 100644

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

include/linux/mlx5/mlx5_ifc.h +6 -4
index 233352447b1a..cc9ee0776974 100644

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

include/linux/skmsg.h +6 -1
index fec0c5ac1c4f..82126d529798 100644

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

include/linux/virtio_net.h +2 -0
index 6b5fcfa1e555..98775d7fa696 100644

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

include/net/act_api.h +4 -8
index 89b42a1e4f88..2c88b8af3cdb 100644

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

include/net/netns/xfrm.h +3 -1
index 59f45b1e9dac..b59d73d529ba 100644

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

include/net/red.h +2 -2
index 9e6647c4ccd1..cc9f6b0d7f1e 100644

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

include/net/sock.h +9 -0
index 253202dcc5e6..261195598df3 100644

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

include/net/xfrm.h +2 -2
index b2a06f10b62c..c58a6d4eb610 100644

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

kernel/bpf/inode.c +1 -1
index dd4b7fd60ee7..6b14b4c4068c 100644

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

kernel/bpf/stackmap.c +10 -2
index 6e83bf8c080d..ebf60848d5eb 100644

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

kernel/bpf/verifier.c +5 -0
index 9a1aba2d0073..12cd2997f982 100644

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

kernel/gcov/clang.c +19 -10
index 8743150db2ac..c466c7fbdece 100644

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

kernel/locking/lockdep.c +1 -1
index 780012eb2f3f..eead7efbe7e5 100644

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

kernel/workqueue.c +1 -1
index 1d99c52cc99a..1e2ca744dadb 100644

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

mm/percpu-internal.h +1 -1
index 18b768ac7dca..095d7eaa0db4 100644

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

mm/percpu-stats.c +7 -2
index c8400a2adbc2..f6026dbcdf6b 100644

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

mm/percpu.c +7 -7
index ad7a37ee74ef..e12ab708fe15 100644

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

net/batman-adv/translation-table.c +2 -0
index 98a0aaaf0d50..a510f7f86a7d 100644

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

net/can/bcm.c +6 -4
index 0e5c37be4a2b..909b9e684e04 100644

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

net/can/isotp.c +7 -4
index ea1e227b8e54..d5780ab29e09 100644

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

net/can/raw.c +8 -6
index 6ec8aa1d0da4..95113b0898b2 100644

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

net/core/skmsg.c +5 -7
index 25cdbb20f3a0..923a1d0f84ca 100644

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

net/core/sock.c +3 -9
index 727ea1cc633c..c75c1e723a84 100644

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

net/core/xdp.c +2 -1
index d900cebc0acd..b8d7fa47d293 100644

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

net/dsa/dsa2.c +7 -1
index a04fd637b4cd..3ada338d7e08 100644

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

net/ethtool/eee.c +2 -2
index 901b7de941ab..e10bfcc07853 100644

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

net/hsr/hsr_device.c +1 -0
index ab953a1a0d6c..6f4c34b6a5d6 100644

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

net/hsr/hsr_forward.c +0 -6
index cadfccd7876e..b4e06ae08834 100644

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

net/ieee802154/nl-mac.c +4 -3
index 6d091e419d3e..d19c40c684e8 100644

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

net/ieee802154/nl802154.c +19 -4
index 7c5a1aa5adb4..d1b6a9665b17 100644

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

net/ipv4/ah4.c +1 -1
index d99e1be94019..36ed85bf2ad5 100644

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

net/ipv4/esp4.c +1 -1
index a3271ec3e162..4b834bbf95e0 100644

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

net/ipv4/esp4_offload.c +14 -3
index 5bda5aeda579..5aa7344dbec7 100644

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

net/ipv4/udp.c +4 -0
index e37a2fa65c29..4a2fd286787c 100644

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

net/ipv6/ah6.c +1 -1
index 440080da805b..080ee7f44c64 100644

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

net/ipv6/esp6.c +1 -1
index 2b804fcebcc6..4071cb7c7a15 100644

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

net/ipv6/esp6_offload.c +14 -3
index 1ca516fb30e1..4af56affaafd 100644

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

net/ipv6/raw.c +1 -1
index 6e4ab80a3b94..00f133a55ef7 100644

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

net/ipv6/route.c +5 -3
index fa276448d5a2..71e578ed8699 100644

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

net/mac80211/mlme.c +4 -1
index 3f483e84d5df..ef19c3399b89 100644

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

net/mac80211/tx.c +1 -1
index 88868bf30051..1d8526d89505 100644

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

net/mac802154/llsec.c +1 -1
index 585d33144c33..55550ead2ced 100644

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

net/mptcp/protocol.c +45 -0

45 lines not on this page · raw message

net/ncsi/ncsi-manage.c +13 -7
index a9cb355324d1..ffff8da707b8 100644

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

net/nfc/llcp_sock.c +10 -0
index d257ed3b732a..a3b46f888803 100644

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

net/openvswitch/conntrack.c +5 -9
index 4beb96139d77..a11b558813c1 100644

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

net/qrtr/qrtr.c +4 -1
index 45fbf5f4dcd2..93a7edcff11e 100644

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

net/rds/message.c +2 -1
index 071a261fdaab..799034e0f513 100644

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

net/sched/act_api.c +31 -17

48 lines not on this page · raw message

net/sched/cls_api.c +8 -8
index b2b7834c6cf8..9383dc29ead5 100644

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

net/sched/sch_teql.c +3 -0
index 2f1f0a378408..6af6b95bdb67 100644

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

net/sctp/ipv6.c +3 -4
index 8a58f42d6d19..c8074f435d3e 100644

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

net/tipc/crypto.c +2 -1
index 740ab9ae41a6..86eb6d679225 100644

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

net/tipc/socket.c +1 -1
index e795a8a2955b..5b18c6a46cfb 100644

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

net/wireless/nl80211.c +7 -3
index 535e34a84d65..daf3f29c7f0c 100644

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

net/wireless/scan.c +8 -6
index 3409f37d838b..345ef1c96768 100644

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

net/wireless/sme.c +1 -1
index 38df713f2e2e..060e365c8259 100644

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

net/xfrm/xfrm_compat.c +9 -3
index d8e8a11ca845..a20aec9d7393 100644

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

net/xfrm/xfrm_device.c +0 -2
index edf11893dbe8..6d6917b68856 100644

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

net/xfrm/xfrm_interface.c +3 -0
index 9b8e292a7c6a..e9ce23343f5c 100644

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

net/xfrm/xfrm_output.c +5 -5
index a7ab19353313..b81ca117dac7 100644

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

net/xfrm/xfrm_state.c +5 -5
index 2f1517827995..77499abd9f99 100644

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

security/selinux/ss/avtab.c +33 -68

101 lines not on this page · raw message

security/selinux/ss/avtab.h +1 -1
index 4c4445ca9118..f2eeb36265d1 100644

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

security/selinux/ss/conditional.c +6 -6
index 0b32f3ab025e..1ef74c085f2b 100644

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

security/selinux/ss/services.c +120 -37

157 lines not on this page · raw message

security/selinux/ss/sidtab.c +21 -0
index 5ee190bd30f5..656d50b09f76 100644

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

security/selinux/ss/sidtab.h +4 -0
index 80c744d07ad6..4eff0e49dcb2 100644

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

sound/drivers/aloop.c +8 -3
index c91356326699..2c5f7e905ab8 100644

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

sound/pci/hda/patch_conexant.c +1 -0
index a980a4eda51c..7aa9062f4f83 100644

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

sound/pci/hda/patch_realtek.c +16 -0
index 58946d069ee5..a7544b77d3f7 100644

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

sound/soc/codecs/wm8960.c +7 -1
index 660ec46eecf2..ceaf3bbb18e6 100644

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

sound/soc/intel/atom/sst-mfld-platform-pcm.c +3 -3
index 9e9b05883557..aa5dd590ddd5 100644

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

sound/soc/sof/intel/hda-dsp.c +11 -4
index c731b9bd60b4..85ec4361c8c4 100644

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

sound/soc/sunxi/sun4i-codec.c +5 -0
index 6c13cc84b3fb..2173991c13db 100644

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

tools/lib/bpf/ringbuf.c +1 -1
index 98537ff2679e..06cd709a3453 100644

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

tools/lib/bpf/xsk.c +37 -20

57 lines not on this page · raw message

tools/perf/builtin-inject.c +1 -1
index 0462dc8db2e3..5320ac1b1285 100644

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

tools/perf/util/block-info.c +3 -3
index 423ec69bda6c..5ecd4f401f32 100644

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

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

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

Tested-by Hulk Robot
#2 lore raw
In reply to Greg Kroah-Hartman
Quoted 4 lines · Greg Kroah-Hartman

I'm announcing the release of the 5.10.30 kernel.

All users of the 5.10 kernel series must upgrade.

Quoted 9 lines

The updated 5.10.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.10.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

Tested on arm64 and x86 for 5.10.30,

Kernel repo:
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
Branch: linux-5.10.y
Version: 5.10.30
Commit: 1e798745fa8ef91ffe4fd38d443f9d44b59e3cb3
Compiler: gcc version 7.3.0 (GCC)

arm64:
--------------------------------------------------------------------
Testcase Result Summary:
total: 5764
passed: 5764
failed: 0
timeout: 0
--------------------------------------------------------------------

x86:
--------------------------------------------------------------------
Testcase Result Summary:
total: 5764
passed: 5764
failed: 0
timeout: 0
--------------------------------------------------------------------