Skip to contentSkip to conversation

Linux 6.1.21

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Mar 22, 2023 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 6.1.21 kernel.

All users of the 6.1 kernel series must upgrade.

The updated 6.1.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.1.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/filesystems/vfs.rst                                  |    2 
 Makefile                                                           |    2 
 arch/loongarch/kernel/time.c                                       |   11 
 arch/powerpc/Makefile                                              |   26 -
 arch/powerpc/boot/Makefile                                         |   14 
 arch/powerpc/mm/fault.c                                            |   11 
 arch/powerpc/platforms/Kconfig.cputype                             |   20 
 arch/riscv/include/asm/mmu.h                                       |    2 
 arch/riscv/include/asm/tlbflush.h                                  |   18 
 arch/riscv/mm/context.c                                            |   40 -
 arch/riscv/mm/tlbflush.c                                           |   28 -
 arch/s390/boot/ipl_report.c                                        |    8 
 arch/s390/pci/pci.c                                                |   16 
 arch/s390/pci/pci_bus.c                                            |   12 
 arch/s390/pci/pci_bus.h                                            |    3 
 arch/x86/Makefile.um                                               |    6 
 arch/x86/include/asm/sev-common.h                                  |    3 
 arch/x86/include/asm/svm.h                                         |   12 
 arch/x86/kernel/cpu/mce/core.c                                     |    1 
 arch/x86/kernel/cpu/resctrl/ctrlmondata.c                          |    7 
 arch/x86/kernel/cpu/resctrl/internal.h                             |    1 
 arch/x86/kernel/cpu/resctrl/rdtgroup.c                             |   25 +
 arch/x86/kernel/ftrace_64.S                                        |    2 
 arch/x86/kernel/sev.c                                              |   26 -
 arch/x86/kvm/svm/avic.c                                            |   26 -
 arch/x86/kvm/vmx/nested.c                                          |   10 
 arch/x86/mm/mem_encrypt_identity.c                                 |    3 
 block/blk-mq.c                                                     |    5 
 drivers/acpi/pptt.c                                                |    5 
 drivers/block/loop.c                                               |   25 -
 drivers/block/null_blk/main.c                                      |    6 
 drivers/block/sunvdc.c                                             |    2 
 drivers/clk/Kconfig                                                |    2 
 drivers/cpuidle/cpuidle-psci-domain.c                              |    3 
 drivers/firmware/xilinx/zynqmp.c                                   |    2 
 drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c                            |    6 
 drivers/gpu/drm/amd/amdkfd/kfd_device.c                            |   11 
 drivers/gpu/drm/amd/amdkfd/kfd_events.c                            |    9 
 drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hwseq.c                 |    3 
 drivers/gpu/drm/amd/display/dc/dcn32/dcn32_resource.c              |    6 
 drivers/gpu/drm/amd/display/dc/dml/dcn30/display_mode_vba_30.c     |    5 
 drivers/gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu13_driver_if_v13_0_4.h |    4 
 drivers/gpu/drm/amd/pm/swsmu/inc/smu_v13_0.h                       |    2 
 drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c            |   43 +-
 drivers/gpu/drm/drm_gem.c                                          |    9 
 drivers/gpu/drm/drm_gem_shmem_helper.c                             |    9 
 drivers/gpu/drm/i915/display/intel_display_types.h                 |    2 
 drivers/gpu/drm/i915/display/intel_psr.c                           |   78 +++
 drivers/gpu/drm/i915/display/intel_snps_phy.c                      |   62 +++
 drivers/gpu/drm/i915/gt/intel_sseu.h                               |    2 
 drivers/gpu/drm/i915/i915_active.c                                 |   25 -
 drivers/gpu/drm/meson/meson_vpp.c                                  |    2 
 drivers/gpu/drm/msm/msm_gem_shrinker.c                             |   11 
 drivers/gpu/drm/panfrost/panfrost_mmu.c                            |    2 
 drivers/gpu/drm/sun4i/sun4i_drv.c                                  |    6 
 drivers/gpu/drm/ttm/ttm_device.c                                   |    2 
 drivers/gpu/drm/virtio/virtgpu_vq.c                                |    4 
 drivers/hwmon/adt7475.c                                            |    8 
 drivers/hwmon/ina3221.c                                            |    2 
 drivers/hwmon/ltc2992.c                                            |    1 
 drivers/hwmon/pmbus/adm1266.c                                      |    1 
 drivers/hwmon/pmbus/ucd9000.c                                      |   75 +++
 drivers/hwmon/tmp513.c                                             |    2 
 drivers/hwmon/xgene-hwmon.c                                        |    1 
 drivers/interconnect/core.c                                        |   68 ++-
 drivers/interconnect/imx/imx.c                                     |   20 
 drivers/interconnect/qcom/icc-rpm.c                                |   29 -
 drivers/interconnect/qcom/icc-rpmh.c                               |   30 -
 drivers/interconnect/qcom/msm8974.c                                |   20 
 drivers/interconnect/qcom/osm-l3.c                                 |   14 
 drivers/interconnect/samsung/exynos.c                              |   26 -
 drivers/md/Kconfig                                                 |    4 
 drivers/media/i2c/m5mols/m5mols_core.c                             |    2 
 drivers/memory/tegra/mc.c                                          |   16 
 drivers/memory/tegra/tegra124-emc.c                                |   12 
 drivers/memory/tegra/tegra20-emc.c                                 |   12 
 drivers/memory/tegra/tegra30-emc.c                                 |   12 
 drivers/mmc/host/atmel-mci.c                                       |    3 
 drivers/mmc/host/sdhci_am654.c                                     |    2 
 drivers/net/bonding/bond_main.c                                    |   23 -
 drivers/net/dsa/microchip/ksz_common.c                             |    2 
 drivers/net/dsa/mt7530.c                                           |   64 +--
 drivers/net/dsa/mv88e6xxx/chip.c                                   |   16 
 drivers/net/ethernet/aquantia/atlantic/aq_ring.c                   |   28 +
 drivers/net/ethernet/i825xx/sni_82596.c                            |   14 
 drivers/net/ethernet/intel/i40e/i40e_main.c                        |    1 
 drivers/net/ethernet/intel/ice/ice.h                               |   14 
 drivers/net/ethernet/intel/ice/ice_main.c                          |   19 
 drivers/net/ethernet/intel/ice/ice_xsk.c                           |    5 
 drivers/net/ethernet/mellanox/mlx5/core/en.h                       |    1 
 drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c                |    2 
 drivers/net/ethernet/mellanox/mlx5/core/en_accel/macsec.c          |    2 
 drivers/net/ethernet/mellanox/mlx5/core/en_main.c                  |    4 
 drivers/net/ethernet/mellanox/mlx5/core/en_rep.c                   |    1 
 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c                    |   20 
 drivers/net/ethernet/mellanox/mlx5/core/en_tc.h                    |    2 
 drivers/net/ethernet/mellanox/mlx5/core/esw/indir_table.c          |  203 +---------
 drivers/net/ethernet/mellanox/mlx5/core/esw/indir_table.h          |    4 
 drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c         |   31 -
 drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c              |    1 
 drivers/net/ethernet/mellanox/mlx5/core/main.c                     |    4 
 drivers/net/ethernet/mellanox/mlx5/core/pagealloc.c                |   22 -
 drivers/net/ethernet/mellanox/mlxsw/spectrum.c                     |    2 
 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c              |   14 
 drivers/net/ethernet/qlogic/qed/qed_dev.c                          |    5 
 drivers/net/ethernet/qlogic/qed/qed_mng_tlv.c                      |    2 
 drivers/net/ethernet/renesas/ravb_main.c                           |   12 
 drivers/net/ethernet/renesas/sh_eth.c                              |   12 
 drivers/net/ethernet/sun/ldmvsw.c                                  |    3 
 drivers/net/ethernet/sun/sunvnet.c                                 |    3 
 drivers/net/ipvlan/ipvlan_l3s.c                                    |    1 
 drivers/net/phy/nxp-c45-tja11xx.c                                  |    2 
 drivers/net/phy/smsc.c                                             |    5 
 drivers/net/usb/smsc75xx.c                                         |    7 
 drivers/net/veth.c                                                 |    6 
 drivers/nfc/pn533/usb.c                                            |    1 
 drivers/nfc/st-nci/ndlc.c                                          |    6 
 drivers/nvme/host/core.c                                           |   28 -
 drivers/nvme/host/pci.c                                            |    2 
 drivers/nvme/target/core.c                                         |    4 
 drivers/pci/bus.c                                                  |   21 +
 drivers/scsi/hosts.c                                               |    3 
 drivers/scsi/mpi3mr/mpi3mr.h                                       |    5 
 drivers/scsi/mpi3mr/mpi3mr_fw.c                                    |   71 ++-
 drivers/scsi/mpi3mr/mpi3mr_os.c                                    |   25 +
 drivers/scsi/mpi3mr/mpi3mr_transport.c                             |    5 
 drivers/scsi/mpt3sas/mpt3sas_transport.c                           |   14 
 drivers/scsi/scsi.c                                                |    3 
 drivers/scsi/scsi_devinfo.c                                        |    3 
 drivers/scsi/scsi_scan.c                                           |    3 
 drivers/soc/mediatek/mtk-svs.c                                     |    6 
 drivers/tty/serial/8250/8250_em.c                                  |    4 
 drivers/tty/serial/8250/8250_fsl.c                                 |    4 
 drivers/tty/serial/8250/Kconfig                                    |    3 
 drivers/tty/serial/Kconfig                                         |    2 
 drivers/tty/serial/fsl_lpuart.c                                    |   12 
 drivers/vdpa/mlx5/core/mlx5_vdpa.h                                 |    1 
 drivers/vdpa/mlx5/net/mlx5_vnet.c                                  |    6 
 drivers/vdpa/vdpa_sim/vdpa_sim.c                                   |   13 
 drivers/vdpa/virtio_pci/vp_vdpa.c                                  |    2 
 drivers/vhost/vdpa.c                                               |    3 
 drivers/video/fbdev/chipsfb.c                                      |   14 
 drivers/video/fbdev/core/fb_defio.c                                |   17 
 drivers/video/fbdev/stifb.c                                        |   27 +
 drivers/virt/coco/sev-guest/sev-guest.c                            |  128 +++---
 fs/cifs/smb2inode.c                                                |   31 +
 fs/cifs/smb2transport.c                                            |    2 
 fs/cifs/transport.c                                                |   21 -
 fs/ext4/inode.c                                                    |   18 
 fs/ext4/namei.c                                                    |    4 
 fs/ext4/super.c                                                    |    7 
 fs/ext4/xattr.c                                                    |   11 
 fs/jffs2/file.c                                                    |   15 
 fs/ocfs2/aops.c                                                    |   19 
 include/drm/drm_bridge.h                                           |    4 
 include/drm/drm_gem.h                                              |    4 
 include/linux/blk-mq.h                                             |    6 
 include/linux/fb.h                                                 |    1 
 include/linux/interconnect-provider.h                              |   12 
 include/linux/netdevice.h                                          |    6 
 include/linux/pci.h                                                |    1 
 include/linux/sh_intc.h                                            |    5 
 include/linux/tracepoint.h                                         |   15 
 include/scsi/scsi_device.h                                         |    2 
 include/scsi/scsi_devinfo.h                                        |    6 
 io_uring/msg_ring.c                                                |    4 
 kernel/events/core.c                                               |    2 
 kernel/trace/ftrace.c                                              |    3 
 kernel/trace/trace.c                                               |    2 
 kernel/trace/trace_events_hist.c                                   |    3 
 kernel/trace/trace_hwlat.c                                         |    7 
 mm/huge_memory.c                                                   |    6 
 mm/mincore.c                                                       |    2 
 net/9p/client.c                                                    |    2 
 net/dsa/slave.c                                                    |    9 
 net/ipv4/fib_frontend.c                                            |    3 
 net/ipv4/inet_hashtables.c                                         |    8 
 net/ipv4/ip_tunnel.c                                               |   12 
 net/ipv4/tcp_output.c                                              |    2 
 net/ipv6/ip6_tunnel.c                                              |    4 
 net/iucv/iucv.c                                                    |    2 
 net/mptcp/pm_netlink.c                                             |   16 
 net/mptcp/subflow.c                                                |   12 
 net/netfilter/nft_masq.c                                           |    2 
 net/netfilter/nft_nat.c                                            |    2 
 net/netfilter/nft_redir.c                                          |    4 
 net/smc/smc_cdc.c                                                  |    3 
 net/smc/smc_core.c                                                 |    2 
 net/wireless/nl80211.c                                             |   18 
 net/xfrm/xfrm_state.c                                              |    5 
 scripts/kconfig/confdata.c                                         |    6 
 sound/hda/intel-dsp-config.c                                       |    9 
 sound/pci/hda/hda_intel.c                                          |    5 
 sound/pci/hda/patch_realtek.c                                      |    2 
 sound/soc/intel/common/soc-acpi-intel-adl-match.c                  |    2 
 sound/soc/qcom/qdsp6/q6prm.c                                       |    4 
 sound/soc/sof/intel/pci-apl.c                                      |    1 
 sound/soc/sof/intel/pci-cnl.c                                      |    2 
 sound/soc/sof/intel/pci-icl.c                                      |    1 
 sound/soc/sof/intel/pci-mtl.c                                      |    1 
 sound/soc/sof/intel/pci-skl.c                                      |    2 
 sound/soc/sof/intel/pci-tgl.c                                      |    7 
 sound/soc/sof/ipc4-topology.h                                      |    2 
 tools/testing/selftests/lib.mk                                     |    2 
 tools/testing/selftests/net/devlink_port_split.py                  |   36 +
 205 files changed, 1548 insertions(+), 900 deletions(-)

Alex Hung (1):
drm/amd/display: fix shift-out-of-bounds in CalculateVMAndRowBytes

Alexandra Winter (1):
net/iucv: Fix size of interrupt data

Andrea Righi (1):
drm/i915/sseu: fix max_subslices array-index-out-of-bounds access

Ankit Nautiyal (1):

      drm/i915/dg2: Add HDMI pixel clock frequencies 267.30 and 319.89 MHz

Arnd Bergmann (1):
ftrace,kcfi: Define ftrace_stub_graph conditionally

Arınç ÜNAL (2):
net: dsa: mt7530: remove now incorrect comment regarding port 5
net: dsa: mt7530: set PLL frequency and trgmii only when trgmii is used

Ayush Gupta (1):
drm/amd/display: disconnect MPCC only on OTG change

Baokun Li (3):
ext4: fail ext4_iget if special inode unallocated
ext4: update s_journal_inum if it changes after journal replay
ext4: fix task hung in ext4_xattr_delete_inode

Bard Liao (1):
ALSA: hda: intel-dsp-config: add MTL PCI id

Bart Van Assche (2):
scsi: core: Fix a procfs host directory removal regression
loop: Fix use-after-free issues

Biju Das (1):
serial: 8250_em: Fix UART port type

Bjorn Helgaas (1):
ALSA: hda: Match only Intel devices with CONTROLLER_IN_GPU()

Borislav Petkov (AMD) (6):
virt/coco/sev-guest: Check SEV_SNP attribute at probe time virt/coco/sev-guest: Simplify extended guest request handling virt/coco/sev-guest: Remove the disable_vmpck label in handle_guest_request() virt/coco/sev-guest: Carve out the request issuing logic into a helper virt/coco/sev-guest: Do some code style cleanups virt/coco/sev-guest: Convert the sw_exit_info_2 checking to a switch-case

Breno Leitao (1):
tcp: tcp_make_synack() can be called from process context

Budimir Markovic (1):
perf: Fix check before add_event_to_groups() in perf_group_detach()

Błażej Szczygieł (1):
drm/amd/pm: Fix sienna cichlid incorrect OD volage after resume

Chen Zhongjin (1):
ftrace: Fix invalid address access in lookup_rec() when index is 0

Christian Hewitt (1):
drm/meson: fix 1px pink line on GXM when scaling video overlay

Christophe Leroy (4):
powerpc/64: Set default CPU in Kconfig
powerpc: Pass correct CPU reference to assembler
powerpc: Disable CPU unknown by CLANG when CC_IS_CLANG powerpc/64: Replace -mcpu=e500mc64 by -mcpu=e5500

Cindy Lu (1):
vp_vdpa: fix the crash in hot unplug with vp_vdpa

D. Wythe (1):
net/smc: fix NULL sndbuf_desc in smc_cdc_tx_handler()

Damien Le Moal (2):
block: null_blk: Fix handling of fake timeout request
nvmet: avoid potential UAF in nvmet_req_complete()

Dan Carpenter (1):
fbdev: chipsfb: Fix error codes in chipsfb_pci_init()

Daniel Jurgens (1):
net/mlx5: Disable eswitch before waiting for VF pages

Daniil Tatianin (2):
qed/qed_dev: guard against a possible division by zero qed/qed_mng_tlv: correctly zero out ->min instead of ->hour

Dave Ertman (1):
ice: avoid bonding causing auxiliary plug/unplug under RTNL lock

David Gow (1):
rust: arch/um: Disable FP/SIMD instruction to match x86

David Hildenbrand (1):
mm/userfaultfd: propagate uffd-wp bit when PTE-mapping the huge zeropage

Dionna Glaze (1):
virt/coco/sev-guest: Add throttling awareness

Dmitry Osipenko (3):
drm/msm/gem: Prevent blocking within shrinker loop drm/panfrost: Don't sync rpm suspension after mmu flushing drm/shmem-helper: Remove another errant put in error path

Elmer Miroslav Mosher Golovin (1):
nvme-pci: add NVME_QUIRK_BOGUS_NID for Netac NV3000

Emeel Hakim (1):
net/mlx5e: Fix macsec ASO context alignment

Eric Dumazet (1):

      net: tunnels: annotate lockless accesses to dev->needed_headroom

Eric Van Hensbergen (1):
net/9p: fix bug in client create for .L

Eugenio Pérez (2):
vdpa_sim: not reset state in vdpasim_queue_ready
vdpa_sim: set last_used_idx as last_avail_idx in vdpasim_queue_ready

Fedor Pchelkin (1):
nfc: pn533: initialize struct pn533_out_arg properly

Felix Kuehling (1):
drm/amdgpu: Don't resume IOMMU after incomplete init

Francesco Dolcini (1):
mmc: sdhci_am654: lower power-on failed message severity

Gautam Dawar (1):
vhost-vdpa: free iommu domain after last use during cleanup

Geliang Tang (1):
mptcp: add ro_after_init for tcp{,v6}_prot_override

Glenn Washburn (1):
docs: Correct missing "d_" prefix for dentry_operations member d_weak_revalidate

Greg Kroah-Hartman (1):

      Linux 6.1.21

Guillaume Tucker (1):
selftests: fix LLVM build for i386 and x86_64

Guo Ren (1):
riscv: asid: Fixup stale TLB entry cause application crash

Hamidreza H. Fard (1):
ALSA: hda/realtek: Fix the speaker output on Samsung Galaxy Book2 Pro

Heiner Kallweit (1):
net: phy: smsc: bail out in lan87xx_read_status if genphy_read_status fails

Helge Deller (1):
fbdev: stifb: Provide valid pixelclock and add fb_check_var() checks

Herbert Xu (1):
xfrm: Allow transport-mode states with AF_UNSPEC selector

Horatio Zhang (1):
drm/amdgpu: fix ttm_bo calltrace warning in psp_hw_fini

Ido Schimmel (2):
mlxsw: spectrum: Fix incorrect parsing depth after reload
ipv4: Fix incorrect table ID in IOCTL path

