Skip to contentSkip to conversation

Linux 6.2.8

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.2.8 kernel.

All users of the 6.2 kernel series must upgrade.

The updated 6.2.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.2.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/fault.c                                              |    5 
 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/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-core.c                                                   |   16 -
 block/blk-mq.c                                                     |    5 
 block/blk-mq.h                                                     |    5 
 drivers/acpi/pptt.c                                                |    5 
 drivers/block/loop.c                                               |   25 +
 drivers/block/null_blk/main.c                                      |    6 
 drivers/block/sunvdc.c                                             |    2 
 drivers/block/zram/zram_drv.c                                      |    4 
 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/amdgpu/amdgpu_vcn.c                            |   19 +
 drivers/gpu/drm/amd/amdkfd/kfd_device.c                            |   11 
 drivers/gpu/drm/amd/amdkfd/kfd_events.c                            |    9 
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c                  |    6 
 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_edid.c                                         |    2 
 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/md/dm.c                                                    |    6 
 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/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/broadcom/bnxt/bnxt.c                          |    6 
 drivers/net/ethernet/broadcom/bnxt/bnxt.h                          |    2 
 drivers/net/ethernet/broadcom/bnxt/bnxt_ptp.c                      |   56 ++--
 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/mediatek/mtk_eth_soc.h                        |    4 
 drivers/net/ethernet/mediatek/mtk_sgmii.c                          |   28 +-
 drivers/net/ethernet/mellanox/mlx5/core/en.h                       |    1 
 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                    |   11 
 drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c         |   10 
 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/rswitch.c                             |   74 ++---
 drivers/net/ethernet/renesas/rswitch.h                             |    4 
 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/multipath.c                                      |    8 
 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/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                                    |   23 -
 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/cifs_debug.c                                               |    5 
 fs/cifs/cifs_dfs_ref.c                                             |    1 
 fs/cifs/cifs_fs_sb.h                                               |    2 
 fs/cifs/cifsglob.h                                                 |    4 
 fs/cifs/connect.c                                                  |   10 
 fs/cifs/dfs.c                                                      |   67 +++-
 fs/cifs/dfs.h                                                      |   19 +
 fs/cifs/dfs_cache.c                                                |  140 ----------
 fs/cifs/dfs_cache.h                                                |    2 
 fs/cifs/fs_context.h                                               |    1 
 fs/cifs/misc.c                                                     |    8 
 fs/cifs/smb2inode.c                                                |   31 +-
 fs/cifs/smb2transport.c                                            |    2 
 fs/cifs/transport.c                                                |   21 -
 fs/ext4/namei.c                                                    |    4 
 fs/ext4/super.c                                                    |    7 
 fs/ext4/xattr.c                                                    |   11 
 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/blkdev.h                                             |    5 
 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                                   |   12 
 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/protocol.c                                               |   64 ++--
 net/mptcp/protocol.h                                               |    6 
 net/mptcp/subflow.c                                                |  128 +++------
 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/amd-pstate/Makefile                        |   13 
 tools/testing/selftests/lib.mk                                     |    2 
 tools/testing/selftests/net/devlink_port_split.py                  |   36 ++
 227 files changed, 1792 insertions(+), 1095 deletions(-)

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

Alexander Sverdlin (1):
tty: serial: fsl_lpuart: fix race on RX DMA shutdown

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 (2):
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

Benjamin Cheng (1):
drm/amd/display: Write to correct dirty_rect

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

Chris Leech (1):

      blk-mq: fix "bad unlock balance detected" on q->srcu in __blk_mq_run_dispatch_ops

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 Golle (2):
net: ethernet: mtk_eth_soc: reset PCS state
net: ethernet: mtk_eth_soc: only write values if needed

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 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

Dylan Jhong (1):
RISC-V: mm: Support huge page in vmalloc_fault()

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.2.8

Guilherme G. Piccoli (1):
drm/amdgpu/vcn: Disable indirect SRAM on Vangogh broken BIOSes

Guillaume Tucker (2):
selftests: amd-pstate: fix TEST_FILES
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 (19):
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/edid: fix info leak when failing to get panel id 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 (2):
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 (5):
mptcp: fix possible deadlock in subflow_error_report
mptcp: refactor passive socket initialization
mptcp: use the workqueue to destroy unaccepted sockets
mptcp: fix UaF in listener shutdown
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

