Skip to contentSkip to conversation

Linux 5.10.9

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Jan 19, 2021 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 5.10.9 kernel.

All users of the 5.10 kernel series must upgrade.

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

thanks,

greg k-h

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

 Documentation/devicetree/bindings/display/bridge/sii902x.txt     |    4 
 Documentation/sound/alsa-configuration.rst                       |    2 
 Makefile                                                         |    2 
 arch/arc/Makefile                                                |   20 -
 arch/arc/boot/Makefile                                           |   11 
 arch/arc/include/asm/page.h                                      |    1 
 arch/arm/boot/dts/picoxcell-pc3x2.dtsi                           |    4 
 arch/arm/boot/dts/ste-ux500-samsung-golden.dts                   |    1 
 arch/arm/mach-omap2/pmic-cpcap.c                                 |    2 
 arch/mips/boot/compressed/decompress.c                           |    3 
 arch/mips/kernel/binfmt_elfn32.c                                 |    7 
 arch/mips/kernel/binfmt_elfo32.c                                 |    7 
 arch/mips/kernel/relocate.c                                      |   10 
 arch/mips/lib/uncached.c                                         |    4 
 arch/mips/mm/c-r4k.c                                             |    2 
 arch/mips/mm/sc-mips.c                                           |    4 
 arch/riscv/include/asm/pgtable.h                                 |    1 
 arch/riscv/include/asm/vdso.h                                    |    2 
 arch/riscv/kernel/entry.S                                        |   15 
 arch/riscv/kernel/vdso.c                                         |    2 
 arch/riscv/mm/kasan_init.c                                       |    4 
 arch/x86/hyperv/mmu.c                                            |   12 
 arch/x86/kernel/sev-es-shared.c                                  |    4 
 block/bfq-iosched.c                                              |    8 
 block/blk-mq-debugfs.c                                           |    1 
 drivers/acpi/internal.h                                          |    2 
 drivers/acpi/scan.c                                              |   15 
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c                       |    6 
 drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c                          |    2 
 drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c                          |   18 -
 drivers/gpu/drm/amd/amdgpu/soc15.c                               |    3 
 drivers/gpu/drm/amd/display/dc/core/dc_link.c                    |    7 
 drivers/gpu/drm/amd/display/dc/dml/dcn20/display_mode_vba_20v2.c |   11 
 drivers/gpu/drm/amd/pm/swsmu/smu12/renoir_ppt.c                  |    1 
 drivers/gpu/drm/amd/pm/swsmu/smu12/smu_v12_0.c                   |    1 
 drivers/gpu/drm/bridge/sii902x.c                                 |  100 +++--
 drivers/gpu/drm/i915/Makefile                                    |    1 
 drivers/gpu/drm/i915/display/icl_dsi.c                           |    4 
 drivers/gpu/drm/i915/display/intel_panel.c                       |    9 
 drivers/gpu/drm/i915/display/vlv_dsi.c                           |   16 
 drivers/gpu/drm/i915/gt/gen7_renderclear.c                       |  157 +++++----
 drivers/gpu/drm/i915/gt/intel_ring_submission.c                  |    6 
 drivers/gpu/drm/i915/i915_mitigations.c                          |  146 ++++++++
 drivers/gpu/drm/i915/i915_mitigations.h                          |   13 
 drivers/gpu/drm/msm/msm_drv.c                                    |    8 
 drivers/hwmon/pwm-fan.c                                          |   12 
 drivers/infiniband/core/restrack.c                               |    1 
 drivers/infiniband/hw/mlx5/main.c                                |    4 
 drivers/infiniband/hw/ocrdma/ocrdma_verbs.c                      |    2 
 drivers/infiniband/hw/usnic/usnic_ib_verbs.c                     |    3 
 drivers/iommu/intel/iommu.c                                      |   16 
 drivers/iommu/intel/svm.c                                        |   36 +-
 drivers/isdn/mISDN/Kconfig                                       |    1 
 drivers/md/Kconfig                                               |    1 
 drivers/md/dm-bufio.c                                            |    6 
 drivers/md/dm-crypt.c                                            |  170 ++++++++--
 drivers/md/dm-integrity.c                                        |   62 ++-
 drivers/md/dm-raid.c                                             |    6 
 drivers/md/dm-snap.c                                             |   24 +
 drivers/md/dm.c                                                  |    2 
 drivers/misc/habanalabs/common/device.c                          |    2 
 drivers/misc/habanalabs/common/habanalabs_drv.c                  |    1 
 drivers/misc/habanalabs/common/pci.c                             |   28 +
 drivers/misc/habanalabs/gaudi/gaudi.c                            |   14 
 drivers/misc/habanalabs/gaudi/gaudi_coresight.c                  |    3 
 drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.c                    |    8 
 drivers/net/ethernet/freescale/fs_enet/mii-bitbang.c             |    1 
 drivers/net/ethernet/freescale/fs_enet/mii-fec.c                 |    1 
 drivers/net/ethernet/freescale/ucc_geth.h                        |    9 
 drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c               |   77 ++--
 drivers/net/ethernet/mellanox/mlx5/core/esw/acl/egress_lgcy.c    |   27 -
 drivers/net/ethernet/mellanox/mlx5/core/esw/acl/egress_ofld.c    |    2 
 drivers/net/ethernet/mellanox/mlx5/core/esw/acl/ingress_lgcy.c   |    2 
 drivers/net/ethernet/mellanox/mlx5/core/esw/acl/ingress_ofld.c   |    2 
 drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c                |    6 
 drivers/net/usb/cdc_ether.c                                      |    7 
 drivers/net/usb/r8152.c                                          |    1 
 drivers/net/wireless/ath/ath11k/dp_rx.c                          |   10 
 drivers/net/wireless/ath/ath11k/qmi.c                            |   24 +
 drivers/net/wireless/ath/ath11k/qmi.h                            |    1 
 drivers/nvme/host/core.c                                         |   11 
 drivers/nvme/host/fc.c                                           |   15 
 drivers/nvme/host/pci.c                                          |   10 
 drivers/nvme/host/tcp.c                                          |    4 
 drivers/nvme/target/rdma.c                                       |   26 +
 drivers/regulator/bd718x7-regulator.c                            |   57 +++
 drivers/scsi/ufs/ufshcd.c                                        |    3 
 drivers/spi/spi-altera.c                                         |   26 -
 drivers/spi/spi.c                                                |    6 
 drivers/staging/hikey9xx/hisi-spmi-controller.c                  |   21 -
 drivers/usb/typec/altmodes/Kconfig                               |    2 
 drivers/xen/privcmd.c                                            |   25 +
 fs/btrfs/discard.c                                               |   60 +--
 fs/btrfs/extent_io.c                                             |    4 
 fs/btrfs/qgroup.c                                                |   13 
 fs/btrfs/relocation.c                                            |    7 
 fs/btrfs/super.c                                                 |    8 
 fs/btrfs/tree-checker.c                                          |    7 
 fs/cifs/dfs_cache.c                                              |    3 
 fs/cifs/smb2pdu.c                                                |    2 
 fs/ext4/fast_commit.c                                            |   25 -
 fs/ext4/file.c                                                   |    2 
 fs/ext4/ioctl.c                                                  |    3 
 fs/ext4/namei.c                                                  |   17 -
 fs/io_uring.c                                                    |   29 +
 fs/namespace.c                                                   |    7 
 fs/nfs/delegation.c                                              |   12 
 fs/nfs/internal.h                                                |   38 +-
 fs/nfs/nfs4proc.c                                                |   28 -
 fs/nfs/nfs4super.c                                               |    4 
 fs/nfs/pnfs.c                                                    |   58 +--
 fs/nfs/pnfs.h                                                    |    8 
 fs/nfs/pnfs_nfs.c                                                |   22 -
 fs/proc/task_mmu.c                                               |   53 +--
 fs/select.c                                                      |   14 
 include/linux/acpi.h                                             |    7 
 include/linux/compiler-gcc.h                                     |    6 
 include/linux/dm-bufio.h                                         |    1 
 include/linux/rcupdate.h                                         |    6 
 init/main.c                                                      |    1 
 kernel/bpf/task_iter.c                                           |   57 +--
 kernel/rcu/tasks.h                                               |   25 +
 kernel/trace/Kconfig                                             |    2 
 kernel/trace/trace_kprobe.c                                      |    2 
 lib/raid6/Makefile                                               |    2 
 mm/hugetlb.c                                                     |    2 
 mm/process_vm_access.c                                           |    1 
 mm/slub.c                                                        |    2 
 mm/vmalloc.c                                                     |    4 
 mm/vmscan.c                                                      |    2 
 net/netfilter/ipset/ip_set_hash_gen.h                            |   22 -
 net/netfilter/nf_conntrack_standalone.c                          |    3 
 net/netfilter/nf_nat_core.c                                      |    1 
 net/sunrpc/addr.c                                                |    2 
 net/wireless/Kconfig                                             |    1 
 scripts/kconfig/Makefile                                         |   10 
 security/lsm_audit.c                                             |    7 
 sound/firewire/fireface/ff-transaction.c                         |    2 
 sound/firewire/tascam/tascam-transaction.c                       |    2 
 sound/pci/hda/patch_realtek.c                                    |    4 
 sound/soc/amd/renoir/rn-pci-acp3x.c                              |    7 
 sound/soc/intel/skylake/cnl-sst.c                                |    1 
 sound/soc/meson/axg-tdm-interface.c                              |   14 
 sound/soc/meson/axg-tdmin.c                                      |   13 
 sound/soc/soc-dapm.c                                             |    1 
 tools/bootconfig/scripts/bconf2ftrace.sh                         |    1 
 tools/bootconfig/scripts/ftrace2bconf.sh                         |    4 
 tools/perf/util/machine.c                                        |    4 
 tools/perf/util/session.c                                        |    2 
 tools/testing/selftests/net/udpgro.sh                            |   34 ++
 tools/testing/selftests/netfilter/nft_conntrack_helper.sh        |   12 
 151 files changed, 1519 insertions(+), 609 deletions(-)

Adrian Hunter (1):
perf intel-pt: Fix 'CPU too large' error

Akilesh Kailash (1):
dm snapshot: flush merged data before committing metadata

Al Viro (3):
MIPS: Fix malformed NT_FILE and NT_SIGINFO in 32bit coredumps dump_common_audit_data(): fix racy accesses to ->d_name umount(2): move the flag validity checks first

Alaa Hleihel (1):
net/mlx5: E-Switch, fix changing vf VLANID

Alexander Lobakin (1):
MIPS: relocatable: fix possible boot hangup with KASLR enabled

Alexandre Demers (1):
drm/amdgpu: fix DRM_INFO flood if display core is not supported (bug 210921)

Alexandru Gagniuc (3):
drm/bridge: sii902x: Refactor init code into separate function
dt-bindings: display: sii902x: Add supply bindings drm/bridge: sii902x: Enable I/O and core VCC supplies if present

Anders Roxell (2):
mips: fix Section mismatch in reference
mips: lib: uncached: fix non-standard usage of variable 'sp'

Andreas Schwab (1):
riscv: return -ENOSYS for syscall -1

Andrew Morton (1):
mm/process_vm_access.c: include compat.h

Arnd Bergmann (4):
misdn: dsp: select CONFIG_BITREVERSE
ARM: picoxcell: fix missing interrupt-parent properties
cfg80211: select CONFIG_CRC32
dm zoned: select CONFIG_CRC32

Atish Patra (1):
riscv: Trace irq on only interrupt is enabled

Carl Huang (2):
ath11k: fix crash caused by NULL rx_channel
ath11k: qmi: try to allocate a big block of DMA memory first

Carl Philipp Klemm (1):
ARM: omap2: pmic-cpcap: fix maximum voltage to be consistent with defaults on xt875

Chen Yi (1):
selftests: netfilter: Pass family parameter "-f" to conntrack tool

Chris Wilson (3):
drm/i915: Allow the sysadmin to override security mitigations drm/i915/gt: Limit VFE threads based on GT
drm/i915/gt: Restore clear-residual mitigations for Ivybridge, Baytrail

Christophe JAILLET (1):
staging: spmi: hisi-spmi-controller: Fix some error handling paths

Craig Tatlor (1):
drm/msm: Call msm_init_vram before binding the gpu

Daejun Park (1):
ext4: fix wrong list_splice in ext4_fc_cleanup

Dan Carpenter (1):
ASoC: Intel: fix error code cnl_set_dsp_D0()

Dave Wysochanski (1):
NFS4: Fix use-after-free in trace_event_raw_event_nfs4_set_lock

Dennis Li (1):
drm/amdgpu: fix a GPU hang issue when remove device

Dexuan Cui (1):
ACPI: scan: Harden acpi_device_add() against device ID overflows

Dinghao Liu (3):
habanalabs: Fix memleak in hl_device_reset RDMA/usnic: Fix memleak in find_free_vf_and_create_qp_grp
netfilter: nf_nat: Fix memleak in nf_nat_init

Filipe Manana (1):
btrfs: fix transaction leak and crash after RO remount caused by qgroup rescan

Geert Uytterhoeven (2):
ALSA: fireface: Fix integer overflow in transmit_midi_msg()
ALSA: firewire-tascam: Fix integer overflow in midi_port_work()

Gopal Tiwari (1):
nvme-pci: mark Samsung PM1725a as IGNORE_DEV_SUBNQN

Greg Kroah-Hartman (1):

      Linux 5.10.9

Guido Günther (1):
regulator: bd718x7: Add enable times

Guo Ren (1):
riscv: Fixup CONFIG_GENERIC_TIME_VSYSCALL

Hans de Goede (1):
drm/i915/dsi: Use unconditional msleep for the panel_on_delay when there is no reset-deassert MIPI-sequence

Ignat Korchagin (4):
dm crypt: use GFP_ATOMIC when allocating crypto requests from softirq dm crypt: do not wait for backlogged crypto request completion in softirq dm crypt: do not call bio_endio() from the dm-crypt tasklet dm crypt: defer decryption to a tasklet if interrupts disabled

Imre Deak (1):
drm/i915/icl: Fix initing the DSI DSC power refcount during HW readout

Israel Rukshin (2):
nvmet-rdma: Fix list_del corruption on queue establishment failure
nvmet-rdma: Fix NULL deref when setting pi_enable and traddr INADDR_ANY

James Smart (1):
nvme-fc: avoid calling _nvme_fc_abort_outstanding_ios from interrupt context

Jan Kara (2):
bfq: Fix computation of shallow depth
ext4: fix superblock checksum failure when setting password salt

Jani Nikula (1):
drm/i915/backlight: fix CPU mode backlight takeover on LPT

Jann Horn (1):
mm, slub: consider rest of partial list if acquire_slab() fails

Jaroslav Kysela (1):
ASoC: AMD Renoir - add DMI entry for Lenovo ThinkPad X395

Jeremy Szu (1):
ALSA: hda/realtek: fix right sounds and mute/micmute LEDs for HP machines

Jerome Brunet (2):
ASoC: meson: axg-tdm-interface: fix loopback
ASoC: meson: axg-tdmin: fix axg skew offset

Jesper Dangaard Brouer (1):
netfilter: conntrack: fix reading nf_conntrack_buckets

