Skip to contentSkip to conversation

Linux 5.18.13

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

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 5.18.13 kernel.

All users of the 5.18 kernel series must upgrade.

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

thanks,

greg k-h

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

 Documentation/devicetree/bindings/sound/qcom,lpass-cpu.yaml |    8 
 Documentation/driver-api/firmware/other_interfaces.rst      |    6 
 Documentation/filesystems/netfs_library.rst                 |    8 
 Documentation/networking/ip-sysctl.rst                      |    4 
 Makefile                                                    |    2 
 arch/arm/boot/dts/imx6qdl-ts7970.dtsi                       |    2 
 arch/arm/boot/dts/sama5d2.dtsi                              |    2 
 arch/arm/boot/dts/stm32mp151.dtsi                           |    2 
 arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts           |    2 
 arch/arm/include/asm/domain.h                               |   13 
 arch/arm/include/asm/mach/map.h                             |    1 
 arch/arm/include/asm/ptrace.h                               |   26 +
 arch/arm/mm/Kconfig                                         |    6 
 arch/arm/mm/alignment.c                                     |    3 
 arch/arm/mm/mmu.c                                           |   15 
 arch/arm/mm/proc-v7-bugs.c                                  |    9 
 arch/arm/probes/decode.h                                    |   26 -
 arch/arm64/boot/dts/broadcom/bcm4908/bcm4906.dtsi           |    8 
 arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi           |    2 
 arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi              |    5 
 arch/powerpc/sysdev/xive/spapr.c                            |    5 
 arch/riscv/boot/dts/microchip/microchip-mpfs.dtsi           |    4 
 arch/riscv/kvm/vcpu.c                                       |    2 
 arch/s390/Makefile                                          |    8 
 arch/s390/lib/Makefile                                      |    3 
 arch/s390/lib/expoline.S                                    |   12 
 arch/s390/lib/expoline/Makefile                             |    3 
 arch/s390/lib/expoline/expoline.S                           |   12 
 arch/sh/include/asm/io.h                                    |    8 
 arch/x86/include/asm/setup.h                                |    3 
 arch/x86/kernel/acpi/cppc.c                                 |    6 
 arch/x86/kernel/head64.c                                    |    4 
 arch/x86/kvm/x86.c                                          |   18 
 arch/x86/mm/init.c                                          |   14 
 arch/x86/xen/enlighten_pv.c                                 |    8 
 arch/x86/xen/xen-head.S                                     |   10 
 drivers/acpi/acpi_video.c                                   |   11 
 drivers/cpufreq/pmac32-cpufreq.c                            |    4 
 drivers/firmware/sysfb.c                                    |   58 ++
 drivers/firmware/sysfb_simplefb.c                           |   16 
 drivers/gpio/gpio-sim.c                                     |   16 
 drivers/gpu/drm/amd/amdgpu/amdgpu_display.c                 |   25 +
 drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c                    |    3 
 drivers/gpu/drm/amd/amdgpu/dce_v10_0.c                      |    3 
 drivers/gpu/drm/amd/amdgpu/dce_v11_0.c                      |    3 
 drivers/gpu/drm/amd/amdgpu/dce_v6_0.c                       |    3 
 drivers/gpu/drm/amd/amdgpu/dce_v8_0.c                       |    3 
 drivers/gpu/drm/amd/amdkfd/kfd_device.c                     |    2 
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c           |   85 +++-
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h           |    8 
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c |   17 
 drivers/gpu/drm/amd/display/dc/core/dc_resource.c           |   11 
 drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c              |    2 
 drivers/gpu/drm/drm_aperture.c                              |   26 -
 drivers/gpu/drm/i915/display/intel_dp_mst.c                 |    1 
 drivers/gpu/drm/i915/gem/i915_gem_region.c                  |    2 
 drivers/gpu/drm/i915/gem/i915_gem_ttm.c                     |   11 
 drivers/gpu/drm/i915/gt/intel_gt.c                          |   15 
 drivers/gpu/drm/i915/gt/intel_reset.c                       |   37 +
 drivers/gpu/drm/i915/gt/selftest_lrc.c                      |    8 
 drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c                    |    9 
 drivers/gpu/drm/i915/gvt/cmd_parser.c                       |    6 
 drivers/gpu/drm/i915/i915_scatterlist.c                     |   27 -
 drivers/gpu/drm/i915/i915_scatterlist.h                     |    6 
 drivers/gpu/drm/i915/intel_region_ttm.c                     |   10 
 drivers/gpu/drm/i915/intel_region_ttm.h                     |    3 
 drivers/gpu/drm/i915/selftests/i915_gem_gtt.c               |    2 
 drivers/gpu/drm/i915/selftests/intel_memory_region.c        |   21 -
 drivers/gpu/drm/i915/selftests/mock_region.c                |    3 
 drivers/gpu/drm/panfrost/panfrost_drv.c                     |    4 
 drivers/gpu/drm/panfrost/panfrost_mmu.c                     |    2 
 drivers/irqchip/irq-or1k-pic.c                              |    1 
 drivers/net/can/xilinx_can.c                                |    4 
 drivers/net/ethernet/aquantia/atlantic/aq_pci_func.c        |   23 -
 drivers/net/ethernet/broadcom/bnxt/bnxt.c                   |    5 
 drivers/net/ethernet/broadcom/bnxt/bnxt.h                   |    1 
 drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c           |    8 
 drivers/net/ethernet/broadcom/bnxt/bnxt_ptp.c               |   13 
 drivers/net/ethernet/broadcom/bnxt/bnxt_sriov.c             |    7 
 drivers/net/ethernet/chelsio/inline_crypto/chtls/chtls_cm.c |    2 
 drivers/net/ethernet/faraday/ftgmac100.c                    |   15 
 drivers/net/ethernet/intel/ice/ice_devids.h                 |    1 
 drivers/net/ethernet/intel/ice/ice_devlink.c                |   59 +-
 drivers/net/ethernet/intel/ice/ice_fw_update.c              |   96 ++++
 drivers/net/ethernet/intel/ice/ice_main.c                   |    1 
 drivers/net/ethernet/marvell/prestera/prestera_router.c     |    1 
 drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c          |   20 
 drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_rx.c  |    3 
 drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_tx.c  |    3 
 drivers/net/ethernet/mellanox/mlx5/core/en_stats.c          |    2 
 drivers/net/ethernet/mellanox/mlx5/core/en_tx.c             |   39 +
 drivers/net/ethernet/mellanox/mlx5/core/esw/legacy.c        |    5 
 drivers/net/ethernet/mscc/ocelot_fdma.c                     |   17 
 drivers/net/ethernet/netronome/nfp/nfdk/dp.c                |   33 +
 drivers/net/ethernet/sfc/ef10.c                             |    3 
 drivers/net/ethernet/sfc/ef10_sriov.c                       |   10 
 drivers/net/ethernet/stmicro/stmmac/dwmac-dwc-qos-eth.c     |    1 
 drivers/net/ethernet/stmicro/stmmac/dwmac-ingenic.c         |    6 
 drivers/net/ethernet/ti/am65-cpsw-nuss.c                    |   17 
 drivers/net/phy/sfp.c                                       |    2 
 drivers/net/xen-netback/rx.c                                |    1 
 drivers/nfc/nxp-nci/i2c.c                                   |    8 
 drivers/nvme/host/core.c                                    |    8 
 drivers/nvme/host/nvme.h                                    |    1 
 drivers/nvme/host/pci.c                                     |    3 
 drivers/nvme/host/rdma.c                                    |   12 
 drivers/nvme/host/tcp.c                                     |   13 
 drivers/nvme/host/trace.h                                   |    2 
 drivers/pinctrl/aspeed/pinctrl-aspeed.c                     |    4 
 drivers/pinctrl/freescale/pinctrl-imx93.c                   |    1 
 drivers/platform/x86/hp-wmi.c                               |    3 
 drivers/platform/x86/intel/pmc/core.c                       |    1 
 drivers/platform/x86/thinkpad_acpi.c                        |   50 +-
 drivers/power/supply/power_supply_core.c                    |   24 -
 drivers/s390/crypto/ap_bus.c                                |    2 
 drivers/scsi/hisi_sas/hisi_sas_v3_hw.c                      |    7 
 drivers/scsi/megaraid/megaraid_sas_base.c                   |    3 
 drivers/scsi/ufs/ufshcd.c                                   |    2 
 drivers/soc/ixp4xx/ixp4xx-npe.c                             |    2 
 drivers/spi/spi-amd.c                                       |    8 
 drivers/tee/tee_core.c                                      |    2 
 drivers/tty/pty.c                                           |   14 
 drivers/tty/serial/8250/8250_core.c                         |    4 
 drivers/tty/serial/8250/8250_port.c                         |    4 
 drivers/tty/serial/amba-pl011.c                             |   23 +
 drivers/tty/serial/mvebu-uart.c                             |   25 -
 drivers/tty/serial/samsung_tty.c                            |    5 
 drivers/tty/serial/serial_core.c                            |    5 
 drivers/tty/serial/stm32-usart.c                            |    2 
 drivers/tty/tty.h                                           |    3 
 drivers/tty/tty_buffer.c                                    |   46 +-
 drivers/tty/vt/vt.c                                         |    2 
 drivers/usb/dwc3/gadget.c                                   |    4 
 drivers/usb/serial/ftdi_sio.c                               |    3 
 drivers/usb/serial/ftdi_sio_ids.h                           |    6 
 drivers/usb/typec/class.c                                   |    1 
 drivers/vdpa/mlx5/net/mlx5_vnet.c                           |   31 -
 drivers/vdpa/vdpa_user/vduse_dev.c                          |   60 +-
 drivers/video/fbdev/core/fbmem.c                            |   12 
 drivers/virtio/virtio_mmio.c                                |   26 +
 drivers/xen/gntdev.c                                        |    6 
 fs/afs/file.c                                               |    2 
 fs/btrfs/inode.c                                            |   14 
 fs/btrfs/zoned.c                                            |   13 
 fs/ceph/addr.c                                              |   11 
 fs/cifs/smb2pdu.c                                           |   13 
 fs/exec.c                                                   |    2 
 fs/ksmbd/transport_tcp.c                                    |    2 
 fs/lockd/svcsubs.c                                          |   14 
 fs/netfs/buffered_read.c                                    |   17 
 fs/nfsd/nfs4xdr.c                                           |    9 
 fs/nfsd/nfsd.h                                              |    3 
 fs/nilfs2/nilfs.h                                           |    3 
 fs/remap_range.c                                            |    3 
 include/linux/cgroup-defs.h                                 |    3 
 include/linux/kexec.h                                       |    6 
 include/linux/netfs.h                                       |    2 
 include/linux/nvme.h                                        |    2 
 include/linux/reset.h                                       |    2 
 include/linux/sched/task.h                                  |    2 
 include/linux/serial_core.h                                 |    5 
 include/linux/sysfb.h                                       |   22 -
 include/net/netfilter/nf_conntrack.h                        |    9 
 include/net/netfilter/nf_conntrack_ecache.h                 |    4 
 include/net/netfilter/nf_tables.h                           |   30 -
 include/net/netns/conntrack.h                               |    1 
 include/net/raw.h                                           |    2 
 include/net/sock.h                                          |    2 
 include/net/tls.h                                           |    4 
 include/trace/events/sock.h                                 |    6 
 kernel/cgroup/cgroup.c                                      |   37 +
 kernel/exit.c                                               |    2 
 kernel/kexec_file.c                                         |   11 
 kernel/signal.c                                             |    8 
 kernel/sysctl.c                                             |   57 +-
 kernel/time/posix-timers.c                                  |   19 
 kernel/trace/trace.c                                        |   11 
 kernel/trace/trace_events_hist.c                            |    2 
 mm/damon/vaddr.c                                            |    3 
 mm/memory.c                                                 |   27 -
 mm/sparse-vmemmap.c                                         |    8 
 mm/userfaultfd.c                                            |    5 
 net/8021q/vlan_netlink.c                                    |   10 
 net/bridge/br_netfilter_hooks.c                             |   21 -
 net/core/filter.c                                           |    1 
 net/ipv4/af_inet.c                                          |    4 
 net/ipv4/cipso_ipv4.c                                       |   12 
 net/ipv4/fib_semantics.c                                    |    4 
 net/ipv4/fib_trie.c                                         |    2 
 net/ipv4/icmp.c                                             |   20 
 net/ipv4/inet_timewait_sock.c                               |    3 
 net/ipv4/inetpeer.c                                         |   12 
 net/ipv4/nexthop.c                                          |    5 
 net/ipv4/syncookies.c                                       |    2 
 net/ipv4/sysctl_net_ipv4.c                                  |   12 
 net/ipv4/tcp.c                                              |    3 
 net/ipv4/tcp_input.c                                        |    2 
 net/ipv4/tcp_output.c                                       |    4 
 net/ipv6/icmp.c                                             |    2 
 net/ipv6/route.c                                            |    2 
 net/ipv6/seg6_iptunnel.c                                    |    5 
 net/ipv6/seg6_local.c                                       |    2 
 net/mac80211/wme.c                                          |    4 
 net/mptcp/protocol.c                                        |    4 
 net/netfilter/nf_conntrack_core.c                           |   86 ++--
 net/netfilter/nf_conntrack_ecache.c                         |  139 +++---
 net/netfilter/nf_conntrack_netlink.c                        |  125 ++++--
 net/netfilter/nf_conntrack_standalone.c                     |    3 
 net/netfilter/nf_log_syslog.c                               |    8 
 net/netfilter/nf_tables_api.c                               |   72 ++-
 net/netfilter/nf_tables_core.c                              |   24 +
 net/netfilter/nf_tables_trace.c                             |   44 +-
 net/tipc/socket.c                                           |    1 
 net/tls/tls_device.c                                        |    4 
 net/tls/tls_main.c                                          |    7 
 security/integrity/evm/evm_crypto.c                         |    7 
 security/integrity/ima/ima_appraise.c                       |    3 
 security/integrity/ima/ima_crypto.c                         |    1 
 security/integrity/ima/ima_efi.c                            |    2 
 sound/pci/hda/patch_conexant.c                              |    1 
 sound/pci/hda/patch_realtek.c                               |   20 
 sound/soc/codecs/cs35l41-lib.c                              |   10 
 sound/soc/codecs/cs35l41.c                                  |   12 
 sound/soc/codecs/cs47l15.c                                  |    5 
 sound/soc/codecs/madera.c                                   |   14 
 sound/soc/codecs/max98373-sdw.c                             |   12 
 sound/soc/codecs/rt1308-sdw.c                               |   11 
 sound/soc/codecs/rt1316-sdw.c                               |   11 
 sound/soc/codecs/rt5682-sdw.c                               |    5 
 sound/soc/codecs/rt700-sdw.c                                |    6 
 sound/soc/codecs/rt700.c                                    |   14 
 sound/soc/codecs/rt711-sdca-sdw.c                           |    9 
 sound/soc/codecs/rt711-sdca.c                               |   18 
 sound/soc/codecs/rt711-sdw.c                                |    9 
 sound/soc/codecs/rt711.c                                    |   16 
 sound/soc/codecs/rt715-sdca-sdw.c                           |   12 
 sound/soc/codecs/rt715-sdw.c                                |   12 
 sound/soc/codecs/sgtl5000.c                                 |    9 
 sound/soc/codecs/sgtl5000.h                                 |    1 
 sound/soc/codecs/tas2764.c                                  |   46 +-
 sound/soc/codecs/tas2764.h                                  |    6 
 sound/soc/codecs/wcd9335.c                                  |    8 
 sound/soc/codecs/wcd938x.c                                  |   12 
 sound/soc/codecs/wm5110.c                                   |    8 
 sound/soc/codecs/wm_adsp.c                                  |    2 
 sound/soc/intel/boards/bytcr_wm5102.c                       |   13 
 sound/soc/intel/boards/sof_sdw.c                            |   51 +-
 sound/soc/intel/skylake/skl-nhlt.c                          |   40 +
 sound/soc/soc-dapm.c                                        |    5 
 sound/soc/soc-ops.c                                         |    4 
 sound/soc/sof/intel/hda-dsp.c                               |   10 
 sound/soc/sof/intel/hda-loader.c                            |   10 
 sound/soc/sof/intel/hda.h                                   |    1 
 sound/usb/quirks-table.h                                    |  248 ++++++++++++
 sound/usb/quirks.c                                          |    9 
 tools/testing/selftests/wireguard/qemu/Makefile             |    5 
 tools/testing/selftests/wireguard/qemu/arch/arm.config      |    1 
 tools/testing/selftests/wireguard/qemu/arch/armeb.config    |    1 
 tools/testing/selftests/wireguard/qemu/arch/i686.config     |    1 
 tools/testing/selftests/wireguard/qemu/arch/m68k.config     |    1 
 tools/testing/selftests/wireguard/qemu/arch/mips.config     |    1 
 tools/testing/selftests/wireguard/qemu/arch/mipsel.config   |    1 
 tools/testing/selftests/wireguard/qemu/arch/powerpc.config  |    1 
 tools/testing/selftests/wireguard/qemu/init.c               |   11 
 264 files changed, 2390 insertions(+), 943 deletions(-)

Alex Deucher (2):
drm/amdgpu: keep fbdev buffers pinned during suspend drm/amdgpu/display: disable prefer_shadow for generic fb helpers

Andrea Mayer (3):
seg6: fix skb checksum evaluation in SRH encapsulation/insertion
seg6: fix skb checksum in SRv6 End.B6 and End.B6.Encaps behaviors
seg6: bpf: fix skb checksum in bpf_push_seg6_encap()

Andrzej Hajda (1):
drm/i915/selftests: fix subtraction overflow bug

Anup Patel (1):
RISC-V: KVM: Fix SRCU deadlock caused by kvm_riscv_check_vcpu_requests()

Ard Biesheuvel (2):
ARM: 9214/1: alignment: advance IT state after emulating Thumb instruction
ARM: 9209/1: Spectre-BHB: avoid pr_info() every time a CPU comes out of idle

Axel Rasmussen (1):
mm: userfaultfd: fix UFFDIO_CONTINUE on fallocated shmem pages

Baolin Wang (1):
mm/damon: use set_huge_pte_at() to make huge pte old

Baowen Zheng (1):
nfp: fix issue of skb segments exceeds descriptor limitation

Bartosz Golaszewski (1):
gpio: sim: fix the chip_name configfs item

Bjorn Andersson (1):
scsi: ufs: core: Drop loglevel of WriteBoost message

Bryan O'Donoghue (1):
ASoC: dt-bindings: Fix description for msm8916

Chanho Park (1):
tty: serial: samsung_tty: set dma burst_size to 1

Charles Keepax (8):
ASoC: wm_adsp: Fix event for preloader
ASoC: wm5110: Fix DRE control
ASoC: cs35l41: Correct some control names
ASoC: dapm: Initialise kcontrol data for mux/demux controls
ASoC: cs35l41: Add ASP TX3/4 source to register patch
ASoC: cs47l15: Fix event generation for low power mux control
ASoC: madera: Fix event generation for OUT1 demux
ASoC: madera: Fix event generation for rate controls

Chia-Lin Kao (AceLan) (2):
net: atlantic: remove deep parameter on suspend/resume functions
net: atlantic: remove aq_nic_deinit() when resume

Chris Wilson (2):
drm/i915/gt: Serialize GRDOM access between multiple engine resets drm/i915/gt: Serialize TLB invalidates with GT resets

Christoph Hellwig (1):
btrfs: zoned: fix a leaked bioc in read_zone_info

Chuck Lever (1):
NFSD: Decode NFSv4 birth time attribute

Coiby Xu (1):
ima: force signature verification when CONFIG_KEXEC_SIG is configured

Conor Dooley (1):
riscv: dts: microchip: hook up the mpfs' l2cache

Cristian Ciocaltea (1):
spi: amd: Limit max transfer and message size

Dan Carpenter (3):
drm/i915/gvt: IS_ERR() vs NULL bug in intel_gvt_update_reg_whitelist() drm/i915/selftests: fix a couple IS_ERR() vs NULL tests
net: stmmac: fix leaks in probe

Daniele Ceraolo Spurio (1):
drm/i915/guc: ADL-N should use the same GuC FW as ADL-S

Dave Chinner (1):
fs/remap: constrain dedupe of EOF blocks

Demi Marie Obenour (1):
xen/gntdev: Ignore failure to unmap INVALID_GRANT_HANDLE

Dmitry Osipenko (3):
ARM: 9213/1: Print message about disabled Spectre workarounds only once drm/panfrost: Put mapping instead of shmem obj on panfrost_mmu_map_fault_addr() error drm/panfrost: Fix shrinker list corruption by madvise IOCTL

Dorian Rudolph (1):
power: supply: core: Fix boundary conditions in interpolation

Douglas Anderson (1):
tracing: Fix sleeping while atomic in kdb ftdump

Egor Vorontsov (2):
ALSA: usb-audio: Add quirk for Fiero SC-01
ALSA: usb-audio: Add quirk for Fiero SC-01 (fw v1.0.0)

Eli Cohen (1):
vdpa/mlx5: Initialize CVQ vringh only once

Eric Dumazet (1):
vlan: fix memory leak in vlan_newlink()

Fangzhi Zuo (1):
drm/amd/display: Ignore First MST Sideband Message Return Error

Felix Fietkau (1):
wifi: mac80211: fix queue selection for mesh/OCB interfaces

Filipe Manana (1):
btrfs: return -EAGAIN for NOWAIT dio reads/writes on compressed and inline extents

Florian Westphal (8):
netfilter: ecache: move to separate structure
netfilter: conntrack: split inner loop of list dumping to own function
netfilter: ecache: use dedicated list for event redelivery
netfilter: conntrack: include ecache dying list in dumps
netfilter: conntrack: remove the percpu dying list
netfilter: conntrack: fix crash due to confirmed bit load reordering
netfilter: nf_tables: avoid skb access on nf_stolen
netfilter: br_netfilter: do not skip all hooks with 0 priority

Francesco Dolcini (1):
ASoC: sgtl5000: Fix noise on shutdown/remove

Gabriel Fernandez (1):
ARM: dts: stm32: use the correct clock source for CEC on stm32mp151

Gal Pressman (1):
net/mlx5e: Fix capability check for updating vnic env counters

Gayatri Kammela (1):
platform/x86: intel/pmc: Add Alder Lake N support to PMC core driver

Geert Uytterhoeven (1):
sh: convert nommu io{re,un}map() to static inline functions

Gowans, James (1):
mm: split huge PUD on wp_huge_pud fallback

Greg Kroah-Hartman (1):

      Linux 5.18.13

Hangyu Hua (2):
drm/i915: fix a possible refcount leak in intel_dp_add_mst_connector()
net: tipc: fix possible refcount leak in tipc_sk_create()

Hans de Goede (2):
ASoC: Intel: bytcr_wm5102: Fix GPIO related probe-ordering problem
ACPI: video: Fix acpi_video_handles_brightness_key_presses()

Haowen Bai (1):
pinctrl: aspeed: Fix potential NULL dereference in aspeed_pinmux_set_mux()