Ivan Vecera (1):
i40e: Fix kernel crash during reboot when adapter is in recovery mode

James Houghton (1):
mm: teach mincore_hugetlb about pte markers

Jan Kara (1):
block: do not reverse request order when flushing plug list

Jan Kara via Ocfs2-devel (1):
ocfs2: fix data corruption after failed write

Janusz Krzysztofik (1):
drm/i915/active: Fix misuse of non-idle barriers as fence trackers

Jaska Uimonen (1):
ASoC: SOF: ipc4-topology: set dmic dai index from copier

Jeremy Sowden (4):
netfilter: nft_nat: correct length for loading protocol registers
netfilter: nft_masq: correct length for loading protocol registers
netfilter: nft_redir: correct length for loading protocol registers
netfilter: nft_redir: correct value of inet type .maxattrs

Jeremy Szu (1):
ALSA: hda/realtek: fix speaker, mute/micmute LEDs not work on a HP platform

Jianguo Wu (1):

      ipvlan: Make skb->skb_iif track skb->dev for l3s mode

Johan Hovold (18):
serial: 8250_fsl: fix handle_irq locking
memory: tegra: fix interconnect registration race
memory: tegra20-emc: fix interconnect registration race
memory: tegra124-emc: fix interconnect registration race
memory: tegra30-emc: fix interconnect registration race
interconnect: fix icc_provider_del() error handling
interconnect: fix provider registration API
interconnect: imx: fix registration race
interconnect: fix mem leak when freeing nodes
interconnect: qcom: osm-l3: fix registration race
interconnect: qcom: rpm: fix probe child-node error handling
interconnect: qcom: rpm: fix registration race
interconnect: qcom: rpmh: fix probe child-node error handling
interconnect: qcom: rpmh: fix registration race
interconnect: qcom: msm8974: fix registration race
interconnect: exynos: fix node leak in probe PM QoS error path
interconnect: exynos: fix registration race drm/sun4i: fix missing component unbind on bind errors

Johannes Berg (2):
wifi: nl80211: fix NULL-ptr deref in offchan check
wifi: cfg80211: fix MLO connection ownership

Jouni Högander (1):
drm/i915/psr: Use calculated io and fast wake lines

Jurica Vukadin (1):
kconfig: Update config changed flag before calling callback

Krzysztof Kozlowski (2):
hwmon: tmp512: drop of_match_ptr for ID table
ASoC: qcom: q6prm: fix incorrect clk_root passed to ADSP

Kuniyuki Iwashima (1):
tcp: Fix bind() conflict check for dual-stack wildcard address.

Lars-Peter Clausen (3):
hwmon: (ucd90320) Add minimum delay between bus accesses
hwmon: (adm1266) Set can_sleep flag for GPIO chip
hwmon: (ltc2992) Set can_sleep flag for GPIO chip

Lee Duncan (1):
scsi: core: Add BLIST_NO_VPD_SIZE for some VDASD

Liang He (2):
block: sunvdc: add check for mdesc_grab() returning NULL
ethernet: sun: add check for the mdesc_grab()

Linus Torvalds (1):
media: m5mols: fix off-by-one loop termination error

Liu Ying (1):
drm/bridge: Fix returned array size name for atomic_get_input_bus_fmts kdoc

Maciej Fijalkowski (1):
ice: xsk: disable txq irq before flushing hw

Maor Dickman (3):
net/mlx5e: Support Geneve and GRE with VF tunnel offload
net/mlx5: E-switch, Fix wrong usage of source port rewrite in split rules net/mlx5: E-switch, Fix missing set of split_count when forward to ovs internal port

Marcus Folkesson (1):
hwmon: (ina3221) return prober error code

Marek Vasut (1):
net: dsa: microchip: fix RGMII delay configuration on KSZ8765/KSZ8794/KSZ8795

Matthieu Baerts (1):
mptcp: avoid setting TCP_CLOSE state twice

Michael Karcher (1):
sh: intc: Avoid spurious sizeof-pointer-div warning

Ming Lei (1):
nvme: fix handling single range discard request

NeilBrown (1):
md: select BLOCK_LEGACY_AUTOLOAD

Nikita Zhandarovich (1):
x86/mm: Fix use of uninitialized buffer in sme_enable()

Niklas Schnelle (1):
PCI: s390: Fix use-after-free of PCI resources with per-function hotplug

Nikolay Aleksandrov (2):
bonding: restore IFF_MASTER/SLAVE flags on bond enslave ether type change
bonding: restore bond's IFF_SLAVE flag if a non-eth dev enslave fails

Oleksandr Tyshchenko (1):
drm/virtio: Pass correct device to dma_sync_sgtable_for_device()

Pali Rohár (1):
powerpc/boot: Don't always pass -mcpu=powerpc when building 32-bit uImage

Paolo Abeni (2):
mptcp: fix possible deadlock in subflow_error_report
mptcp: fix lockdep false positive in mptcp_pm_nl_create_listen_socket()

Paolo Bonzini (1):
KVM: nVMX: add missing consistency checks for CR0 and CR4

Parav Pandit (2):
net/mlx5e: Don't cache tunnel offloads capability net/mlx5: Fix setting ec_function bit in MANAGE_PAGES

Paul Blakey (1):
net/mlx5e: Fix cleanup null-ptr deref on encap lock

Pavel Begunkov (1):
io_uring/msg_ring: let target know allocated index

Pierre-Louis Bossart (1):
ASoC: Intel: soc-acpi: fix copy-paste issue in topology names

Po-Hsu Lin (1):
selftests: net: devlink_port_split.py: skip test if no suitable device available

Qu Huang (1):
drm/amdkfd: Fix an illegal memory access

Radu Pirea (OSS) (1):
net: phy: nxp-c45-tja11xx: fix MII_BASIC_CONFIG_REV bit

Randy Dunlap (2):
clk: HI655X: select REGMAP instead of depending on it
serial: 8250: ASPEED_VUART: select REGMAP instead of depending on it

Ranjan Kumar (2):
scsi: mpi3mr: Return proper values for failures in firmware init path
scsi: mpi3mr: ioctl timeout when disabling/enabling interrupt

Ranjani Sridharan (4):
ASoC: SOF: Intel: MTL: Fix the device description
ASoC: SOF: Intel: HDA: Fix device description
ASoC: SOF: Intel: SKL: Fix device description
ASOC: SOF: Intel: pci-tgl: Fix device description

Roger Lu (1):
soc: mediatek: mtk-svs: keep svs alive if CONFIG_DEBUG_FS not supported

Roman Gushchin (1):
firmware: xilinx: don't make a sleepable memory allocation from an atomic context

Russell Currey (1):
powerpc/mm: Fix false detection of read faults

Sean Christopherson (1):
KVM: SVM: Fix a benign off-by-one bug in AVIC physical table mask

Sergey Matyukevich (1):
Revert "riscv: mm: notify remote harts about mmu cache updates"

Shawn Bohrer (1):
veth: Fix use after free in XDP_REDIRECT

Shawn Guo (1):
cpuidle: psci: Iterate backwards over list in psci_pd_remove()

Shawn Wang (1):

      x86/resctrl: Clear staged_config[] before and after it is used

Shay Drory (1):
net/mlx5: Set BREAK_FW_WAIT flag first when removing driver

Sherry Sun (1):
tty: serial: fsl_lpuart: skip waiting for transmission complete when UARTCTRL_SBK is asserted

Shyam Prasad N (1):
cifs: generate signkey for the channel that's reconnecting

Si-Wei Liu (1):
vdpa/mlx5: should not activate virtq object when suspended

Steven Rostedt (Google) (2):
tracing: Check field value in hist_field_name()
tracing: Make tracepoint lockdep check actually test something

Sudeep Holla (1):
ACPI: PPTT: Fix to avoid sleep in the atomic context when PPTT is absent

Sung-hun Kim (1):
tracing: Make splice_read available again

Suravee Suthikulpanit (1):
KVM: SVM: Modify AVIC GATag to support max number of 512 vCPUs

Sven Schnelle (1):
s390/ipl: add missing intersection check to ipl_report handling

Szymon Heidrich (2):
net: usb: smsc75xx: Limit packet length to skb->len
net: usb: smsc75xx: Move packet length check to prevent kernel panic in skb_pull

Takashi Iwai (1):
fbdev: Fix incorrect page mapping clearance at fb_deferred_io_release()

Tero Kristo (2):
trace/hwlat: Do not wipe the contents of per-cpu thread data trace/hwlat: Do not start per-cpu thread if it is already running

Theodore Ts'o (1):
ext4: fix possible double unlock when moving a directory

Thomas Bogendoerfer (1):

      i825xx: sni_82596: use eth_hw_addr_set()

Thomas Hellström (1):
drm/ttm: Fix a NULL pointer dereference

Tiezhu Yang (1):
LoongArch: Only call get_timer_irq() once in constant_clockevent_init()

Tim Huang (1):
drm/amd/pm: bump SMU 13.0.4 driver_if header version

Tobias Schramm (1):
mmc: atmel-mci: fix race between stop command and start of next command

Toke Høiland-Jørgensen (1):
net: atlantic: Fix crash when XDP is enabled but no program is loaded

Tom Rix (1):
Revert "tty: serial: fsl_lpuart: adjust SERIAL_FSL_LPUART_CONSOLE config dependency"

Tomas Henzl (6):
scsi: mpi3mr: Fix throttle_groups memory leak
scsi: mpi3mr: Fix config page DMA memory leak
scsi: mpi3mr: Fix mpi3mr_hba_port memory leak in mpi3mr_remove()
scsi: mpi3mr: Fix sas_hba.phy memory leak in mpi3mr_remove()
scsi: mpi3mr: Fix memory leaks in mpi3mr_init_ioc()
scsi: mpi3mr: Fix expander node leak in mpi3mr_remove()

Tony O'Brien (2):
hwmon: (adt7475) Display smoothing attributes in correct order
hwmon: (adt7475) Fix masking of hysteresis registers

Vladimir Oltean (2):
net: dsa: don't error out when drivers return ETH_DATA_LEN in .port_max_mtu()
net: dsa: mv88e6xxx: fix max_mtu of 1492 on 6165, 6191, 6220, 6250, 6290

Volker Lendecke (1):
cifs: Fix smb2_set_path_size()

Wenchao Hao (1):
scsi: mpt3sas: Fix NULL pointer access in mpt3sas_transport_port_add()

Wenjia Zhang (1):
net/smc: fix deadlock triggered by cancel_delayed_work_syn()

Wesley Chalmers (1):
drm/amd/display: Do not set DRR on pipe Commit

Wolfram Sang (2):
ravb: avoid PHY being resumed when interface is not up
sh_eth: avoid PHY being resumed when interface is not up

Yazen Ghannam (1):
x86/mce: Make sure logged MCEs are processed after sysfs update

Yifei Liu (1):
jffs2: correct logic when creating a hole in jffs2_write_begin

Zhang Xiaoxu (1):
cifs: Move the in_send statistic to __smb_send_rqst()

Zheng Wang (2):
nfc: st-nci: Fix use after free bug in ndlc_remove due to race condition
hwmon: (xgene) Fix use after free bug in xgene_hwmon_remove due to race condition

author maintainer
#1 lore raw
Documentation/filesystems/vfs.rst +1 -1
index 2b55f71e2ae1..b5e8b8af8afb 100644
@@ -1221,7 +1221,7 @@ defined:
 	return
 	-ECHILD and it will be called again in ref-walk mode.
 
-``_weak_revalidate``
+``d_weak_revalidate``
 	called when the VFS needs to revalidate a "jumped" dentry.  This
 	is called when a path-walk ends at dentry that was not acquired
 	by doing a lookup in the parent directory.  This includes "/",
Makefile +1 -1
index a842ec6d1932..0a9f0770bdf3 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 6
 PATCHLEVEL = 1
-SUBLEVEL = 20
+SUBLEVEL = 21
 EXTRAVERSION =
 NAME = Hurr durr I'ma ninja sloth
 
arch/loongarch/kernel/time.c +6 -5
index 786735dcc8d6..d2b7d5df132a 100644
@@ -135,16 +135,17 @@ static int get_timer_irq(void)
 
 int constant_clockevent_init(void)
 {
-	int irq;
 	unsigned int cpu = smp_processor_id();
 	unsigned long min_delta = 0x600;
 	unsigned long max_delta = (1UL << 48) - 1;
 	struct clock_event_device *cd;
-	static int timer_irq_installed = 0;
+	static int irq = 0, timer_irq_installed = 0;
 
-	irq = get_timer_irq();
-	if (irq < 0)
-		pr_err("Failed to map irq %d (timer)\n", irq);
+	if (!timer_irq_installed) {
+		irq = get_timer_irq();
+		if (irq < 0)
+			pr_err("Failed to map irq %d (timer)\n", irq);
+	}
 
 	cd = &per_cpu(constant_clockevent_device, cpu);
 
arch/powerpc/Makefile +5 -21
index 4fd630efe39d..894d48cd0492 100644
@@ -146,19 +146,6 @@ CFLAGS-$(CONFIG_PPC32)	+= $(call cc-option, $(MULTIPLEWORD))
 
 CFLAGS-$(CONFIG_PPC32)	+= $(call cc-option,-mno-readonly-in-sdata)
 
-ifdef CONFIG_PPC_BOOK3S_64
-ifdef CONFIG_CPU_LITTLE_ENDIAN
-CFLAGS-$(CONFIG_GENERIC_CPU) += -mcpu=power8
-else
-CFLAGS-$(CONFIG_GENERIC_CPU) += -mcpu=power4
-endif
-CFLAGS-$(CONFIG_GENERIC_CPU) += $(call cc-option,-mtune=power10,	\
-				  $(call cc-option,-mtune=power9,	\
-				  $(call cc-option,-mtune=power8)))
-else ifdef CONFIG_PPC_BOOK3E_64
-CFLAGS-$(CONFIG_GENERIC_CPU) += -mcpu=powerpc64
-endif
-
 ifdef CONFIG_FUNCTION_TRACER
 CC_FLAGS_FTRACE := -pg
 ifdef CONFIG_MPROFILE_KERNEL
@@ -166,11 +153,12 @@ CC_FLAGS_FTRACE += -mprofile-kernel
 endif
 endif
 
-CFLAGS-$(CONFIG_TARGET_CPU_BOOL) += $(call cc-option,-mcpu=$(CONFIG_TARGET_CPU))
-AFLAGS-$(CONFIG_TARGET_CPU_BOOL) += $(call cc-option,-mcpu=$(CONFIG_TARGET_CPU))
+CFLAGS-$(CONFIG_TARGET_CPU_BOOL) += -mcpu=$(CONFIG_TARGET_CPU)
+AFLAGS-$(CONFIG_TARGET_CPU_BOOL) += -mcpu=$(CONFIG_TARGET_CPU)
 
-CFLAGS-$(CONFIG_E5500_CPU) += $(call cc-option,-mcpu=e500mc64,-mcpu=powerpc64)
-CFLAGS-$(CONFIG_E6500_CPU) += $(call cc-option,-mcpu=e6500,$(E5500_CPU))
+CFLAGS-$(CONFIG_POWERPC64_CPU) += $(call cc-option,-mtune=power10,	\
+				  $(call cc-option,-mtune=power9,	\
+				  $(call cc-option,-mtune=power8)))
 
 asinstr := $(call as-instr,lis 9$(comma)foo@high,-DHAVE_AS_ATHIGH=1)
 
@@ -213,10 +201,7 @@ KBUILD_CFLAGS += -fno-asynchronous-unwind-tables
 # often slow when they are implemented at all
 KBUILD_CFLAGS		+= $(call cc-option,-mno-string)
 
-cpu-as-$(CONFIG_40x)		+= -Wa,-m405
-cpu-as-$(CONFIG_44x)		+= -Wa,-m440
 cpu-as-$(CONFIG_ALTIVEC)	+= $(call as-option,-Wa$(comma)-maltivec)
-cpu-as-$(CONFIG_PPC_E500)		+= -Wa,-me500
 
 # When using '-many -mpower4' gas will first try and find a matching power4
 # mnemonic and failing that it will allow any valid mnemonic that GAS knows
@@ -224,7 +209,6 @@ cpu-as-$(CONFIG_PPC_E500)		+= -Wa,-me500
 # LLVM IAS doesn't understand either flag: https://github.com/ClangBuiltLinux/linux/issues/675
 # but LLVM IAS only supports ISA >= 2.06 for Book3S 64 anyway...
 cpu-as-$(CONFIG_PPC_BOOK3S_64)	+= $(call as-option,-Wa$(comma)-mpower4) $(call as-option,-Wa$(comma)-many)
-cpu-as-$(CONFIG_PPC_E500MC)	+= $(call as-option,-Wa$(comma)-me500mc)
 
 KBUILD_AFLAGS += $(cpu-as-y)
 KBUILD_CFLAGS += $(cpu-as-y)
arch/powerpc/boot/Makefile +10 -4
index d32d95aea5d6..295f76df13b5 100644
@@ -39,13 +39,19 @@ BOOTCFLAGS    := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
 		 $(LINUXINCLUDE)
 
 ifdef CONFIG_PPC64_BOOT_WRAPPER
-ifdef CONFIG_CPU_LITTLE_ENDIAN
-BOOTCFLAGS	+= -m64 -mcpu=powerpc64le
+BOOTCFLAGS	+= -m64
 else
-BOOTCFLAGS	+= -m64 -mcpu=powerpc64
+BOOTCFLAGS	+= -m32
 endif
+
+ifdef CONFIG_TARGET_CPU_BOOL
+BOOTCFLAGS	+= -mcpu=$(CONFIG_TARGET_CPU)
+else ifdef CONFIG_PPC64_BOOT_WRAPPER
+ifdef CONFIG_CPU_LITTLE_ENDIAN
+BOOTCFLAGS	+= -mcpu=powerpc64le
 else
-BOOTCFLAGS	+= -m32 -mcpu=powerpc
+BOOTCFLAGS	+= -mcpu=powerpc64
+endif
 endif
 
 BOOTCFLAGS	+= -isystem $(shell $(BOOTCC) -print-file-name=include)
arch/powerpc/mm/fault.c +8 -3
index 2bef19cc1b98..af46aa88422b 100644
@@ -271,11 +271,16 @@ static bool access_error(bool is_write, bool is_exec, struct vm_area_struct *vma
 	}
 
 	/*
-	 * Check for a read fault.  This could be caused by a read on an
-	 * inaccessible page (i.e. PROT_NONE), or a Radix MMU execute-only page.
+	 * VM_READ, VM_WRITE and VM_EXEC all imply read permissions, as
+	 * defined in protection_map[].  Read faults can only be caused by
+	 * a PROT_NONE mapping, or with a PROT_EXEC-only mapping on Radix.
 	 */
-	if (unlikely(!(vma->vm_flags & VM_READ)))
+	if (unlikely(!vma_is_accessible(vma)))
 		return true;
+
+	if (unlikely(radix_enabled() && ((vma->vm_flags & VM_ACCESS_FLAGS) == VM_EXEC)))
+		return true;
+
 	/*
 	 * We should ideally do the vma pkey access check here. But in the
 	 * fault path, handle_mm_fault() also does the same check. To avoid
arch/powerpc/platforms/Kconfig.cputype +15 -5
index 0c4eed9aea80..54d655a647ce 100644
@@ -118,19 +118,18 @@ endchoice
 
 choice
 	prompt "CPU selection"
-	default GENERIC_CPU
 	help
 	  This will create a kernel which is optimised for a particular CPU.
 	  The resulting kernel may not run on other CPUs, so use this with care.
 
 	  If unsure, select Generic.
 
-config GENERIC_CPU
+config POWERPC64_CPU
 	bool "Generic (POWER5 and PowerPC 970 and above)"
 	depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN
 	select PPC_64S_HASH_MMU
 
-config GENERIC_CPU
+config POWERPC64_CPU
 	bool "Generic (POWER8 and above)"
 	depends on PPC_BOOK3S_64 && CPU_LITTLE_ENDIAN
 	select ARCH_HAS_FAST_MULTIPLIER
@@ -143,6 +142,7 @@ config POWERPC_CPU
 config CELL_CPU
 	bool "Cell Broadband Engine"
 	depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN
+	depends on !CC_IS_CLANG
 	select PPC_64S_HASH_MMU
 
 config PPC_970_CPU
@@ -184,10 +184,12 @@ config E5500_CPU
 config E6500_CPU
 	bool "Freescale e6500"
 	depends on PPC64 && PPC_E500
+	depends on !CC_IS_CLANG
 
 config 405_CPU
 	bool "40x family"
 	depends on 40x
+	depends on !CC_IS_CLANG
 
 config 440_CPU
 	bool "440 (44x family)"
@@ -196,22 +198,27 @@ config 440_CPU
 config 464_CPU
 	bool "464 (44x family)"
 	depends on 44x
+	depends on !CC_IS_CLANG
 
 config 476_CPU
 	bool "476 (47x family)"
 	depends on PPC_47x
+	depends on !CC_IS_CLANG
 
 config 860_CPU
 	bool "8xx family"
 	depends on PPC_8xx
+	depends on !CC_IS_CLANG
 
 config E300C2_CPU
 	bool "e300c2 (832x)"
 	depends on PPC_BOOK3S_32
+	depends on !CC_IS_CLANG
 
 config E300C3_CPU
 	bool "e300c3 (831x)"
 	depends on PPC_BOOK3S_32
+	depends on !CC_IS_CLANG
 
 config G4_CPU
 	bool "G4 (74xx)"
@@ -228,13 +235,12 @@ config E500MC_CPU
 
 config TOOLCHAIN_DEFAULT_CPU
 	bool "Rely on the toolchain's implicit default CPU"
-	depends on PPC32
 
 endchoice
 
 config TARGET_CPU_BOOL
 	bool
-	default !GENERIC_CPU && !TOOLCHAIN_DEFAULT_CPU
+	default !TOOLCHAIN_DEFAULT_CPU
 
 config TARGET_CPU
 	string
@@ -246,6 +252,10 @@ config TARGET_CPU
 	default "power8" if POWER8_CPU
 	default "power9" if POWER9_CPU
 	default "power10" if POWER10_CPU
+	default "e5500" if E5500_CPU
+	default "e6500" if E6500_CPU
+	default "power4" if POWERPC64_CPU && !CPU_LITTLE_ENDIAN
+	default "power8" if POWERPC64_CPU && CPU_LITTLE_ENDIAN
 	default "405" if 405_CPU
 	default "440" if 440_CPU
 	default "464" if 464_CPU
arch/riscv/include/asm/mmu.h +0 -2
index 5ff1f19fd45c..0099dc116168 100644
@@ -19,8 +19,6 @@ typedef struct {
 #ifdef CONFIG_SMP
 	/* A local icache flush is needed before user execution can resume. */
 	cpumask_t icache_stale_mask;
-	/* A local tlb flush is needed before user execution can resume. */
-	cpumask_t tlb_stale_mask;
 #endif
 } mm_context_t;
 