Jiawei Gu (1):
drm/amdgpu: fix potential memory leak during navi12 deinitialization

John Garry (1):
blk-mq-debugfs: Add decode for BLK_MQ_F_TAG_HCTX_SHARED

John Millikin (1):

      lib/raid6: Let $(UNROLL) rules work with macOS userland

Jonathan Lemon (1):
bpf: Save correct stopping point in file seq iteration

Jonathan Neuschäfer (1):
ALSA: doc: Fix reference to mixart.rst

Kefeng Wang (1):
riscv: Drop a duplicated PAGE_KERNEL_EXEC

Kevin Wang (1):
drm/amd/display: fix sysfs amdgpu_current_backlight_pwm NULL pointer issue

Lalithambika Krishnakumar (1):
nvme: avoid possible double fetch in handling CQE

Leon Romanovsky (1):
RDMA/restrack: Don't treat as an error allocation ID wrapping

Leon Schuermann (1):
r8152: Add Lenovo Powered USB-C Travel Hub

Linus Torvalds (4):
poll: fix performance regression due to out-of-line __put_user()
mm: fix clear_refs_write locking
mm: don't play games with pinned pages in clear_page_refs
mm: don't put pinned pages into the swap cache

Linus Walleij (1):
ARM: dts: ux500/golden: Set display max brightness

Lu Baolu (3):
iommu/vt-d: Fix lockdep splat in sva bind()/unbind() iommu/vt-d: Update domain geometry in iommu_ops.at(de)tach_dev iommu/vt-d: Fix unaligned addresses for intel_flush_svm_range_dev()

Mark Bloch (1):
RDMA/mlx5: Fix wrong free of blue flame register on error

Masahiro Yamada (5):
ARC: build: remove non-existing bootpImage from KBUILD_IMAGE
ARC: build: add uImage.lzma to the top-level target
ARC: build: add boot_targets to PHONY
ARC: build: move symlink creation to arch/arc/Makefile to avoid race
kconfig: remove 'kvmconfig' and 'xenconfig' shorthands

Masami Hiramatsu (2):
tracing/kprobes: Do the notrace functions check without kprobes on ftrace tools/bootconfig: Add tracing_on support to helper scripts

Miaohe Lin (2):
mm/vmalloc.c: fix potential memory leak mm/hugetlb: fix potential missing huge page size info

Michael Chan (1):
bnxt_en: Improve stats context resource accounting with RDMA driver loaded.

Michael Ellerman (1):
net: ethernet: fs_enet: Add missing MODULE_LICENSE

Mike Snitzer (2):
dm raid: fix discard limits for raid1
dm: eliminate potential source of excessive kernel log noise

Mikulas Patocka (2):
dm integrity: fix flush with external metadata device dm integrity: fix the maximum number of arguments

Nick Hu (1):
riscv: Fix KASAN memory mapping.

Oded Gabbay (3):
habanalabs: adjust pci controller init to new firmware habanalabs/gaudi: retry loading TPC f/w on -EINTR
habanalabs: register to pci shutdown callback

Oz Shlomo (1):
net/mlx5e: CT: Use per flow counter when CT flow accounting is enabled

Parav Pandit (1):
IB/mlx5: Fix error unwinding when set_has_smi_cap fails

Paul Cercueil (1):
MIPS: boot: Fix unaligned access with CONFIG_MIPS_RAW_APPENDED_DTB

Paulo Alcantara (1):
cifs: fix interrupted close commands

Pavel Begunkov (5):
io_uring: don't take files/mm for a dead task
io_uring: drop mm and files after task_work_run
btrfs: fix async discard stall
btrfs: merge critical sections of discard lock in workfn
io_uring: drop file refs after task cancel

Peter Gonda (1):
x86/sev-es: Fix SEV-ES OUT/IN immediate opcode vc handling

Peter Robinson (1):
usb: typec: Fix copy paste error for NVIDIA alt-mode description

Po-Hsu Lin (1):
selftests: fix the return value for UDP GRO test

Prike Liang (1):
drm/amdgpu: add green_sardine device id (v2)

Qu Wenruo (1):
btrfs: reloc: fix wrong file extent type check to avoid false ENOENT

Randy Dunlap (1):
arch/arc: add copy_user_page() to <asm/page.h> to fix build error on ARC

Rasmus Villemoes (1):
ethernet: ucc_geth: fix definition and size of ucc_geth_tx_global_pram

Rodrigo Siqueira (1):
Revert "drm/amd/display: Fixed Intermittent blue screen on OLED panel"

Roger Pau Monne (1):
xen/privcmd: allow fetching resource sizes

Sagi Grimberg (3):
nvme: don't intialize hwmon for discovery controllers
nvme-tcp: fix possible data corruption with bio merges
nvme-tcp: Fix warning with CONFIG_DEBUG_PREEMPT

Scott Mayhew (1):
NFS: Adjust fs_context error logging

Shawn Guo (1):
ACPI: scan: add stub acpi_create_platform_device() for !CONFIG_ACPI

Song Liu (1):
bpf: Simplify task_file_seq_get_next()

Stanley Chu (1):
scsi: ufs: Fix possible power drain during system suspend

Su Yue (2):
btrfs: prevent NULL pointer dereference in extent_io_tree_panic
btrfs: tree-checker: check if chunk item end overflows

Theodore Ts'o (1):
ext4: don't leak old mountpoint samples

Thomas Hebb (1):
ASoC: dapm: remove widget from dirty list on free

Tom Rix (2):
cifs: check pointer before freeing
RDMA/ocrdma: Fix use after free in ocrdma_dealloc_ucontext_pd()

Trond Myklebust (8):
pNFS: We want return-on-close to complete when evicting the inode
pNFS: Mark layout for return if return-on-close was not sent
pNFS: Stricter ordering of layoutget and layoutreturn NFS/pNFS: Don't call pnfs_free_bucket_lseg() before removing the request NFS/pNFS: Don't leak DS commits in pnfs_generic_retry_commit() NFS/pNFS: Fix a leak of the layout 'plh_outstanding' counter
NFS: nfs_delegation_find_inode_server must first reference the superblock
NFS: nfs_igrab_and_active must first reference the superblock

Uladzislau Rezki (Sony) (1):
rcu-tasks: Move RCU-tasks initialization to before early_initcall()

Uwe Kleine-König (1):
hwmon: (pwm-fan) Ensure that calculation doesn't discard big period values

Vasily Averin (1):
netfilter: ipset: fixes possible oops in mtype_resize

Voon Weifeng (1):
stmmac: intel: change all EHL/TGL to auto detect phy addr

Wei Liu (1):
x86/hyperv: check cpu mask after interrupt has been disabled

Will Deacon (1):
compiler.h: Raise minimum version of GCC to 5.1 for arm64

Xiaojian Du (1):
drm/amd/pm: fix the failure when change power profile for renoir

Xu Yilun (2):
spi: altera: fix return value for altera_spi_txrx()
spi: fix the divide by 0 error when calculating xfer waiting time

Yi Li (1):
ext4: use IS_ERR instead of IS_ERR_OR_NULL and set inode null when IS_ERR

YueHaibing (1):
net/mlx5: Fix passing zero to 'PTR_ERR'

[email protected] (1):
net: sunrpc: interpret the return value of kstrtou32 correctly

mengwang (1):
drm/amdgpu: add new device id for Renior

yangerkun (1):
ext4: fix bug for rename with RENAME_WHITEOUT

author maintainer
#1 lore raw
Documentation/devicetree/bindings/display/bridge/sii902x.txt +4 -0
index 0d1db3f9da84..02c21b584741 100644
@@ -8,6 +8,8 @@ Optional properties:
 	- interrupts: describe the interrupt line used to inform the host
 	  about hotplug events.
 	- reset-gpios: OF device-tree gpio specification for RST_N pin.
+	- iovcc-supply: I/O Supply Voltage (1.8V or 3.3V)
+	- cvcc12-supply: Digital Core Supply Voltage (1.2V)
 
 	HDMI audio properties:
 	- #sound-dai-cells: <0> or <1>. <0> if only i2s or spdif pin
@@ -54,6 +56,8 @@ Example:
 		compatible = "sil,sii9022";
 		reg = <0x39>;
 		reset-gpios = <&pioA 1 0>;
+		iovcc-supply = <&v3v3_hdmi>;
+		cvcc12-supply = <&v1v2_hdmi>;
 
 		#sound-dai-cells = <0>;
 		sil,i2s-data-lanes = < 0 1 2 >;
Documentation/sound/alsa-configuration.rst +1 -1
index c755b1c5e16f..32603db7de83 100644
@@ -1501,7 +1501,7 @@ Module for Digigram miXart8 sound cards.
 
 This module supports multiple cards.
 Note: One miXart8 board will be represented as 4 alsa cards.
-See MIXART.txt for details.
+See Documentation/sound/cards/mixart.rst for details.
 
 When the driver is compiled as a module and the hotplug firmware
 is supported, the firmware data is loaded via hotplug automatically.
Makefile +1 -1
index 4ee137b5d241..1572ebd192a9 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 5
 PATCHLEVEL = 10
-SUBLEVEL = 8
+SUBLEVEL = 9
 EXTRAVERSION =
 NAME = Kleptomaniac Octopus
 
arch/arc/Makefile +13 -7
index 0c6bf0d1df7a..578bdbbb0fa7 100644
@@ -102,16 +102,22 @@ libs-y		+= arch/arc/lib/ $(LIBGCC)
 
 boot		:= arch/arc/boot
 
-#default target for make without any arguments.
-KBUILD_IMAGE	:= $(boot)/bootpImage
-
-all:	bootpImage
-bootpImage: vmlinux
-
-boot_targets += uImage uImage.bin uImage.gz
+boot_targets := uImage.bin uImage.gz uImage.lzma
 
+PHONY += $(boot_targets)
 $(boot_targets): vmlinux
 	$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
 
+uimage-default-y			:= uImage.bin
+uimage-default-$(CONFIG_KERNEL_GZIP)	:= uImage.gz
+uimage-default-$(CONFIG_KERNEL_LZMA)	:= uImage.lzma
+
+PHONY += uImage
+uImage: $(uimage-default-y)
+	@ln -sf $< $(boot)/uImage
+	@$(kecho) '  Image $(boot)/uImage is ready'
+
+CLEAN_FILES += $(boot)/uImage
+
 archclean:
 	$(Q)$(MAKE) $(clean)=$(boot)
arch/arc/boot/Makefile +1 -10
index 538b92f4dd25..3b1f8a69a89e 100644
@@ -1,5 +1,5 @@
 # SPDX-License-Identifier: GPL-2.0
-targets := vmlinux.bin vmlinux.bin.gz uImage
+targets := vmlinux.bin vmlinux.bin.gz
 
 # uImage build relies on mkimage being availble on your host for ARC target
 # You will need to build u-boot for ARC, rename mkimage to arc-elf32-mkimage