Paulo Alcantara (4):
cifs: set DFS root session in cifs_get_smb_ses()
cifs: fix use-after-free bug in refresh_cache_worker()
cifs: return DFS root session id in DebugData
cifs: use DFS root session instead of tcon ses

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

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) (3):
tracing: Do not let histogram values have some modifiers
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

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

Vadim Fedorenko (1):
bnxt_en: reset PHC frequency in free-running mode

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

Yoshihiro Shimoda (2):
net: renesas: rswitch: Rename rings in struct rswitch_gwca_queue
net: renesas: rswitch: Fix the output value of quote from rswitch_rx()

Yu Kuai (1):
block: count 'ios' and 'sectors' when io is done for bio-based device

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 2c15e7053113..2f54e725bd74 100644
@@ -1222,7 +1222,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 43cf2c785cb1..2c90d9b067f4 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 6
 PATCHLEVEL = 2
-SUBLEVEL = 7
+SUBLEVEL = 8
 EXTRAVERSION =
 NAME = Hurr durr I'ma ninja sloth
 
arch/loongarch/kernel/time.c +6 -5
index a6576dea590c..4351f69d9950 100644
@@ -140,16 +140,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 9563336e3348..046b571496b1 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
@@ -144,6 +143,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
@@ -188,11 +188,13 @@ config E5500_CPU
 config E6500_CPU
 	bool "Freescale e6500"
 	depends on PPC64 && PPC_E500
+	depends on !CC_IS_CLANG
 	select PPC_HAS_LBARX_LHARX
 
 config 405_CPU
 	bool "40x family"
 	depends on 40x
+	depends on !CC_IS_CLANG
 
 config 440_CPU
 	bool "440 (44x family)"
@@ -201,22 +203,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)"
@@ -233,13 +240,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
@@ -251,6 +257,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/fault.c +5 -0
index eb0774d9c03b..4b9953b47d81 100644
@@ -143,6 +143,8 @@ static inline void vmalloc_fault(struct pt_regs *regs, int code, unsigned long a
 		no_context(regs, addr);
 		return;
 	}
+	if (pud_leaf(*pud_k))
+		goto flush_tlb;
 
 	/*
 	 * Since the vmalloc area is global, it is unnecessary
@@ -153,6 +155,8 @@ static inline void vmalloc_fault(struct pt_regs *regs, int code, unsigned long a
 		no_context(regs, addr);
 		return;
 	}
+	if (pmd_leaf(*pmd_k))
+		goto flush_tlb;
 
 	/*
 	 * Make sure the actual PTE exists as well to
@@ -172,6 +176,7 @@ static inline void vmalloc_fault(struct pt_regs *regs, int code, unsigned long a
 	 * ordering constraint, not a cache flush; it is
 	 * necessary even after writing invalid entries.
 	 */
+flush_tlb:
 	local_flush_tlb_page(addr);
 }
 
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 ef38b1514c77..e16afacc8fd1 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/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 cb1ee53ad3b1..770dcf75eaa9 100644
@@ -261,20 +261,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 1df0e3262bca..bcdc679dad4e 100644
@@ -373,7 +373,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;
@@ -402,10 +401,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, ":"));
@@ -450,6 +446,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 5ebd28e6aa0c..f43eb7340ca5 100644
@@ -527,5 +527,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 1265ad519249..fb4f1e01b64a 100644
@@ -136,10 +136,12 @@ SYM_TYPED_FUNC_START(ftrace_stub)
 	RET
 SYM_FUNC_END(ftrace_stub)
 
+#ifdef CONFIG_FUNCTION_GRAPH_TRACER
 SYM_TYPED_FUNC_START(ftrace_stub_graph)
 	CALL_DEPTH_ACCOUNT
 	RET
 SYM_FUNC_END(ftrace_stub_graph)
+#endif
 
 #ifdef CONFIG_DYNAMIC_FTRACE
 
arch/x86/kernel/sev.c +17 -9
index 679026a640ef..3f664ab277c4 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 d93c715cda6a..bceb5ad409c6 100644
@@ -3021,7 +3021,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;
 
@@ -3047,6 +3047,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:
@@ -3058,7 +3065,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 88cccd65029d..c6efcf559d88 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-core.c +6 -10
index 5a0049215ee7..597293151cd1 100644
@@ -946,16 +946,11 @@ void update_io_ticks(struct block_device *part, unsigned long now, bool end)
 	}
 }
 
