Linux 5.18.15
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.18.15 kernel.
All users of the 5.18 kernel series must upgrade.
The updated 5.18.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.18.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Makefile | 2 arch/riscv/Makefile | 1 arch/x86/events/intel/lbr.c | 19 arch/x86/include/asm/cpufeatures.h | 1 arch/x86/include/asm/nospec-branch.h | 2 arch/x86/kernel/alternative.c | 4 arch/x86/kernel/cpu/bugs.c | 14 drivers/acpi/cppc_acpi.c | 6 drivers/bus/mhi/host/pci_generic.c | 79 ++ drivers/clk/clk-lan966x.c | 2 drivers/crypto/qat/qat_4xxx/adf_drv.c | 7 drivers/crypto/qat/qat_common/Makefile | 1 drivers/crypto/qat/qat_common/adf_transport.c | 11 drivers/crypto/qat/qat_common/adf_transport.h | 1 drivers/crypto/qat/qat_common/adf_transport_internal.h | 1 drivers/crypto/qat/qat_common/qat_algs.c | 138 ++-- drivers/crypto/qat/qat_common/qat_algs_send.c | 86 ++ drivers/crypto/qat/qat_common/qat_algs_send.h | 11 drivers/crypto/qat/qat_common/qat_asym_algs.c | 304 +++++----- drivers/crypto/qat/qat_common/qat_crypto.c | 10 drivers/crypto/qat/qat_common/qat_crypto.h | 39 + drivers/gpio/gpio-pca953x.c | 22 drivers/gpio/gpio-xilinx.c | 2 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 27 drivers/gpu/drm/drm_gem_ttm_helper.c | 9 drivers/gpu/drm/imx/dcss/dcss-dev.c | 3 drivers/gpu/drm/panel/panel-edp.c | 2 drivers/gpu/drm/scheduler/sched_entity.c | 6 drivers/i2c/busses/i2c-cadence.c | 30 - drivers/i2c/busses/i2c-mlxcpld.c | 2 drivers/infiniband/hw/irdma/cm.c | 50 - drivers/infiniband/hw/irdma/i40iw_hw.c | 1 drivers/infiniband/hw/irdma/icrdma_hw.c | 1 drivers/infiniband/hw/irdma/irdma.h | 1 drivers/infiniband/hw/irdma/verbs.c | 4 drivers/mmc/host/sdhci-omap.c | 14 drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c | 6 drivers/net/amt.c | 243 ++++++-- drivers/net/can/rcar/rcar_canfd.c | 1 drivers/net/dsa/microchip/ksz_common.c | 5 drivers/net/dsa/sja1105/sja1105_main.c | 16 drivers/net/dsa/vitesse-vsc73xx-spi.c | 10 drivers/net/ethernet/chelsio/inline_crypto/chtls/chtls_cm.c | 6 drivers/net/ethernet/emulex/benet/be_cmds.c | 10 drivers/net/ethernet/emulex/benet/be_cmds.h | 2 drivers/net/ethernet/emulex/benet/be_ethtool.c | 31 - drivers/net/ethernet/intel/e1000e/hw.h | 1 drivers/net/ethernet/intel/e1000e/ich8lan.c | 4 drivers/net/ethernet/intel/e1000e/ich8lan.h | 1 drivers/net/ethernet/intel/e1000e/netdev.c | 30 - drivers/net/ethernet/intel/i40e/i40e_main.c | 13 drivers/net/ethernet/intel/iavf/iavf.h | 14 drivers/net/ethernet/intel/iavf/iavf_ethtool.c | 10 drivers/net/ethernet/intel/iavf/iavf_main.c | 11 drivers/net/ethernet/intel/iavf/iavf_txrx.c | 7 drivers/net/ethernet/intel/iavf/iavf_virtchnl.c | 65 ++ drivers/net/ethernet/intel/igc/igc_main.c | 3 drivers/net/ethernet/intel/igc/igc_regs.h | 5 drivers/net/ethernet/intel/ixgbe/ixgbe.h | 1 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 3 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c | 6 drivers/net/ethernet/marvell/prestera/prestera_flower.c | 6 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c | 9 drivers/net/ethernet/microchip/lan966x/lan966x_mac.c | 112 ++- drivers/net/ethernet/netronome/nfp/flower/action.c | 2 drivers/net/ethernet/stmicro/stmmac/dwmac-mediatek.c | 49 - drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c | 3 drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c | 8 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 22 drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c | 8 drivers/net/usb/ax88179_178a.c | 26 drivers/net/usb/r8152.c | 16 drivers/pci/controller/pci-hyperv.c | 99 ++- drivers/pinctrl/mvebu/pinctrl-armada-37xx.c | 79 +- drivers/pinctrl/pinctrl-ocelot.c | 214 ++++--- drivers/pinctrl/ralink/Kconfig | 16 drivers/pinctrl/ralink/Makefile | 2 drivers/pinctrl/ralink/pinctrl-mt7620.c | 252 ++++---- drivers/pinctrl/ralink/pinctrl-mt7621.c | 30 - drivers/pinctrl/ralink/pinctrl-ralink.c | 351 ++++++++++++ drivers/pinctrl/ralink/pinctrl-ralink.h | 53 + drivers/pinctrl/ralink/pinctrl-rt2880.c | 349 ----------- drivers/pinctrl/ralink/pinctrl-rt288x.c | 20 drivers/pinctrl/ralink/pinctrl-rt305x.c | 44 - drivers/pinctrl/ralink/pinctrl-rt3883.c | 28 drivers/pinctrl/ralink/pinmux.h | 53 - drivers/pinctrl/stm32/pinctrl-stm32.c | 18 drivers/pinctrl/sunplus/sppctl.c | 3 drivers/power/reset/arm-versatile-reboot.c | 1 drivers/power/supply/ab8500_fg.c | 9 drivers/spi/spi-bcm2835.c | 12 fs/dlm/lock.c | 3 fs/exfat/namei.c | 31 - include/drm/gpu_scheduler.h | 4 include/net/amt.h | 20 include/net/inet_hashtables.h | 2 include/net/inet_sock.h | 12 include/net/ip.h | 6 include/net/protocol.h | 4 include/net/route.h | 2 include/net/tcp.h | 20 include/net/udp.h | 4 kernel/bpf/core.c | 8 kernel/events/core.c | 45 + kernel/sched/deadline.c | 5 kernel/watch_queue.c | 53 + mm/mempolicy.c | 2 net/core/filter.c | 4 net/core/secure_seq.c | 4 net/core/sock_reuseport.c | 4 net/dsa/port.c | 63 ++ net/dsa/switch.c | 58 - net/ipv4/af_inet.c | 18 net/ipv4/fib_semantics.c | 2 net/ipv4/icmp.c | 2 net/ipv4/igmp.c | 49 - net/ipv4/inet_connection_sock.c | 5 net/ipv4/ip_forward.c | 2 net/ipv4/ip_input.c | 37 - net/ipv4/ip_sockglue.c | 8 net/ipv4/netfilter/nf_reject_ipv4.c | 4 net/ipv4/proc.c | 2 net/ipv4/route.c | 10 net/ipv4/syncookies.c | 9 net/ipv4/sysctl_net_ipv4.c | 65 -- net/ipv4/tcp.c | 13 net/ipv4/tcp_fastopen.c | 9 net/ipv4/tcp_input.c | 51 + net/ipv4/tcp_ipv4.c | 2 net/ipv4/tcp_metrics.c | 3 net/ipv4/tcp_minisocks.c | 4 net/ipv4/tcp_output.c | 29 net/ipv4/tcp_recovery.c | 6 net/ipv4/tcp_timer.c | 30 - net/ipv6/af_inet6.c | 2 net/ipv6/ip6_input.c | 23 net/ipv6/syncookies.c | 3 net/ipv6/tcp_ipv6.c | 9 net/ipv6/udp.c | 9 net/netfilter/nf_synproxy_core.c | 2 net/sched/cls_api.c | 16 net/sctp/protocol.c | 2 net/smc/smc_llc.c | 2 net/tls/tls_device.c | 8 net/xfrm/xfrm_policy.c | 5 net/xfrm/xfrm_state.c | 2 security/integrity/ima/ima_policy.c | 4 sound/soc/sof/intel/hda-loader.c | 3 sound/soc/sof/pm.c | 21 sound/soc/sof/sof-priv.h | 2 tools/perf/tests/perf-time-to-tsc.c | 27 tools/testing/selftests/gpio/Makefile | 2 tools/testing/selftests/kvm/rseq_test.c | 8 virt/kvm/kvm_main.c | 5 154 files changed, 2413 insertions(+), 1767 deletions(-)
Adrian Hunter (2):
perf tests: Stop Convert perf time to TSC test opening events twice perf tests: Fix Convert perf time to TSC test for hybrid
Alexander Aring (1):
dlm: fix pending remove if msg allocation fails
Alexey Kardashevskiy (1):
KVM: Don't null dereference ops->destroy
Andy Shevchenko (1):
pinctrl: armada-37xx: Reuse GPIO fwnode in armada_37xx_irqchip_register()
Arınç ÜNAL (2):
pinctrl: ralink: rename MT7628(an) functions to MT76X8
pinctrl: ralink: rename pinctrl-rt2880 to pinctrl-ralink
Ben Dooks (1):
riscv: add as-options for modules with assembly compontents
Biao Huang (3):
stmmac: dwmac-mediatek: fix clock issue
net: stmmac: fix pm runtime issue in stmmac_dvr_remove()
net: stmmac: fix unbalanced ptp clock issue in suspend/resume flow
Christian König (1):
drm/ttm: fix locking in vmap/vunmap TTM GEM helpers
Daniele Palmas (2):
bus: mhi: host: pci_generic: add Telit FN980 v1 hardware revision
bus: mhi: host: pci_generic: add Telit FN990
Dawid Lukwinski (1):
i40e: Fix erroneous adapter reinitialization during recovery process
Dmitry Osipenko (1):
drm/scheduler: Don't kill jobs in interrupt context
Eric Dumazet (2):
tcp: sk->sk_bound_dev_if once in inet_request_bound_dev_if()
bpf: Make sure mac_header was set before using it
Eric Snowberg (1):
lockdown: Fix kexec lockdown bypass with ima policy
Fabien Dessenne (1):
pinctrl: stm32: fix optional IRQ support to gpios
Gao Chao (1):
power: supply: ab8500_fg: add missing destroy_workqueue in ab8500_fg_probe
Gavin Shan (1):
KVM: selftests: Fix target thread to be migrated in rseq_test
Giovanni Cabiddu (10):
crypto: qat - set to zero DH parameters before free
crypto: qat - use pre-allocated buffers in datapath
crypto: qat - refactor submission logic
crypto: qat - add backlog mechanism
crypto: qat - fix memory leak in RSA
crypto: qat - remove dma_free_coherent() for RSA
crypto: qat - remove dma_free_coherent() for DH
crypto: qat - add param check for RSA
crypto: qat - add param check for DH
crypto: qat - re-enable registration of algorithms
Greg Kroah-Hartman (1):
Linux 5.18.15
Haibo Chen (3):
gpio: pca953x: only use single read/write for No AI mode
gpio: pca953x: use the correct range when do regmap sync
gpio: pca953x: use the correct register address when regcache sync during init
Hangyu Hua (1):
xfrm: xfrm_policy: fix a possible double xfrm_pols_put() in xfrm_bundle_lookup()
Hayes Wang (1):
r8152: fix a WOL issue
Herve Codina (1):
clk: lan966x: Fix the lan966x clock gate register address
Horatiu Vultur (7):
pinctrl: ocelot: Fix pincfg for lan966x
pinctrl: ocelot: Fix pincfg
net: lan966x: Fix taking rtnl_lock while holding spin_lock
net: lan966x: Fix usage of lan966x->mac_lock when entry is added
net: lan966x: Fix usage of lan966x->mac_lock when entry is removed
net: lan966x: Fix usage of lan966x->mac_lock inside lan966x_mac_irq_handler
net: lan966x: Fix usage of lan966x->mac_lock when used by FDBHristo Venev (1):
be2net: Fix buffer overflow in be_get_module_eeprom
Ido Schimmel (1):
mlxsw: spectrum_router: Fix IPv4 nexthop gateway indication
Jeffrey Hugo (4):
PCI: hv: Fix multi-MSI to allow more than one MSI vector
PCI: hv: Fix hv_arch_irq_unmask() for multi-MSI
PCI: hv: Reuse existing IRTE allocation in compose_msi_msg()
PCI: hv: Fix interrupt mapping for multi-MSI
Jose Alonso (1):
net: usb: ax88179_178a needs FLAG_SEND_ZLP
Junxiao Chang (1):
net: stmmac: fix dma queue left shift overflow issue
Juri Lelli (1):
sched/deadline: Fix BUG_ON condition for deboosted tasks
Kan Liang (1):
perf/x86/intel/lbr: Fix unchecked MSR access error on HSW
Kees Cook (1):
x86/alternative: Report missing return thunk details
Kent Gibson (1):
selftests: gpio: fix include path to kernel headers for out of tree builds
Kuniyuki Iwashima (46):
ip: Fix data-races around sysctl_ip_default_ttl.
ip: Fix data-races around sysctl_ip_no_pmtu_disc.
ip: Fix data-races around sysctl_ip_fwd_use_pmtu.
ip: Fix data-races around sysctl_ip_fwd_update_priority.
ip: Fix data-races around sysctl_ip_nonlocal_bind.
ip: Fix a data-race around sysctl_ip_autobind_reuse.
ip: Fix a data-race around sysctl_fwmark_reflect. tcp/dccp: Fix a data-race around sysctl_tcp_fwmark_accept.
tcp: Fix data-races around sysctl_tcp_l3mdev_accept.
tcp: Fix data-races around sysctl_tcp_mtu_probing.
tcp: Fix data-races around sysctl_tcp_base_mss.
tcp: Fix data-races around sysctl_tcp_min_snd_mss.
tcp: Fix a data-race around sysctl_tcp_mtu_probe_floor.
tcp: Fix a data-race around sysctl_tcp_probe_threshold.
tcp: Fix a data-race around sysctl_tcp_probe_interval. tcp/udp: Make early_demux back namespacified.
igmp: Fix data-races around sysctl_igmp_llm_reports.
igmp: Fix a data-race around sysctl_igmp_max_memberships.
igmp: Fix data-races around sysctl_igmp_max_msf.
igmp: Fix data-races around sysctl_igmp_qrv.
tcp: Fix data-races around keepalive sysctl knobs.
tcp: Fix data-races around sysctl_tcp_syn(ack)?_retries.
tcp: Fix data-races around sysctl_tcp_syncookies.
tcp: Fix data-races around sysctl_tcp_migrate_req.
tcp: Fix data-races around sysctl_tcp_reordering.
tcp: Fix data-races around some timeout sysctl knobs.
tcp: Fix a data-race around sysctl_tcp_notsent_lowat.
tcp: Fix a data-race around sysctl_tcp_tw_reuse.
tcp: Fix data-races around sysctl_max_syn_backlog.
tcp: Fix data-races around sysctl_tcp_fastopen.
tcp: Fix data-races around sysctl_tcp_fastopen_blackhole_timeout.
ipv4: Fix a data-race around sysctl_fib_multipath_use_neigh.
ipv4: Fix data-races around sysctl_fib_multipath_hash_policy.
ipv4: Fix data-races around sysctl_fib_multipath_hash_fields.
ip: Fix data-races around sysctl_ip_prot_sock.
udp: Fix a data-race around sysctl_udp_l3mdev_accept.
tcp: Fix data-races around sysctl knobs related to SYN option.
tcp: Fix a data-race around sysctl_tcp_early_retrans.
tcp: Fix data-races around sysctl_tcp_recovery.
tcp: Fix a data-race around sysctl_tcp_thin_linear_timeouts.
tcp: Fix data-races around sysctl_tcp_slow_start_after_idle.
tcp: Fix a data-race around sysctl_tcp_retrans_collapse.
tcp: Fix a data-race around sysctl_tcp_stdurg.
tcp: Fix a data-race around sysctl_tcp_rfc1337.
tcp: Fix a data-race around sysctl_tcp_abort_on_overflow.
tcp: Fix data-races around sysctl_tcp_max_reordering.
Lennert Buytenhek (1):
igc: Reinstate IGC_REMOVED logic and implement it properly
Liang He (3):
net: dsa: microchip: ksz_common: Fix refcount leak bug drm/imx/dcss: Add missing of_node_put() in fail path
can: rcar_canfd: Add missing of_node_put() in rcar_canfd_probe()
Linus Torvalds (2):
watchqueue: make sure to serialize 'wqueue->defunct' properly
watch-queue: remove spurious double semicolon
Maksym Glubokiy (1):
net: prestera: acl: use proper mask for port selector
Marc Kleine-Budde (1):
spi: bcm2835: bcm2835_spi_handle_err(): fix NULL pointer deref for non DMA transfers
Mario Limonciello (1):
ACPI: CPPC: Don't require flexible address space if X86_FEATURE_CPPC is supported
Miaoqian Lin (1):
power/reset: arm-versatile: Fix refcount leak in versatile_reboot_probe
Mustafa Ismail (2):
RDMA/irdma: Do not advertise 1GB page size for x722 RDMA/irdma: Fix sleep from invalid context BUG
Nícolas F. R. A. Prado (1):
drm/panel-edp: Fix variable typo when saving hpd absent delay from DT
Oleksij Rempel (2):
net: dsa: sja1105: silent spi_device_id warnings
net: dsa: vitesse-vsc73xx: silent spi_device_id warnings
Oz Shlomo (1):
net/sched: cls_api: Fix flow action initialization
Pawan Gupta (1):
x86/bugs: Warn when "ibrs" mitigation is selected on Enhanced IBRS parts
Peter Zijlstra (2):
perf/core: Fix data race between perf_event_set_output() and perf_mmap_close() x86/amd: Use IBPB for firmware calls
Pierre-Louis Bossart (3):
ASoC: SOF: pm: add explicit behavior for ACPI S1 and S2
ASoC: SOF: pm: add definitions for S4 and S5 states
ASoC: SOF: Intel: disable IMR boot when resuming from ACPI S4 and S5 states
Piotr Skajewski (1):
ixgbe: Add locking to prevent panic when setting sriov_numvfs to zero
Przemyslaw Patynowski (4):
iavf: Fix VLAN_V2 addition/rejection
iavf: Disallow changing rx/tx-frames and rx/tx-frames-irq
iavf: Fix handling of dummy receive descriptors
iavf: Fix missing state logs
Robert Hancock (1):
i2c: cadence: Change large transfer count reset logic to be unconditional
Sascha Hauer (1):
mtd: rawnand: gpmi: Set WAIT_FOR_READY timeout based on program/erase times
Sasha Neftin (2):
e1000e: Enable GPT clock before sending message to CSME Revert "e1000e: Fix possible HW unit hang after an s0ix exit"
Srinivas Neeli (1):
gpio: gpio-xilinx: Fix integer overflow
Stylon Wang (1):
drm/amd/display: Fix new dmub notification enabling in DM
Sungjong Seo (1):
exfat: use updated exfat_chain directly during renaming
Taehee Yoo (8):
amt: use workqueue for gateway side message handling
amt: remove unnecessary locks
amt: use READ_ONCE() in amt module
amt: add missing regeneration nonce logic in request logic
amt: drop unexpected advertisement message
amt: drop unexpected query message
amt: drop unexpected multicast data
amt: do not use amt->nr_tunnels outside of lock
Tariq Toukan (1):
net/tls: Fix race in TLS device down flow
Tony Lindgren (1):
mmc: sdhci-omap: Fix a lockdep warning for PM runtime init
Vadim Pasternak (1):
i2c: mlxcpld: Fix register setting for 400KHz frequency
Vladimir Oltean (5):
pinctrl: armada-37xx: use raw spinlocks for regmap to avoid invalid wait context
pinctrl: armada-37xx: make irq_lock a raw spinlock to avoid invalid wait context
net: dsa: fix dsa_port_vlan_filtering when global
net: dsa: move reset of VLAN filtering to dsa_port_switchdev_unsync_attrs
net: dsa: fix NULL pointer dereference in dsa_port_reset_vlan_filtering
Wang Cheng (1):
mm/mempolicy: fix uninit-value in mpol_rebind_policy()
William Dean (2):
pinctrl: ralink: Check for null return of devm_kcalloc
pinctrl: sunplus: Add check for kcalloc
Wong Vee Khee (1):
net: stmmac: remove redunctant disable xPCS EEE call
Yuezhang Mo (1):
exfat: fix referencing wrong parent directory information after renaming
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 18 -SUBLEVEL = 14 +SUBLEVEL = 15 EXTRAVERSION = NAME = Superb Owl
arch/riscv/Makefile +1 -0
@@ -73,6 +73,7 @@ ifeq ($(CONFIG_PERF_EVENTS),y) endif KBUILD_CFLAGS_MODULE += $(call cc-option,-mno-relax) +KBUILD_AFLAGS_MODULE += $(call as-option,-Wa$(comma)-mno-relax) # GCC versions that support the "-mstrict-align" option default to allowing # unaligned accesses. While unaligned accesses are explicitly allowed in the
arch/x86/events/intel/lbr.c +10 -9
@@ -278,9 +278,9 @@ enum { };/* -* For formats with LBR_TSX flags (e.g. LBR_FORMAT_EIP_FLAGS2), bits 61:62 in -* MSR_LAST_BRANCH_FROM_x are the TSX flags when TSX is supported, but when -* TSX is not supported they have no consistent behavior: +* For format LBR_FORMAT_EIP_FLAGS2, bits 61:62 in MSR_LAST_BRANCH_FROM_x +* are the TSX flags when TSX is supported, but when TSX is not supported +* they have no consistent behavior: * * - For wrmsr(), bits 61:62 are considered part of the sign extension. * - For HW updates (branch captures) bits 61:62 are always OFF and are not
@@ -288,7 +288,7 @@ enum {* * Therefore, if: * -* 1) LBR has TSX format +* 1) LBR format LBR_FORMAT_EIP_FLAGS2 * 2) CPU has no TSX support enabled * * ... then any value passed to wrmsr() must be sign extended to 63 bits and any
@@ -300,7 +300,7 @@ static inline bool lbr_from_signext_quirk_needed(void)bool tsx_support =boot_cpu_has (X86_FEATURE_HLE ) ||boot_cpu_has (X86_FEATURE_RTM ); -return !tsx_support && x86_pmu.lbr_has_tsx; +return !tsx_support; }static DEFINE_STATIC_KEY_FALSE (lbr_from_quirk_key);
@@ -1611,9 +1611,6 @@ void intel_pmu_lbr_init_hsw(void) x86_pmu.lbr_sel_map = hsw_lbr_sel_map;x86_get_pmu (smp_processor_id ())->task_ctx_cache =create_lbr_kmem_cache (size,0 ); - -if (lbr_from_signext_quirk_needed ()) -static_branch_enable (&lbr_from_quirk_key); }/* skylake */
@@ -1704,7 +1701,11 @@ void intel_pmu_lbr_init(void)switch (x86_pmu.intel_cap.lbr_format) {case LBR_FORMAT_EIP_FLAGS2 : x86_pmu.lbr_has_tsx =1 ; - fallthrough; + x86_pmu.lbr_from_flags =1 ; +if (lbr_from_signext_quirk_needed ()) +static_branch_enable (&lbr_from_quirk_key); +break ; +case LBR_FORMAT_EIP_FLAGS : x86_pmu.lbr_from_flags =1 ;break ;
arch/x86/include/asm/cpufeatures.h +1 -0
@@ -301,6 +301,7 @@#define X86_FEATURE_RETPOLINE_LFENCE (11*32+13)/* "" Use LFENCE for Spectre variant 2 */ #define X86_FEATURE_RETHUNK (11*32+14)/* "" Use REturn THUNK */ #define X86_FEATURE_UNRET (11*32+15)/* "" AMD BTB untrain return */ +#define X86_FEATURE_USE_IBPB_FW (11*32+16)/* "" Use IBPB during runtime firmware calls */ /* Intel-defined CPU features, CPUID level 0x00000007:1 (EAX), word 12 */ #define X86_FEATURE_AVX_VNNI (12*32+ 4)/* AVX VNNI instructions */
arch/x86/include/asm/nospec-branch.h +2 -0
@@ -297,6 +297,8 @@ do { \alternative_msr_write (MSR_IA32_SPEC_CTRL , \spec_ctrl_current () |SPEC_CTRL_IBRS , \X86_FEATURE_USE_IBRS_FW ); \ +alternative_msr_write (MSR_IA32_PRED_CMD ,PRED_CMD_IBPB , \ +X86_FEATURE_USE_IBPB_FW ); \ }while (0 ) #define firmware_restrict_branch_speculation_end() \
arch/x86/kernel/alternative.c +3 -1
@@ -555,7 +555,9 @@ void __init_or_module noinline apply_returns(s32 *start, s32 *end) dest = addr + insn.length + insn.immediate.value;if (__static_call_fixup (addr, op, dest) || -WARN_ON_ONCE (dest != &__x86_return_thunk)) +WARN_ONCE (dest != &__x86_return_thunk, +"missing return thunk: %pS-%pS: %*ph" , + addr, dest,5 , addr))continue ; DPRINTK("return thunk at: %pS (%px) len: %d to: %pS",
arch/x86/kernel/cpu/bugs.c +13 -1
@@ -968,6 +968,7 @@ static inline const char *spectre_v2_module_string(void) { return ""; }#define SPECTRE_V2_LFENCE_MSG "WARNING: LFENCE mitigation is not recommended for this CPU, data leaks possible!\n"#define SPECTRE_V2_EIBRS_EBPF_MSG "WARNING: Unprivileged eBPF is enabled with eIBRS on, data leaks possible via Spectre v2 BHB attacks!\n"#define SPECTRE_V2_EIBRS_LFENCE_EBPF_SMT_MSG "WARNING: Unprivileged eBPF is enabled with eIBRS+LFENCE mitigation and SMT, data leaks possible via Spectre v2 BHB attacks!\n" +#define SPECTRE_V2_IBRS_PERF_MSG "WARNING: IBRS mitigation selected on Enhanced IBRS CPU, this may cause unnecessary performance loss\n"#ifdef CONFIG_BPF_SYSCALL void unpriv_ebpf_notify (int new_state)
@@ -1408,6 +1409,8 @@ static void __init spectre_v2_select_mitigation(void)case SPECTRE_V2_IBRS :setup_force_cpu_cap (X86_FEATURE_KERNEL_IBRS ); +if (boot_cpu_has (X86_FEATURE_IBRS_ENHANCED )) +pr_warn (SPECTRE_V2_IBRS_PERF_MSG );break ;case SPECTRE_V2_LFENCE :
@@ -1509,7 +1512,16 @@ static void __init spectre_v2_select_mitigation(void)* the CPU supports Enhanced IBRS, kernel might un-intentionally not * enable IBRS around firmware calls. */ -if (boot_cpu_has (X86_FEATURE_IBRS ) && !spectre_v2_in_ibrs_mode (mode)) { +if (boot_cpu_has_bug (X86_BUG_RETBLEED ) && + (boot_cpu_data.x86_vendor ==X86_VENDOR_AMD || + boot_cpu_data.x86_vendor ==X86_VENDOR_HYGON )) { + +if (retbleed_cmd !=RETBLEED_CMD_IBPB ) { +setup_force_cpu_cap (X86_FEATURE_USE_IBPB_FW ); +pr_info ("Enabling Speculation Barrier for firmware calls\n" ); + } + + }else if (boot_cpu_has (X86_FEATURE_IBRS ) && !spectre_v2_in_ibrs_mode (mode)) {setup_force_cpu_cap (X86_FEATURE_USE_IBRS_FW );pr_info ("Enabling Restricted Speculation for firmware calls\n" ); }
drivers/acpi/cppc_acpi.c +4 -2
@@ -764,7 +764,8 @@ int acpi_cppc_processor_probe(struct acpi_processor *pr)if (!osc_cpc_flexible_adr_space_confirmed) {pr_debug ("Flexible address space capability not supported\n" ); - goto out_free; +if (!cpc_supported_by_cpu ()) + goto out_free; } addr =ioremap (gas_t->address, gas_t->bit_width/8 );
@@ -791,7 +792,8 @@ int acpi_cppc_processor_probe(struct acpi_processor *pr) }if (!osc_cpc_flexible_adr_space_confirmed) {pr_debug ("Flexible address space capability not supported\n" ); - goto out_free; +if (!cpc_supported_by_cpu ()) + goto out_free; } }else {if (gas_t->space_id !=ACPI_ADR_SPACE_FIXED_HARDWARE || !cpc_ffh_supported ()) {
drivers/bus/mhi/host/pci_generic.c +79 -0
93 lines not on this page · raw message
drivers/clk/clk-lan966x.c +1 -1
@@ -213,7 +213,7 @@ static int lan966x_gate_clk_register(struct device *dev, hw_data->hws[i] =devm_clk_hw_register_gate (dev, clk_gate_desc[idx].name, -"lan966x" ,0 , base, +"lan966x" ,0 , gate_base, clk_gate_desc[idx].bit_idx,0 , &clk_gate_lock);
drivers/crypto/qat/qat_4xxx/adf_drv.c +0 -7
@@ -75,13 +75,6 @@ static int adf_crypto_dev_config(struct adf_accel_dev *accel_dev)if (ret) goto err; -/* Temporarily set the number of crypto instances to zero to avoid -* registering the crypto algorithms. -* This will be removed when the algorithms will support the -* CRYPTO_TFM_REQ_MAY_BACKLOG flag -*/ - instances =0 ; -for (i =0 ; i < instances; i++) { val = i; bank = i *2 ;
drivers/crypto/qat/qat_common/Makefile +1 -0
@@ -16,6 +16,7 @@ intel_qat-objs := adf_cfg.o \ qat_crypto.o \ qat_algs.o \ qat_asym_algs.o \ + qat_algs_send.o \ qat_uclo.o \ qat_hal.o
drivers/crypto/qat/qat_common/adf_transport.c +11 -0
@@ -8,6 +8,9 @@#include "adf_cfg.h" #include "adf_common_drv.h" +#define ADF_MAX_RING_THRESHOLD 80 +#define ADF_PERCENT (tot, percent) (((tot) * (percent)) / 100) +static inline u32 adf_modulo (u32 data,u32 shift) {u32 div = data >> shift;
@@ -77,6 +80,11 @@ static void adf_disable_ring_irq(struct adf_etr_bank_data *bank, u32 ring) bank->irq_mask); } +bool adf_ring_nearly_full (struct adf_etr_ring_data *ring) +{ +return atomic_read (ring->inflights) > ring->threshold; +} +int adf_send_message (struct adf_etr_ring_data *ring,u32 *msg) {struct adf_hw_csr_ops *csr_ops =GET_CSR_OPS (ring->bank->accel_dev);
@@ -217,6 +225,7 @@ int adf_create_ring(struct adf_accel_dev *accel_dev, const char *section,struct adf_etr_bank_data *bank;struct adf_etr_ring_data *ring;char val[ADF_CFG_MAX_VAL_LEN_IN_BYTES ]; +int max_inflights;u32 ring_num;int ret;
@@ -263,6 +272,8 @@ int adf_create_ring(struct adf_accel_dev *accel_dev, const char *section, ring->ring_size =adf_verify_ring_size (msg_size, num_msgs); ring->head =0 ; ring->tail =0 ; + max_inflights =ADF_MAX_INFLIGHTS (ring->ring_size, ring->msg_size); + ring->threshold =ADF_PERCENT (max_inflights,ADF_MAX_RING_THRESHOLD );atomic_set (ring->inflights,0 ); ret =adf_init_ring (ring);if (ret)
drivers/crypto/qat/qat_common/adf_transport.h +1 -0
@@ -14,6 +14,7 @@ int adf_create_ring(struct adf_accel_dev *accel_dev, const char *section, const char *ring_name, adf_callback_fn callback, int poll_mode, struct adf_etr_ring_data **ring_ptr); +bool adf_ring_nearly_full (struct adf_etr_ring_data *ring);int adf_send_message (struct adf_etr_ring_data *ring,u32 *msg);void adf_remove_ring (struct adf_etr_ring_data *ring);#endif
drivers/crypto/qat/qat_common/adf_transport_internal.h +1 -0
@@ -22,6 +22,7 @@ struct adf_etr_ring_data {spinlock_t lock;/* protects ring data struct */ u16 head;u16 tail; +u32 threshold;u8 ring_number;u8 ring_size;u8 msg_size;
drivers/crypto/qat/qat_common/qat_algs.c +75 -63
252 lines not on this page · raw message
drivers/crypto/qat/qat_common/qat_algs_send.c new file +86 -0
86 lines not on this page · raw message
drivers/crypto/qat/qat_common/qat_algs_send.h new file +11 -0
@@ -0,0 +1,11 @@ +/* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0-only) */ +/* Copyright(c) 2022 Intel Corporation */ +#ifndef QAT_ALGS_SEND_H +#define QAT_ALGS_SEND_H + +#include "qat_crypto.h" + +int qat_alg_send_message (struct qat_alg_req *req); +void qat_alg_send_backlog (struct qat_instance_backlog *backlog); + +#endif
drivers/crypto/qat/qat_common/qat_asym_algs.c +149 -155
525 lines not on this page · raw message
drivers/crypto/qat/qat_common/qat_crypto.c +3 -7
@@ -161,13 +161,6 @@ int qat_crypto_dev_config(struct adf_accel_dev *accel_dev)if (ret) goto err; -/* Temporarily set the number of crypto instances to zero to avoid -* registering the crypto algorithms. -* This will be removed when the algorithms will support the -* CRYPTO_TFM_REQ_MAY_BACKLOG flag -*/ - instances =0 ; -for (i =0 ; i < instances; i++) { val = i;snprintf (key,sizeof (key),ADF_CY "%d" ADF_RING_ASYM_BANK_NUM , i);
@@ -353,6 +346,9 @@ static int qat_crypto_create_instances(struct adf_accel_dev *accel_dev) &inst->pke_rx);if (ret) goto err; + +INIT_LIST_HEAD (&inst->backlog.list); +spin_lock_init (&inst->backlog.lock); }return 0 ; err:
drivers/crypto/qat/qat_common/qat_crypto.h +39 -0
@@ -9,6 +9,19 @@#include "adf_accel_devices.h" #include "icp_qat_fw_la.h" +struct qat_instance_backlog { +struct list_head list; +spinlock_t lock;/* protects backlog list */ +}; + +struct qat_alg_req { +u32 *fw_req; +struct adf_etr_ring_data *tx_ring; +struct crypto_async_request *base; +struct list_head list; +struct qat_instance_backlog *backlog; +}; +struct qat_crypto_instance {struct adf_etr_ring_data *sym_tx;struct adf_etr_ring_data *sym_rx;
@@ -19,8 +32,29 @@ struct qat_crypto_instance {unsigned long state;int id;atomic_t refctr; +struct qat_instance_backlog backlog; }; +#define QAT_MAX_BUFF_DESC 4 + +struct qat_alg_buf { +u32 len; +u32 resrvd; +u64 addr; +} __packed; + +struct qat_alg_buf_list { +u64 resrvd; +u32 num_bufs; +u32 num_mapped_bufs; +struct qat_alg_buf bufers[]; +} __packed; + +struct qat_alg_fixed_buf_list { +struct qat_alg_buf_list sgl_hdr; +struct qat_alg_buf descriptors[QAT_MAX_BUFF_DESC ]; +} __packed__aligned(64) ; +struct qat_crypto_request_buffs {struct qat_alg_buf_list *bl;dma_addr_t blp;
@@ -28,6 +62,10 @@ struct qat_crypto_request_buffs {dma_addr_t bloutp;size_t sz;size_t sz_out; +bool sgl_src_valid; +bool sgl_dst_valid; +struct qat_alg_fixed_buf_list sgl_src; +struct qat_alg_fixed_buf_list sgl_dst; };struct qat_crypto_request ;
@@ -53,6 +91,7 @@ struct qat_crypto_request {u8 iv[AES_BLOCK_SIZE ]; };bool encryption; +struct qat_alg_req alg_req; };static inline bool adf_hw_dev_has_crypto (struct adf_accel_dev *accel_dev)
drivers/gpio/gpio-pca953x.c +14 -8
@@ -351,6 +351,9 @@ static const struct regmap_config pca953x_i2c_regmap = { .reg_bits = 8, .val_bits = 8, + .use_single_read = true, + .use_single_write = true, + .readable_reg = pca953x_readable_register, .writeable_reg = pca953x_writeable_register, .volatile_reg = pca953x_volatile_register,
@@ -894,15 +897,18 @@ static int pca953x_irq_setup(struct pca953x_chip *chip,static int device_pca95xx_init (struct pca953x_chip *chip,u32 invert) {DECLARE_BITMAP (val,MAX_LINE ); +u8 regaddr;int ret; - ret =regcache_sync_region (chip->regmap, chip->regs->output, - chip->regs->output +NBANK (chip)); + regaddr =pca953x_recalc_addr (chip, chip->regs->output,0 ); + ret =regcache_sync_region (chip->regmap, regaddr, + regaddr +NBANK (chip) -1 );if (ret) goto out; - ret =regcache_sync_region (chip->regmap, chip->regs->direction, - chip->regs->direction +NBANK (chip)); + regaddr =pca953x_recalc_addr (chip, chip->regs->direction,0 ); + ret =regcache_sync_region (chip->regmap, regaddr, + regaddr +NBANK (chip) -1 );if (ret) goto out;
@@ -1115,14 +1121,14 @@ static int pca953x_regcache_sync(struct device *dev)* sync these registers first and only then sync the rest. */ regaddr =pca953x_recalc_addr (chip, chip->regs->direction,0 ); - ret =regcache_sync_region (chip->regmap, regaddr, regaddr +NBANK (chip)); + ret =regcache_sync_region (chip->regmap, regaddr, regaddr +NBANK (chip) -1 );if (ret) {dev_err (dev,"Failed to sync GPIO dir registers: %d\n" , ret);return ret; } regaddr =pca953x_recalc_addr (chip, chip->regs->output,0 ); - ret =regcache_sync_region (chip->regmap, regaddr, regaddr +NBANK (chip)); + ret =regcache_sync_region (chip->regmap, regaddr, regaddr +NBANK (chip) -1 );if (ret) {dev_err (dev,"Failed to sync GPIO out registers: %d\n" , ret);return ret;
@@ -1132,7 +1138,7 @@ static int pca953x_regcache_sync(struct device *dev)if (chip->driver_data &PCA_PCAL ) { regaddr =pca953x_recalc_addr (chip,PCAL953X_IN_LATCH ,0 ); ret =regcache_sync_region (chip->regmap, regaddr, - regaddr +NBANK (chip)); + regaddr +NBANK (chip) -1 );if (ret) {dev_err (dev,"Failed to sync INT latch registers: %d\n" , ret);
@@ -1141,7 +1147,7 @@ static int pca953x_regcache_sync(struct device *dev) regaddr =pca953x_recalc_addr (chip,PCAL953X_INT_MASK ,0 ); ret =regcache_sync_region (chip->regmap, regaddr, - regaddr +NBANK (chip)); + regaddr +NBANK (chip) -1 );if (ret) {dev_err (dev,"Failed to sync INT mask registers: %d\n" , ret);
drivers/gpio/gpio-xilinx.c +1 -1
@@ -99,7 +99,7 @@ static inline void xgpio_set_value32(unsigned long *map, int bit, u32 v)const unsigned long offset = (bit %BITS_PER_LONG ) &BIT (5 ); map[index] &= ~(0xFFFFFFFFul << offset); - map[index] |= v << offset; + map[index] |= (unsigned long )v << offset; }static inline int xgpio_regoffset (struct xgpio_instance *chip,int ch)
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +19 -8
@@ -1670,7 +1670,7 @@ static int amdgpu_dm_init(struct amdgpu_device *adev)#if defined(CONFIG_DRM_AMD_SECURE_DISPLAY ) adev->dm.crc_rd_wrk =amdgpu_dm_crtc_secure_display_create_work ();#endif -if (dc_enable_dmub_notifications (adev->dm.dc)) { +if (dc_is_dmub_outbox_supported (adev->dm.dc)) {init_completion (&adev->dm.dmub_aux_transfer_done); adev->dm.dmub_notify =kzalloc (sizeof (struct dmub_notification ),GFP_KERNEL );if (!adev->dm.dmub_notify) {
@@ -1708,6 +1708,13 @@ static int amdgpu_dm_init(struct amdgpu_device *adev) goto error; } +/* Enable outbox notification only after IRQ handlers are registered and DMUB is alive. +* It is expected that DMUB will resend any pending notifications at this point, for +* example HPD from DPIA. +*/ +if (dc_is_dmub_outbox_supported (adev->dm.dc)) +dc_enable_dmub_outbox (adev->dm.dc); +/* create fake encoders for MST */ dm_dp_create_fake_mst_encoders (adev);
@@ -2701,9 +2708,6 @@ static int dm_resume(void *handle)*/ link_enc_cfg_copy (adev->dm.dc->current_state, dc_state); -if (dc_enable_dmub_notifications (adev->dm.dc)) -amdgpu_dm_outbox_init (adev); - r =dm_dmub_hw_init (adev);if (r)DRM_ERROR ("DMUB interface failed to initialize: status=%d\n" , r);
@@ -2721,6 +2725,11 @@ static int dm_resume(void *handle) } } +if (dc_is_dmub_outbox_supported (adev->dm.dc)) { +amdgpu_dm_outbox_init (adev); +dc_enable_dmub_outbox (adev->dm.dc); + } +WARN_ON (!dc_commit_state (dm->dc, dc_state));dm_gpureset_commit_state (dm->cached_dc_state, dm);
@@ -2742,13 +2751,15 @@ static int dm_resume(void *handle)/* TODO: Remove dc_state->dccg, use dc->dccg directly. */ dc_resource_state_construct (dm->dc, dm_state->context); -/* Re-enable outbox interrupts for DPIA. */ -if (dc_enable_dmub_notifications (adev->dm.dc)) -amdgpu_dm_outbox_init (adev); -/* Before powering on DC we need to re-initialize DMUB. */ dm_dmub_hw_resume (adev); +/* Re-enable outbox interrupts for DPIA. */ +if (dc_is_dmub_outbox_supported (adev->dm.dc)) { +amdgpu_dm_outbox_init (adev); +dc_enable_dmub_outbox (adev->dm.dc); + } +/* power on hardware */ dc_set_power_state (dm->dc,DC_ACPI_CM_POWER_STATE_D0 );
drivers/gpu/drm/drm_gem_ttm_helper.c +8 -1
@@ -64,8 +64,13 @@ int drm_gem_ttm_vmap(struct drm_gem_object *gem, struct iosys_map *map) {struct ttm_buffer_object *bo =drm_gem_ttm_of_gem (gem); +int ret; + +dma_resv_lock (gem->resv,NULL ); + ret =ttm_bo_vmap (bo, map); +dma_resv_unlock (gem->resv); -return ttm_bo_vmap (bo, map); +return ret; }EXPORT_SYMBOL (drm_gem_ttm_vmap);
@@ -82,7 +87,9 @@ void drm_gem_ttm_vunmap(struct drm_gem_object *gem, {struct ttm_buffer_object *bo =drm_gem_ttm_of_gem (gem); +dma_resv_lock (gem->resv,NULL );ttm_bo_vunmap (bo, map); +dma_resv_unlock (gem->resv); }EXPORT_SYMBOL (drm_gem_ttm_vunmap);
drivers/gpu/drm/imx/dcss/dcss-dev.c +3 -0
@@ -207,6 +207,7 @@ struct dcss_dev *dcss_dev_create(struct device *dev, bool hdmi_output) ret =dcss_submodules_init (dcss);if (ret) { +of_node_put (dcss->of_port);dev_err (dev,"submodules initialization failed\n" ); goto clks_err; }
@@ -237,6 +238,8 @@ void dcss_dev_destroy(struct dcss_dev *dcss)dcss_clocks_disable (dcss); } +of_node_put (dcss->of_port); +pm_runtime_disable (dcss->dev);dcss_submodules_stop (dcss);
drivers/gpu/drm/panel/panel-edp.c +1 -1
@@ -713,7 +713,7 @@ static int generic_edp_panel_probe(struct device *dev, struct panel_edp *panel)of_property_read_u32 (dev->of_node,"hpd-reliable-delay-ms" , &reliable_ms); desc->delay.hpd_reliable = reliable_ms;of_property_read_u32 (dev->of_node,"hpd-absent-delay-ms" , &absent_ms); - desc->delay.hpd_reliable = absent_ms; + desc->delay.hpd_absent = absent_ms;/* Power the panel on so we can read the EDID */ ret =pm_runtime_get_sync (dev);
drivers/gpu/drm/scheduler/sched_entity.c +3 -3
@@ -190,7 +190,7 @@ long drm_sched_entity_flush(struct drm_sched_entity *entity, long timeout) }EXPORT_SYMBOL (drm_sched_entity_flush); -static void drm_sched_entity_kill_jobs_irq_work (struct irq_work *wrk) +static void drm_sched_entity_kill_jobs_work (struct work_struct *wrk) {struct drm_sched_job *job =container_of (wrk,typeof (*job), work);
@@ -207,8 +207,8 @@ static void drm_sched_entity_kill_jobs_cb(struct dma_fence *f, struct drm_sched_job *job = container_of(cb, struct drm_sched_job, finish_cb); -init_irq_work (&job->work, drm_sched_entity_kill_jobs_irq_work); -irq_work_queue (&job->work); +INIT_WORK (&job->work, drm_sched_entity_kill_jobs_work); +schedule_work (&job->work); } static struct dma_fence *
drivers/i2c/busses/i2c-cadence.c +5 -25
@@ -388,9 +388,9 @@ static irqreturn_t cdns_i2c_slave_isr(void *ptr)*/ static irqreturn_t cdns_i2c_master_isr (void *ptr) { -unsigned int isr_status, avail_bytes, updatetx; +unsigned int isr_status, avail_bytes;unsigned int bytes_to_send; -bool hold_quirk; +bool updatetx;struct cdns_i2c *id = ptr;/* Signal completion only after everything is updated */ int done_flag =0 ;
@@ -410,11 +410,7 @@ static irqreturn_t cdns_i2c_master_isr(void *ptr)* Check if transfer size register needs to be updated again for a * large data receive operation. */ - updatetx =0 ; -if (id->recv_count > id->curr_recv_count) - updatetx =1 ; - - hold_quirk = (id->quirks &CDNS_I2C_BROKEN_HOLD_BIT ) && updatetx; + updatetx = id->recv_count > id->curr_recv_count;/* When receiving, handle data interrupt and completion interrupt */ if (id->p_recv_buf &&
@@ -445,7 +441,7 @@ static irqreturn_t cdns_i2c_master_isr(void *ptr)break ; } -if (cdns_is_holdquirk (id, hold_quirk)) +if (cdns_is_holdquirk (id, updatetx))break ; }
@@ -456,7 +452,7 @@ static irqreturn_t cdns_i2c_master_isr(void *ptr)* maintain transfer size non-zero while performing a large * receive operation. */ -if (cdns_is_holdquirk (id, hold_quirk)) { +if (cdns_is_holdquirk (id, updatetx)) {/* wait while fifo is full */ while (cdns_i2c_readreg (CDNS_I2C_XFER_SIZE_OFFSET ) != (id->curr_recv_count -CDNS_I2C_FIFO_DEPTH ))
@@ -478,22 +474,6 @@ static irqreturn_t cdns_i2c_master_isr(void *ptr) CDNS_I2C_XFER_SIZE_OFFSET); id->curr_recv_count = id->recv_count; } - }else if (id->recv_count && !hold_quirk && - !id->curr_recv_count) { - -/* Set the slave address in address register*/ -cdns_i2c_writereg (id->p_msg->addr &CDNS_I2C_ADDR_MASK , -CDNS_I2C_ADDR_OFFSET ); - -if (id->recv_count >CDNS_I2C_TRANSFER_SIZE ) { -cdns_i2c_writereg (CDNS_I2C_TRANSFER_SIZE , -CDNS_I2C_XFER_SIZE_OFFSET ); - id->curr_recv_count =CDNS_I2C_TRANSFER_SIZE ; - }else { -cdns_i2c_writereg (id->recv_count, -CDNS_I2C_XFER_SIZE_OFFSET ); - id->curr_recv_count = id->recv_count; - } }/* Clear hold (if not repeated start) and signal completion */
drivers/i2c/busses/i2c-mlxcpld.c +1 -1
@@ -49,7 +49,7 @@#define MLXCPLD_LPCI2C_NACK_IND 2#define MLXCPLD_I2C_FREQ_1000KHZ_SET 0x04 -#define MLXCPLD_I2C_FREQ_400KHZ_SET 0x0c +#define MLXCPLD_I2C_FREQ_400KHZ_SET 0x0e#define MLXCPLD_I2C_FREQ_100KHZ_SET 0x42enum mlxcpld_i2c_frequency {
drivers/infiniband/hw/irdma/cm.c +0 -50
62 lines not on this page · raw message
drivers/infiniband/hw/irdma/i40iw_hw.c +1 -0
@@ -201,6 +201,7 @@ void i40iw_init_hw(struct irdma_sc_dev *dev) dev->hw_attrs.uk_attrs.max_hw_read_sges =I40IW_MAX_SGE_RD ; dev->hw_attrs.max_hw_device_pages =I40IW_MAX_PUSH_PAGE_COUNT ; dev->hw_attrs.uk_attrs.max_hw_inline =I40IW_MAX_INLINE_DATA_SIZE ; + dev->hw_attrs.page_size_cap =SZ_4K |SZ_2M ; dev->hw_attrs.max_hw_ird =I40IW_MAX_IRD_SIZE ; dev->hw_attrs.max_hw_ord =I40IW_MAX_ORD_SIZE ; dev->hw_attrs.max_hw_wqes =I40IW_MAX_WQ_ENTRIES ;
drivers/infiniband/hw/irdma/icrdma_hw.c +1 -0
@@ -139,6 +139,7 @@ void icrdma_init_hw(struct irdma_sc_dev *dev) dev->cqp_db = dev->hw_regs[IRDMA_CQPDB ]; dev->cq_ack_db = dev->hw_regs[IRDMA_CQACK ]; dev->irq_ops = &icrdma_irq_ops; + dev->hw_attrs.page_size_cap =SZ_4K |SZ_2M |SZ_1G ; dev->hw_attrs.max_hw_ird =ICRDMA_MAX_IRD_SIZE ; dev->hw_attrs.max_hw_ord =ICRDMA_MAX_ORD_SIZE ; dev->hw_attrs.max_stat_inst =ICRDMA_MAX_STATS_COUNT ;
drivers/infiniband/hw/irdma/irdma.h +1 -0
@@ -127,6 +127,7 @@ struct irdma_hw_attrs {u64 max_hw_outbound_msg_size;u64 max_hw_inbound_msg_size;u64 max_mr_size; +u64 page_size_cap;u32 min_hw_qp_id;u32 min_hw_aeq_size;u32 max_hw_aeq_size;
drivers/infiniband/hw/irdma/verbs.c +2 -2
@@ -30,7 +30,7 @@ static int irdma_query_device(struct ib_device *ibdev, props->vendor_part_id = pcidev->device; props->hw_ver = rf->pcidev->revision; - props->page_size_cap =SZ_4K |SZ_2M |SZ_1G ; + props->page_size_cap = hw_attrs->page_size_cap; props->max_mr_size = hw_attrs->max_mr_size; props->max_qp = rf->max_qp - rf->used_qps; props->max_qp_wr = hw_attrs->max_qp_wr;
@@ -2764,7 +2764,7 @@ static struct ib_mr *irdma_reg_user_mr(struct ib_pd *pd, u64 start, u64 len,if (req.reg_type ==IRDMA_MEMREG_TYPE_MEM ) { iwmr->page_size =ib_umem_find_best_pgsz (region, -SZ_4K |SZ_2M |SZ_1G , + iwdev->rf->sc_dev.hw_attrs.page_size_cap, virt);if (unlikely (!iwmr->page_size)) {kfree (iwmr);
drivers/mmc/host/sdhci-omap.c +8 -6
@@ -1303,8 +1303,9 @@ static int sdhci_omap_probe(struct platform_device *pdev)/* * omap_device_pm_domain has callbacks to enable the main * functional clock, interface clock and also configure the -* SYSCONFIG register of omap devices. The callback will be invoked -* as part of pm_runtime_get_sync. +* SYSCONFIG register to clear any boot loader set voltage +* capabilities before calling sdhci_setup_host(). The +* callback will be invoked as part of pm_runtime_get_sync. */ pm_runtime_use_autosuspend (dev);pm_runtime_set_autosuspend_delay (dev,50 );
@@ -1446,7 +1447,8 @@ static int __maybe_unused sdhci_omap_runtime_suspend(struct device *dev)struct sdhci_pltfm_host *pltfm_host =sdhci_priv (host);struct sdhci_omap_host *omap_host =sdhci_pltfm_priv (pltfm_host); -sdhci_runtime_suspend_host (host); +if (omap_host->con != -EINVAL ) +sdhci_runtime_suspend_host (host);sdhci_omap_context_save (omap_host);
@@ -1463,10 +1465,10 @@ static int __maybe_unused sdhci_omap_runtime_resume(struct device *dev)pinctrl_pm_select_default_state (dev); -if (omap_host->con != -EINVAL ) +if (omap_host->con != -EINVAL ) {sdhci_omap_context_restore (omap_host); - -sdhci_runtime_resume_host (host,0 ); +sdhci_runtime_resume_host (host,0 ); + }return 0 ; }
drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c +4 -2
@@ -655,9 +655,10 @@ static int gpmi_nfc_compute_timings(struct gpmi_nand_data *this,unsigned int tRP_ps;bool use_half_period;int sample_delay_ps, sample_delay_factor; -u16 busy_timeout_cycles; +unsigned int busy_timeout_cycles;u8 wrn_dly_sel;unsigned long clk_rate, min_rate; +u64 busy_timeout_ps;if (sdr->tRC_min >=30000 ) {/* ONFI non-EDO modes [0-3] */
@@ -690,7 +691,8 @@ static int gpmi_nfc_compute_timings(struct gpmi_nand_data *this, addr_setup_cycles =TO_CYCLES (sdr->tALS_min, period_ps); data_setup_cycles =TO_CYCLES (sdr->tDS_min, period_ps); data_hold_cycles =TO_CYCLES (sdr->tDH_min, period_ps); - busy_timeout_cycles =TO_CYCLES (sdr->tWB_max + sdr->tR_max, period_ps); + busy_timeout_ps =max (sdr->tBERS_max, sdr->tPROG_max); + busy_timeout_cycles =TO_CYCLES (busy_timeout_ps, period_ps); hw->timing0 =BF_GPMI_TIMING0_ADDRESS_SETUP (addr_setup_cycles) | BF_GPMI_TIMING0_DATA_HOLD(data_hold_cycles) |
drivers/net/amt.c +189 -54
479 lines not on this page · raw message
drivers/net/can/rcar/rcar_canfd.c +1 -0
@@ -1850,6 +1850,7 @@ static int rcar_canfd_probe(struct platform_device *pdev) of_child =of_get_child_by_name (pdev->dev.of_node, name);if (of_child &&of_device_is_available (of_child)) channels_mask |=BIT (i); +of_node_put (of_child); }if (chip_id !=RENESAS_RZG2L ) {
drivers/net/dsa/microchip/ksz_common.c +4 -1
@@ -447,18 +447,21 @@ int ksz_switch_register(struct ksz_device *dev, ports =of_get_child_by_name (dev->dev->of_node,"ethernet-ports" );if (!ports) ports =of_get_child_by_name (dev->dev->of_node,"ports" ); -if (ports) +if (ports) {for_each_available_child_of_node (ports, port) {if (of_property_read_u32 (port,"reg" , &port_num))continue ;if (!(dev->port_mask &BIT (port_num))) {of_node_put (port); +of_node_put (ports);return -EINVAL ; }of_get_phy_mode (port, &dev->ports[port_num].interface); } +of_node_put (ports); + } dev->synclko_125 =of_property_read_bool (dev->dev->of_node,"microchip,synclko-125" ); dev->synclko_disable = of_property_read_bool(dev->dev->of_node,
drivers/net/dsa/sja1105/sja1105_main.c +16 -0
@@ -3383,12 +3383,28 @@ static const struct of_device_id sja1105_dt_ids[] = { };MODULE_DEVICE_TABLE (of, sja1105_dt_ids); +static const struct spi_device_id sja1105_spi_ids[] = { + {"sja1105e" }, + {"sja1105t" }, + {"sja1105p" }, + {"sja1105q" }, + {"sja1105r" }, + {"sja1105s" }, + {"sja1110a" }, + {"sja1110b" }, + {"sja1110c" }, + {"sja1110d" }, + { }, +}; +MODULE_DEVICE_TABLE (spi, sja1105_spi_ids); +static struct spi_driver sja1105_driver = { .driver = { .name ="sja1105" , .owner =THIS_MODULE , .of_match_table =of_match_ptr (sja1105_dt_ids), }, + .id_table = sja1105_spi_ids, .probe = sja1105_probe, .remove = sja1105_remove, .shutdown = sja1105_shutdown,
drivers/net/dsa/vitesse-vsc73xx-spi.c +10 -0
@@ -205,10 +205,20 @@ static const struct of_device_id vsc73xx_of_match[] = { };MODULE_DEVICE_TABLE (of, vsc73xx_of_match); +static const struct spi_device_id vsc73xx_spi_ids[] = { + {"vsc7385" }, + {"vsc7388" }, + {"vsc7395" }, + {"vsc7398" }, + { }, +}; +MODULE_DEVICE_TABLE (spi, vsc73xx_spi_ids); +static struct spi_driver vsc73xx_spi_driver = { .probe = vsc73xx_spi_probe, .remove = vsc73xx_spi_remove, .shutdown = vsc73xx_spi_shutdown, + .id_table = vsc73xx_spi_ids, .driver = { .name ="vsc73xx-spi" , .of_match_table = vsc73xx_of_match,
drivers/net/ethernet/chelsio/inline_crypto/chtls/chtls_cm.c +3 -3
@@ -1236,8 +1236,8 @@ static struct sock *chtls_recv_sock(struct sock *lsk, csk->sndbuf = newsk->sk_sndbuf; csk->smac_idx = ((struct port_info *)netdev_priv (ndev))->smt_idx;RCV_WSCALE (tp) =select_rcv_wscale (tcp_full_space (newsk), -sock_net (newsk)-> - ipv4.sysctl_tcp_window_scaling, +READ_ONCE (sock_net (newsk)-> + ipv4.sysctl_tcp_window_scaling), tp->window_clamp);neigh_release (n);inet_inherit_port (&tcp_hashinfo, lsk, newsk);
@@ -1384,7 +1384,7 @@ static void chtls_pass_accept_request(struct sock *sk,#endif }if (req->tcpopt.wsf <=14 && -sock_net (sk)->ipv4.sysctl_tcp_window_scaling) { +READ_ONCE (sock_net (sk)->ipv4.sysctl_tcp_window_scaling)) {inet_rsk (oreq)->wscale_ok =1 ;inet_rsk (oreq)->snd_wscale = req->tcpopt.wsf; }
drivers/net/ethernet/emulex/benet/be_cmds.c +5 -5
@@ -2287,7 +2287,7 @@ int be_cmd_get_beacon_state(struct be_adapter *adapter, u8 port_num, u32 *state)/* Uses sync mcc */ int be_cmd_read_port_transceiver_data (struct be_adapter *adapter, -u8 page_num,u8 *data) +u8 page_num,u32 off,u32 len,u8 *data) {struct be_dma_mem cmd;struct be_mcc_wrb *wrb;
@@ -2321,10 +2321,10 @@ int be_cmd_read_port_transceiver_data(struct be_adapter *adapter, req->port =cpu_to_le32 (adapter->hba_port_num); req->page_num =cpu_to_le32 (page_num); status =be_mcc_notify_wait (adapter); -if (!status) { +if (!status && len >0 ) {struct be_cmd_resp_port_type *resp = cmd.va; -memcpy (data, resp->page_data,PAGE_DATA_LEN ); +memcpy (data, resp->page_data + off, len); } err:mutex_unlock (&adapter->mcc_lock);
@@ -2415,7 +2415,7 @@ int be_cmd_query_cable_type(struct be_adapter *adapter)int status; status =be_cmd_read_port_transceiver_data (adapter,TR_PAGE_A0 , - page_data); +0 ,PAGE_DATA_LEN , page_data);if (!status) {switch (adapter->phy.interface_type) {case PHY_TYPE_QSFP :
@@ -2440,7 +2440,7 @@ int be_cmd_query_sfp_info(struct be_adapter *adapter)int status; status =be_cmd_read_port_transceiver_data (adapter,TR_PAGE_A0 , - page_data); +0 ,PAGE_DATA_LEN , page_data);if (!status) {strlcpy (adapter->phy.vendor_name, page_data +SFP_VENDOR_NAME_OFFSET ,SFP_VENDOR_NAME_LEN -1 );
drivers/net/ethernet/emulex/benet/be_cmds.h +1 -1
@@ -2427,7 +2427,7 @@ int be_cmd_set_beacon_state(struct be_adapter *adapter, u8 port_num, u8 beacon,int be_cmd_get_beacon_state (struct be_adapter *adapter,u8 port_num,u32 *state);int be_cmd_read_port_transceiver_data (struct be_adapter *adapter, -u8 page_num,u8 *data); +u8 page_num,u32 off,u32 len,u8 *data);int be_cmd_query_cable_type (struct be_adapter *adapter);int be_cmd_query_sfp_info (struct be_adapter *adapter); int lancer_cmd_read_object(struct be_adapter *adapter, struct be_dma_mem *cmd,
drivers/net/ethernet/emulex/benet/be_ethtool.c +19 -12
@@ -1344,7 +1344,7 @@ static int be_get_module_info(struct net_device *netdev,return -EOPNOTSUPP ; status =be_cmd_read_port_transceiver_data (adapter,TR_PAGE_A0 , - page_data); +0 ,PAGE_DATA_LEN , page_data);if (!status) {if (!page_data[SFP_PLUS_SFF_8472_COMP ]) { modinfo->type =ETH_MODULE_SFF_8079 ;
@@ -1362,25 +1362,32 @@ static int be_get_module_eeprom(struct net_device *netdev, {struct be_adapter *adapter =netdev_priv (netdev);int status; +u32 begin, end;if (!check_privilege (adapter,MAX_PRIVILEGES ))return -EOPNOTSUPP ; - status =be_cmd_read_port_transceiver_data (adapter,TR_PAGE_A0 , - data); -if (status) - goto err; + begin = eeprom->offset; + end = eeprom->offset + eeprom->len; + +if (begin <PAGE_DATA_LEN ) { + status =be_cmd_read_port_transceiver_data (adapter,TR_PAGE_A0 , begin, +min_t (u32, end,PAGE_DATA_LEN ) - begin, + data); +if (status) + goto err; + + data +=PAGE_DATA_LEN - begin; + begin =PAGE_DATA_LEN ; + } -if (eeprom->offset + eeprom->len >PAGE_DATA_LEN ) { - status =be_cmd_read_port_transceiver_data (adapter, -TR_PAGE_A2 , - data + -PAGE_DATA_LEN ); +if (end >PAGE_DATA_LEN ) { + status =be_cmd_read_port_transceiver_data (adapter,TR_PAGE_A2 , + begin -PAGE_DATA_LEN , + end - begin, data);if (status) goto err; } -if (eeprom->offset) -memcpy (data, data + eeprom->offset, eeprom->len); err:return be_cmd_status (status); }
drivers/net/ethernet/intel/e1000e/hw.h +0 -1
@@ -630,7 +630,6 @@ struct e1000_phy_info {bool disable_polarity_correction;bool is_mdix;bool polarity_correction; -bool reset_disable;bool speed_downgraded;bool autoneg_wait_to_complete; };
drivers/net/ethernet/intel/e1000e/ich8lan.c +0 -4
@@ -2050,10 +2050,6 @@ static s32 e1000_check_reset_block_ich8lan(struct e1000_hw *hw)bool blocked = false;int i =0 ; -/* Check the PHY (LCD) reset flag */ -if (hw->phy.reset_disable) -return true; -while ((blocked = !(er32 (FWSM ) &E1000_ICH_FWSM_RSPCIPHY )) && (i++ <30 ))usleep_range (10000 ,11000 );
drivers/net/ethernet/intel/e1000e/ich8lan.h +0 -1
@@ -271,7 +271,6 @@#define I217_CGFREG_ENABLE_MTA_RESET 0x0002#define I217_MEMPWR PHY_REG(772, 26)#define I217_MEMPWR_DISABLE_SMB_RELEASE 0x0010 -#define I217_MEMPWR_MOEM 0x1000/* Receive Address Initial CRC Calculation */ #define E1000_PCH_RAICC (_n) (0x05F50 + ((_n) * 4))
drivers/net/ethernet/intel/e1000e/netdev.c +4 -26
@@ -6494,6 +6494,10 @@ static void e1000e_s0ix_exit_flow(struct e1000_adapter *adapter)if (er32 (FWSM ) &E1000_ICH_FWSM_FW_VALID && hw->mac.type >= e1000_pch_adp) { +/* Keep the GPT clock enabled for CSME */ + mac_data =er32 (FEXTNVM ); + mac_data |=BIT (3 ); +ew32 (FEXTNVM , mac_data);/* Request ME unconfigure the device from S0ix */ mac_data =er32 (H2ME ); mac_data &= ~E1000_H2ME_START_DPG ;
@@ -6987,21 +6991,8 @@ static __maybe_unused int e1000e_pm_suspend(struct device *dev)struct net_device *netdev =pci_get_drvdata (to_pci_dev (dev));struct e1000_adapter *adapter =netdev_priv (netdev);struct pci_dev *pdev =to_pci_dev (dev); -struct e1000_hw *hw = &adapter->hw; -u16 phy_data;int rc; -if (er32 (FWSM ) &E1000_ICH_FWSM_FW_VALID && - hw->mac.type >= e1000_pch_adp) { -/* Mask OEM Bits / Gig Disable / Restart AN (772_26[12] = 1) */ -e1e_rphy (hw,I217_MEMPWR , &phy_data); - phy_data |=I217_MEMPWR_MOEM ; -e1e_wphy (hw,I217_MEMPWR , phy_data); - -/* Disable LCD reset */ - hw->phy.reset_disable = true; - } -e1000e_flush_lpic (pdev);e1000e_pm_freeze (dev);
@@ -7023,8 +7014,6 @@ static __maybe_unused int e1000e_pm_resume(struct device *dev)struct net_device *netdev =pci_get_drvdata (to_pci_dev (dev));struct e1000_adapter *adapter =netdev_priv (netdev);struct pci_dev *pdev =to_pci_dev (dev); -struct e1000_hw *hw = &adapter->hw; -u16 phy_data;int rc;/* Introduce S0ix implementation */
@@ -7035,17 +7024,6 @@ static __maybe_unused int e1000e_pm_resume(struct device *dev)if (rc)return rc; -if (er32 (FWSM ) &E1000_ICH_FWSM_FW_VALID && - hw->mac.type >= e1000_pch_adp) { -/* Unmask OEM Bits / Gig Disable / Restart AN 772_26[12] = 0 */ -e1e_rphy (hw,I217_MEMPWR , &phy_data); - phy_data &= ~I217_MEMPWR_MOEM ; -e1e_wphy (hw,I217_MEMPWR , phy_data); - -/* Enable LCD reset */ - hw->phy.reset_disable = false; - } -return e1000e_pm_thaw (dev); }
drivers/net/ethernet/intel/i40e/i40e_main.c +5 -8
@@ -10645,7 +10645,7 @@ static int i40e_reset(struct i40e_pf *pf)**/ static void i40e_rebuild (struct i40e_pf *pf,bool reinit,bool lock_acquired) { -int old_recovery_mode_bit =test_bit (__I40E_RECOVERY_MODE, pf->state); +const bool is_recovery_mode_reported =i40e_check_recovery_mode (pf);struct i40e_vsi *vsi = pf->vsi[pf->lan_vsi];struct i40e_hw *hw = &pf->hw;i40e_status ret;
@@ -10653,13 +10653,11 @@ static void i40e_rebuild(struct i40e_pf *pf, bool reinit, bool lock_acquired)int v;if (test_bit (__I40E_EMP_RESET_INTR_RECEIVED, pf->state) && -i40e_check_recovery_mode (pf)) { + is_recovery_mode_reported)i40e_set_ethtool_ops (pf->vsi[pf->lan_vsi]->netdev); - }if (test_bit (__I40E_DOWN, pf->state) && - !test_bit (__I40E_RECOVERY_MODE, pf->state) && - !old_recovery_mode_bit) + !test_bit (__I40E_RECOVERY_MODE, pf->state)) goto clear_recovery;dev_dbg (&pf->pdev->dev,"Rebuilding internal switch\n" );
@@ -10686,13 +10684,12 @@ static void i40e_rebuild(struct i40e_pf *pf, bool reinit, bool lock_acquired)* accordingly with regard to resources initialization * and deinitialization */ -if (test_bit (__I40E_RECOVERY_MODE, pf->state) || - old_recovery_mode_bit) { +if (test_bit (__I40E_RECOVERY_MODE, pf->state)) {if (i40e_get_capabilities (pf, i40e_aqc_opc_list_func_capabilities)) goto end_unlock; -if (test_bit (__I40E_RECOVERY_MODE, pf->state)) { +if (is_recovery_mode_reported) {/* we're staying in recovery mode so we'll reinitialize * misc vector here */
drivers/net/ethernet/intel/iavf/iavf.h +11 -3
@@ -64,7 +64,6 @@ struct iavf_vsi {u16 id;DECLARE_BITMAP (state, __IAVF_VSI_STATE_SIZE__);int base_vector; -u16 work_limit;u16 qs_handle;void *priv;/* client driver data reference. */ };
@@ -159,8 +158,12 @@ struct iavf_vlan {struct iavf_vlan_filter {struct list_head list;struct iavf_vlan vlan; -bool remove;/* filter needs to be removed */ -bool add;/* filter needs to be added */ +struct { +u8 is_new_vlan:1 ;/* filter is new, wait for PF answer */ +u8 remove:1 ;/* filter needs to be removed */ +u8 add:1 ;/* filter needs to be added */ +u8 padding:5 ; + }; };#define IAVF_MAX_TRAFFIC_CLASS 4
@@ -461,6 +464,10 @@ static inline const char *iavf_state_str(enum iavf_state_t state)return "__IAVF_INIT_VERSION_CHECK" ;case __IAVF_INIT_GET_RESOURCES:return "__IAVF_INIT_GET_RESOURCES" ; +case __IAVF_INIT_EXTENDED_CAPS: +return "__IAVF_INIT_EXTENDED_CAPS" ; +case __IAVF_INIT_CONFIG_ADAPTER: +return "__IAVF_INIT_CONFIG_ADAPTER" ;case __IAVF_INIT_SW:return "__IAVF_INIT_SW" ;case __IAVF_INIT_FAILED:
@@ -520,6 +527,7 @@ int iavf_get_vf_config(struct iavf_adapter *adapter);int iavf_get_vf_vlan_v2_caps (struct iavf_adapter *adapter);int iavf_send_vf_offload_vlan_v2_msg (struct iavf_adapter *adapter);void iavf_set_queue_vlan_tag_loc (struct iavf_adapter *adapter); +u16 iavf_get_num_vlans_added (struct iavf_adapter *adapter);void iavf_irq_enable (struct iavf_adapter *adapter,bool flush);void iavf_configure_queues (struct iavf_adapter *adapter);void iavf_deconfigure_queues (struct iavf_adapter *adapter);
drivers/net/ethernet/intel/iavf/iavf_ethtool.c +0 -10
@@ -692,12 +692,8 @@ static int __iavf_get_coalesce(struct net_device *netdev, struct ethtool_coalesce *ec, int queue) {struct iavf_adapter *adapter =netdev_priv (netdev); -struct iavf_vsi *vsi = &adapter->vsi;struct iavf_ring *rx_ring, *tx_ring; - ec->tx_max_coalesced_frames = vsi->work_limit; - ec->rx_max_coalesced_frames = vsi->work_limit; -/* Rx and Tx usecs per queue value. If user doesn't specify the * queue, return queue 0's value to represent. */
@@ -825,12 +821,8 @@ static int __iavf_set_coalesce(struct net_device *netdev, struct ethtool_coalesce *ec, int queue) {struct iavf_adapter *adapter =netdev_priv (netdev); -struct iavf_vsi *vsi = &adapter->vsi;int i; -if (ec->tx_max_coalesced_frames_irq || ec->rx_max_coalesced_frames_irq) - vsi->work_limit = ec->tx_max_coalesced_frames_irq; -if (ec->rx_coalesce_usecs ==0 ) {if (ec->use_adaptive_rx_coalesce)netif_info (adapter, drv, netdev,"rx-usecs=0, need to disable adaptive-rx for a complete disable\n" );
@@ -1969,8 +1961,6 @@ static int iavf_set_rxfh(struct net_device *netdev, const u32 *indir,static const struct ethtool_ops iavf_ethtool_ops = { .supported_coalesce_params =ETHTOOL_COALESCE_USECS | -ETHTOOL_COALESCE_MAX_FRAMES | -ETHTOOL_COALESCE_MAX_FRAMES_IRQ |ETHTOOL_COALESCE_USE_ADAPTIVE , .get_drvinfo = iavf_get_drvinfo, .get_link = ethtool_op_get_link,
drivers/net/ethernet/intel/iavf/iavf_main.c +4 -7
@@ -843,7 +843,7 @@ static void iavf_restore_filters(struct iavf_adapter *adapter)* iavf_get_num_vlans_added - get number of VLANs added * @adapter: board private structure */ -static u16 iavf_get_num_vlans_added (struct iavf_adapter *adapter) +u16 iavf_get_num_vlans_added (struct iavf_adapter *adapter) {return bitmap_weight (adapter->vsi.active_cvlans,VLAN_N_VID ) +bitmap_weight (adapter->vsi.active_svlans,VLAN_N_VID );
@@ -906,11 +906,6 @@ static int iavf_vlan_rx_add_vid(struct net_device *netdev,if (!iavf_add_vlan (adapter,IAVF_VLAN (vid,be16_to_cpu (proto))))return -ENOMEM ; -if (proto ==cpu_to_be16 (ETH_P_8021Q )) -set_bit (vid, adapter->vsi.active_cvlans); -else -set_bit (vid, adapter->vsi.active_svlans); -return 0 ; }
@@ -2245,7 +2240,6 @@ int iavf_parse_vf_resource_msg(struct iavf_adapter *adapter) adapter->vsi.back = adapter; adapter->vsi.base_vector =1 ; - adapter->vsi.work_limit =IAVF_DEFAULT_IRQ_WORK ; vsi->netdev = adapter->netdev; vsi->qs_handle = adapter->vsi_res->qset_handle;if (adapter->vf_res->vf_cap_flags &VIRTCHNL_VF_OFFLOAD_RSS_PF ) {
@@ -2956,6 +2950,9 @@ static void iavf_reset_task(struct work_struct *work) adapter->aq_required |=IAVF_FLAG_AQ_ADD_CLOUD_FILTER ;iavf_misc_irq_enable (adapter); +bitmap_clear (adapter->vsi.active_cvlans,0 ,VLAN_N_VID ); +bitmap_clear (adapter->vsi.active_svlans,0 ,VLAN_N_VID ); +mod_delayed_work (iavf_wq, &adapter->watchdog_task,2 );/* We were running when the reset started, so we need to restore some
drivers/net/ethernet/intel/iavf/iavf_txrx.c +3 -4
@@ -194,7 +194,7 @@ static bool iavf_clean_tx_irq(struct iavf_vsi *vsi,struct iavf_tx_buffer *tx_buf;struct iavf_tx_desc *tx_desc;unsigned int total_bytes =0 , total_packets =0 ; -unsigned int budget = vsi->work_limit; +unsigned int budget =IAVF_DEFAULT_IRQ_WORK ; tx_buf = &tx_ring->tx_bi[i]; tx_desc =IAVF_TX_DESC (tx_ring, i);
@@ -1285,11 +1285,10 @@ static struct iavf_rx_buffer *iavf_get_rx_buffer(struct iavf_ring *rx_ring, {struct iavf_rx_buffer *rx_buffer; -if (!size) -return NULL ; - rx_buffer = &rx_ring->rx_bi[rx_ring->next_to_clean];prefetchw (rx_buffer->page); +if (!size) +return rx_buffer;/* we are reusing so sync this buffer for CPU use */ dma_sync_single_range_for_cpu(rx_ring->dev,
drivers/net/ethernet/intel/iavf/iavf_virtchnl.c +63 -2
111 lines not on this page · raw message
drivers/net/ethernet/intel/igc/igc_main.c +3 -0
@@ -6171,6 +6171,9 @@ u32 igc_rd32(struct igc_hw *hw, u32 reg)u8 __iomem *hw_addr =READ_ONCE (hw->hw_addr);u32 value =0 ; +if (IGC_REMOVED (hw_addr)) +return ~value; + value =readl (&hw_addr[reg]);/* reads should not return all F's */
drivers/net/ethernet/intel/igc/igc_regs.h +4 -1
@@ -306,7 +306,8 @@ u32 igc_rd32(struct igc_hw *hw, u32 reg);#define wr32 (reg, val) \ do { \ u8 __iomem *hw_addr = READ_ONCE((hw)->hw_addr); \ - writel((val), &hw_addr[(reg)]); \ + if (!IGC_REMOVED(hw_addr)) \ + writel((val), &hw_addr[(reg)]); \ } while (0)#define rd32 (reg) (igc_rd32(hw, reg))
@@ -318,4 +319,6 @@ do { \#define array_rd32 (reg, offset) (igc_rd32(hw, (reg) + ((offset) << 2))) +#define IGC_REMOVED (h) unlikely(!(h)) +#endif
drivers/net/ethernet/intel/ixgbe/ixgbe.h +1 -0
@@ -779,6 +779,7 @@ struct ixgbe_adapter {#ifdef CONFIG_IXGBE_IPSEC struct ixgbe_ipsec *ipsec;#endif /* CONFIG_IXGBE_IPSEC */ +spinlock_t vfs_lock; };static inline int ixgbe_determine_xdp_q_idx (int cpu)
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +3 -0
@@ -6402,6 +6402,9 @@ static int ixgbe_sw_init(struct ixgbe_adapter *adapter,/* n-tuple support exists, always init our spinlock */ spin_lock_init (&adapter->fdir_perfect_lock); +/* init spinlock to avoid concurrency of VF resources */ +spin_lock_init (&adapter->vfs_lock); +#ifdef CONFIG_IXGBE_DCB ixgbe_init_dcb (adapter);#endif
drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c +6 -0
@@ -205,10 +205,13 @@ void ixgbe_enable_sriov(struct ixgbe_adapter *adapter, unsigned int max_vfs)int ixgbe_disable_sriov (struct ixgbe_adapter *adapter) {unsigned int num_vfs = adapter->num_vfs, vf; +unsigned long flags;int rss; +spin_lock_irqsave (&adapter->vfs_lock, flags);/* set num VFs to 0 to prevent access to vfinfo */ adapter->num_vfs =0 ; +spin_unlock_irqrestore (&adapter->vfs_lock, flags);/* put the reference to all of the vf devices */ for (vf =0 ; vf < num_vfs; ++vf) {
@@ -1355,8 +1358,10 @@ static void ixgbe_rcv_ack_from_vf(struct ixgbe_adapter *adapter, u32 vf)void ixgbe_msg_task (struct ixgbe_adapter *adapter) {struct ixgbe_hw *hw = &adapter->hw; +unsigned long flags;u32 vf; +spin_lock_irqsave (&adapter->vfs_lock, flags);for (vf =0 ; vf < adapter->num_vfs; vf++) {/* process any reset requests */ if (!ixgbe_check_for_rst (hw, vf))
@@ -1370,6 +1375,7 @@ void ixgbe_msg_task(struct ixgbe_adapter *adapter)if (!ixgbe_check_for_ack (hw, vf))ixgbe_rcv_ack_from_vf (adapter, vf); } +spin_unlock_irqrestore (&adapter->vfs_lock, flags); }static inline void ixgbe_ping_vf (struct ixgbe_adapter *adapter,int vf)
drivers/net/ethernet/marvell/prestera/prestera_flower.c +3 -3
@@ -139,12 +139,12 @@ static int prestera_flower_parse_meta(struct prestera_acl_rule *rule, } port =netdev_priv (ingress_dev); - mask =htons (0x1FFF ); - key =htons (port->hw_id); + mask =htons (0x1FFF <<3 ); + key =htons (port->hw_id <<3 );rule_match_set (r_match->key,SYS_PORT , key);rule_match_set (r_match->mask,SYS_PORT , mask); - mask =htons (0x1FF ); + mask =htons (0x3FF ); key =htons (port->dev_id);rule_match_set (r_match->key,SYS_DEV , key);rule_match_set (r_match->mask,SYS_DEV , mask);
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c +5 -4
@@ -5387,7 +5387,7 @@ static bool mlxsw_sp_fi_is_gateway(const struct mlxsw_sp *mlxsw_sp, {const struct fib_nh *nh =fib_info_nh (fi,0 ); -return nh->fib_nh_scope ==RT_SCOPE_LINK || +return nh->fib_nh_gw_family ||mlxsw_sp_nexthop4_ipip_type (mlxsw_sp, nh,NULL ); }
@@ -10263,7 +10263,7 @@ static void mlxsw_sp_mp4_hash_init(struct mlxsw_sp *mlxsw_sp,unsigned long *fields = config->fields;u32 hash_fields; -switch (net->ipv4.sysctl_fib_multipath_hash_policy) { +switch (READ_ONCE (net->ipv4.sysctl_fib_multipath_hash_policy)) {case 0 :mlxsw_sp_mp4_hash_outer_addr (config);break ;
@@ -10281,7 +10281,7 @@ static void mlxsw_sp_mp4_hash_init(struct mlxsw_sp *mlxsw_sp,mlxsw_sp_mp_hash_inner_l3 (config);break ;case 3 : - hash_fields = net->ipv4.sysctl_fib_multipath_hash_fields; + hash_fields =READ_ONCE (net->ipv4.sysctl_fib_multipath_hash_fields);/* Outer */ MLXSW_SP_MP_HASH_HEADER_SET (headers,IPV4_EN_NOT_TCP_NOT_UDP );MLXSW_SP_MP_HASH_HEADER_SET (headers,IPV4_EN_TCP_UDP );
@@ -10462,13 +10462,14 @@ static int mlxsw_sp_dscp_init(struct mlxsw_sp *mlxsw_sp)static int __mlxsw_sp_router_init (struct mlxsw_sp *mlxsw_sp) {struct net *net =mlxsw_sp_net (mlxsw_sp); -bool usp = net->ipv4.sysctl_ip_fwd_update_priority;char rgcr_pl[MLXSW_REG_RGCR_LEN ];u64 max_rifs; +bool usp;if (!MLXSW_CORE_RES_VALID (mlxsw_sp->core,MAX_RIFS ))return -EIO ; max_rifs =MLXSW_CORE_RES_GET (mlxsw_sp->core,MAX_RIFS ); + usp =READ_ONCE (net->ipv4.sysctl_ip_fwd_update_priority);mlxsw_reg_rgcr_pack (rgcr_pl, true, true);mlxsw_reg_rgcr_max_router_interfaces_set (rgcr_pl, max_rifs);
drivers/net/ethernet/microchip/lan966x/lan966x_mac.c +80 -32
166 lines not on this page · raw message
drivers/net/ethernet/netronome/nfp/flower/action.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/dwmac-mediatek.c +21 -28
49 lines not on this page · raw message
drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c +0 -8
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +11 -11
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c +7 -1
Lines of this file are not shown. View the raw message.
drivers/pci/controller/pci-hyperv.c +73 -26
99 lines not on this page · raw message
drivers/pinctrl/mvebu/pinctrl-armada-37xx.c +42 -37
79 lines not on this page · raw message
drivers/pinctrl/pinctrl-ocelot.c +137 -77
214 lines not on this page · raw message
drivers/pinctrl/ralink/pinctrl-mt7620.c +126 -126
252 lines not on this page · raw message
drivers/pinctrl/ralink/pinctrl-mt7621.c +15 -15
Lines of this file are not shown. View the raw message.
drivers/pinctrl/ralink/pinctrl-ralink.c new file +351 -0
351 lines not on this page · raw message
drivers/pinctrl/ralink/pinctrl-ralink.h new file +53 -0
53 lines not on this page · raw message
drivers/pinctrl/ralink/pinctrl-rt2880.c deleted +0 -349
349 lines not on this page · raw message
drivers/pinctrl/ralink/pinctrl-rt288x.c +10 -10
Lines of this file are not shown. View the raw message.
drivers/pinctrl/ralink/pinctrl-rt305x.c +22 -22
44 lines not on this page · raw message
drivers/pinctrl/ralink/pinctrl-rt3883.c +14 -14
Lines of this file are not shown. View the raw message.
drivers/pinctrl/ralink/pinmux.h deleted +0 -53
53 lines not on this page · raw message
drivers/power/reset/arm-versatile-reboot.c +1 -0
Lines of this file are not shown. View the raw message.
kernel/events/core.c +31 -14
45 lines not on this page · raw message
kernel/watch_queue.c +37 -16
53 lines not on this page · raw message
net/dsa/port.c +59 -4
63 lines not on this page · raw message
net/dsa/switch.c +0 -58
58 lines not on this page · raw message
net/ipv4/igmp.c +28 -21
49 lines not on this page · raw message
net/ipv4/sysctl_net_ipv4.c +5 -60
65 lines not on this page · raw message
net/ipv4/tcp_input.c +31 -20
51 lines not on this page · raw message
tools/testing/selftests/kvm/rseq_test.c +5 -3
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.