@@ -13,11 +13,6 @@ LINUX_START_TEXT = $$(readelf -h vmlinux | \
 UIMAGE_LOADADDR    = $(CONFIG_LINUX_LINK_BASE)
 UIMAGE_ENTRYADDR   = $(LINUX_START_TEXT)
 
-suffix-y := bin
-suffix-$(CONFIG_KERNEL_GZIP)	:= gz
-suffix-$(CONFIG_KERNEL_LZMA)	:= lzma
-
-targets += uImage
 targets += uImage.bin
 targets += uImage.gz
 targets += uImage.lzma
@@ -42,7 +37,3 @@ $(obj)/uImage.gz: $(obj)/vmlinux.bin.gz FORCE
 
 $(obj)/uImage.lzma: $(obj)/vmlinux.bin.lzma FORCE
 	$(call if_changed,uimage,lzma)
-
-$(obj)/uImage: $(obj)/uImage.$(suffix-y)
-	@ln -sf $(notdir $<) $@
-	@echo '  Image $@ is ready'
arch/arc/include/asm/page.h +1 -0
index b0dfed0f12be..d9c264dc25fc 100644
@@ -10,6 +10,7 @@
 #ifndef __ASSEMBLY__
 
 #define clear_page(paddr)		memset((paddr), 0, PAGE_SIZE)
+#define copy_user_page(to, from, vaddr, pg)	copy_page(to, from)
 #define copy_page(to, from)		memcpy((to), (from), PAGE_SIZE)
 
 struct vm_area_struct;
arch/arm/boot/dts/picoxcell-pc3x2.dtsi +4 -0
index c4c6c7e9e37b..5898879a3038 100644
@@ -45,18 +45,21 @@ paxi {
 		emac: gem@30000 {
 			compatible = "cadence,gem";
 			reg = <0x30000 0x10000>;
+			interrupt-parent = <&vic0>;
 			interrupts = <31>;
 		};
 
 		dmac1: dmac@40000 {
 			compatible = "snps,dw-dmac";
 			reg = <0x40000 0x10000>;
+			interrupt-parent = <&vic0>;
 			interrupts = <25>;
 		};
 
 		dmac2: dmac@50000 {
 			compatible = "snps,dw-dmac";
 			reg = <0x50000 0x10000>;
+			interrupt-parent = <&vic0>;
 			interrupts = <26>;
 		};
 
@@ -233,6 +236,7 @@ ebi@50000000 {
 		axi2pico@c0000000 {
 			compatible = "picochip,axi2pico-pc3x2";
 			reg = <0xc0000000 0x10000>;
+			interrupt-parent = <&vic0>;
 			interrupts = <13 14 15 16 17 18 19 20 21>;
 		};
 	};
arch/arm/boot/dts/ste-ux500-samsung-golden.dts +1 -0
index a1093cb37dc7..aed1f2d5f246 100644
@@ -326,6 +326,7 @@ dsi-controller@a0351000 {
 				panel@0 {
 					compatible = "samsung,s6e63m0";
 					reg = <0>;
+					max-brightness = <15>;
 					vdd3-supply = <&panel_reg_3v0>;
 					vci-supply = <&panel_reg_1v8>;
 					reset-gpios = <&gpio4 11 GPIO_ACTIVE_LOW>;
arch/arm/mach-omap2/pmic-cpcap.c +1 -1
index eab281a5fc9f..09076ad0576d 100644
@@ -71,7 +71,7 @@ static struct omap_voltdm_pmic omap_cpcap_iva = {
 	.vp_vstepmin = OMAP4_VP_VSTEPMIN_VSTEPMIN,
 	.vp_vstepmax = OMAP4_VP_VSTEPMAX_VSTEPMAX,
 	.vddmin = 900000,
-	.vddmax = 1350000,
+	.vddmax = 1375000,
 	.vp_timeout_us = OMAP4_VP_VLIMITTO_TIMEOUT_US,
 	.i2c_slave_addr = 0x44,
 	.volt_reg_addr = 0x0,
arch/mips/boot/compressed/decompress.c +2 -1
index c61c641674e6..e3946b06e840 100644
@@ -13,6 +13,7 @@
 #include <linux/libfdt.h>
 
 #include <asm/addrspace.h>
+#include <asm/unaligned.h>
 
 /*
  * These two variables specify the free mem region
@@ -117,7 +118,7 @@ void decompress_kernel(unsigned long boot_heap_start)
 		dtb_size = fdt_totalsize((void *)&__appended_dtb);
 
 		/* last four bytes is always image size in little endian */
-		image_size = le32_to_cpup((void *)&__image_end - 4);
+		image_size = get_unaligned_le32((void *)&__image_end - 4);
 
 		/* copy dtb to where the booted kernel will expect it */
 		memcpy((void *)VMLINUX_LOAD_ADDRESS_ULL + image_size,
arch/mips/kernel/binfmt_elfn32.c +7 -0
index 6ee3f7218c67..c4441416e96b 100644
@@ -103,4 +103,11 @@ jiffies_to_old_timeval32(unsigned long jiffies, struct old_timeval32 *value)
 #undef ns_to_kernel_old_timeval
 #define ns_to_kernel_old_timeval ns_to_old_timeval32
 
+/*
+ * Some data types as stored in coredump.
+ */
+#define user_long_t             compat_long_t
+#define user_siginfo_t          compat_siginfo_t
+#define copy_siginfo_to_external        copy_siginfo_to_external32
+
 #include "../../../fs/binfmt_elf.c"
arch/mips/kernel/binfmt_elfo32.c +7 -0
index 6dd103d3cebb..7b2a23f48c1a 100644
@@ -106,4 +106,11 @@ jiffies_to_old_timeval32(unsigned long jiffies, struct old_timeval32 *value)
 #undef ns_to_kernel_old_timeval
 #define ns_to_kernel_old_timeval ns_to_old_timeval32
 
+/*
+ * Some data types as stored in coredump.
+ */
+#define user_long_t             compat_long_t
+#define user_siginfo_t          compat_siginfo_t
+#define copy_siginfo_to_external        copy_siginfo_to_external32
+
 #include "../../../fs/binfmt_elf.c"
arch/mips/kernel/relocate.c +8 -2
index 3d80a51256de..dab8febb5741 100644
@@ -187,8 +187,14 @@ static int __init relocate_exception_table(long offset)
 static inline __init unsigned long rotate_xor(unsigned long hash,
 					      const void *area, size_t size)
 {
-	size_t i;
-	unsigned long *ptr = (unsigned long *)area;
+	const typeof(hash) *ptr = PTR_ALIGN(area, sizeof(hash));
+	size_t diff, i;
+
+	diff = (void *)ptr - area;
+	if (unlikely(size < diff + sizeof(hash)))
+		return hash;
+
+	size = ALIGN_DOWN(size - diff, sizeof(hash));
 
 	for (i = 0; i < size / sizeof(hash); i++) {
 		/* Rotate by odd number of bits and XOR. */
arch/mips/lib/uncached.c +3 -1
index 09d5deea747f..f80a67c092b6 100644
@@ -37,10 +37,12 @@
  */
 unsigned long run_uncached(void *func)
 {
-	register long sp __asm__("$sp");
 	register long ret __asm__("$2");
 	long lfunc = (long)func, ufunc;
 	long usp;
+	long sp;
+
+	__asm__("move %0, $sp" : "=r" (sp));
 
 	if (sp >= (long)CKSEG0 && sp < (long)CKSEG2)
 		usp = CKSEG1ADDR(sp);
arch/mips/mm/c-r4k.c +1 -1
index 9cede7ce37e6..c9644c38ec28 100644
@@ -1609,7 +1609,7 @@ static void __init loongson2_sc_init(void)
 	c->options |= MIPS_CPU_INCLUSIVE_CACHES;
 }
 
-static void __init loongson3_sc_init(void)
+static void loongson3_sc_init(void)
 {
 	struct cpuinfo_mips *c = &current_cpu_data;
 	unsigned int config2, lsize;
arch/mips/mm/sc-mips.c +2 -2
index dd0a5becaabd..06ec304ad4d1 100644
@@ -146,7 +146,7 @@ static inline int mips_sc_is_activated(struct cpuinfo_mips *c)
 	return 1;
 }
 
-static int __init mips_sc_probe_cm3(void)
+static int mips_sc_probe_cm3(void)
 {
 	struct cpuinfo_mips *c = &current_cpu_data;
 	unsigned long cfg = read_gcr_l2_config();
@@ -180,7 +180,7 @@ static int __init mips_sc_probe_cm3(void)
 	return 0;
 }
 
-static inline int __init mips_sc_probe(void)
+static inline int mips_sc_probe(void)
 {
 	struct cpuinfo_mips *c = &current_cpu_data;
 	unsigned int config1, config2;
arch/riscv/include/asm/pgtable.h +0 -1
index 183f1f4b2ae6..73e8b5e5bb65 100644
@@ -99,7 +99,6 @@
 				| _PAGE_DIRTY)
 
 #define PAGE_KERNEL		__pgprot(_PAGE_KERNEL)
-#define PAGE_KERNEL_EXEC	__pgprot(_PAGE_KERNEL | _PAGE_EXEC)
 #define PAGE_KERNEL_READ	__pgprot(_PAGE_KERNEL & ~_PAGE_WRITE)
 #define PAGE_KERNEL_EXEC	__pgprot(_PAGE_KERNEL | _PAGE_EXEC)
 #define PAGE_KERNEL_READ_EXEC	__pgprot((_PAGE_KERNEL & ~_PAGE_WRITE) \
arch/riscv/include/asm/vdso.h +1 -1
index 8454f746bbfd..1453a2f563bc 100644
@@ -10,7 +10,7 @@
 
 #include <linux/types.h>
 
-#ifndef GENERIC_TIME_VSYSCALL
+#ifndef CONFIG_GENERIC_TIME_VSYSCALL
 struct vdso_data {
 };
 #endif
arch/riscv/kernel/entry.S +4 -11
index 524d918f3601..835e45bb59c4 100644
@@ -124,15 +124,15 @@ skip_context_tracking:
 	REG_L a1, (a1)
 	jr a1
 1:
-#ifdef CONFIG_TRACE_IRQFLAGS
-	call trace_hardirqs_on
-#endif
 	/*
 	 * Exceptions run with interrupts enabled or disabled depending on the
 	 * state of SR_PIE in m/sstatus.
 	 */
 	andi t0, s1, SR_PIE
 	beqz t0, 1f
+#ifdef CONFIG_TRACE_IRQFLAGS
+	call trace_hardirqs_on
+#endif
 	csrs CSR_STATUS, SR_IE
 
 1:
@@ -186,14 +186,7 @@ check_syscall_nr:
 	 * Syscall number held in a7.
 	 * If syscall number is above allowed value, redirect to ni_syscall.
 	 */
-	bge a7, t0, 1f
-	/*
-	 * Check if syscall is rejected by tracer, i.e., a7 == -1.
-	 * If yes, we pretend it was executed.
-	 */
-	li t1, -1
-	beq a7, t1, ret_from_syscall_rejected
-	blt a7, t1, 1f
+	bgeu a7, t0, 1f
 	/* Call syscall */
 	la s0, sys_call_table
 	slli t0, a7, RISCV_LGPTR
arch/riscv/kernel/vdso.c +1 -1
index 678204231700..3f1d35e7c98a 100644
@@ -12,7 +12,7 @@
 #include <linux/binfmts.h>
 #include <linux/err.h>
 #include <asm/page.h>
-#ifdef GENERIC_TIME_VSYSCALL
+#ifdef CONFIG_GENERIC_TIME_VSYSCALL
 #include <vdso/datapage.h>
 #else
 #include <asm/vdso.h>
arch/riscv/mm/kasan_init.c +2 -2
index 12ddd1f6bf70..a8a2ffd9114a 100644
@@ -93,8 +93,8 @@ void __init kasan_init(void)
 								VMALLOC_END));
 
 	for_each_mem_range(i, &_start, &_end) {
-		void *start = (void *)_start;
-		void *end = (void *)_end;
+		void *start = (void *)__va(_start);
+		void *end = (void *)__va(_end);
 
 		if (start >= end)
 			break;
arch/x86/hyperv/mmu.c +9 -3
index 5208ba49c89a..2c87350c1fb0 100644
@@ -66,11 +66,17 @@ static void hyperv_flush_tlb_others(const struct cpumask *cpus,
 	if (!hv_hypercall_pg)
 		goto do_native;
 
-	if (cpumask_empty(cpus))
-		return;
-
 	local_irq_save(flags);
 
+	/*
+	 * Only check the mask _after_ interrupt has been disabled to avoid the
+	 * mask changing under our feet.
+	 */
+	if (cpumask_empty(cpus)) {
+		local_irq_restore(flags);
+		return;
+	}
+
 	flush_pcpu = (struct hv_tlb_flush **)
 		     this_cpu_ptr(hyperv_pcpu_input_arg);
 
arch/x86/kernel/sev-es-shared.c +2 -2
index 7d04b356d44d..cdc04d091242 100644
@@ -305,14 +305,14 @@ static enum es_result vc_ioio_exitinfo(struct es_em_ctxt *ctxt, u64 *exitinfo)
 	case 0xe4:
 	case 0xe5:
 		*exitinfo |= IOIO_TYPE_IN;
-		*exitinfo |= (u64)insn->immediate.value << 16;
+		*exitinfo |= (u8)insn->immediate.value << 16;
 		break;
 
 	/* OUT immediate opcodes */
 	case 0xe6:
 	case 0xe7:
 		*exitinfo |= IOIO_TYPE_OUT;
-		*exitinfo |= (u64)insn->immediate.value << 16;
+		*exitinfo |= (u8)insn->immediate.value << 16;
 		break;
 
 	/* IN register opcodes */
block/bfq-iosched.c +4 -4
index 9e81d1052091..9e4eb0fc1c16 100644
@@ -6332,13 +6332,13 @@ static unsigned int bfq_update_depths(struct bfq_data *bfqd,
 	 * limit 'something'.
 	 */
 	/* no more than 50% of tags for async I/O */
-	bfqd->word_depths[0][0] = max((1U << bt->sb.shift) >> 1, 1U);
+	bfqd->word_depths[0][0] = max(bt->sb.depth >> 1, 1U);
 	/*
 	 * no more than 75% of tags for sync writes (25% extra tags
 	 * w.r.t. async I/O, to prevent async I/O from starving sync
 	 * writes)
 	 */
-	bfqd->word_depths[0][1] = max(((1U << bt->sb.shift) * 3) >> 2, 1U);
+	bfqd->word_depths[0][1] = max((bt->sb.depth * 3) >> 2, 1U);
 
 	/*
 	 * In-word depths in case some bfq_queue is being weight-
@@ -6348,9 +6348,9 @@ static unsigned int bfq_update_depths(struct bfq_data *bfqd,
 	 * shortage.
 	 */
 	/* no more than ~18% of tags for async I/O */
-	bfqd->word_depths[1][0] = max(((1U << bt->sb.shift) * 3) >> 4, 1U);
+	bfqd->word_depths[1][0] = max((bt->sb.depth * 3) >> 4, 1U);
 	/* no more than ~37% of tags for sync writes (~20% extra tags) */
-	bfqd->word_depths[1][1] = max(((1U << bt->sb.shift) * 6) >> 4, 1U);
+	bfqd->word_depths[1][1] = max((bt->sb.depth * 6) >> 4, 1U);
 
 	for (i = 0; i < 2; i++)
 		for (j = 0; j < 2; j++)
block/blk-mq-debugfs.c +1 -0
index 4d6e83e5b442..4de03da9a624 100644
@@ -246,6 +246,7 @@ static const char *const hctx_flag_name[] = {
 	HCTX_FLAG_NAME(BLOCKING),
 	HCTX_FLAG_NAME(NO_SCHED),
 	HCTX_FLAG_NAME(STACKING),
+	HCTX_FLAG_NAME(TAG_HCTX_SHARED),
 };
 #undef HCTX_FLAG_NAME
 
drivers/acpi/internal.h +1 -1
index e3638bafb941..aee023ad0237 100644
@@ -97,7 +97,7 @@ void acpi_scan_table_handler(u32 event, void *table, void *context);
 extern struct list_head acpi_bus_id_list;
 
 struct acpi_device_bus_id {
-	char bus_id[15];
+	const char *bus_id;
 	unsigned int instance_no;
 	struct list_head node;
 };
drivers/acpi/scan.c +14 -1
index bc6a79e33220..f23ef508fe88 100644
@@ -486,6 +486,7 @@ static void acpi_device_del(struct acpi_device *device)
 				acpi_device_bus_id->instance_no--;
 			else {
 				list_del(&acpi_device_bus_id->node);
+				kfree_const(acpi_device_bus_id->bus_id);
 				kfree(acpi_device_bus_id);
 			}
 			break;
@@ -674,7 +675,14 @@ int acpi_device_add(struct acpi_device *device,
 	}
 	if (!found) {
 		acpi_device_bus_id = new_bus_id;
-		strcpy(acpi_device_bus_id->bus_id, acpi_device_hid(device));
+		acpi_device_bus_id->bus_id =
+			kstrdup_const(acpi_device_hid(device), GFP_KERNEL);
+		if (!acpi_device_bus_id->bus_id) {
+			pr_err(PREFIX "Memory allocation error for bus id\n");
+			result = -ENOMEM;
+			goto err_free_new_bus_id;
+		}
+
 		acpi_device_bus_id->instance_no = 0;
 		list_add_tail(&acpi_device_bus_id->node, &acpi_bus_id_list);
 	}
@@ -709,6 +717,11 @@ int acpi_device_add(struct acpi_device *device,
 	if (device->parent)
 		list_del(&device->node);
 	list_del(&device->wakeup_list);
+
+ err_free_new_bus_id:
+	if (!found)
+		kfree(new_bus_id);
+
 	mutex_unlock(&acpi_device_lock);
 
  err_detach:
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +3 -3
index 026789b466db..2ddbcfe0a72f 100644
@@ -2524,11 +2524,11 @@ static int amdgpu_device_ip_fini(struct amdgpu_device *adev)
 	if (adev->gmc.xgmi.num_physical_nodes > 1)
 		amdgpu_xgmi_remove_device(adev);
 
-	amdgpu_amdkfd_device_fini(adev);
-
 	amdgpu_device_set_pg_state(adev, AMD_PG_STATE_UNGATE);
 	amdgpu_device_set_cg_state(adev, AMD_CG_STATE_UNGATE);
 
+	amdgpu_amdkfd_device_fini(adev);
+
 	/* need to disable SMC first */
 	for (i = 0; i < adev->num_ip_blocks; i++) {
 		if (!adev->ip_blocks[i].status.hw)
@@ -3008,7 +3008,7 @@ bool amdgpu_device_asic_has_dc_support(enum amd_asic_type asic_type)
 #endif
 	default:
 		if (amdgpu_dc > 0)
-			DRM_INFO("Display Core has been requested via kernel parameter "
+			DRM_INFO_ONCE("Display Core has been requested via kernel parameter "
 					 "but isn't supported by ASIC, ignoring\n");
 		return false;
 	}
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +2 -0
index 8e988f07f085..0b786d8dd8bc 100644
@@ -1076,6 +1076,8 @@ static const struct pci_device_id pciidlist[] = {
 
 	/* Renoir */
 	{0x1002, 0x1636, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RENOIR|AMD_IS_APU},
+	{0x1002, 0x1638, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RENOIR|AMD_IS_APU},
+	{0x1002, 0x164C, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RENOIR|AMD_IS_APU},
 
 	/* Navi12 */
 	{0x1002, 0x7360, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_NAVI12},
drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c +14 -4
index a6dbe4b83533..2f47f81a74a5 100644
@@ -1283,8 +1283,12 @@ static int psp_hdcp_terminate(struct psp_context *psp)
 	if (amdgpu_sriov_vf(psp->adev))
 		return 0;
 
-	if (!psp->hdcp_context.hdcp_initialized)
-		return 0;
+	if (!psp->hdcp_context.hdcp_initialized) {
+		if (psp->hdcp_context.hdcp_shared_buf)
+			goto out;
+		else
+			return 0;
+	}
 
 	ret = psp_hdcp_unload(psp);
 	if (ret)
@@ -1292,6 +1296,7 @@ static int psp_hdcp_terminate(struct psp_context *psp)
 
 	psp->hdcp_context.hdcp_initialized = false;
 
+out:
 	/* free hdcp shared memory */
 	amdgpu_bo_free_kernel(&psp->hdcp_context.hdcp_shared_bo,
 			      &psp->hdcp_context.hdcp_shared_mc_addr,
@@ -1430,8 +1435,12 @@ static int psp_dtm_terminate(struct psp_context *psp)
 	if (amdgpu_sriov_vf(psp->adev))
 		return 0;
 
-	if (!psp->dtm_context.dtm_initialized)
-		return 0;
+	if (!psp->dtm_context.dtm_initialized) {
+		if (psp->dtm_context.dtm_shared_buf)
+			goto out;
+		else
+			return 0;
+	}
 
 	ret = psp_dtm_unload(psp);
 	if (ret)
@@ -1439,6 +1448,7 @@ static int psp_dtm_terminate(struct psp_context *psp)
 
 	psp->dtm_context.dtm_initialized = false;
 
+out:
 	/* free hdcp shared memory */
 	amdgpu_bo_free_kernel(&psp->dtm_context.dtm_shared_bo,
 			      &psp->dtm_context.dtm_shared_mc_addr,
drivers/gpu/drm/amd/amdgpu/soc15.c +2 -1
index f57c5f57efa8..41cd108214d6 100644
@@ -1242,7 +1242,8 @@ static int soc15_common_early_init(void *handle)
 		break;
 	case CHIP_RENOIR:
 		adev->asic_funcs = &soc15_asic_funcs;
-		if (adev->pdev->device == 0x1636)
+		if ((adev->pdev->device == 0x1636) ||
+		    (adev->pdev->device == 0x164c))
 			adev->apu_flags |= AMD_APU_IS_RENOIR;
 		else
 			adev->apu_flags |= AMD_APU_IS_GREEN_SARDINE;
drivers/gpu/drm/amd/display/dc/core/dc_link.c +6 -1
index 5b0cedfa824a..e1e5d81a5e43 100644
@@ -2471,9 +2471,14 @@ enum dc_status dc_link_validate_mode_timing(
 static struct abm *get_abm_from_stream_res(const struct dc_link *link)
 {
 	int i;
-	struct dc *dc = link->ctx->dc;
+	struct dc *dc = NULL;
 	struct abm *abm = NULL;
 
+	if (!link || !link->ctx)
+		return NULL;
+
+	dc = link->ctx->dc;
+
 	for (i = 0; i < MAX_PIPES; i++) {
 		struct pipe_ctx pipe_ctx = dc->current_state->res_ctx.pipe_ctx[i];
 		struct dc_stream_state *stream = pipe_ctx.stream;
drivers/gpu/drm/amd/display/dc/dml/dcn20/display_mode_vba_20v2.c +6 -5
index 860e72a51534..80170f9721ce 100644
@@ -2635,14 +2635,15 @@ static void dml20v2_DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndP
 	}
 
 	if (mode_lib->vba.DRAMClockChangeSupportsVActive &&
-			mode_lib->vba.MinActiveDRAMClockChangeMargin > 60 &&
-			mode_lib->vba.PrefetchMode[mode_lib->vba.VoltageLevel][mode_lib->vba.maxMpcComb] == 0) {
+			mode_lib->vba.MinActiveDRAMClockChangeMargin > 60) {
 		mode_lib->vba.DRAMClockChangeWatermark += 25;
 
 		for (k = 0; k < mode_lib->vba.NumberOfActivePlanes; ++k) {
-			if (mode_lib->vba.DRAMClockChangeWatermark >
-			dml_max(mode_lib->vba.StutterEnterPlusExitWatermark, mode_lib->vba.UrgentWatermark))
-				mode_lib->vba.MinTTUVBlank[k] += 25;
+			if (mode_lib->vba.PrefetchMode[mode_lib->vba.VoltageLevel][mode_lib->vba.maxMpcComb] == 0) {
+				if (mode_lib->vba.DRAMClockChangeWatermark >
+				dml_max(mode_lib->vba.StutterEnterPlusExitWatermark, mode_lib->vba.UrgentWatermark))
+					mode_lib->vba.MinTTUVBlank[k] += 25;
+			}
 		}
 
 		mode_lib->vba.DRAMClockChangeSupport[0][0] = dm_dram_clock_change_vactive;
drivers/gpu/drm/amd/pm/swsmu/smu12/renoir_ppt.c +1 -0
index 66c1026489be..425c48e100e4 100644
@@ -188,6 +188,7 @@ static int renoir_get_dpm_clk_limited(struct smu_context *smu, enum smu_clk_type
 			return -EINVAL;
 		*freq = clk_table->SocClocks[dpm_level].Freq;
 		break;
+	case SMU_UCLK:
 	case SMU_MCLK:
 		if (dpm_level >= NUM_FCLK_DPM_LEVELS)
 			return -EINVAL;
drivers/gpu/drm/amd/pm/swsmu/smu12/smu_v12_0.c +1 -0
index 660f403d5770..7907c9e0b5de 100644
@@ -222,6 +222,7 @@ int smu_v12_0_set_soft_freq_limited_range(struct smu_context *smu, enum smu_clk_
 	break;
 	case SMU_FCLK:
 	case SMU_MCLK:
+	case SMU_UCLK:
 		ret = smu_cmn_send_smc_msg_with_param(smu, SMU_MSG_SetHardMinFclkByFreq, min, NULL);
 		if (ret)
 			return ret;
drivers/gpu/drm/bridge/sii902x.c +66 -34

151 lines not on this page · raw message

drivers/gpu/drm/i915/Makefile +1 -0
index e5574e506a5c..6d9e81ea67f4 100644
@@ -38,6 +38,7 @@ i915-y += i915_drv.o \
 	  i915_config.o \
 	  i915_irq.o \
 	  i915_getparam.o \
+	  i915_mitigations.o \
 	  i915_params.o \
 	  i915_pci.o \
 	  i915_scatterlist.o \
drivers/gpu/drm/i915/display/icl_dsi.c +0 -4
index 520715b7d5b5..1515cf229ed1 100644
@@ -1585,10 +1585,6 @@ static void gen11_dsi_get_power_domains(struct intel_encoder *encoder,
 
 	get_dsi_io_power_domains(i915,
 				 enc_to_intel_dsi(encoder));
-
-	if (crtc_state->dsc.compression_enable)
-		intel_display_power_get(i915,
-					intel_dsc_power_domain(crtc_state));
 }
 
 static bool gen11_dsi_get_hw_state(struct intel_encoder *encoder,
drivers/gpu/drm/i915/display/intel_panel.c +5 -4
index 9f23bac0d792..d64fce1a17cb 100644
@@ -1650,16 +1650,13 @@ static int lpt_setup_backlight(struct intel_connector *connector, enum pipe unus
 		val = pch_get_backlight(connector);
 	else
 		val = lpt_get_backlight(connector);
-	val = intel_panel_compute_brightness(connector, val);
-	panel->backlight.level = clamp(val, panel->backlight.min,
-				       panel->backlight.max);
 
 	if (cpu_mode) {
 		drm_dbg_kms(&dev_priv->drm,
 			    "CPU backlight register was enabled, switching to PCH override\n");
 
 		/* Write converted CPU PWM value to PCH override register */
-		lpt_set_backlight(connector->base.state, panel->backlight.level);
+		lpt_set_backlight(connector->base.state, val);
 		intel_de_write(dev_priv, BLC_PWM_PCH_CTL1,
 			       pch_ctl1 | BLM_PCH_OVERRIDE_ENABLE);
 
@@ -1667,6 +1664,10 @@ static int lpt_setup_backlight(struct intel_connector *connector, enum pipe unus
 			       cpu_ctl2 & ~BLM_PWM_ENABLE);
 	}
 
+	val = intel_panel_compute_brightness(connector, val);
+	panel->backlight.level = clamp(val, panel->backlight.min,
+				       panel->backlight.max);
+
 	return 0;
 }
 
drivers/gpu/drm/i915/display/vlv_dsi.c +13 -3
index 5e5522923b1e..690239d3f2e5 100644
@@ -812,10 +812,20 @@ static void intel_dsi_pre_enable(struct intel_atomic_state *state,
 		intel_dsi_prepare(encoder, pipe_config);
 
 	intel_dsi_vbt_exec_sequence(intel_dsi, MIPI_SEQ_POWER_ON);
-	intel_dsi_msleep(intel_dsi, intel_dsi->panel_on_delay);
 
-	/* Deassert reset */
-	intel_dsi_vbt_exec_sequence(intel_dsi, MIPI_SEQ_DEASSERT_RESET);
+	/*
+	 * Give the panel time to power-on and then deassert its reset.
+	 * Depending on the VBT MIPI sequences version the deassert-seq
+	 * may contain the necessary delay, intel_dsi_msleep() will skip
+	 * the delay in that case. If there is no deassert-seq, then an
+	 * unconditional msleep is used to give the panel time to power-on.
+	 */
+	if (dev_priv->vbt.dsi.sequence[MIPI_SEQ_DEASSERT_RESET]) {
+		intel_dsi_msleep(intel_dsi, intel_dsi->panel_on_delay);
+		intel_dsi_vbt_exec_sequence(intel_dsi, MIPI_SEQ_DEASSERT_RESET);
+	} else {
+		msleep(intel_dsi->panel_on_delay);
+	}
 
 	if (IS_GEMINILAKE(dev_priv)) {
 		glk_cold_boot = glk_dsi_enable_io(encoder);
drivers/gpu/drm/i915/gt/gen7_renderclear.c +94 -63

270 lines not on this page · raw message

drivers/gpu/drm/i915/gt/intel_ring_submission.c +4 -2
index 16b48e72c369..6aaca73eaee6 100644
@@ -32,6 +32,7 @@
 #include "gen6_ppgtt.h"
 #include "gen7_renderclear.h"
 #include "i915_drv.h"
+#include "i915_mitigations.h"
 #include "intel_breadcrumbs.h"
 #include "intel_context.h"
 #include "intel_gt.h"
@@ -885,7 +886,8 @@ static int switch_context(struct i915_request *rq)
 	GEM_BUG_ON(HAS_EXECLISTS(engine->i915));
 
 	if (engine->wa_ctx.vma && ce != engine->kernel_context) {
-		if (engine->wa_ctx.vma->private != ce) {
+		if (engine->wa_ctx.vma->private != ce &&
+		    i915_mitigate_clear_residuals()) {
 			ret = clear_residuals(rq);
 			if (ret)
 				return ret;
@@ -1289,7 +1291,7 @@ int intel_ring_submission_setup(struct intel_engine_cs *engine)
 
 	GEM_BUG_ON(timeline->hwsp_ggtt != engine->status_page.vma);
 
-	if (IS_HASWELL(engine->i915) && engine->class == RENDER_CLASS) {
+	if (IS_GEN(engine->i915, 7) && engine->class == RENDER_CLASS) {
 		err = gen7_ctx_switch_bb_init(engine);
 		if (err)
 			goto err_ring_unpin;
drivers/gpu/drm/i915/i915_mitigations.c new file +146 -0

146 lines not on this page · raw message

drivers/gpu/drm/i915/i915_mitigations.h new file +13 -0
new file mode 100644
index 000000000000..1359d8135287
@@ -0,0 +1,13 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2021 Intel Corporation
+ */
+
+#ifndef __I915_MITIGATIONS_H__
+#define __I915_MITIGATIONS_H__
+
+#include <linux/types.h>
+
+bool i915_mitigate_clear_residuals(void);
+
+#endif /* __I915_MITIGATIONS_H__ */
drivers/gpu/drm/msm/msm_drv.c +4 -4
index 49685571dc0e..d556c353e5ae 100644
@@ -444,14 +444,14 @@ static int msm_drm_init(struct device *dev, struct drm_driver *drv)
 
 	drm_mode_config_init(ddev);
 
-	/* Bind all our sub-components: */
-	ret = component_bind_all(dev, ddev);
+	ret = msm_init_vram(ddev);
 	if (ret)
 		goto err_destroy_mdss;
 
-	ret = msm_init_vram(ddev);
+	/* Bind all our sub-components: */
+	ret = component_bind_all(dev, ddev);
 	if (ret)
-		goto err_msm_uninit;
+		goto err_destroy_mdss;
 
 	dma_set_max_seg_size(dev, UINT_MAX);
 
drivers/hwmon/pwm-fan.c +11 -1
index 1f63807c0399..ec171f2b684a 100644
@@ -324,8 +324,18 @@ static int pwm_fan_probe(struct platform_device *pdev)
 
 	ctx->pwm_value = MAX_PWM;
 
-	/* Set duty cycle to maximum allowed and enable PWM output */
 	pwm_init_state(ctx->pwm, &state);
+	/*
+	 * __set_pwm assumes that MAX_PWM * (period - 1) fits into an unsigned
+	 * long. Check this here to prevent the fan running at a too low
+	 * frequency.
+	 */
+	if (state.period > ULONG_MAX / MAX_PWM + 1) {
+		dev_err(dev, "Configured period too big\n");
+		return -EINVAL;
+	}
+
+	/* Set duty cycle to maximum allowed and enable PWM output */
 	state.duty_cycle = ctx->pwm->args.period - 1;
 	state.enabled = true;
 
drivers/infiniband/core/restrack.c +1 -0
index 4aeeaaed0f17..bbbbec5b1593 100644
@@ -244,6 +244,7 @@ void rdma_restrack_add(struct rdma_restrack_entry *res)
 	} else {
 		ret = xa_alloc_cyclic(&rt->xa, &res->id, res, xa_limit_32b,
 				      &rt->next_id, GFP_KERNEL);
+		ret = (ret < 0) ? ret : 0;
 	}
 
 	if (!ret)
drivers/infiniband/hw/mlx5/main.c +2 -2
index 246e3cbe0b2c..fb092ff79d84 100644
@@ -3950,7 +3950,7 @@ static int mlx5_ib_stage_init_init(struct mlx5_ib_dev *dev)
 
 	err = set_has_smi_cap(dev);
 	if (err)
-		return err;
+		goto err_mp;
 
 	if (!mlx5_core_mp_enabled(mdev)) {
 		for (i = 1; i <= dev->num_ports; i++) {
@@ -4362,7 +4362,7 @@ static int mlx5_ib_stage_bfrag_init(struct mlx5_ib_dev *dev)
 
 	err = mlx5_alloc_bfreg(dev->mdev, &dev->fp_bfreg, false, true);
 	if (err)
-		mlx5_free_bfreg(dev->mdev, &dev->fp_bfreg);
+		mlx5_free_bfreg(dev->mdev, &dev->bfreg);
 
 	return err;
 }
drivers/infiniband/hw/ocrdma/ocrdma_verbs.c +1 -1
index 7350fe16f164..81a560056cd5 100644
@@ -434,9 +434,9 @@ static void ocrdma_dealloc_ucontext_pd(struct ocrdma_ucontext *uctx)
 		pr_err("%s(%d) Freeing in use pdid=0x%x.\n",
 		       __func__, dev->id, pd->id);
 	}
-	kfree(uctx->cntxt_pd);
 	uctx->cntxt_pd = NULL;
 	_ocrdma_dealloc_pd(dev, pd);
+	kfree(pd);
 }
 
 static struct ocrdma_pd *ocrdma_get_ucontext_pd(struct ocrdma_ucontext *uctx)
drivers/infiniband/hw/usnic/usnic_ib_verbs.c +3 -0
index 9e961f8ffa10..6a2b7d1d184c 100644
@@ -214,6 +214,7 @@ find_free_vf_and_create_qp_grp(struct usnic_ib_dev *us_ibdev,
 
 		}
 		usnic_uiom_free_dev_list(dev_list);
+		dev_list = NULL;
 	}
 
 	/* Try to find resources on an unused vf */
@@ -239,6 +240,8 @@ find_free_vf_and_create_qp_grp(struct usnic_ib_dev *us_ibdev,
 qp_grp_check:
 	if (IS_ERR_OR_NULL(qp_grp)) {
 		usnic_err("Failed to allocate qp_grp\n");
+		if (usnic_ib_share_vf)
+			usnic_uiom_free_dev_list(dev_list);
 		return ERR_PTR(qp_grp ? PTR_ERR(qp_grp) : -ENOMEM);
 	}
 	return qp_grp;
drivers/iommu/intel/iommu.c +14 -2
index c9da9e93f545..151243fa01ba 100644
@@ -67,8 +67,8 @@
 #define MAX_AGAW_WIDTH 64
 #define MAX_AGAW_PFN_WIDTH	(MAX_AGAW_WIDTH - VTD_PAGE_SHIFT)
 
-#define __DOMAIN_MAX_PFN(gaw)  ((((uint64_t)1) << (gaw-VTD_PAGE_SHIFT)) - 1)
-#define __DOMAIN_MAX_ADDR(gaw) ((((uint64_t)1) << gaw) - 1)
+#define __DOMAIN_MAX_PFN(gaw)  ((((uint64_t)1) << ((gaw) - VTD_PAGE_SHIFT)) - 1)
+#define __DOMAIN_MAX_ADDR(gaw) ((((uint64_t)1) << (gaw)) - 1)
 
 /* We limit DOMAIN_MAX_PFN to fit in an unsigned long, and DOMAIN_MAX_ADDR
    to match. That way, we can use 'unsigned long' for PFNs with impunity. */
@@ -739,6 +739,18 @@ static void domain_update_iommu_cap(struct dmar_domain *domain)
 	 */
 	if (domain->nid == NUMA_NO_NODE)
 		domain->nid = domain_update_device_node(domain);
+
+	/*
+	 * First-level translation restricts the input-address to a
+	 * canonical address (i.e., address bits 63:N have the same
+	 * value as address bit [N-1], where N is 48-bits with 4-level
+	 * paging and 57-bits with 5-level paging). Hence, skip bit
+	 * [N-1].
+	 */
+	if (domain_use_first_level(domain))
+		domain->domain.geometry.aperture_end = __DOMAIN_MAX_ADDR(domain->gaw - 1);
+	else
+		domain->domain.geometry.aperture_end = __DOMAIN_MAX_ADDR(domain->gaw);
 }
 
 struct context_entry *iommu_context_addr(struct intel_iommu *iommu, u8 bus,
drivers/iommu/intel/svm.c +28 -8
index 4a10c9ff368c..43f392d27d31 100644
@@ -118,8 +118,10 @@ void intel_svm_check(struct intel_iommu *iommu)
 	iommu->flags |= VTD_FLAG_SVM_CAPABLE;
 }
 
-static void intel_flush_svm_range_dev (struct intel_svm *svm, struct intel_svm_dev *sdev,
-				unsigned long address, unsigned long pages, int ih)
+static void __flush_svm_range_dev(struct intel_svm *svm,
+				  struct intel_svm_dev *sdev,
+				  unsigned long address,
+				  unsigned long pages, int ih)
 {
 	struct qi_desc desc;
 
@@ -170,6 +172,22 @@ static void intel_flush_svm_range_dev (struct intel_svm *svm, struct intel_svm_d
 	}
 }
 
+static void intel_flush_svm_range_dev(struct intel_svm *svm,
+				      struct intel_svm_dev *sdev,
+				      unsigned long address,
+				      unsigned long pages, int ih)
+{
+	unsigned long shift = ilog2(__roundup_pow_of_two(pages));
+	unsigned long align = (1ULL << (VTD_PAGE_SHIFT + shift));
+	unsigned long start = ALIGN_DOWN(address, align);
+	unsigned long end = ALIGN(address + (pages << VTD_PAGE_SHIFT), align);
+
+	while (start < end) {
+		__flush_svm_range_dev(svm, sdev, start, align >> VTD_PAGE_SHIFT, ih);
+		start += align;
+	}
+}
+
 static void intel_flush_svm_range(struct intel_svm *svm, unsigned long address,
 				unsigned long pages, int ih)
 {
@@ -281,6 +299,7 @@ int intel_svm_bind_gpasid(struct iommu_domain *domain, struct device *dev,
 	struct dmar_domain *dmar_domain;
 	struct device_domain_info *info;
 	struct intel_svm *svm = NULL;
+	unsigned long iflags;
 	int ret = 0;
 
 	if (WARN_ON(!iommu) || !data)
@@ -382,12 +401,12 @@ int intel_svm_bind_gpasid(struct iommu_domain *domain, struct device *dev,
 	 * each bind of a new device even with an existing PASID, we need to
 	 * call the nested mode setup function here.
 	 */
-	spin_lock(&iommu->lock);
+	spin_lock_irqsave(&iommu->lock, iflags);
 	ret = intel_pasid_setup_nested(iommu, dev,
 				       (pgd_t *)(uintptr_t)data->gpgd,
 				       data->hpasid, &data->vendor.vtd, dmar_domain,
 				       data->addr_width);
-	spin_unlock(&iommu->lock);
+	spin_unlock_irqrestore(&iommu->lock, iflags);
 	if (ret) {
 		dev_err_ratelimited(dev, "Failed to set up PASID %llu in nested mode, Err %d\n",
 				    data->hpasid, ret);
@@ -487,6 +506,7 @@ intel_svm_bind_mm(struct device *dev, unsigned int flags,
 	struct device_domain_info *info;
 	struct intel_svm_dev *sdev;
 	struct intel_svm *svm = NULL;
+	unsigned long iflags;
 	int pasid_max;
 	int ret;
 
@@ -606,14 +626,14 @@ intel_svm_bind_mm(struct device *dev, unsigned int flags,
 			}
 		}
 
-		spin_lock(&iommu->lock);
+		spin_lock_irqsave(&iommu->lock, iflags);
 		ret = intel_pasid_setup_first_level(iommu, dev,
 				mm ? mm->pgd : init_mm.pgd,
 				svm->pasid, FLPT_DEFAULT_DID,
 				(mm ? 0 : PASID_FLAG_SUPERVISOR_MODE) |
 				(cpu_feature_enabled(X86_FEATURE_LA57) ?
 				 PASID_FLAG_FL5LP : 0));
-		spin_unlock(&iommu->lock);
+		spin_unlock_irqrestore(&iommu->lock, iflags);
 		if (ret) {
 			if (mm)
 				mmu_notifier_unregister(&svm->notifier, mm);
@@ -633,14 +653,14 @@ intel_svm_bind_mm(struct device *dev, unsigned int flags,
 		 * Binding a new device with existing PASID, need to setup
 		 * the PASID entry.
 		 */
-		spin_lock(&iommu->lock);
+		spin_lock_irqsave(&iommu->lock, iflags);
 		ret = intel_pasid_setup_first_level(iommu, dev,
 						mm ? mm->pgd : init_mm.pgd,
 						svm->pasid, FLPT_DEFAULT_DID,
 						(mm ? 0 : PASID_FLAG_SUPERVISOR_MODE) |
 						(cpu_feature_enabled(X86_FEATURE_LA57) ?
 						PASID_FLAG_FL5LP : 0));
-		spin_unlock(&iommu->lock);
+		spin_unlock_irqrestore(&iommu->lock, iflags);
 		if (ret) {
 			kfree(sdev);
 			goto out;
drivers/isdn/mISDN/Kconfig +1 -0
index 26cf0ac9c4ad..c9a53c222472 100644
@@ -13,6 +13,7 @@ if MISDN != n
 config MISDN_DSP
 	tristate "Digital Audio Processing of transparent data"
 	depends on MISDN
+	select BITREVERSE
 	help
 	  Enable support for digital audio processing capability.
 
drivers/md/Kconfig +1 -0
index 30ba3573626c..0e04d3718af3 100644
@@ -602,6 +602,7 @@ config DM_ZONED
 	tristate "Drive-managed zoned block device target support"
 	depends on BLK_DEV_DM
 	depends on BLK_DEV_ZONED
+	select CRC32
 	help
 	  This device-mapper target takes a host-managed or host-aware zoned
 	  block device and exposes most of its capacity as a regular block
drivers/md/dm-bufio.c +6 -0
index 9c1a86bde658..fce4cbf9529d 100644
@@ -1534,6 +1534,12 @@ sector_t dm_bufio_get_device_size(struct dm_bufio_client *c)
 }
 EXPORT_SYMBOL_GPL(dm_bufio_get_device_size);
 
+struct dm_io_client *dm_bufio_get_dm_io_client(struct dm_bufio_client *c)
+{
+	return c->dm_io;
+}
+EXPORT_SYMBOL_GPL(dm_bufio_get_dm_io_client);
+
 sector_t dm_bufio_get_block_number(struct dm_buffer *b)
 {
 	return b->block;
drivers/md/dm-crypt.c +152 -18

264 lines not on this page · raw message

drivers/md/dm-integrity.c +50 -12

124 lines not on this page · raw message

drivers/md/dm-raid.c +3 -3
index 56b723d012ac..6dca932d6f1d 100644
@@ -3730,10 +3730,10 @@ static void raid_io_hints(struct dm_target *ti, struct queue_limits *limits)
 	blk_limits_io_opt(limits, chunk_size_bytes * mddev_data_stripes(rs));
 
 	/*
-	 * RAID1 and RAID10 personalities require bio splitting,
-	 * RAID0/4/5/6 don't and process large discard bios properly.
+	 * RAID0 and RAID10 personalities require bio splitting,
+	 * RAID1/4/5/6 don't and process large discard bios properly.
 	 */
-	if (rs_is_raid1(rs) || rs_is_raid10(rs)) {
+	if (rs_is_raid0(rs) || rs_is_raid10(rs)) {
 		limits->discard_granularity = chunk_size_bytes;
 		limits->max_discard_sectors = rs->md.chunk_sectors;
 	}
drivers/md/dm-snap.c +24 -0
index 4668b2cd98f4..11890db71f3f 100644
@@ -141,6 +141,11 @@ struct dm_snapshot {
 	 * for them to be committed.
 	 */
 	struct bio_list bios_queued_during_merge;
+
+	/*
+	 * Flush data after merge.
+	 */
+	struct bio flush_bio;
 };
 
 /*
@@ -1121,6 +1126,17 @@ static void snapshot_merge_next_chunks(struct dm_snapshot *s)
 
 static void error_bios(struct bio *bio);
 
+static int flush_data(struct dm_snapshot *s)
+{
+	struct bio *flush_bio = &s->flush_bio;
+
+	bio_reset(flush_bio);
+	bio_set_dev(flush_bio, s->origin->bdev);
+	flush_bio->bi_opf = REQ_OP_WRITE | REQ_PREFLUSH;
+
+	return submit_bio_wait(flush_bio);
+}
+
 static void merge_callback(int read_err, unsigned long write_err, void *context)
 {
 	struct dm_snapshot *s = context;
@@ -1134,6 +1150,11 @@ static void merge_callback(int read_err, unsigned long write_err, void *context)
 		goto shut;
 	}
 
+	if (flush_data(s) < 0) {
+		DMERR("Flush after merge failed: shutting down merge");
+		goto shut;
+	}
+
 	if (s->store->type->commit_merge(s->store,
 					 s->num_merging_chunks) < 0) {
 		DMERR("Write error in exception store: shutting down merge");
@@ -1318,6 +1339,7 @@ static int snapshot_ctr(struct dm_target *ti, unsigned int argc, char **argv)
 	s->first_merging_chunk = 0;
 	s->num_merging_chunks = 0;
 	bio_list_init(&s->bios_queued_during_merge);
+	bio_init(&s->flush_bio, NULL, 0);
 
 	/* Allocate hash table for COW data */
 	if (init_hash_tables(s)) {
@@ -1504,6 +1526,8 @@ static void snapshot_dtr(struct dm_target *ti)
 
 	dm_exception_store_destroy(s->store);
 
+	bio_uninit(&s->flush_bio);
+
 	dm_put_device(ti, s->cow);
 
 	dm_put_device(ti, s->origin);
drivers/md/dm.c +1 -1
index 4e0cbfe3f14d..1e99a4c1eca4 100644
@@ -562,7 +562,7 @@ static int dm_blk_ioctl(struct block_device *bdev, fmode_t mode,
 		 * subset of the parent bdev; require extra privileges.
 		 */
 		if (!capable(CAP_SYS_RAWIO)) {
-			DMWARN_LIMIT(
+			DMDEBUG_LIMIT(
 	"%s: sending ioctl %x to DM device without required privilege.",
 				current->comm, cmd);
 			r = -ENOIOCTLCMD;
drivers/misc/habanalabs/common/device.c +2 -0
index 783bbdcb1e61..09c328ee65da 100644
@@ -1027,6 +1027,7 @@ int hl_device_reset(struct hl_device *hdev, bool hard_reset,
 						GFP_KERNEL);
 		if (!hdev->kernel_ctx) {
 			rc = -ENOMEM;
+			hl_mmu_fini(hdev);
 			goto out_err;
 		}
 
@@ -1038,6 +1039,7 @@ int hl_device_reset(struct hl_device *hdev, bool hard_reset,
 				"failed to init kernel ctx in hard reset\n");
 			kfree(hdev->kernel_ctx);
 			hdev->kernel_ctx = NULL;
+			hl_mmu_fini(hdev);
 			goto out_err;
 		}
 	}
drivers/misc/habanalabs/common/habanalabs_drv.c +1 -0
index f9067d3ef437..3bcef64a677a 100644
@@ -528,6 +528,7 @@ static struct pci_driver hl_pci_driver = {
 	.id_table = ids,
 	.probe = hl_pci_probe,
 	.remove = hl_pci_remove,
+	.shutdown = hl_pci_remove,
 	.driver.pm = &hl_pm_ops,
 	.err_handler = &hl_pci_err_handler,
 };
drivers/misc/habanalabs/common/pci.c +17 -11
index 4327e5704ebb..607f9a11fba1 100644
@@ -130,10 +130,8 @@ static int hl_pci_elbi_write(struct hl_device *hdev, u64 addr, u32 data)
 	if ((val & PCI_CONFIG_ELBI_STS_MASK) == PCI_CONFIG_ELBI_STS_DONE)
 		return 0;
 
-	if (val & PCI_CONFIG_ELBI_STS_ERR) {
-		dev_err(hdev->dev, "Error writing to ELBI\n");
+	if (val & PCI_CONFIG_ELBI_STS_ERR)
 		return -EIO;
-	}
 
 	if (!(val & PCI_CONFIG_ELBI_STS_MASK)) {
 		dev_err(hdev->dev, "ELBI write didn't finish in time\n");
@@ -160,8 +158,12 @@ int hl_pci_iatu_write(struct hl_device *hdev, u32 addr, u32 data)
 
 	dbi_offset = addr & 0xFFF;
 
-	rc = hl_pci_elbi_write(hdev, prop->pcie_aux_dbi_reg_addr, 0x00300000);
-	rc |= hl_pci_elbi_write(hdev, prop->pcie_dbi_base_address + dbi_offset,
+	/* Ignore result of writing to pcie_aux_dbi_reg_addr as it could fail
+	 * in case the firmware security is enabled
+	 */
+	hl_pci_elbi_write(hdev, prop->pcie_aux_dbi_reg_addr, 0x00300000);
+
+	rc = hl_pci_elbi_write(hdev, prop->pcie_dbi_base_address + dbi_offset,
 				data);
 
 	if (rc)
@@ -244,9 +246,11 @@ int hl_pci_set_inbound_region(struct hl_device *hdev, u8 region,
 
 	rc |= hl_pci_iatu_write(hdev, offset + 0x4, ctrl_reg_val);
 
-	/* Return the DBI window to the default location */
-	rc |= hl_pci_elbi_write(hdev, prop->pcie_aux_dbi_reg_addr, 0);
-	rc |= hl_pci_elbi_write(hdev, prop->pcie_aux_dbi_reg_addr + 4, 0);
+	/* Return the DBI window to the default location
+	 * Ignore result of writing to pcie_aux_dbi_reg_addr as it could fail
+	 * in case the firmware security is enabled
+	 */
+	hl_pci_elbi_write(hdev, prop->pcie_aux_dbi_reg_addr, 0);
 
 	if (rc)
 		dev_err(hdev->dev, "failed to map bar %u to 0x%08llx\n",
@@ -294,9 +298,11 @@ int hl_pci_set_outbound_region(struct hl_device *hdev,
 	/* Enable */
 	rc |= hl_pci_iatu_write(hdev, 0x004, 0x80000000);
 
-	/* Return the DBI window to the default location */
-	rc |= hl_pci_elbi_write(hdev, prop->pcie_aux_dbi_reg_addr, 0);
-	rc |= hl_pci_elbi_write(hdev, prop->pcie_aux_dbi_reg_addr + 4, 0);
+	/* Return the DBI window to the default location
+	 * Ignore result of writing to pcie_aux_dbi_reg_addr as it could fail
+	 * in case the firmware security is enabled
+	 */
+	hl_pci_elbi_write(hdev, prop->pcie_aux_dbi_reg_addr, 0);
 
 	return rc;
 }
drivers/misc/habanalabs/gaudi/gaudi.c +10 -4
index 7ea6b4368a91..ed1bd41262ec 100644
@@ -754,11 +754,17 @@ static int gaudi_init_tpc_mem(struct hl_device *hdev)
 	size_t fw_size;
 	void *cpu_addr;
 	dma_addr_t dma_handle;
-	int rc;
+	int rc, count = 5;
 
+again:
 	rc = request_firmware(&fw, GAUDI_TPC_FW_FILE, hdev->dev);
+	if (rc == -EINTR && count-- > 0) {
+		msleep(50);
+		goto again;
+	}
+
 	if (rc) {
-		dev_err(hdev->dev, "Firmware file %s is not found!\n",
+		dev_err(hdev->dev, "Failed to load firmware file %s\n",
 				GAUDI_TPC_FW_FILE);
 		goto out;
 	}
@@ -2893,7 +2899,7 @@ static int gaudi_init_cpu_queues(struct hl_device *hdev, u32 cpu_timeout)
 static void gaudi_pre_hw_init(struct hl_device *hdev)
 {
 	/* Perform read from the device to make sure device is up */
-	RREG32(mmPCIE_DBI_DEVICE_ID_VENDOR_ID_REG);
+	RREG32(mmHW_STATE);
 
 	/* Set the access through PCI bars (Linux driver only) as
 	 * secured
@@ -2996,7 +3002,7 @@ static int gaudi_hw_init(struct hl_device *hdev)
 	}
 
 	/* Perform read from the device to flush all configuration */
-	RREG32(mmPCIE_DBI_DEVICE_ID_VENDOR_ID_REG);
+	RREG32(mmHW_STATE);
 
 	return 0;
 
drivers/misc/habanalabs/gaudi/gaudi_coresight.c +2 -1
index 3d2b0f0f4650..283d37b76447 100644
@@ -9,6 +9,7 @@
 #include "../include/gaudi/gaudi_coresight.h"
 #include "../include/gaudi/asic_reg/gaudi_regs.h"
 #include "../include/gaudi/gaudi_masks.h"
+#include "../include/gaudi/gaudi_reg_map.h"
 
 #include <uapi/misc/habanalabs.h>
 #include <linux/coresight.h>
@@ -876,7 +877,7 @@ int gaudi_debug_coresight(struct hl_device *hdev, void *data)
 	}
 
 	/* Perform read from the device to flush all configuration */
-	RREG32(mmPCIE_DBI_DEVICE_ID_VENDOR_ID_REG);
+	RREG32(mmHW_STATE);
 
 	return rc;
 }
drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.c +6 -2
index 8c8368c2f335..64dbbb04b043 100644
@@ -222,8 +222,12 @@ int bnxt_get_ulp_msix_base(struct bnxt *bp)
 
 int bnxt_get_ulp_stat_ctxs(struct bnxt *bp)
 {
-	if (bnxt_ulp_registered(bp->edev, BNXT_ROCE_ULP))
-		return BNXT_MIN_ROCE_STAT_CTXS;
+	if (bnxt_ulp_registered(bp->edev, BNXT_ROCE_ULP)) {
+		struct bnxt_en_dev *edev = bp->edev;
+
+		if (edev->ulp_tbl[BNXT_ROCE_ULP].msix_requested)
+			return BNXT_MIN_ROCE_STAT_CTXS;
+	}
 
 	return 0;
 }
drivers/net/ethernet/freescale/fs_enet/mii-bitbang.c +1 -0
index c8e5d889bd81..21de56345503 100644
@@ -223,3 +223,4 @@ static struct platform_driver fs_enet_bb_mdio_driver = {
 };
 
 module_platform_driver(fs_enet_bb_mdio_driver);
+MODULE_LICENSE("GPL");
drivers/net/ethernet/freescale/fs_enet/mii-fec.c +1 -0
index 8b51ee142fa3..152f4d83765a 100644
@@ -224,3 +224,4 @@ static struct platform_driver fs_enet_fec_mdio_driver = {
 };
 
 module_platform_driver(fs_enet_fec_mdio_driver);
+MODULE_LICENSE("GPL");
drivers/net/ethernet/freescale/ucc_geth.h +8 -1
index 3fe903972195..c80bed2c995c 100644
@@ -575,7 +575,14 @@ struct ucc_geth_tx_global_pram {
 	u32 vtagtable[0x8];	/* 8 4-byte VLAN tags */
 	u32 tqptr;		/* a base pointer to the Tx Queues Memory
 				   Region */
-	u8 res2[0x80 - 0x74];
+	u8 res2[0x78 - 0x74];
+	u64 snums_en;
+	u32 l2l3baseptr;	/* top byte consists of a few other bit fields */
+
+	u16 mtu[8];
+	u8 res3[0xa8 - 0x94];
+	u32 wrrtablebase;	/* top byte is reserved */
+	u8 res4[0xc0 - 0xac];
 } __packed;
 
 /* structure representing Extended Filtering Global Parameters in PRAM */
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c +49 -28

154 lines not on this page · raw message

drivers/net/ethernet/mellanox/mlx5/core/esw/acl/egress_lgcy.c +13 -14
index d46f8b225ebe..3e19b1721303 100644
@@ -95,22 +95,21 @@ int esw_acl_egress_lgcy_setup(struct mlx5_eswitch *esw,
 		return 0;
 	}
 
-	if (!IS_ERR_OR_NULL(vport->egress.acl))
-		return 0;
-
-	vport->egress.acl = esw_acl_table_create(esw, vport->vport,
-						 MLX5_FLOW_NAMESPACE_ESW_EGRESS,
-						 table_size);
-	if (IS_ERR_OR_NULL(vport->egress.acl)) {
-		err = PTR_ERR(vport->egress.acl);
-		vport->egress.acl = NULL;
-		goto out;
+	if (!vport->egress.acl) {
+		vport->egress.acl = esw_acl_table_create(esw, vport->vport,
+							 MLX5_FLOW_NAMESPACE_ESW_EGRESS,
+							 table_size);
+		if (IS_ERR(vport->egress.acl)) {
+			err = PTR_ERR(vport->egress.acl);
+			vport->egress.acl = NULL;
+			goto out;
+		}
+
+		err = esw_acl_egress_lgcy_groups_create(esw, vport);
+		if (err)
+			goto out;
 	}
 
-	err = esw_acl_egress_lgcy_groups_create(esw, vport);
-	if (err)
-		goto out;
-
 	esw_debug(esw->dev,
 		  "vport[%d] configure egress rules, vlan(%d) qos(%d)\n",
 		  vport->vport, vport->info.vlan, vport->info.qos);
drivers/net/ethernet/mellanox/mlx5/core/esw/acl/egress_ofld.c +1 -1
index c3faae67e4d6..4c74e2690d57 100644
@@ -173,7 +173,7 @@ int esw_acl_egress_ofld_setup(struct mlx5_eswitch *esw, struct mlx5_vport *vport
 		table_size++;
 	vport->egress.acl = esw_acl_table_create(esw, vport->vport,
 						 MLX5_FLOW_NAMESPACE_ESW_EGRESS, table_size);
-	if (IS_ERR_OR_NULL(vport->egress.acl)) {
+	if (IS_ERR(vport->egress.acl)) {
 		err = PTR_ERR(vport->egress.acl);
 		vport->egress.acl = NULL;
 		return err;
drivers/net/ethernet/mellanox/mlx5/core/esw/acl/ingress_lgcy.c +1 -1
index b68976b378b8..d64fad2823e7 100644
@@ -180,7 +180,7 @@ int esw_acl_ingress_lgcy_setup(struct mlx5_eswitch *esw,
 		vport->ingress.acl = esw_acl_table_create(esw, vport->vport,
 							  MLX5_FLOW_NAMESPACE_ESW_INGRESS,
 							  table_size);
-		if (IS_ERR_OR_NULL(vport->ingress.acl)) {
+		if (IS_ERR(vport->ingress.acl)) {
 			err = PTR_ERR(vport->ingress.acl);
 			vport->ingress.acl = NULL;
 			return err;
drivers/net/ethernet/mellanox/mlx5/core/esw/acl/ingress_ofld.c +1 -1
index 4e55d7225a26..548c005ea633 100644
@@ -258,7 +258,7 @@ int esw_acl_ingress_ofld_setup(struct mlx5_eswitch *esw,
 	vport->ingress.acl = esw_acl_table_create(esw, vport->vport,
 						  MLX5_FLOW_NAMESPACE_ESW_INGRESS,
 						  num_ftes);
-	if (IS_ERR_OR_NULL(vport->ingress.acl)) {
+	if (IS_ERR(vport->ingress.acl)) {
 		err = PTR_ERR(vport->ingress.acl);
 		vport->ingress.acl = NULL;
 		return err;
drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c +1 -5
index e5234bb02daf..9a6a519426a0 100644
@@ -236,6 +236,7 @@ static int intel_mgbe_common_data(struct pci_dev *pdev,
 	int ret;
 	int i;
 
+	plat->phy_addr = -1;
 	plat->clk_csr = 5;
 	plat->has_gmac = 0;
 	plat->has_gmac4 = 1;
@@ -345,7 +346,6 @@ static int ehl_sgmii_data(struct pci_dev *pdev,
 			  struct plat_stmmacenet_data *plat)
 {
 	plat->bus_id = 1;
-	plat->phy_addr = 0;
 	plat->phy_interface = PHY_INTERFACE_MODE_SGMII;
 
 	plat->serdes_powerup = intel_serdes_powerup;
@@ -362,7 +362,6 @@ static int ehl_rgmii_data(struct pci_dev *pdev,
 			  struct plat_stmmacenet_data *plat)
 {
 	plat->bus_id = 1;
-	plat->phy_addr = 0;
 	plat->phy_interface = PHY_INTERFACE_MODE_RGMII;
 
 	return ehl_common_data(pdev, plat);
@@ -376,7 +375,6 @@ static int ehl_pse0_common_data(struct pci_dev *pdev,
 				struct plat_stmmacenet_data *plat)
 {
 	plat->bus_id = 2;
-	plat->phy_addr = 1;
 	return ehl_common_data(pdev, plat);
 }
 
@@ -408,7 +406,6 @@ static int ehl_pse1_common_data(struct pci_dev *pdev,
 				struct plat_stmmacenet_data *plat)
 {
 	plat->bus_id = 3;
-	plat->phy_addr = 1;
 	return ehl_common_data(pdev, plat);
 }
 
@@ -450,7 +447,6 @@ static int tgl_sgmii_data(struct pci_dev *pdev,
 			  struct plat_stmmacenet_data *plat)
 {
 	plat->bus_id = 1;
-	plat->phy_addr = 0;
 	plat->phy_interface = PHY_INTERFACE_MODE_SGMII;
 	plat->serdes_powerup = intel_serdes_powerup;
 	plat->serdes_powerdown = intel_serdes_powerdown;
drivers/net/usb/cdc_ether.c +7 -0
index 8c1d61c2cbac..6aaa0675c28a 100644
@@ -793,6 +793,13 @@ static const struct usb_device_id	products[] = {
 	.driver_info = 0,
 },
 
+/* Lenovo Powered USB-C Travel Hub (4X90S92381, based on Realtek RTL8153) */
+{
+	USB_DEVICE_AND_INTERFACE_INFO(LENOVO_VENDOR_ID, 0x721e, USB_CLASS_COMM,
+			USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE),
+	.driver_info = 0,
+},
+
 /* ThinkPad USB-C Dock Gen 2 (based on Realtek RTL8153) */
 {
 	USB_DEVICE_AND_INTERFACE_INFO(LENOVO_VENDOR_ID, 0xa387, USB_CLASS_COMM,
drivers/net/usb/r8152.c +1 -0
index b1770489aca5..88f177aca342 100644
@@ -6893,6 +6893,7 @@ static const struct usb_device_id rtl8152_table[] = {
 	{REALTEK_USB_DEVICE(VENDOR_ID_LENOVO,  0x7205)},
 	{REALTEK_USB_DEVICE(VENDOR_ID_LENOVO,  0x720c)},
 	{REALTEK_USB_DEVICE(VENDOR_ID_LENOVO,  0x7214)},
+	{REALTEK_USB_DEVICE(VENDOR_ID_LENOVO,  0x721e)},
 	{REALTEK_USB_DEVICE(VENDOR_ID_LENOVO,  0xa387)},
 	{REALTEK_USB_DEVICE(VENDOR_ID_LINKSYS, 0x0041)},
 	{REALTEK_USB_DEVICE(VENDOR_ID_NVIDIA,  0x09ff)},
drivers/net/wireless/ath/ath11k/dp_rx.c +7 -3
index 01625327eef7..3638501a0959 100644
@@ -2272,6 +2272,7 @@ static void ath11k_dp_rx_h_ppdu(struct ath11k *ar, struct hal_rx_desc *rx_desc,
 {
 	u8 channel_num;
 	u32 center_freq;
+	struct ieee80211_channel *channel;
 
 	rx_status->freq = 0;
 	rx_status->rate_idx = 0;
@@ -2292,9 +2293,12 @@ static void ath11k_dp_rx_h_ppdu(struct ath11k *ar, struct hal_rx_desc *rx_desc,
 		rx_status->band = NL80211_BAND_5GHZ;
 	} else {
 		spin_lock_bh(&ar->data_lock);
-		rx_status->band = ar->rx_channel->band;
-		channel_num =
-			ieee80211_frequency_to_channel(ar->rx_channel->center_freq);
+		channel = ar->rx_channel;
+		if (channel) {
+			rx_status->band = channel->band;
+			channel_num =
+				ieee80211_frequency_to_channel(channel->center_freq);
+		}
 		spin_unlock_bh(&ar->data_lock);
 		ath11k_dbg_dump(ar->ab, ATH11K_DBG_DATA, NULL, "rx_desc: ",
 				rx_desc, sizeof(struct hal_rx_desc));
drivers/net/wireless/ath/ath11k/qmi.c +22 -2
index 99a88ca83dea..2ae7c6bf091e 100644
@@ -1654,6 +1654,7 @@ static int ath11k_qmi_respond_fw_mem_request(struct ath11k_base *ab)
 	struct qmi_wlanfw_respond_mem_resp_msg_v01 resp;
 	struct qmi_txn txn = {};
 	int ret = 0, i;
+	bool delayed;
 
 	req = kzalloc(sizeof(*req), GFP_KERNEL);
 	if (!req)
@@ -1666,11 +1667,13 @@ static int ath11k_qmi_respond_fw_mem_request(struct ath11k_base *ab)
 	 * failure to FW and FW will then request mulitple blocks of small
 	 * chunk size memory.
 	 */
-	if (!ab->bus_params.fixed_mem_region && ab->qmi.mem_seg_count <= 2) {
+	if (!ab->bus_params.fixed_mem_region && ab->qmi.target_mem_delayed) {
+		delayed = true;
 		ath11k_dbg(ab, ATH11K_DBG_QMI, "qmi delays mem_request %d\n",
 			   ab->qmi.mem_seg_count);
 		memset(req, 0, sizeof(*req));
 	} else {
+		delayed = false;
 		req->mem_seg_len = ab->qmi.mem_seg_count;
 
 		for (i = 0; i < req->mem_seg_len ; i++) {
@@ -1702,6 +1705,12 @@ static int ath11k_qmi_respond_fw_mem_request(struct ath11k_base *ab)
 	}
 
 	if (resp.resp.result != QMI_RESULT_SUCCESS_V01) {
+		/* the error response is expected when
+		 * target_mem_delayed is true.
+		 */
+		if (delayed && resp.resp.error == 0)
+			goto out;
+
 		ath11k_warn(ab, "Respond mem req failed, result: %d, err: %d\n",
 			    resp.resp.result, resp.resp.error);
 		ret = -EINVAL;
@@ -1736,6 +1745,8 @@ static int ath11k_qmi_alloc_target_mem_chunk(struct ath11k_base *ab)
 	int i;
 	struct target_mem_chunk *chunk;
 
+	ab->qmi.target_mem_delayed = false;
+
 	for (i = 0; i < ab->qmi.mem_seg_count; i++) {
 		chunk = &ab->qmi.target_mem[i];
 		chunk->vaddr = dma_alloc_coherent(ab->dev,
@@ -1743,6 +1754,15 @@ static int ath11k_qmi_alloc_target_mem_chunk(struct ath11k_base *ab)
 						  &chunk->paddr,
 						  GFP_KERNEL);
 		if (!chunk->vaddr) {
+			if (ab->qmi.mem_seg_count <= 2) {
+				ath11k_dbg(ab, ATH11K_DBG_QMI,
+					   "qmi dma allocation failed (%d B type %u), will try later with small size\n",
+					    chunk->size,
+					    chunk->type);
+				ath11k_qmi_free_target_mem_chunk(ab);
+				ab->qmi.target_mem_delayed = true;
+				return 0;
+			}
 			ath11k_err(ab, "failed to alloc memory, size: 0x%x, type: %u\n",
 				   chunk->size,
 				   chunk->type);
@@ -2467,7 +2487,7 @@ static void ath11k_qmi_msg_mem_request_cb(struct qmi_handle *qmi_hdl,
 				    ret);
 			return;
 		}
-	} else if (msg->mem_seg_len > 2) {
+	} else {
 		ret = ath11k_qmi_alloc_target_mem_chunk(ab);
 		if (ret) {
 			ath11k_warn(ab, "qmi failed to alloc target memory: %d\n",
drivers/net/wireless/ath/ath11k/qmi.h +1 -0
index b0a818f0401b..59f1452b3544 100644
@@ -121,6 +121,7 @@ struct ath11k_qmi {
 	struct target_mem_chunk target_mem[ATH11K_QMI_WLANFW_MAX_NUM_MEM_SEG_V01];
 	u32 mem_seg_count;
 	u32 target_mem_mode;
+	bool target_mem_delayed;
 	u8 cal_done;
 	struct target_info target;
 	struct m3_mem_region m3_mem;
drivers/nvme/host/core.c +8 -3
index 9a270e49df17..34cb59b2fcd6 100644
@@ -2802,6 +2802,11 @@ static const struct attribute_group *nvme_subsys_attrs_groups[] = {
 	NULL,
 };
 
+static inline bool nvme_discovery_ctrl(struct nvme_ctrl *ctrl)
+{
+	return ctrl->opts && ctrl->opts->discovery_nqn;
+}
+
 static bool nvme_validate_cntlid(struct nvme_subsystem *subsys,
 		struct nvme_ctrl *ctrl, struct nvme_id_ctrl *id)
 {
@@ -2821,7 +2826,7 @@ static bool nvme_validate_cntlid(struct nvme_subsystem *subsys,
 		}
 
 		if ((id->cmic & NVME_CTRL_CMIC_MULTI_CTRL) ||
-		    (ctrl->opts && ctrl->opts->discovery_nqn))
+		    nvme_discovery_ctrl(ctrl))
 			continue;
 
 		dev_err(ctrl->device,
@@ -3090,7 +3095,7 @@ int nvme_init_identify(struct nvme_ctrl *ctrl)
 			goto out_free;
 		}
 
-		if (!ctrl->opts->discovery_nqn && !ctrl->kas) {
+		if (!nvme_discovery_ctrl(ctrl) && !ctrl->kas) {
 			dev_err(ctrl->device,
 				"keep-alive support is mandatory for fabrics\n");
 			ret = -EINVAL;
@@ -3130,7 +3135,7 @@ int nvme_init_identify(struct nvme_ctrl *ctrl)
 	if (ret < 0)
 		return ret;
 
-	if (!ctrl->identified) {
+	if (!ctrl->identified && !nvme_discovery_ctrl(ctrl)) {
 		ret = nvme_hwmon_init(ctrl);
 		if (ret < 0)
 			return ret;
drivers/nvme/host/fc.c +14 -1
index f4c246462658..5ead217ac2bc 100644
@@ -166,6 +166,7 @@ struct nvme_fc_ctrl {
 	struct blk_mq_tag_set	admin_tag_set;
 	struct blk_mq_tag_set	tag_set;
 
+	struct work_struct	ioerr_work;
 	struct delayed_work	connect_work;
 
 	struct kref		ref;
@@ -1888,6 +1889,15 @@ __nvme_fc_fcpop_chk_teardowns(struct nvme_fc_ctrl *ctrl,
 	}
 }
 
+static void
+nvme_fc_ctrl_ioerr_work(struct work_struct *work)
+{
+	struct nvme_fc_ctrl *ctrl =
+			container_of(work, struct nvme_fc_ctrl, ioerr_work);
+
+	nvme_fc_error_recovery(ctrl, "transport detected io error");
+}
+
 static void
 nvme_fc_fcpio_done(struct nvmefc_fcp_req *req)
 {
@@ -2046,7 +2056,7 @@ nvme_fc_fcpio_done(struct nvmefc_fcp_req *req)
 
 check_error:
 	if (terminate_assoc)
-		nvme_fc_error_recovery(ctrl, "transport detected io error");
+		queue_work(nvme_reset_wq, &ctrl->ioerr_work);
 }
 
 static int
@@ -3233,6 +3243,7 @@ nvme_fc_delete_ctrl(struct nvme_ctrl *nctrl)
 {
 	struct nvme_fc_ctrl *ctrl = to_fc_ctrl(nctrl);
 
+	cancel_work_sync(&ctrl->ioerr_work);
 	cancel_delayed_work_sync(&ctrl->connect_work);
 	/*
 	 * kill the association on the link side.  this will block
@@ -3449,6 +3460,7 @@ nvme_fc_init_ctrl(struct device *dev, struct nvmf_ctrl_options *opts,
 
 	INIT_WORK(&ctrl->ctrl.reset_work, nvme_fc_reset_ctrl_work);
 	INIT_DELAYED_WORK(&ctrl->connect_work, nvme_fc_connect_ctrl_work);
+	INIT_WORK(&ctrl->ioerr_work, nvme_fc_ctrl_ioerr_work);
 	spin_lock_init(&ctrl->lock);
 
 	/* io queue count */
@@ -3540,6 +3552,7 @@ nvme_fc_init_ctrl(struct device *dev, struct nvmf_ctrl_options *opts,
 
 fail_ctrl:
 	nvme_change_ctrl_state(&ctrl->ctrl, NVME_CTRL_DELETING);
+	cancel_work_sync(&ctrl->ioerr_work);
 	cancel_work_sync(&ctrl->ctrl.reset_work);
 	cancel_delayed_work_sync(&ctrl->connect_work);
 
drivers/nvme/host/pci.c +6 -4
index 3be352403839..a89d74c5cd1a 100644
@@ -967,6 +967,7 @@ static inline struct blk_mq_tags *nvme_queue_tagset(struct nvme_queue *nvmeq)
 static inline void nvme_handle_cqe(struct nvme_queue *nvmeq, u16 idx)
 {
 	struct nvme_completion *cqe = &nvmeq->cqes[idx];
+	__u16 command_id = READ_ONCE(cqe->command_id);
 	struct request *req;
 
 	/*
@@ -975,17 +976,17 @@ static inline void nvme_handle_cqe(struct nvme_queue *nvmeq, u16 idx)
 	 * aborts.  We don't even bother to allocate a struct request
 	 * for them but rather special case them here.
 	 */
-	if (unlikely(nvme_is_aen_req(nvmeq->qid, cqe->command_id))) {
+	if (unlikely(nvme_is_aen_req(nvmeq->qid, command_id))) {
 		nvme_complete_async_event(&nvmeq->dev->ctrl,
 				cqe->status, &cqe->result);
 		return;
 	}
 
-	req = blk_mq_tag_to_rq(nvme_queue_tagset(nvmeq), cqe->command_id);
+	req = blk_mq_tag_to_rq(nvme_queue_tagset(nvmeq), command_id);
 	if (unlikely(!req)) {
 		dev_warn(nvmeq->dev->ctrl.device,
 			"invalid id %d completed on queue %d\n",
-			cqe->command_id, le16_to_cpu(cqe->sq_id));
+			command_id, le16_to_cpu(cqe->sq_id));
 		return;
 	}
 
@@ -3201,7 +3202,8 @@ static const struct pci_device_id nvme_id_table[] = {
 	{ PCI_DEVICE(0x144d, 0xa821),   /* Samsung PM1725 */
 		.driver_data = NVME_QUIRK_DELAY_BEFORE_CHK_RDY, },
 	{ PCI_DEVICE(0x144d, 0xa822),   /* Samsung PM1725a */
-		.driver_data = NVME_QUIRK_DELAY_BEFORE_CHK_RDY, },
+		.driver_data = NVME_QUIRK_DELAY_BEFORE_CHK_RDY |
+				NVME_QUIRK_IGNORE_DEV_SUBNQN, },
 	{ PCI_DEVICE(0x1d1d, 0x1f1f),	/* LighNVM qemu device */
 		.driver_data = NVME_QUIRK_LIGHTNVM, },
 	{ PCI_DEVICE(0x1d1d, 0x2807),	/* CNEX WL */
drivers/nvme/host/tcp.c +2 -2
index 9aa3d9e91c5d..81db2331f6d7 100644
@@ -201,7 +201,7 @@ static inline size_t nvme_tcp_req_cur_offset(struct nvme_tcp_request *req)
 
 static inline size_t nvme_tcp_req_cur_length(struct nvme_tcp_request *req)
 {
-	return min_t(size_t, req->iter.bvec->bv_len - req->iter.iov_offset,
+	return min_t(size_t, iov_iter_single_seg_count(&req->iter),
 			req->pdu_len - req->pdu_sent);
 }
 
@@ -286,7 +286,7 @@ static inline void nvme_tcp_queue_request(struct nvme_tcp_request *req,
 	 * directly, otherwise queue io_work. Also, only do that if we
 	 * are on the same cpu, so we don't introduce contention.
 	 */
-	if (queue->io_cpu == smp_processor_id() &&
+	if (queue->io_cpu == __smp_processor_id() &&
 	    sync && empty && mutex_trylock(&queue->send_mutex)) {
 		queue->more_requests = !last;
 		nvme_tcp_send_all(queue);
drivers/nvme/target/rdma.c +18 -8
index 5c1e7cb7fe0d..06b6b742bb21 100644
@@ -1220,6 +1220,14 @@ nvmet_rdma_find_get_device(struct rdma_cm_id *cm_id)
 	}
 	ndev->inline_data_size = nport->inline_data_size;
 	ndev->inline_page_count = inline_page_count;
+
+	if (nport->pi_enable && !(cm_id->device->attrs.device_cap_flags &
+				  IB_DEVICE_INTEGRITY_HANDOVER)) {
+		pr_warn("T10-PI is not supported by device %s. Disabling it\n",
+			cm_id->device->name);
+		nport->pi_enable = false;
+	}
+
 	ndev->device = cm_id->device;
 	kref_init(&ndev->ref);
 
@@ -1641,6 +1649,16 @@ static void __nvmet_rdma_queue_disconnect(struct nvmet_rdma_queue *queue)
 	spin_lock_irqsave(&queue->state_lock, flags);
 	switch (queue->state) {
 	case NVMET_RDMA_Q_CONNECTING:
+		while (!list_empty(&queue->rsp_wait_list)) {
+			struct nvmet_rdma_rsp *rsp;
+
+			rsp = list_first_entry(&queue->rsp_wait_list,
+					       struct nvmet_rdma_rsp,
+					       wait_list);
+			list_del(&rsp->wait_list);
+			nvmet_rdma_put_rsp(rsp);
+		}
+		fallthrough;
 	case NVMET_RDMA_Q_LIVE:
 		queue->state = NVMET_RDMA_Q_DISCONNECTING;
 		disconnect = true;
@@ -1845,14 +1863,6 @@ static int nvmet_rdma_enable_port(struct nvmet_rdma_port *port)
 		goto out_destroy_id;
 	}
 
-	if (port->nport->pi_enable &&
-	    !(cm_id->device->attrs.device_cap_flags &
-	      IB_DEVICE_INTEGRITY_HANDOVER)) {
-		pr_err("T10-PI is not supported for %pISpcs\n", addr);
-		ret = -EINVAL;
-		goto out_destroy_id;
-	}
-
 	port->cm_id = cm_id;
 	return 0;
 
drivers/regulator/bd718x7-regulator.c +57 -0

225 lines not on this page · raw message

drivers/scsi/ufs/ufshcd.c +2 -1
index 7558b4abebfc..7b9a9a771b11 100644
@@ -8818,7 +8818,8 @@ int ufshcd_system_suspend(struct ufs_hba *hba)
 	if ((ufs_get_pm_lvl_to_dev_pwr_mode(hba->spm_lvl) ==
 	     hba->curr_dev_pwr_mode) &&
 	    (ufs_get_pm_lvl_to_link_pwr_state(hba->spm_lvl) ==
-	     hba->uic_link_state))
+	     hba->uic_link_state) &&
+	     !hba->dev_info.b_rpm_dev_flush_capable)
 		goto out;
 
 	if (pm_runtime_suspended(hba->dev)) {
drivers/spi/spi-altera.c +14 -12
index 809bfff3690a..cbc4c28c1541 100644
@@ -189,24 +189,26 @@ static int altera_spi_txrx(struct spi_master *master,
 
 		/* send the first byte */
 		altera_spi_tx_word(hw);
-	} else {
-		while (hw->count < hw->len) {
-			altera_spi_tx_word(hw);
 
-			for (;;) {
-				altr_spi_readl(hw, ALTERA_SPI_STATUS, &val);
-				if (val & ALTERA_SPI_STATUS_RRDY_MSK)
-					break;
+		return 1;
+	}
+
+	while (hw->count < hw->len) {
+		altera_spi_tx_word(hw);
 
-				cpu_relax();
-			}
+		for (;;) {
+			altr_spi_readl(hw, ALTERA_SPI_STATUS, &val);
+			if (val & ALTERA_SPI_STATUS_RRDY_MSK)
+				break;
 
-			altera_spi_rx_word(hw);
+			cpu_relax();
 		}
-		spi_finalize_current_transfer(master);
+
+		altera_spi_rx_word(hw);
 	}
+	spi_finalize_current_transfer(master);
 
-	return t->len;
+	return 0;
 }
 
 static irqreturn_t altera_spi_irq(int irq, void *dev)
drivers/spi/spi.c +5 -1
index 2eaa7dbb7010..7694e1ae5b0b 100644
@@ -1100,6 +1100,7 @@ static int spi_transfer_wait(struct spi_controller *ctlr,
 {
 	struct spi_statistics *statm = &ctlr->statistics;
 	struct spi_statistics *stats = &msg->spi->statistics;
+	u32 speed_hz = xfer->speed_hz;
 	unsigned long long ms;
 
 	if (spi_controller_is_slave(ctlr)) {
@@ -1108,8 +1109,11 @@ static int spi_transfer_wait(struct spi_controller *ctlr,
 			return -EINTR;
 		}
 	} else {
+		if (!speed_hz)
+			speed_hz = 100000;
+
 		ms = 8LL * 1000LL * xfer->len;
-		do_div(ms, xfer->speed_hz);
+		do_div(ms, speed_hz);
 		ms += ms + 200; /* some tolerance */
 
 		if (ms > UINT_MAX)
drivers/staging/hikey9xx/hisi-spmi-controller.c +15 -6
index f831c43f4783..29f226503668 100644
@@ -278,21 +278,24 @@ static int spmi_controller_probe(struct platform_device *pdev)
 	iores = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	if (!iores) {
 		dev_err(&pdev->dev, "can not get resource!\n");
-		return -EINVAL;
+		ret = -EINVAL;
+		goto err_put_controller;
 	}
 
 	spmi_controller->base = devm_ioremap(&pdev->dev, iores->start,
 					     resource_size(iores));
 	if (!spmi_controller->base) {
 		dev_err(&pdev->dev, "can not remap base addr!\n");
-		return -EADDRNOTAVAIL;
+		ret = -EADDRNOTAVAIL;
+		goto err_put_controller;
 	}
 
 	ret = of_property_read_u32(pdev->dev.of_node, "spmi-channel",
 				   &spmi_controller->channel);
 	if (ret) {
 		dev_err(&pdev->dev, "can not get channel\n");
-		return -ENODEV;
+		ret = -ENODEV;
+		goto err_put_controller;
 	}
 
 	platform_set_drvdata(pdev, spmi_controller);
@@ -309,9 +312,15 @@ static int spmi_controller_probe(struct platform_device *pdev)
 	ctrl->write_cmd = spmi_write_cmd;
 
 	ret = spmi_controller_add(ctrl);
-	if (ret)
-		dev_err(&pdev->dev, "spmi_add_controller failed with error %d!\n", ret);
+	if (ret) {
+		dev_err(&pdev->dev, "spmi_controller_add failed with error %d!\n", ret);
+		goto err_put_controller;
+	}
+
+	return 0;
 
+err_put_controller:
+	spmi_controller_put(ctrl);
 	return ret;
 }
 
@@ -320,7 +329,7 @@ static int spmi_del_controller(struct platform_device *pdev)
 	struct spmi_controller *ctrl = platform_get_drvdata(pdev);
 
 	spmi_controller_remove(ctrl);
-	kfree(ctrl);
+	spmi_controller_put(ctrl);
 	return 0;
 }
 
drivers/usb/typec/altmodes/Kconfig +1 -1
index 187690fd1a5b..60d375e9c3c7 100644
@@ -20,6 +20,6 @@ config TYPEC_NVIDIA_ALTMODE
 	  to enable support for VirtualLink devices with NVIDIA GPUs.
 
 	  To compile this driver as a module, choose M here: the
-	  module will be called typec_displayport.
+	  module will be called typec_nvidia.
 
 endmenu
drivers/xen/privcmd.c +19 -6
index b0c73c58f987..720a7b7abd46 100644
@@ -717,14 +717,15 @@ static long privcmd_ioctl_restrict(struct file *file, void __user *udata)
 	return 0;
 }
 
-static long privcmd_ioctl_mmap_resource(struct file *file, void __user *udata)
+static long privcmd_ioctl_mmap_resource(struct file *file,
+				struct privcmd_mmap_resource __user *udata)
 {
 	struct privcmd_data *data = file->private_data;
 	struct mm_struct *mm = current->mm;
 	struct vm_area_struct *vma;
 	struct privcmd_mmap_resource kdata;
 	xen_pfn_t *pfns = NULL;
-	struct xen_mem_acquire_resource xdata;
+	struct xen_mem_acquire_resource xdata = { };
 	int rc;
 
 	if (copy_from_user(&kdata, udata, sizeof(kdata)))
@@ -734,6 +735,22 @@ static long privcmd_ioctl_mmap_resource(struct file *file, void __user *udata)
 	if (data->domid != DOMID_INVALID && data->domid != kdata.dom)
 		return -EPERM;
 
+	/* Both fields must be set or unset */
+	if (!!kdata.addr != !!kdata.num)
+		return -EINVAL;
+
+	xdata.domid = kdata.dom;
+	xdata.type = kdata.type;
+	xdata.id = kdata.id;
+
+	if (!kdata.addr && !kdata.num) {
+		/* Query the size of the resource. */
+		rc = HYPERVISOR_memory_op(XENMEM_acquire_resource, &xdata);
+		if (rc)
+			return rc;
+		return __put_user(xdata.nr_frames, &udata->num);
+	}
+
 	mmap_write_lock(mm);
 
 	vma = find_vma(mm, kdata.addr);
@@ -768,10 +785,6 @@ static long privcmd_ioctl_mmap_resource(struct file *file, void __user *udata)
 	} else
 		vma->vm_private_data = PRIV_VMA_LOCKED;
 
[… more lines in the raw message]

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

fs/btrfs/discard.c +33 -27

60 lines not on this page · raw message

fs/btrfs/extent_io.c +1 -3
index 60f5f68d892d..30cf917a58e9 100644

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

fs/btrfs/qgroup.c +10 -3
index faed0e96cec2..d504a9a20751 100644

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

fs/btrfs/relocation.c +6 -1
index 9ba92d86da0b..108e93ff6cb6 100644

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

fs/btrfs/super.c +8 -0
index 8840a4fa81eb..2663485c17cb 100644

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

fs/btrfs/tree-checker.c +7 -0
index ea2bb4cb5890..40845428b739 100644

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

fs/cifs/dfs_cache.c +2 -1
index 6ee849698962..7b6db272fd0b 100644

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

fs/cifs/smb2pdu.c +1 -1
index fc06c762fbbf..c6f8bc6729aa 100644

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

fs/ext4/fast_commit.c +13 -12
index f2033e13a273..a1dd7ca962c3 100644

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

fs/ext4/file.c +1 -1
index 3ed8c048fb12..b692355b8c77 100644

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

fs/ext4/ioctl.c +3 -0
index f0381876a7e5..106bf149e8ca 100644

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

fs/ext4/namei.c +9 -8
index 793fc7db9d28..df0886e08a77 100644

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

fs/io_uring.c +20 -9
index 4833b68f1a1c..265aea2cd7bc 100644

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

fs/namespace.c +5 -2
index 93006abe7946..c7fbb50a5aaa 100644

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

fs/nfs/delegation.c +7 -5
index 816e1427f17e..04bf8066980c 100644

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

fs/nfs/internal.h +30 -8
index 6673a77884d9..98554dd18a71 100644

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

fs/nfs/nfs4proc.c +11 -17
index 6858b4bb556d..0cd5b127f3bb 100644

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

fs/nfs/nfs4super.c +2 -2
index 984cc42ee54d..d09bcfd7db89 100644

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

fs/nfs/pnfs.c +31 -27

58 lines not on this page · raw message

fs/nfs/pnfs.h +3 -5
index 78c389391848..132a345e9373 100644

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

fs/nfs/pnfs_nfs.c +10 -12
index 679767ac258d..e3b25822e0bb 100644

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

fs/proc/task_mmu.c +30 -23

53 lines not on this page · raw message

fs/select.c +11 -3
index ebfebdfe5c69..37aaa8317f3a 100644

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

include/linux/acpi.h +7 -0
index 39263c6b52e1..5b1dc1ad4fb3 100644

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

include/linux/compiler-gcc.h +6 -0
index 74c6c0486eed..555ab0fddbef 100644

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

include/linux/dm-bufio.h +1 -0
index 29d255fdd5d6..90bd558a17f5 100644

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

include/linux/rcupdate.h +6 -0
index 6cdd0152c253..5c119d6cecf1 100644

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

init/main.c +1 -0
index 32b2a8affafd..9d964511fe0c 100644

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

kernel/bpf/task_iter.c +19 -38

57 lines not on this page · raw message

kernel/rcu/tasks.h +21 -4
index d5d9f2d03e8a..73bbe792fe1e 100644

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

kernel/trace/Kconfig +1 -1
index e1bf5228fb69..29db703f6880 100644

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

kernel/trace/trace_kprobe.c +1 -1
index b29f92c51b1a..5fff39541b8a 100644

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

lib/raid6/Makefile +1 -1
index b4c0df6d706d..c770570bfe4f 100644

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

mm/hugetlb.c +1 -1
index 1fd11f96a707..9a3f06cdcc2a 100644

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

mm/process_vm_access.c +1 -0
index 702250f148e7..c90d722c6181 100644

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

mm/slub.c +1 -1
index 34dcc09e2ec9..3f4303f4b657 100644

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

mm/vmalloc.c +3 -1
index 279dc0c96568..fff03a331314 100644

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

mm/vmscan.c +2 -0
index 0ec6321e9887..4c5a9b2286bf 100644

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

net/netfilter/ipset/ip_set_hash_gen.h +13 -9
index 7d01086b38f0..7cd1d31fb2b8 100644

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

net/netfilter/nf_conntrack_standalone.c +3 -0
index 46c5557c1fec..0ee702d374b0 100644

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

net/netfilter/nf_nat_core.c +1 -0
index ea923f8cf9c4..b7c3c902290f 100644

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

net/sunrpc/addr.c +1 -1
index 010dcb876f9d..6e4dbd577a39 100644

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

net/wireless/Kconfig +1 -0
index 27026f587fa6..f620acd2a0f5 100644

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

scripts/kconfig/Makefile +0 -10
index e46df0a2d4f9..2c40e68853dd 100644

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

security/lsm_audit.c +5 -2
index 53d0d183db8f..08d5ef49f2e4 100644

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

sound/firewire/fireface/ff-transaction.c +1 -1
index 7f82762ccc8c..ee7122c461d4 100644

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

sound/firewire/tascam/tascam-transaction.c +1 -1
index 90288b4b4637..a073cece4a7d 100644

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

sound/pci/hda/patch_realtek.c +4 -0
index 3c1d2a3fb1a4..dd82ff2bd5d6 100644

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

sound/soc/amd/renoir/rn-pci-acp3x.c +7 -0
index 338b78c514ec..6f153856657a 100644

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

sound/soc/intel/skylake/cnl-sst.c +1 -0
index fcd8dff27ae8..1275c149acc0 100644

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

sound/soc/meson/axg-tdm-interface.c +13 -1
index c8664ab80d45..87cac440b369 100644

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

sound/soc/meson/axg-tdmin.c +2 -11
index 88ed95ae886b..b4faf9d5c1aa 100644

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

sound/soc/soc-dapm.c +1 -0
index 7f87b449f950..148c095df27b 100644

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

tools/bootconfig/scripts/bconf2ftrace.sh +1 -0
index 595e164dc352..feb30c2c7881 100755

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

tools/bootconfig/scripts/ftrace2bconf.sh +4 -0
index 6c0d4b61e0c2..a0c3bcc6da4f 100755

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

tools/perf/util/machine.c +2 -2
index 15385ea00190..74bf480aa4f0 100644

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

tools/perf/util/session.c +1 -1
index 098080287c68..22098fffac4f 100644

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

tools/testing/selftests/net/udpgro.sh +34 -0
index ac2a30be9b32..f8a19f548ae9 100755

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

tools/testing/selftests/netfilter/nft_conntrack_helper.sh +9 -3
index edf0a48da6bf..bf6b9626c7dd 100755

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.