-unsigned long bdev_start_io_acct(struct block_device *bdev,
-				 unsigned int sectors, enum req_op op,
+unsigned long bdev_start_io_acct(struct block_device *bdev, enum req_op op,
 				 unsigned long start_time)
 {
-	const int sgrp = op_stat_group(op);
-
 	part_stat_lock();
 	update_io_ticks(bdev, start_time, false);
-	part_stat_inc(bdev, ios[sgrp]);
-	part_stat_add(bdev, sectors[sgrp], sectors);
 	part_stat_local_inc(bdev, in_flight[op_is_write(op)]);
 	part_stat_unlock();
 
@@ -971,13 +966,12 @@ EXPORT_SYMBOL(bdev_start_io_acct);
  */
 unsigned long bio_start_io_acct(struct bio *bio)
 {
-	return bdev_start_io_acct(bio->bi_bdev, bio_sectors(bio),
-				  bio_op(bio), jiffies);
+	return bdev_start_io_acct(bio->bi_bdev, bio_op(bio), jiffies);
 }
 EXPORT_SYMBOL_GPL(bio_start_io_acct);
 
 void bdev_end_io_acct(struct block_device *bdev, enum req_op op,
-		      unsigned long start_time)
+		      unsigned int sectors, unsigned long start_time)
 {
 	const int sgrp = op_stat_group(op);
 	unsigned long now = READ_ONCE(jiffies);
@@ -985,6 +979,8 @@ void bdev_end_io_acct(struct block_device *bdev, enum req_op op,
 
 	part_stat_lock();
 	update_io_ticks(bdev, now, true);
+	part_stat_inc(bdev, ios[sgrp]);
+	part_stat_add(bdev, sectors[sgrp], sectors);
 	part_stat_add(bdev, nsecs[sgrp], jiffies_to_nsecs(duration));
 	part_stat_local_dec(bdev, in_flight[op_is_write(op)]);
 	part_stat_unlock();
@@ -994,7 +990,7 @@ EXPORT_SYMBOL(bdev_end_io_acct);
 void bio_end_io_acct_remapped(struct bio *bio, unsigned long start_time,
 			      struct block_device *orig_bdev)
 {
-	bdev_end_io_acct(orig_bdev, bio_op(bio), start_time);
+	bdev_end_io_acct(orig_bdev, bio_op(bio), bio_sectors(bio), start_time);
 }
 EXPORT_SYMBOL_GPL(bio_end_io_acct_remapped);
 
block/blk-mq.c +3 -2
index b9e3b558367f..c021fb05161b 100644
@@ -2743,6 +2743,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);
 
@@ -2753,10 +2754,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));
 