arch/riscv/include/asm/tlbflush.h +0 -18
index 907b9efd39a8..801019381dea 100644
@@ -22,24 +22,6 @@ static inline void local_flush_tlb_page(unsigned long addr)
 {
 	ALT_FLUSH_TLB_PAGE(__asm__ __volatile__ ("sfence.vma %0" : : "r" (addr) : "memory"));
 }
-
-static inline void local_flush_tlb_all_asid(unsigned long asid)
-{
-	__asm__ __volatile__ ("sfence.vma x0, %0"
-			:
-			: "r" (asid)
-			: "memory");
-}
-
-static inline void local_flush_tlb_page_asid(unsigned long addr,
-		unsigned long asid)
-{
-	__asm__ __volatile__ ("sfence.vma %0, %1"
-			:
-			: "r" (addr), "r" (asid)
-			: "memory");
-}
-
 #else /* CONFIG_MMU */
 #define local_flush_tlb_all()			do { } while (0)
 #define local_flush_tlb_page(addr)		do { } while (0)
arch/riscv/mm/context.c +20 -20
index 80ce9caba8d2..0f784e3d307b 100644
@@ -196,16 +196,6 @@ static void set_mm_asid(struct mm_struct *mm, unsigned int cpu)
 
 	if (need_flush_tlb)
 		local_flush_tlb_all();
-#ifdef CONFIG_SMP
-	else {
-		cpumask_t *mask = &mm->context.tlb_stale_mask;
-
-		if (cpumask_test_cpu(cpu, mask)) {
-			cpumask_clear_cpu(cpu, mask);
-			local_flush_tlb_all_asid(cntx & asid_mask);
-		}
-	}
-#endif
 }
 
 static void set_mm_noasid(struct mm_struct *mm)
@@ -215,12 +205,24 @@ static void set_mm_noasid(struct mm_struct *mm)
 	local_flush_tlb_all();
 }
 
-static inline void set_mm(struct mm_struct *mm, unsigned int cpu)
+static inline void set_mm(struct mm_struct *prev,
+			  struct mm_struct *next, unsigned int cpu)
 {
-	if (static_branch_unlikely(&use_asid_allocator))
-		set_mm_asid(mm, cpu);
-	else
-		set_mm_noasid(mm);
+	/*
+	 * The mm_cpumask indicates which harts' TLBs contain the virtual
+	 * address mapping of the mm. Compared to noasid, using asid
+	 * can't guarantee that stale TLB entries are invalidated because
+	 * the asid mechanism wouldn't flush TLB for every switch_mm for
+	 * performance. So when using asid, keep all CPUs footmarks in
+	 * cpumask() until mm reset.
+	 */
+	cpumask_set_cpu(cpu, mm_cpumask(next));
+	if (static_branch_unlikely(&use_asid_allocator)) {
+		set_mm_asid(next, cpu);
+	} else {
+		cpumask_clear_cpu(cpu, mm_cpumask(prev));
+		set_mm_noasid(next);
+	}
 }
 
 static int __init asids_init(void)
@@ -274,7 +276,8 @@ static int __init asids_init(void)
 }
 early_initcall(asids_init);
 #else
-static inline void set_mm(struct mm_struct *mm, unsigned int cpu)
+static inline void set_mm(struct mm_struct *prev,
+			  struct mm_struct *next, unsigned int cpu)
 {
 	/* Nothing to do here when there is no MMU */
 }
@@ -327,10 +330,7 @@ void switch_mm(struct mm_struct *prev, struct mm_struct *next,
 	 */
 	cpu = smp_processor_id();
 
-	cpumask_clear_cpu(cpu, mm_cpumask(prev));
-	cpumask_set_cpu(cpu, mm_cpumask(next));
-
-	set_mm(next, cpu);
+	set_mm(prev, next, cpu);
 
 	flush_icache_deferred(next, cpu);
 }
arch/riscv/mm/tlbflush.c +17 -11
index ce7dfc81bb3f..37ed760d007c 100644
@@ -5,7 +5,23 @@
 #include <linux/sched.h>
 #include <asm/sbi.h>
 #include <asm/mmu_context.h>
