Skip to contentSkip to conversation

Linux 5.18.15

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Jul 29, 2022 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'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 FDB

Hristo 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

author maintainer
#1 lore raw
Makefile +1 -1
index d3723b2f6d6c..5957afa29692 100644
@@ -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
index c6ca1b9cbf71..8e236a022156 100644
@@ -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
index fe1742c4ca49..1f156098a5bf 100644
@@ -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
index 5d09ded0c491..49889f171e86 100644
@@ -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
index 10a3bfc1eb23..38a3e86e665e 100644
@@ -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
index 46427b785bc8..d440f6726df0 100644
@@ -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
index 0b64e894b383..8179fa4d5004 100644
@@ -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
index 57ca7aa0e169..b8e26b6b5523 100644
@@ -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
index d1535ac13e89..81cb90955d68 100644
@@ -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
index fa4c350c1bf9..a6c78b9c730b 100644
@@ -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
index f25a6c8edfc7..04f058acc4d3 100644
@@ -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
index 8ba28409fb74..630d0483c4e0 100644
@@ -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
index 2c95f1697c76..e6ef6f9b7691 100644
@@ -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
index 501bcf0f1809..8b2c92ba7ca1 100644
@@ -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
new file mode 100644
index 000000000000..5ce9f4f69d8f
@@ -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
index 67c9588e89df..9341d892533a 100644
@@ -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
index b6a4c95ae003..245b6d9a3650 100644
@@ -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
index 33683295a0bf..64befd6f702b 100644
@@ -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
index b6d3a57e27ed..7f8e2fed2988 100644
@@ -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
index 810965bd0692..a2575195c4e0 100644
@@ -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
index d5962a34c01d..e5fc875990c4 100644
@@ -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
index c849533ca83e..3f5750cc2673 100644
@@ -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
index f7bfcf63d48e..701a258d2e11 100644
@@ -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
index 191c56064f19..6b25b2f4f5a3 100644
@@ -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
index 3d6f8ee355bf..630cfa4ddd46 100644
@@ -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
index 56aa424fd71d..815cc561386b 100644
@@ -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	0x42
 
 enum 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
index e46fc110004d..50299f58b6b3 100644
@@ -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
index cf53b17510cd..5986fd906308 100644
@@ -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
index 46c12334c735..4789e85d717b 100644
@@ -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
index 52f3e88f8569..6daa149dcbda 100644
@@ -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
index 64e27c2821f9..ada23040cb65 100644
@@ -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
index 44b14c9dc9a7..a626028336d3 100644
@@ -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
index 589996cef5db..8d457d2c3bcc 100644
@@ -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
index 8014b18d9391..aa0bcf01e20a 100644
@@ -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
index b33841c6507a..7734c6b1baca 100644
@@ -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
index 3110895358d8..97a92e6da60d 100644
@@ -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
index 7c760aa65540..ddfe9208529a 100644
@@ -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
index 528eb0f223b1..b4f5e57d0285 100644
@@ -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
index db1f3b908582..e2085c68c0ee 100644
@@ -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
index dfa784339781..bd0df189d871 100644
@@ -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
index 13382df2f2ef..bcf680e83811 100644
@@ -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
index e6c8e6d5234f..9466f65a6da7 100644
@@ -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
index 638a3ddd7ada..2504b11c3169 100644
@@ -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
index fa06f68c8c80..f1729940e46c 100644
@@ -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
index 77eb9c726205..6f01bffd7e5c 100644
@@ -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
index 49aed3e506a6..0ea0361cd86b 100644
@@ -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
index 3bb56714beb0..e535d4c3da49 100644
@@ -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
index f3ecb3bca33d..2e2c153ce46a 100644
@@ -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
index 978f651c6b09..06d18797d25a 100644
@@ -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
index 74b2c590ed5d..38e46e9ba8bb 100644
@@ -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
index e197a33d93a0..026c3b65fc37 100644
@@ -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
index 921a4d977d65..8813b4dd6872 100644
@@ -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
index c4a4954aa317..6c403f112d29 100644
@@ -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
index d4e63f0644c3..a1e69c734863 100644
@@ -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
index 921959a980ee..d8cfa4a7de0f 100644
@@ -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
index 7ad663c5b1ab..c00d6c4ed37c 100644
@@ -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
index 1b9421e844a9..79036767c99d 100644

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
index fd41db65fe1d..af3339041134 100644

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

drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c +0 -8
index abfb3cd5958d..9c3055ee2608 100644

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

drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +11 -11
index 2525a80353b7..6a7f63a58aef 100644

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

drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c +7 -1
index 11e1055e8260..9f5cac4000da 100644

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

drivers/net/usb/ax88179_178a.c +13 -13
index 873f6deabbd1..dc1f6d8444ad 100644

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

drivers/net/usb/r8152.c +14 -2
index ee41088c5251..6b4efae11e57 100644

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/Kconfig +6 -10
index a76ee3deb8c3..d0f0a8f2b9b7 100644

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

drivers/pinctrl/ralink/Makefile +1 -1
index a15610206ced..2c1323b74e96 100644

Lines of this file are not shown. View the 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
index 7d96144c474e..14b89cb43d4c 100644

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
index 0744aebbace5..40c45140ff8a 100644

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
index 3e0e1b4caa64..0b8674dbe188 100644

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/pinctrl/stm32/pinctrl-stm32.c +11 -7
index f7c9459f6628..edd0d0af5c14 100644

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

drivers/pinctrl/sunplus/sppctl.c +3 -0
index 3ba47040ac42..2b3335ab56c6 100644

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

drivers/power/reset/arm-versatile-reboot.c +1 -0
index 08d0a07b58ef..c7624d7611a7 100644

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

drivers/power/supply/ab8500_fg.c +8 -1
index ec8a404d71b4..4339fa9ff009 100644

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

drivers/spi/spi-bcm2835.c +8 -4
index 775c0bf2f923..0933948d7df3 100644

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

fs/dlm/lock.c +2 -1
index 5b485cd96c93..5298a3a43bc7 100644

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

fs/exfat/namei.c +4 -27
index a02a04a993bf..c6eaf7e9ea74 100644

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

include/drm/gpu_scheduler.h +2 -2
index 944f83ef9f2e..dcd15e024976 100644

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

include/net/amt.h +20 -0
index 7a4db8b903ee..44acadf3a69e 100644

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

include/net/inet_hashtables.h +1 -1
index 98e1ec1a14f0..749bb1e46087 100644

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

include/net/inet_sock.h +7 -5
index 48e4c59d85e2..6395f6b9a5d2 100644

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

include/net/ip.h +3 -3
index 26fffda78cca..1c979fd1904c 100644

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

include/net/protocol.h +0 -4
index f51c06ae365f..6aef8cb11cc8 100644

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

include/net/route.h +1 -1
index 25404fc2b483..08df79436485 100644

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

include/net/tcp.h +12 -8
index 2d9a78b3beaa..4f5de382e192 100644

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

include/net/udp.h +2 -2
index f1c2a88c9005..abe91ab9030d 100644

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

kernel/bpf/core.c +5 -3
index 1e92b52fc814..3adff3831c04 100644

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/sched/deadline.c +4 -1
index b61281d10458..10a916ec6482 100644

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

kernel/watch_queue.c +37 -16

53 lines not on this page · raw message

mm/mempolicy.c +1 -1
index 8c74107a2b15..ea6dee61bc9d 100644

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

net/core/filter.c +2 -2
index 6391c1885bca..d0b0c163d3f3 100644

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

net/core/secure_seq.c +2 -2
index 5f85e01d4093..b0ff6153be62 100644

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

net/core/sock_reuseport.c +2 -2
index 3f00a28fe762..5daa1fa54249 100644

Lines of this file are not shown. View the 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/af_inet.c +4 -14
index 98bc180563d1..5c207367b3b4 100644

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

net/ipv4/fib_semantics.c +1 -1
index 720f65f7bd0b..9f5c1c26c8f2 100644

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

net/ipv4/icmp.c +1 -1
index c13ceda9ce5d..d8cfa6241c04 100644

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

net/ipv4/igmp.c +28 -21

49 lines not on this page · raw message

net/ipv4/inet_connection_sock.c +3 -2
index 1e5b53c2bb26..cdc750ced525 100644

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