block/blk-mq.h +3 -2
index ef59fee62780..a7482d2cc82e 100644
@@ -378,12 +378,13 @@ static inline bool hctx_may_queue(struct blk_mq_hw_ctx *hctx,
 #define __blk_mq_run_dispatch_ops(q, check_sleep, dispatch_ops)	\
 do {								\
 	if ((q)->tag_set->flags & BLK_MQ_F_BLOCKING) {		\
+		struct blk_mq_tag_set *__tag_set = (q)->tag_set; \
 		int srcu_idx;					\
 								\
 		might_sleep_if(check_sleep);			\
-		srcu_idx = srcu_read_lock((q)->tag_set->srcu);	\
+		srcu_idx = srcu_read_lock(__tag_set->srcu);	\
 		(dispatch_ops);					\
-		srcu_read_unlock((q)->tag_set->srcu, srcu_idx);	\
+		srcu_read_unlock(__tag_set->srcu, srcu_idx);	\
 	} else {						\
 		rcu_read_lock();				\
 		(dispatch_ops);					\
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 1b35cbd029c7..eabbc3bdec22 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 7d28e3aa406c..a200aba02e43 100644
@@ -1413,8 +1413,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:
 			/*
@@ -1675,7 +1674,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/block/zram/zram_drv.c +2 -2
index e290d6d97047..03ef03e10618 100644
@@ -2108,9 +2108,9 @@ static int zram_rw_page(struct block_device *bdev, sector_t sector,
 	bv.bv_offset = 0;
 
 	start_time = bdev_start_io_acct(bdev->bd_disk->part0,
-			SECTORS_PER_PAGE, op, jiffies);
+			op, jiffies);
 	ret = zram_bvec_rw(zram, &bv, index, offset, op, NULL);
-	bdev_end_io_acct(bdev->bd_disk->part0, op, start_time);
+	bdev_end_io_acct(bdev->bd_disk->part0, op, SECTORS_PER_PAGE, start_time);
 out:
 	/*
 	 * If I/O fails, just return error(ie, non-zero) without
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 c80cf9ddabd8..1fca250d5dec 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 129f68d7a6f5..17d1f4975094 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 ba092072308f..1b4105110f39 100644
@@ -1685,7 +1685,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;
@@ -1752,7 +1752,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;
@@ -1820,7 +1820,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/amdgpu/amdgpu_vcn.c +19 -0
index b1622ac9949f..e1e0e7ee344c 100644
@@ -26,6 +26,7 @@
 
 #include <linux/firmware.h>
 #include <linux/module.h>
+#include <linux/dmi.h>
 #include <linux/pci.h>
 #include <linux/debugfs.h>
 #include <drm/drm_drv.h>
@@ -222,6 +223,24 @@ int amdgpu_vcn_sw_init(struct amdgpu_device *adev)
 		return r;
 	}
 
+	/*
+	 * Some Steam Deck's BIOS versions are incompatible with the
+	 * indirect SRAM mode, leading to amdgpu being unable to get
+	 * properly probed (and even potentially crashing the kernel).
+	 * Hence, check for these versions here - notice this is
+	 * restricted to Vangogh (Deck's APU).
+	 */
+	if (adev->ip_versions[UVD_HWIP][0] == IP_VERSION(3, 0, 2)) {
+		const char *bios_ver = dmi_get_system_info(DMI_BIOS_VERSION);
+
+		if (bios_ver && (!strncmp("F7A0113", bios_ver, 7) ||
+		     !strncmp("F7A0114", bios_ver, 7))) {
+			adev->vcn.indirect_sram = false;
+			dev_info(adev->dev,
+				"Steam Deck quirk: indirect SRAM disabled on BIOS %s\n", bios_ver);
+		}
+	}
+
 	hdr = (const struct common_firmware_header *)adev->vcn.fw->data;
 	adev->vcn.fw_version = le32_to_cpu(hdr->ucode_version);
 
drivers/gpu/drm/amd/amdkfd/kfd_device.c +10 -1
index b8936340742b..4dbf8dae3437 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)
@@ -635,7 +636,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))
@@ -783,6 +784,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/amdgpu_dm/amdgpu_dm.c +3 -3
index 1ba8a2905f82..8661de32d80a 100644
@@ -4985,9 +4985,9 @@ static void fill_dc_dirty_rects(struct drm_plane *plane,
 
 		for (; flip_addrs->dirty_rect_count < num_clips; clips++)
 			fill_dc_dirty_rect(new_plane_state->plane,
-					   &dirty_rects[i], clips->x1,
-					   clips->y1, clips->x2 - clips->x1,
-					   clips->y2 - clips->y1,
+					   &dirty_rects[flip_addrs->dirty_rect_count],
+					   clips->x1, clips->y1,
+					   clips->x2 - clips->x1, clips->y2 - clips->y1,
 					   &flip_addrs->dirty_rect_count,
 					   false);
 		return;
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 9c532167ff46..252356a8160f 100644
@@ -1915,6 +1915,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);
 
@@ -1932,12 +1933,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 379729b02847..c3d75e56410c 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_edid.c +1 -1
index b94adb9bbefb..0116c947a4b3 100644
@@ -2797,7 +2797,7 @@ u32 drm_edid_get_panel_id(struct i2c_adapter *adapter)
 	 * the EDID then we'll just return 0.
 	 */
 
-	base_block = kmalloc(EDID_LENGTH, GFP_KERNEL);
+	base_block = kzalloc(EDID_LENGTH, GFP_KERNEL);
 	if (!base_block)
 		return 0;
 