-#include <asm/tlbflush.h>
+
+static inline void local_flush_tlb_all_asid(unsigned long asid)
+{
+	__asm__ __volatile__ ("sfence.vma x0, %0"
+			:
+			: "r" (asid)
+			: "memory");
+}
+
+static inline void local_flush_tlb_page_asid(unsigned long addr,
+		unsigned long asid)
+{
+	__asm__ __volatile__ ("sfence.vma %0, %1"
+			:
+			: "r" (addr), "r" (asid)
+			: "memory");
+}
 
 void flush_tlb_all(void)
 {
@@ -15,7 +31,6 @@ void flush_tlb_all(void)
 static void __sbi_tlb_flush_range(struct mm_struct *mm, unsigned long start,
 				  unsigned long size, unsigned long stride)
 {
-	struct cpumask *pmask = &mm->context.tlb_stale_mask;
 	struct cpumask *cmask = mm_cpumask(mm);
 	unsigned int cpuid;
 	bool broadcast;
@@ -29,15 +44,6 @@ static void __sbi_tlb_flush_range(struct mm_struct *mm, unsigned long start,
 	if (static_branch_unlikely(&use_asid_allocator)) {
 		unsigned long asid = atomic_long_read(&mm->context.id);
 
-		/*
-		 * TLB will be immediately flushed on harts concurrently
-		 * executing this MM context. TLB flush on other harts
-		 * is deferred until this MM context migrates there.
-		 */
-		cpumask_setall(pmask);
-		cpumask_clear_cpu(cpuid, pmask);
-		cpumask_andnot(pmask, pmask, cmask);
-
 		if (broadcast) {
 			sbi_remote_sfence_vma_asid(cmask, start, size, asid);
 		} else if (size <= stride) {
arch/s390/boot/ipl_report.c +8 -0
index 9b14045065b6..74b5cd264862 100644
@@ -57,11 +57,19 @@ static unsigned long find_bootdata_space(struct ipl_rb_components *comps,
 	if (IS_ENABLED(CONFIG_BLK_DEV_INITRD) && initrd_data.start && initrd_data.size &&
 	    intersects(initrd_data.start, initrd_data.size, safe_addr, size))
 		safe_addr = initrd_data.start + initrd_data.size;
+	if (intersects(safe_addr, size, (unsigned long)comps, comps->len)) {
+		safe_addr = (unsigned long)comps + comps->len;
+		goto repeat;
+	}
 	for_each_rb_entry(comp, comps)
 		if (intersects(safe_addr, size, comp->addr, comp->len)) {
 			safe_addr = comp->addr + comp->len;
 			goto repeat;
 		}
+	if (intersects(safe_addr, size, (unsigned long)certs, certs->len)) {
+		safe_addr = (unsigned long)certs + certs->len;
+		goto repeat;
+	}
 	for_each_rb_entry(cert, certs)
 		if (intersects(safe_addr, size, cert->addr, cert->len)) {
 			safe_addr = cert->addr + cert->len;
arch/s390/pci/pci.c +10 -6
index 73cdc5539384..2c99f9552b2f 100644
@@ -544,8 +544,7 @@ static struct resource *__alloc_res(struct zpci_dev *zdev, unsigned long start,
 	return r;
 }
 
-int zpci_setup_bus_resources(struct zpci_dev *zdev,
-			     struct list_head *resources)
+int zpci_setup_bus_resources(struct zpci_dev *zdev)
 {
 	unsigned long addr, size, flags;
 	struct resource *res;
@@ -581,7 +580,6 @@ int zpci_setup_bus_resources(struct zpci_dev *zdev,
 			return -ENOMEM;
 		}
 		zdev->bars[i].res = res;
-		pci_add_resource(resources, res);
 	}
 	zdev->has_resources = 1;
 
@@ -590,17 +588,23 @@ int zpci_setup_bus_resources(struct zpci_dev *zdev,
 
 static void zpci_cleanup_bus_resources(struct zpci_dev *zdev)
 {
+	struct resource *res;
 	int i;
 
+	pci_lock_rescan_remove();
 	for (i = 0; i < PCI_STD_NUM_BARS; i++) {
-		if (!zdev->bars[i].size || !zdev->bars[i].res)
+		res = zdev->bars[i].res;
+		if (!res)
 			continue;
 
+		release_resource(res);
+		pci_bus_remove_resource(zdev->zbus->bus, res);
 		zpci_free_iomap(zdev, zdev->bars[i].map_idx);
-		release_resource(zdev->bars[i].res);
-		kfree(zdev->bars[i].res);
+		zdev->bars[i].res = NULL;
+		kfree(res);
 	}
 	zdev->has_resources = 0;
+	pci_unlock_rescan_remove();
 }
 
 int pcibios_device_add(struct pci_dev *pdev)
arch/s390/pci/pci_bus.c +5 -7
index 6a8da1b742ae..a99926af2b69 100644
@@ -41,9 +41,7 @@ static int zpci_nb_devices;
  */
 static int zpci_bus_prepare_device(struct zpci_dev *zdev)
 {
-	struct resource_entry *window, *n;
-	struct resource *res;
-	int rc;
+	int rc, i;
 
 	if (!zdev_enabled(zdev)) {
 		rc = zpci_enable_device(zdev);
@@ -57,10 +55,10 @@ static int zpci_bus_prepare_device(struct zpci_dev *zdev)
 	}
 
 	if (!zdev->has_resources) {
-		zpci_setup_bus_resources(zdev, &zdev->zbus->resources);
-		resource_list_for_each_entry_safe(window, n, &zdev->zbus->resources) {
-			res = window->res;
-			pci_bus_add_resource(zdev->zbus->bus, res, 0);
+		zpci_setup_bus_resources(zdev);
+		for (i = 0; i < PCI_STD_NUM_BARS; i++) {
+			if (zdev->bars[i].res)
+				pci_bus_add_resource(zdev->zbus->bus, zdev->bars[i].res, 0);
 		}
 	}
 
arch/s390/pci/pci_bus.h +1 -2
index e96c9860e064..af9f0ac79a1b 100644
@@ -30,8 +30,7 @@ static inline void zpci_zdev_get(struct zpci_dev *zdev)
 
 int zpci_alloc_domain(int domain);
 void zpci_free_domain(int domain);
-int zpci_setup_bus_resources(struct zpci_dev *zdev,
-			     struct list_head *resources);
+int zpci_setup_bus_resources(struct zpci_dev *zdev);
 
 static inline struct zpci_dev *zdev_from_bus(struct pci_bus *bus,
 					     unsigned int devfn)
arch/x86/Makefile.um +6 -0
index b3c1ae084180..d2e95d1d4db7 100644
@@ -1,6 +1,12 @@
 # SPDX-License-Identifier: GPL-2.0
 core-y += arch/x86/crypto/
 
+#
+# Disable SSE and other FP/SIMD instructions to match normal x86
+#
+KBUILD_CFLAGS += -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx
+KBUILD_RUSTFLAGS += -Ctarget-feature=-sse,-sse2,-sse3,-ssse3,-sse4.1,-sse4.2,-avx,-avx2
+
 ifeq ($(CONFIG_X86_32),y)
 START := 0x8048000
 
arch/x86/include/asm/sev-common.h +2 -1
index b8357d6ecd47..b63be696b776 100644
@@ -128,8 +128,9 @@ struct snp_psc_desc {
 	struct psc_entry entries[VMGEXIT_PSC_MAX_ENTRY];
 } __packed;
 
-/* Guest message request error code */
+/* Guest message request error codes */
 #define SNP_GUEST_REQ_INVALID_LEN	BIT_ULL(32)
+#define SNP_GUEST_REQ_ERR_BUSY		BIT_ULL(33)
 
 #define GHCB_MSR_TERM_REQ		0x100
 #define GHCB_MSR_TERM_REASON_SET_POS	12
arch/x86/include/asm/svm.h +7 -5
index 0361626841bc..236fda748ae9 100644
@@ -256,20 +256,22 @@ enum avic_ipi_failure_cause {
 	AVIC_IPI_FAILURE_INVALID_BACKING_PAGE,
 };
 
-#define AVIC_PHYSICAL_MAX_INDEX_MASK	GENMASK_ULL(9, 0)
+#define AVIC_PHYSICAL_MAX_INDEX_MASK	GENMASK_ULL(8, 0)
 
 /*
- * For AVIC, the max index allowed for physical APIC ID
- * table is 0xff (255).
+ * For AVIC, the max index allowed for physical APIC ID table is 0xfe (254), as
+ * 0xff is a broadcast to all CPUs, i.e. can't be targeted individually.
  */
 #define AVIC_MAX_PHYSICAL_ID		0XFEULL
 
 /*
- * For x2AVIC, the max index allowed for physical APIC ID
- * table is 0x1ff (511).
+ * For x2AVIC, the max index allowed for physical APIC ID table is 0x1ff (511).
  */
 #define X2AVIC_MAX_PHYSICAL_ID		0x1FFUL
 
+static_assert((AVIC_MAX_PHYSICAL_ID & AVIC_PHYSICAL_MAX_INDEX_MASK) == AVIC_MAX_PHYSICAL_ID);
+static_assert((X2AVIC_MAX_PHYSICAL_ID & AVIC_PHYSICAL_MAX_INDEX_MASK) == X2AVIC_MAX_PHYSICAL_ID);
+
 #define AVIC_HPA_MASK	~((0xFFFULL << 52) | 0xFFF)
 #define VMCB_AVIC_APIC_BAR_MASK		0xFFFFFFFFFF000ULL
 
arch/x86/kernel/cpu/mce/core.c +1 -0
index 2c8ec5c71712..e228d58ee264 100644
@@ -2365,6 +2365,7 @@ static void mce_restart(void)
 {
 	mce_timer_delete_all();
 	on_each_cpu(mce_cpu_restart, NULL, 1);
+	mce_schedule_work();
 }
 
 /* Toggle features for corrected errors */
arch/x86/kernel/cpu/resctrl/ctrlmondata.c +2 -5
index 1dafbdc5ac31..84f23327caed 100644
@@ -374,7 +374,6 @@ ssize_t rdtgroup_schemata_write(struct kernfs_open_file *of,
 {
 	struct resctrl_schema *s;
 	struct rdtgroup *rdtgrp;
-	struct rdt_domain *dom;
 	struct rdt_resource *r;
 	char *tok, *resname;
 	int ret = 0;
@@ -403,10 +402,7 @@ ssize_t rdtgroup_schemata_write(struct kernfs_open_file *of,
 		goto out;
 	}
 
-	list_for_each_entry(s, &resctrl_schema_all, list) {
-		list_for_each_entry(dom, &s->res->domains, list)
-			memset(dom->staged_config, 0, sizeof(dom->staged_config));
-	}
+	rdt_staged_configs_clear();
 
 	while ((tok = strsep(&buf, "\n")) != NULL) {
 		resname = strim(strsep(&tok, ":"));
@@ -451,6 +447,7 @@ ssize_t rdtgroup_schemata_write(struct kernfs_open_file *of,
 	}
 
 out:
+	rdt_staged_configs_clear();
 	rdtgroup_kn_unlock(of->kn);
 	cpus_read_unlock();
 	return ret ?: nbytes;
arch/x86/kernel/cpu/resctrl/internal.h +1 -0
index 5f7128686cfd..0b5c6c76f6f7 100644
@@ -537,5 +537,6 @@ bool has_busy_rmid(struct rdt_resource *r, struct rdt_domain *d);
 void __check_limbo(struct rdt_domain *d, bool force_free);
 void rdt_domain_reconfigure_cdp(struct rdt_resource *r);
 void __init thread_throttle_mode_init(void);
+void rdt_staged_configs_clear(void);
 
 #endif /* _ASM_X86_RESCTRL_INTERNAL_H */
arch/x86/kernel/cpu/resctrl/rdtgroup.c +21 -4
index 87b670d540b8..c7f1c7cb1963 100644
@@ -78,6 +78,19 @@ void rdt_last_cmd_printf(const char *fmt, ...)
 	va_end(ap);
 }
 
+void rdt_staged_configs_clear(void)
+{
+	struct rdt_resource *r;
+	struct rdt_domain *dom;
+
+	lockdep_assert_held(&rdtgroup_mutex);
+
+	for_each_alloc_capable_rdt_resource(r) {
+		list_for_each_entry(dom, &r->domains, list)
+			memset(dom->staged_config, 0, sizeof(dom->staged_config));
+	}
+}
+
 /*
  * Trivial allocator for CLOSIDs. Since h/w only supports a small number,
  * we can keep a bitmap of free CLOSIDs in a single integer.
@@ -2851,7 +2864,9 @@ static int rdtgroup_init_alloc(struct rdtgroup *rdtgrp)
 {
 	struct resctrl_schema *s;
 	struct rdt_resource *r;
-	int ret;
+	int ret = 0;
+
+	rdt_staged_configs_clear();
 
 	list_for_each_entry(s, &resctrl_schema_all, list) {
 		r = s->res;
@@ -2862,20 +2877,22 @@ static int rdtgroup_init_alloc(struct rdtgroup *rdtgrp)
 		} else {
 			ret = rdtgroup_init_cat(s, rdtgrp->closid);
 			if (ret < 0)
-				return ret;
+				goto out;
 		}
 
 		ret = resctrl_arch_update_domains(r, rdtgrp->closid);
 		if (ret < 0) {
 			rdt_last_cmd_puts("Failed to initialize allocations\n");
-			return ret;
+			goto out;
 		}
 
 	}
 
 	rdtgrp->mode = RDT_MODE_SHAREABLE;
 
-	return 0;
+out:
+	rdt_staged_configs_clear();
+	return ret;
 }
 
 static int mkdir_rdt_prepare(struct kernfs_node *parent_kn,
arch/x86/kernel/ftrace_64.S +2 -0
index 2a4be92fd144..6233c5b4c10b 100644
@@ -134,9 +134,11 @@ SYM_TYPED_FUNC_START(ftrace_stub)
 	RET
 SYM_FUNC_END(ftrace_stub)
 
+#ifdef CONFIG_FUNCTION_GRAPH_TRACER
 SYM_TYPED_FUNC_START(ftrace_stub_graph)
 	RET
 SYM_FUNC_END(ftrace_stub_graph)
+#endif
 
 #ifdef CONFIG_DYNAMIC_FTRACE
 
arch/x86/kernel/sev.c +17 -9
index a428c62330d3..c680ac6342bb 100644
@@ -2183,9 +2183,6 @@ int snp_issue_guest_request(u64 exit_code, struct snp_req_data *input, unsigned
 	struct ghcb *ghcb;
 	int ret;
 
-	if (!cc_platform_has(CC_ATTR_GUEST_SEV_SNP))
-		return -ENODEV;
-
 	if (!fw_err)
 		return -EINVAL;
 
@@ -2212,15 +2209,26 @@ int snp_issue_guest_request(u64 exit_code, struct snp_req_data *input, unsigned
 	if (ret)
 		goto e_put;
 
-	if (ghcb->save.sw_exit_info_2) {
-		/* Number of expected pages are returned in RBX */
-		if (exit_code == SVM_VMGEXIT_EXT_GUEST_REQUEST &&
-		    ghcb->save.sw_exit_info_2 == SNP_GUEST_REQ_INVALID_LEN)
-			input->data_npages = ghcb_get_rbx(ghcb);
+	*fw_err = ghcb->save.sw_exit_info_2;
+	switch (*fw_err) {
+	case 0:
+		break;
 
-		*fw_err = ghcb->save.sw_exit_info_2;
+	case SNP_GUEST_REQ_ERR_BUSY:
+		ret = -EAGAIN;
+		break;
 
+	case SNP_GUEST_REQ_INVALID_LEN:
+		/* Number of expected pages are returned in RBX */
+		if (exit_code == SVM_VMGEXIT_EXT_GUEST_REQUEST) {
+			input->data_npages = ghcb_get_rbx(ghcb);
+			ret = -ENOSPC;
+			break;
+		}
+		fallthrough;
+	default:
 		ret = -EIO;
+		break;
 	}
 
 e_put:
arch/x86/kvm/svm/avic.c +18 -8
index 97ad0661f963..e910ec5a0cc0 100644
@@ -27,19 +27,29 @@
 #include "irq.h"
 #include "svm.h"
 
-/* AVIC GATAG is encoded using VM and VCPU IDs */
-#define AVIC_VCPU_ID_BITS		8
-#define AVIC_VCPU_ID_MASK		((1 << AVIC_VCPU_ID_BITS) - 1)
+/*
+ * Encode the arbitrary VM ID and the vCPU's default APIC ID, i.e the vCPU ID,
+ * into the GATag so that KVM can retrieve the correct vCPU from a GALog entry
+ * if an interrupt can't be delivered, e.g. because the vCPU isn't running.
+ *
+ * For the vCPU ID, use however many bits are currently allowed for the max
+ * guest physical APIC ID (limited by the size of the physical ID table), and
+ * use whatever bits remain to assign arbitrary AVIC IDs to VMs.  Note, the
+ * size of the GATag is defined by hardware (32 bits), but is an opaque value
+ * as far as hardware is concerned.
+ */
+#define AVIC_VCPU_ID_MASK		AVIC_PHYSICAL_MAX_INDEX_MASK
 
-#define AVIC_VM_ID_BITS			24
-#define AVIC_VM_ID_NR			(1 << AVIC_VM_ID_BITS)
-#define AVIC_VM_ID_MASK			((1 << AVIC_VM_ID_BITS) - 1)
+#define AVIC_VM_ID_SHIFT		HWEIGHT32(AVIC_PHYSICAL_MAX_INDEX_MASK)
+#define AVIC_VM_ID_MASK			(GENMASK(31, AVIC_VM_ID_SHIFT) >> AVIC_VM_ID_SHIFT)
 
-#define AVIC_GATAG(x, y)		(((x & AVIC_VM_ID_MASK) << AVIC_VCPU_ID_BITS) | \
+#define AVIC_GATAG(x, y)		(((x & AVIC_VM_ID_MASK) << AVIC_VM_ID_SHIFT) | \
 						(y & AVIC_VCPU_ID_MASK))
-#define AVIC_GATAG_TO_VMID(x)		((x >> AVIC_VCPU_ID_BITS) & AVIC_VM_ID_MASK)
+#define AVIC_GATAG_TO_VMID(x)		((x >> AVIC_VM_ID_SHIFT) & AVIC_VM_ID_MASK)
 #define AVIC_GATAG_TO_VCPUID(x)		(x & AVIC_VCPU_ID_MASK)
 
+static_assert(AVIC_GATAG(AVIC_VM_ID_MASK, AVIC_VCPU_ID_MASK) == -1u);
+
 static bool force_avic;
 module_param_unsafe(force_avic, bool, 0444);
 
arch/x86/kvm/vmx/nested.c +8 -2
index df8995977ec2..1d00f7824da1 100644
@@ -2999,7 +2999,7 @@ static int nested_vmx_check_guest_state(struct kvm_vcpu *vcpu,
 					struct vmcs12 *vmcs12,
 					enum vm_entry_failure_code *entry_failure_code)
 {
-	bool ia32e;
+	bool ia32e = !!(vmcs12->vm_entry_controls & VM_ENTRY_IA32E_MODE);
 
 	*entry_failure_code = ENTRY_FAIL_DEFAULT;
 
@@ -3025,6 +3025,13 @@ static int nested_vmx_check_guest_state(struct kvm_vcpu *vcpu,
 					   vmcs12->guest_ia32_perf_global_ctrl)))
 		return -EINVAL;
 
+	if (CC((vmcs12->guest_cr0 & (X86_CR0_PG | X86_CR0_PE)) == X86_CR0_PG))
+		return -EINVAL;
+
+	if (CC(ia32e && !(vmcs12->guest_cr4 & X86_CR4_PAE)) ||
+	    CC(ia32e && !(vmcs12->guest_cr0 & X86_CR0_PG)))
+		return -EINVAL;
+
 	/*
 	 * If the load IA32_EFER VM-entry control is 1, the following checks
 	 * are performed on the field for the IA32_EFER MSR:
@@ -3036,7 +3043,6 @@ static int nested_vmx_check_guest_state(struct kvm_vcpu *vcpu,
 	 */
 	if (to_vmx(vcpu)->nested.nested_run_pending &&
 	    (vmcs12->vm_entry_controls & VM_ENTRY_LOAD_IA32_EFER)) {
-		ia32e = (vmcs12->vm_entry_controls & VM_ENTRY_IA32E_MODE) != 0;
 		if (CC(!kvm_valid_efer(vcpu, vmcs12->guest_ia32_efer)) ||
 		    CC(ia32e != !!(vmcs12->guest_ia32_efer & EFER_LMA)) ||
 		    CC(((vmcs12->guest_cr0 & X86_CR0_PG) &&
arch/x86/mm/mem_encrypt_identity.c +2 -1
index f415498d3175..d94ebd8acdfd 100644
@@ -600,7 +600,8 @@ void __init sme_enable(struct boot_params *bp)
 	cmdline_ptr = (const char *)((u64)bp->hdr.cmd_line_ptr |
 				     ((u64)bp->ext_cmd_line_ptr << 32));
 
-	cmdline_find_option(cmdline_ptr, cmdline_arg, buffer, sizeof(buffer));
+	if (cmdline_find_option(cmdline_ptr, cmdline_arg, buffer, sizeof(buffer)) < 0)
+		return;
 
 	if (!strncmp(buffer, cmdline_on, sizeof(buffer)))
 		sme_me_mask = me_mask;
block/blk-mq.c +3 -2
index fe0a3a882f46..aa67a52c5a06 100644
@@ -2711,6 +2711,7 @@ static void blk_mq_dispatch_plug_list(struct blk_plug *plug, bool from_sched)
 	struct blk_mq_hw_ctx *this_hctx = NULL;
 	struct blk_mq_ctx *this_ctx = NULL;
 	struct request *requeue_list = NULL;
+	struct request **requeue_lastp = &requeue_list;
 	unsigned int depth = 0;
 	LIST_HEAD(list);
 
@@ -2721,10 +2722,10 @@ static void blk_mq_dispatch_plug_list(struct blk_plug *plug, bool from_sched)
 			this_hctx = rq->mq_hctx;
 			this_ctx = rq->mq_ctx;
 		} else if (this_hctx != rq->mq_hctx || this_ctx != rq->mq_ctx) {
-			rq_list_add(&requeue_list, rq);
+			rq_list_add_tail(&requeue_lastp, rq);
 			continue;
 		}
-		list_add_tail(&rq->queuelist, &list);
+		list_add(&rq->queuelist, &list);
 		depth++;
 	} while (!rq_list_empty(plug->mq_list));
 
drivers/acpi/pptt.c +4 -1
index c91342dcbcd6..ced3eb15bd8b 100644
@@ -537,16 +537,19 @@ static int topology_get_acpi_cpu_tag(struct acpi_table_header *table,
 static struct acpi_table_header *acpi_get_pptt(void)
 {
 	static struct acpi_table_header *pptt;
+	static bool is_pptt_checked;
 	acpi_status status;
 
 	/*
 	 * PPTT will be used at runtime on every CPU hotplug in path, so we
 	 * don't need to call acpi_put_table() to release the table mapping.
 	 */
-	if (!pptt) {
+	if (!pptt && !is_pptt_checked) {
 		status = acpi_get_table(ACPI_SIG_PPTT, 0, &pptt);
 		if (ACPI_FAILURE(status))
 			acpi_pptt_warn_missing();
+
+		is_pptt_checked = true;
 	}
 
 	return pptt;
drivers/block/loop.c +17 -8
index 981464e561df..793ae876918c 100644
@@ -1853,35 +1853,44 @@ static blk_status_t loop_queue_rq(struct blk_mq_hw_ctx *hctx,
 
 static void loop_handle_cmd(struct loop_cmd *cmd)
 {
+	struct cgroup_subsys_state *cmd_blkcg_css = cmd->blkcg_css;
+	struct cgroup_subsys_state *cmd_memcg_css = cmd->memcg_css;
 	struct request *rq = blk_mq_rq_from_pdu(cmd);
 	const bool write = op_is_write(req_op(rq));
 	struct loop_device *lo = rq->q->queuedata;
 	int ret = 0;
 	struct mem_cgroup *old_memcg = NULL;
+	const bool use_aio = cmd->use_aio;
 
 	if (write && (lo->lo_flags & LO_FLAGS_READ_ONLY)) {
 		ret = -EIO;
 		goto failed;
 	}
 
-	if (cmd->blkcg_css)
-		kthread_associate_blkcg(cmd->blkcg_css);
-	if (cmd->memcg_css)
+	if (cmd_blkcg_css)
+		kthread_associate_blkcg(cmd_blkcg_css);
+	if (cmd_memcg_css)
 		old_memcg = set_active_memcg(
-			mem_cgroup_from_css(cmd->memcg_css));
+			mem_cgroup_from_css(cmd_memcg_css));
 
+	/*
+	 * do_req_filebacked() may call blk_mq_complete_request() synchronously
+	 * or asynchronously if using aio. Hence, do not touch 'cmd' after
+	 * do_req_filebacked() has returned unless we are sure that 'cmd' has
+	 * not yet been completed.
+	 */
 	ret = do_req_filebacked(lo, rq);
 
-	if (cmd->blkcg_css)
+	if (cmd_blkcg_css)
 		kthread_associate_blkcg(NULL);
 
-	if (cmd->memcg_css) {
+	if (cmd_memcg_css) {
 		set_active_memcg(old_memcg);
-		css_put(cmd->memcg_css);
+		css_put(cmd_memcg_css);
 	}
  failed:
 	/* complete non-aio request */
-	if (!cmd->use_aio || ret) {
+	if (!use_aio || ret) {
 		if (ret == -EOPNOTSUPP)
 			cmd->ret = ret;
 		else
drivers/block/null_blk/main.c +3 -3
index 1f154f92f4c2..af419af9a0f4 100644
@@ -1393,8 +1393,7 @@ static inline void nullb_complete_cmd(struct nullb_cmd *cmd)
 	case NULL_IRQ_SOFTIRQ:
 		switch (cmd->nq->dev->queue_mode) {
 		case NULL_Q_MQ:
-			if (likely(!blk_should_fake_timeout(cmd->rq->q)))
-				blk_mq_complete_request(cmd->rq);
+			blk_mq_complete_request(cmd->rq);
 			break;
 		case NULL_Q_BIO:
 			/*
@@ -1655,7 +1654,8 @@ static blk_status_t null_queue_rq(struct blk_mq_hw_ctx *hctx,
 	cmd->rq = bd->rq;
 	cmd->error = BLK_STS_OK;
 	cmd->nq = nq;
-	cmd->fake_timeout = should_timeout_request(bd->rq);
+	cmd->fake_timeout = should_timeout_request(bd->rq) ||
+		blk_should_fake_timeout(bd->rq->q);
 
 	blk_mq_start_request(bd->rq);
 
drivers/block/sunvdc.c +2 -0
index fb855da971ee..9fa821fa76b0 100644
@@ -972,6 +972,8 @@ static int vdc_port_probe(struct vio_dev *vdev, const struct vio_device_id *id)
 	print_version();
 
 	hp = mdesc_grab();
+	if (!hp)
+		return -ENODEV;
 
 	err = -ENODEV;
 	if ((vdev->dev_no << PARTITION_SHIFT) & ~(u64)MINORMASK) {
drivers/clk/Kconfig +1 -1
index d79905f3e174..5da82f2bdd21 100644
@@ -92,7 +92,7 @@ config COMMON_CLK_RK808
 config COMMON_CLK_HI655X
 	tristate "Clock driver for Hi655x" if EXPERT
 	depends on (MFD_HI655X_PMIC || COMPILE_TEST)
-	depends on REGMAP
+	select REGMAP
 	default MFD_HI655X_PMIC
 	help
 	  This driver supports the hi655x PMIC clock. This
drivers/cpuidle/cpuidle-psci-domain.c +2 -1
index 821984947ed9..fe0664472520 100644
@@ -103,7 +103,8 @@ static void psci_pd_remove(void)
 	struct psci_pd_provider *pd_provider, *it;
 	struct generic_pm_domain *genpd;
 
-	list_for_each_entry_safe(pd_provider, it, &psci_pd_providers, link) {
+	list_for_each_entry_safe_reverse(pd_provider, it,
+					 &psci_pd_providers, link) {
 		of_genpd_del_provider(pd_provider->node);
 
 		genpd = of_genpd_remove_last(pd_provider->node);
drivers/firmware/xilinx/zynqmp.c +1 -1
index ff5cabe70a2b..6587fa8570dc 100644
@@ -206,7 +206,7 @@ static int do_feature_check_call(const u32 api_id)
 	}
 
 	/* Add new entry if not present */
-	feature_data = kmalloc(sizeof(*feature_data), GFP_KERNEL);
+	feature_data = kmalloc(sizeof(*feature_data), GFP_ATOMIC);
 	if (!feature_data)
 		return -ENOMEM;
 
drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c +3 -3
index 087147f09933..3b8825a3e233 100644
@@ -1695,7 +1695,7 @@ static int psp_hdcp_initialize(struct psp_context *psp)
 	psp->hdcp_context.context.mem_context.shared_mem_size = PSP_HDCP_SHARED_MEM_SIZE;
 	psp->hdcp_context.context.ta_load_type = GFX_CMD_ID_LOAD_TA;
 
-	if (!psp->hdcp_context.context.initialized) {
+	if (!psp->hdcp_context.context.mem_context.shared_buf) {
 		ret = psp_ta_init_shared_buf(psp, &psp->hdcp_context.context.mem_context);
 		if (ret)
 			return ret;
@@ -1762,7 +1762,7 @@ static int psp_dtm_initialize(struct psp_context *psp)
 	psp->dtm_context.context.mem_context.shared_mem_size = PSP_DTM_SHARED_MEM_SIZE;
 	psp->dtm_context.context.ta_load_type = GFX_CMD_ID_LOAD_TA;
 
-	if (!psp->dtm_context.context.initialized) {
+	if (!psp->dtm_context.context.mem_context.shared_buf) {
 		ret = psp_ta_init_shared_buf(psp, &psp->dtm_context.context.mem_context);
 		if (ret)
 			return ret;
@@ -1830,7 +1830,7 @@ static int psp_rap_initialize(struct psp_context *psp)
 	psp->rap_context.context.mem_context.shared_mem_size = PSP_RAP_SHARED_MEM_SIZE;
 	psp->rap_context.context.ta_load_type = GFX_CMD_ID_LOAD_TA;
 
-	if (!psp->rap_context.context.initialized) {
+	if (!psp->rap_context.context.mem_context.shared_buf) {
 		ret = psp_ta_init_shared_buf(psp, &psp->rap_context.context.mem_context);
 		if (ret)
 			return ret;
drivers/gpu/drm/amd/amdkfd/kfd_device.c +10 -1
index 65a1d4f9004b..a75e1af77365 100644
@@ -59,6 +59,7 @@ static int kfd_gtt_sa_init(struct kfd_dev *kfd, unsigned int buf_size,
 				unsigned int chunk_size);
 static void kfd_gtt_sa_fini(struct kfd_dev *kfd);
 
+static int kfd_resume_iommu(struct kfd_dev *kfd);
 static int kfd_resume(struct kfd_dev *kfd);
 
 static void kfd_device_info_set_sdma_info(struct kfd_dev *kfd)
@@ -634,7 +635,7 @@ bool kgd2kfd_device_init(struct kfd_dev *kfd,
 
 	svm_migrate_init(kfd->adev);
 
-	if (kgd2kfd_resume_iommu(kfd))
+	if (kfd_resume_iommu(kfd))
 		goto device_iommu_error;
 
 	if (kfd_resume(kfd))
@@ -782,6 +783,14 @@ int kgd2kfd_resume(struct kfd_dev *kfd, bool run_pm)
 }
 
 int kgd2kfd_resume_iommu(struct kfd_dev *kfd)
+{
+	if (!kfd->init_complete)
+		return 0;
+
+	return kfd_resume_iommu(kfd);
+}
+
+static int kfd_resume_iommu(struct kfd_dev *kfd)
 {
 	int err = 0;
 
drivers/gpu/drm/amd/amdkfd/kfd_events.c +3 -6
index 729d26d648af..2880ed96ac2e 100644
@@ -778,16 +778,13 @@ static struct kfd_event_waiter *alloc_event_waiters(uint32_t num_events)
 	struct kfd_event_waiter *event_waiters;
 	uint32_t i;
 
-	event_waiters = kmalloc_array(num_events,
-					sizeof(struct kfd_event_waiter),
-					GFP_KERNEL);
+	event_waiters = kcalloc(num_events, sizeof(struct kfd_event_waiter),
+				GFP_KERNEL);
 	if (!event_waiters)
 		return NULL;
 
-	for (i = 0; (event_waiters) && (i < num_events) ; i++) {
+	for (i = 0; i < num_events; i++)
 		init_wait(&event_waiters[i].wait);
-		event_waiters[i].activated = false;
-	}
 
 	return event_waiters;
 }
drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hwseq.c +0 -3
index 8c5045711264..c20e9f76f021 100644
@@ -992,8 +992,5 @@ void dcn30_prepare_bandwidth(struct dc *dc,
 			dc->clk_mgr->funcs->set_max_memclk(dc->clk_mgr, dc->clk_mgr->bw_params->clk_table.entries[dc->clk_mgr->bw_params->clk_table.num_entries - 1].memclk_mhz);
 
 	dcn20_prepare_bandwidth(dc, context);
-
-	dc_dmub_srv_p_state_delegate(dc,
-		context->bw_ctx.bw.dcn.clk.fw_based_mclk_switching, context);
 }
 
drivers/gpu/drm/amd/display/dc/dcn32/dcn32_resource.c +5 -1
index d70c64a9fcb2..26fc5cad7a77 100644
@@ -1883,6 +1883,7 @@ int dcn32_populate_dml_pipes_from_context(
 	bool subvp_in_use = false;
 	uint8_t is_pipe_split_expected[MAX_PIPES] = {0};
 	struct dc_crtc_timing *timing;
+	bool vsr_odm_support = false;
 
 	dcn20_populate_dml_pipes_from_context(dc, context, pipes, fast_validate);
 
@@ -1900,12 +1901,15 @@ int dcn32_populate_dml_pipes_from_context(
 		timing = &pipe->stream->timing;
 
 		pipes[pipe_cnt].pipe.dest.odm_combine_policy = dm_odm_combine_policy_dal;
+		vsr_odm_support = (res_ctx->pipe_ctx[i].stream->src.width >= 5120 &&
+				res_ctx->pipe_ctx[i].stream->src.width > res_ctx->pipe_ctx[i].stream->dst.width);
 		if (context->stream_count == 1 &&
 				context->stream_status[0].plane_count == 1 &&
 				!dc_is_hdmi_signal(res_ctx->pipe_ctx[i].stream->signal) &&
 				is_h_timing_divisible_by_2(res_ctx->pipe_ctx[i].stream) &&
 				pipe->stream->timing.pix_clk_100hz * 100 > DCN3_2_VMIN_DISPCLK_HZ &&
-				dc->debug.enable_single_display_2to1_odm_policy) {
+				dc->debug.enable_single_display_2to1_odm_policy &&
+				!vsr_odm_support) { //excluding 2to1 ODM combine on >= 5k vsr
 			pipes[pipe_cnt].pipe.dest.odm_combine_policy = dm_odm_combine_policy_2to1;
 		}
 		pipe_cnt++;
drivers/gpu/drm/amd/display/dc/dml/dcn30/display_mode_vba_30.c +4 -1
index 479e2c1a1301..49da8119b28e 100644
@@ -1802,7 +1802,10 @@ static unsigned int CalculateVMAndRowBytes(
 	}
 
 	if (SurfaceTiling == dm_sw_linear) {
-		*dpte_row_height = dml_min(128, 1 << (unsigned int) dml_floor(dml_log2(PTEBufferSizeInRequests * *PixelPTEReqWidth / Pitch), 1));
+		if (PTEBufferSizeInRequests == 0)
+			*dpte_row_height = 1;
+		else
+			*dpte_row_height = dml_min(128, 1 << (unsigned int) dml_floor(dml_log2(PTEBufferSizeInRequests * *PixelPTEReqWidth / Pitch), 1));
 		*dpte_row_width_ub = (dml_ceil(((double) SwathWidth - 1) / *PixelPTEReqWidth, 1) + 1) * *PixelPTEReqWidth;
 		*PixelPTEBytesPerRow = *dpte_row_width_ub / *PixelPTEReqWidth * *PTERequestSize;
 	} else if (ScanDirection != dm_vert) {
drivers/gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu13_driver_if_v13_0_4.h +2 -2
index f77401709d83..2162ecd1057d 100644
@@ -27,7 +27,7 @@
 // *** IMPORTANT ***
 // SMU TEAM: Always increment the interface version if
 // any structure is changed in this file
-#define PMFW_DRIVER_IF_VERSION 7
+#define PMFW_DRIVER_IF_VERSION 8
 
 typedef struct {
   int32_t value;
@@ -198,7 +198,7 @@ typedef struct {
   uint16_t SkinTemp;
   uint16_t DeviceState;
   uint16_t CurTemp;                     //[centi-Celsius]
-  uint16_t spare2;
+  uint16_t FilterAlphaValue;
 
   uint16_t AverageGfxclkFrequency;
   uint16_t AverageFclkFrequency;
drivers/gpu/drm/amd/pm/swsmu/inc/smu_v13_0.h +1 -1
index 992163e66f7b..bffa6247c3cd 100644
@@ -29,7 +29,7 @@
 #define SMU13_DRIVER_IF_VERSION_YELLOW_CARP 0x04
 #define SMU13_DRIVER_IF_VERSION_ALDE 0x08
 #define SMU13_DRIVER_IF_VERSION_SMU_V13_0_0_0 0x37
-#define SMU13_DRIVER_IF_VERSION_SMU_V13_0_4 0x07
+#define SMU13_DRIVER_IF_VERSION_SMU_V13_0_4 0x08
 #define SMU13_DRIVER_IF_VERSION_SMU_V13_0_5 0x04
 #define SMU13_DRIVER_IF_VERSION_SMU_V13_0_0_10 0x32
 #define SMU13_DRIVER_IF_VERSION_SMU_V13_0_7 0x37
drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c +33 -10

69 lines not on this page · raw message

drivers/gpu/drm/drm_gem.c +7 -2
index 8b68a3c1e6ab..b87ed4238fc8 100644
@@ -1351,10 +1351,13 @@ EXPORT_SYMBOL(drm_gem_lru_move_tail);
  *
  * @lru: The LRU to scan
  * @nr_to_scan: The number of pages to try to reclaim
+ * @remaining: The number of pages left to reclaim, should be initialized by caller
  * @shrink: Callback to try to shrink/reclaim the object.
  */
 unsigned long
-drm_gem_lru_scan(struct drm_gem_lru *lru, unsigned nr_to_scan,
+drm_gem_lru_scan(struct drm_gem_lru *lru,
+		 unsigned int nr_to_scan,
+		 unsigned long *remaining,
 		 bool (*shrink)(struct drm_gem_object *obj))
 {
 	struct drm_gem_lru still_in_lru;
@@ -1393,8 +1396,10 @@ drm_gem_lru_scan(struct drm_gem_lru *lru, unsigned nr_to_scan,
 		 * hit shrinker in response to trying to get backing pages
 		 * for this obj (ie. while it's lock is already held)
 		 */
-		if (!dma_resv_trylock(obj->resv))
+		if (!dma_resv_trylock(obj->resv)) {
+			*remaining += obj->size >> PAGE_SHIFT;
 			goto tail;
+		}
 
 		if (shrink(obj)) {
 			freed += obj->size >> PAGE_SHIFT;
drivers/gpu/drm/drm_gem_shmem_helper.c +6 -3
index 7af9da886d4e..5fdc608043e7 100644
@@ -622,11 +622,14 @@ int drm_gem_shmem_mmap(struct drm_gem_shmem_object *shmem, struct vm_area_struct
 	int ret;
 
 	if (obj->import_attach) {
-		/* Drop the reference drm_gem_mmap_obj() acquired.*/
-		drm_gem_object_put(obj);
 		vma->vm_private_data = NULL;
+		ret = dma_buf_mmap(obj->dma_buf, vma, 0);
+
+		/* Drop the reference drm_gem_mmap_obj() acquired.*/
+		if (!ret)
+			drm_gem_object_put(obj);
 
-		return dma_buf_mmap(obj->dma_buf, vma, 0);
+		return ret;
 	}
 
 	ret = drm_gem_shmem_get_pages(shmem);
drivers/gpu/drm/i915/display/intel_display_types.h +2 -0
index 135dbcab62b2..63b7105e818a 100644
@@ -1604,6 +1604,8 @@ struct intel_psr {
 	bool psr2_sel_fetch_cff_enabled;
 	bool req_psr2_sdp_prior_scanline;
 	u8 sink_sync_latency;
+	u8 io_wake_lines;
+	u8 fast_wake_lines;
 	ktime_t last_entry_attempt;
 	ktime_t last_exit;
 	bool sink_not_reliable;
drivers/gpu/drm/i915/display/intel_psr.c +61 -17

110 lines not on this page · raw message

drivers/gpu/drm/i915/display/intel_snps_phy.c +62 -0

82 lines not on this page · raw message

drivers/gpu/drm/i915/gt/intel_sseu.h +1 -1
index aa87d3832d60..d7e8c374f153 100644
@@ -27,7 +27,7 @@ struct drm_printer;
  * is only relevant to pre-Xe_HP platforms (Xe_HP and beyond use the
  * I915_MAX_SS_FUSE_BITS value below).
  */
-#define GEN_MAX_SS_PER_HSW_SLICE	6
+#define GEN_MAX_SS_PER_HSW_SLICE	8
 
 /*
  * Maximum number of 32-bit registers used by hardware to express the
drivers/gpu/drm/i915/i915_active.c +14 -11
index 7412abf166a8..a9fea115f2d2 100644
@@ -422,12 +422,12 @@ replace_barrier(struct i915_active *ref, struct i915_active_fence *active)
 	 * we can use it to substitute for the pending idle-barrer
 	 * request that we want to emit on the kernel_context.
 	 */
-	__active_del_barrier(ref, node_from_active(active));
-	return true;
+	return __active_del_barrier(ref, node_from_active(active));
 }
 
 int i915_active_add_request(struct i915_active *ref, struct i915_request *rq)
 {
+	u64 idx = i915_request_timeline(rq)->fence_context;
 	struct dma_fence *fence = &rq->fence;
 	struct i915_active_fence *active;
 	int err;
@@ -437,16 +437,19 @@ int i915_active_add_request(struct i915_active *ref, struct i915_request *rq)
 	if (err)
 		return err;
 
-	active = active_instance(ref, i915_request_timeline(rq)->fence_context);
-	if (!active) {
-		err = -ENOMEM;
-		goto out;
-	}
+	do {
+		active = active_instance(ref, idx);
+		if (!active) {
+			err = -ENOMEM;
+			goto out;
+		}
+
+		if (replace_barrier(ref, active)) {
+			RCU_INIT_POINTER(active->fence, NULL);
+			atomic_dec(&ref->count);
+		}
+	} while (unlikely(is_barrier(active)));
 
-	if (replace_barrier(ref, active)) {
-		RCU_INIT_POINTER(active->fence, NULL);
-		atomic_dec(&ref->count);
-	}
 	if (!__i915_active_fence_set(active, fence))
 		__i915_active_acquire(ref);
 
drivers/gpu/drm/meson/meson_vpp.c +2 -0
index 154837688ab0..5df1957c8e41 100644
@@ -100,6 +100,8 @@ void meson_vpp_init(struct meson_drm *priv)
 			       priv->io_base + _REG(VPP_DOLBY_CTRL));
 		writel_relaxed(0x1020080,
 				priv->io_base + _REG(VPP_DUMMY_DATA1));
+		writel_relaxed(0x42020,
+				priv->io_base + _REG(VPP_DUMMY_DATA));
 	} else if (meson_vpu_is_compatible(priv, VPU_COMPATIBLE_G12A))
 		writel_relaxed(0xf, priv->io_base + _REG(DOLBY_PATH_CTRL));
 
drivers/gpu/drm/msm/msm_gem_shrinker.c +9 -2
index 1de14e67f96b..31f054c903a4 100644
@@ -107,6 +107,7 @@ msm_gem_shrinker_scan(struct shrinker *shrinker, struct shrink_control *sc)
 		bool (*shrink)(struct drm_gem_object *obj);
 		bool cond;
 		unsigned long freed;
+		unsigned long remaining;
 	} stages[] = {
 		/* Stages of progressively more aggressive/expensive reclaim: */
 		{ &priv->lru.dontneed, purge,        true },
@@ -116,14 +117,18 @@ msm_gem_shrinker_scan(struct shrinker *shrinker, struct shrink_control *sc)
 	};
 	long nr = sc->nr_to_scan;
 	unsigned long freed = 0;
+	unsigned long remaining = 0;
 
 	for (unsigned i = 0; (nr > 0) && (i < ARRAY_SIZE(stages)); i++) {
 		if (!stages[i].cond)
 			continue;
 		stages[i].freed =
-			drm_gem_lru_scan(stages[i].lru, nr, stages[i].shrink);
+			drm_gem_lru_scan(stages[i].lru, nr,
+					&stages[i].remaining,
+					 stages[i].shrink);
 		nr -= stages[i].freed;
 		freed += stages[i].freed;
+		remaining += stages[i].remaining;
 	}
 
 	if (freed) {
@@ -132,7 +137,7 @@ msm_gem_shrinker_scan(struct shrinker *shrinker, struct shrink_control *sc)
 				     stages[3].freed);
 	}
 
-	return (freed > 0) ? freed : SHRINK_STOP;
+	return (freed > 0 && remaining > 0) ? freed : SHRINK_STOP;
 }
 
 #ifdef CONFIG_DEBUG_FS
@@ -182,10 +187,12 @@ msm_gem_shrinker_vmap(struct notifier_block *nb, unsigned long event, void *ptr)
 		NULL,
 	};
 	unsigned idx, unmapped = 0;
+	unsigned long remaining = 0;
 
 	for (idx = 0; lrus[idx] && unmapped < vmap_shrink_limit; idx++) {
 		unmapped += drm_gem_lru_scan(lrus[idx],
 					     vmap_shrink_limit - unmapped,
+					     &remaining,
 					     vmap_shrink);
 	}
 
drivers/gpu/drm/panfrost/panfrost_mmu.c +1 -1
index 4e83a1891f3e..666a5e53fe19 100644
@@ -282,7 +282,7 @@ static void panfrost_mmu_flush_range(struct panfrost_device *pfdev,
 	if (pm_runtime_active(pfdev->dev))
 		mmu_hw_do_operation(pfdev, mmu, iova, size, AS_COMMAND_FLUSH_PT);
 
-	pm_runtime_put_sync_autosuspend(pfdev->dev);
+	pm_runtime_put_autosuspend(pfdev->dev);
 }
 
 static int mmu_map_sg(struct panfrost_device *pfdev, struct panfrost_mmu *mmu,
drivers/gpu/drm/sun4i/sun4i_drv.c +4 -2
index d06ffd99d86e..7910c5853f0a 100644
@@ -95,12 +95,12 @@ static int sun4i_drv_bind(struct device *dev)
 	/* drm_vblank_init calls kcalloc, which can fail */
 	ret = drm_vblank_init(drm, drm->mode_config.num_crtc);
 	if (ret)
-		goto cleanup_mode_config;
+		goto unbind_all;
 
 	/* Remove early framebuffers (ie. simplefb) */
 	ret = drm_aperture_remove_framebuffers(false, &sun4i_drv_driver);
 	if (ret)
-		goto cleanup_mode_config;
+		goto unbind_all;
 
 	sun4i_framebuffer_init(drm);
 
@@ -119,6 +119,8 @@ static int sun4i_drv_bind(struct device *dev)
 
 finish_poll:
 	drm_kms_helper_poll_fini(drm);
+unbind_all:
+	component_unbind_all(dev, NULL);
 cleanup_mode_config:
 	drm_mode_config_cleanup(drm);
 	of_reserved_mem_device_release(dev);
drivers/gpu/drm/ttm/ttm_device.c +1 -1
index e7147e304637..b84f74807ca1 100644
@@ -158,7 +158,7 @@ int ttm_device_swapout(struct ttm_device *bdev, struct ttm_operation_ctx *ctx,
 			struct ttm_buffer_object *bo = res->bo;
 			uint32_t num_pages;
 
-			if (!bo)
+			if (!bo || bo->resource != res)
 				continue;
 
 			num_pages = PFN_UP(bo->base.size);
drivers/gpu/drm/virtio/virtgpu_vq.c +2 -2
index 9ff8660b50ad..208e9434cb28 100644
@@ -597,7 +597,7 @@ void virtio_gpu_cmd_transfer_to_host_2d(struct virtio_gpu_device *vgdev,
 	bool use_dma_api = !virtio_has_dma_quirk(vgdev->vdev);
 
 	if (virtio_gpu_is_shmem(bo) && use_dma_api)
-		dma_sync_sgtable_for_device(&vgdev->vdev->dev,
+		dma_sync_sgtable_for_device(vgdev->vdev->dev.parent,
 					    bo->base.sgt, DMA_TO_DEVICE);
 
 	cmd_p = virtio_gpu_alloc_cmd(vgdev, &vbuf, sizeof(*cmd_p));
@@ -1019,7 +1019,7 @@ void virtio_gpu_cmd_transfer_to_host_3d(struct virtio_gpu_device *vgdev,
 	bool use_dma_api = !virtio_has_dma_quirk(vgdev->vdev);
 
 	if (virtio_gpu_is_shmem(bo) && use_dma_api)
-		dma_sync_sgtable_for_device(&vgdev->vdev->dev,
+		dma_sync_sgtable_for_device(vgdev->vdev->dev.parent,
 					    bo->base.sgt, DMA_TO_DEVICE);
 
 	cmd_p = virtio_gpu_alloc_cmd(vgdev, &vbuf, sizeof(*cmd_p));
drivers/hwmon/adt7475.c +4 -4
index 51b3d16c3223..6e4c92b500b8 100644
@@ -488,10 +488,10 @@ static ssize_t temp_store(struct device *dev, struct device_attribute *attr,
 		val = (temp - val) / 1000;
 
 		if (sattr->index != 1) {
-			data->temp[HYSTERSIS][sattr->index] &= 0xF0;
+			data->temp[HYSTERSIS][sattr->index] &= 0x0F;
 			data->temp[HYSTERSIS][sattr->index] |= (val & 0xF) << 4;
 		} else {
-			data->temp[HYSTERSIS][sattr->index] &= 0x0F;
+			data->temp[HYSTERSIS][sattr->index] &= 0xF0;
 			data->temp[HYSTERSIS][sattr->index] |= (val & 0xF);
 		}
 
@@ -556,11 +556,11 @@ static ssize_t temp_st_show(struct device *dev, struct device_attribute *attr,
 		val = data->enh_acoustics[0] & 0xf;
 		break;
 	case 1:
-		val = (data->enh_acoustics[1] >> 4) & 0xf;
+		val = data->enh_acoustics[1] & 0xf;
 		break;
 	case 2:
 	default:
-		val = data->enh_acoustics[1] & 0xf;
+		val = (data->enh_acoustics[1] >> 4) & 0xf;
 		break;
 	}
 
drivers/hwmon/ina3221.c +1 -1
index e06186986444..f3a4c5633b1e 100644
@@ -772,7 +772,7 @@ static int ina3221_probe_child_from_dt(struct device *dev,
 		return ret;
 	} else if (val > INA3221_CHANNEL3) {
 		dev_err(dev, "invalid reg %d of %pOFn\n", val, child);
-		return ret;
+		return -EINVAL;
 	}
 
 	input = &ina->inputs[val];
drivers/hwmon/ltc2992.c +1 -0
index 72489d5d7eaf..d88e883c7492 100644
@@ -323,6 +323,7 @@ static int ltc2992_config_gpio(struct ltc2992_state *st)
 	st->gc.label = name;
 	st->gc.parent = &st->client->dev;
 	st->gc.owner = THIS_MODULE;
+	st->gc.can_sleep = true;
 	st->gc.base = -1;
 	st->gc.names = st->gpio_names;
 	st->gc.ngpio = ARRAY_SIZE(st->gpio_names);
drivers/hwmon/pmbus/adm1266.c +1 -0
index ec5f932fc6f0..1ac2b2f4c570 100644
@@ -301,6 +301,7 @@ static int adm1266_config_gpio(struct adm1266_data *data)
 	data->gc.label = name;
 	data->gc.parent = &data->client->dev;
 	data->gc.owner = THIS_MODULE;
+	data->gc.can_sleep = true;
 	data->gc.base = -1;
 	data->gc.names = data->gpio_names;
 	data->gc.ngpio = ARRAY_SIZE(data->gpio_names);
drivers/hwmon/pmbus/ucd9000.c +75 -0

105 lines not on this page · raw message

drivers/hwmon/tmp513.c +1 -1
index 47bbe47e062f..7d5f7441aceb 100644
@@ -758,7 +758,7 @@ static int tmp51x_probe(struct i2c_client *client)
 static struct i2c_driver tmp51x_driver = {
 	.driver = {
 		.name	= "tmp51x",
-		.of_match_table = of_match_ptr(tmp51x_of_match),
+		.of_match_table = tmp51x_of_match,
 	},
 	.probe_new	= tmp51x_probe,
 	.id_table	= tmp51x_id,
drivers/hwmon/xgene-hwmon.c +1 -0
index 5cde837bfd09..d1abea49f01b 100644
@@ -761,6 +761,7 @@ static int xgene_hwmon_remove(struct platform_device *pdev)
 {
 	struct xgene_hwmon_dev *ctx = platform_get_drvdata(pdev);
 
+	cancel_work_sync(&ctx->workq);
 	hwmon_device_unregister(ctx->hwmon_dev);
 	kfifo_free(&ctx->async_msg_fifo);
 	if (acpi_disabled)
drivers/interconnect/core.c +43 -25

103 lines not on this page · raw message

drivers/interconnect/imx/imx.c +10 -10
index 823d9be9771a..979ed610f704 100644
@@ -295,6 +295,9 @@ int imx_icc_register(struct platform_device *pdev,
 	provider->xlate = of_icc_xlate_onecell;
 	provider->data = data;
 	provider->dev = dev->parent;
+
+	icc_provider_init(provider);
+
 	platform_set_drvdata(pdev, imx_provider);
 
 	if (settings) {
@@ -306,20 +309,18 @@ int imx_icc_register(struct platform_device *pdev,
 		}
 	}
 
-	ret = icc_provider_add(provider);
-	if (ret) {
-		dev_err(dev, "error adding interconnect provider: %d\n", ret);
+	ret = imx_icc_register_nodes(imx_provider, nodes, nodes_count, settings);
+	if (ret)
 		return ret;
-	}
 
-	ret = imx_icc_register_nodes(imx_provider, nodes, nodes_count, settings);
+	ret = icc_provider_register(provider);
 	if (ret)
-		goto provider_del;
+		goto err_unregister_nodes;
 
 	return 0;
 
-provider_del:
-	icc_provider_del(provider);
+err_unregister_nodes:
+	imx_icc_unregister_nodes(&imx_provider->provider);
 	return ret;
 }
 EXPORT_SYMBOL_GPL(imx_icc_register);
@@ -328,9 +329,8 @@ void imx_icc_unregister(struct platform_device *pdev)
 {
 	struct imx_icc_provider *imx_provider = platform_get_drvdata(pdev);
 
+	icc_provider_deregister(&imx_provider->provider);
 	imx_icc_unregister_nodes(&imx_provider->provider);
-
-	icc_provider_del(&imx_provider->provider);
 }
 EXPORT_SYMBOL_GPL(imx_icc_unregister);
 
drivers/interconnect/qcom/icc-rpm.c +16 -13
index 39e43b957599..6a9e6b563320 100644
@@ -506,7 +506,6 @@ int qnoc_probe(struct platform_device *pdev)
 	}
 
 	provider = &qp->provider;
-	INIT_LIST_HEAD(&provider->nodes);
 	provider->dev = dev;
 	provider->set = qcom_icc_set;
 	provider->pre_aggregate = qcom_icc_pre_bw_aggregate;
@@ -514,12 +513,7 @@ int qnoc_probe(struct platform_device *pdev)
 	provider->xlate_extended = qcom_icc_xlate_extended;
 	provider->data = data;
 
-	ret = icc_provider_add(provider);
-	if (ret) {
-		dev_err(dev, "error adding interconnect provider: %d\n", ret);
-		clk_bulk_disable_unprepare(qp->num_clks, qp->bus_clks);
-		return ret;
-	}
+	icc_provider_init(provider);
 
 	for (i = 0; i < num_nodes; i++) {
 		size_t j;
@@ -527,7 +521,7 @@ int qnoc_probe(struct platform_device *pdev)
 		node = icc_node_create(qnodes[i]->id);
 		if (IS_ERR(node)) {
 			ret = PTR_ERR(node);
-			goto err;
+			goto err_remove_nodes;
 		}
 
 		node->name = qnodes[i]->name;
@@ -541,17 +535,26 @@ int qnoc_probe(struct platform_device *pdev)
 	}
 	data->num_nodes = num_nodes;
 
+	ret = icc_provider_register(provider);
+	if (ret)
+		goto err_remove_nodes;
+
 	platform_set_drvdata(pdev, qp);
 
 	/* Populate child NoC devices if any */
-	if (of_get_child_count(dev->of_node) > 0)
-		return of_platform_populate(dev->of_node, NULL, NULL, dev);
+	if (of_get_child_count(dev->of_node) > 0) {
+		ret = of_platform_populate(dev->of_node, NULL, NULL, dev);
+		if (ret)
+			goto err_deregister_provider;
+	}
 
 	return 0;
-err:
+
+err_deregister_provider:
+	icc_provider_deregister(provider);
+err_remove_nodes:
 	icc_nodes_remove(provider);
 	clk_bulk_disable_unprepare(qp->num_clks, qp->bus_clks);
-	icc_provider_del(provider);
 
 	return ret;
 }
@@ -561,9 +564,9 @@ int qnoc_remove(struct platform_device *pdev)
 {
 	struct qcom_icc_provider *qp = platform_get_drvdata(pdev);
 
+	icc_provider_deregister(&qp->provider);
 	icc_nodes_remove(&qp->provider);
 	clk_bulk_disable_unprepare(qp->num_clks, qp->bus_clks);
-	icc_provider_del(&qp->provider);
 
 	return 0;
 }
drivers/interconnect/qcom/icc-rpmh.c +19 -11
index fd17291c61eb..fdb5e58e408b 100644
@@ -192,9 +192,10 @@ int qcom_icc_rpmh_probe(struct platform_device *pdev)
 	provider->pre_aggregate = qcom_icc_pre_aggregate;
 	provider->aggregate = qcom_icc_aggregate;
 	provider->xlate_extended = qcom_icc_xlate_extended;
-	INIT_LIST_HEAD(&provider->nodes);
 	provider->data = data;
 
+	icc_provider_init(provider);
+
 	qp->dev = dev;
 	qp->bcms = desc->bcms;
 	qp->num_bcms = desc->num_bcms;
@@ -203,10 +204,6 @@ int qcom_icc_rpmh_probe(struct platform_device *pdev)
 	if (IS_ERR(qp->voter))
 		return PTR_ERR(qp->voter);
 
-	ret = icc_provider_add(provider);
-	if (ret)
-		return ret;
-
 	for (i = 0; i < qp->num_bcms; i++)
 		qcom_icc_bcm_init(qp->bcms[i], dev);
 
@@ -218,7 +215,7 @@ int qcom_icc_rpmh_probe(struct platform_device *pdev)
 		node = icc_node_create(qn->id);
 		if (IS_ERR(node)) {
 			ret = PTR_ERR(node);
-			goto err;
+			goto err_remove_nodes;
 		}
 
 		node->name = qn->name;
@@ -232,16 +229,27 @@ int qcom_icc_rpmh_probe(struct platform_device *pdev)
 	}
 
 	data->num_nodes = num_nodes;
+
+	ret = icc_provider_register(provider);
+	if (ret)
+		goto err_remove_nodes;
+
 	platform_set_drvdata(pdev, qp);
 
 	/* Populate child NoC devices if any */
-	if (of_get_child_count(dev->of_node) > 0)
-		return of_platform_populate(dev->of_node, NULL, NULL, dev);
+	if (of_get_child_count(dev->of_node) > 0) {
+		ret = of_platform_populate(dev->of_node, NULL, NULL, dev);
+		if (ret)
+			goto err_deregister_provider;
+	}
 
 	return 0;
-err:
+
+err_deregister_provider:
+	icc_provider_deregister(provider);
+err_remove_nodes:
 	icc_nodes_remove(provider);
-	icc_provider_del(provider);
+
 	return ret;
 }
 EXPORT_SYMBOL_GPL(qcom_icc_rpmh_probe);
@@ -250,8 +258,8 @@ int qcom_icc_rpmh_remove(struct platform_device *pdev)
 {
 	struct qcom_icc_provider *qp = platform_get_drvdata(pdev);
 
+	icc_provider_deregister(&qp->provider);
 	icc_nodes_remove(&qp->provider);
-	icc_provider_del(&qp->provider);
 
 	return 0;
 }
drivers/interconnect/qcom/msm8974.c +8 -12
index 5ea192f1141d..1828deaca443 100644
@@ -692,7 +692,6 @@ static int msm8974_icc_probe(struct platform_device *pdev)
 		return ret;
 
 	provider = &qp->provider;
-	INIT_LIST_HEAD(&provider->nodes);
 	provider->dev = dev;
 	provider->set = msm8974_icc_set;
 	provider->aggregate = icc_std_aggregate;
@@ -700,11 +699,7 @@ static int msm8974_icc_probe(struct platform_device *pdev)
 	provider->data = data;
 	provider->get_bw = msm8974_get_bw;
 
-	ret = icc_provider_add(provider);
-	if (ret) {
-		dev_err(dev, "error adding interconnect provider: %d\n", ret);
-		goto err_disable_clks;
-	}
+	icc_provider_init(provider);
 
 	for (i = 0; i < num_nodes; i++) {
 		size_t j;
@@ -712,7 +707,7 @@ static int msm8974_icc_probe(struct platform_device *pdev)
 		node = icc_node_create(qnodes[i]->id);
 		if (IS_ERR(node)) {
 			ret = PTR_ERR(node);
-			goto err_del_icc;
+			goto err_remove_nodes;
 		}
 
 		node->name = qnodes[i]->name;
@@ -729,15 +724,16 @@ static int msm8974_icc_probe(struct platform_device *pdev)
 	}
 	data->num_nodes = num_nodes;
 
+	ret = icc_provider_register(provider);
+	if (ret)
+		goto err_remove_nodes;
+
 	platform_set_drvdata(pdev, qp);
 
 	return 0;
 
-err_del_icc:
+err_remove_nodes:
 	icc_nodes_remove(provider);
-	icc_provider_del(provider);
-
-err_disable_clks:
 	clk_bulk_disable_unprepare(qp->num_clks, qp->bus_clks);
 
 	return ret;
@@ -747,9 +743,9 @@ static int msm8974_icc_remove(struct platform_device *pdev)
 {
 	struct msm8974_icc_provider *qp = platform_get_drvdata(pdev);
 
+	icc_provider_deregister(&qp->provider);
 	icc_nodes_remove(&qp->provider);
 	clk_bulk_disable_unprepare(qp->num_clks, qp->bus_clks);
-	icc_provider_del(&qp->provider);
 
 	return 0;
 }
drivers/interconnect/qcom/osm-l3.c +6 -8
index ddbdf0943f94..333adb21e717 100644
@@ -216,8 +216,8 @@ static int qcom_osm_l3_remove(struct platform_device *pdev)
 {
 	struct qcom_osm_l3_icc_provider *qp = platform_get_drvdata(pdev);
 
+	icc_provider_deregister(&qp->provider);
 	icc_nodes_remove(&qp->provider);
-	icc_provider_del(&qp->provider);
 
 	return 0;
 }
@@ -303,14 +303,9 @@ static int qcom_osm_l3_probe(struct platform_device *pdev)
 	provider->set = qcom_osm_l3_set;
 	provider->aggregate = icc_std_aggregate;
 	provider->xlate = of_icc_xlate_onecell;
-	INIT_LIST_HEAD(&provider->nodes);
 	provider->data = data;
 
-	ret = icc_provider_add(provider);
-	if (ret) {
-		dev_err(&pdev->dev, "error adding interconnect provider\n");
-		return ret;
-	}
+	icc_provider_init(provider);
 
 	for (i = 0; i < num_nodes; i++) {
 		size_t j;
@@ -333,12 +328,15 @@ static int qcom_osm_l3_probe(struct platform_device *pdev)
 	}
 	data->num_nodes = num_nodes;
 
+	ret = icc_provider_register(provider);
+	if (ret)
+		goto err;
+
 	platform_set_drvdata(pdev, qp);
 
 	return 0;
 err:
 	icc_nodes_remove(provider);
-	icc_provider_del(provider);
 
 	return ret;
 }
drivers/interconnect/samsung/exynos.c +13 -13
index 6559d8cf8068..72e42603823b 100644
@@ -98,12 +98,13 @@ static int exynos_generic_icc_remove(struct platform_device *pdev)
 	struct exynos_icc_priv *priv = platform_get_drvdata(pdev);
 	struct icc_node *parent_node, *node = priv->node;
 
+	icc_provider_deregister(&priv->provider);
+
 	parent_node = exynos_icc_get_parent(priv->dev->parent->of_node);
 	if (parent_node && !IS_ERR(parent_node))
 		icc_link_destroy(node, parent_node);
 
 	icc_nodes_remove(&priv->provider);
-	icc_provider_del(&priv->provider);
 
 	return 0;
 }
@@ -132,15 +133,11 @@ static int exynos_generic_icc_probe(struct platform_device *pdev)
 	provider->inter_set = true;
 	provider->data = priv;
 
-	ret = icc_provider_add(provider);
-	if (ret < 0)
-		return ret;
+	icc_provider_init(provider);
 
 	icc_node = icc_node_create(pdev->id);
-	if (IS_ERR(icc_node)) {
-		ret = PTR_ERR(icc_node);
-		goto err_prov_del;
-	}
+	if (IS_ERR(icc_node))
+		return PTR_ERR(icc_node);
 
 	priv->node = icc_node;
 	icc_node->name = devm_kasprintf(&pdev->dev, GFP_KERNEL, "%pOFn",
@@ -149,6 +146,9 @@ static int exynos_generic_icc_probe(struct platform_device *pdev)
 				 &priv->bus_clk_ratio))
 		priv->bus_clk_ratio = EXYNOS_ICC_DEFAULT_BUS_CLK_RATIO;
 
+	icc_node->data = priv;
+	icc_node_add(icc_node, provider);
+
 	/*
 	 * Register a PM QoS request for the parent (devfreq) device.
 	 */
@@ -157,9 +157,6 @@ static int exynos_generic_icc_probe(struct platform_device *pdev)
 	if (ret < 0)
 		goto err_node_del;
 
-	icc_node->data = priv;
-	icc_node_add(icc_node, provider);
-
 	icc_parent_node = exynos_icc_get_parent(bus_dev->of_node);
 	if (IS_ERR(icc_parent_node)) {
 		ret = PTR_ERR(icc_parent_node);
@@ -171,14 +168,17 @@ static int exynos_generic_icc_probe(struct platform_device *pdev)
 			goto err_pmqos_del;
 	}
 
+	ret = icc_provider_register(provider);
+	if (ret < 0)
+		goto err_pmqos_del;
+
 	return 0;
 
 err_pmqos_del:
 	dev_pm_qos_remove_request(&priv->qos_req);
 err_node_del:
 	icc_nodes_remove(provider);
-err_prov_del:
-	icc_provider_del(provider);
+
 	return ret;
 }
 
drivers/md/Kconfig +4 -0
index 998a5cfdbc4e..662d219c39bf 100644
@@ -16,6 +16,10 @@ if MD
 config BLK_DEV_MD
 	tristate "RAID support"
 	select BLOCK_HOLDER_DEPRECATED if SYSFS
+	# BLOCK_LEGACY_AUTOLOAD requirement should be removed
+	# after relevant mdadm enhancements - to make "names=yes"
+	# the default - are widely available.
+	select BLOCK_LEGACY_AUTOLOAD
 	help
 	  This driver lets you combine several hard disk partitions into one
 	  logical block device. This can be used to simply append one
drivers/media/i2c/m5mols/m5mols_core.c +1 -1
index 2201d2a26353..c90442feb6dc 100644
@@ -488,7 +488,7 @@ static enum m5mols_restype __find_restype(u32 code)
 	do {
 		if (code == m5mols_default_ffmt[type].code)
 			return type;
-	} while (type++ != SIZE_DEFAULT_FFMT);
+	} while (++type != SIZE_DEFAULT_FFMT);
 
 	return 0;
 }
drivers/memory/tegra/mc.c +7 -9
index 2f7a58a9df1a..b38b565b308e 100644
@@ -769,16 +769,12 @@ static int tegra_mc_interconnect_setup(struct tegra_mc *mc)
 	mc->provider.aggregate = mc->soc->icc_ops->aggregate;
 	mc->provider.xlate_extended = mc->soc->icc_ops->xlate_extended;
 
-	err = icc_provider_add(&mc->provider);
-	if (err)
-		return err;
+	icc_provider_init(&mc->provider);
 
 	/* create Memory Controller node */
 	node = icc_node_create(TEGRA_ICC_MC);
-	if (IS_ERR(node)) {
-		err = PTR_ERR(node);
-		goto del_provider;
-	}
+	if (IS_ERR(node))
+		return PTR_ERR(node);
 
 	node->name = "Memory Controller";
 	icc_node_add(node, &mc->provider);
@@ -805,12 +801,14 @@ static int tegra_mc_interconnect_setup(struct tegra_mc *mc)
 			goto remove_nodes;
 	}
 
+	err = icc_provider_register(&mc->provider);
+	if (err)
+		goto remove_nodes;
+
 	return 0;
 
 remove_nodes:
 	icc_nodes_remove(&mc->provider);
-del_provider:
-	icc_provider_del(&mc->provider);
 
 	return err;
 }
drivers/memory/tegra/tegra124-emc.c +6 -6
index 85bc936c02f9..00ed2b6a0d1b 100644
@@ -1351,15 +1351,13 @@ static int tegra_emc_interconnect_init(struct tegra_emc *emc)
 	emc->provider.aggregate = soc->icc_ops->aggregate;
 	emc->provider.xlate_extended = emc_of_icc_xlate_extended;
 
-	err = icc_provider_add(&emc->provider);
-	if (err)
-		goto err_msg;
+	icc_provider_init(&emc->provider);
 
 	/* create External Memory Controller node */
 	node = icc_node_create(TEGRA_ICC_EMC);
 	if (IS_ERR(node)) {
 		err = PTR_ERR(node);
-		goto del_provider;
+		goto err_msg;
 	}
 
 	node->name = "External Memory Controller";
@@ -1380,12 +1378,14 @@ static int tegra_emc_interconnect_init(struct tegra_emc *emc)
 	node->name = "External Memory (DRAM)";
 	icc_node_add(node, &emc->provider);
 
+	err = icc_provider_register(&emc->provider);
+	if (err)
+		goto remove_nodes;
+
 	return 0;
 
 remove_nodes:
 	icc_nodes_remove(&emc->provider);
-del_provider:
-	icc_provider_del(&emc->provider);
 err_msg:
 	dev_err(emc->dev, "failed to initialize ICC: %d\n", err);
 
drivers/memory/tegra/tegra20-emc.c +6 -6
index 25ba3c5e4ad6..d1f01f80dcbd 100644
@@ -1034,15 +1034,13 @@ static int tegra_emc_interconnect_init(struct tegra_emc *emc)
 	emc->provider.aggregate = soc->icc_ops->aggregate;
 	emc->provider.xlate_extended = emc_of_icc_xlate_extended;
 
-	err = icc_provider_add(&emc->provider);
-	if (err)
-		goto err_msg;
+	icc_provider_init(&emc->provider);
 
 	/* create External Memory Controller node */
 	node = icc_node_create(TEGRA_ICC_EMC);
 	if (IS_ERR(node)) {
 		err = PTR_ERR(node);
-		goto del_provider;
+		goto err_msg;
 	}
 
 	node->name = "External Memory Controller";
@@ -1063,12 +1061,14 @@ static int tegra_emc_interconnect_init(struct tegra_emc *emc)
 	node->name = "External Memory (DRAM)";
 	icc_node_add(node, &emc->provider);
 
+	err = icc_provider_register(&emc->provider);
+	if (err)
+		goto remove_nodes;
+
 	return 0;
 
 remove_nodes:
 	icc_nodes_remove(&emc->provider);
-del_provider:
-	icc_provider_del(&emc->provider);
 err_msg:
 	dev_err(emc->dev, "failed to initialize ICC: %d\n", err);
 
drivers/memory/tegra/tegra30-emc.c +6 -6
index 9ba2a9e5316b..1ea3792beb86 100644
@@ -1546,15 +1546,13 @@ static int tegra_emc_interconnect_init(struct tegra_emc *emc)
 	emc->provider.aggregate = soc->icc_ops->aggregate;
 	emc->provider.xlate_extended = emc_of_icc_xlate_extended;
 
-	err = icc_provider_add(&emc->provider);
-	if (err)
-		goto err_msg;
+	icc_provider_init(&emc->provider);
 
 	/* create External Memory Controller node */
 	node = icc_node_create(TEGRA_ICC_EMC);
 	if (IS_ERR(node)) {
 		err = PTR_ERR(node);
-		goto del_provider;
+		goto err_msg;
 	}
 
 	node->name = "External Memory Controller";
@@ -1575,12 +1573,14 @@ static int tegra_emc_interconnect_init(struct tegra_emc *emc)
 	node->name = "External Memory (DRAM)";
 	icc_node_add(node, &emc->provider);
 
+	err = icc_provider_register(&emc->provider);
+	if (err)
+		goto remove_nodes;
+
 	return 0;
 
 remove_nodes:
 	icc_nodes_remove(&emc->provider);
-del_provider:
-	icc_provider_del(&emc->provider);
 err_msg:
 	dev_err(emc->dev, "failed to initialize ICC: %d\n", err);
 
drivers/mmc/host/atmel-mci.c +0 -3
index bb9bbf1c927b..dd18440a90c5 100644
@@ -1817,7 +1817,6 @@ static void atmci_tasklet_func(struct tasklet_struct *t)
 				atmci_writel(host, ATMCI_IER, ATMCI_NOTBUSY);
 				state = STATE_WAITING_NOTBUSY;
 			} else if (host->mrq->stop) {
-				atmci_writel(host, ATMCI_IER, ATMCI_CMDRDY);
 				atmci_send_stop_cmd(host, data);
 				state = STATE_SENDING_STOP;
 			} else {
@@ -1850,8 +1849,6 @@ static void atmci_tasklet_func(struct tasklet_struct *t)
 				 * command to send.
 				 */
 				if (host->mrq->stop) {
-					atmci_writel(host, ATMCI_IER,
-					             ATMCI_CMDRDY);
 					atmci_send_stop_cmd(host, data);
 					state = STATE_SENDING_STOP;
 				} else {
drivers/mmc/host/sdhci_am654.c +1 -1
index c2333c7acac9..101581d83982 100644
@@ -369,7 +369,7 @@ static void sdhci_am654_write_b(struct sdhci_host *host, u8 val, int reg)
 					MAX_POWER_ON_TIMEOUT, false, host, val,
 					reg);
 		if (ret)
-			dev_warn(mmc_dev(host->mmc), "Power on failed\n");
+			dev_info(mmc_dev(host->mmc), "Power on failed\n");
 	}
 }
 
drivers/net/bonding/bond_main.c +16 -7
index fce9301c8ebb..45d3cb557de7 100644
@@ -1774,6 +1774,19 @@ void bond_lower_state_changed(struct slave *slave)
 		slave_err(bond_dev, slave_dev, "Error: %s\n", errmsg);	\
 } while (0)
 
+/* The bonding driver uses ether_setup() to convert a master bond device
+ * to ARPHRD_ETHER, that resets the target netdevice's flags so we always
+ * have to restore the IFF_MASTER flag, and only restore IFF_SLAVE if it was set
+ */
+static void bond_ether_setup(struct net_device *bond_dev)
+{
+	unsigned int slave_flag = bond_dev->flags & IFF_SLAVE;
+
+	ether_setup(bond_dev);
+	bond_dev->flags |= IFF_MASTER | slave_flag;
+	bond_dev->priv_flags &= ~IFF_TX_SKB_SHARING;
+}
+
 /* enslave device <slave> to bond device <master> */
 int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev,
 		 struct netlink_ext_ack *extack)
@@ -1865,10 +1878,8 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev,
 
 			if (slave_dev->type != ARPHRD_ETHER)
 				bond_setup_by_slave(bond_dev, slave_dev);
-			else {
-				ether_setup(bond_dev);
-				bond_dev->priv_flags &= ~IFF_TX_SKB_SHARING;
-			}
+			else
+				bond_ether_setup(bond_dev);
 
 			call_netdevice_notifiers(NETDEV_POST_TYPE_CHANGE,
 						 bond_dev);
@@ -2288,9 +2299,7 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev,
 			eth_hw_addr_random(bond_dev);
 		if (bond_dev->type != ARPHRD_ETHER) {
 			dev_close(bond_dev);
-			ether_setup(bond_dev);
-			bond_dev->flags |= IFF_MASTER;
-			bond_dev->priv_flags &= ~IFF_TX_SKB_SHARING;
+			bond_ether_setup(bond_dev);
 		}
 	}
 
drivers/net/dsa/microchip/ksz_common.c +1 -1
index c68f48cd1ec0..07f6776bba12 100644
@@ -272,7 +272,7 @@ static const u16 ksz8795_regs[] = {
 	[S_BROADCAST_CTRL]		= 0x06,
 	[S_MULTICAST_CTRL]		= 0x04,
 	[P_XMII_CTRL_0]			= 0x06,
-	[P_XMII_CTRL_1]			= 0x56,
+	[P_XMII_CTRL_1]			= 0x06,
 };
 
 static const u32 ksz8795_masks[] = {
drivers/net/dsa/mt7530.c +32 -32

85 lines not on this page · raw message

drivers/net/dsa/mv88e6xxx/chip.c +12 -4
index 3b8b2d0fbafa..3a6db36574ad 100644
@@ -3549,7 +3549,7 @@ static int mv88e6xxx_get_max_mtu(struct dsa_switch *ds, int port)
 		return 10240 - VLAN_ETH_HLEN - EDSA_HLEN - ETH_FCS_LEN;
 	else if (chip->info->ops->set_max_frame_size)
 		return 1632 - VLAN_ETH_HLEN - EDSA_HLEN - ETH_FCS_LEN;
-	return 1522 - VLAN_ETH_HLEN - EDSA_HLEN - ETH_FCS_LEN;
+	return ETH_DATA_LEN;
 }
 
 static int mv88e6xxx_change_mtu(struct dsa_switch *ds, int port, int new_mtu)
@@ -3557,6 +3557,17 @@ static int mv88e6xxx_change_mtu(struct dsa_switch *ds, int port, int new_mtu)
 	struct mv88e6xxx_chip *chip = ds->priv;
 	int ret = 0;
 
+	/* For families where we don't know how to alter the MTU,
+	 * just accept any value up to ETH_DATA_LEN
+	 */
+	if (!chip->info->ops->port_set_jumbo_size &&
+	    !chip->info->ops->set_max_frame_size) {
+		if (new_mtu > ETH_DATA_LEN)
+			return -EINVAL;
+
+		return 0;
+	}
+
 	if (dsa_is_dsa_port(ds, port) || dsa_is_cpu_port(ds, port))
 		new_mtu += EDSA_HLEN;
 
@@ -3565,9 +3576,6 @@ static int mv88e6xxx_change_mtu(struct dsa_switch *ds, int port, int new_mtu)
 		ret = chip->info->ops->port_set_jumbo_size(chip, port, new_mtu);
 	else if (chip->info->ops->set_max_frame_size)
 		ret = chip->info->ops->set_max_frame_size(chip, new_mtu);
-	else
-		if (new_mtu > 1522)
-			ret = -EINVAL;
 	mv88e6xxx_reg_unlock(chip);
 
 	return ret;
drivers/net/ethernet/aquantia/atlantic/aq_ring.c +21 -7
index 25129e723b57..2dc8d215a591 100644
@@ -412,6 +412,25 @@ int aq_xdp_xmit(struct net_device *dev, int num_frames,
 	return num_frames - drop;
 }
 
+static struct sk_buff *aq_xdp_build_skb(struct xdp_buff *xdp,
+					struct net_device *dev,
+					struct aq_ring_buff_s *buff)
+{
+	struct xdp_frame *xdpf;
+	struct sk_buff *skb;
+
+	xdpf = xdp_convert_buff_to_frame(xdp);
+	if (unlikely(!xdpf))
+		return NULL;
+
+	skb = xdp_build_skb_from_frame(xdpf, dev);
+	if (!skb)
+		return NULL;
+
+	aq_get_rxpages_xdp(buff, xdp);
+	return skb;
+}
+
 static struct sk_buff *aq_xdp_run_prog(struct aq_nic_s *aq_nic,
 				       struct xdp_buff *xdp,
 				       struct aq_ring_s *rx_ring,
@@ -431,7 +450,7 @@ static struct sk_buff *aq_xdp_run_prog(struct aq_nic_s *aq_nic,
 
 	prog = READ_ONCE(rx_ring->xdp_prog);
 	if (!prog)
-		goto pass;
+		return aq_xdp_build_skb(xdp, aq_nic->ndev, buff);
 
 	prefetchw(xdp->data_hard_start); /* xdp_frame write */
 
@@ -442,17 +461,12 @@ static struct sk_buff *aq_xdp_run_prog(struct aq_nic_s *aq_nic,
 	act = bpf_prog_run_xdp(prog, xdp);
 	switch (act) {
 	case XDP_PASS:
-pass:
-		xdpf = xdp_convert_buff_to_frame(xdp);
-		if (unlikely(!xdpf))
-			goto out_aborted;
-		skb = xdp_build_skb_from_frame(xdpf, aq_nic->ndev);
+		skb = aq_xdp_build_skb(xdp, aq_nic->ndev, buff);
 		if (!skb)
 			goto out_aborted;
 		u64_stats_update_begin(&rx_ring->stats.rx.syncp);
 		++rx_ring->stats.rx.xdp_pass;
 		u64_stats_update_end(&rx_ring->stats.rx.syncp);
-		aq_get_rxpages_xdp(buff, xdp);
 		return skb;
 	case XDP_TX:
 		xdpf = xdp_convert_buff_to_frame(xdp);
drivers/net/ethernet/i825xx/sni_82596.c +8 -6
index daec9ce04531..54bb4d9a0d1e 100644
@@ -78,6 +78,7 @@ static int sni_82596_probe(struct platform_device *dev)
 	void __iomem *mpu_addr;
 	void __iomem *ca_addr;
 	u8 __iomem *eth_addr;
+	u8 mac[ETH_ALEN];
 
 	res = platform_get_resource(dev, IORESOURCE_MEM, 0);
 	ca = platform_get_resource(dev, IORESOURCE_MEM, 1);
@@ -109,12 +110,13 @@ static int sni_82596_probe(struct platform_device *dev)
 		goto probe_failed;
 
 	/* someone seems to like messed up stuff */
-	netdevice->dev_addr[0] = readb(eth_addr + 0x0b);
-	netdevice->dev_addr[1] = readb(eth_addr + 0x0a);
-	netdevice->dev_addr[2] = readb(eth_addr + 0x09);
-	netdevice->dev_addr[3] = readb(eth_addr + 0x08);
-	netdevice->dev_addr[4] = readb(eth_addr + 0x07);
-	netdevice->dev_addr[5] = readb(eth_addr + 0x06);
+	mac[0] = readb(eth_addr + 0x0b);
+	mac[1] = readb(eth_addr + 0x0a);
+	mac[2] = readb(eth_addr + 0x09);
+	mac[3] = readb(eth_addr + 0x08);
+	mac[4] = readb(eth_addr + 0x07);
+	mac[5] = readb(eth_addr + 0x06);
+	eth_hw_addr_set(netdevice, mac);
 	iounmap(eth_addr);
 
 	if (netdevice->irq < 0) {
drivers/net/ethernet/intel/i40e/i40e_main.c +1 -0
index d30bc38725e9..da0cf87d3a1c 100644
@@ -15491,6 +15491,7 @@ static int i40e_init_recovery_mode(struct i40e_pf *pf, struct i40e_hw *hw)
 	int err;
 	int v_idx;
 
+	pci_set_drvdata(pf->pdev, pf);
 	pci_save_state(pf->pdev);
 
 	/* set up periodic task facility */
drivers/net/ethernet/intel/ice/ice.h +5 -9
index e04871379baa..ca6b877fdde8 100644
@@ -485,6 +485,7 @@ enum ice_pf_flags {
 	ICE_FLAG_VF_VLAN_PRUNING,
 	ICE_FLAG_LINK_LENIENT_MODE_ENA,
 	ICE_FLAG_PLUG_AUX_DEV,
+	ICE_FLAG_UNPLUG_AUX_DEV,
 	ICE_FLAG_MTU_CHANGED,
 	ICE_FLAG_GNSS,			/* GNSS successfully initialized */
 	ICE_PF_FLAGS_NBITS		/* must be last */
@@ -926,16 +927,11 @@ static inline void ice_set_rdma_cap(struct ice_pf *pf)
  */
 static inline void ice_clear_rdma_cap(struct ice_pf *pf)
 {
-	/* We can directly unplug aux device here only if the flag bit
-	 * ICE_FLAG_PLUG_AUX_DEV is not set because ice_unplug_aux_dev()
-	 * could race with ice_plug_aux_dev() called from
-	 * ice_service_task(). In this case we only clear that bit now and
-	 * aux device will be unplugged later once ice_plug_aux_device()
-	 * called from ice_service_task() finishes (see ice_service_task()).
+	/* defer unplug to service task to avoid RTNL lock and
+	 * clear PLUG bit so that pending plugs don't interfere
 	 */
-	if (!test_and_clear_bit(ICE_FLAG_PLUG_AUX_DEV, pf->flags))
-		ice_unplug_aux_dev(pf);
-
+	clear_bit(ICE_FLAG_PLUG_AUX_DEV, pf->flags);
+	set_bit(ICE_FLAG_UNPLUG_AUX_DEV, pf->flags);
 	clear_bit(ICE_FLAG_RDMA_ENA, pf->flags);
 }
 #endif /* _ICE_H_ */
drivers/net/ethernet/intel/ice/ice_main.c +8 -11
index 3c6bb3f9ac78..cfc57cfc46e4 100644
@@ -2326,18 +2326,15 @@ static void ice_service_task(struct work_struct *work)
 		}
 	}
 
-	if (test_bit(ICE_FLAG_PLUG_AUX_DEV, pf->flags)) {
-		/* Plug aux device per request */
-		ice_plug_aux_dev(pf);
+	/* unplug aux dev per request, if an unplug request came in
+	 * while processing a plug request, this will handle it
+	 */
+	if (test_and_clear_bit(ICE_FLAG_UNPLUG_AUX_DEV, pf->flags))
+		ice_unplug_aux_dev(pf);
 
-		/* Mark plugging as done but check whether unplug was
-		 * requested during ice_plug_aux_dev() call
-		 * (e.g. from ice_clear_rdma_cap()) and if so then
-		 * plug aux device.
-		 */
-		if (!test_and_clear_bit(ICE_FLAG_PLUG_AUX_DEV, pf->flags))
-			ice_unplug_aux_dev(pf);
-	}
+	/* Plug aux device per request */
+	if (test_and_clear_bit(ICE_FLAG_PLUG_AUX_DEV, pf->flags))
+		ice_plug_aux_dev(pf);
 
 	if (test_and_clear_bit(ICE_FLAG_MTU_CHANGED, pf->flags)) {
 		struct iidc_event *event;
drivers/net/ethernet/intel/ice/ice_xsk.c +2 -3
index 65468cdc2587..41ee081eb887 100644
@@ -173,8 +173,6 @@ static int ice_qp_dis(struct ice_vsi *vsi, u16 q_idx)
 	}
 	netif_tx_stop_queue(netdev_get_tx_queue(vsi->netdev, q_idx));
 
-	ice_qvec_dis_irq(vsi, rx_ring, q_vector);
-
 	ice_fill_txq_meta(vsi, tx_ring, &txq_meta);
 	err = ice_vsi_stop_tx_ring(vsi, ICE_NO_RESET, 0, tx_ring, &txq_meta);
 	if (err)
@@ -189,10 +187,11 @@ static int ice_qp_dis(struct ice_vsi *vsi, u16 q_idx)
 		if (err)
 			return err;
 	}
+	ice_qvec_dis_irq(vsi, rx_ring, q_vector);
+
 	err = ice_vsi_ctrl_one_rx_ring(vsi, false, q_idx, true);
 	if (err)
 		return err;
-	ice_clean_rx_ring(rx_ring);
 
 	ice_qvec_toggle_napi(vsi, q_vector, false);
 	ice_qp_clean_rings(vsi, q_idx);
drivers/net/ethernet/mellanox/mlx5/core/en.h +0 -1
index 26a23047f1f3..bc76fe6b0623 100644
@@ -313,7 +313,6 @@ struct mlx5e_params {
 		} channel;
 	} mqprio;
 	bool rx_cqe_compress_def;
-	bool tunneled_offload_en;
 	struct dim_cq_moder rx_cq_moderation;
 	struct dim_cq_moder tx_cq_moderation;
 	struct mlx5e_packet_merge_param packet_merge;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c +0 -2
index e6f64d890fb3..83bb0811e774 100644
@@ -745,8 +745,6 @@ int mlx5e_tc_tun_route_lookup(struct mlx5e_priv *priv,
 		if (err)
 			goto out;
 
-		esw_attr->rx_tun_attr->vni = MLX5_GET(fte_match_param, spec->match_value,
-						      misc_parameters.vxlan_vni);
 		esw_attr->rx_tun_attr->decap_vport = vport_num;
 	} else if (netif_is_ovs_master(attr.route_dev) && mlx5e_tc_int_port_supported(esw)) {
 		int_port = mlx5e_tc_int_port_get(mlx5e_get_int_port_priv(priv),
drivers/net/ethernet/mellanox/mlx5/core/en_accel/macsec.c +1 -1
index b92d541b5286..0c23340bfcc7 100644
@@ -89,8 +89,8 @@ struct mlx5e_macsec_rx_sc {
 };
 
 struct mlx5e_macsec_umr {
+	u8 __aligned(64) ctx[MLX5_ST_SZ_BYTES(macsec_aso)];
 	dma_addr_t dma_addr;
-	u8 ctx[MLX5_ST_SZ_BYTES(macsec_aso)];
 	u32 mkey;
 };
 
drivers/net/ethernet/mellanox/mlx5/core/en_main.c +1 -3
index 142ed2d98cd5..609a49c1e09e 100644
@@ -4911,8 +4911,6 @@ void mlx5e_build_nic_params(struct mlx5e_priv *priv, struct mlx5e_xsk *xsk, u16
 	/* TX inline */
 	mlx5_query_min_inline(mdev, &params->tx_min_inline_mode);
 
-	params->tunneled_offload_en = mlx5_tunnel_inner_ft_supported(mdev);
-
 	/* AF_XDP */
 	params->xsk = xsk;
 
@@ -5216,7 +5214,7 @@ static int mlx5e_init_nic_rx(struct mlx5e_priv *priv)
 	}
 
 	features = MLX5E_RX_RES_FEATURE_PTP;
-	if (priv->channels.params.tunneled_offload_en)
+	if (mlx5_tunnel_inner_ft_supported(mdev))
 		features |= MLX5E_RX_RES_FEATURE_INNER_FT;
 	err = mlx5e_rx_res_init(priv->rx_res, priv->mdev, features,
 				priv->max_nch, priv->drop_rq.rqn,
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c +0 -1
index 794cd8dfe9c9..0f744131c686 100644
@@ -707,7 +707,6 @@ static void mlx5e_build_rep_params(struct net_device *netdev)
 	mlx5e_set_rx_cq_mode_params(params, cq_period_mode);
 
 	params->mqprio.num_tc       = 1;
-	params->tunneled_offload_en = false;
 	if (rep->vport != MLX5_VPORT_UPLINK)
 		params->vlan_strip_disable = true;
 
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +14 -6
index c1cf3917baa4..73af062a8783 100644
@@ -2401,13 +2401,13 @@ static int parse_tunnel_attr(struct mlx5e_priv *priv,
 		err = mlx5e_tc_set_attr_rx_tun(flow, spec);
 		if (err)
 			return err;
-	} else if (tunnel && tunnel->tunnel_type == MLX5E_TC_TUNNEL_TYPE_VXLAN) {
+	} else if (tunnel) {
 		struct mlx5_flow_spec *tmp_spec;
 
 		tmp_spec = kvzalloc(sizeof(*tmp_spec), GFP_KERNEL);
 		if (!tmp_spec) {
-			NL_SET_ERR_MSG_MOD(extack, "Failed to allocate memory for vxlan tmp spec");
-			netdev_warn(priv->netdev, "Failed to allocate memory for vxlan tmp spec");
+			NL_SET_ERR_MSG_MOD(extack, "Failed to allocate memory for tunnel tmp spec");
+			netdev_warn(priv->netdev, "Failed to allocate memory for tunnel tmp spec");
 			return -ENOMEM;
 		}
 		memcpy(tmp_spec, spec, sizeof(*tmp_spec));
@@ -4054,6 +4054,7 @@ int mlx5e_set_fwd_to_int_port_actions(struct mlx5e_priv *priv,
 
 	esw_attr->dest_int_port = dest_int_port;
 	esw_attr->dests[out_index].flags |= MLX5_ESW_DEST_CHAIN_WITH_SRC_PORT_CHANGE;
+	esw_attr->split_count = out_index;
 
 	/* Forward to root fdb for matching against the new source vport */
 	attr->dest_chain = 0;
@@ -4311,9 +4312,6 @@ __mlx5e_add_fdb_flow(struct mlx5e_priv *priv,
 	if (err)
 		goto err_free;
 
-	/* always set IP version for indirect table handling */
-	flow->attr->ip_version = mlx5e_tc_get_ip_version(&parse_attr->spec, true);
-
 	err = parse_tc_fdb_actions(priv, &rule->action, flow, extack);
 	if (err)
 		goto err_free;
@@ -5162,6 +5160,16 @@ int mlx5e_tc_esw_init(struct mlx5_rep_uplink_priv *uplink_priv)
 
 void mlx5e_tc_esw_cleanup(struct mlx5_rep_uplink_priv *uplink_priv)
 {
+	struct mlx5e_rep_priv *rpriv;
+	struct mlx5_eswitch *esw;
+	struct mlx5e_priv *priv;
+
+	rpriv = container_of(uplink_priv, struct mlx5e_rep_priv, uplink_priv);
+	priv = netdev_priv(rpriv->netdev);
+	esw = priv->mdev->priv.eswitch;
+
+	mlx5e_tc_clean_fdb_peer_flows(esw);
+
 	mlx5e_tc_tun_cleanup(uplink_priv->encap);
 
 	mapping_destroy(uplink_priv->tunnel_enc_opts_mapping);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.h +0 -2
index 48241317a535..edd5f09440f9 100644
@@ -82,7 +82,6 @@ struct mlx5_flow_attr {
 	struct mlx5_flow_table *dest_ft;
 	u8 inner_match_level;
 	u8 outer_match_level;
-	u8 ip_version;
 	u8 tun_ip_version;
 	int tunnel_id; /* mapped tunnel id */
 	u32 flags;
@@ -129,7 +128,6 @@ struct mlx5_rx_tun_attr {
 		__be32 v4;
 		struct in6_addr v6;
 	} dst_ip; /* Valid if decap_vport is not zero */
-	u32 vni;
 };
 
 #define MLX5E_TC_TABLE_CHAIN_TAG_BITS 16
drivers/net/ethernet/mellanox/mlx5/core/esw/indir_table.c +35 -168

297 lines not on this page · raw message

drivers/net/ethernet/mellanox/mlx5/core/esw/indir_table.h +0 -4
index 21d56b49d14b..036f5b3a341b 100644

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

drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c +14 -17
index 235f6f0a7052..34790a82a097 100644

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

drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c +0 -1
index 038ae0fcf9d4..aed4e896179a 100644

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

drivers/net/ethernet/mellanox/mlx5/core/main.c +2 -2
index f07175549a87..59914f66857d 100644

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

drivers/net/ethernet/mellanox/mlx5/core/pagealloc.c +17 -5
index 64d4e7125e9b..95dc67fb3001 100644

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

drivers/net/ethernet/mellanox/mlxsw/spectrum.c +2 -0
index 5bcf5bceff71..67ecdb9e708f 100644

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

drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c +14 -0
index 48f1fa62a4fd..ab0aa1a61d4a 100644

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

drivers/net/ethernet/qlogic/qed/qed_dev.c +5 -0
index d61cd32ec3b6..86a93cac2647 100644

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

drivers/net/ethernet/qlogic/qed/qed_mng_tlv.c +1 -1
index 6190adf965bc..f55eed092f25 100644

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

drivers/net/ethernet/renesas/ravb_main.c +10 -2
index 0f54849a3823..894e2690c643 100644

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

drivers/net/ethernet/renesas/sh_eth.c +10 -2
index 71a499113308..14dc5833c465 100644

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

drivers/net/ethernet/sun/ldmvsw.c +3 -0
index 8addee6d04bd..734a817d3c94 100644

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

drivers/net/ethernet/sun/sunvnet.c +3 -0
index acda6cbd0238..bdf4c8be2d53 100644

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

drivers/net/ipvlan/ipvlan_l3s.c +1 -0
index 943d26cbf39f..71712ea25403 100644

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

drivers/net/phy/nxp-c45-tja11xx.c +1 -1
index 047c581457e3..5813b07242ce 100644

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

drivers/net/phy/smsc.c +4 -1
index 00d9eff91dcf..df2c5435c5c4 100644

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

drivers/net/usb/smsc75xx.c +7 -0
index 95de452ff4da..5d6454fedb3f 100644

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

drivers/net/veth.c +2 -4
index bd385ccd0d18..a71786b3e7ba 100644

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

drivers/nfc/pn533/usb.c +1 -0
index ed9c5e2cf3ad..a187f0e0b0f7 100644

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

drivers/nfc/st-nci/ndlc.c +4 -2
index 755460a73c0d..d2aa9f766738 100644

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

drivers/nvme/host/core.c +19 -9
index 2031fd960549..a95e48b51da6 100644

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

drivers/nvme/host/pci.c +2 -0
index 778f94e9a445..100f774bc97f 100644

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

drivers/nvme/target/core.c +3 -1
index 683b75a992b3..3235baf7cc6b 100644

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

drivers/pci/bus.c +21 -0
index 3cef835b375f..feafa378bf8e 100644

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

drivers/scsi/hosts.c +0 -3
index 85e66574ec41..45a2fd6584d1 100644

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

drivers/scsi/mpi3mr/mpi3mr.h +5 -0
index 8a438f248a82..de6914d57402 100644

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

drivers/scsi/mpi3mr/mpi3mr_fw.c +49 -22

71 lines not on this page · raw message

drivers/scsi/mpi3mr/mpi3mr_os.c +25 -0
index 6eaeba41072c..6d55698ea4d1 100644

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

drivers/scsi/mpi3mr/mpi3mr_transport.c +1 -4
index 3b61815979da..50263ba4f842 100644

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

drivers/scsi/mpt3sas/mpt3sas_transport.c +12 -2
index e5ecd6ada6cd..e8a4750f6ec4 100644

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

drivers/scsi/scsi.c +3 -0
index c59eac7a32f2..24c4c9254359 100644

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

drivers/scsi/scsi_devinfo.c +2 -1
index c7080454aea9..bc9d280417f6 100644

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

drivers/scsi/scsi_scan.c +3 -0
index d149b218715e..d12f2dcb4040 100644

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

drivers/soc/mediatek/mtk-svs.c +6 -0
index 00526fd37d7b..e55fb16fdc5a 100644

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

drivers/tty/serial/8250/8250_em.c +2 -2
index f8e99995eee9..d94c3811a8f7 100644

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

drivers/tty/serial/8250/8250_fsl.c +2 -2
index 8aad15622a2e..8adfaa183f77 100644

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

drivers/tty/serial/8250/Kconfig +2 -1
index b0f62345bc84..583a340f9934 100644

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

drivers/tty/serial/Kconfig +1 -1
index 434f83168546..4fce15296f31 100644

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

drivers/tty/serial/fsl_lpuart.c +9 -3
index f9d667ce1619..c51883f34ac2 100644

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

drivers/vdpa/mlx5/core/mlx5_vdpa.h +1 -0
index 058fbe28107e..25fc4120b618 100644

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

drivers/vdpa/mlx5/net/mlx5_vnet.c +5 -1
index 3a6dbbc6440d..daac3ab31478 100644

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

drivers/vdpa/vdpa_sim/vdpa_sim.c +13 -0
index cb88891b44a8..61bde476cf9c 100644

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

drivers/vdpa/virtio_pci/vp_vdpa.c +1 -1
index 8fe267ca3e76..281287fae89f 100644

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

drivers/vhost/vdpa.c +2 -1
index ec32f785dfde..b7657984dd8d 100644

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

drivers/video/fbdev/chipsfb.c +10 -4
index f1c1c95c1fdf..2ecb97c619b7 100644

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

drivers/video/fbdev/core/fb_defio.c +13 -4
index 583cbcf09446..a3cf1f764f29 100644

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

drivers/video/fbdev/stifb.c +27 -0
index 3feb6e40d56d..ef8a4c5fc687 100644

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

drivers/virt/coco/sev-guest/sev-guest.c +78 -50

128 lines not on this page · raw message

fs/cifs/smb2inode.c +24 -7
index 442718cf61b8..7a2862c10afb 100644

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

fs/cifs/smb2transport.c +1 -1
index 381babc1212c..d827b7547ffa 100644

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

fs/cifs/transport.c +9 -12
index 3851d0aaa288..c961b90f92b9 100644

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

fs/ext4/inode.c +8 -10
index 34c87fcfd061..eea11ad84e68 100644

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

fs/ext4/namei.c +1 -3
index 800d631c920b..56f09598448b 100644

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

fs/ext4/super.c +5 -2
index 801160099958..2528e8216c33 100644

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

fs/ext4/xattr.c +11 -0
index e0eb6eb02a83..b17c1b90e122 100644

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

fs/jffs2/file.c +7 -8
index ba86acbe12d3..0479096b96e4 100644

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

fs/ocfs2/aops.c +17 -2
index 1d65f6ef00ca..0394505fdce3 100644

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

include/drm/drm_bridge.h +2 -2
index 6b65b0dfb4fb..288c6feda5de 100644

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

include/drm/drm_gem.h +3 -1
index bd42f25e449c..60b2dda8d964 100644

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

include/linux/blk-mq.h +6 -0
index d6119c5d1069..a9764cbf7f8d 100644

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

include/linux/fb.h +1 -0
index 486c4e3b6d6a..c7f0f14e1f74 100644

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

include/linux/interconnect-provider.h +12 -0
index cd5c5a27557f..d12cd18aab3f 100644

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

include/linux/netdevice.h +4 -2
index ba2bd604359d..b072449b0f1a 100644

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

include/linux/pci.h +1 -0
index cb538bc57971..d20695184e0b 100644

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

include/linux/sh_intc.h +4 -1
index c255273b0281..37ad81058d6a 100644

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

include/linux/tracepoint.h +6 -9
index 4b33b95eb8be..b01421902cfc 100644

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

include/scsi/scsi_device.h +2 -0
index c36656d8ac6c..006858ed04e8 100644

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

include/scsi/scsi_devinfo.h +3 -3
index 5d14adae21c7..6b548dc2c496 100644

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

io_uring/msg_ring.c +3 -1
index 7d5b544cfc30..3526389ac218 100644

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

kernel/events/core.c +1 -1
index 3b9e86108f43..227ada724029 100644

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

kernel/trace/ftrace.c +2 -1
index 6f726ea0fde0..59062fedeaf7 100644

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

kernel/trace/trace.c +2 -0
index f70765780ed3..888980257340 100644

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

kernel/trace/trace_events_hist.c +3 -0
index da3bfe8625d9..e3df03cdecbc 100644

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

kernel/trace/trace_hwlat.c +4 -3
index d440ddd5fd8b..c4945f8adc11 100644

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

mm/huge_memory.c +4 -2
index 0729973d486a..b8d654963df8 100644

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

mm/mincore.c +1 -1
index fa200c14185f..1eb6aac88d84 100644

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

net/9p/client.c +1 -1
index 554a4b11f4fe..af59c3f2ec2e 100644

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

net/dsa/slave.c +5 -4
index a9fde48cffd4..5fe075bf479e 100644

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

net/ipv4/fib_frontend.c +3 -0
index b5736ef16ed2..390f4be7f7be 100644

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

net/ipv4/inet_hashtables.c +7 -1
index cd8b2f7a8f34..f0750c06d5ff 100644

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

net/ipv4/ip_tunnel.c +6 -6
index 019f3b0839c5..24961b304dad 100644

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

net/ipv4/tcp_output.c +1 -1
index c69f4d966024..925594dbeb92 100644

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

net/ipv6/ip6_tunnel.c +2 -2
index 2fb4c6ad7243..afc922c88d17 100644

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

net/iucv/iucv.c +1 -1
index eb0295d90039..fc3fddeb6f36 100644

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

net/mptcp/pm_netlink.c +16 -0
index 5e38a0abbaba..1c69e476f4ad 100644

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

net/mptcp/subflow.c +9 -3
index c4971bc42f60..1e10a38ccf9d 100644

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

net/netfilter/nft_masq.c +1 -1
index 2a0adc497bbb..026b4f87d96c 100644

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

net/netfilter/nft_nat.c +1 -1
index e5fd6995e4bf..353c090f8891 100644

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

net/netfilter/nft_redir.c +2 -2
index 5086adfe731c..5ed64b2bd15e 100644

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

net/smc/smc_cdc.c +3 -0
index 53f63bfbaf5f..89105e95b452 100644

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

net/smc/smc_core.c +1 -1
index c19d4b7c1f28..0208dfb35345 100644

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

net/wireless/nl80211.c +8 -10
index 4d4de49f7ab6..7320d676ce3a 100644

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

net/xfrm/xfrm_state.c +0 -5
index 0f88cb6fc3c2..2f4cf976b59a 100644

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

scripts/kconfig/confdata.c +4 -2
index b7c9f1dd5e42..992575f1e976 100644

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

sound/hda/intel-dsp-config.c +9 -0
index ae31bb127594..317bdf6dcbef 100644

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

sound/pci/hda/hda_intel.c +3 -2
index 81c4a45254ff..77a592f21947 100644

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

sound/pci/hda/patch_realtek.c +2 -0
index d4819890374b..28ac6c159b2a 100644

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

sound/soc/intel/common/soc-acpi-intel-adl-match.c +1 -1
index 68b4fa352354..0102574025e9 100644

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

sound/soc/qcom/qdsp6/q6prm.c +2 -2
index cda33ded29be..41a29047ff01 100644

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

sound/soc/sof/intel/pci-apl.c +1 -0
index 998e219011f0..ad8431b13125 100644

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

sound/soc/sof/intel/pci-cnl.c +2 -0
index c797356f7028..33677ce8de41 100644

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

sound/soc/sof/intel/pci-icl.c +1 -0
index 48f24f8ace26..9a42a4ea1a5e 100644

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

sound/soc/sof/intel/pci-mtl.c +1 -0
index 9f39da984e9f..4dae256536bf 100644

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

sound/soc/sof/intel/pci-skl.c +2 -0
index 3a99dc444f92..5b4bccf81965 100644

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

sound/soc/sof/intel/pci-tgl.c +7 -0
index 4cfe4f242fc5..ccaf0ff9eb1c 100644

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

sound/soc/sof/ipc4-topology.h +1 -1
index 0aa87a8add5d..2363a7cc0b57 100644

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

tools/testing/selftests/lib.mk +2 -0
index f7900e75d230..05400462c779 100644

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

tools/testing/selftests/net/devlink_port_split.py +31 -5
index 2b5d6ff87373..2d84c7a0be6b 100755

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

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

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