Linux 5.11.14
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.11.14 kernel.
All users of the 5.11 kernel series must upgrade.
The updated 5.11.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.11.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 | 4 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/arm64/boot/dts/marvell/armada-cp11x.dtsi | 6 arch/ia64/include/asm/ptrace.h | 8 arch/nds32/mm/cacheflush.c | 2 arch/parisc/include/asm/cmpxchg.h | 2 arch/powerpc/kernel/Makefile | 4 arch/powerpc/kernel/ptrace/Makefile | 4 arch/powerpc/kernel/ptrace/ptrace-decl.h | 14 arch/powerpc/kernel/ptrace/ptrace-fpu.c | 10 arch/powerpc/kernel/ptrace/ptrace-novsx.c | 8 arch/powerpc/kernel/ptrace/ptrace-view.c | 2 arch/s390/kernel/cpcmd.c | 6 arch/x86/include/asm/smp.h | 2 arch/x86/kernel/smpboot.c | 26 - arch/x86/kernel/traps.c | 4 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/qcom/camcc-sc7180.c | 50 +- drivers/clk/socfpga/clk-gate.c | 2 drivers/gpio/gpiolib.c | 12 drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 2 drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu7_hwmgr.c | 3 drivers/gpu/drm/i915/display/intel_acpi.c | 22 + drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 6 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c | 4 drivers/gpu/drm/msm/msm_drv.c | 1 drivers/gpu/drm/radeon/radeon_ttm.c | 4 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/i40e/i40e_xsk.c | 4 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/dev.c | 4 drivers/net/ethernet/mellanox/mlx5/core/en.h | 1 drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c | 36 + drivers/net/ethernet/mellanox/mlx5/core/en/txrx.h | 6 drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_rx.c | 18 drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c | 22 - drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 21 + drivers/net/ethernet/mellanox/mlx5/core/en_rep.c | 5 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/platform/x86/intel-hid.c | 16 drivers/ras/cec.c | 15 drivers/regulator/bd9571mwv-regulator.c | 4 drivers/remoteproc/pru_rproc.c | 2 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/cifs/Kconfig | 3 fs/cifs/Makefile | 5 fs/cifs/cifsfs.c | 3 fs/cifs/connect.c | 17 fs/direct-io.c | 5 fs/file.c | 21 - 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 include/uapi/linux/can.h | 2 include/uapi/linux/rfkill.h | 80 +++- 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 | 100 ++--- net/ncsi/ncsi-manage.c | 20 - net/nfc/llcp_sock.c | 10 net/openvswitch/conntrack.c | 8 net/qrtr/qrtr.c | 5 net/rds/message.c | 3 net/rfkill/core.c | 7 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 224 files changed, 2058 insertions(+), 1018 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()
Alex Deucher (1):
drm/amdgpu/smu7: fix CAC setting on TOPAZ
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
Christian Brauner (1):
file: fix close_range() for unshare+cloexec
Christophe Leroy (2):
powerpc/vdso: Make sure vdso_wrapper.o is rebuilt everytime vdso.so is rebuilt powerpc/ptrace: Don't return error when getting/setting FP regs without CONFIG_PPC_FPU_REGS
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 Baryshkov (1):
drm/msm: a6xx: fix version check for the A650 SQE microcode
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 (3):
vdpa/mlx5: Fix suspend/resume index restoration net/mlx5: Fix HW spec violation configuring uplink 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.11.14
Gregory CLEMENT (1):
Revert "arm64: dts: marvell: armada-cp110: Switch to per-port SATA interrupts"
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 (2):
ASoC: intel: atom: Stop advertising non working S24LE support platform/x86: intel-hid: Fix spurious wakeups caused by tablet-mode events during suspend
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 (6):
rfkill: revert back to old userspace API by default
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
Kalyan Thota (1):
drm/msm/disp/dpu1: program 3d_merge only if block is attached
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()
Maciek Borzecki (1):
cifs: escape spaces in share names
Magnus Karlsson (1):
i40e: fix receiving of single packets in xsk zero-copy mode
Maor Dickman (1):
net/mlx5: Delete auxiliary bus driver eth-rep first
Marc Kleine-Budde (2):
can: uapi: can.h: mark union inside struct can_frame packed
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 (3):
net: let skb_orphan_partial wake-up waiters.
mptcp: forbit mcast-related sockopt on MPTCP sockets
mptcp: revert "mptcp: provide subflow aware release function"
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
Rui Salvaterra (1):
ARM: dts: turris-omnia: fix hardware buffer management
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 Prasad N (1):
cifs: On cifs_reconnect, resolve the hostname again.
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
Suman Anna (1):
remoteproc: pru: Fix firmware loading crashes on K3 SoCs
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
Taniya Das (1):
clk: qcom: camcc: Update the clock ops for the SC7180
Tariq Toukan (1):
net/mlx5e: Guarantee room for XSK wakeup NOP on async ICOSQ
Tetsuo Handa (1):
batman-adv: initialize "struct batadv_tvlv_tt_vlan_data"->reserved field
Thomas Tai (1):
x86/traps: Correct exc_general_protection() and math_error() return paths
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
Zqiang (1):
workqueue: Move the position of debug_work_activate() in __queue_work()
xinhui pan (2):
drm/radeon: Fix size overflow
drm/amdgpu: Fix size overflow
周琰杰 (Zhou Yanjie) (1):
I2C: JZ4780: Fix bug for Ingenic X1000.
Greg Kroah-Hartman
maintainerDocumentation/devicetree/bindings/net/ethernet-controller.yaml +1 -1
@@ -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
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 11 -SUBLEVEL = 13 +SUBLEVEL = 14 EXTRAVERSION = NAME = 💕 Valentine's Day Edition 💕
arch/arm/boot/dts/armada-385-turris-omnia.dts +3 -1
@@ -32,7 +32,8 @@ soc { ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000 MBUS_ID(0x01, 0x1d) 0 0xfff00000 0x100000 MBUS_ID(0x09, 0x19) 0 0xf1100000 0x10000 - MBUS_ID(0x09, 0x15) 0 0xf1110000 0x10000>; + MBUS_ID(0x09, 0x15) 0 0xf1110000 0x10000 + MBUS_ID(0x0c, 0x04) 0 0xf1200000 0x100000>; internal-regs {
@@ -389,6 +390,7 @@ &mdio { phy1: ethernet-phy@1 { compatible = "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
@@ -433,6 +433,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"; };
@@ -442,5 +443,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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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/arm64/boot/dts/marvell/armada-cp11x.dtsi +3 -3
@@ -300,9 +300,11 @@ CP11X_LABEL(usb3_1): usb@510000 { }; CP11X_LABEL(sata0): sata@540000 { - compatible = "marvell,armada-8k-ahci"; + compatible = "marvell,armada-8k-ahci", + "generic-ahci"; reg = <0x540000 0x30000>; dma-coherent; + interrupts = <107 IRQ_TYPE_LEVEL_HIGH>; clocks = <&CP11X_LABEL(clk) 1 15>, <&CP11X_LABEL(clk) 1 16>; #address-cells = <1>;
@@ -310,12 +312,10 @@ CP11X_LABEL(sata0): sata@540000 { status = "disabled"; sata-port@0 { - interrupts = <109 IRQ_TYPE_LEVEL_HIGH>; reg = <0>; }; sata-port@1 { - interrupts = <107 IRQ_TYPE_LEVEL_HIGH>; reg = <1>; }; };
arch/ia64/include/asm/ptrace.h +1 -7
@@ -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
@@ -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
@@ -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/powerpc/kernel/Makefile +4 -0
@@ -191,3 +191,7 @@ $(obj)/prom_init_check: $(src)/prom_init_check.sh $(obj)/prom_init.o FORCE targets += prom_init_check clean-files := vmlinux.lds + +# Force dependency (incbin is bad) +$(obj)/vdso32_wrapper.o : $(obj)/vdso32/vdso32.so.dbg +$(obj)/vdso64_wrapper.o : $(obj)/vdso64/vdso64.so.dbg
arch/powerpc/kernel/ptrace/Makefile +2 -2
@@ -6,11 +6,11 @@ CFLAGS_ptrace-view.o += -DUTS_MACHINE='"$(UTS_MACHINE)"' obj-y += ptrace.o ptrace-view.o -obj-$(CONFIG_PPC_FPU_REGS) += ptrace-fpu.o +obj-y += ptrace-fpu.o obj-$(CONFIG_COMPAT) += ptrace32.o obj-$(CONFIG_VSX) += ptrace-vsx.o ifneq ($(CONFIG_VSX),y) -obj-$(CONFIG_PPC_FPU_REGS) += ptrace-novsx.o +obj-y += ptrace-novsx.o endif obj-$(CONFIG_ALTIVEC) += ptrace-altivec.o obj-$(CONFIG_SPE) += ptrace-spe.o
arch/powerpc/kernel/ptrace/ptrace-decl.h +0 -14
@@ -165,22 +165,8 @@ int ptrace_put_reg(struct task_struct *task, int regno, unsigned long data);extern const struct user_regset_view user_ppc_native_view;/* ptrace-fpu */ -#ifdef CONFIG_PPC_FPU_REGS int ptrace_get_fpr (struct task_struct *child,int index,unsigned long *data);int ptrace_put_fpr (struct task_struct *child,int index,unsigned long data); -#else -static inline int -ptrace_get_fpr (struct task_struct *child,int index,unsigned long *data) -{ -return -EIO ; -} - -static inline int -ptrace_put_fpr (struct task_struct *child,int index,unsigned long data) -{ -return -EIO ; -} -#endif /* ptrace-(no)adv */ void ppc_gethwdinfo (struct ppc_debug_info *dbginfo);
arch/powerpc/kernel/ptrace/ptrace-fpu.c +10 -0
@@ -8,32 +8,42 @@int ptrace_get_fpr (struct task_struct *child,int index,unsigned long *data) { +#ifdef CONFIG_PPC_FPU_REGS unsigned int fpidx = index -PT_FPR0 ; +#endif if (index >PT_FPSCR )return -EIO ; +#ifdef CONFIG_PPC_FPU_REGS flush_fp_to_thread (child);if (fpidx < (PT_FPSCR -PT_FPR0 ))memcpy (data, &child->thread.TS_FPR (fpidx),sizeof (long ));else *data = child->thread.fp_state.fpscr; +#else + *data =0 ; +#endif return 0 ; }int ptrace_put_fpr (struct task_struct *child,int index,unsigned long data) { +#ifdef CONFIG_PPC_FPU_REGS unsigned int fpidx = index -PT_FPR0 ; +#endif if (index >PT_FPSCR )return -EIO ; +#ifdef CONFIG_PPC_FPU_REGS flush_fp_to_thread (child);if (fpidx < (PT_FPSCR -PT_FPR0 ))memcpy (&child->thread.TS_FPR (fpidx), &data,sizeof (long ));else child->thread.fp_state.fpscr = data; +#endif return 0 ; }
arch/powerpc/kernel/ptrace/ptrace-novsx.c +8 -0
@@ -21,12 +21,16 @@int fpr_get (struct task_struct *target,const struct user_regset *regset,struct membuf to) { +#ifdef CONFIG_PPC_FPU_REGS BUILD_BUG_ON (offsetof(struct thread_fp_state , fpscr) != offsetof(struct thread_fp_state, fpr[32]));flush_fp_to_thread (target);return membuf_write (&to, &target->thread.fp_state,33 *sizeof (u64)); +#else +return membuf_write (&to, &empty_zero_page,33 *sizeof (u64)); +#endif }/*
@@ -46,6 +50,7 @@ int fpr_set(struct task_struct *target, const struct user_regset *regset, unsigned int pos, unsigned int count, const void *kbuf, const void __user *ubuf) { +#ifdef CONFIG_PPC_FPU_REGS BUILD_BUG_ON(offsetof(struct thread_fp_state, fpscr) != offsetof(struct thread_fp_state, fpr[32]));
@@ -53,4 +58,7 @@ int fpr_set(struct task_struct *target, const struct user_regset *regset,return user_regset_copyin (&pos, &count, &kbuf, &ubuf, &target->thread.fp_state,0 ,-1 ); +#else +return 0 ; +#endif }
arch/powerpc/kernel/ptrace/ptrace-view.c +0 -2
@@ -522,13 +522,11 @@ static const struct user_regset native_regsets[] = { .size = sizeof(long), .align = sizeof(long), .regset_get = gpr_get, .set = gpr_set }, -#ifdef CONFIG_PPC_FPU_REGS [REGSET_FPR] = { .core_note_type = NT_PRFPREG, .n = ELF_NFPREG, .size = sizeof(double), .align = sizeof(double), .regset_get = fpr_get, .set = fpr_set }, -#endif #ifdef CONFIG_ALTIVEC [REGSET_VMX] = { .core_note_type = NT_PPC_VMX, .n = 34,
arch/s390/kernel/cpcmd.c +4 -2
@@ -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; asmvolatile ( " diag %2,%0,0x8\n"
arch/x86/include/asm/smp.h +1 -1
@@ -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
@@ -1659,13 +1659,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
@@ -1734,11 +1738,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 (); } }
@@ -1749,11 +1750,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/kernel/traps.c +2 -2
@@ -556,7 +556,7 @@ DEFINE_IDTENTRY_ERRORCODE(exc_general_protection) tsk->thread.trap_nr =X86_TRAP_GP ;if (fixup_vdso_exception (regs,X86_TRAP_GP , error_code,0 )) -return ; + goto exit;show_signal (tsk,SIGSEGV ,"" , desc, regs, error_code);force_sig (SIGSEGV );
@@ -1057,7 +1057,7 @@ static void math_error(struct pt_regs *regs, int trapnr) goto exit;if (fixup_vdso_exception (regs, trapnr,0 ,0 )) -return ; + goto exit;force_sig_fault (SIGFPE , si_code, (void __user *)uprobe_get_trap_addr (regs));
arch/x86/kvm/mmu/mmu.c +7 -6
@@ -5985,6 +5985,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);
@@ -6005,20 +6006,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
@@ -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
@@ -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
@@ -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
@@ -544,9 +544,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
@@ -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
@@ -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/qcom/camcc-sc7180.c +25 -25
200 lines not on this page · raw message
drivers/clk/socfpga/clk-gate.c +1 -1
@@ -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
@@ -365,22 +365,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 ;
@@ -394,7 +390,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/amd/amdgpu/amdgpu_ttm.c +1 -1
@@ -907,7 +907,7 @@ static int amdgpu_ttm_tt_pin_userptr(struct ttm_bo_device *bdev,/* Allocate an SG array and squash pages into it */ r =sg_alloc_table_from_pages (ttm->sg, ttm->pages, ttm->num_pages,0 , - ttm->num_pages <<PAGE_SHIFT , + (u64 )ttm->num_pages <<PAGE_SHIFT ,GFP_KERNEL );if (r) goto release_sg;
drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu7_hwmgr.c +2 -1
@@ -1224,7 +1224,8 @@ static int smu7_enable_sclk_mclk_dpm(struct pp_hwmgr *hwmgr) (hwmgr->chip_id == CHIP_POLARIS10) || (hwmgr->chip_id == CHIP_POLARIS11) || (hwmgr->chip_id == CHIP_POLARIS12) || - (hwmgr->chip_id == CHIP_TONGA)) + (hwmgr->chip_id == CHIP_TONGA) || + (hwmgr->chip_id == CHIP_TOPAZ))PHM_WRITE_FIELD (hwmgr->device,MC_SEQ_CNTL_3 ,CAC_EN ,0x1 );
drivers/gpu/drm/i915/display/intel_acpi.c +20 -2
@@ -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/adreno/a6xx_gpu.c +3 -3
@@ -566,17 +566,17 @@ static bool a6xx_ucode_check_version(struct a6xx_gpu *a6xx_gpu, }else {/* * a650 tier targets don't need whereami but still need to be -* equal to or newer than 1.95 for other security fixes +* equal to or newer than 0.95 for other security fixes */ if (adreno_is_a650 (adreno_gpu)) { -if ((buf[0 ] &0xfff ) >=0x195 ) { +if ((buf[0 ] &0xfff ) >=0x095 ) { ret = true; goto out; }DRM_DEV_ERROR (&gpu->pdev->dev,"a650 SQE ucode is too old. Have version %x need at least %x\n" , - buf[0 ] &0xfff ,0x195 ); + buf[0 ] &0xfff ,0x095 ); }/*
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c +3 -1
@@ -496,7 +496,9 @@ static void dpu_hw_ctl_intf_cfg_v1(struct dpu_hw_ctl *ctx,DPU_REG_WRITE (c,CTL_TOP , mode_sel);DPU_REG_WRITE (c,CTL_INTF_ACTIVE , intf_active); -DPU_REG_WRITE (c,CTL_MERGE_3D_ACTIVE ,BIT (cfg->merge_3d -MERGE_3D_0 )); +if (cfg->merge_3d) +DPU_REG_WRITE (c,CTL_MERGE_3D_ACTIVE , +BIT (cfg->merge_3d -MERGE_3D_0 )); } static void dpu_hw_ctl_intf_cfg(struct dpu_hw_ctl *ctx,
drivers/gpu/drm/msm/msm_drv.c +1 -0
@@ -570,6 +570,7 @@ static int msm_drm_init(struct device *dev, const struct drm_driver *drv)kfree (priv); err_put_drm_dev:drm_dev_put (ddev); +platform_set_drvdata (pdev,NULL );return ret; }
drivers/gpu/drm/radeon/radeon_ttm.c +2 -2
@@ -365,7 +365,7 @@ static int radeon_ttm_tt_pin_userptr(struct ttm_bo_device *bdev, struct ttm_tt *if (gtt->userflags &RADEON_GEM_USERPTR_ANONONLY ) {/* check that we only pin down anonymous memory to prevent problems with writeback */ -unsigned long end = gtt->userptr + ttm->num_pages *PAGE_SIZE ; +unsigned long end = gtt->userptr + (u64 )ttm->num_pages *PAGE_SIZE ;struct vm_area_struct *vma; vma =find_vma (gtt->usermm, gtt->userptr);if (!vma || vma->vm_file || vma->vm_end < end)
@@ -387,7 +387,7 @@ static int radeon_ttm_tt_pin_userptr(struct ttm_bo_device *bdev, struct ttm_tt * }while (pinned < ttm->num_pages); r =sg_alloc_table_from_pages (ttm->sg, ttm->pages, ttm->num_pages,0 , - ttm->num_pages <<PAGE_SHIFT , + (u64 )ttm->num_pages <<PAGE_SHIFT ,GFP_KERNEL );if (r) goto release_sg;
drivers/gpu/drm/vc4/vc4_crtc.c +17 -0
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -1244,7 +1244,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
@@ -2735,8 +2735,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
@@ -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
@@ -857,7 +857,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 */
@@ -869,6 +869,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
@@ -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
@@ -3235,6 +3235,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);
@@ -3603,6 +3606,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);
@@ -3611,6 +3615,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
@@ -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
@@ -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
@@ -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
@@ -2575,14 +2575,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
@@ -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
@@ -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
@@ -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
@@ -2198,8 +2198,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;
@@ -2238,7 +2237,7 @@ static struct sk_buff *i40e_run_xdp(struct i40e_ring *rx_ring, } xdp_out:rcu_read_unlock (); -return ERR_PTR (-result); +return result; }/**
@@ -2350,6 +2349,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 );
@@ -2416,12 +2416,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
@@ -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/i40e/i40e_xsk.c +2 -2
@@ -462,7 +462,7 @@ static bool i40e_xmit_zc(struct i40e_ring *xdp_ring, unsigned int budget) nb_pkts =xsk_tx_peek_release_desc_batch (xdp_ring->xsk_pool, descs, budget);if (!nb_pkts) -return false; +return true;if (xdp_ring->next_to_use + nb_pkts >= xdp_ring->count) { nb_processed = xdp_ring->count - xdp_ring->next_to_use;
@@ -479,7 +479,7 @@ static bool i40e_xmit_zc(struct i40e_ring *xdp_ring, unsigned int budget)i40e_update_tx_stats (xdp_ring, nb_pkts, total_bytes); -return true; +return nb_pkts < budget; }/**
drivers/net/ethernet/intel/ice/ice.h +2 -2
@@ -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 */
@@ -586,7 +585,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);
@@ -604,6 +603,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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -1238,6 +1238,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 */
@@ -2220,6 +2223,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)))); }
@@ -2292,14 +2296,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; }
@@ -2622,7 +2624,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 :
@@ -2645,6 +2647,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
@@ -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
@@ -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/dev.c +2 -2
@@ -191,12 +191,12 @@ static bool is_ib_supported(struct mlx5_core_dev *dev) }enum { -MLX5_INTERFACE_PROTOCOL_ETH_REP ,MLX5_INTERFACE_PROTOCOL_ETH , +MLX5_INTERFACE_PROTOCOL_ETH_REP , +MLX5_INTERFACE_PROTOCOL_IB ,MLX5_INTERFACE_PROTOCOL_IB_REP ,MLX5_INTERFACE_PROTOCOL_MPIB , -MLX5_INTERFACE_PROTOCOL_IB ,MLX5_INTERFACE_PROTOCOL_VNET , };
drivers/net/ethernet/mellanox/mlx5/core/en.h +1 -0
@@ -510,6 +510,7 @@ struct mlx5e_icosq {struct mlx5_wq_cyc wq;void __iomem *uar_map;u32 sqn; +u16 reserved_room;unsigned long state;/* control path */
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c +29 -7
@@ -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);
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en/txrx.h +6 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_rx.c +7 -11
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c +11 -11
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_main.c +20 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c +3 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/eq.c +12 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlxsw/spectrum.h +15 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c +3 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c +3 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/myricom/myri10ge/myri10ge.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/netronome/nfp/bpf/cmsg.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/netronome/nfp/flower/main.h +8 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/netronome/nfp/flower/metadata.c +15 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/netronome/nfp/flower/offload.c +46 -2
48 lines not on this page · raw message
drivers/net/tun.c +48 -0
48 lines not on this page · raw message
drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c +1 -30
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info.c +1 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/pcie/trans-gen2.c +35 -0
Lines of this file are not shown. View the raw message.
drivers/regulator/bd9571mwv-regulator.c +2 -2
Lines of this file are not shown. View the raw message.
include/uapi/linux/rfkill.h +68 -12
80 lines not on this page · raw message
net/mptcp/protocol.c +47 -53
100 lines not on this page · raw message
net/sched/act_api.c +31 -17
48 lines not on this page · raw message
security/selinux/ss/avtab.c +33 -68
101 lines not on this page · raw message
security/selinux/ss/services.c +120 -37
157 lines not on this page · raw message
sound/soc/intel/atom/sst-mfld-platform-pcm.c +3 -3
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
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.