net/ipv4/ip_forward.c +1 -1
index 92ba3350274b..03bb7c51b618 100644

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

net/ipv4/ip_input.c +22 -15
index 95f7bb052784..f3fd6c398309 100644

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

net/ipv4/ip_sockglue.c +4 -4
index 445a9ecaefa1..a8a323ecbb54 100644

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

net/ipv4/netfilter/nf_reject_ipv4.c +2 -2
index 4eed5afca392..f2edb40c0db0 100644

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

net/ipv4/proc.c +1 -1
index 28836071f0a6..0088a4c64d77 100644

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

net/ipv4/route.c +5 -5
index ed01063d8f30..02a0a397a2f3 100644

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

net/ipv4/syncookies.c +5 -4
index b387c4835155..942d2dfa1115 100644

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

net/ipv4/sysctl_net_ipv4.c +5 -60

65 lines not on this page · raw message

net/ipv4/tcp.c +8 -5
index f2fd1779d925..28db838e604a 100644

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

net/ipv4/tcp_fastopen.c +5 -4
index fdbcf2a6d08e..825b216d11f5 100644

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

net/ipv4/tcp_input.c +31 -20

51 lines not on this page · raw message

net/ipv4/tcp_ipv4.c +1 -1
index cd78b4fc334f..a57f96b86874 100644

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

net/ipv4/tcp_metrics.c +2 -1
index 7029b0e98edb..a501150deaa3 100644

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

net/ipv4/tcp_minisocks.c +2 -2
index 6854bb1fb32b..cb95d88497ae 100644

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

net/ipv4/tcp_output.c +15 -14
index 34249469e361..3554a4c1e1b8 100644

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

net/ipv4/tcp_recovery.c +4 -2
index fd113f6226ef..ac14216f6204 100644

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

net/ipv4/tcp_timer.c +17 -13
index 20cf4a98c69d..50bba370486e 100644

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

net/ipv6/af_inet6.c +1 -1
index 7d7b7523d126..ef1e6545d869 100644

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

net/ipv6/ip6_input.c +13 -10
index 5b5ea35635f9..caba03e551ef 100644

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

net/ipv6/syncookies.c +2 -1
index 9cc123f000fb..5014aa663452 100644

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

net/ipv6/tcp_ipv6.c +2 -7
index cbc5fff3d846..5185c11dc444 100644

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

net/ipv6/udp.c +2 -7
index a535c3f2e4af..aea28bf701be 100644

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

net/netfilter/nf_synproxy_core.c +1 -1
index e479dd0561c5..16915f8eef2b 100644

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

net/sched/cls_api.c +10 -6
index 2d4dc1468a9a..6fd33c75d6bb 100644

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

net/sctp/protocol.c +1 -1
index 35928fefae33..1a094b087d88 100644

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

net/smc/smc_llc.c +1 -1
index c4d057b2941d..0bde36b56472 100644

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

net/tls/tls_device.c +5 -3
index 3a61bb594544..9c3933781ad4 100644

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

net/xfrm/xfrm_policy.c +4 -1
index f1876ea61fdc..f1a0bab920a5 100644

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

net/xfrm/xfrm_state.c +1 -1
index b749935152ba..b4ce16a934a2 100644

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

security/integrity/ima/ima_policy.c +4 -0
index eea6e92500b8..50ebad1e3abb 100644

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

sound/soc/sof/intel/hda-loader.c +2 -1
index 88d23924e1bf..87313145d14f 100644

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

sound/soc/sof/pm.c +20 -1
index 1c319582ca6f..76351f7f3243 100644

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

sound/soc/sof/sof-priv.h +2 -0
index 0d9b640ae24c..c856f0d84e49 100644

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

tools/perf/tests/perf-time-to-tsc.c +10 -17
index 4ad0dfbc8b21..7c7d20fc503a 100644

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

tools/testing/selftests/gpio/Makefile +1 -1
index 71b306602368..616ed4019655 100644

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

tools/testing/selftests/kvm/rseq_test.c +5 -3
index 4158da0da2bb..2237d1aac801 100644

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

virt/kvm/kvm_main.c +4 -1
index 5ab12214e18d..24cb37d19c63 100644

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

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

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