Hector Martin (2):
ASoC: tas2764: Correct playback volume range
ASoC: tas2764: Fix amp gain register offset & default

Huaxin Lu (1):
ima: Fix a potential integer overflow in ima_appraise_measurement

Ilpo Järvinen (3):
serial: stm32: Clear prev values before setting RTS delays
serial: pl011: UPSTAT_AUTORTS requires .throttle/unthrottle
serial: 8250: Fix PM usage_count for console handover

Israel Rukshin (1):
nvme: fix block device naming collision

Jacky Bai (1):
pinctrl: imx: Add the zero base flag for imx93

Jason A. Donenfeld (2):
wireguard: selftests: set fake real time in init
wireguard: selftests: always call kernel makefile

Javier Martinez Canillas (3):
firmware: sysfb: Make sysfb_create_simplefb() return a pdev pointer
firmware: sysfb: Add sysfb_disable() helper function
fbdev: Disable sysfb device registration when removing conflicting FBs

Jeff Layton (2):
lockd: set fl_owner when unlocking files
lockd: fix nlm_close_files

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

Jianglei Nie (2):
ima: Fix potential memory leak in ima_init_crypto()
net: sfp: fix memory leak in sfp_probe()

Jiri Slaby (2):
tty: extract tty_flip_buffer_commit() from tty_flip_buffer_push()
tty: use new tty_insert_flip_string_and_push_buffer() in pty_write()

John Garry (1):
scsi: hisi_sas: Limit max hw sectors for v3 HW

John Veness (1):
ALSA: usb-audio: Add quirks for MacroSilicon MS2100/MS2106 devices

Jon Hunter (1):
net: stmmac: dwc-qos: Disable split header for Tegra194

Juergen Gross (4):
x86/xen: Use clear_bss() for Xen PV guests
xen/netback: avoid entering xenvif_rx_next_skb() with an empty rx queue
x86: Clear .brk area at early boot
x86/pat: Fix x86_has_pat_wp()

Kai-Heng Feng (1):
platform/x86: hp-wmi: Ignore Sanitization Mode event

Kashyap Desai (1):
bnxt_en: reclaim max resources if sriov enable fails

Keith Busch (2):
nvme-pci: phison e16 has bogus namespace ids
nvme: use struct group for generic command dwords

Kris Bahnsen (1):
ARM: dts: imx6qdl-ts7970: Fix ngpio typo and count

Kuniyuki Iwashima (27):
sysctl: Fix data races in proc_dointvec().
sysctl: Fix data races in proc_douintvec().
sysctl: Fix data races in proc_dointvec_minmax().
sysctl: Fix data races in proc_douintvec_minmax().
sysctl: Fix data races in proc_doulongvec_minmax().
sysctl: Fix data races in proc_dointvec_jiffies().
tcp: Fix a data-race around sysctl_tcp_max_orphans.
inetpeer: Fix data-races around sysctl.
net: Fix data-races around sysctl_mem.
cipso: Fix data-races around sysctl.
icmp: Fix data-races around sysctl.
ipv4: Fix a data-race around sysctl_fib_sync_mem.
sysctl: Fix data-races in proc_dou8vec_minmax().
sysctl: Fix data-races in proc_dointvec_ms_jiffies().
tcp: Fix a data-race around sysctl_max_tw_buckets.
icmp: Fix a data-race around sysctl_icmp_echo_ignore_all.
icmp: Fix data-races around sysctl_icmp_echo_enable_probe.
icmp: Fix a data-race around sysctl_icmp_echo_ignore_broadcasts.
icmp: Fix a data-race around sysctl_icmp_ignore_bogus_error_responses.
icmp: Fix a data-race around sysctl_icmp_errors_use_inbound_ifaddr.
icmp: Fix a data-race around sysctl_icmp_ratelimit.
icmp: Fix a data-race around sysctl_icmp_ratemask.
raw: Fix a data-race around sysctl_raw_l3mdev_accept.
tcp: Fix data-races around sysctl_tcp_ecn.
tcp: Fix a data-race around sysctl_tcp_ecn_fallback.
ipv4: Fix data-races around sysctl_ip_dynaddr.
nexthop: Fix data-races around nexthop_compat_mode.

Liang He (2):
net: ftgmac100: Hold reference returned by of_get_child_by_name()
cpufreq: pmac32-cpufreq: Fix refcount leak bug

Linus Torvalds (1):
signal handling: don't use BUG_ON() for debugging

Linus Walleij (3):
ARM: 9211/1: domain: drop modify_domain()
ARM: 9212/1: domain: Modify Kconfig help text
soc: ixp4xx/npe: Fix unused match warning

Linyu Yuan (1):
usb: typec: add missing uevent when partner support PD

Lucien Buchmann (1):
USB: serial: ftdi_sio: add Belimo device ids

Marc Kleine-Budde (1):
tee: tee_get_drvdata(): fix description of return value

Mario Kleiner (1):
drm/amd/display: Only use depth 36 bpp linebuffers on DCN display engines.

Mario Limonciello (1):
ACPI: CPPC: Fix enabling CPPC on AMD systems with shared memory

Mark Brown (3):
ASoC: ops: Fix off by one in range control validation
ASoC: wcd9335: Fix spurious event generation
ASoC: wcd938x: Fix event generation for some controls

Mark Pearson (2):
platform/x86: thinkpad-acpi: profile capabilities as integer platform/x86: thinkpad_acpi: do not use PSC mode on Intel platforms

Martin Povišer (2):
ASoC: tas2764: Add post reset delays
ASoC: tas2764: Fix and extend FSYNC polarity handling

Matthew Auld (2):
drm/i915/ttm: fix sg_table construction
drm/i915/ttm: fix 32b build

Maxim Mikityanskiy (1):
net/mlx5e: Ring the TX doorbell on DMA errors

Meng Tang (6):
ALSA: hda - Add fixup for Dell Latitidue E5430
ALSA: hda/conexant: Apply quirk for another HP ProDesk 600 G3 model
ALSA: hda/realtek: Fix headset mic for Acer SF313-51
ALSA: hda/realtek - Fix headset mic problem for a HP machine with alc671
ALSA: hda/realtek - Fix headset mic problem for a HP machine with alc221
ALSA: hda/realtek - Enable the headset-mic on a Xiaomi's laptop

Michael Chan (1):
bnxt_en: Fix bnxt_reinit_after_abort() code path

Michael Walle (1):
NFC: nxp-nci: don't print header length mismatch on i2c error

Michal Suchanek (1):
ARM: dts: sunxi: Fix SPI NOR campatible on Orange Pi Zero

Michel Dänzer (1):
drm/amd/display: Ensure valid event timestamp for cursor-only commits

Ming Lei (1):
scsi: megaraid: Clear READ queue map's nr_queues

Muchun Song (2):
mm: sparsemem: fix missing higher order allocation splitting
mm: sysctl: fix missing numa_stat when !CONFIG_HUGETLB_PAGE

Namjae Jeon (1):
ksmbd: use SOCK_NONBLOCK type for kernel_accept()

Nathan Lynch (1):
powerpc/xive/spapr: correct bitmap allocation size

Nicolas Dichtel (1):
ip: fix dflt addr selection for connected nexthop

Oleg Nesterov (1):
fix race between exit_itimers() and /proc/pid/timers

Pablo Neira Ayuso (2):
netfilter: nf_log: incorrect offset to network header
netfilter: nf_tables: replace BUG_ON by element length check

Pali Rohár (1):
serial: mvebu-uart: correctly report configured baudrate value

Paolo Abeni (1):
mptcp: fix subflow traversal at disconnect time

Parav Pandit (1):
vduse: Tie vduse mgmtdev and its device

Paul Blakey (1):
net/mlx5e: Fix enabling sriov while tc nic rules are offloaded

Paul M Stillwell Jr (2):
ice: handle E822 generic device ID in PLDM header
ice: change devlink code to read NVM in blocks

Pavan Chebbi (1):
bnxt_en: Fix bnxt_refclk_read()

Pavel Skripkin (1):
net: ocelot: fix wrong time_after usage

Peter Ujfalusi (5):
ASoC: Intel: Skylake: Correct the ssp rate discovery in skl_get_ssp_clks()
ASoC: Intel: Skylake: Correct the handling of fmt_config flexible array
ASoC: SOF: Intel: hda-dsp: Expose hda_dsp_core_power_up()
ASoC: SOF: Intel: hda-loader: Make sure that the fw load sequence is followed
ASoC: SOF: Intel: hda-loader: Clarify the cl_dsp_init() flow

Pierre-Louis Bossart (6):
ASoC: Realtek/Maxim SoundWire codecs: disable pm_runtime on remove
ASoC: rt711-sdca-sdw: fix calibrate mutex initialization
ASoC: Intel: sof_sdw: handle errors on card registration
ASoC: rt711: fix calibrate mutex initialization
ASoC: rt7*-sdw: harden jack_detect_handler
ASoC: codecs: rt700/rt711/rt711-sdca: initialize workqueues in probe

Prike Liang (1):
drm/amdkfd: correct the MEC atomic support firmware checking for GC 10.3.7

Roi Dayan (1):
net/mlx5e: CT: Use own workqueue instead of mlx5e priv

Ruozhu Li (1):
nvme: fix regression when disconnect a recovering ctrl

Ryan Wanner (1):
ARM: dts: at91: sama5d2: Fix typo in i2s1 node

Ryusuke Konishi (1):
nilfs2: fix incorrect masking of permission flags for symlinks

Sagi Grimberg (1):
nvme-tcp: always fail a request when sending it failed

Sean Anderson (1):
arm64: dts: ls1028a: Update SFP node to include clock

Serge Semin (1):
reset: Fix devm bulk optional exclusive control getter

Shuming Fan (1):
ASoC: rt711-sdca: fix kernel NULL pointer dereference when IO error

Siddharth Vadapalli (1):
net: ethernet: ti: am65-cpsw: Fix devlink port register sequence

Srinivas Neeli (1):
Revert "can: xilinx_can: Limit CANFD brp to 2"

Stafford Horne (1):
irqchip: or1k-pic: Undefine mask_ack for level triggered hardware

Stephan Gerhold (2):
virtio_mmio: Add missing PM calls to freeze/restore
virtio_mmio: Restore guest page size on resume

Steve French (1):
smb3: workaround negprot bug in some Samba servers

Steven Rostedt (Google) (1):
net: sock: tracing: Fix sock_exceed_buf_limit not to dereference stale pointer

Tariq Toukan (3):
net/mlx5e: kTLS, Fix build time constant test in TX net/mlx5e: kTLS, Fix build time constant test in RX net/tls: Check for errors in tls_device_init

Tejun Heo (1):
cgroup: Use separate src/dst nodes when preloading css_sets for migration

Thinh Nguyen (1):
usb: dwc3: gadget: Fix event pending check

Thomas Zimmermann (1):
drm/aperture: Run fbdev removal before internal helpers

Tony Krowiak (1):
s390/ap: fix error handling in __verify_queue_reservations()

Vasily Gorbik (1):
s390/nospec: build expoline.o for modules_prepare target

Vikas Gupta (1):
bnxt_en: fix livepatch query

Vitaly Kuznetsov (1):
KVM: x86: Fully initialize 'struct kvm_lapic_irq' in kvm_pv_kick_cpu_op()

William Zhang (2):
arm64: dts: broadcom: bcm4908: Fix timer node for BCM4906 SoC
arm64: dts: broadcom: bcm4908: Fix cpu node for smp boot

Xiu Jianfeng (1):
Revert "evm: Fix memleak in init_desc"

Xiubo Li (1):
netfs: do not unlock and put the folio twice

Yangxi Xiang (1):
vt: fix memory overlapping when deleting chars in the buffer

Yassine Oudjana (1):
ASoC: wcd9335: Remove RX channel from old list before adding it to a new one

Yefim Barashkin (1):
drm/amd/pm: Prevent divide by zero

Yevhen Orlov (1):
net: marvell: prestera: fix missed deinit sequence

Yi Yang (1):
serial: 8250: fix return error code in serial8250_request_std_resource()

Zhen Lei (1):
ARM: 9210/1: Mark the FDT_FIXED sections as shareable

Zheng Yejian (1):
tracing/histograms: Fix memory leak problem

Íñigo Huguet (2):
sfc: fix use after free when disabling sriov
sfc: fix kernel panic when creating VF

author maintainer
#1 lore raw
Documentation/devicetree/bindings/sound/qcom,lpass-cpu.yaml +4 -4
index 2c81efb5fa37..47bb67d43ac2 100644
@@ -25,12 +25,12 @@ properties:
       - qcom,sc7280-lpass-cpu
 
   reg:
-    minItems: 2
+    minItems: 1
     maxItems: 6
     description: LPAIF core registers
 
   reg-names:
-    minItems: 2
+    minItems: 1
     maxItems: 6
 
   clocks:
@@ -42,12 +42,12 @@ properties:
     maxItems: 7
 
   interrupts:
-    minItems: 2
+    minItems: 1
     maxItems: 4
     description: LPAIF DMA buffer interrupt
 
   interrupt-names:
-    minItems: 2
+    minItems: 1
     maxItems: 4
 
   qcom,adsp:
Documentation/driver-api/firmware/other_interfaces.rst +6 -0
index b81794e0cfbb..06ac89adaafb 100644
@@ -13,6 +13,12 @@ EDD Interfaces
 .. kernel-doc:: drivers/firmware/edd.c
    :internal:
 
+Generic System Framebuffers Interface
+-------------------------------------
+
+.. kernel-doc:: drivers/firmware/sysfb.c
+   :export:
+
 Intel Stratix10 SoC Service Layer
 ---------------------------------
 Some features of the Intel Stratix10 SoC require a level of privilege
Documentation/filesystems/netfs_library.rst +5 -3
index 0483abcafcb0..0542358724f1 100644
@@ -300,7 +300,7 @@ through which it can issue requests and negotiate::
 		void (*issue_read)(struct netfs_io_subrequest *subreq);
 		bool (*is_still_valid)(struct netfs_io_request *rreq);
 		int (*check_write_begin)(struct file *file, loff_t pos, unsigned len,
-					 struct folio *folio, void **_fsdata);
+					 struct folio **foliop, void **_fsdata);
 		void (*done)(struct netfs_io_request *rreq);
 		void (*cleanup)(struct address_space *mapping, void *netfs_priv);
 	};
@@ -376,8 +376,10 @@ The operations are as follows:
    allocated/grabbed the folio to be modified to allow the filesystem to flush
    conflicting state before allowing it to be modified.
 
-   It should return 0 if everything is now fine, -EAGAIN if the folio should be
-   regrabbed and any other error code to abort the operation.
+   It may unlock and discard the folio it was given and set the caller's folio
+   pointer to NULL.  It should return 0 if everything is now fine (``*foliop``
+   left set) or the op should be retried (``*foliop`` cleared) and any other
+   error code to abort the operation.
 
  * ``done``
 
Documentation/networking/ip-sysctl.rst +2 -2
index 66828293d9cb..8899b474edbf 100644
@@ -1085,7 +1085,7 @@ cipso_cache_enable - BOOLEAN
 cipso_cache_bucket_size - INTEGER
 	The CIPSO label cache consists of a fixed size hash table with each
 	hash bucket containing a number of cache entries.  This variable limits
-	the number of entries in each hash bucket; the larger the value the
+	the number of entries in each hash bucket; the larger the value is, the
 	more CIPSO label mappings that can be cached.  When the number of
 	entries in a given hash bucket reaches this limit adding new entries
 	causes the oldest entry in the bucket to be removed to make room.
@@ -1179,7 +1179,7 @@ ip_autobind_reuse - BOOLEAN
 	option should only be set by experts.
 	Default: 0
 
-ip_dynaddr - BOOLEAN
+ip_dynaddr - INTEGER
 	If set non-zero, enables support for dynamic addresses.
 	If set to a non-zero value larger than 1, a kernel log
 	message will be printed when dynamic address rewriting
Makefile +1 -1
index f8e2445b6044..1f3c753cb28d 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 5
 PATCHLEVEL = 18
-SUBLEVEL = 12
+SUBLEVEL = 13
 EXTRAVERSION =
 NAME = Superb Owl
 
arch/arm/boot/dts/imx6qdl-ts7970.dtsi +1 -1
index fded07f370b3..d6ba4b2a60f6 100644
@@ -226,7 +226,7 @@ gpio8: gpio@28 {
 		reg = <0x28>;
 		#gpio-cells = <2>;
 		gpio-controller;
-		ngpio = <32>;
+		ngpios = <62>;
 	};
 
 	sgtl5000: codec@a {
arch/arm/boot/dts/sama5d2.dtsi +1 -1
index 89c71d419f82..659a17fc755c 100644
@@ -1124,7 +1124,7 @@ AT91_XDMAC_DT_PERID(33))>,
 				clocks = <&pmc PMC_TYPE_PERIPHERAL 55>, <&pmc PMC_TYPE_GCK 55>;
 				clock-names = "pclk", "gclk";
 				assigned-clocks = <&pmc PMC_TYPE_CORE PMC_I2S1_MUX>;
-				assigned-parrents = <&pmc PMC_TYPE_GCK 55>;
+				assigned-clock-parents = <&pmc PMC_TYPE_GCK 55>;
 				status = "disabled";
 			};
 
arch/arm/boot/dts/stm32mp151.dtsi +1 -1
index 9c2bbf115f4c..de4d651f9575 100644
@@ -565,7 +565,7 @@ cec: cec@40016000 {
 			compatible = "st,stm32-cec";
 			reg = <0x40016000 0x400>;
 			interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&rcc CEC_K>, <&clk_lse>;
+			clocks = <&rcc CEC_K>, <&rcc CEC>;
 			clock-names = "cec", "hdmi-cec";
 			status = "disabled";
 		};
arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts +1 -1
index f19ed981da9d..3706216ffb40 100644
@@ -169,7 +169,7 @@ &spi0 {
 	flash@0 {
 		#address-cells = <1>;
 		#size-cells = <1>;
-		compatible = "mxicy,mx25l1606e", "winbond,w25q128";
+		compatible = "mxicy,mx25l1606e", "jedec,spi-nor";
 		reg = <0>;
 		spi-max-frequency = <40000000>;
 	};
arch/arm/include/asm/domain.h +0 -13
index f1d0a7807cd0..41536feb4392 100644
@@ -112,19 +112,6 @@ static __always_inline void set_domain(unsigned int val)
 }
 #endif
 
-#ifdef CONFIG_CPU_USE_DOMAINS
-#define modify_domain(dom,type)					\
-	do {							\
-		unsigned int domain = get_domain();		\
-		domain &= ~domain_mask(dom);			\
-		domain = domain | domain_val(dom, type);	\
-		set_domain(domain);				\
-	} while (0)
-
-#else
-static inline void modify_domain(unsigned dom, unsigned type)	{ }
-#endif
-
 /*
  * Generate the T (user) versions of the LDR/STR and related
  * instructions (inline assembly)
arch/arm/include/asm/mach/map.h +1 -0
index 92282558caf7..2b8970d8e5a2 100644
@@ -27,6 +27,7 @@ enum {
 	MT_HIGH_VECTORS,
 	MT_MEMORY_RWX,
 	MT_MEMORY_RW,
+	MT_MEMORY_RO,
 	MT_ROM,
 	MT_MEMORY_RWX_NONCACHED,
 	MT_MEMORY_RW_DTCM,
arch/arm/include/asm/ptrace.h +26 -0
index 93051e2f402c..1408a6a15d0e 100644
@@ -163,5 +163,31 @@ static inline unsigned long user_stack_pointer(struct pt_regs *regs)
 		((current_stack_pointer | (THREAD_SIZE - 1)) - 7) - 1;	\
 })
 
+
+/*
+ * Update ITSTATE after normal execution of an IT block instruction.
+ *
+ * The 8 IT state bits are split into two parts in CPSR:
+ *	ITSTATE<1:0> are in CPSR<26:25>
+ *	ITSTATE<7:2> are in CPSR<15:10>
+ */
+static inline unsigned long it_advance(unsigned long cpsr)
+{
+	if ((cpsr & 0x06000400) == 0) {
+		/* ITSTATE<2:0> == 0 means end of IT block, so clear IT state */
+		cpsr &= ~PSR_IT_MASK;
+	} else {
+		/* We need to shift left ITSTATE<4:0> */
+		const unsigned long mask = 0x06001c00;  /* Mask ITSTATE<4:0> */
+		unsigned long it = cpsr & mask;
+		it <<= 1;
+		it |= it >> (27 - 10);  /* Carry ITSTATE<2> to correct place */
+		it &= mask;
+		cpsr &= ~mask;
+		cpsr |= it;
+	}
+	return cpsr;
+}
+
 #endif /* __ASSEMBLY__ */
 #endif
arch/arm/mm/Kconfig +5 -1
index d30ee26ccc87..6284914f4361 100644
@@ -631,7 +631,11 @@ config CPU_USE_DOMAINS
 	bool
 	help
 	  This option enables or disables the use of domain switching
-	  via the set_fs() function.
+	  using the DACR (domain access control register) to protect memory
+	  domains from each other. In Linux we use three domains: kernel, user
+	  and IO. The domains are used to protect userspace from kernelspace
+	  and to handle IO-space as a special type of memory by assigning
+	  manager or client roles to running code (such as a process).
 
 config CPU_V7M_NUM_IRQ
 	int "Number of external interrupts connected to the NVIC"