drivers/gpu/drm/drm_gem.c +7 -2
index b8db675e7fb5..b0246a848006 100644
@@ -1375,10 +1375,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;
@@ -1417,8 +1420,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 1b6989001ee2..af69521bd1e9 100644
@@ -1618,6 +1618,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 051bdbc093cf..f38296ad8743 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 cc94efbbf2d4..d6c741716167 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 88514152d930..69341de397cb 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 df3196f72536..4180a06681b2 100644
@@ -503,7 +503,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;
@@ -511,12 +510,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;
@@ -524,7 +518,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;
@@ -538,17 +532,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;
 }
@@ -558,9 +561,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 5fa171087425..3a1cbfe3e481 100644
@@ -158,8 +158,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;
 }
@@ -245,14 +245,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;
@@ -275,12 +270,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/md/dm.c +3 -3
index 605662935ce9..fdcf42554e2a 100644
@@ -510,10 +510,10 @@ static void dm_io_acct(struct dm_io *io, bool end)
 		sectors = io->sectors;
 
 	if (!end)
-		bdev_start_io_acct(bio->bi_bdev, sectors, bio_op(bio),
-				   start_time);
+		bdev_start_io_acct(bio->bi_bdev, bio_op(bio), start_time);
 	else
-		bdev_end_io_acct(bio->bi_bdev, bio_op(bio), start_time);
+		bdev_end_io_acct(bio->bi_bdev, bio_op(bio), sectors,
+				 start_time);
 
 	if (static_branch_unlikely(&stats_enabled) &&
 	    unlikely(dm_stats_used(&md->stats))) {
drivers/media/i2c/m5mols/m5mols_core.c +1 -1
index 2b01873ba0db..5c2336f318d9 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 592907546ee6..5cd28619ea9f 100644
@@ -794,16 +794,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);
@@ -830,12 +826,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 bd4e37b6552d..fd595c851a27 100644
@@ -1021,15 +1021,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";
@@ -1050,12 +1048,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 77706e9bc543..c91e9b7e2e01 100644
@@ -1533,15 +1533,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";
@@ -1562,12 +1560,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/sdhci_am654.c +1 -1
index 7ef828942df3..89953093e20c 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 0363ce597661..116d295df0b5 100644
@@ -1773,6 +1773,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)
@@ -1864,10 +1877,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);
@@ -2287,9 +2298,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 9b20c2ee6d62..19cd05762ab7 100644
@@ -310,7 +310,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 242b8b325504..89829e0ca8e8 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 1e8d902e1c8e..7f933175cbda 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/broadcom/bnxt/bnxt.c +2 -4
index 25d1642c10c3..b44b2ec5e61a 100644
@@ -6991,11 +6991,9 @@ static int bnxt_hwrm_func_qcfg(struct bnxt *bp)
 		if (flags & FUNC_QCFG_RESP_FLAGS_FW_DCBX_AGENT_ENABLED)
 			bp->fw_cap |= BNXT_FW_CAP_DCBX_AGENT;
 	}
-	if (BNXT_PF(bp) && (flags & FUNC_QCFG_RESP_FLAGS_MULTI_HOST)) {
+	if (BNXT_PF(bp) && (flags & FUNC_QCFG_RESP_FLAGS_MULTI_HOST))
 		bp->flags |= BNXT_FLAG_MULTI_HOST;
-		if (bp->fw_cap & BNXT_FW_CAP_PTP_RTC)
-			bp->fw_cap &= ~BNXT_FW_CAP_PTP_RTC;
-	}
+
 	if (flags & FUNC_QCFG_RESP_FLAGS_RING_MONITOR_ENABLED)
 		bp->fw_cap |= BNXT_FW_CAP_RING_MONITOR;
 
drivers/net/ethernet/broadcom/bnxt/bnxt.h +2 -0
index 5163ef4a49ea..56355e64815e 100644
@@ -1992,6 +1992,8 @@ struct bnxt {
 	u32			fw_dbg_cap;
 
 #define BNXT_NEW_RM(bp)		((bp)->fw_cap & BNXT_FW_CAP_NEW_RM)
+#define BNXT_PTP_USE_RTC(bp)	(!BNXT_MH(bp) && \
+				 ((bp)->fw_cap & BNXT_FW_CAP_PTP_RTC))
 	u32			hwrm_spec_code;
 	u16			hwrm_cmd_seq;
 	u16                     hwrm_cmd_kong_seq;
drivers/net/ethernet/broadcom/bnxt/bnxt_ptp.c +31 -25