arch/arm/mm/alignment.c +3 -0
index 6f499559d193..f8dd0b3cc8e0 100644
@@ -935,6 +935,9 @@ do_alignment(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
 	if (type == TYPE_LDST)
 		do_alignment_finish_ldst(addr, instr, regs, offset);
 
+	if (thumb_mode(regs))
+		regs->ARM_cpsr = it_advance(regs->ARM_cpsr);
+
 	return 0;
 
  bad_or_fault:
arch/arm/mm/mmu.c +14 -1
index 5e2be37a198e..cd17e324aa51 100644
@@ -296,6 +296,13 @@ static struct mem_type mem_types[] __ro_after_init = {
 		.prot_sect = PMD_TYPE_SECT | PMD_SECT_AP_WRITE,
 		.domain    = DOMAIN_KERNEL,
 	},
+	[MT_MEMORY_RO] = {
+		.prot_pte  = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY |
+			     L_PTE_XN | L_PTE_RDONLY,
+		.prot_l1   = PMD_TYPE_TABLE,
+		.prot_sect = PMD_TYPE_SECT,
+		.domain    = DOMAIN_KERNEL,
+	},
 	[MT_ROM] = {
 		.prot_sect = PMD_TYPE_SECT,
 		.domain    = DOMAIN_KERNEL,
@@ -489,6 +496,7 @@ static void __init build_mem_type_table(void)
 
 			/* Also setup NX memory mapping */
 			mem_types[MT_MEMORY_RW].prot_sect |= PMD_SECT_XN;
+			mem_types[MT_MEMORY_RO].prot_sect |= PMD_SECT_XN;
 		}
 		if (cpu_arch >= CPU_ARCH_ARMv7 && (cr & CR_TRE)) {
 			/*
@@ -568,6 +576,7 @@ static void __init build_mem_type_table(void)
 		mem_types[MT_ROM].prot_sect |= PMD_SECT_APX|PMD_SECT_AP_WRITE;
 		mem_types[MT_MINICLEAN].prot_sect |= PMD_SECT_APX|PMD_SECT_AP_WRITE;
 		mem_types[MT_CACHECLEAN].prot_sect |= PMD_SECT_APX|PMD_SECT_AP_WRITE;
+		mem_types[MT_MEMORY_RO].prot_sect |= PMD_SECT_APX|PMD_SECT_AP_WRITE;
 #endif
 
 		/*
@@ -587,6 +596,8 @@ static void __init build_mem_type_table(void)
 			mem_types[MT_MEMORY_RWX].prot_pte |= L_PTE_SHARED;
 			mem_types[MT_MEMORY_RW].prot_sect |= PMD_SECT_S;
 			mem_types[MT_MEMORY_RW].prot_pte |= L_PTE_SHARED;
+			mem_types[MT_MEMORY_RO].prot_sect |= PMD_SECT_S;
+			mem_types[MT_MEMORY_RO].prot_pte |= L_PTE_SHARED;
 			mem_types[MT_MEMORY_DMA_READY].prot_pte |= L_PTE_SHARED;
 			mem_types[MT_MEMORY_RWX_NONCACHED].prot_sect |= PMD_SECT_S;
 			mem_types[MT_MEMORY_RWX_NONCACHED].prot_pte |= L_PTE_SHARED;
@@ -647,6 +658,8 @@ static void __init build_mem_type_table(void)
 	mem_types[MT_MEMORY_RWX].prot_pte |= kern_pgprot;
 	mem_types[MT_MEMORY_RW].prot_sect |= ecc_mask | cp->pmd;
 	mem_types[MT_MEMORY_RW].prot_pte |= kern_pgprot;
+	mem_types[MT_MEMORY_RO].prot_sect |= ecc_mask | cp->pmd;
+	mem_types[MT_MEMORY_RO].prot_pte |= kern_pgprot;
 	mem_types[MT_MEMORY_DMA_READY].prot_pte |= kern_pgprot;
 	mem_types[MT_MEMORY_RWX_NONCACHED].prot_sect |= ecc_mask;
 	mem_types[MT_ROM].prot_sect |= cp->pmd;
@@ -1360,7 +1373,7 @@ static void __init devicemaps_init(const struct machine_desc *mdesc)
 		map.pfn = __phys_to_pfn(__atags_pointer & SECTION_MASK);
 		map.virtual = FDT_FIXED_BASE;
 		map.length = FDT_FIXED_SIZE;
-		map.type = MT_ROM;
+		map.type = MT_MEMORY_RO;
 		create_mapping(&map);
 	}
 
arch/arm/mm/proc-v7-bugs.c +4 -5
index fb9f3eb6bf48..8bc7a2d6d6c7 100644
@@ -108,8 +108,7 @@ static unsigned int spectre_v2_install_workaround(unsigned int method)
 #else
 static unsigned int spectre_v2_install_workaround(unsigned int method)
 {
-	pr_info("CPU%u: Spectre V2: workarounds disabled by configuration\n",
-		smp_processor_id());
+	pr_info_once("Spectre V2: workarounds disabled by configuration\n");
 
 	return SPECTRE_VULNERABLE;
 }
@@ -209,10 +208,10 @@ static int spectre_bhb_install_workaround(int method)
 			return SPECTRE_VULNERABLE;
 
 		spectre_bhb_method = method;
-	}
 
-	pr_info("CPU%u: Spectre BHB: using %s workaround\n",
-		smp_processor_id(), spectre_bhb_method_name(method));
+		pr_info("CPU%u: Spectre BHB: enabling %s workaround for all CPUs\n",
+			smp_processor_id(), spectre_bhb_method_name(method));
+	}
 
 	return SPECTRE_MITIGATED;
 }
arch/arm/probes/decode.h +1 -25
index 973173598992..facc889d05ee 100644
@@ -14,6 +14,7 @@
 #include <linux/types.h>
 #include <linux/stddef.h>
 #include <asm/probes.h>
+#include <asm/ptrace.h>
 #include <asm/kprobes.h>
 
 void __init arm_probes_decode_init(void);
@@ -35,31 +36,6 @@ void __init find_str_pc_offset(void);
 #endif
 
 
-/*
- * Update ITSTATE after normal execution of an IT block instruction.
- *
- * The 8 IT state bits are split into two parts in CPSR:
- *	ITSTATE<1:0> are in CPSR<26:25>
- *	ITSTATE<7:2> are in CPSR<15:10>
- */
-static inline unsigned long it_advance(unsigned long cpsr)
-	{
-	if ((cpsr & 0x06000400) == 0) {
-		/* ITSTATE<2:0> == 0 means end of IT block, so clear IT state */
-		cpsr &= ~PSR_IT_MASK;
-	} else {
-		/* We need to shift left ITSTATE<4:0> */
-		const unsigned long mask = 0x06001c00;  /* Mask ITSTATE<4:0> */
-		unsigned long it = cpsr & mask;
-		it <<= 1;
-		it |= it >> (27 - 10);  /* Carry ITSTATE<2> to correct place */
-		it &= mask;
-		cpsr &= ~mask;
-		cpsr |= it;
-	}
-	return cpsr;
-}
-
 static inline void __kprobes bx_write_pc(long pcv, struct pt_regs *regs)
 {
 	long cpsr = regs->ARM_cpsr;
arch/arm64/boot/dts/broadcom/bcm4908/bcm4906.dtsi +8 -0
index 66023d553524..d084c33d5ca8 100644
@@ -9,6 +9,14 @@ cpus {
 		/delete-node/ cpu@3;
 	};
 
+	timer {
+		compatible = "arm,armv8-timer";
+		interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
+			     <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
+			     <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
+			     <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>;
+	};
+
 	pmu {
 		compatible = "arm,cortex-a53-pmu";
 		interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi +2 -0
index a4be040a00c0..967d2cd3c3ce 100644
@@ -29,6 +29,8 @@ cpu0: cpu@0 {
 			device_type = "cpu";
 			compatible = "brcm,brahma-b53";
 			reg = <0x0>;
+			enable-method = "spin-table";
+			cpu-release-addr = <0x0 0xfff8>;
 			next-level-cache = <&l2>;
 		};
 
arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi +4 -1
index 088271d49139..59b289b52a28 100644
@@ -224,9 +224,12 @@ rst: syscon@1e60000 {
 			little-endian;
 		};
 
-		efuse@1e80000 {
+		sfp: efuse@1e80000 {
 			compatible = "fsl,ls1028a-sfp";
 			reg = <0x0 0x1e80000 0x0 0x10000>;
+			clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
+					    QORIQ_CLK_PLL_DIV(4)>;
+			clock-names = "sfp";
 			#address-cells = <1>;
 			#size-cells = <1>;
 
arch/powerpc/sysdev/xive/spapr.c +3 -2
index 503f544d28e2..b0d36e430dbc 100644
@@ -13,6 +13,7 @@
 #include <linux/of.h>
 #include <linux/slab.h>
 #include <linux/spinlock.h>
+#include <linux/bitmap.h>
 #include <linux/cpumask.h>
 #include <linux/mm.h>
 #include <linux/delay.h>
@@ -55,7 +56,7 @@ static int __init xive_irq_bitmap_add(int base, int count)
 	spin_lock_init(&xibm->lock);
 	xibm->base = base;
 	xibm->count = count;
-	xibm->bitmap = kzalloc(xibm->count, GFP_KERNEL);
+	xibm->bitmap = bitmap_zalloc(xibm->count, GFP_KERNEL);
 	if (!xibm->bitmap) {
 		kfree(xibm);
 		return -ENOMEM;
@@ -73,7 +74,7 @@ static void xive_irq_bitmap_remove_all(void)
 
 	list_for_each_entry_safe(xibm, tmp, &xive_irq_bitmaps, list) {
 		list_del(&xibm->list);
-		kfree(xibm->bitmap);
+		bitmap_free(xibm->bitmap);
 		kfree(xibm);
 	}
 }
arch/riscv/boot/dts/microchip/microchip-mpfs.dtsi +4 -0
index f44fce1fe080..2f75e39d2fdd 100644
@@ -51,6 +51,7 @@ cpu1: cpu@1 {
 			riscv,isa = "rv64imafdc";
 			clocks = <&clkcfg CLK_CPU>;
 			tlb-split;
+			next-level-cache = <&cctrllr>;
 			status = "okay";
 
 			cpu1_intc: interrupt-controller {
@@ -78,6 +79,7 @@ cpu2: cpu@2 {
 			riscv,isa = "rv64imafdc";
 			clocks = <&clkcfg CLK_CPU>;
 			tlb-split;
+			next-level-cache = <&cctrllr>;
 			status = "okay";
 
 			cpu2_intc: interrupt-controller {
@@ -105,6 +107,7 @@ cpu3: cpu@3 {
 			riscv,isa = "rv64imafdc";
 			clocks = <&clkcfg CLK_CPU>;
 			tlb-split;
+			next-level-cache = <&cctrllr>;
 			status = "okay";
 
 			cpu3_intc: interrupt-controller {
@@ -132,6 +135,7 @@ cpu4: cpu@4 {
 			riscv,isa = "rv64imafdc";
 			clocks = <&clkcfg CLK_CPU>;
 			tlb-split;
+			next-level-cache = <&cctrllr>;
 			status = "okay";
 			cpu4_intc: interrupt-controller {
 				#interrupt-cells = <1>;
arch/riscv/kvm/vcpu.c +2 -0
index 7461f964d20a..3894777bfa87 100644
@@ -673,9 +673,11 @@ static void kvm_riscv_check_vcpu_requests(struct kvm_vcpu *vcpu)
 
 	if (kvm_request_pending(vcpu)) {
 		if (kvm_check_request(KVM_REQ_SLEEP, vcpu)) {
+			kvm_vcpu_srcu_read_unlock(vcpu);
 			rcuwait_wait_event(wait,
 				(!vcpu->arch.power_off) && (!vcpu->arch.pause),
 				TASK_INTERRUPTIBLE);
+			kvm_vcpu_srcu_read_lock(vcpu);
 
 			if (vcpu->arch.power_off || vcpu->arch.pause) {
 				/*
arch/s390/Makefile +7 -1
index eba70d585cb2..5b7e761b2d50 100644
@@ -80,7 +80,7 @@ endif
 
 ifdef CONFIG_EXPOLINE
   ifdef CONFIG_EXPOLINE_EXTERN
-    KBUILD_LDFLAGS_MODULE += arch/s390/lib/expoline.o
+    KBUILD_LDFLAGS_MODULE += arch/s390/lib/expoline/expoline.o
     CC_FLAGS_EXPOLINE := -mindirect-branch=thunk-extern
     CC_FLAGS_EXPOLINE += -mfunction-return=thunk-extern
   else
@@ -162,6 +162,12 @@ vdso_prepare: prepare0
 	$(Q)$(MAKE) $(build)=arch/s390/kernel/vdso64 include/generated/vdso64-offsets.h
 	$(if $(CONFIG_COMPAT),$(Q)$(MAKE) \
 		$(build)=arch/s390/kernel/vdso32 include/generated/vdso32-offsets.h)
+
+ifdef CONFIG_EXPOLINE_EXTERN
+modules_prepare: expoline_prepare
+expoline_prepare: prepare0
+	$(Q)$(MAKE) $(build)=arch/s390/lib/expoline arch/s390/lib/expoline/expoline.o
+endif
 endif
 
 # Don't use tabs in echo arguments
arch/s390/lib/Makefile +2 -1
index 5d415b3db6d1..580d2e3265cb 100644
@@ -7,7 +7,6 @@ lib-y += delay.o string.o uaccess.o find.o spinlock.o
 obj-y += mem.o xor.o
 lib-$(CONFIG_KPROBES) += probes.o
 lib-$(CONFIG_UPROBES) += probes.o
-obj-$(CONFIG_EXPOLINE_EXTERN) += expoline.o
 obj-$(CONFIG_S390_KPROBES_SANITY_TEST) += test_kprobes_s390.o
 test_kprobes_s390-objs += test_kprobes_asm.o test_kprobes.o
 
@@ -22,3 +21,5 @@ obj-$(CONFIG_S390_MODULES_SANITY_TEST) += test_modules.o
 obj-$(CONFIG_S390_MODULES_SANITY_TEST_HELPERS) += test_modules_helpers.o
 
 lib-$(CONFIG_FUNCTION_ERROR_INJECTION) += error-inject.o
+
+obj-$(CONFIG_EXPOLINE_EXTERN) += expoline/
arch/s390/lib/expoline.S deleted +0 -12
deleted file mode 100644
index 92ed8409a7a4..000000000000
@@ -1,12 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-
-#include <asm/nospec-insn.h>
-#include <linux/linkage.h>
-
-.macro GEN_ALL_BR_THUNK_EXTERN
-	.irp r1,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
-	GEN_BR_THUNK_EXTERN %r\r1
-	.endr
-.endm
-
-GEN_ALL_BR_THUNK_EXTERN
arch/s390/lib/expoline/Makefile new file +3 -0
new file mode 100644
index 000000000000..854631d9cb03
@@ -0,0 +1,3 @@
+# SPDX-License-Identifier: GPL-2.0
+
+obj-y += expoline.o
arch/s390/lib/expoline/expoline.S new file +12 -0
new file mode 100644
index 000000000000..92ed8409a7a4
@@ -0,0 +1,12 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+
+#include <asm/nospec-insn.h>
+#include <linux/linkage.h>
+
+.macro GEN_ALL_BR_THUNK_EXTERN
+	.irp r1,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
+	GEN_BR_THUNK_EXTERN %r\r1
+	.endr
+.endm
+
+GEN_ALL_BR_THUNK_EXTERN
arch/sh/include/asm/io.h +6 -2
index cf9a3ec32406..fba90e670ed4 100644
@@ -271,8 +271,12 @@ static inline void __iomem *ioremap_prot(phys_addr_t offset, unsigned long size,
 #endif /* CONFIG_HAVE_IOREMAP_PROT */
 
 #else /* CONFIG_MMU */
-#define iounmap(addr)		do { } while (0)
-#define ioremap(offset, size)	((void __iomem *)(unsigned long)(offset))
+static inline void __iomem *ioremap(phys_addr_t offset, size_t size)
+{
+	return (void __iomem *)(unsigned long)offset;
+}
+
+static inline void iounmap(volatile void __iomem *addr) { }
 #endif /* CONFIG_MMU */
 
 #define ioremap_uc	ioremap
arch/x86/include/asm/setup.h +3 -0
index 896e48d45828..bccc84de7ff2 100644
@@ -132,6 +132,9 @@ void *extend_brk(size_t size, size_t align);
 	}
 
 extern void probe_roms(void);
+
+void clear_bss(void);
+
 #ifdef __i386__
 
 asmlinkage void __init i386_start_kernel(void);
arch/x86/kernel/acpi/cppc.c +6 -0
index 3677df836e91..0961bf38bdb0 100644
@@ -16,6 +16,12 @@ bool cpc_supported_by_cpu(void)
 	switch (boot_cpu_data.x86_vendor) {
 	case X86_VENDOR_AMD:
 	case X86_VENDOR_HYGON:
+		if (boot_cpu_data.x86 == 0x19 && ((boot_cpu_data.x86_model <= 0x0f) ||
+		    (boot_cpu_data.x86_model >= 0x20 && boot_cpu_data.x86_model <= 0x2f)))
+			return true;
+		else if (boot_cpu_data.x86 == 0x17 &&
+			 boot_cpu_data.x86_model >= 0x70 && boot_cpu_data.x86_model <= 0x7f)
+			return true;
 		return boot_cpu_has(X86_FEATURE_CPPC);
 	}
 	return false;
arch/x86/kernel/head64.c +3 -1
index 4f5ecbbaae77..92eae95f1a0b 100644
@@ -421,10 +421,12 @@ void __init do_early_exception(struct pt_regs *regs, int trapnr)
 
 /* Don't add a printk in there. printk relies on the PDA which is not initialized 
    yet. */
-static void __init clear_bss(void)
+void __init clear_bss(void)
 {
 	memset(__bss_start, 0,
 	       (unsigned long) __bss_stop - (unsigned long) __bss_start);
+	memset(__brk_base, 0,
+	       (unsigned long) __brk_limit - (unsigned long) __brk_base);
 }
 
 static unsigned long get_cmd_line_ptr(void)
arch/x86/kvm/x86.c +10 -8
index 558d1f2ab5b4..828f5cf1af45 100644
@@ -9074,15 +9074,17 @@ static int kvm_pv_clock_pairing(struct kvm_vcpu *vcpu, gpa_t paddr,
  */
 static void kvm_pv_kick_cpu_op(struct kvm *kvm, int apicid)
 {
-	struct kvm_lapic_irq lapic_irq;
-
-	lapic_irq.shorthand = APIC_DEST_NOSHORT;
-	lapic_irq.dest_mode = APIC_DEST_PHYSICAL;
-	lapic_irq.level = 0;
-	lapic_irq.dest_id = apicid;
-	lapic_irq.msi_redir_hint = false;
+	/*
+	 * All other fields are unused for APIC_DM_REMRD, but may be consumed by
+	 * common code, e.g. for tracing. Defer initialization to the compiler.
+	 */
+	struct kvm_lapic_irq lapic_irq = {
+		.delivery_mode = APIC_DM_REMRD,
+		.dest_mode = APIC_DEST_PHYSICAL,
+		.shorthand = APIC_DEST_NOSHORT,
+		.dest_id = apicid,
+	};
 
-	lapic_irq.delivery_mode = APIC_DM_REMRD;
 	kvm_irq_delivery_to_apic(kvm, NULL, &lapic_irq, NULL);
 }
 
arch/x86/mm/init.c +12 -2
index d8cfce221275..57ba5502aecf 100644
@@ -77,10 +77,20 @@ static uint8_t __pte2cachemode_tbl[8] = {
 	[__pte2cm_idx(_PAGE_PWT | _PAGE_PCD | _PAGE_PAT)] = _PAGE_CACHE_MODE_UC,
 };
 
-/* Check that the write-protect PAT entry is set for write-protect */
+/*
+ * Check that the write-protect PAT entry is set for write-protect.
+ * To do this without making assumptions how PAT has been set up (Xen has
+ * another layout than the kernel), translate the _PAGE_CACHE_MODE_WP cache
+ * mode via the __cachemode2pte_tbl[] into protection bits (those protection
+ * bits will select a cache mode of WP or better), and then translate the
+ * protection bits back into the cache mode using __pte2cm_idx() and the
+ * __pte2cachemode_tbl[] array. This will return the really used cache mode.
+ */
 bool x86_has_pat_wp(void)
 {
-	return __pte2cachemode_tbl[_PAGE_CACHE_MODE_WP] == _PAGE_CACHE_MODE_WP;
+	uint16_t prot = __cachemode2pte_tbl[_PAGE_CACHE_MODE_WP];
+
+	return __pte2cachemode_tbl[__pte2cm_idx(prot)] == _PAGE_CACHE_MODE_WP;
 }
 
 enum page_cache_mode pgprot2cachemode(pgprot_t pgprot)
arch/x86/xen/enlighten_pv.c +6 -2
index 5038edb79ad5..b55de4ad685c 100644
@@ -1183,15 +1183,19 @@ static void __init xen_domu_set_legacy_features(void)
 extern void early_xen_iret_patch(void);
 
 /* First C function to be called on Xen boot */
-asmlinkage __visible void __init xen_start_kernel(void)
+asmlinkage __visible void __init xen_start_kernel(struct start_info *si)
 {
 	struct physdev_set_iopl set_iopl;
 	unsigned long initrd_start = 0;
 	int rc;
 
-	if (!xen_start_info)
+	if (!si)
 		return;
 
+	clear_bss();
+
+	xen_start_info = si;
+
 	__text_gen_insn(&early_xen_iret_patch,
 			JMP32_INSN_OPCODE, &early_xen_iret_patch, &xen_iret,
 			JMP32_INSN_SIZE);
arch/x86/xen/xen-head.S +1 -9
index 3a2cd93bf059..13af6fe453e3 100644
@@ -48,15 +48,6 @@ SYM_CODE_START(startup_xen)
 	ANNOTATE_NOENDBR
 	cld
 
-	/* Clear .bss */
-	xor %eax,%eax
-	mov $__bss_start, %rdi
-	mov $__bss_stop, %rcx
-	sub %rdi, %rcx
-	shr $3, %rcx
-	rep stosq
-
-	mov %rsi, xen_start_info
 	mov initial_stack(%rip), %rsp
 
 	/* Set up %gs.
@@ -71,6 +62,7 @@ SYM_CODE_START(startup_xen)
 	cdq
 	wrmsr
 
+	mov	%rsi, %rdi
 	call xen_start_kernel
 SYM_CODE_END(startup_xen)
 	__FINIT
drivers/acpi/acpi_video.c +7 -4
index e4ea42b83b51..3bd0de69aa11 100644
@@ -73,7 +73,7 @@ module_param(device_id_scheme, bool, 0444);
 static int only_lcd = -1;
 module_param(only_lcd, int, 0444);
 
-static bool has_backlight;
+static bool may_report_brightness_keys;
 static int register_count;
 static DEFINE_MUTEX(register_count_mutex);
 static DEFINE_MUTEX(video_list_lock);
@@ -1224,7 +1224,7 @@ acpi_video_bus_get_one_device(struct acpi_device *device,
 	acpi_video_device_find_cap(data);
 
 	if (data->cap._BCM && data->cap._BCL)
-		has_backlight = true;
+		may_report_brightness_keys = true;
 
 	mutex_lock(&video->device_list_lock);
 	list_add_tail(&data->entry, &video->video_device_list);
@@ -1693,6 +1693,9 @@ static void acpi_video_device_notify(acpi_handle handle, u32 event, void *data)
 		break;
 	}
 
+	if (keycode)
+		may_report_brightness_keys = true;
+
 	acpi_notifier_call_chain(device, event, 0);
 
 	if (keycode && (report_key_events & REPORT_BRIGHTNESS_KEY_EVENTS)) {
@@ -2254,7 +2257,7 @@ void acpi_video_unregister(void)
 	if (register_count) {
 		acpi_bus_unregister_driver(&acpi_video_bus);
 		register_count = 0;
-		has_backlight = false;
+		may_report_brightness_keys = false;
 	}
 	mutex_unlock(&register_count_mutex);
 }
@@ -2276,7 +2279,7 @@ void acpi_video_unregister_backlight(void)
 
 bool acpi_video_handles_brightness_key_presses(void)
 {
-	return has_backlight &&
+	return may_report_brightness_keys &&
 	       (report_key_events & REPORT_BRIGHTNESS_KEY_EVENTS);
 }
 EXPORT_SYMBOL(acpi_video_handles_brightness_key_presses);
drivers/cpufreq/pmac32-cpufreq.c +4 -0
index 4f20c6a9108d..8e41fe9ee870 100644
@@ -470,6 +470,10 @@ static int pmac_cpufreq_init_MacRISC3(struct device_node *cpunode)
 	if (slew_done_gpio_np)
 		slew_done_gpio = read_gpio(slew_done_gpio_np);
 
+	of_node_put(volt_gpio_np);
+	of_node_put(freq_gpio_np);
+	of_node_put(slew_done_gpio_np);
+
 	/* If we use the frequency GPIOs, calculate the min/max speeds based
 	 * on the bus frequencies
 	 */
drivers/firmware/sysfb.c +50 -8

88 lines not on this page · raw message

drivers/firmware/sysfb_simplefb.c +8 -8
index bda8712bfd8c..a353e27f83f5 100644
@@ -57,8 +57,8 @@ __init bool sysfb_parse_mode(const struct screen_info *si,
 	return false;
 }
 
-__init int sysfb_create_simplefb(const struct screen_info *si,
-				 const struct simplefb_platform_data *mode)
+__init struct platform_device *sysfb_create_simplefb(const struct screen_info *si,
+						     const struct simplefb_platform_data *mode)
 {
 	struct platform_device *pd;
 	struct resource res;
@@ -76,7 +76,7 @@ __init int sysfb_create_simplefb(const struct screen_info *si,
 		base |= (u64)si->ext_lfb_base << 32;
 	if (!base || (u64)(resource_size_t)base != base) {
 		printk(KERN_DEBUG "sysfb: inaccessible VRAM base\n");
-		return -EINVAL;
+		return ERR_PTR(-EINVAL);
 	}
 
 	/*
@@ -93,7 +93,7 @@ __init int sysfb_create_simplefb(const struct screen_info *si,
 	length = mode->height * mode->stride;
 	if (length > size) {
 		printk(KERN_WARNING "sysfb: VRAM smaller than advertised\n");
-		return -EINVAL;
+		return ERR_PTR(-EINVAL);
 	}
 	length = PAGE_ALIGN(length);
 
@@ -104,11 +104,11 @@ __init int sysfb_create_simplefb(const struct screen_info *si,
 	res.start = base;
 	res.end = res.start + length - 1;
 	if (res.end <= res.start)
-		return -EINVAL;
+		return ERR_PTR(-EINVAL);
 
 	pd = platform_device_alloc("simple-framebuffer", 0);
 	if (!pd)
-		return -ENOMEM;
+		return ERR_PTR(-ENOMEM);
 
 	sysfb_apply_efi_quirks(pd);
 
@@ -124,10 +124,10 @@ __init int sysfb_create_simplefb(const struct screen_info *si,
 	if (ret)
 		goto err_put_device;
 
-	return 0;
+	return pd;
 
 err_put_device:
 	platform_device_put(pd);
 
-	return ret;
+	return ERR_PTR(ret);
 }
drivers/gpio/gpio-sim.c +5 -11
index 98109839102f..1020c2feb249 100644
@@ -991,28 +991,22 @@ static struct configfs_attribute *gpio_sim_device_config_attrs[] = {
 };
 
 struct gpio_sim_chip_name_ctx {
-	struct gpio_sim_device *dev;
+	struct fwnode_handle *swnode;
 	char *page;
 };
 
 static int gpio_sim_emit_chip_name(struct device *dev, void *data)
 {
 	struct gpio_sim_chip_name_ctx *ctx = data;
-	struct fwnode_handle *swnode;
-	struct gpio_sim_bank *bank;
 
 	/* This would be the sysfs device exported in /sys/class/gpio. */
 	if (dev->class)
 		return 0;
 
-	swnode = dev_fwnode(dev);
+	if (device_match_fwnode(dev, ctx->swnode))
+		return sprintf(ctx->page, "%s\n", dev_name(dev));
 
-	list_for_each_entry(bank, &ctx->dev->bank_list, siblings) {
-		if (bank->swnode == swnode)
-			return sprintf(ctx->page, "%s\n", dev_name(dev));
-	}
-
-	return -ENODATA;
+	return 0;
 }
 
 static ssize_t gpio_sim_bank_config_chip_name_show(struct config_item *item,
@@ -1020,7 +1014,7 @@ static ssize_t gpio_sim_bank_config_chip_name_show(struct config_item *item,
 {
 	struct gpio_sim_bank *bank = to_gpio_sim_bank(item);
 	struct gpio_sim_device *dev = gpio_sim_bank_get_device(bank);
-	struct gpio_sim_chip_name_ctx ctx = { dev, page };
+	struct gpio_sim_chip_name_ctx ctx = { bank->swnode, page };
 	int ret;
 
 	mutex_lock(&dev->lock);
drivers/gpu/drm/amd/amdgpu/amdgpu_display.c +21 -4
index fae5c1debfad..ffb3702745a5 100644
@@ -1547,6 +1547,21 @@ bool amdgpu_crtc_get_scanout_position(struct drm_crtc *crtc,
 						  stime, etime, mode);
 }
 
+static bool
+amdgpu_display_robj_is_fb(struct amdgpu_device *adev, struct amdgpu_bo *robj)
+{
+	struct drm_device *dev = adev_to_drm(adev);
+	struct drm_fb_helper *fb_helper = dev->fb_helper;
+
+	if (!fb_helper || !fb_helper->buffer)
+		return false;
+
+	if (gem_to_amdgpu_bo(fb_helper->buffer->gem) != robj)
+		return false;
+
+	return true;
+}
+
 int amdgpu_display_suspend_helper(struct amdgpu_device *adev)
 {
 	struct drm_device *dev = adev_to_drm(adev);
@@ -1582,10 +1597,12 @@ int amdgpu_display_suspend_helper(struct amdgpu_device *adev)
 			continue;
 		}
 		robj = gem_to_amdgpu_bo(fb->obj[0]);
-		r = amdgpu_bo_reserve(robj, true);
-		if (r == 0) {
-			amdgpu_bo_unpin(robj);
-			amdgpu_bo_unreserve(robj);
+		if (!amdgpu_display_robj_is_fb(adev, robj)) {
+			r = amdgpu_bo_reserve(robj, true);
+			if (r == 0) {
+				amdgpu_bo_unpin(robj);
+				amdgpu_bo_unreserve(robj);
+			}
 		}
 	}
 	return 0;
drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c +2 -1
index 5224d9a39737..842670d4a12e 100644
@@ -494,7 +494,8 @@ static int amdgpu_vkms_sw_init(void *handle)
 	adev_to_drm(adev)->mode_config.max_height = YRES_MAX;
 
 	adev_to_drm(adev)->mode_config.preferred_depth = 24;
-	adev_to_drm(adev)->mode_config.prefer_shadow = 1;
+	/* disable prefer shadow for now due to hibernation issues */
+	adev_to_drm(adev)->mode_config.prefer_shadow = 0;
 
 	adev_to_drm(adev)->mode_config.fb_base = adev->gmc.aper_base;
 
drivers/gpu/drm/amd/amdgpu/dce_v10_0.c +2 -1
index 288fce7dc0ed..9c964cd3b5d4 100644
@@ -2796,7 +2796,8 @@ static int dce_v10_0_sw_init(void *handle)
 	adev_to_drm(adev)->mode_config.max_height = 16384;
 
 	adev_to_drm(adev)->mode_config.preferred_depth = 24;
-	adev_to_drm(adev)->mode_config.prefer_shadow = 1;
+	/* disable prefer shadow for now due to hibernation issues */
+	adev_to_drm(adev)->mode_config.prefer_shadow = 0;
 
 	adev_to_drm(adev)->mode_config.fb_modifiers_not_supported = true;
 
drivers/gpu/drm/amd/amdgpu/dce_v11_0.c +2 -1
index cbe5250b31cb..e0ad9f27dc3f 100644
@@ -2914,7 +2914,8 @@ static int dce_v11_0_sw_init(void *handle)
 	adev_to_drm(adev)->mode_config.max_height = 16384;
 
 	adev_to_drm(adev)->mode_config.preferred_depth = 24;
-	adev_to_drm(adev)->mode_config.prefer_shadow = 1;
+	/* disable prefer shadow for now due to hibernation issues */
+	adev_to_drm(adev)->mode_config.prefer_shadow = 0;
 
 	adev_to_drm(adev)->mode_config.fb_modifiers_not_supported = true;
 
drivers/gpu/drm/amd/amdgpu/dce_v6_0.c +2 -1
index 982855e6cf52..3caf6f386042 100644
@@ -2673,7 +2673,8 @@ static int dce_v6_0_sw_init(void *handle)
 	adev_to_drm(adev)->mode_config.max_width = 16384;
 	adev_to_drm(adev)->mode_config.max_height = 16384;
 	adev_to_drm(adev)->mode_config.preferred_depth = 24;
-	adev_to_drm(adev)->mode_config.prefer_shadow = 1;
+	/* disable prefer shadow for now due to hibernation issues */
+	adev_to_drm(adev)->mode_config.prefer_shadow = 0;
 	adev_to_drm(adev)->mode_config.fb_modifiers_not_supported = true;
 	adev_to_drm(adev)->mode_config.fb_base = adev->gmc.aper_base;
 
drivers/gpu/drm/amd/amdgpu/dce_v8_0.c +2 -1
index 84440741c60b..7c75df5bffed 100644
@@ -2693,7 +2693,8 @@ static int dce_v8_0_sw_init(void *handle)
 	adev_to_drm(adev)->mode_config.max_height = 16384;
 
 	adev_to_drm(adev)->mode_config.preferred_depth = 24;
-	adev_to_drm(adev)->mode_config.prefer_shadow = 1;
+	/* disable prefer shadow for now due to hibernation issues */
+	adev_to_drm(adev)->mode_config.prefer_shadow = 0;
 
 	adev_to_drm(adev)->mode_config.fb_modifiers_not_supported = true;
 
drivers/gpu/drm/amd/amdkfd/kfd_device.c +2 -0
index 651498bfecc8..2059c3138410 100644
@@ -158,6 +158,8 @@ static void kfd_device_info_init(struct kfd_dev *kfd,
 			/* Navi2x+, Navi1x+ */
 			if (gc_version == IP_VERSION(10, 3, 6))
 				kfd->device_info.no_atomic_fw_version = 14;
+			else if (gc_version == IP_VERSION(10, 3, 7))
+				kfd->device_info.no_atomic_fw_version = 3;
 			else if (gc_version >= IP_VERSION(10, 3, 0))
 				kfd->device_info.no_atomic_fw_version = 92;
 			else if (gc_version >= IP_VERSION(10, 1, 1))
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +81 -4

146 lines not on this page · raw message

drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h +8 -0
index 7e44b0429448..4844601a5f47 100644
@@ -546,6 +546,14 @@ struct amdgpu_display_manager {
 	 * last successfully applied backlight values.
 	 */
 	u32 actual_brightness[AMDGPU_DM_MAX_NUM_EDP];
+
+	/**
+	 * @aux_hpd_discon_quirk:
+	 *
+	 * quirk for hpd discon while aux is on-going.
+	 * occurred on certain intel platform
+	 */
+	bool aux_hpd_discon_quirk;
 };
 
 enum dsc_clock_force_state {
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c +17 -0
index 31ac1fce36f8..d864cae1af67 100644
@@ -58,6 +58,8 @@ static ssize_t dm_dp_aux_transfer(struct drm_dp_aux *aux,
 	ssize_t result = 0;
 	struct aux_payload payload;
 	enum aux_return_code_type operation_result;
+	struct amdgpu_device *adev;
+	struct ddc_service *ddc;
 
 	if (WARN_ON(msg->size > 16))
 		return -E2BIG;
@@ -76,6 +78,21 @@ static ssize_t dm_dp_aux_transfer(struct drm_dp_aux *aux,
 	result = dc_link_aux_transfer_raw(TO_DM_AUX(aux)->ddc_service, &payload,
 				      &operation_result);
 
+	/*
+	 * w/a on certain intel platform where hpd is unexpected to pull low during
+	 * 1st sideband message transaction by return AUX_RET_ERROR_HPD_DISCON
+	 * aux transaction is succuess in such case, therefore bypass the error
+	 */
+	ddc = TO_DM_AUX(aux)->ddc_service;
+	adev = ddc->ctx->driver_context;
+	if (adev->dm.aux_hpd_discon_quirk) {
+		if (msg->address == DP_SIDEBAND_MSG_DOWN_REQ_BASE &&
+			operation_result == AUX_RET_ERROR_HPD_DISCON) {
+			result = 0;
+			operation_result = AUX_RET_SUCCESS;
+		}
+	}
+
 	if (payload.write && result >= 0)
 		result = msg->size;
 
drivers/gpu/drm/amd/display/dc/core/dc_resource.c +6 -5
index d251c3f3a714..5cdbd2b8aa4d 100644
@@ -1113,12 +1113,13 @@ bool resource_build_scaling_params(struct pipe_ctx *pipe_ctx)
 	 * on certain displays, such as the Sharp 4k. 36bpp is needed
 	 * to support SURFACE_PIXEL_FORMAT_GRPH_ARGB16161616 and
 	 * SURFACE_PIXEL_FORMAT_GRPH_ABGR16161616 with actual > 10 bpc
-	 * precision on at least DCN display engines. However, at least
-	 * Carrizo with DCE_VERSION_11_0 does not like 36 bpp lb depth,
-	 * so use only 30 bpp on DCE_VERSION_11_0. Testing with DCE 11.2 and 8.3
-	 * did not show such problems, so this seems to be the exception.
+	 * precision on DCN display engines, but apparently not for DCE, as
+	 * far as testing on DCE-11.2 and DCE-8 showed. Various DCE parts have
+	 * problems: Carrizo with DCE_VERSION_11_0 does not like 36 bpp lb depth,
+	 * neither do DCE-8 at 4k resolution, or DCE-11.2 (broken identify pixel
+	 * passthrough). Therefore only use 36 bpp on DCN where it is actually needed.
 	 */
-	if (plane_state->ctx->dce_version > DCE_VERSION_11_0)
+	if (plane_state->ctx->dce_version > DCE_VERSION_MAX)
 		pipe_ctx->plane_res.scl_data.lb_params.depth = LB_PIXEL_DEPTH_36BPP;
 	else
 		pipe_ctx->plane_res.scl_data.lb_params.depth = LB_PIXEL_DEPTH_30BPP;
drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c +2 -0
index 5f8809f6990d..2fbd2926a531 100644
@@ -1228,6 +1228,8 @@ int smu_v11_0_set_fan_speed_rpm(struct smu_context *smu,
 	uint32_t crystal_clock_freq = 2500;
 	uint32_t tach_period;
 
+	if (speed == 0)
+		return -EINVAL;
 	/*
 	 * To prevent from possible overheat, some ASICs may have requirement
 	 * for minimum fan speed:
drivers/gpu/drm/drm_aperture.c +15 -11
index 74bd4a76b253..059fd71424f6 100644
@@ -329,7 +329,20 @@ int drm_aperture_remove_conflicting_pci_framebuffers(struct pci_dev *pdev,
 						     const struct drm_driver *req_driver)
 {
 	resource_size_t base, size;
-	int bar, ret = 0;
+	int bar, ret;
+
+	/*
+	 * WARNING: Apparently we must kick fbdev drivers before vgacon,
+	 * otherwise the vga fbdev driver falls over.
+	 */
+#if IS_REACHABLE(CONFIG_FB)
+	ret = remove_conflicting_pci_framebuffers(pdev, req_driver->name);
+	if (ret)
+		return ret;
+#endif
+	ret = vga_remove_vgacon(pdev);
+	if (ret)
+		return ret;
 
 	for (bar = 0; bar < PCI_STD_NUM_BARS; ++bar) {
 		if (!(pci_resource_flags(pdev, bar) & IORESOURCE_MEM))
@@ -339,15 +352,6 @@ int drm_aperture_remove_conflicting_pci_framebuffers(struct pci_dev *pdev,
 		drm_aperture_detach_drivers(base, size);
 	}
 
-	/*
-	 * WARNING: Apparently we must kick fbdev drivers before vgacon,
-	 * otherwise the vga fbdev driver falls over.
-	 */
-#if IS_REACHABLE(CONFIG_FB)
-	ret = remove_conflicting_pci_framebuffers(pdev, req_driver->name);
-#endif
-	if (ret == 0)
-		ret = vga_remove_vgacon(pdev);
-	return ret;
+	return 0;
 }
 EXPORT_SYMBOL(drm_aperture_remove_conflicting_pci_framebuffers);
drivers/gpu/drm/i915/display/intel_dp_mst.c +1 -0
index e30e698aa684..f7d46ea3afb9 100644
@@ -841,6 +841,7 @@ static struct drm_connector *intel_dp_add_mst_connector(struct drm_dp_mst_topolo
 	ret = drm_connector_init(dev, connector, &intel_dp_mst_connector_funcs,
 				 DRM_MODE_CONNECTOR_DisplayPort);
 	if (ret) {
+		drm_dp_mst_put_port_malloc(port);
 		intel_connector_free(intel_connector);
 		return NULL;
 	}
drivers/gpu/drm/i915/gem/i915_gem_region.c +2 -0
index 6cf94469d5a8..34cfa88ae0c0 100644
@@ -57,6 +57,8 @@ i915_gem_object_create_region(struct intel_memory_region *mem,
 	if (page_size)
 		default_page_size = page_size;
 
+	/* We should be able to fit a page within an sg entry */
+	GEM_BUG_ON(overflows_type(default_page_size, u32));
 	GEM_BUG_ON(!is_power_of_2_u64(default_page_size));
 	GEM_BUG_ON(default_page_size < PAGE_SIZE);
 
drivers/gpu/drm/i915/gem/i915_gem_ttm.c +9 -2
index 45cc5837ce00..6f393f32ac36 100644
@@ -583,10 +583,15 @@ i915_ttm_resource_get_st(struct drm_i915_gem_object *obj,
 			 struct ttm_resource *res)
 {
 	struct ttm_buffer_object *bo = i915_gem_to_ttm(obj);
+	u32 page_alignment;
 
 	if (!i915_ttm_gtt_binds_lmem(res))
 		return i915_ttm_tt_get_st(bo->ttm);
 
+	page_alignment = bo->page_alignment << PAGE_SHIFT;
+	if (!page_alignment)
+		page_alignment = obj->mm.region->min_page_size;
+
 	/*
 	 * If CPU mapping differs, we need to add the ttm_tt pages to
 	 * the resulting st. Might make sense for GGTT.
@@ -597,7 +602,8 @@ i915_ttm_resource_get_st(struct drm_i915_gem_object *obj,
 			struct i915_refct_sgt *rsgt;
 
 			rsgt = intel_region_ttm_resource_to_rsgt(obj->mm.region,
-								 res);
+								 res,
+								 page_alignment);
 			if (IS_ERR(rsgt))
 				return rsgt;
 
@@ -606,7 +612,8 @@ i915_ttm_resource_get_st(struct drm_i915_gem_object *obj,
 		return i915_refct_sgt_get(obj->ttm.cached_io_rsgt);
 	}
 
-	return intel_region_ttm_resource_to_rsgt(obj->mm.region, res);
+	return intel_region_ttm_resource_to_rsgt(obj->mm.region, res,
+						 page_alignment);
 }
 
 static int i915_ttm_truncate(struct drm_i915_gem_object *obj)
drivers/gpu/drm/i915/gt/intel_gt.c +14 -1
index 8a2483ccbfb9..f4375479e6f0 100644
@@ -1012,6 +1012,20 @@ void intel_gt_invalidate_tlbs(struct intel_gt *gt)
 	mutex_lock(&gt->tlb_invalidate_lock);
 	intel_uncore_forcewake_get(uncore, FORCEWAKE_ALL);
 
+	spin_lock_irq(&uncore->lock); /* serialise invalidate with GT reset */
+
+	for_each_engine(engine, gt, id) {
+		struct reg_and_bit rb;
+
+		rb = get_reg_and_bit(engine, regs == gen8_regs, regs, num);
+		if (!i915_mmio_reg_offset(rb.reg))
+			continue;
+
+		intel_uncore_write_fw(uncore, rb.reg, rb.bit);
+	}
+
+	spin_unlock_irq(&uncore->lock);
+
 	for_each_engine(engine, gt, id) {
 		/*
 		 * HW architecture suggest typical invalidation time at 40us,
@@ -1026,7 +1040,6 @@ void intel_gt_invalidate_tlbs(struct intel_gt *gt)
 		if (!i915_mmio_reg_offset(rb.reg))
 			continue;
 
-		intel_uncore_write_fw(uncore, rb.reg, rb.bit);
 		if (__intel_wait_for_register_fw(uncore,
 						 rb.reg, rb.bit, 0,
 						 timeout_us, timeout_ms,
drivers/gpu/drm/i915/gt/intel_reset.c +28 -9
index b7c6d4462ec5..d57db66ac7ea 100644
@@ -299,9 +299,9 @@ static int gen6_hw_domain_reset(struct intel_gt *gt, u32 hw_domain_mask)
 	return err;
 }
 
-static int gen6_reset_engines(struct intel_gt *gt,
-			      intel_engine_mask_t engine_mask,
-			      unsigned int retry)
+static int __gen6_reset_engines(struct intel_gt *gt,
+				intel_engine_mask_t engine_mask,
+				unsigned int retry)
 {
 	struct intel_engine_cs *engine;
 	u32 hw_mask;
@@ -320,6 +320,20 @@ static int gen6_reset_engines(struct intel_gt *gt,
 	return gen6_hw_domain_reset(gt, hw_mask);
 }
 
+static int gen6_reset_engines(struct intel_gt *gt,
+			      intel_engine_mask_t engine_mask,
+			      unsigned int retry)
+{
+	unsigned long flags;
+	int ret;
+
+	spin_lock_irqsave(&gt->uncore->lock, flags);
+	ret = __gen6_reset_engines(gt, engine_mask, retry);
+	spin_unlock_irqrestore(&gt->uncore->lock, flags);
+
+	return ret;
+}
+
 static struct intel_engine_cs *find_sfc_paired_vecs_engine(struct intel_engine_cs *engine)
 {
 	int vecs_id;
@@ -486,9 +500,9 @@ static void gen11_unlock_sfc(struct intel_engine_cs *engine)
 	rmw_clear_fw(uncore, sfc_lock.lock_reg, sfc_lock.lock_bit);
 }
 
-static int gen11_reset_engines(struct intel_gt *gt,
-			       intel_engine_mask_t engine_mask,
-			       unsigned int retry)
+static int __gen11_reset_engines(struct intel_gt *gt,
+				 intel_engine_mask_t engine_mask,
+				 unsigned int retry)
 {
 	struct intel_engine_cs *engine;
 	intel_engine_mask_t tmp;
@@ -582,8 +596,11 @@ static int gen8_reset_engines(struct intel_gt *gt,
 	struct intel_engine_cs *engine;
 	const bool reset_non_ready = retry >= 1;
 	intel_engine_mask_t tmp;
+	unsigned long flags;
 	int ret;
 
+	spin_lock_irqsave(&gt->uncore->lock, flags);
+
 	for_each_engine_masked(engine, gt, engine_mask, tmp) {
 		ret = gen8_engine_reset_prepare(engine);
 		if (ret && !reset_non_ready)
@@ -611,17 +628,19 @@ static int gen8_reset_engines(struct intel_gt *gt,
 	 * This is best effort, so ignore any error from the initial reset.
 	 */
 	if (IS_DG2(gt->i915) && engine_mask == ALL_ENGINES)
-		gen11_reset_engines(gt, gt->info.engine_mask, 0);
+		__gen11_reset_engines(gt, gt->info.engine_mask, 0);
 
 	if (GRAPHICS_VER(gt->i915) >= 11)
-		ret = gen11_reset_engines(gt, engine_mask, retry);
+		ret = __gen11_reset_engines(gt, engine_mask, retry);
 	else
-		ret = gen6_reset_engines(gt, engine_mask, retry);
+		ret = __gen6_reset_engines(gt, engine_mask, retry);
 
 skip_reset:
 	for_each_engine_masked(engine, gt, engine_mask, tmp)
 		gen8_engine_reset_cancel(engine);
 
+	spin_unlock_irqrestore(&gt->uncore->lock, flags);
+
 	return ret;
 }
 
drivers/gpu/drm/i915/gt/selftest_lrc.c +4 -4
index 21c29d315cc0..9d42a7c67a8c 100644
@@ -155,8 +155,8 @@ static int live_lrc_layout(void *arg)
 			continue;
 
 		hw = shmem_pin_map(engine->default_state);
-		if (IS_ERR(hw)) {
-			err = PTR_ERR(hw);
+		if (!hw) {
+			err = -ENOMEM;
 			break;
 		}
 		hw += LRC_STATE_OFFSET / sizeof(*hw);
@@ -331,8 +331,8 @@ static int live_lrc_fixed(void *arg)
 			continue;
 
 		hw = shmem_pin_map(engine->default_state);
-		if (IS_ERR(hw)) {
-			err = PTR_ERR(hw);
+		if (!hw) {
+			err = -ENOMEM;
 			break;
 		}
 		hw += LRC_STATE_OFFSET / sizeof(*hw);
drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c +9 -0
index 9b6fbad47646..097b0c8b8531 100644
@@ -160,6 +160,15 @@ __uc_fw_auto_select(struct drm_i915_private *i915, struct intel_uc_fw *uc_fw)
 	u8 rev = INTEL_REVID(i915);
 	int i;
 
+	/*
+	 * The only difference between the ADL GuC FWs is the HWConfig support.
+	 * ADL-N does not support HWConfig, so we should use the same binary as
+	 * ADL-S, otherwise the GuC might attempt to fetch a config table that
+	 * does not exist.
+	 */
+	if (IS_ADLP_N(i915))
+		p = INTEL_ALDERLAKE_S;
+
 	GEM_BUG_ON(uc_fw->type >= ARRAY_SIZE(blobs_all));
 	fw_blobs = blobs_all[uc_fw->type].blobs;
 	fw_count = blobs_all[uc_fw->type].count;
drivers/gpu/drm/i915/gvt/cmd_parser.c +3 -3
index 2459213b6c87..f49c1e8b8df7 100644
@@ -3117,9 +3117,9 @@ void intel_gvt_update_reg_whitelist(struct intel_vgpu *vgpu)
 			continue;
 
 		vaddr = shmem_pin_map(engine->default_state);
-		if (IS_ERR(vaddr)) {
-			gvt_err("failed to map %s->default state, err:%zd\n",
-				engine->name, PTR_ERR(vaddr));
+		if (!vaddr) {
+			gvt_err("failed to map %s->default state\n",
+				engine->name);
 			return;
 		}
 
drivers/gpu/drm/i915/i915_scatterlist.c +19 -8
index 159571b9bd24..dcc081874ec8 100644
@@ -68,6 +68,7 @@ void i915_refct_sgt_init(struct i915_refct_sgt *rsgt, size_t size)
  * drm_mm_node
  * @node: The drm_mm_node.
  * @region_start: An offset to add to the dma addresses of the sg list.
+ * @page_alignment: Required page alignment for each sg entry. Power of two.
  *
  * Create a struct sg_table, initializing it from a struct drm_mm_node,
  * taking a maximum segment length into account, splitting into segments
@@ -77,22 +78,25 @@ void i915_refct_sgt_init(struct i915_refct_sgt *rsgt, size_t size)
  * error code cast to an error pointer on failure.
  */
 struct i915_refct_sgt *i915_rsgt_from_mm_node(const struct drm_mm_node *node,
-					      u64 region_start)
+					      u64 region_start,
+					      u32 page_alignment)
 {
-	const u64 max_segment = SZ_1G; /* Do we have a limit on this? */
-	u64 segment_pages = max_segment >> PAGE_SHIFT;
+	const u32 max_segment = round_down(UINT_MAX, page_alignment);
+	const u32 segment_pages = max_segment >> PAGE_SHIFT;
 	u64 block_size, offset, prev_end;
 	struct i915_refct_sgt *rsgt;
 	struct sg_table *st;
 	struct scatterlist *sg;
 
+	GEM_BUG_ON(!max_segment);
+
 	rsgt = kmalloc(sizeof(*rsgt), GFP_KERNEL);
 	if (!rsgt)
 		return ERR_PTR(-ENOMEM);
 
 	i915_refct_sgt_init(rsgt, node->size << PAGE_SHIFT);
 	st = &rsgt->table;
-	if (sg_alloc_table(st, DIV_ROUND_UP(node->size, segment_pages),
+	if (sg_alloc_table(st, DIV_ROUND_UP_ULL(node->size, segment_pages),
 			   GFP_KERNEL)) {
 		i915_refct_sgt_put(rsgt);
 		return ERR_PTR(-ENOMEM);
@@ -112,12 +116,14 @@ struct i915_refct_sgt *i915_rsgt_from_mm_node(const struct drm_mm_node *node,
 				sg = __sg_next(sg);
 
 			sg_dma_address(sg) = region_start + offset;
+			GEM_BUG_ON(!IS_ALIGNED(sg_dma_address(sg),
+					       page_alignment));
 			sg_dma_len(sg) = 0;
 			sg->length = 0;
 			st->nents++;
 		}
 
-		len = min(block_size, max_segment - sg->length);
+		len = min_t(u64, block_size, max_segment - sg->length);
 		sg->length += len;
 		sg_dma_len(sg) += len;
 
@@ -138,6 +144,7 @@ struct i915_refct_sgt *i915_rsgt_from_mm_node(const struct drm_mm_node *node,
  * i915_buddy_block list
  * @res: The struct i915_ttm_buddy_resource.
  * @region_start: An offset to add to the dma addresses of the sg list.
+ * @page_alignment: Required page alignment for each sg entry. Power of two.
  *
  * Create a struct sg_table, initializing it from struct i915_buddy_block list,
  * taking a maximum segment length into account, splitting into segments
@@ -147,11 +154,12 @@ struct i915_refct_sgt *i915_rsgt_from_mm_node(const struct drm_mm_node *node,
  * error code cast to an error pointer on failure.
  */
 struct i915_refct_sgt *i915_rsgt_from_buddy_resource(struct ttm_resource *res,
-						     u64 region_start)
+						     u64 region_start,
+						     u32 page_alignment)
 {
 	struct i915_ttm_buddy_resource *bman_res = to_ttm_buddy_resource(res);
 	const u64 size = res->num_pages << PAGE_SHIFT;
-	const u64 max_segment = rounddown(UINT_MAX, PAGE_SIZE);
+	const u32 max_segment = round_down(UINT_MAX, page_alignment);
 	struct drm_buddy *mm = bman_res->mm;
 	struct list_head *blocks = &bman_res->blocks;
 	struct drm_buddy_block *block;
@@ -161,6 +169,7 @@ struct i915_refct_sgt *i915_rsgt_from_buddy_resource(struct ttm_resource *res,
 	resource_size_t prev_end;
 
 	GEM_BUG_ON(list_empty(blocks));
+	GEM_BUG_ON(!max_segment);
 
 	rsgt = kmalloc(sizeof(*rsgt), GFP_KERNEL);
 	if (!rsgt)
@@ -191,12 +200,14 @@ struct i915_refct_sgt *i915_rsgt_from_buddy_resource(struct ttm_resource *res,
 					sg = __sg_next(sg);
 
 				sg_dma_address(sg) = region_start + offset;
+				GEM_BUG_ON(!IS_ALIGNED(sg_dma_address(sg),
+						       page_alignment));
 				sg_dma_len(sg) = 0;
 				sg->length = 0;
 				st->nents++;
 			}
 
-			len = min(block_size, max_segment - sg->length);
+			len = min_t(u64, block_size, max_segment - sg->length);
 			sg->length += len;
 			sg_dma_len(sg) += len;
 
drivers/gpu/drm/i915/i915_scatterlist.h +4 -2
index 12c6a1684081..9ddb3e743a3e 100644
@@ -213,9 +213,11 @@ static inline void __i915_refct_sgt_init(struct i915_refct_sgt *rsgt,
 void i915_refct_sgt_init(struct i915_refct_sgt *rsgt, size_t size);
 
 struct i915_refct_sgt *i915_rsgt_from_mm_node(const struct drm_mm_node *node,
-					      u64 region_start);
+					      u64 region_start,
+					      u32 page_alignment);
 
 struct i915_refct_sgt *i915_rsgt_from_buddy_resource(struct ttm_resource *res,
-						     u64 region_start);
+						     u64 region_start,
+						     u32 page_alignment);
 
 #endif
drivers/gpu/drm/i915/intel_region_ttm.c +7 -3
index 737ef3f4ab54..d6bc83adef00 100644
@@ -151,6 +151,7 @@ int intel_region_ttm_fini(struct intel_memory_region *mem)
  * Convert an opaque TTM resource manager resource to a refcounted sg_table.
  * @mem: The memory region.
  * @res: The resource manager resource obtained from the TTM resource manager.
+ * @page_alignment: Required page alignment for each sg entry. Power of two.
  *
  * The gem backends typically use sg-tables for operations on the underlying
  * io_memory. So provide a way for the backends to translate the
@@ -160,16 +161,19 @@ int intel_region_ttm_fini(struct intel_memory_region *mem)
  */
 struct i915_refct_sgt *
 intel_region_ttm_resource_to_rsgt(struct intel_memory_region *mem,
-				  struct ttm_resource *res)
+				  struct ttm_resource *res,
+				  u32 page_alignment)
 {
 	if (mem->is_range_manager) {
 		struct ttm_range_mgr_node *range_node =
 			to_ttm_range_mgr_node(res);
 
 		return i915_rsgt_from_mm_node(&range_node->mm_nodes[0],
-					      mem->region.start);
+					      mem->region.start,
+					      page_alignment);
 	} else {
-		return i915_rsgt_from_buddy_resource(res, mem->region.start);
+		return i915_rsgt_from_buddy_resource(res, mem->region.start,
+						     page_alignment);
 	}
 }
 
drivers/gpu/drm/i915/intel_region_ttm.h +2 -1
index fdee5e7bd46c..b44183a771af 100644
@@ -24,7 +24,8 @@ int intel_region_ttm_fini(struct intel_memory_region *mem);
 
 struct i915_refct_sgt *
 intel_region_ttm_resource_to_rsgt(struct intel_memory_region *mem,
-				  struct ttm_resource *res);
+				  struct ttm_resource *res,
+				  u32 page_alignment);
 
 void intel_region_ttm_resource_free(struct intel_memory_region *mem,
 				    struct ttm_resource *res);
drivers/gpu/drm/i915/selftests/i915_gem_gtt.c +1 -1
index ab751192eb3b..34d1ef015233 100644
@@ -742,7 +742,7 @@ static int pot_hole(struct i915_address_space *vm,
 		u64 addr;
 
 		for (addr = round_up(hole_start + min_alignment, step) - min_alignment;
-		     addr <= round_down(hole_end - (2 * min_alignment), step) - min_alignment;
+		     hole_end > addr && hole_end - addr >= 2 * min_alignment;
 		     addr += step) {
 			err = i915_vma_pin(vma, 0, 0, addr | flags);
 			if (err) {
drivers/gpu/drm/i915/selftests/intel_memory_region.c +19 -2
index ba32893e0873..0250a114fe0a 100644
@@ -451,7 +451,6 @@ static int igt_mock_splintered_region(void *arg)
 
 static int igt_mock_max_segment(void *arg)
 {
-	const unsigned int max_segment = rounddown(UINT_MAX, PAGE_SIZE);
 	struct intel_memory_region *mem = arg;
 	struct drm_i915_private *i915 = mem->i915;
 	struct i915_ttm_buddy_resource *res;
@@ -460,7 +459,10 @@ static int igt_mock_max_segment(void *arg)
 	struct drm_buddy *mm;
 	struct list_head *blocks;
 	struct scatterlist *sg;
+	I915_RND_STATE(prng);
 	LIST_HEAD(objects);
+	unsigned int max_segment;
+	unsigned int ps;
 	u64 size;
 	int err = 0;
 
@@ -472,7 +474,13 @@ static int igt_mock_max_segment(void *arg)
 	 */
 
 	size = SZ_8G;
-	mem = mock_region_create(i915, 0, size, PAGE_SIZE, 0, 0);
+	ps = PAGE_SIZE;
+	if (i915_prandom_u64_state(&prng) & 1)
+		ps = SZ_64K; /* For something like DG2 */
+
+	max_segment = round_down(UINT_MAX, ps);
+
+	mem = mock_region_create(i915, 0, size, ps, 0, 0);
 	if (IS_ERR(mem))
 		return PTR_ERR(mem);
 
@@ -498,12 +506,21 @@ static int igt_mock_max_segment(void *arg)
 	}
 
 	for (sg = obj->mm.pages->sgl; sg; sg = sg_next(sg)) {
+		dma_addr_t daddr = sg_dma_address(sg);
+
 		if (sg->length > max_segment) {
 			pr_err("%s: Created an oversized scatterlist entry, %u > %u\n",
 			       __func__, sg->length, max_segment);
 			err = -EINVAL;
 			goto out_close;
 		}
+
+		if (!IS_ALIGNED(daddr, ps)) {
+			pr_err("%s: Created an unaligned scatterlist entry, addr=%pa, ps=%u\n",
+			       __func__,  &daddr, ps);
+			err = -EINVAL;
+			goto out_close;
+		}
 	}
 
 out_close:
drivers/gpu/drm/i915/selftests/mock_region.c +2 -1
index f64325491f35..6f7c9820d3e9 100644
@@ -32,7 +32,8 @@ static int mock_region_get_pages(struct drm_i915_gem_object *obj)
 		return PTR_ERR(obj->mm.res);
 
 	obj->mm.rsgt = intel_region_ttm_resource_to_rsgt(obj->mm.region,
-							 obj->mm.res);
+							 obj->mm.res,
+							 obj->mm.region->min_page_size);
 	if (IS_ERR(obj->mm.rsgt)) {
 		err = PTR_ERR(obj->mm.rsgt);
 		goto err_free_resource;
drivers/gpu/drm/panfrost/panfrost_drv.c +2 -2
index 47780fe597f2..601e124842e1 100644
@@ -432,8 +432,8 @@ static int panfrost_ioctl_madvise(struct drm_device *dev, void *data,
 
 	if (args->retained) {
 		if (args->madv == PANFROST_MADV_DONTNEED)
-			list_add_tail(&bo->base.madv_list,
-				      &pfdev->shrinker_list);
+			list_move_tail(&bo->base.madv_list,
+				       &pfdev->shrinker_list);
 		else if (args->madv == PANFROST_MADV_WILLNEED)
 			list_del_init(&bo->base.madv_list);
 	}
drivers/gpu/drm/panfrost/panfrost_mmu.c +1 -1
index d3f82b26a631..b285a8001b1d 100644
@@ -518,7 +518,7 @@ static int panfrost_mmu_map_fault_addr(struct panfrost_device *pfdev, int as,
 err_pages:
 	drm_gem_shmem_put_pages(&bo->base);
 err_bo:
-	drm_gem_object_put(&bo->base.base);
+	panfrost_gem_mapping_put(bomapping);
 	return ret;
 }
 
drivers/irqchip/irq-or1k-pic.c +0 -1
index 49b47e787644..f289ccd95291 100644
@@ -66,7 +66,6 @@ static struct or1k_pic_dev or1k_pic_level = {
 		.name = "or1k-PIC-level",
 		.irq_unmask = or1k_pic_unmask,
 		.irq_mask = or1k_pic_mask,
-		.irq_mask_ack = or1k_pic_mask_ack,
 	},
 	.handle = handle_level_irq,
 	.flags = IRQ_LEVEL | IRQ_NOPROBE,
drivers/net/can/xilinx_can.c +2 -2
index 43f0c6a064ba..75b4db4d050b 100644
@@ -259,7 +259,7 @@ static const struct can_bittiming_const xcan_bittiming_const_canfd2 = {
 	.tseg2_min = 1,
 	.tseg2_max = 128,
 	.sjw_max = 128,
-	.brp_min = 2,
+	.brp_min = 1,
 	.brp_max = 256,
 	.brp_inc = 1,
 };
@@ -272,7 +272,7 @@ static const struct can_bittiming_const xcan_data_bittiming_const_canfd2 = {
 	.tseg2_min = 1,
 	.tseg2_max = 16,
 	.sjw_max = 16,
-	.brp_min = 2,
+	.brp_min = 1,
 	.brp_max = 256,
 	.brp_inc = 1,
 };
drivers/net/ethernet/aquantia/atlantic/aq_pci_func.c +8 -15
index 831833911a52..8647125d60ae 100644
@@ -379,7 +379,7 @@ static void aq_pci_shutdown(struct pci_dev *pdev)
 	}
 }
 
-static int aq_suspend_common(struct device *dev, bool deep)
+static int aq_suspend_common(struct device *dev)
 {
 	struct aq_nic_s *nic = pci_get_drvdata(to_pci_dev(dev));
 
@@ -392,17 +392,15 @@ static int aq_suspend_common(struct device *dev, bool deep)
 	if (netif_running(nic->ndev))
 		aq_nic_stop(nic);
 
-	if (deep) {
-		aq_nic_deinit(nic, !nic->aq_hw->aq_nic_cfg->wol);
-		aq_nic_set_power(nic);
-	}
+	aq_nic_deinit(nic, !nic->aq_hw->aq_nic_cfg->wol);
+	aq_nic_set_power(nic);
 
 	rtnl_unlock();
 
 	return 0;
 }
 
-static int atl_resume_common(struct device *dev, bool deep)
+static int atl_resume_common(struct device *dev)
 {
 	struct pci_dev *pdev = to_pci_dev(dev);
 	struct aq_nic_s *nic;
@@ -415,11 +413,6 @@ static int atl_resume_common(struct device *dev, bool deep)
 	pci_set_power_state(pdev, PCI_D0);
 	pci_restore_state(pdev);
 
-	if (deep) {
-		/* Reinitialize Nic/Vecs objects */
-		aq_nic_deinit(nic, !nic->aq_hw->aq_nic_cfg->wol);
-	}
-
 	if (netif_running(nic->ndev)) {
 		ret = aq_nic_init(nic);
 		if (ret)
@@ -444,22 +437,22 @@ static int atl_resume_common(struct device *dev, bool deep)
 
 static int aq_pm_freeze(struct device *dev)
 {
-	return aq_suspend_common(dev, true);
+	return aq_suspend_common(dev);
 }
 
 static int aq_pm_suspend_poweroff(struct device *dev)
 {
-	return aq_suspend_common(dev, true);
+	return aq_suspend_common(dev);
 }
 
 static int aq_pm_thaw(struct device *dev)
 {
-	return atl_resume_common(dev, true);
+	return atl_resume_common(dev);
 }
 
 static int aq_pm_resume_restore(struct device *dev)
 {
-	return atl_resume_common(dev, true);
+	return atl_resume_common(dev);
 }
 
 static const struct dev_pm_ops aq_pm_ops = {
drivers/net/ethernet/broadcom/bnxt/bnxt.c +3 -2
index d5149478a351..1ceccaed2da0 100644
@@ -7641,7 +7641,7 @@ static void bnxt_hwrm_dbg_qcaps(struct bnxt *bp)
 
 static int bnxt_hwrm_queue_qportcfg(struct bnxt *bp);
 
-static int bnxt_hwrm_func_qcaps(struct bnxt *bp)
+int bnxt_hwrm_func_qcaps(struct bnxt *bp)
 {
 	int rc;
 
@@ -9916,7 +9916,8 @@ static int bnxt_hwrm_if_change(struct bnxt *bp, bool up)
 
 	if (flags & FUNC_DRV_IF_CHANGE_RESP_FLAGS_RESC_CHANGE)
 		resc_reinit = true;
-	if (flags & FUNC_DRV_IF_CHANGE_RESP_FLAGS_HOT_FW_RESET_DONE)
+	if (flags & FUNC_DRV_IF_CHANGE_RESP_FLAGS_HOT_FW_RESET_DONE ||
+	    test_bit(BNXT_STATE_FW_RESET_DET, &bp->state))
 		fw_reset = true;
 	else
 		bnxt_remap_fw_health_regs(bp);
drivers/net/ethernet/broadcom/bnxt/bnxt.h +1 -0
index 98453a78cbd0..4c6ce2b2b3b7 100644
@@ -2310,6 +2310,7 @@ int bnxt_cancel_reservations(struct bnxt *bp, bool fw_reset);
 int bnxt_hwrm_alloc_wol_fltr(struct bnxt *bp);
 int bnxt_hwrm_free_wol_fltr(struct bnxt *bp);
 int bnxt_hwrm_func_resc_qcaps(struct bnxt *bp, bool all);
+int bnxt_hwrm_func_qcaps(struct bnxt *bp);
 int bnxt_hwrm_fw_set_time(struct bnxt *);
 int bnxt_open_nic(struct bnxt *, bool, bool);
 int bnxt_half_open_nic(struct bnxt *bp);
drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c +5 -3
index 0c17f90d44a2..3a9441fe4fd1 100644
@@ -979,9 +979,11 @@ static int bnxt_dl_info_get(struct devlink *dl, struct devlink_info_req *req,
 	if (rc)
 		return rc;
 
-	rc = bnxt_dl_livepatch_info_put(bp, req, BNXT_FW_SRT_PATCH);
-	if (rc)
-		return rc;
+	if (BNXT_CHIP_P5(bp)) {
+		rc = bnxt_dl_livepatch_info_put(bp, req, BNXT_FW_SRT_PATCH);
+		if (rc)
+			return rc;
+	}
 	return bnxt_dl_livepatch_info_put(bp, req, BNXT_FW_CRT_PATCH);
 
 }
drivers/net/ethernet/broadcom/bnxt/bnxt_ptp.c +11 -2
index f9c94e5fe718..3221911e25fe 100644
@@ -76,14 +76,23 @@ static int bnxt_refclk_read(struct bnxt *bp, struct ptp_system_timestamp *sts,
 			    u64 *ns)
 {
 	struct bnxt_ptp_cfg *ptp = bp->ptp_cfg;
+	u32 high_before, high_now, low;
 
 	if (test_bit(BNXT_STATE_IN_FW_RESET, &bp->state))
 		return -EIO;
 
+	high_before = readl(bp->bar0 + ptp->refclk_mapped_regs[1]);
 	ptp_read_system_prets(sts);
-	*ns = readl(bp->bar0 + ptp->refclk_mapped_regs[0]);
+	low = readl(bp->bar0 + ptp->refclk_mapped_regs[0]);
 	ptp_read_system_postts(sts);
-	*ns |= (u64)readl(bp->bar0 + ptp->refclk_mapped_regs[1]) << 32;
+	high_now = readl(bp->bar0 + ptp->refclk_mapped_regs[1]);
+	if (high_now != high_before) {
+		ptp_read_system_prets(sts);
+		low = readl(bp->bar0 + ptp->refclk_mapped_regs[0]);
+		ptp_read_system_postts(sts);
+	}
+	*ns = ((u64)high_now << 32) | low;
+
 	return 0;
 }
 
drivers/net/ethernet/broadcom/bnxt/bnxt_sriov.c +6 -1
index ddf2f3963abe..a1a2c7a64fd5 100644
@@ -823,8 +823,10 @@ static int bnxt_sriov_enable(struct bnxt *bp, int *num_vfs)
 		goto err_out2;
 
 	rc = pci_enable_sriov(bp->pdev, *num_vfs);
-	if (rc)
+	if (rc) {
+		bnxt_ulp_sriov_cfg(bp, 0);
 		goto err_out2;
+	}
 
 	return 0;
 
@@ -832,6 +834,9 @@ static int bnxt_sriov_enable(struct bnxt *bp, int *num_vfs)
 	/* Free the resources reserved for various VF's */
 	bnxt_hwrm_func_vf_resource_free(bp, *num_vfs);
 
+	/* Restore the max resources */
+	bnxt_hwrm_func_qcaps(bp);
+
 err_out1:
 	bnxt_free_vf_resources(bp);
 
drivers/net/ethernet/chelsio/inline_crypto/chtls/chtls_cm.c +1 -1
index 4af5561cbfc5..7c760aa65540 100644
@@ -1392,7 +1392,7 @@ static void chtls_pass_accept_request(struct sock *sk,
 	th_ecn = tcph->ece && tcph->cwr;
 	if (th_ecn) {
 		ect = !INET_ECN_is_not_ect(ip_dsfield);
-		ecn_ok = sock_net(sk)->ipv4.sysctl_tcp_ecn;
+		ecn_ok = READ_ONCE(sock_net(sk)->ipv4.sysctl_tcp_ecn);
 		if ((!ect && ecn_ok) || tcp_ca_needs_ecn(sk))
 			inet_rsk(oreq)->ecn_ok = 1;
 	}
drivers/net/ethernet/faraday/ftgmac100.c +14 -1
index 5231818943c6..c03663785a8d 100644
@@ -1764,6 +1764,19 @@ static int ftgmac100_setup_clk(struct ftgmac100 *priv)
 	return rc;
 }
 
+static bool ftgmac100_has_child_node(struct device_node *np, const char *name)
+{
+	struct device_node *child_np = of_get_child_by_name(np, name);
+	bool ret = false;
+
+	if (child_np) {
+		ret = true;
+		of_node_put(child_np);
+	}
+
+	return ret;
+}
+
 static int ftgmac100_probe(struct platform_device *pdev)
 {
 	struct resource *res;
@@ -1883,7 +1896,7 @@ static int ftgmac100_probe(struct platform_device *pdev)
 
 		/* Display what we found */
 		phy_attached_info(phy);
-	} else if (np && !of_get_child_by_name(np, "mdio")) {
+	} else if (np && !ftgmac100_has_child_node(np, "mdio")) {
 		/* Support legacy ASPEED devicetree descriptions that decribe a
 		 * MAC with an embedded MDIO controller but have no "mdio"
 		 * child node. Automatically scan the MDIO bus for available
drivers/net/ethernet/intel/ice/ice_devids.h +1 -0
index 61dd2f18dee8..b41bc3dc1745 100644
@@ -5,6 +5,7 @@
 #define _ICE_DEVIDS_H_
 
 /* Device IDs */
+#define ICE_DEV_ID_E822_SI_DFLT         0x1888
 /* Intel(R) Ethernet Connection E823-L for backplane */
 #define ICE_DEV_ID_E823L_BACKPLANE	0x124C
 /* Intel(R) Ethernet Connection E823-L for SFP */
drivers/net/ethernet/intel/ice/ice_devlink.c +40 -19

80 lines not on this page · raw message

drivers/net/ethernet/intel/ice/ice_fw_update.c +94 -2

114 lines not on this page · raw message

drivers/net/ethernet/intel/ice/ice_main.c +1 -0
index d069b19f9bf7..efb076f71e38 100644
@@ -5397,6 +5397,7 @@ static const struct pci_device_id ice_pci_tbl[] = {
 	{ PCI_VDEVICE(INTEL, ICE_DEV_ID_E823L_10G_BASE_T), 0 },
 	{ PCI_VDEVICE(INTEL, ICE_DEV_ID_E823L_1GBE), 0 },
 	{ PCI_VDEVICE(INTEL, ICE_DEV_ID_E823L_QSFP), 0 },
+	{ PCI_VDEVICE(INTEL, ICE_DEV_ID_E822_SI_DFLT), 0 },
 	/* required last entry */
 	{ 0, }
 };
drivers/net/ethernet/marvell/prestera/prestera_router.c +1 -0
index 6c5618cf4f08..97d9012db189 100644
@@ -587,6 +587,7 @@ int prestera_router_init(struct prestera_switch *sw)
 
 void prestera_router_fini(struct prestera_switch *sw)
 {
+	unregister_fib_notifier(&init_net, &sw->router->fib_nb);
 	unregister_inetaddr_notifier(&sw->router->inetaddr_nb);
 	unregister_inetaddr_validator_notifier(&sw->router->inetaddr_valid_nb);
 	rhashtable_destroy(&sw->router->kern_fib_cache_ht);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c +12 -8
index 1ff7a07bcd06..fbcce63e5b80 100644
@@ -66,6 +66,7 @@ struct mlx5_tc_ct_priv {
 	struct mlx5_ct_fs *fs;
 	struct mlx5_ct_fs_ops *fs_ops;
 	spinlock_t ht_lock; /* protects ft entries */
+	struct workqueue_struct *wq;
 };
 
 struct mlx5_ct_flow {
@@ -927,14 +928,11 @@ static void mlx5_tc_ct_entry_del_work(struct work_struct *work)
 static void
 __mlx5_tc_ct_entry_put(struct mlx5_ct_entry *entry)
 {
-	struct mlx5e_priv *priv;
-
 	if (!refcount_dec_and_test(&entry->refcnt))
 		return;
 
-	priv = netdev_priv(entry->ct_priv->netdev);
 	INIT_WORK(&entry->work, mlx5_tc_ct_entry_del_work);
-	queue_work(priv->wq, &entry->work);
+	queue_work(entry->ct_priv->wq, &entry->work);
 }
 
 static struct mlx5_ct_counter *
@@ -1744,19 +1742,16 @@ mlx5_tc_ct_flush_ft_entry(void *ptr, void *arg)
 static void
 mlx5_tc_ct_del_ft_cb(struct mlx5_tc_ct_priv *ct_priv, struct mlx5_ct_ft *ft)
 {
-	struct mlx5e_priv *priv;
-
 	if (!refcount_dec_and_test(&ft->refcount))
 		return;
 
+	flush_workqueue(ct_priv->wq);
 	nf_flow_table_offload_del_cb(ft->nf_ft,
 				     mlx5_tc_ct_block_flow_offload, ft);
 	rhashtable_remove_fast(&ct_priv->zone_ht, &ft->node, zone_params);
 	rhashtable_free_and_destroy(&ft->ct_entries_ht,
 				    mlx5_tc_ct_flush_ft_entry,
 				    ct_priv);
-	priv = netdev_priv(ct_priv->netdev);
-	flush_workqueue(priv->wq);
 	mlx5_tc_ct_free_pre_ct_tables(ft);
 	mapping_remove(ct_priv->zone_mapping, ft->zone_restore_id);
 	kfree(ft);
@@ -2139,6 +2134,12 @@ mlx5_tc_ct_init(struct mlx5e_priv *priv, struct mlx5_fs_chains *chains,
 	if (rhashtable_init(&ct_priv->ct_tuples_nat_ht, &tuples_nat_ht_params))
 		goto err_ct_tuples_nat_ht;
 
+	ct_priv->wq = alloc_ordered_workqueue("mlx5e_ct_priv_wq", 0);
+	if (!ct_priv->wq) {
+		err = -ENOMEM;
+		goto err_wq;
+	}
+
 	err = mlx5_tc_ct_fs_init(ct_priv);
 	if (err)
 		goto err_init_fs;
@@ -2146,6 +2147,8 @@ mlx5_tc_ct_init(struct mlx5e_priv *priv, struct mlx5_fs_chains *chains,
 	return ct_priv;
 
 err_init_fs:
+	destroy_workqueue(ct_priv->wq);
+err_wq:
 	rhashtable_destroy(&ct_priv->ct_tuples_nat_ht);
 err_ct_tuples_nat_ht:
 	rhashtable_destroy(&ct_priv->ct_tuples_ht);
@@ -2175,6 +2178,7 @@ mlx5_tc_ct_clean(struct mlx5_tc_ct_priv *ct_priv)
 	if (!ct_priv)
 		return;
 
+	destroy_workqueue(ct_priv->wq);
 	chains = ct_priv->chains;
 
 	ct_priv->fs_ops->destroy(ct_priv->fs);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_rx.c +1 -2
index 96064a2033f7..f3f2aeb1bc21 100644
@@ -231,8 +231,7 @@ mlx5e_set_ktls_rx_priv_ctx(struct tls_context *tls_ctx,
 	struct mlx5e_ktls_offload_context_rx **ctx =
 		__tls_driver_ctx(tls_ctx, TLS_OFFLOAD_CTX_DIR_RX);
 
-	BUILD_BUG_ON(sizeof(struct mlx5e_ktls_offload_context_rx *) >
-		     TLS_OFFLOAD_CONTEXT_SIZE_RX);
+	BUILD_BUG_ON(sizeof(priv_rx) > TLS_DRIVER_STATE_SIZE_RX);
 
 	*ctx = priv_rx;
 }
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_tx.c +1 -2
index aaf11c66bf4c..6f12764d8880 100644
@@ -68,8 +68,7 @@ mlx5e_set_ktls_tx_priv_ctx(struct tls_context *tls_ctx,
 	struct mlx5e_ktls_offload_context_tx **ctx =
 		__tls_driver_ctx(tls_ctx, TLS_OFFLOAD_CTX_DIR_TX);
 
-	BUILD_BUG_ON(sizeof(struct mlx5e_ktls_offload_context_tx *) >
-		     TLS_OFFLOAD_CONTEXT_SIZE_TX);
+	BUILD_BUG_ON(sizeof(priv_tx) > TLS_DRIVER_STATE_SIZE_TX);
 
 	*ctx = priv_tx;
 }
drivers/net/ethernet/mellanox/mlx5/core/en_stats.c +1 -1
index bdc870f9c2f3..4429c848d4c4 100644
@@ -688,7 +688,7 @@ static MLX5E_DECLARE_STATS_GRP_OP_UPDATE_STATS(vnic_env)
 	u32 in[MLX5_ST_SZ_DW(query_vnic_env_in)] = {};
 	struct mlx5_core_dev *mdev = priv->mdev;
 
-	if (!MLX5_CAP_GEN(priv->mdev, nic_receive_steering_discard))
+	if (!mlx5e_stats_grp_vnic_env_num_stats(priv))
 		return;
 
 	MLX5_SET(query_vnic_env_in, in, opcode, MLX5_CMD_OP_QUERY_VNIC_ENV);
drivers/net/ethernet/mellanox/mlx5/core/en_tx.c +30 -9
index 2dc48406cd08..54a3f866a345 100644
@@ -318,6 +318,26 @@ static void mlx5e_tx_check_stop(struct mlx5e_txqsq *sq)
 	}
 }
 
+static void mlx5e_tx_flush(struct mlx5e_txqsq *sq)
+{
+	struct mlx5e_tx_wqe_info *wi;
+	struct mlx5e_tx_wqe *wqe;
+	u16 pi;
+
+	/* Must not be called when a MPWQE session is active but empty. */
+	mlx5e_tx_mpwqe_ensure_complete(sq);
+
+	pi = mlx5_wq_cyc_ctr2ix(&sq->wq, sq->pc);
+	wi = &sq->db.wqe_info[pi];
+
+	*wi = (struct mlx5e_tx_wqe_info) {
+		.num_wqebbs = 1,
+	};
+
+	wqe = mlx5e_post_nop(&sq->wq, sq->sqn, &sq->pc);
+	mlx5e_notify_hw(&sq->wq, sq->pc, sq->uar_map, &wqe->ctrl);
+}
+
 static inline void
 mlx5e_txwqe_complete(struct mlx5e_txqsq *sq, struct sk_buff *skb,
 		     const struct mlx5e_tx_attr *attr,
@@ -410,6 +430,7 @@ mlx5e_sq_xmit_wqe(struct mlx5e_txqsq *sq, struct sk_buff *skb,
 err_drop:
 	stats->dropped++;
 	dev_kfree_skb_any(skb);
+	mlx5e_tx_flush(sq);
 }
 
 static bool mlx5e_tx_skb_supports_mpwqe(struct sk_buff *skb, struct mlx5e_tx_attr *attr)
@@ -511,6 +532,13 @@ mlx5e_sq_xmit_mpwqe(struct mlx5e_txqsq *sq, struct sk_buff *skb,
 	struct mlx5_wqe_ctrl_seg *cseg;
 	struct mlx5e_xmit_data txd;
 
+	txd.data = skb->data;
+	txd.len = skb->len;
+
+	txd.dma_addr = dma_map_single(sq->pdev, txd.data, txd.len, DMA_TO_DEVICE);
+	if (unlikely(dma_mapping_error(sq->pdev, txd.dma_addr)))
+		goto err_unmap;
+
 	if (!mlx5e_tx_mpwqe_session_is_active(sq)) {
 		mlx5e_tx_mpwqe_session_start(sq, eseg);
 	} else if (!mlx5e_tx_mpwqe_same_eseg(sq, eseg)) {
@@ -520,18 +548,9 @@ mlx5e_sq_xmit_mpwqe(struct mlx5e_txqsq *sq, struct sk_buff *skb,
 
 	sq->stats->xmit_more += xmit_more;
 
-	txd.data = skb->data;
-	txd.len = skb->len;
-
-	txd.dma_addr = dma_map_single(sq->pdev, txd.data, txd.len, DMA_TO_DEVICE);
-	if (unlikely(dma_mapping_error(sq->pdev, txd.dma_addr)))
-		goto err_unmap;
 	mlx5e_dma_push(sq, txd.dma_addr, txd.len, MLX5E_DMA_MAP_SINGLE);
-
 	mlx5e_skb_fifo_push(&sq->db.skb_fifo, skb);
-
 	mlx5e_tx_mpwqe_add_dseg(sq, &txd);
-
 	mlx5e_tx_skb_update_hwts_flags(skb);
 
 	if (unlikely(mlx5e_tx_mpwqe_is_full(&sq->mpwqe, sq->max_sq_mpw_wqebbs))) {
@@ -553,6 +572,7 @@ mlx5e_sq_xmit_mpwqe(struct mlx5e_txqsq *sq, struct sk_buff *skb,
 	mlx5e_dma_unmap_wqe_err(sq, 1);
 	sq->stats->dropped++;
 	dev_kfree_skb_any(skb);
+	mlx5e_tx_flush(sq);
 }
 
 void mlx5e_tx_mpwqe_ensure_complete(struct mlx5e_txqsq *sq)
@@ -935,5 +955,6 @@ void mlx5i_sq_xmit(struct mlx5e_txqsq *sq, struct sk_buff *skb,
 err_drop:
 	stats->dropped++;
 	dev_kfree_skb_any(skb);
+	mlx5e_tx_flush(sq);
 }
 #endif
drivers/net/ethernet/mellanox/mlx5/core/esw/legacy.c +3 -2
index 9d17206d1625..fabe49a35a5c 100644
@@ -11,6 +11,7 @@
 #include "mlx5_core.h"
 #include "eswitch.h"
 #include "fs_core.h"
+#include "fs_ft_pool.h"
 #include "esw/qos.h"
 
 enum {
@@ -95,8 +96,7 @@ static int esw_create_legacy_fdb_table(struct mlx5_eswitch *esw)
 	if (!flow_group_in)
 		return -ENOMEM;
 
-	table_size = BIT(MLX5_CAP_ESW_FLOWTABLE_FDB(dev, log_max_ft_size));
-	ft_attr.max_fte = table_size;
+	ft_attr.max_fte = POOL_NEXT_SIZE;
 	ft_attr.prio = LEGACY_FDB_PRIO;
 	fdb = mlx5_create_flow_table(root_ns, &ft_attr);
 	if (IS_ERR(fdb)) {
@@ -105,6 +105,7 @@ static int esw_create_legacy_fdb_table(struct mlx5_eswitch *esw)
 		goto out;
 	}
 	esw->fdb_table.legacy.fdb = fdb;
+	table_size = fdb->max_fte;
 
 	/* Addresses group : Full match unicast/multicast addresses */
 	MLX5_SET(create_flow_group_in, flow_group_in, match_criteria_enable,
drivers/net/ethernet/mscc/ocelot_fdma.c +8 -9
index dffa597bffe6..6a8f84f325a3 100644
@@ -94,19 +94,18 @@ static void ocelot_fdma_activate_chan(struct ocelot *ocelot, dma_addr_t dma,
 	ocelot_fdma_writel(ocelot, MSCC_FDMA_CH_ACTIVATE, BIT(chan));
 }
 
+static u32 ocelot_fdma_read_ch_safe(struct ocelot *ocelot)
+{
+	return ocelot_fdma_readl(ocelot, MSCC_FDMA_CH_SAFE);
+}
+
 static int ocelot_fdma_wait_chan_safe(struct ocelot *ocelot, int chan)
 {
-	unsigned long timeout;
 	u32 safe;
 
-	timeout = jiffies + usecs_to_jiffies(OCELOT_FDMA_CH_SAFE_TIMEOUT_US);
-	do {
-		safe = ocelot_fdma_readl(ocelot, MSCC_FDMA_CH_SAFE);
-		if (safe & BIT(chan))
-			return 0;
-	} while (time_after(jiffies, timeout));
-
-	return -ETIMEDOUT;
+	return readx_poll_timeout_atomic(ocelot_fdma_read_ch_safe, ocelot, safe,
+					 safe & BIT(chan), 0,
+					 OCELOT_FDMA_CH_SAFE_TIMEOUT_US);
 }
 
 static void ocelot_fdma_dcb_set_data(struct ocelot_fdma_dcb *dcb,
drivers/net/ethernet/netronome/nfp/nfdk/dp.c +25 -8
index e509d6dcba5c..805071d64a20 100644
@@ -125,17 +125,18 @@ nfp_nfdk_tx_csum(struct nfp_net_dp *dp, struct nfp_net_r_vector *r_vec,
 
 static int
 nfp_nfdk_tx_maybe_close_block(struct nfp_net_tx_ring *tx_ring,
-			      unsigned int nr_frags, struct sk_buff *skb)
+			      struct sk_buff *skb)
 {
 	unsigned int n_descs, wr_p, nop_slots;
 	const skb_frag_t *frag, *fend;
 	struct nfp_nfdk_tx_desc *txd;
+	unsigned int nr_frags;
 	unsigned int wr_idx;
 	int err;
 
 recount_descs:
 	n_descs = nfp_nfdk_headlen_to_segs(skb_headlen(skb));
-
+	nr_frags = skb_shinfo(skb)->nr_frags;
 	frag = skb_shinfo(skb)->frags;
 	fend = frag + nr_frags;
 	for (; frag < fend; frag++)
@@ -281,10 +282,13 @@ netdev_tx_t nfp_nfdk_tx(struct sk_buff *skb, struct net_device *netdev)
 	if (unlikely((int)metadata < 0))
 		goto err_flush;
 
-	nr_frags = skb_shinfo(skb)->nr_frags;
-	if (nfp_nfdk_tx_maybe_close_block(tx_ring, nr_frags, skb))
+	if (nfp_nfdk_tx_maybe_close_block(tx_ring, skb))
 		goto err_flush;
 
+	/* nr_frags will change after skb_linearize so we get nr_frags after
+	 * nfp_nfdk_tx_maybe_close_block function
+	 */
+	nr_frags = skb_shinfo(skb)->nr_frags;
 	/* DMA map all */
 	wr_idx = D_IDX(tx_ring, tx_ring->wr_p);
 	txd = &tx_ring->ktxds[wr_idx];
@@ -310,7 +314,16 @@ netdev_tx_t nfp_nfdk_tx(struct sk_buff *skb, struct net_device *netdev)
 
 	/* FIELD_PREP() implicitly truncates to chunk */
 	dma_len -= 1;
-	dlen_type = FIELD_PREP(NFDK_DESC_TX_DMA_LEN_HEAD, dma_len) |
+
+	/* We will do our best to pass as much data as we can in descriptor
+	 * and we need to make sure the first descriptor includes whole head
+	 * since there is limitation in firmware side. Sometimes the value of
+	 * dma_len bitwise and NFDK_DESC_TX_DMA_LEN_HEAD will less than
+	 * headlen.
+	 */
+	dlen_type = FIELD_PREP(NFDK_DESC_TX_DMA_LEN_HEAD,
+			       dma_len > NFDK_DESC_TX_DMA_LEN_HEAD ?
+			       NFDK_DESC_TX_DMA_LEN_HEAD : dma_len) |
 		    FIELD_PREP(NFDK_DESC_TX_TYPE_HEAD, type);
 
 	txd->dma_len_type = cpu_to_le16(dlen_type);
@@ -925,7 +938,9 @@ nfp_nfdk_tx_xdp_buf(struct nfp_net_dp *dp, struct nfp_net_rx_ring *rx_ring,
 
 	/* FIELD_PREP() implicitly truncates to chunk */
 	dma_len -= 1;
-	dlen_type = FIELD_PREP(NFDK_DESC_TX_DMA_LEN_HEAD, dma_len) |
+	dlen_type = FIELD_PREP(NFDK_DESC_TX_DMA_LEN_HEAD,
+			       dma_len > NFDK_DESC_TX_DMA_LEN_HEAD ?
+			       NFDK_DESC_TX_DMA_LEN_HEAD : dma_len) |
 		    FIELD_PREP(NFDK_DESC_TX_TYPE_HEAD, type);
 
 	txd->dma_len_type = cpu_to_le16(dlen_type);
@@ -1303,7 +1318,7 @@ nfp_nfdk_ctrl_tx_one(struct nfp_net *nn, struct nfp_net_r_vector *r_vec,
 				   skb_push(skb, 4));
 	}
 
-	if (nfp_nfdk_tx_maybe_close_block(tx_ring, 0, skb))
+	if (nfp_nfdk_tx_maybe_close_block(tx_ring, skb))
 		goto err_free;
 
 	/* DMA map all */
@@ -1328,7 +1343,9 @@ nfp_nfdk_ctrl_tx_one(struct nfp_net *nn, struct nfp_net_r_vector *r_vec,
 	txbuf++;
 
 	dma_len -= 1;
-	dlen_type = FIELD_PREP(NFDK_DESC_TX_DMA_LEN_HEAD, dma_len) |
+	dlen_type = FIELD_PREP(NFDK_DESC_TX_DMA_LEN_HEAD,
+			       dma_len > NFDK_DESC_TX_DMA_LEN_HEAD ?
+			       NFDK_DESC_TX_DMA_LEN_HEAD : dma_len) |
 		    FIELD_PREP(NFDK_DESC_TX_TYPE_HEAD, type);
 
 	txd->dma_len_type = cpu_to_le16(dlen_type);
drivers/net/ethernet/sfc/ef10.c +3 -0
index 186cb28c03bd..8b62ce21aff3 100644
@@ -1932,7 +1932,10 @@ static int efx_ef10_try_update_nic_stats_vf(struct efx_nic *efx)
 
 	efx_update_sw_stats(efx, stats);
 out:
+	/* releasing a DMA coherent buffer with BH disabled can panic */
+	spin_unlock_bh(&efx->stats_lock);
 	efx_nic_free_buffer(efx, &stats_buf);
+	spin_lock_bh(&efx->stats_lock);
 	return rc;
 }
 
drivers/net/ethernet/sfc/ef10_sriov.c +7 -3
index 7f5aa4a8c451..92550c7e85ce 100644
@@ -408,8 +408,9 @@ static int efx_ef10_pci_sriov_enable(struct efx_nic *efx, int num_vfs)
 static int efx_ef10_pci_sriov_disable(struct efx_nic *efx, bool force)
 {
 	struct pci_dev *dev = efx->pci_dev;
+	struct efx_ef10_nic_data *nic_data = efx->nic_data;
 	unsigned int vfs_assigned = pci_vfs_assigned(dev);
-	int rc = 0;
+	int i, rc = 0;
 
 	if (vfs_assigned && !force) {
 		netif_info(efx, drv, efx->net_dev, "VFs are assigned to guests; "
@@ -417,10 +418,13 @@ static int efx_ef10_pci_sriov_disable(struct efx_nic *efx, bool force)
 		return -EBUSY;
 	}
 
-	if (!vfs_assigned)
+	if (!vfs_assigned) {
+		for (i = 0; i < efx->vf_count; i++)
+			nic_data->vf[i].pci_dev = NULL;
 		pci_disable_sriov(dev);
-	else
+	} else {
 		rc = -EBUSY;
+	}
 
 	efx_ef10_sriov_free_vf_vswitching(efx);
 	efx->vf_count = 0;
drivers/net/ethernet/stmicro/stmmac/dwmac-dwc-qos-eth.c +1 -0
index bc91fd867dcd..358fc26f8d1f 100644
@@ -361,6 +361,7 @@ static int tegra_eqos_probe(struct platform_device *pdev,
 	data->fix_mac_speed = tegra_eqos_fix_speed;
 	data->init = tegra_eqos_init;
 	data->bsp_priv = eqos;
+	data->sph_disable = 1;
 
 	err = tegra_eqos_init(pdev, eqos);
 	if (err < 0)
drivers/net/ethernet/stmicro/stmmac/dwmac-ingenic.c +4 -2
index 9a6d819b84ae..378b4dd826bb 100644
@@ -273,7 +273,8 @@ static int ingenic_mac_probe(struct platform_device *pdev)
 			mac->tx_delay = tx_delay_ps * 1000;
 		} else {
 			dev_err(&pdev->dev, "Invalid TX clock delay: %dps\n", tx_delay_ps);
-			return -EINVAL;
+			ret = -EINVAL;
+			goto err_remove_config_dt;
 		}
 	}
 
@@ -283,7 +284,8 @@ static int ingenic_mac_probe(struct platform_device *pdev)
 			mac->rx_delay = rx_delay_ps * 1000;
 		} else {
 			dev_err(&pdev->dev, "Invalid RX clock delay: %dps\n", rx_delay_ps);
-			return -EINVAL;
+			ret = -EINVAL;
+			goto err_remove_config_dt;
 		}
 	}
 
drivers/net/ethernet/ti/am65-cpsw-nuss.c +10 -7
index 6d978dbf708f..298953053407 100644
@@ -2475,7 +2475,6 @@ static int am65_cpsw_nuss_register_devlink(struct am65_cpsw_common *common)
 				port->port_id, ret);
 			goto dl_port_unreg;
 		}
-		devlink_port_type_eth_set(dl_port, port->ndev);
 	}
 	devlink_register(common->devlink);
 	return ret;
@@ -2519,6 +2518,7 @@ static void am65_cpsw_unregister_devlink(struct am65_cpsw_common *common)
 static int am65_cpsw_nuss_register_ndevs(struct am65_cpsw_common *common)
 {
 	struct device *dev = common->dev;
+	struct devlink_port *dl_port;
 	struct am65_cpsw_port *port;
 	int ret = 0, i;
 
@@ -2535,6 +2535,10 @@ static int am65_cpsw_nuss_register_ndevs(struct am65_cpsw_common *common)
 		return ret;
 	}
 
+	ret = am65_cpsw_nuss_register_devlink(common);
+	if (ret)
+		return ret;
+
 	for (i = 0; i < common->port_num; i++) {
 		port = &common->ports[i];
 
@@ -2547,25 +2551,24 @@ static int am65_cpsw_nuss_register_ndevs(struct am65_cpsw_common *common)
 				i, ret);
 			goto err_cleanup_ndev;
 		}
+
+		dl_port = &port->devlink_port;
+		devlink_port_type_eth_set(dl_port, port->ndev);
 	}
 
 	ret = am65_cpsw_register_notifiers(common);
 	if (ret)
 		goto err_cleanup_ndev;
 
-	ret = am65_cpsw_nuss_register_devlink(common);
-	if (ret)
-		goto clean_unregister_notifiers;
-
 	/* can't auto unregister ndev using devm_add_action() due to
 	 * devres release sequence in DD core for DMA
 	 */
 
 	return 0;
-clean_unregister_notifiers:
-	am65_cpsw_unregister_notifiers(common);
+
 err_cleanup_ndev:
 	am65_cpsw_nuss_cleanup_ndev(common);
+	am65_cpsw_unregister_devlink(common);
 
 	return ret;
 }
drivers/net/phy/sfp.c +1 -1
index 9a5d5a10560f..e7b0e12cc75b 100644
@@ -2516,7 +2516,7 @@ static int sfp_probe(struct platform_device *pdev)
 
 	platform_set_drvdata(pdev, sfp);
 
-	err = devm_add_action(sfp->dev, sfp_cleanup, sfp);
+	err = devm_add_action_or_reset(sfp->dev, sfp_cleanup, sfp);
 	if (err < 0)
 		return err;
 
drivers/net/xen-netback/rx.c +1 -0
index dbac4c03d21a..a0335407be42 100644
@@ -495,6 +495,7 @@ void xenvif_rx_action(struct xenvif_queue *queue)
 	queue->rx_copy.completed = &completed_skbs;
 
 	while (xenvif_rx_ring_slots_available(queue) &&
+	       !skb_queue_empty(&queue->rx_queue) &&
 	       work_done < RX_BATCH_SIZE) {
 		xenvif_rx_skb(queue);
 		work_done++;
drivers/nfc/nxp-nci/i2c.c +6 -2
index e8f3b35afbee..ae2ba08d8ac3 100644
@@ -122,7 +122,9 @@ static int nxp_nci_i2c_fw_read(struct nxp_nci_i2c_phy *phy,
 	skb_put_data(*skb, &header, NXP_NCI_FW_HDR_LEN);
 
 	r = i2c_master_recv(client, skb_put(*skb, frame_len), frame_len);
-	if (r != frame_len) {
+	if (r < 0) {
+		goto fw_read_exit_free_skb;
+	} else if (r != frame_len) {
 		nfc_err(&client->dev,
 			"Invalid frame length: %u (expected %zu)\n",
 			r, frame_len);
@@ -166,7 +168,9 @@ static int nxp_nci_i2c_nci_read(struct nxp_nci_i2c_phy *phy,
 		return 0;
 
 	r = i2c_master_recv(client, skb_put(*skb, header.plen), header.plen);
-	if (r != header.plen) {
+	if (r < 0) {
+		goto nci_read_exit_free_skb;
+	} else if (r != header.plen) {
 		nfc_err(&client->dev,
 			"Invalid frame payload length: %u (expected %u)\n",
 			r, header.plen);
drivers/nvme/host/core.c +5 -3
index a2862a56fadc..c9831daafbc6 100644
@@ -3726,7 +3726,7 @@ static int nvme_add_ns_cdev(struct nvme_ns *ns)
 }
 
 static struct nvme_ns_head *nvme_alloc_ns_head(struct nvme_ctrl *ctrl,
-		unsigned nsid, struct nvme_ns_ids *ids)
+		unsigned nsid, struct nvme_ns_ids *ids, bool is_shared)
 {
 	struct nvme_ns_head *head;
 	size_t size = sizeof(*head);
@@ -3750,6 +3750,7 @@ static struct nvme_ns_head *nvme_alloc_ns_head(struct nvme_ctrl *ctrl,
 	head->subsys = ctrl->subsys;
 	head->ns_id = nsid;
 	head->ids = *ids;
+	head->shared = is_shared;
 	kref_init(&head->ref);
 
 	if (head->ids.csi) {
@@ -3830,12 +3831,11 @@ static int nvme_init_ns_head(struct nvme_ns *ns, unsigned nsid,
 				nsid);
 			goto out_unlock;
 		}
-		head = nvme_alloc_ns_head(ctrl, nsid, ids);
+		head = nvme_alloc_ns_head(ctrl, nsid, ids, is_shared);
 		if (IS_ERR(head)) {
 			ret = PTR_ERR(head);
 			goto out_unlock;
 		}
-		head->shared = is_shared;
 	} else {
 		ret = -EINVAL;
 		if (!is_shared || !head->shared) {
@@ -4519,6 +4519,8 @@ void nvme_stop_ctrl(struct nvme_ctrl *ctrl)
 	nvme_stop_failfast_work(ctrl);
 	flush_work(&ctrl->async_event_work);
 	cancel_work_sync(&ctrl->fw_act_work);
+	if (ctrl->ops->stop_ctrl)
+		ctrl->ops->stop_ctrl(ctrl);
 }
 EXPORT_SYMBOL_GPL(nvme_stop_ctrl);
 
drivers/nvme/host/nvme.h +1 -0
index a2b53ca63335..337ae1e3ad25 100644
@@ -501,6 +501,7 @@ struct nvme_ctrl_ops {
 	void (*free_ctrl)(struct nvme_ctrl *ctrl);
 	void (*submit_async_event)(struct nvme_ctrl *ctrl);
 	void (*delete_ctrl)(struct nvme_ctrl *ctrl);
+	void (*stop_ctrl)(struct nvme_ctrl *ctrl);
 	int (*get_address)(struct nvme_ctrl *ctrl, char *buf, int size);
 };
 
drivers/nvme/host/pci.c +2 -1
index fe829377c7c2..ab575fdd8015 100644
@@ -3432,7 +3432,8 @@ static const struct pci_device_id nvme_id_table[] = {
 				NVME_QUIRK_DISABLE_WRITE_ZEROES|
 				NVME_QUIRK_IGNORE_DEV_SUBNQN, },
 	{ PCI_DEVICE(0x1987, 0x5016),	/* Phison E16 */
-		.driver_data = NVME_QUIRK_IGNORE_DEV_SUBNQN, },
+		.driver_data = NVME_QUIRK_IGNORE_DEV_SUBNQN |
+				NVME_QUIRK_BOGUS_NID, },
 	{ PCI_DEVICE(0x1b4b, 0x1092),	/* Lexar 256 GB SSD */
 		.driver_data = NVME_QUIRK_NO_NS_DESC_LIST |
 				NVME_QUIRK_IGNORE_DEV_SUBNQN, },
drivers/nvme/host/rdma.c +9 -3
index d9f19d901313..5aef2b81dbec 100644
@@ -1048,6 +1048,14 @@ static void nvme_rdma_teardown_io_queues(struct nvme_rdma_ctrl *ctrl,
 	}
 }
 
+static void nvme_rdma_stop_ctrl(struct nvme_ctrl *nctrl)
+{
+	struct nvme_rdma_ctrl *ctrl = to_rdma_ctrl(nctrl);
+
+	cancel_work_sync(&ctrl->err_work);
+	cancel_delayed_work_sync(&ctrl->reconnect_work);
+}
+
 static void nvme_rdma_free_ctrl(struct nvme_ctrl *nctrl)
 {
 	struct nvme_rdma_ctrl *ctrl = to_rdma_ctrl(nctrl);
@@ -2255,9 +2263,6 @@ static const struct blk_mq_ops nvme_rdma_admin_mq_ops = {
 
 static void nvme_rdma_shutdown_ctrl(struct nvme_rdma_ctrl *ctrl, bool shutdown)
 {
-	cancel_work_sync(&ctrl->err_work);
-	cancel_delayed_work_sync(&ctrl->reconnect_work);
-
 	nvme_rdma_teardown_io_queues(ctrl, shutdown);
 	nvme_stop_admin_queue(&ctrl->ctrl);
 	if (shutdown)
@@ -2307,6 +2312,7 @@ static const struct nvme_ctrl_ops nvme_rdma_ctrl_ops = {
 	.submit_async_event	= nvme_rdma_submit_async_event,
 	.delete_ctrl		= nvme_rdma_delete_ctrl,
 	.get_address		= nvmf_get_address,
+	.stop_ctrl		= nvme_rdma_stop_ctrl,
 };
 
 /*
drivers/nvme/host/tcp.c +8 -5
index ad3a2bf2f1e9..1fb4f9b1621e 100644
@@ -1180,8 +1180,7 @@ static int nvme_tcp_try_send(struct nvme_tcp_queue *queue)
 	} else if (ret < 0) {
 		dev_err(queue->ctrl->ctrl.device,
 			"failed to send request %d\n", ret);
-		if (ret != -EPIPE && ret != -ECONNRESET)
-			nvme_tcp_fail_request(queue->request);
+		nvme_tcp_fail_request(queue->request);
 		nvme_tcp_done_send_req(queue);
 	}
 	return ret;
@@ -2194,9 +2193,6 @@ static void nvme_tcp_error_recovery_work(struct work_struct *work)
 
 static void nvme_tcp_teardown_ctrl(struct nvme_ctrl *ctrl, bool shutdown)
 {
-	cancel_work_sync(&to_tcp_ctrl(ctrl)->err_work);
-	cancel_delayed_work_sync(&to_tcp_ctrl(ctrl)->connect_work);
-
 	nvme_tcp_teardown_io_queues(ctrl, shutdown);
 	nvme_stop_admin_queue(ctrl);
 	if (shutdown)
@@ -2236,6 +2232,12 @@ static void nvme_reset_ctrl_work(struct work_struct *work)
 	nvme_tcp_reconnect_or_remove(ctrl);
 }
 
+static void nvme_tcp_stop_ctrl(struct nvme_ctrl *ctrl)
+{
+	cancel_work_sync(&to_tcp_ctrl(ctrl)->err_work);
+	cancel_delayed_work_sync(&to_tcp_ctrl(ctrl)->connect_work);
+}
+
 static void nvme_tcp_free_ctrl(struct nvme_ctrl *nctrl)
 {
 	struct nvme_tcp_ctrl *ctrl = to_tcp_ctrl(nctrl);
@@ -2560,6 +2562,7 @@ static const struct nvme_ctrl_ops nvme_tcp_ctrl_ops = {
 	.submit_async_event	= nvme_tcp_submit_async_event,
 	.delete_ctrl		= nvme_tcp_delete_ctrl,
 	.get_address		= nvmf_get_address,
+	.stop_ctrl		= nvme_tcp_stop_ctrl,
 };
 
 static bool
drivers/nvme/host/trace.h +1 -1
index b5f85259461a..37c7f4c89f92 100644
@@ -69,7 +69,7 @@ TRACE_EVENT(nvme_setup_cmd,
 		__entry->metadata = !!blk_integrity_rq(req);
 		__entry->fctype = cmd->fabrics.fctype;
 		__assign_disk_name(__entry->disk, req->q->disk);
-		memcpy(__entry->cdw10, &cmd->common.cdw10,
+		memcpy(__entry->cdw10, &cmd->common.cdws,
 			sizeof(__entry->cdw10));
 	    ),
 	    TP_printk("nvme%d: %sqid=%d, cmdid=%u, nsid=%u, flags=0x%x, meta=0x%x, cmd=(%s %s)",
drivers/pinctrl/aspeed/pinctrl-aspeed.c +2 -2
index c94e24aadf92..83d47ff1cea8 100644
@@ -236,11 +236,11 @@ int aspeed_pinmux_set_mux(struct pinctrl_dev *pctldev, unsigned int function,
 		const struct aspeed_sig_expr **funcs;
 		const struct aspeed_sig_expr ***prios;
 
-		pr_debug("Muxing pin %s for %s\n", pdesc->name, pfunc->name);
-
 		if (!pdesc)
 			return -EINVAL;
 
+		pr_debug("Muxing pin %s for %s\n", pdesc->name, pfunc->name);
+
 		prios = pdesc->prios;
 
 		if (!prios)
drivers/pinctrl/freescale/pinctrl-imx93.c +1 -0
index c0630f69e995..417e41b37a6f 100644
@@ -239,6 +239,7 @@ static const struct pinctrl_pin_desc imx93_pinctrl_pads[] = {
 static const struct imx_pinctrl_soc_info imx93_pinctrl_info = {
 	.pins = imx93_pinctrl_pads,
 	.npins = ARRAY_SIZE(imx93_pinctrl_pads),
+	.flags = ZERO_OFFSET_VALID,
 	.gpr_compatible = "fsl,imx93-iomuxc-gpr",
 };
 
drivers/platform/x86/hp-wmi.c +3 -0
index 0e6ed75c70f3..c63ec1471b84 100644
@@ -89,6 +89,7 @@ enum hp_wmi_event_ids {
 	HPWMI_BACKLIT_KB_BRIGHTNESS	= 0x0D,
 	HPWMI_PEAKSHIFT_PERIOD		= 0x0F,
 	HPWMI_BATTERY_CHARGE_PERIOD	= 0x10,
+	HPWMI_SANITIZATION_MODE		= 0x17,
 };
 
 /*
@@ -846,6 +847,8 @@ static void hp_wmi_notify(u32 value, void *context)
 		break;
 	case HPWMI_BATTERY_CHARGE_PERIOD:
 		break;
+	case HPWMI_SANITIZATION_MODE:
+		break;
 	default:
 		pr_info("Unknown event_id - %d - 0x%x\n", event_id, event_data);
 		break;
drivers/platform/x86/intel/pmc/core.c +1 -0
index 8ee15a7252c7..c3ec5dc88bbf 100644
@@ -1911,6 +1911,7 @@ static const struct x86_cpu_id intel_pmc_core_ids[] = {
 	X86_MATCH_INTEL_FAM6_MODEL(ATOM_TREMONT_L,	&icl_reg_map),
 	X86_MATCH_INTEL_FAM6_MODEL(ROCKETLAKE,		&tgl_reg_map),
 	X86_MATCH_INTEL_FAM6_MODEL(ALDERLAKE_L,		&tgl_reg_map),
+	X86_MATCH_INTEL_FAM6_MODEL(ALDERLAKE_N,		&tgl_reg_map),
 	X86_MATCH_INTEL_FAM6_MODEL(ALDERLAKE,		&adl_reg_map),
 	X86_MATCH_INTEL_FAM6_MODEL(RAPTORLAKE_P,        &tgl_reg_map),
 	{}
drivers/platform/x86/thinkpad_acpi.c +23 -27

133 lines not on this page · raw message

drivers/power/supply/power_supply_core.c +12 -12
index fad5890c899e..470253c337c7 100644
@@ -846,17 +846,17 @@ int power_supply_temp2resist_simple(struct power_supply_resistance_temp_table *t
 {
 	int i, high, low;
 
-	/* Break loop at table_len - 1 because that is the highest index */
-	for (i = 0; i < table_len - 1; i++)
+	for (i = 0; i < table_len; i++)
 		if (temp > table[i].temp)
 			break;
 
 	/* The library function will deal with high == low */
-	if ((i == 0) || (i == (table_len - 1)))
-		high = i;
+	if (i == 0)
+		high = low = i;
+	else if (i == table_len)
+		high = low = i - 1;
 	else
-		high = i - 1;
-	low = i;
+		high = (low = i) - 1;
 
 	return fixp_linear_interpolate(table[low].temp,
 				       table[low].resistance,
@@ -958,17 +958,17 @@ int power_supply_ocv2cap_simple(struct power_supply_battery_ocv_table *table,
 {
 	int i, high, low;
 
-	/* Break loop at table_len - 1 because that is the highest index */
-	for (i = 0; i < table_len - 1; i++)
+	for (i = 0; i < table_len; i++)
 		if (ocv > table[i].ocv)
 			break;
 
 	/* The library function will deal with high == low */
-	if ((i == 0) || (i == (table_len - 1)))
-		high = i - 1;
+	if (i == 0)
+		high = low = i;
+	else if (i == table_len)
+		high = low = i - 1;
 	else
-		high = i; /* i.e. i == 0 */
-	low = i;
+		high = (low = i) - 1;
 
 	return fixp_linear_interpolate(table[low].ocv,
 				       table[low].capacity,
drivers/s390/crypto/ap_bus.c +1 -1
index fdf16cb70881..eb8645d44a9c 100644
@@ -1410,7 +1410,7 @@ static int __verify_queue_reservations(struct device_driver *drv, void *data)
 	if (ap_drv->in_use) {
 		rc = ap_drv->in_use(ap_perms.apm, newaqm);
 		if (rc)
-			return -EBUSY;
+			rc = -EBUSY;
 	}
 
 	/* release the driver's module */
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c +7 -0
index 7d819fc0395e..eb86afb21aab 100644
@@ -2782,6 +2782,7 @@ static int slave_configure_v3_hw(struct scsi_device *sdev)
 	struct hisi_hba *hisi_hba = shost_priv(shost);
 	struct device *dev = hisi_hba->dev;
 	int ret = sas_slave_configure(sdev);
+	unsigned int max_sectors;
 
 	if (ret)
 		return ret;
@@ -2799,6 +2800,12 @@ static int slave_configure_v3_hw(struct scsi_device *sdev)
 		}
 	}
 
+	/* Set according to IOMMU IOVA caching limit */
+	max_sectors = min_t(size_t, queue_max_hw_sectors(sdev->request_queue),
+			    (PAGE_SIZE * 32) >> SECTOR_SHIFT);
+
+	blk_queue_max_hw_sectors(sdev->request_queue, max_sectors);
+
 	return 0;
 }
 
drivers/scsi/megaraid/megaraid_sas_base.c +3 -0
index db6793608447..f5deb0e561a9 100644
@@ -3195,6 +3195,9 @@ static int megasas_map_queues(struct Scsi_Host *shost)
 	qoff += map->nr_queues;
 	offset += map->nr_queues;
 
+	/* we never use READ queue, so can't cheat blk-mq */
+	shost->tag_set.map[HCTX_TYPE_READ].nr_queues = 0;
+
 	/* Setup Poll hctx */
 	map = &shost->tag_set.map[HCTX_TYPE_POLL];
 	map->nr_queues = instance->iopoll_q_count;
drivers/scsi/ufs/ufshcd.c +1 -1
index 4c9eb4be449c..452ad0612067 100644
@@ -5722,7 +5722,7 @@ int ufshcd_wb_toggle(struct ufs_hba *hba, bool enable)
 	}
 
 	hba->dev_info.wb_enabled = enable;
-	dev_info(hba->dev, "%s Write Booster %s\n",
+	dev_dbg(hba->dev, "%s Write Booster %s\n",
 			__func__, enable ? "enabled" : "disabled");
 
 	return ret;
drivers/soc/ixp4xx/ixp4xx-npe.c +1 -1
index 613935cb6a48..58240e320c13 100644
@@ -758,7 +758,7 @@ static const struct of_device_id ixp4xx_npe_of_match[] = {
 static struct platform_driver ixp4xx_npe_driver = {
 	.driver = {
 		.name           = "ixp4xx-npe",
-		.of_match_table = of_match_ptr(ixp4xx_npe_of_match),
+		.of_match_table = ixp4xx_npe_of_match,
 	},
 	.probe = ixp4xx_npe_probe,
 	.remove = ixp4xx_npe_remove,
drivers/spi/spi-amd.c +8 -0
index cba6a4486c24..efdcbe6c4c26 100644
@@ -33,6 +33,7 @@
 #define AMD_SPI_RX_COUNT_REG	0x4B
 #define AMD_SPI_STATUS_REG	0x4C
 
+#define AMD_SPI_FIFO_SIZE	70
 #define AMD_SPI_MEM_SIZE	200
 
 /* M_CMD OP codes for SPI */
@@ -270,6 +271,11 @@ static int amd_spi_master_transfer(struct spi_master *master,
 	return 0;
 }
 
+static size_t amd_spi_max_transfer_size(struct spi_device *spi)
+{
+	return AMD_SPI_FIFO_SIZE;
+}
+
 static int amd_spi_probe(struct platform_device *pdev)
 {
 	struct device *dev = &pdev->dev;
@@ -302,6 +308,8 @@ static int amd_spi_probe(struct platform_device *pdev)
 	master->flags = SPI_MASTER_HALF_DUPLEX;
 	master->setup = amd_spi_master_setup;
 	master->transfer_one_message = amd_spi_master_transfer;
+	master->max_transfer_size = amd_spi_max_transfer_size;
+	master->max_message_size = amd_spi_max_transfer_size;
 
 	/* Register the controller with SPI framework */
 	err = devm_spi_register_master(dev, master);
drivers/tee/tee_core.c +1 -1
index 8aa1a4836b92..cebe4963ad87 100644
@@ -1075,7 +1075,7 @@ EXPORT_SYMBOL_GPL(tee_device_unregister);
 /**
  * tee_get_drvdata() - Return driver_data pointer
  * @teedev:	Device containing the driver_data pointer
- * @returns the driver_data pointer supplied to tee_register().
+ * @returns the driver_data pointer supplied to tee_device_alloc().
  */
 void *tee_get_drvdata(struct tee_device *teedev)
 {
drivers/tty/pty.c +2 -12
index 74bfabe5b453..752dab3356d7 100644
@@ -111,21 +111,11 @@ static void pty_unthrottle(struct tty_struct *tty)
 static int pty_write(struct tty_struct *tty, const unsigned char *buf, int c)
 {
 	struct tty_struct *to = tty->link;
-	unsigned long flags;
 
-	if (tty->flow.stopped)
+	if (tty->flow.stopped || !c)
 		return 0;
 
-	if (c > 0) {
-		spin_lock_irqsave(&to->port->lock, flags);
-		/* Stuff the data into the input queue of the other end */
-		c = tty_insert_flip_string(to->port, buf, c);
-		spin_unlock_irqrestore(&to->port->lock, flags);
-		/* And shovel */
-		if (c)
-			tty_flip_buffer_push(to->port);
-	}
-	return c;
+	return tty_insert_flip_string_and_push_buffer(to->port, buf, c);
 }
 
 /**
drivers/tty/serial/8250/8250_core.c +4 -0
index 01d30f6ed8fb..cbad398f48b2 100644
@@ -23,6 +23,7 @@
 #include <linux/sysrq.h>
 #include <linux/delay.h>
 #include <linux/platform_device.h>
+#include <linux/pm_runtime.h>
 #include <linux/tty.h>
 #include <linux/ratelimit.h>
 #include <linux/tty_flip.h>
@@ -560,6 +561,9 @@ serial8250_register_ports(struct uart_driver *drv, struct device *dev)
 
 		up->port.dev = dev;
 
+		if (uart_console_enabled(&up->port))
+			pm_runtime_get_sync(up->port.dev);
+
 		serial8250_apply_quirks(up);
 		uart_add_one_port(drv, &up->port);
 	}
drivers/tty/serial/8250/8250_port.c +3 -1
index 7e295d2701b2..ddaf35daf316 100644
@@ -2971,8 +2971,10 @@ static int serial8250_request_std_resource(struct uart_8250_port *up)
 	case UPIO_MEM32BE:
 	case UPIO_MEM16:
 	case UPIO_MEM:
-		if (!port->mapbase)
+		if (!port->mapbase) {
+			ret = -EINVAL;
 			break;
+		}
 
 		if (!request_mem_region(port->mapbase, size, "serial")) {
 			ret = -EBUSY;
drivers/tty/serial/amba-pl011.c +21 -2
index 4d11a3e547f9..e69700275e07 100644
@@ -1339,6 +1339,15 @@ static void pl011_stop_rx(struct uart_port *port)
 	pl011_dma_rx_stop(uap);
 }
 
+static void pl011_throttle_rx(struct uart_port *port)
+{
+	unsigned long flags;
+
+	spin_lock_irqsave(&port->lock, flags);
+	pl011_stop_rx(port);
+	spin_unlock_irqrestore(&port->lock, flags);
+}
+
 static void pl011_enable_ms(struct uart_port *port)
 {
 	struct uart_amba_port *uap =
@@ -1760,9 +1769,10 @@ static int pl011_allocate_irq(struct uart_amba_port *uap)
  */
 static void pl011_enable_interrupts(struct uart_amba_port *uap)
 {
+	unsigned long flags;
 	unsigned int i;
 
-	spin_lock_irq(&uap->port.lock);
+	spin_lock_irqsave(&uap->port.lock, flags);
 
 	/* Clear out any spuriously appearing RX interrupts */
 	pl011_write(UART011_RTIS | UART011_RXIS, uap, REG_ICR);
@@ -1784,7 +1794,14 @@ static void pl011_enable_interrupts(struct uart_amba_port *uap)
 	if (!pl011_dma_rx_running(uap))
 		uap->im |= UART011_RXIM;
 	pl011_write(uap->im, uap, REG_IMSC);
-	spin_unlock_irq(&uap->port.lock);
+	spin_unlock_irqrestore(&uap->port.lock, flags);
+}
+
+static void pl011_unthrottle_rx(struct uart_port *port)
+{
+	struct uart_amba_port *uap = container_of(port, struct uart_amba_port, port);
+
+	pl011_enable_interrupts(uap);
 }
 
 static int pl011_startup(struct uart_port *port)
@@ -2211,6 +2228,8 @@ static const struct uart_ops amba_pl011_pops = {
 	.stop_tx	= pl011_stop_tx,
[… more lines in the raw message]

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

drivers/tty/serial/mvebu-uart.c +13 -12
index 0429c2a54290..93489fe334d0 100644

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

drivers/tty/serial/samsung_tty.c +2 -3
index e1585fbae909..817ea46af291 100644

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

drivers/tty/serial/serial_core.c +0 -5
index 6a8963caf954..95d8d1fcd543 100644

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

drivers/tty/serial/stm32-usart.c +2 -0
index 3c551fd4f3ff..0fb535b9505c 100644

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

drivers/tty/tty.h +3 -0
index b710c5ef89ab..f310a8274df1 100644

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

drivers/tty/tty_buffer.c +41 -5

46 lines not on this page · raw message

drivers/tty/vt/vt.c +1 -1
index f8c87c4d7399..dfc1f4b445f3 100644

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

drivers/usb/dwc3/gadget.c +3 -1
index 0a6633e7edce..f46fc02669a8 100644

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

drivers/usb/serial/ftdi_sio.c +3 -0
index 49c08f07c969..10d120589cbd 100644

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

drivers/usb/serial/ftdi_sio_ids.h +6 -0
index d1a9564697a4..4e92c165c86b 100644

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

drivers/usb/typec/class.c +1 -0
index ee0e520707dd..c4724750c81a 100644

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

drivers/vdpa/mlx5/net/mlx5_vnet.c +20 -11
index c290386aa2f3..ae4cfbd927fd 100644

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

drivers/vdpa/vdpa_user/vduse_dev.c +37 -23

60 lines not on this page · raw message

drivers/video/fbdev/core/fbmem.c +12 -0
index 85de02d0d3aa..643383d74edc 100644

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

drivers/virtio/virtio_mmio.c +26 -0
index 1dd396d4bebb..fe696aafaed8 100644

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

drivers/xen/gntdev.c +4 -2
index 4b56c39f766d..84b143eef395 100644

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

fs/afs/file.c +1 -1
index fab8324833ba..a8a5a91dc375 100644

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

fs/btrfs/inode.c +13 -1
index 861b9748a0d9..9ae79342631a 100644

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

fs/btrfs/zoned.c +8 -5
index b5236f5afca7..5091d679a602 100644

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

fs/ceph/addr.c +6 -5
index 11dbb1133a21..ae567fb7f65a 100644

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

fs/cifs/smb2pdu.c +7 -6
index 6a8a00f28b19..2e6c0f4d8449 100644

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

fs/exec.c +1 -1
index 75eb6e0ee7b2..5a75e92b1a0a 100644

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

fs/ksmbd/transport_tcp.c +1 -1
index 8fef9de787d3..143bba4e4db8 100644

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

fs/lockd/svcsubs.c +7 -7
index 0a22a2faf552..e1c4617de771 100644

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

fs/netfs/buffered_read.c +10 -7
index e8e3359a4c54..8d03826c2b15 100644

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

fs/nfsd/nfs4xdr.c +9 -0
index da92e7d2ab6a..264c3a4629c9 100644

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

fs/nfsd/nfsd.h +2 -1
index 4fc1fd639527..727754d56243 100644

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

fs/nilfs2/nilfs.h +3 -0
index 1344f7d475d3..aecda4fc95f5 100644

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

fs/remap_range.c +2 -1
index e112b5424cdb..881a306ee247 100644

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

include/linux/cgroup-defs.h +2 -1
index 1bfcfb1af352..d4427d0a0e18 100644

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

include/linux/kexec.h +6 -0
index fcd5035209f1..8d573baaab29 100644

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

include/linux/netfs.h +1 -1
index a9c6f73877ec..95dadf0cd4b8 100644

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

include/linux/nvme.h +2 -0
index f626a445d1a8..99b1b56f0cd3 100644

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

include/linux/reset.h +1 -1
index 8a21b5756c3e..514ddf003efc 100644

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

include/linux/sched/task.h +1 -1
index 4492266935dd..d8d9ce5b3bf7 100644

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

include/linux/serial_core.h +5 -0
index d4828e69087a..ca57d686d4d1 100644

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

include/linux/sysfb.h +17 -5
index b0dcfa26d07b..8ba8b5be5567 100644

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

include/net/netfilter/nf_conntrack.h +7 -2
index b08b70989d2c..28672a944499 100644

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

include/net/netfilter/nf_conntrack_ecache.h +2 -2
index 6c4c490a3e34..b57d73785e4d 100644

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

include/net/netfilter/nf_tables.h +19 -11
index 279ae0fff7ad..64cf655c818c 100644

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

include/net/netns/conntrack.h +0 -1
index 0294f3d473af..e985a3010b89 100644

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

include/net/raw.h +1 -1
index 8ad8df594853..c51a635671a7 100644

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

include/net/sock.h +1 -1
index 3c4fb8f03fd9..6bef0ffb1e7b 100644

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

include/net/tls.h +2 -2
index b6968a5b5538..e8764d3da41a 100644

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

include/trace/events/sock.h +4 -2
index 12c315782766..777ee6cbe933 100644

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

kernel/cgroup/cgroup.c +23 -14
index adb820e98f24..e6cd7e17bd25 100644

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

kernel/exit.c +1 -1
index f072959fcab7..64c938ce36fe 100644

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

kernel/kexec_file.c +10 -1
index c108a2a88754..bb0fb63f563c 100644

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

kernel/signal.c +4 -4
index e43bc2a692f5..75cc2339d83e 100644

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

kernel/sysctl.c +31 -26

57 lines not on this page · raw message

kernel/time/posix-timers.c +14 -5
index 1cd10b102c51..5dead89308b7 100644

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

kernel/trace/trace.c +6 -5
index 114c31bdf8f9..c0c98b0c86e7 100644

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

kernel/trace/trace_events_hist.c +2 -0
index a0e41906d9ce..217e03e477f6 100644

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

mm/damon/vaddr.c +1 -2
index b2ec0aa1ff45..64456e775e8f 100644

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

mm/memory.c +14 -13
index 76e3af9639d9..e176ee386238 100644

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

mm/sparse-vmemmap.c +8 -0
index 8aecd6b3896c..365e47465ca0 100644

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

mm/userfaultfd.c +4 -1
index e9bb6db002aa..128b17fe9812 100644

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

net/8021q/vlan_netlink.c +7 -3
index 53b1955b027f..214532173536 100644

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

net/bridge/br_netfilter_hooks.c +18 -3
index 4fd882686b04..ff4779036649 100644

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

net/core/filter.c +0 -1
index af1e77f2f24a..6391c1885bca 100644

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

net/ipv4/af_inet.c +2 -2
index 72fde2888ad2..98bc180563d1 100644

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

net/ipv4/cipso_ipv4.c +7 -5
index 62d5f99760aa..6cd3b6c559f0 100644

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

net/ipv4/fib_semantics.c +2 -2
index ccb62038f6a4..720f65f7bd0b 100644

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

net/ipv4/fib_trie.c +1 -1
index fb0e49c36c2e..43a496272227 100644

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

net/ipv4/icmp.c +11 -9
index 72a375c7f417..c13ceda9ce5d 100644

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

net/ipv4/inet_timewait_sock.c +2 -1
index 0ec501845cb3..47ccc343c9fb 100644

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

net/ipv4/inetpeer.c +8 -4
index da21dfce24d7..e9fed83e9b3c 100644

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

net/ipv4/nexthop.c +3 -2
index e459a391e607..853a75a8fbaf 100644

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

net/ipv4/syncookies.c +1 -1
index f33c31dd7366..b387c4835155 100644

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

net/ipv4/sysctl_net_ipv4.c +12 -0
index ad80d180b60b..ffe0264a51b8 100644

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

net/ipv4/tcp.c +2 -1
index e31cf137c614..f2fd1779d925 100644

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

net/ipv4/tcp_input.c +1 -1
index 6b8fcf79688b..2d71bcfcc759 100644

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

net/ipv4/tcp_output.c +2 -2
index 6b00c17c72aa..34249469e361 100644

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

net/ipv6/icmp.c +1 -1
index e6b978ea0e87..26554aa6fc1b 100644

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

net/ipv6/route.c +1 -1
index 83786de847ab..a87b96a256af 100644

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

net/ipv6/seg6_iptunnel.c +4 -1
index d64855010948..e756ba705fd9 100644

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

net/ipv6/seg6_local.c +0 -2
index 98a34287439c..2cd4a8d3b30a 100644

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

net/mac80211/wme.c +2 -2
index 62c6733e0792..d50480b31750 100644

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

net/mptcp/protocol.c +2 -2
index b0fb1fc0bd4a..b52fd250cb3a 100644

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

net/netfilter/nf_conntrack_core.c +54 -32

86 lines not on this page · raw message

net/netfilter/nf_conntrack_ecache.c +68 -71

139 lines not on this page · raw message

net/netfilter/nf_conntrack_netlink.c +89 -36

125 lines not on this page · raw message

net/netfilter/nf_conntrack_standalone.c +3 -0
index 55aa55b252b2..48812dda273b 100644

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

net/netfilter/nf_log_syslog.c +4 -4
index 13234641cdb3..7000e069bc07 100644

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

net/netfilter/nf_tables_api.c +51 -21

72 lines not on this page · raw message

net/netfilter/nf_tables_core.c +21 -3
index 53f40e473855..3ddce24ac76d 100644

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

net/netfilter/nf_tables_trace.c +24 -20

44 lines not on this page · raw message

net/tipc/socket.c +1 -0
index 17f8c523e33b..43509c7e90fc 100644

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

net/tls/tls_device.c +2 -2
index 3919fe2c58c5..3a61bb594544 100644

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

net/tls/tls_main.c +6 -1
index 5c9697840ef7..13058b0ee4cd 100644

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

security/integrity/evm/evm_crypto.c +2 -5
index 0450d79afdc8..b862f0f919bf 100644

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

security/integrity/ima/ima_appraise.c +2 -1
index 17232bbfb9f9..ee6a0f8879e4 100644

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

security/integrity/ima/ima_crypto.c +1 -0
index a7206cc1d7d1..64499056648a 100644

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

security/integrity/ima/ima_efi.c +2 -0
index 71786d01946f..9db66fe310d4 100644

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

sound/pci/hda/patch_conexant.c +1 -0
index 0b7d500249f6..8c68e6e1387e 100644

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

sound/pci/hda/patch_realtek.c +20 -0
index 45f5db25a77e..b7f1f2fb60cb 100644

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

sound/soc/codecs/cs35l41-lib.c +8 -2
index 17cf782f39af..538b5c4d3abf 100644

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

sound/soc/codecs/cs35l41.c +6 -6
index 6b784a62df0c..20c76a53a508 100644

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

sound/soc/codecs/cs47l15.c +4 -1
index 391fd7da331f..1c7d52bef893 100644

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

sound/soc/codecs/madera.c +10 -4
index 272041c6236a..b9f19fbd2911 100644

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

sound/soc/codecs/max98373-sdw.c +11 -1
index f47e956d4f55..97b64477dde6 100644

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

sound/soc/codecs/rt1308-sdw.c +11 -0
index 1ef836a68a56..e42a63ee07f4 100644

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

sound/soc/codecs/rt1316-sdw.c +11 -0
index c66d7b20cb4d..1e04aa8ab166 100644

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

sound/soc/codecs/rt5682-sdw.c +4 -1
index 248257a2e4e0..f04e18c32489 100644

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

sound/soc/codecs/rt700-sdw.c +5 -1
index bda594899664..f7439e40ca8b 100644

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

sound/soc/codecs/rt700.c +6 -8
index 360d61a36c35..3de3406d653e 100644

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

sound/soc/codecs/rt711-sdca-sdw.c +8 -1
index aaf5af153d3f..a085b2f530aa 100644

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

sound/soc/codecs/rt711-sdca.c +7 -11
index 9d59e653b941..5ad53bbc8528 100644

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

sound/soc/codecs/rt711-sdw.c +8 -1
index bda2cc9439c9..4fe68bcf2a7c 100644

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

sound/soc/codecs/rt711.c +7 -9
index 9958067e80f1..9df800abfc2d 100644

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

sound/soc/codecs/rt715-sdca-sdw.c +12 -0
index a5c673f43d82..0f4354eafef2 100644

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

sound/soc/codecs/rt715-sdw.c +12 -0
index a7b21b03c08b..b047bf87a100 100644

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

sound/soc/codecs/sgtl5000.c +9 -0
index 8eebf27d0ea2..281785a9301b 100644

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

sound/soc/codecs/sgtl5000.h +1 -0
index 56ec5863f250..3a808c762299 100644

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

sound/soc/codecs/tas2764.c +28 -18

46 lines not on this page · raw message

sound/soc/codecs/tas2764.h +2 -4
index 67d6fd903c42..f015f22a083b 100644

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

sound/soc/codecs/wcd9335.c +7 -1
index 1e60db4056ad..aa685980a97b 100644

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

sound/soc/codecs/wcd938x.c +12 -0
index 898b2887fa63..088cfda767cc 100644

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

sound/soc/codecs/wm5110.c +6 -2
index 4973ba1ed779..4ab7a672f8de 100644

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

sound/soc/codecs/wm_adsp.c +1 -1
index 9cfd4f18493f..d3ecff3bdef2 100644

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

sound/soc/intel/boards/bytcr_wm5102.c +11 -2
index 8d8e96e3cd2d..f6d0cef1b28c 100644

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

sound/soc/intel/boards/sof_sdw.c +29 -22

51 lines not on this page · raw message

sound/soc/intel/skylake/skl-nhlt.c +27 -13
index 2439a574ac2f..deb7b820325e 100644

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

sound/soc/soc-dapm.c +5 -0
index 869c76506b66..a8e842e02cdc 100644

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

sound/soc/soc-ops.c +2 -2
index e693070f51fe..d867f449d82d 100644

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

sound/soc/sof/intel/hda-dsp.c +9 -1
index 8ddde60c56b3..68a8074c956a 100644

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

sound/soc/sof/intel/hda-loader.c +5 -5
index 2ac5d9d0719b..88d23924e1bf 100644

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

sound/soc/sof/intel/hda.h +1 -0
index 196494ba1245..db066d094afa 100644

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

sound/usb/quirks-table.h +248 -0

248 lines not on this page · raw message

sound/usb/quirks.c +9 -0
index 12ce69b04f63..968d90caeefa 100644

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

tools/testing/selftests/wireguard/qemu/Makefile +2 -3
index bca07b93eeb0..fd060c5d6f39 100644

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

tools/testing/selftests/wireguard/qemu/arch/arm.config +1 -0
index fc7959bef9c2..0579c66be83e 100644

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

tools/testing/selftests/wireguard/qemu/arch/armeb.config +1 -0
index f3066be81c19..2a3307bbe534 100644

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

tools/testing/selftests/wireguard/qemu/arch/i686.config +1 -0
index 6d90892a85a2..cd864b9be6fb 100644

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

tools/testing/selftests/wireguard/qemu/arch/m68k.config +1 -0
index 82c925e49beb..9639bfe06074 100644

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

tools/testing/selftests/wireguard/qemu/arch/mips.config +1 -0
index d7ec63c17b30..2a84402353ab 100644

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

tools/testing/selftests/wireguard/qemu/arch/mipsel.config +1 -0
index 18a498293737..56146a101e7e 100644

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

tools/testing/selftests/wireguard/qemu/arch/powerpc.config +1 -0
index 5e04882e8e35..174a9ffe2a36 100644

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

tools/testing/selftests/wireguard/qemu/init.c +11 -0
index 2a0f48fac925..542c34b00eb0 100644

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

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

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