99 lines not on this page · raw message

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 52eec0a50492..8328139db379 100644
@@ -15518,6 +15518,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 713069f809ec..3cad5e6b2ad1 100644
@@ -506,6 +506,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 */
@@ -950,16 +951,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 381146282439..56155a04cc0c 100644
@@ -2316,18 +2316,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 374b7f10b549..76b8ac346226 100644
@@ -184,8 +184,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)
@@ -200,10 +198,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/mediatek/mtk_eth_soc.h +4 -0
index b481d0d46bb1..d4b4f9eaa441 100644
@@ -528,6 +528,10 @@
 #define SGMII_SEND_AN_ERROR_EN		BIT(11)
 #define SGMII_IF_MODE_MASK		GENMASK(5, 1)
 
+/* Register to reset SGMII design */
+#define SGMII_RESERVED_0	0x34
+#define SGMII_SW_RESET		BIT(0)
+
 /* Register to set SGMII speed, ANA RG_ Control Signals III*/
 #define SGMSYS_ANA_RG_CS3	0x2028
 #define RG_PHY_SPEED_MASK	(BIT(2) | BIT(3))
drivers/net/ethernet/mediatek/mtk_sgmii.c +16 -12
index bb00de1003ac..83976dc86887 100644
@@ -38,20 +38,16 @@ static int mtk_pcs_config(struct phylink_pcs *pcs, unsigned int mode,
 			  const unsigned long *advertising,
 			  bool permit_pause_to_mac)
 {
+	bool mode_changed = false, changed, use_an;
 	struct mtk_pcs *mpcs = pcs_to_mtk_pcs(pcs);
 	unsigned int rgc3, sgm_mode, bmcr;
 	int advertise, link_timer;
-	bool changed, use_an;
 
 	advertise = phylink_mii_c22_pcs_encode_advertisement(interface,
 							     advertising);
 	if (advertise < 0)
 		return advertise;
 
-	link_timer = phylink_get_link_timer_ns(interface);
-	if (link_timer < 0)
-		return link_timer;
-
 	/* Clearing IF_MODE_BIT0 switches the PCS to BASE-X mode, and
 	 * we assume that fixes it's speed at bitrate = line rate (in
 	 * other words, 1000Mbps or 2500Mbps).
@@ -77,17 +73,24 @@ static int mtk_pcs_config(struct phylink_pcs *pcs, unsigned int mode,
 	}
 
 	if (use_an) {
-		/* FIXME: Do we need to set AN_RESTART here? */
-		bmcr = SGMII_AN_RESTART | SGMII_AN_ENABLE;
+		bmcr = SGMII_AN_ENABLE;
 	} else {
 		bmcr = 0;
 	}
 
 	if (mpcs->interface != interface) {
+		link_timer = phylink_get_link_timer_ns(interface);
+		if (link_timer < 0)
+			return link_timer;
+
 		/* PHYA power down */
 		regmap_update_bits(mpcs->regmap, SGMSYS_QPHY_PWR_STATE_CTRL,
 				   SGMII_PHYA_PWD, SGMII_PHYA_PWD);
 
+		/* Reset SGMII PCS state */
+		regmap_update_bits(mpcs->regmap, SGMII_RESERVED_0,
+				   SGMII_SW_RESET, SGMII_SW_RESET);
+
 		if (interface == PHY_INTERFACE_MODE_2500BASEX)
 			rgc3 = RG_PHY_SPEED_3_125G;
 		else
@@ -97,16 +100,17 @@ static int mtk_pcs_config(struct phylink_pcs *pcs, unsigned int mode,
 		regmap_update_bits(mpcs->regmap, mpcs->ana_rgc3,
 				   RG_PHY_SPEED_3_125G, rgc3);
 
+		/* Setup the link timer */
+		regmap_write(mpcs->regmap, SGMSYS_PCS_LINK_TIMER, link_timer / 2 / 8);
+
 		mpcs->interface = interface;
+		mode_changed = true;
 	}
 
 	/* Update the advertisement, noting whether it has changed */
 	regmap_update_bits_check(mpcs->regmap, SGMSYS_PCS_ADVERTISE,
 				 SGMII_ADVERTISE, advertise, &changed);
 
-	/* Setup the link timer and QPHY power up inside SGMIISYS */
-	regmap_write(mpcs->regmap, SGMSYS_PCS_LINK_TIMER, link_timer / 2 / 8);
-
 	/* Update the sgmsys mode register */
 	regmap_update_bits(mpcs->regmap, SGMSYS_SGMII_MODE,
 			   SGMII_REMOTE_FAULT_DIS | SGMII_SPEED_DUPLEX_AN |
@@ -114,7 +118,7 @@ static int mtk_pcs_config(struct phylink_pcs *pcs, unsigned int mode,
 
 	/* Update the BMCR */
 	regmap_update_bits(mpcs->regmap, SGMSYS_PCS_CONTROL_1,
-			   SGMII_AN_RESTART | SGMII_AN_ENABLE, bmcr);
+			   SGMII_AN_ENABLE, bmcr);
 
 	/* Release PHYA power down state
 	 * Only removing bit SGMII_PHYA_PWD isn't enough.
@@ -128,7 +132,7 @@ static int mtk_pcs_config(struct phylink_pcs *pcs, unsigned int mode,
 	usleep_range(50, 100);
 	regmap_write(mpcs->regmap, SGMSYS_QPHY_PWR_STATE_CTRL, 0);
 
-	return changed;
+	return changed || mode_changed;
 }
 
 static void mtk_pcs_restart_an(struct phylink_pcs *pcs)
drivers/net/ethernet/mellanox/mlx5/core/en.h +0 -1
index 2d77fb8a8a01..ae73c9af8f25 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_accel/macsec.c +1 -1
index 7f6b940830b3..f84f1cfcddb8 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 6c24f33a5ea5..d6bcbc17151d 100644
@@ -4923,8 +4923,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;
 
@@ -5223,7 +5221,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 7d90e5b72854..301a734b7c6a 100644
@@ -752,7 +752,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 +11 -0
index 243d5d7750be..c209e89ba9ab 100644
@@ -4240,6 +4240,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;
@@ -5373,6 +5374,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;
+
[… more lines in the raw message]

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

drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c +5 -5
index f3b74cb67b71..3992bf6337ca 100644

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

drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c +0 -1
index 911cf4d23964..4285b31fee6c 100644

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

drivers/net/ethernet/mellanox/mlx5/core/main.c +2 -2
index 4e1b5757528a..f4e0431da55b 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 f5b2d965d476..12540feb4508 100644

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

drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c +14 -0
index 09e32778b012..4a73e2fe95ef 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/rswitch.c +39 -35

74 lines not on this page · raw message

drivers/net/ethernet/renesas/rswitch.h +2 -2
index 49efb0f31c77..0584670abead 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 fe86fbd58586..e220620d0ffc 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 dfc7d87fad59..30ae6695f864 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 fbed8d1a02ef..70b5e891f6b3 100644

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

drivers/nvme/host/multipath.c +4 -4
index fc39d01e7b63..9171452e2f6d 100644

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

drivers/nvme/host/pci.c +2 -0
index c11e0cfeef0f..29c902b9aecb 100644

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

drivers/nvme/target/core.c +3 -1
index f66ed13d7c11..3935165048e7 100644

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

drivers/pci/bus.c +21 -0
index 83ae838ceb5f..549c4bd5caec 100644

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

drivers/scsi/hosts.c +0 -3
index 8e34bbf44d1f..2bf8612fa55d 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 9feb0323bc44..dff1d692e756 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 f9b18fdc7b3c..6042a5587bc3 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 c55b947f3cdb..8cbf73f86059 100644

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

drivers/tty/serial/fsl_lpuart.c +12 -11
index b136c596fe6a..812216b24db8 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 cc37ec3f8fc1..7799d52a651f 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/cifs_debug.c +5 -0
index 56b23def4c95..d9876bd396fd 100644

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

fs/cifs/cifs_dfs_ref.c +1 -0
index 2b1a8d55b4ec..cb40074feb3e 100644

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

fs/cifs/cifs_fs_sb.h +0 -2
index 013a4bd65280..651759192280 100644

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

fs/cifs/cifsglob.h +2 -2
index cfdd5bf701a1..5aaaa47dea41 100644

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

fs/cifs/connect.c +4 -6
index af49ae53aaf4..5a889f5f5c3e 100644

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

fs/cifs/dfs.c +45 -22

67 lines not on this page · raw message

fs/cifs/dfs.h +18 -1
index 344bea6d8bab..13f26e01f7b9 100644

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

fs/cifs/dfs_cache.c +0 -140

140 lines not on this page · raw message

fs/cifs/dfs_cache.h +0 -2
index be3b5a44cf82..e0d39393035a 100644

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

fs/cifs/fs_context.h +1 -0
index 44cb5639ed3b..1b8d4e27f831 100644

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

fs/cifs/misc.c +8 -0
index ae0679f0c0d2..9f4486b705d5 100644

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

fs/cifs/smb2inode.c +24 -7
index 9b956294e864..8dd3791b5c53 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/namei.c +1 -3
index 7cc3918e2f18..604ee458f31d 100644

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

fs/ext4/super.c +5 -2
index c81fa0fa9901..e79ca9ef9831 100644

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

fs/ext4/xattr.c +11 -0
index 494994d9a332..f66c3fae9058 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 a17c2f903f81..b46ade812443 100644

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

include/linux/blk-mq.h +6 -0
index 779fba613bd0..19ae71f3fb97 100644

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

include/linux/blkdev.h +2 -3
index 43d4e073b111..c3e066242941 100644

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

include/linux/fb.h +1 -0
index 73eb1f85ea8e..05e40fcc7696 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 e6e02184c25a..84668547fee6 100644

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

include/linux/pci.h +1 -0
index 50042ea8e008..db6ec828aa4b 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 3642b8e3928b..15169d75c251 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 15602a136821..be2695eb45ec 100644

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

kernel/events/core.c +1 -1
index c4be13e50547..8ae8a5055e20 100644

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

kernel/trace/ftrace.c +2 -1
index 750aa3f08b25..a47f7d93e32d 100644

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

kernel/trace/trace.c +2 -0
index b677f8d61deb..1b692574fb0c 100644

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

kernel/trace/trace_events_hist.c +12 -0
index 5edbf6b1da3f..10d36f751fcd 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 d6651be1aa52..7624d22f9227 100644

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

mm/mincore.c +1 -1
index a085a2aeabd8..efdee2d03b53 100644

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

net/9p/client.c +1 -1
index 622ec6a586ee..00a6d1e34876 100644

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

net/dsa/slave.c +5 -4
index aab79c355224..6711ddc0a3c7 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 7a13dd7f546b..7b05315264b0 100644

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

net/ipv4/ip_tunnel.c +6 -6
index de90b09dfe78..2541083d49ad 100644

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

net/ipv4/tcp_output.c +1 -1
index 71d01cf3c13e..ba839e441450 100644

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

net/ipv6/ip6_tunnel.c +2 -2
index 47b6607a1370..5e80e517f071 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 10fe9771a852..c0c45bf6787d 100644

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

net/mptcp/protocol.c +32 -32

64 lines not on this page · raw message

net/mptcp/protocol.h +4 -2
index 601469249da8..644cf0686f34 100644

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

net/mptcp/subflow.c +42 -86

128 lines not on this page · raw message

net/netfilter/nft_masq.c +1 -1
index e55e455275c4..9544c2f16998 100644

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

net/netfilter/nft_nat.c +1 -1
index 047999150390..5c29915ab028 100644

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

net/netfilter/nft_redir.c +2 -2
index 5f7739987559..67cec56bc84a 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 02b9a0280896..e34491e63133 100644

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

net/xfrm/xfrm_state.c +0 -5
index 00afe831c71c..f238048bf786 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 56ee5fef66a8..28dd2046e4ac 100644

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

sound/soc/qcom/qdsp6/q6prm.c +2 -2
index 8aa1a213bfb7..c1dc5bae715a 100644

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

sound/soc/sof/intel/pci-apl.c +1 -0
index 69279dcc92dc..aff6cb573c27 100644

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

sound/soc/sof/intel/pci-cnl.c +2 -0
index 8db3f8d15b55..4c0c1c369dcd 100644

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

sound/soc/sof/intel/pci-icl.c +1 -0
index d6cf75e357db..6785669113b3 100644

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

sound/soc/sof/intel/pci-mtl.c +1 -0
index 6e4e6d4ef5a5..b183dc0014b4 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 e80c4dfef85a..22e769e0831d 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/amd-pstate/Makefile +9 -4
index 5fd1424db37d..c382f579fe94 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.