Skip to contentSkip to conversation

Linux 6.12.18

DISCUSSION Greg Kroah-Hartman 3 participants 4 messages Mar 7, 2025 – Mar 8, 2025

Subsystems (2)
lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 6.12.18 kernel.

All users of the 6.12 kernel series must upgrade.

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

thanks,

greg k-h

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

 Makefile                                              |    2 
 arch/arm64/include/asm/kvm_host.h                     |    2 
 arch/arm64/kvm/arm.c                                  |   22 
 arch/arm64/kvm/vmid.c                                 |   11 
 arch/arm64/mm/init.c                                  |    7 
 arch/riscv/include/asm/futex.h                        |    2 
 arch/riscv/kernel/cacheinfo.c                         |   12 
 arch/riscv/kernel/cpufeature.c                        |    2 
 arch/riscv/kernel/setup.c                             |    2 
 arch/riscv/kernel/signal.c                            |    6 
 arch/riscv/kvm/vcpu_sbi_hsm.c                         |   11 
 arch/riscv/kvm/vcpu_sbi_replace.c                     |   15 
 arch/x86/Kconfig                                      |    1 
 arch/x86/events/core.c                                |    2 
 arch/x86/kernel/cpu/cyrix.c                           |    4 
 arch/x86/kernel/cpu/microcode/amd.c                   |  283 +++++--
 arch/x86/kernel/cpu/microcode/amd_shas.c              |  444 ++++++++++++
 arch/x86/kernel/cpu/microcode/internal.h              |    2 
 block/blk-zoned.c                                     |   76 +-
 drivers/firmware/cirrus/cs_dsp.c                      |   24 
 drivers/firmware/efi/mokvar-table.c                   |   42 -
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c            |    7 
 drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c               |    2 
 drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v10.c      |    6 
 drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v11.c      |    5 
 drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v12.c      |    5 
 drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c       |    5 
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c     |   69 +
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.c |   14 
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_psr.c |    3 
 drivers/gpu/drm/amd/pm/legacy-dpm/kv_dpm.c            |   25 
 drivers/gpu/drm/amd/pm/legacy-dpm/legacy_dpm.c        |    8 
 drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c            |   26 
 drivers/gpu/drm/xe/regs/xe_engine_regs.h              |    1 
 drivers/gpu/drm/xe/xe_oa.c                            |  657 ++++++++++--------
 drivers/gpu/drm/xe/xe_oa_types.h                      |    6 
 drivers/gpu/drm/xe/xe_vm.c                            |   40 -
 drivers/i2c/busses/i2c-ls2x.c                         |   16 
 drivers/i2c/busses/i2c-npcm7xx.c                      |    7 
 drivers/idle/intel_idle.c                             |    4 
 drivers/infiniband/hw/bnxt_re/bnxt_re.h               |   18 
 drivers/infiniband/hw/bnxt_re/hw_counters.c           |    4 
 drivers/infiniband/hw/bnxt_re/ib_verbs.c              |   46 -
 drivers/infiniband/hw/bnxt_re/main.c                  |  153 ++--
 drivers/infiniband/hw/bnxt_re/qplib_res.c             |    7 
 drivers/infiniband/hw/bnxt_re/qplib_res.h             |   12 
 drivers/infiniband/hw/bnxt_re/qplib_sp.c              |    4 
 drivers/infiniband/hw/bnxt_re/qplib_sp.h              |    3 
 drivers/infiniband/hw/hns/hns_roce_hw_v2.c            |   64 +
 drivers/infiniband/hw/hns/hns_roce_hw_v2.h            |    2 
 drivers/infiniband/hw/mana/main.c                     |    2 
 drivers/infiniband/hw/mlx5/ah.c                       |    3 
 drivers/infiniband/hw/mlx5/counters.c                 |    8 
 drivers/infiniband/hw/mlx5/mr.c                       |   16 
 drivers/infiniband/hw/mlx5/odp.c                      |    1 
 drivers/infiniband/hw/mlx5/qp.c                       |   10 
 drivers/infiniband/hw/mlx5/qp.h                       |    1 
 drivers/infiniband/hw/mlx5/umr.c                      |   83 +-
 drivers/iommu/intel/dmar.c                            |    1 
 drivers/iommu/intel/iommu.c                           |   10 
 drivers/md/dm-integrity.c                             |    8 
 drivers/md/dm-vdo/dedupe.c                            |    1 
 drivers/net/dsa/realtek/Kconfig                       |    6 
 drivers/net/dsa/realtek/Makefile                      |    3 
 drivers/net/dsa/realtek/rtl8366rb-leds.c              |  177 ++++
 drivers/net/dsa/realtek/rtl8366rb.c                   |  258 -------
 drivers/net/dsa/realtek/rtl8366rb.h                   |  107 ++
 drivers/net/ethernet/cadence/macb.h                   |    2 
 drivers/net/ethernet/cadence/macb_main.c              |   12 
 drivers/net/ethernet/freescale/enetc/enetc.c          |  103 ++
 drivers/net/ethernet/freescale/enetc/enetc_ethtool.c  |    7 
 drivers/net/ethernet/intel/ice/ice.h                  |    1 
 drivers/net/ethernet/intel/ice/ice_eswitch.c          |    3 
 drivers/net/ethernet/intel/ice/ice_hw_autogen.h       |    3 
 drivers/net/ethernet/intel/ice/ice_lib.c              |    3 
 drivers/net/ethernet/intel/ice/ice_main.c             |   24 
 drivers/net/ethernet/intel/ice/ice_sriov.c            |    4 
 drivers/net/ethernet/intel/ice/ice_vf_lib.c           |   34 
 drivers/net/ethernet/intel/ice/ice_vf_lib_private.h   |    1 
 drivers/net/ethernet/intel/ice/ice_vf_mbx.c           |   32 
 drivers/net/ethernet/intel/ice/ice_vf_mbx.h           |    9 
 drivers/net/ethernet/intel/ice/ice_virtchnl.c         |    8 
 drivers/net/ethernet/intel/idpf/idpf_txrx.c           |    3 
 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c        |    2 
 drivers/net/ethernet/mellanox/mlx5/core/pci_irq.c     |    2 
 drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c  |   14 
 drivers/net/ethernet/ti/Kconfig                       |    1 
 drivers/net/ethernet/ti/icssg/icss_iep.c              |   21 
 drivers/net/ipvlan/ipvlan_core.c                      |   22 
 drivers/net/loopback.c                                |   14 
 drivers/net/phy/qcom/qca807x.c                        |    2 
 drivers/net/usb/gl620a.c                              |    4 
 drivers/phy/rockchip/Kconfig                          |    1 
 drivers/phy/rockchip/phy-rockchip-naneng-combphy.c    |    5 
 drivers/phy/samsung/phy-exynos5-usbdrd.c              |   25 
 drivers/phy/tegra/xusb-tegra186.c                     |   11 
 drivers/scsi/scsi_lib.c                               |   14 
 drivers/thermal/gov_bang_bang.c                       |   11 
 drivers/thermal/gov_fair_share.c                      |   16 
 drivers/thermal/gov_power_allocator.c                 |   71 +
 drivers/thermal/gov_step_wise.c                       |   16 
 drivers/thermal/thermal_core.c                        |   33 
 drivers/thermal/thermal_core.h                        |    5 
 drivers/thermal/thermal_helpers.c                     |    5 
 drivers/thermal/thermal_of.c                          |   53 -
 drivers/ufs/core/ufs_bsg.c                            |    6 
 drivers/ufs/core/ufshcd.c                             |   38 -
 fs/afs/server.c                                       |    3 
 fs/afs/server_list.c                                  |    4 
 fs/nfs/delegation.c                                   |   37 +
 fs/nfs/delegation.h                                   |    1 
 fs/nfs/direct.c                                       |   23 
 fs/nfs/nfs4proc.c                                     |    3 
 fs/overlayfs/copy_up.c                                |    2 
 include/asm-generic/vmlinux.lds.h                     |    2 
 include/linux/blkdev.h                                |    7 
 include/linux/compiler-gcc.h                          |   12 
 include/linux/compiler.h                              |   39 -
 include/linux/rcuref.h                                |    9 
 include/linux/socket.h                                |    2 
 include/linux/sunrpc/sched.h                          |    3 
 include/net/ip.h                                      |    5 
 include/net/route.h                                   |    5 
 include/sound/cs35l56.h                               |   31 
 include/trace/events/afs.h                            |    2 
 include/trace/events/sunrpc.h                         |    3 
 io_uring/net.c                                        |    4 
 kernel/events/core.c                                  |   31 
 kernel/events/uprobes.c                               |    5 
 kernel/sched/core.c                                   |    2 
 kernel/sched/ext.c                                    |   11 
 kernel/trace/ftrace.c                                 |   27 
 kernel/trace/trace_events_hist.c                      |   30 
 lib/rcuref.c                                          |    5 
 net/bluetooth/l2cap_core.c                            |    9 
 net/bridge/br_netfilter_hooks.c                       |    8 
 net/core/gro.c                                        |    1 
 net/core/scm.c                                        |   10 
 net/core/skbuff.c                                     |    2 
 net/core/sysctl_net_core.c                            |    3 
 net/ipv4/icmp.c                                       |   19 
 net/ipv4/ip_options.c                                 |    3 
 net/ipv4/tcp.c                                        |   26 
 net/ipv4/tcp_minisocks.c                              |   10 
 net/ipv6/ip6_tunnel.c                                 |    4 
 net/ipv6/rpl_iptunnel.c                               |   14 
 net/ipv6/seg6_iptunnel.c                              |   14 
 net/mptcp/pm_netlink.c                                |    5 
 net/mptcp/subflow.c                                   |   15 
 net/rxrpc/rxperf.c                                    |   12 
 net/sunrpc/cache.c                                    |   10 
 net/sunrpc/sched.c                                    |    2 
 net/sunrpc/xprtsock.c                                 |   10 
 security/integrity/ima/ima.h                          |    3 
 security/integrity/ima/ima_main.c                     |    7 
 security/landlock/net.c                               |    3 
 sound/pci/hda/cs35l56_hda_spi.c                       |    3 
 sound/pci/hda/patch_realtek.c                         |    2 
 sound/soc/codecs/cs35l56-shared.c                     |   80 ++
 sound/soc/codecs/cs35l56-spi.c                        |    3 
 sound/soc/codecs/es8328.c                             |   15 
 sound/soc/fsl/fsl_sai.c                               |    6 
 sound/soc/fsl/imx-audmix.c                            |    4 
 sound/usb/midi.c                                      |    2 
 sound/usb/quirks.c                                    |    1 
 tools/objtool/check.c                                 |   50 -
 tools/objtool/include/objtool/special.h               |    2 
 tools/testing/selftests/drivers/net/queues.py         |    7 
 tools/testing/selftests/landlock/common.h             |    1 
 tools/testing/selftests/landlock/config               |    2 
 tools/testing/selftests/landlock/net_test.c           |  124 +++
 tools/testing/selftests/rseq/rseq-riscv-bits.h        |    6 
 tools/testing/selftests/rseq/rseq-riscv.h             |    2 
 173 files changed, 2929 insertions(+), 1406 deletions(-)

Adrien Vergé (1):
ALSA: hda/realtek: Fix microphone regression on ASUS N705UD

Alex Deucher (1):
drm/amdgpu: disable BAR resize on Dell G5 SE

Andreas Schwab (1):
riscv/futex: sign extend compare value in atomic cmpxchg

Andrew Jones (4):
riscv: KVM: Fix hart suspend status check
riscv: KVM: Fix hart suspend_type use
riscv: KVM: Fix SBI IPI error generation
riscv: KVM: Fix SBI TIME error generation

André Draszik (1):
phy: exynos5-usbdrd: gs101: ensure power is gated to SS phy in phy_exit()

Ard Biesheuvel (2):
objtool: Fix C jump table annotations for Clang vmlinux.lds: Ensure that const vars with relocations are mapped R/O

Arnd Bergmann (2):
sunrpc: suppress warnings for unused procfs functions
phy: rockchip: fix Kconfig dependency more

Arthur Simchaev (1):
scsi: ufs: core: bsg: Fix crash when arpmb command fails

Ashutosh Dixit (4):
drm/xe/oa: Signal output fences
drm/xe/oa: Move functions up so they can be reused for config ioctl drm/xe/oa: Add syncs support to OA config ioctl drm/xe/oa: Allow only certain property changes from config

BH Hsieh (1):
phy: tegra: xusb: reset VBUS & ID OVERRIDE

Bart Van Assche (1):
scsi: ufs: core: Fix ufshcd_is_ufs_dev_busy() and ufshcd_eh_timed_out()

Benjamin Coddington (1):
SUNRPC: Handle -ETIMEDOUT return from tlshd

Binbin Zhou (1):
i2c: ls2x: Fix frequency division register access

Borislav Petkov (AMD) (7):
x86/microcode/AMD: Have __apply_microcode_amd() return bool x86/microcode/AMD: Remove ugly linebreak in __verify_patch_section() signature x86/microcode/AMD: Remove unused save_microcode_in_initrd_amd() declarations x86/microcode/AMD: Merge early_apply_microcode() into its single callsite x86/microcode/AMD: Get rid of the _load_microcode_amd() forward declaration x86/microcode/AMD: Add get_patch_level()
x86/microcode/AMD: Load only SHA256-checksummed patches

Breno Leitao (1):
perf/core: Add RCU read lock protection to perf_iterate_ctx()

Chancel Liu (1):
ASoC: fsl: Rename stream name of SAI DAI driver

Chukun Pan (1):
phy: rockchip: naneng-combphy: compatible reset with old DT

Clément Léger (1):
riscv: cpufeature: use bitmap_equal() instead of memcmp()

Damien Le Moal (1):
block: Remove zone write plugs when handling native zone append writes

David Howells (3):
rxrpc: rxperf: Fix missing decoding of terminal magic cookie
afs: Fix the server_list to unuse a displaced server rather than putting it
afs: Give an afs_server object a ref on the afs_cell object it points to

David Yat Sin (1):
drm/amdkfd: Preserve cp_hqd_pq_control on update_mqd

Dmitry Panchenko (1):
ALSA: usb-audio: Re-add sample rate quirk for Pioneer DJM-900NXS2

Eric Dumazet (2):
ipvlan: ensure network headers are in skb linear part
idpf: fix checksums set in idpf_rx_rsc()

George Moussalem (1):
net: phy: qcom: qca807x fix condition for DAC_DSP_BIAS_CURRENT

Greg Kroah-Hartman (1):

      Linux 6.12.18

Guillaume Nault (3):
ipv4: Convert icmp_route_lookup() to dscp_t.
ipv4: Convert ip_route_input() to dscp_t.
ipvlan: Prepare ipvlan_process_v4_outbound() to future .flowi4_tos conversion.

Harshal Chaudhari (1):
net: mvpp2: cls: Fixed Non IP flow, with vlan tag flow defination.

Ido Schimmel (1):
net: loopback: Avoid sending IP packets without an Ethernet header

Jerry Snitselaar (1):
iommu/vt-d: Remove device comparison in context_setup_pass_through_cb

Jiri Slaby (SUSE) (1):
net: set the minimum for net_hotdata.netdev_budget_usecs

Joe Damato (1):
selftests: drv-net: Check if combined-count exists

Junxian Huang (1):
RDMA/hns: Fix mbox timing out by adding retry mechanism

Justin Iurman (2):
net: ipv6: fix dst ref loop on input in seg6 lwt
net: ipv6: fix dst ref loop on input in rpl lwt

Kalesh AP (5):
RDMA/bnxt_re: Fail probe early when not enough MSI-x vectors are reserved RDMA/bnxt_re: Refactor NQ allocation
RDMA/bnxt_re: Cache MSIx info to a local structure RDMA/bnxt_re: Add sanity checks on rdev validity RDMA/bnxt_re: Allocate dev_attr information dynamically

Kan Liang (2):
perf/x86: Fix low freqency setting issue perf/core: Fix low freq setting via IOC_PERIOD

Kashyap Desai (1):
RDMA/bnxt_re: Fix the page details for the srq created by kernel consumers

Kaustabh Chakraborty (1):
phy: exynos5-usbdrd: fix MPLL_MULTIPLIER and SSC_REFCLKSEL masks in refclk

Ken Raeburn (1):
dm vdo: add missing spin_lock_init

Konstantin Taranov (1):
RDMA/mana_ib: Allocate PAGE aligned doorbell index

Krzysztof Kozlowski (1):
thermal: of: Simplify thermal_of_should_bind with scoped for each OF child

Linus Walleij (1):
net: dsa: rtl8366rb: Fix compilation problem

Lu Baolu (1):
iommu/vt-d: Fix suspicious RCU usage

Luiz Augusto von Dentz (1):
Bluetooth: L2CAP: Fix L2CAP_ECRED_CONN_RSP response

Luo Gengkun (1):
perf/core: Order the PMU list to fix warning about unordered pmu_ctx_list

Manivannan Sadhasivam (1):
scsi: ufs: core: Set default runtime/system PM levels before ufshcd_hba_init()

Marcin Szycik (2):
ice: Fix deinitializing VF in error path
ice: Avoid setting default Rx VSI twice in switchdev setup

Mark Zhang (1):
IB/mlx5: Set and get correct qp_num for a DCT QP

Matthew Auld (2):
drm/xe/userptr: restore invalidation list on error drm/xe/userptr: fix EFAULT handling

Matthieu Baerts (NGI0) (1):
mptcp: reset when MPTCP opts are dropped after join

Meghana Malladi (1):
net: ti: icss-iep: Reject perout generation request

Mikhail Ivanov (3):
landlock: Fix non-TCP sockets restriction selftests/landlock: Test that MPTCP actions are not restricted selftests/landlock: Test TCP accesses with protocol=IPPROTO_TCP

Milan Broz (1):
dm-integrity: Avoid divide by zero in table status in Inline mode

Mingcong Bai (1):
drm/xe/regs: remove a duplicate definition for RING_CTL_SIZE(size)

Mohammad Heib (1):
net: Clear old fragment checksum value in napi_reuse_skb

Nicolas Frattaroli (1):
ASoC: es8328: fix route from DAC to output

Nikita Zhandarovich (1):
usbnet: gl620a: fix endpoint checking in genelink_bind()

Nikolay Borisov (1):
x86/microcode/AMD: Return bool from find_blobs_in_containers()

Nikolay Kuratov (1):
ftrace: Avoid potential division by zero in function_stat_show()

Oliver Upton (1):
KVM: arm64: Ensure a VMID is allocated before programming VTTBR_EL2

Paolo Abeni (1):
mptcp: always handle address removal under msk socket lock

Patrisious Haddad (2):
RDMA/mlx5: Fix AH static rate parsing
RDMA/mlx5: Fix bind QP error cleanup flow

Paul Greenwalt (1):
ice: add E830 HW VF mailbox message limit support

Pavel Begunkov (1):
io_uring/net: save msg_control for compat

Peter Jones (1):
efi: Don't map the entire mokvar table to determine its size

Peter Zijlstra (2):
unreachable: Unify
objtool: Remove annotate_{,un}reachable()

Philo Lu (1):
ipvs: Always clear ipvs_property flag in skb_scrub_packet()

Pierre-Eric Pelloux-Prayer (1):
drm/amdgpu: init return value in amdgpu_ttm_clear_buffer

Qunqin Zhao (1):
net: stmmac: dwmac-loongson: Add fix_soc_reset() callback

Rafael J. Wysocki (3):
thermal/of: Fix cdev lookup in thermal_of_should_bind()
thermal: core: Move lists of thermal instances to trip descriptors
thermal: gov_power_allocator: Add missing NULL pointer check

Richard Fitzgerald (2):
firmware: cs_dsp: Remove async regmap writes
ASoC: cs35l56: Prevent races when soft-resetting using SPI control

Rob Herring (1):
riscv: cacheinfo: Use of_property_present() for non-boolean properties

Roberto Sassu (1):
ima: Reset IMA_NONACTION_RULE_FLAGS after post_setattr

Roman Li (1):
drm/amd/display: Fix HPD after gpu reset

Russell Senior (1):
x86/CPU: Fix warm boot hang regression on AMD SC1100 SoC systems

Ryan Roberts (1):
arm64/mm: Fix Boot panic on Ampere Altra

Sascha Hauer (1):
net: ethernet: ti: am65-cpsw: select PAGE_POOL

Sean Anderson (1):
net: cadence: macb: Synchronize stats calculations

Selvin Xavier (1):
RDMA/bnxt_re: Fix the statistics for Gen P7 VF

Shay Drory (1):
net/mlx5: IRQ, Fix null string in debug print

Stafford Horne (1):
rseq/selftests: Fix riscv rseq_offset_deref_addv inline asm

Stanislav Fomichev (1):
tcp: devmem: don't write truncated dmabuf CMSGs to userspace

Steven Rostedt (1):
tracing: Fix bad hist from corrupting named_triggers list

Takashi Iwai (2):
ALSA: usb-audio: Avoid dropping MIDI events at closing multiple ports
ALSA: hda/realtek: Fix wrong mic setup for ASUS VivoBook 15

Tejun Heo (1):
sched_ext: Fix pick_task_scx() picking non-queued tasks when it's called without balance()

Thomas Gleixner (3):
intel_idle: Handle older CPUs, which stop the TSC in deeper C states, correctly
rcuref: Plug slowpath race in rcuref_put()
sched/core: Prevent rescheduling when interrupts are disabled

Tom Chung (1):
drm/amd/display: Disable PSR-SU on eDP panels

Tong Tiangen (1):
uprobes: Reject the shared zeropage in uprobe_write_opcode()

Trond Myklebust (4):
NFS: O_DIRECT writes must check and adjust the file length
NFS: Adjust delegated timestamps for O_DIRECT reads and writes
SUNRPC: Prevent looping due to rpc_signal_task() races
NFSv4: Fix a deadlock when recovering state on a sillyrenamed file

Tyrone Ting (1):
i2c: npcm: disable interrupt enable bit before devm_request_irq

Umesh Nerlige Ramappa (1):
drm/xe/oa: Allow oa_exponent value of 0

Vasiliy Kovalev (1):
ovl: fix UAF in ovl_dentry_update_reval by moving dput() in ovl_link_up

Wang Hai (1):
tcp: Defer ts_recent changes until req is owned

Wei Fang (6):
net: enetc: fix the off-by-one issue in enetc_map_tx_buffs()
net: enetc: keep track of correct Tx BD count in enetc_map_tx_tso_buffs()
net: enetc: VFs do not support HWTSTAMP_TX_ONESTEP_SYNC
net: enetc: update UDP checksum when updating originTimestamp field
net: enetc: correct the xdp_tx statistics
net: enetc: fix the off-by-one issue in enetc_map_tx_tso_buffs()

Ye Bin (1):
scsi: core: Clear driver private data when retrying request

Yilin Chen (1):
drm/amd/display: add a quirk to enable eDP0 on DP1

Yishai Hadas (4):
RDMA/mlx5: Fix the recovery flow of the UMR QP RDMA/mlx5: Fix a race for DMABUF MR which can lead to CQE with error RDMA/mlx5: Fix a WARN during dereg_mr for DM type RDMA/mlx5: Fix implicit ODP hang on parent deregistration

Yong-Xuan Wang (2):
riscv: signal: fix signal frame size
riscv: signal: fix signal_minsigstksz

Yu-Che Cheng (2):
thermal: gov_power_allocator: Fix incorrect calculation in divvy_up_power()
thermal: gov_power_allocator: Update total_weight on bind and cdev updates

chr[] (1):
amdgpu/pm/legacy: fix suspend/resume issues

author maintainer
#1 lore raw
Makefile +1 -1
index e8b8c5b38405..17dfe0a8ca8f 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 6
 PATCHLEVEL = 12
-SUBLEVEL = 17
+SUBLEVEL = 18
 EXTRAVERSION =
 NAME = Baby Opossum Posse
 
arch/arm64/include/asm/kvm_host.h +1 -1
index c315bc1a4e9a..1bf70fa1045d 100644
@@ -1243,7 +1243,7 @@ int kvm_arm_pvtime_has_attr(struct kvm_vcpu *vcpu,
 extern unsigned int __ro_after_init kvm_arm_vmid_bits;
 int __init kvm_arm_vmid_alloc_init(void);
 void __init kvm_arm_vmid_alloc_free(void);
-bool kvm_arm_vmid_update(struct kvm_vmid *kvm_vmid);
+void kvm_arm_vmid_update(struct kvm_vmid *kvm_vmid);
 void kvm_arm_vmid_clear_active(void);
 
 static inline void kvm_arm_pvtime_vcpu_init(struct kvm_vcpu_arch *vcpu_arch)
arch/arm64/kvm/arm.c +10 -12
index 117702f03321..3cf65daa75a5 100644
@@ -580,6 +580,16 @@ void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
 	mmu = vcpu->arch.hw_mmu;
 	last_ran = this_cpu_ptr(mmu->last_vcpu_ran);
 
+	/*
+	 * Ensure a VMID is allocated for the MMU before programming VTTBR_EL2,
+	 * which happens eagerly in VHE.
+	 *
+	 * Also, the VMID allocator only preserves VMIDs that are active at the
+	 * time of rollover, so KVM might need to grab a new VMID for the MMU if
+	 * this is called from kvm_sched_in().
+	 */
+	kvm_arm_vmid_update(&mmu->vmid);
+
 	/*
 	 * We guarantee that both TLBs and I-cache are private to each
 	 * vcpu. If detecting that a vcpu from the same VM has
@@ -1155,18 +1165,6 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu)
 		 */
 		preempt_disable();
 
-		/*
-		 * The VMID allocator only tracks active VMIDs per
-		 * physical CPU, and therefore the VMID allocated may not be
-		 * preserved on VMID roll-over if the task was preempted,
-		 * making a thread's VMID inactive. So we need to call
-		 * kvm_arm_vmid_update() in non-premptible context.
-		 */
-		if (kvm_arm_vmid_update(&vcpu->arch.hw_mmu->vmid) &&
-		    has_vhe())
-			__load_stage2(vcpu->arch.hw_mmu,
-				      vcpu->arch.hw_mmu->arch);
-
 		kvm_pmu_flush_hwstate(vcpu);
 
 		local_irq_disable();
arch/arm64/kvm/vmid.c +3 -8
index 806223b7022a..7fe8ba1a2851 100644
@@ -135,11 +135,10 @@ void kvm_arm_vmid_clear_active(void)
 	atomic64_set(this_cpu_ptr(&active_vmids), VMID_ACTIVE_INVALID);
 }
 
-bool kvm_arm_vmid_update(struct kvm_vmid *kvm_vmid)
+void kvm_arm_vmid_update(struct kvm_vmid *kvm_vmid)
 {
 	unsigned long flags;
 	u64 vmid, old_active_vmid;
-	bool updated = false;
 
 	vmid = atomic64_read(&kvm_vmid->id);
 
@@ -157,21 +156,17 @@ bool kvm_arm_vmid_update(struct kvm_vmid *kvm_vmid)
 	if (old_active_vmid != 0 && vmid_gen_match(vmid) &&
 	    0 != atomic64_cmpxchg_relaxed(this_cpu_ptr(&active_vmids),
 					  old_active_vmid, vmid))
-		return false;
+		return;
 
 	raw_spin_lock_irqsave(&cpu_vmid_lock, flags);
 
 	/* Check that our VMID belongs to the current generation. */
 	vmid = atomic64_read(&kvm_vmid->id);
-	if (!vmid_gen_match(vmid)) {
+	if (!vmid_gen_match(vmid))
 		vmid = new_vmid(kvm_vmid);
-		updated = true;
-	}
 
 	atomic64_set(this_cpu_ptr(&active_vmids), vmid);
 	raw_spin_unlock_irqrestore(&cpu_vmid_lock, flags);
-
-	return updated;
 }
 
 /*
arch/arm64/mm/init.c +1 -6
index ea71ef2e343c..93ba66de160c 100644
@@ -278,12 +278,7 @@ void __init arm64_memblock_init(void)
 
 	if (IS_ENABLED(CONFIG_RANDOMIZE_BASE)) {
 		extern u16 memstart_offset_seed;
-
-		/*
-		 * Use the sanitised version of id_aa64mmfr0_el1 so that linear
-		 * map randomization can be enabled by shrinking the IPA space.
-		 */
-		u64 mmfr0 = read_sanitised_ftr_reg(SYS_ID_AA64MMFR0_EL1);
+		u64 mmfr0 = read_cpuid(ID_AA64MMFR0_EL1);
 		int parange = cpuid_feature_extract_unsigned_field(
 					mmfr0, ID_AA64MMFR0_EL1_PARANGE_SHIFT);
 		s64 range = linear_region_size -
arch/riscv/include/asm/futex.h +1 -1
index fc8130f995c1..6907c456ac8c 100644
@@ -93,7 +93,7 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
 		_ASM_EXTABLE_UACCESS_ERR(1b, 3b, %[r])	\
 		_ASM_EXTABLE_UACCESS_ERR(2b, 3b, %[r])	\
 	: [r] "+r" (ret), [v] "=&r" (val), [u] "+m" (*uaddr), [t] "=&r" (tmp)
-	: [ov] "Jr" (oldval), [nv] "Jr" (newval)
+	: [ov] "Jr" ((long)(int)oldval), [nv] "Jr" (newval)
 	: "memory");
 	__disable_user_access();
 
arch/riscv/kernel/cacheinfo.c +6 -6
index 2d40736fc37c..26b085dbdd07 100644
@@ -108,11 +108,11 @@ int populate_cache_leaves(unsigned int cpu)
 	if (!np)
 		return -ENOENT;
 
-	if (of_property_read_bool(np, "cache-size"))
+	if (of_property_present(np, "cache-size"))
 		ci_leaf_init(this_leaf++, CACHE_TYPE_UNIFIED, level);
-	if (of_property_read_bool(np, "i-cache-size"))
+	if (of_property_present(np, "i-cache-size"))
 		ci_leaf_init(this_leaf++, CACHE_TYPE_INST, level);
-	if (of_property_read_bool(np, "d-cache-size"))
+	if (of_property_present(np, "d-cache-size"))
 		ci_leaf_init(this_leaf++, CACHE_TYPE_DATA, level);
 
 	prev = np;
@@ -125,11 +125,11 @@ int populate_cache_leaves(unsigned int cpu)
 			break;
 		if (level <= levels)
 			break;
-		if (of_property_read_bool(np, "cache-size"))
+		if (of_property_present(np, "cache-size"))
 			ci_leaf_init(this_leaf++, CACHE_TYPE_UNIFIED, level);
-		if (of_property_read_bool(np, "i-cache-size"))
+		if (of_property_present(np, "i-cache-size"))
 			ci_leaf_init(this_leaf++, CACHE_TYPE_INST, level);
-		if (of_property_read_bool(np, "d-cache-size"))
+		if (of_property_present(np, "d-cache-size"))
 			ci_leaf_init(this_leaf++, CACHE_TYPE_DATA, level);
 		levels = level;
 	}
arch/riscv/kernel/cpufeature.c +1 -1
index 3a8eeaa9310c..308430af3e8f 100644
@@ -454,7 +454,7 @@ static void __init riscv_resolve_isa(unsigned long *source_isa,
 			if (bit < RISCV_ISA_EXT_BASE)
 				*this_hwcap |= isa2hwcap[bit];
 		}
-	} while (loop && memcmp(prev_resolved_isa, resolved_isa, sizeof(prev_resolved_isa)));
+	} while (loop && !bitmap_equal(prev_resolved_isa, resolved_isa, RISCV_ISA_EXT_MAX));
 }
 
 static void __init match_isa_ext(const char *name, const char *name_end, unsigned long *bitmap)
arch/riscv/kernel/setup.c +1 -1
index 2b3c152d3c91..7934613a98c8 100644
@@ -288,8 +288,8 @@ void __init setup_arch(char **cmdline_p)
 
 	riscv_init_cbo_blocksizes();
 	riscv_fill_hwcap();
-	init_rt_signal_env();
 	apply_boot_alternatives();
+	init_rt_signal_env();
 
 	if (IS_ENABLED(CONFIG_RISCV_ISA_ZICBOM) &&
 	    riscv_isa_extension_available(NULL, ZICBOM))
arch/riscv/kernel/signal.c +0 -6
index dcd282419456..c3c517b9eee5 100644
@@ -215,12 +215,6 @@ static size_t get_rt_frame_size(bool cal_all)
 		if (cal_all || riscv_v_vstate_query(task_pt_regs(current)))
 			total_context_size += riscv_v_sc_size;
 	}
-	/*
-	 * Preserved a __riscv_ctx_hdr for END signal context header if an
-	 * extension uses __riscv_extra_ext_header
-	 */
-	if (total_context_size)
-		total_context_size += sizeof(struct __riscv_ctx_hdr);
 
 	frame_size += total_context_size;
 
arch/riscv/kvm/vcpu_sbi_hsm.c +6 -5
index dce667f4b6ab..3070bb31745d 100644
@@ -9,6 +9,7 @@
 #include <linux/errno.h>
 #include <linux/err.h>
 #include <linux/kvm_host.h>
+#include <linux/wordpart.h>
 #include <asm/sbi.h>
 #include <asm/kvm_vcpu_sbi.h>
 
@@ -79,12 +80,12 @@ static int kvm_sbi_hsm_vcpu_get_status(struct kvm_vcpu *vcpu)
 	target_vcpu = kvm_get_vcpu_by_id(vcpu->kvm, target_vcpuid);
 	if (!target_vcpu)
 		return SBI_ERR_INVALID_PARAM;
-	if (!kvm_riscv_vcpu_stopped(target_vcpu))
-		return SBI_HSM_STATE_STARTED;
-	else if (vcpu->stat.generic.blocking)
+	if (kvm_riscv_vcpu_stopped(target_vcpu))
+		return SBI_HSM_STATE_STOPPED;
+	else if (target_vcpu->stat.generic.blocking)
 		return SBI_HSM_STATE_SUSPENDED;
 	else
-		return SBI_HSM_STATE_STOPPED;
+		return SBI_HSM_STATE_STARTED;
 }
 
 static int kvm_sbi_ext_hsm_handler(struct kvm_vcpu *vcpu, struct kvm_run *run,
@@ -109,7 +110,7 @@ static int kvm_sbi_ext_hsm_handler(struct kvm_vcpu *vcpu, struct kvm_run *run,
 		}
 		return 0;
 	case SBI_EXT_HSM_HART_SUSPEND:
-		switch (cp->a0) {
+		switch (lower_32_bits(cp->a0)) {
 		case SBI_HSM_SUSPEND_RET_DEFAULT:
 			kvm_riscv_vcpu_wfi(vcpu);
 			break;
arch/riscv/kvm/vcpu_sbi_replace.c +12 -3
index 9c2ab3dfa93a..5fbf3f94f1e8 100644
@@ -21,7 +21,7 @@ static int kvm_sbi_ext_time_handler(struct kvm_vcpu *vcpu, struct kvm_run *run,
 	u64 next_cycle;
 
 	if (cp->a6 != SBI_EXT_TIME_SET_TIMER) {
-		retdata->err_val = SBI_ERR_INVALID_PARAM;
+		retdata->err_val = SBI_ERR_NOT_SUPPORTED;
 		return 0;
 	}
 
@@ -51,9 +51,10 @@ static int kvm_sbi_ext_ipi_handler(struct kvm_vcpu *vcpu, struct kvm_run *run,
 	struct kvm_cpu_context *cp = &vcpu->arch.guest_context;
 	unsigned long hmask = cp->a0;
 	unsigned long hbase = cp->a1;
+	unsigned long hart_bit = 0, sentmask = 0;
 
 	if (cp->a6 != SBI_EXT_IPI_SEND_IPI) {
-		retdata->err_val = SBI_ERR_INVALID_PARAM;
+		retdata->err_val = SBI_ERR_NOT_SUPPORTED;
 		return 0;
 	}
 
@@ -62,15 +63,23 @@ static int kvm_sbi_ext_ipi_handler(struct kvm_vcpu *vcpu, struct kvm_run *run,
 		if (hbase != -1UL) {
 			if (tmp->vcpu_id < hbase)
 				continue;
-			if (!(hmask & (1UL << (tmp->vcpu_id - hbase))))
+			hart_bit = tmp->vcpu_id - hbase;
+			if (hart_bit >= __riscv_xlen)
+				goto done;
+			if (!(hmask & (1UL << hart_bit)))
 				continue;
 		}
 		ret = kvm_riscv_vcpu_set_interrupt(tmp, IRQ_VS_SOFT);
 		if (ret < 0)
 			break;
+		sentmask |= 1UL << hart_bit;
 		kvm_riscv_vcpu_pmu_incr_fw(tmp, SBI_PMU_FW_IPI_RCVD);
 	}
 
+done:
+	if (hbase != -1UL && (hmask ^ sentmask))
+		retdata->err_val = SBI_ERR_INVALID_PARAM;
+
 	return ret;
 }
 
arch/x86/Kconfig +1 -0
index 1b0c2397d657..6f8e9af827e0 100644
@@ -1333,6 +1333,7 @@ config X86_REBOOTFIXUPS
 config MICROCODE
 	def_bool y
 	depends on CPU_SUP_AMD || CPU_SUP_INTEL
+	select CRYPTO_LIB_SHA256 if CPU_SUP_AMD
 
 config MICROCODE_INITRD32
 	def_bool y
arch/x86/events/core.c +1 -1
index 65ab6460aed4..0d33c85da453 100644
@@ -628,7 +628,7 @@ int x86_pmu_hw_config(struct perf_event *event)
 	if (event->attr.type == event->pmu->type)
 		event->hw.config |= x86_pmu_get_event_config(event);
 
-	if (event->attr.sample_period && x86_pmu.limit_period) {
+	if (!event->attr.freq && x86_pmu.limit_period) {
 		s64 left = event->attr.sample_period;
 		x86_pmu.limit_period(event, &left);
 		if (left > event->attr.sample_period)
arch/x86/kernel/cpu/cyrix.c +2 -2
index 9651275aecd1..dfec2c61e354 100644
@@ -153,8 +153,8 @@ static void geode_configure(void)
 	u8 ccr3;
 	local_irq_save(flags);
 
-	/* Suspend on halt power saving and enable #SUSP pin */
-	setCx86(CX86_CCR2, getCx86(CX86_CCR2) | 0x88);
+	/* Suspend on halt power saving */
+	setCx86(CX86_CCR2, getCx86(CX86_CCR2) | 0x08);
 
 	ccr3 = getCx86(CX86_CCR3);
 	setCx86(CX86_CCR3, (ccr3 & 0x0f) | 0x10);	/* enable MAPEN */
arch/x86/kernel/cpu/microcode/amd.c +192 -91

398 lines not on this page · raw message

arch/x86/kernel/cpu/microcode/amd_shas.c new file +444 -0

444 lines not on this page · raw message

arch/x86/kernel/cpu/microcode/internal.h +0 -2
index 21776c529fa9..5df621752fef 100644
@@ -100,14 +100,12 @@ extern bool force_minrev;
 #ifdef CONFIG_CPU_SUP_AMD
 void load_ucode_amd_bsp(struct early_load_data *ed, unsigned int family);
 void load_ucode_amd_ap(unsigned int family);
-int save_microcode_in_initrd_amd(unsigned int family);
 void reload_ucode_amd(unsigned int cpu);
 struct microcode_ops *init_amd_microcode(void);
 void exit_amd_microcode(void);
 #else /* CONFIG_CPU_SUP_AMD */
 static inline void load_ucode_amd_bsp(struct early_load_data *ed, unsigned int family) { }
 static inline void load_ucode_amd_ap(unsigned int family) { }
-static inline int save_microcode_in_initrd_amd(unsigned int family) { return -EINVAL; }
 static inline void reload_ucode_amd(unsigned int cpu) { }
 static inline struct microcode_ops *init_amd_microcode(void) { return NULL; }
 static inline void exit_amd_microcode(void) { }
block/blk-zoned.c +69 -7

137 lines not on this page · raw message

drivers/firmware/cirrus/cs_dsp.c +6 -18
index 419220fa42fd..bd1ea99c3b47 100644
@@ -1609,8 +1609,8 @@ static int cs_dsp_load(struct cs_dsp *dsp, const struct firmware *firmware,
 				goto out_fw;
 			}
 
-			ret = regmap_raw_write_async(regmap, reg, buf->buf,
-						     le32_to_cpu(region->len));
+			ret = regmap_raw_write(regmap, reg, buf->buf,
+					       le32_to_cpu(region->len));
 			if (ret != 0) {
 				cs_dsp_err(dsp,
 					   "%s.%d: Failed to write %d bytes at %d in %s: %d\n",
@@ -1625,12 +1625,6 @@ static int cs_dsp_load(struct cs_dsp *dsp, const struct firmware *firmware,
 		regions++;
 	}
 
-	ret = regmap_async_complete(regmap);
-	if (ret != 0) {
-		cs_dsp_err(dsp, "Failed to complete async write: %d\n", ret);
-		goto out_fw;
-	}
-
 	if (pos > firmware->size)
 		cs_dsp_warn(dsp, "%s.%d: %zu bytes at end of file\n",
 			    file, regions, pos - firmware->size);
@@ -1638,7 +1632,6 @@ static int cs_dsp_load(struct cs_dsp *dsp, const struct firmware *firmware,
 	cs_dsp_debugfs_save_wmfwname(dsp, file);
 
 out_fw:
-	regmap_async_complete(regmap);
 	cs_dsp_buf_free(&buf_list);
 
 	if (ret == -EOVERFLOW)
@@ -2326,8 +2319,8 @@ static int cs_dsp_load_coeff(struct cs_dsp *dsp, const struct firmware *firmware
 			cs_dsp_dbg(dsp, "%s.%d: Writing %d bytes at %x\n",
 				   file, blocks, le32_to_cpu(blk->len),
 				   reg);
-			ret = regmap_raw_write_async(regmap, reg, buf->buf,
-						     le32_to_cpu(blk->len));
+			ret = regmap_raw_write(regmap, reg, buf->buf,
+					       le32_to_cpu(blk->len));
 			if (ret != 0) {
 				cs_dsp_err(dsp,
 					   "%s.%d: Failed to write to %x in %s: %d\n",
@@ -2339,10 +2332,6 @@ static int cs_dsp_load_coeff(struct cs_dsp *dsp, const struct firmware *firmware
 		blocks++;
 	}
 
-	ret = regmap_async_complete(regmap);
-	if (ret != 0)
-		cs_dsp_err(dsp, "Failed to complete async write: %d\n", ret);
-
 	if (pos > firmware->size)
 		cs_dsp_warn(dsp, "%s.%d: %zu bytes at end of file\n",
 			    file, blocks, pos - firmware->size);
@@ -2350,7 +2339,6 @@ static int cs_dsp_load_coeff(struct cs_dsp *dsp, const struct firmware *firmware
 	cs_dsp_debugfs_save_binname(dsp, file);
 
 out_fw:
-	regmap_async_complete(regmap);
 	cs_dsp_buf_free(&buf_list);
 
 	if (ret == -EOVERFLOW)
@@ -2561,8 +2549,8 @@ static int cs_dsp_adsp2_enable_core(struct cs_dsp *dsp)
 {
 	int ret;
 
-	ret = regmap_update_bits_async(dsp->regmap, dsp->base + ADSP2_CONTROL,
-				       ADSP2_SYS_ENA, ADSP2_SYS_ENA);
+	ret = regmap_update_bits(dsp->regmap, dsp->base + ADSP2_CONTROL,
+				 ADSP2_SYS_ENA, ADSP2_SYS_ENA);
 	if (ret != 0)
 		return ret;
 
drivers/firmware/efi/mokvar-table.c +13 -29

70 lines not on this page · raw message

drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +7 -0
index 45e28726e148..96845541b2d2 100644
@@ -1542,6 +1542,13 @@ int amdgpu_device_resize_fb_bar(struct amdgpu_device *adev)
 	if (amdgpu_sriov_vf(adev))
 		return 0;
 
+	/* resizing on Dell G5 SE platforms causes problems with runtime pm */
+	if ((amdgpu_runtime_pm != 0) &&
+	    adev->pdev->vendor == PCI_VENDOR_ID_ATI &&
+	    adev->pdev->device == 0x731f &&
+	    adev->pdev->subsystem_vendor == PCI_VENDOR_ID_DELL)
+		return 0;
+
 	/* PCI_EXT_CAP_ID_VNDR extended capability is located at 0x100 */
 	if (!pci_find_ext_capability(adev->pdev, PCI_EXT_CAP_ID_VNDR))
 		DRM_WARN("System can't access extended configuration space, please check!!\n");
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +1 -1
index 425073d99491..1c8ac4cf08c5 100644
@@ -2280,7 +2280,7 @@ int amdgpu_ttm_clear_buffer(struct amdgpu_bo *bo,
 	struct amdgpu_ring *ring = adev->mman.buffer_funcs_ring;
 	struct amdgpu_res_cursor cursor;
 	u64 addr;
-	int r;
+	int r = 0;
 
 	if (!adev->mman.buffer_funcs_enabled)
 		return -EINVAL;
drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v10.c +4 -2
index 2eff37aaf827..1695dd78ede8 100644
@@ -107,6 +107,8 @@ static void init_mqd(struct mqd_manager *mm, void **mqd,
 	m->cp_hqd_persistent_state = CP_HQD_PERSISTENT_STATE__PRELOAD_REQ_MASK |
 			0x53 << CP_HQD_PERSISTENT_STATE__PRELOAD_SIZE__SHIFT;
 
+	m->cp_hqd_pq_control = 5 << CP_HQD_PQ_CONTROL__RPTR_BLOCK_SIZE__SHIFT;
+	m->cp_hqd_pq_control |= CP_HQD_PQ_CONTROL__UNORD_DISPATCH_MASK;
 	m->cp_mqd_control = 1 << CP_MQD_CONTROL__PRIV_STATE__SHIFT;
 
 	m->cp_mqd_base_addr_lo        = lower_32_bits(addr);
@@ -167,10 +169,10 @@ static void update_mqd(struct mqd_manager *mm, void *mqd,
 
 	m = get_mqd(mqd);
 
-	m->cp_hqd_pq_control = 5 << CP_HQD_PQ_CONTROL__RPTR_BLOCK_SIZE__SHIFT;
+	m->cp_hqd_pq_control &= ~CP_HQD_PQ_CONTROL__QUEUE_SIZE_MASK;
 	m->cp_hqd_pq_control |=
 			ffs(q->queue_size / sizeof(unsigned int)) - 1 - 1;
-	m->cp_hqd_pq_control |= CP_HQD_PQ_CONTROL__UNORD_DISPATCH_MASK;
+
 	pr_debug("cp_hqd_pq_control 0x%x\n", m->cp_hqd_pq_control);
 
 	m->cp_hqd_pq_base_lo = lower_32_bits((uint64_t)q->queue_address >> 8);
drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v11.c +3 -2
index 68dbc0399c87..3c0ae28c5923 100644
@@ -154,6 +154,8 @@ static void init_mqd(struct mqd_manager *mm, void **mqd,
 	m->cp_hqd_persistent_state = CP_HQD_PERSISTENT_STATE__PRELOAD_REQ_MASK |
 			0x55 << CP_HQD_PERSISTENT_STATE__PRELOAD_SIZE__SHIFT;
 
+	m->cp_hqd_pq_control = 5 << CP_HQD_PQ_CONTROL__RPTR_BLOCK_SIZE__SHIFT;
+	m->cp_hqd_pq_control |= CP_HQD_PQ_CONTROL__UNORD_DISPATCH_MASK;
 	m->cp_mqd_control = 1 << CP_MQD_CONTROL__PRIV_STATE__SHIFT;
 
 	m->cp_mqd_base_addr_lo        = lower_32_bits(addr);
@@ -221,10 +223,9 @@ static void update_mqd(struct mqd_manager *mm, void *mqd,
 
 	m = get_mqd(mqd);
 
-	m->cp_hqd_pq_control = 5 << CP_HQD_PQ_CONTROL__RPTR_BLOCK_SIZE__SHIFT;
+	m->cp_hqd_pq_control &= ~CP_HQD_PQ_CONTROL__QUEUE_SIZE_MASK;
 	m->cp_hqd_pq_control |=
 			ffs(q->queue_size / sizeof(unsigned int)) - 1 - 1;
-	m->cp_hqd_pq_control |= CP_HQD_PQ_CONTROL__UNORD_DISPATCH_MASK;
 	pr_debug("cp_hqd_pq_control 0x%x\n", m->cp_hqd_pq_control);
 
 	m->cp_hqd_pq_base_lo = lower_32_bits((uint64_t)q->queue_address >> 8);
drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v12.c +3 -2
index 2b72d5b4949b..565858b9044d 100644
@@ -121,6 +121,8 @@ static void init_mqd(struct mqd_manager *mm, void **mqd,
 	m->cp_hqd_persistent_state = CP_HQD_PERSISTENT_STATE__PRELOAD_REQ_MASK |
 			0x55 << CP_HQD_PERSISTENT_STATE__PRELOAD_SIZE__SHIFT;
 
+	m->cp_hqd_pq_control = 5 << CP_HQD_PQ_CONTROL__RPTR_BLOCK_SIZE__SHIFT;
+	m->cp_hqd_pq_control |= CP_HQD_PQ_CONTROL__UNORD_DISPATCH_MASK;
 	m->cp_mqd_control = 1 << CP_MQD_CONTROL__PRIV_STATE__SHIFT;
 
 	m->cp_mqd_base_addr_lo        = lower_32_bits(addr);
@@ -184,10 +186,9 @@ static void update_mqd(struct mqd_manager *mm, void *mqd,
 
 	m = get_mqd(mqd);
 
-	m->cp_hqd_pq_control = 5 << CP_HQD_PQ_CONTROL__RPTR_BLOCK_SIZE__SHIFT;
+	m->cp_hqd_pq_control &= ~CP_HQD_PQ_CONTROL__QUEUE_SIZE_MASK;
 	m->cp_hqd_pq_control |=
 			ffs(q->queue_size / sizeof(unsigned int)) - 1 - 1;
-	m->cp_hqd_pq_control |= CP_HQD_PQ_CONTROL__UNORD_DISPATCH_MASK;
 	pr_debug("cp_hqd_pq_control 0x%x\n", m->cp_hqd_pq_control);
 
 	m->cp_hqd_pq_base_lo = lower_32_bits((uint64_t)q->queue_address >> 8);
drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c +4 -1
index 84e8ea3a8a0c..217af36dc097 100644
@@ -182,6 +182,9 @@ static void init_mqd(struct mqd_manager *mm, void **mqd,
 	m->cp_hqd_persistent_state = CP_HQD_PERSISTENT_STATE__PRELOAD_REQ_MASK |
 			0x53 << CP_HQD_PERSISTENT_STATE__PRELOAD_SIZE__SHIFT;
 
+	m->cp_hqd_pq_control = 5 << CP_HQD_PQ_CONTROL__RPTR_BLOCK_SIZE__SHIFT;
+	m->cp_hqd_pq_control |= CP_HQD_PQ_CONTROL__UNORD_DISPATCH_MASK;
+
 	m->cp_mqd_control = 1 << CP_MQD_CONTROL__PRIV_STATE__SHIFT;
 
 	m->cp_mqd_base_addr_lo        = lower_32_bits(addr);
@@ -244,7 +247,7 @@ static void update_mqd(struct mqd_manager *mm, void *mqd,
 
 	m = get_mqd(mqd);
 
-	m->cp_hqd_pq_control = 5 << CP_HQD_PQ_CONTROL__RPTR_BLOCK_SIZE__SHIFT;
+	m->cp_hqd_pq_control &= ~CP_HQD_PQ_CONTROL__QUEUE_SIZE_MASK;
 	m->cp_hqd_pq_control |= order_base_2(q->queue_size / 4) - 1;
 	pr_debug("cp_hqd_pq_control 0x%x\n", m->cp_hqd_pq_control);
 
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +62 -7

144 lines not on this page · raw message

drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.c +14 -0
index 3390f0d8420a..c4a7fd453e5f 100644
@@ -894,6 +894,7 @@ void amdgpu_dm_hpd_init(struct amdgpu_device *adev)
 	struct drm_device *dev = adev_to_drm(adev);
 	struct drm_connector *connector;
 	struct drm_connector_list_iter iter;
+	int i;
 
 	drm_connector_list_iter_begin(dev, &iter);
 	drm_for_each_connector_iter(connector, &iter) {
@@ -920,6 +921,12 @@ void amdgpu_dm_hpd_init(struct amdgpu_device *adev)
 		}
 	}
 	drm_connector_list_iter_end(&iter);
+
+	/* Update reference counts for HPDs */
+	for (i = DC_IRQ_SOURCE_HPD1; i <= adev->mode_info.num_hpd; i++) {
+		if (amdgpu_irq_get(adev, &adev->hpd_irq, i - DC_IRQ_SOURCE_HPD1))
+			drm_err(dev, "DM_IRQ: Failed get HPD for source=%d)!\n", i);
+	}
 }
 
 /**
@@ -935,6 +942,7 @@ void amdgpu_dm_hpd_fini(struct amdgpu_device *adev)
 	struct drm_device *dev = adev_to_drm(adev);
 	struct drm_connector *connector;
 	struct drm_connector_list_iter iter;
+	int i;
 
 	drm_connector_list_iter_begin(dev, &iter);
 	drm_for_each_connector_iter(connector, &iter) {
@@ -960,4 +968,10 @@ void amdgpu_dm_hpd_fini(struct amdgpu_device *adev)
 		}
 	}
 	drm_connector_list_iter_end(&iter);
+
+	/* Update reference counts for HPDs */
+	for (i = DC_IRQ_SOURCE_HPD1; i <= adev->mode_info.num_hpd; i++) {
+		if (amdgpu_irq_put(adev, &adev->hpd_irq, i - DC_IRQ_SOURCE_HPD1))
+			drm_err(dev, "DM_IRQ: Failed put HPD for source=%d!\n", i);
+	}
 }
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_psr.c +2 -1
index 45858bf1523d..e140b7a04d72 100644
@@ -54,7 +54,8 @@ static bool link_supports_psrsu(struct dc_link *link)
 	if (amdgpu_dc_debug_mask & DC_DISABLE_PSR_SU)
 		return false;
 
-	return dc_dmub_check_min_version(dc->ctx->dmub_srv->dmub);
+	/* Temporarily disable PSR-SU to avoid glitches */
+	return false;
 }
 
 /*
drivers/gpu/drm/amd/pm/legacy-dpm/kv_dpm.c +19 -6
index e8b6989a40f3..6b34a33d788f 100644
@@ -3043,6 +3043,7 @@ static int kv_dpm_hw_init(void *handle)
 	if (!amdgpu_dpm)
 		return 0;
 
+	mutex_lock(&adev->pm.mutex);
 	kv_dpm_setup_asic(adev);
 	ret = kv_dpm_enable(adev);
 	if (ret)
@@ -3050,6 +3051,8 @@ static int kv_dpm_hw_init(void *handle)
 	else
 		adev->pm.dpm_enabled = true;
 	amdgpu_legacy_dpm_compute_clocks(adev);
+	mutex_unlock(&adev->pm.mutex);
+
 	return ret;
 }
 
@@ -3067,32 +3070,42 @@ static int kv_dpm_suspend(void *handle)
 {
 	struct amdgpu_device *adev = (struct amdgpu_device *)handle;
 
+	cancel_work_sync(&adev->pm.dpm.thermal.work);
+
 	if (adev->pm.dpm_enabled) {
+		mutex_lock(&adev->pm.mutex);
+		adev->pm.dpm_enabled = false;
 		/* disable dpm */
 		kv_dpm_disable(adev);
 		/* reset the power state */
 		adev->pm.dpm.current_ps = adev->pm.dpm.requested_ps = adev->pm.dpm.boot_ps;
+		mutex_unlock(&adev->pm.mutex);
 	}
 	return 0;
 }
 
 static int kv_dpm_resume(void *handle)
 {
-	int ret;
+	int ret = 0;
 	struct amdgpu_device *adev = (struct amdgpu_device *)handle;
 
-	if (adev->pm.dpm_enabled) {
+	if (!amdgpu_dpm)
+		return 0;
+
+	if (!adev->pm.dpm_enabled) {
+		mutex_lock(&adev->pm.mutex);
 		/* asic init will reset to the boot state */
 		kv_dpm_setup_asic(adev);
 		ret = kv_dpm_enable(adev);
-		if (ret)
+		if (ret) {
 			adev->pm.dpm_enabled = false;
-		else
+		} else {
 			adev->pm.dpm_enabled = true;
-		if (adev->pm.dpm_enabled)
 			amdgpu_legacy_dpm_compute_clocks(adev);
+		}
+		mutex_unlock(&adev->pm.mutex);
 	}
-	return 0;
+	return ret;
 }
 
 static bool kv_dpm_is_idle(void *handle)
drivers/gpu/drm/amd/pm/legacy-dpm/legacy_dpm.c +6 -2
index e861355ebd75..c7518b13e787 100644
@@ -1009,9 +1009,12 @@ void amdgpu_dpm_thermal_work_handler(struct work_struct *work)
 	enum amd_pm_state_type dpm_state = POWER_STATE_TYPE_INTERNAL_THERMAL;
 	int temp, size = sizeof(temp);
 
-	if (!adev->pm.dpm_enabled)
-		return;
+	mutex_lock(&adev->pm.mutex);
 
+	if (!adev->pm.dpm_enabled) {
+		mutex_unlock(&adev->pm.mutex);
+		return;
+	}
 	if (!pp_funcs->read_sensor(adev->powerplay.pp_handle,
 				   AMDGPU_PP_SENSOR_GPU_TEMP,
 				   (void *)&temp,
@@ -1033,4 +1036,5 @@ void amdgpu_dpm_thermal_work_handler(struct work_struct *work)
 	adev->pm.dpm.state = dpm_state;
 
 	amdgpu_legacy_dpm_compute_clocks(adev->powerplay.pp_handle);
+	mutex_unlock(&adev->pm.mutex);
 }
drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c +20 -6
index a1baa13ab2c2..a5ad1b60597e 100644
@@ -7783,6 +7783,7 @@ static int si_dpm_hw_init(void *handle)
 	if (!amdgpu_dpm)
 		return 0;
 
+	mutex_lock(&adev->pm.mutex);
 	si_dpm_setup_asic(adev);
 	ret = si_dpm_enable(adev);
 	if (ret)
@@ -7790,6 +7791,7 @@ static int si_dpm_hw_init(void *handle)
 	else
 		adev->pm.dpm_enabled = true;
 	amdgpu_legacy_dpm_compute_clocks(adev);
+	mutex_unlock(&adev->pm.mutex);
 	return ret;
 }
 
@@ -7807,32 +7809,44 @@ static int si_dpm_suspend(void *handle)
 {
 	struct amdgpu_device *adev = (struct amdgpu_device *)handle;
 
+	cancel_work_sync(&adev->pm.dpm.thermal.work);
+
 	if (adev->pm.dpm_enabled) {
+		mutex_lock(&adev->pm.mutex);
+		adev->pm.dpm_enabled = false;
 		/* disable dpm */
 		si_dpm_disable(adev);
 		/* reset the power state */
 		adev->pm.dpm.current_ps = adev->pm.dpm.requested_ps = adev->pm.dpm.boot_ps;
+		mutex_unlock(&adev->pm.mutex);
 	}
+
 	return 0;
 }
 
 static int si_dpm_resume(void *handle)
 {
-	int ret;
+	int ret = 0;
 	struct amdgpu_device *adev = (struct amdgpu_device *)handle;
 
-	if (adev->pm.dpm_enabled) {
+	if (!amdgpu_dpm)
+		return 0;
+
+	if (!adev->pm.dpm_enabled) {
 		/* asic init will reset to the boot state */
+		mutex_lock(&adev->pm.mutex);
 		si_dpm_setup_asic(adev);
 		ret = si_dpm_enable(adev);
-		if (ret)
+		if (ret) {
 			adev->pm.dpm_enabled = false;
-		else
+		} else {
 			adev->pm.dpm_enabled = true;
-		if (adev->pm.dpm_enabled)
 			amdgpu_legacy_dpm_compute_clocks(adev);
+		}
+		mutex_unlock(&adev->pm.mutex);
 	}
-	return 0;
+
+	return ret;
 }
 
 static bool si_dpm_is_idle(void *handle)
drivers/gpu/drm/xe/regs/xe_engine_regs.h +0 -1
index 7c78496e6213..192e571348f6 100644
@@ -53,7 +53,6 @@
 
 #define RING_CTL(base)				XE_REG((base) + 0x3c)
 #define   RING_CTL_SIZE(size)			((size) - PAGE_SIZE) /* in bytes -> pages */
-#define   RING_CTL_SIZE(size)			((size) - PAGE_SIZE) /* in bytes -> pages */
 
 #define RING_START_UDW(base)			XE_REG((base) + 0x48)
 
drivers/gpu/drm/xe/xe_oa.c +390 -267

778 lines not on this page · raw message

drivers/gpu/drm/xe/xe_oa_types.h +6 -0
index 99f4b2d4bdcf..fea9d981e414 100644
@@ -239,6 +239,12 @@ struct xe_oa_stream {
 	/** @no_preempt: Whether preemption and timeslicing is disabled for stream exec_q */
 	u32 no_preempt;
 
+	/** @xef: xe_file with which the stream was opened */
+	struct xe_file *xef;
+
+	/** @last_fence: fence to use in stream destroy when needed */
+	struct dma_fence *last_fence;
+
 	/** @num_syncs: size of @syncs array */
 	u32 num_syncs;
 
drivers/gpu/drm/xe/xe_vm.c +33 -7
index c99380271de6..5693b337f5df 100644
@@ -667,20 +667,33 @@ int xe_vm_userptr_pin(struct xe_vm *vm)
 
 	/* Collect invalidated userptrs */
 	spin_lock(&vm->userptr.invalidated_lock);
+	xe_assert(vm->xe, list_empty(&vm->userptr.repin_list));
 	list_for_each_entry_safe(uvma, next, &vm->userptr.invalidated,
 				 userptr.invalidate_link) {
 		list_del_init(&uvma->userptr.invalidate_link);
-		list_move_tail(&uvma->userptr.repin_link,
-			       &vm->userptr.repin_list);
+		list_add_tail(&uvma->userptr.repin_link,
+			      &vm->userptr.repin_list);
 	}
 	spin_unlock(&vm->userptr.invalidated_lock);
 
-	/* Pin and move to temporary list */
+	/* Pin and move to bind list */
 	list_for_each_entry_safe(uvma, next, &vm->userptr.repin_list,
 				 userptr.repin_link) {
 		err = xe_vma_userptr_pin_pages(uvma);
 		if (err == -EFAULT) {
 			list_del_init(&uvma->userptr.repin_link);
+			/*
+			 * We might have already done the pin once already, but
+			 * then had to retry before the re-bind happened, due
+			 * some other condition in the caller, but in the
+			 * meantime the userptr got dinged by the notifier such
+			 * that we need to revalidate here, but this time we hit
+			 * the EFAULT. In such a case make sure we remove
+			 * ourselves from the rebind list to avoid going down in
+			 * flames.
+			 */
+			if (!list_empty(&uvma->vma.combined_links.rebind))
+				list_del_init(&uvma->vma.combined_links.rebind);
 
 			/* Wait for pending binds */
 			xe_vm_lock(vm, false);
@@ -691,10 +704,10 @@ int xe_vm_userptr_pin(struct xe_vm *vm)
 			err = xe_vm_invalidate_vma(&uvma->vma);
 			xe_vm_unlock(vm);
 			if (err)
-				return err;
+				break;
 		} else {
-			if (err < 0)
-				return err;
+			if (err)
+				break;
 
 			list_del_init(&uvma->userptr.repin_link);
 			list_move_tail(&uvma->vma.combined_links.rebind,
@@ -702,7 +715,19 @@ int xe_vm_userptr_pin(struct xe_vm *vm)
 		}
 	}
 
-	return 0;
+	if (err) {
+		down_write(&vm->userptr.notifier_lock);
+		spin_lock(&vm->userptr.invalidated_lock);
+		list_for_each_entry_safe(uvma, next, &vm->userptr.repin_list,
+					 userptr.repin_link) {
+			list_del_init(&uvma->userptr.repin_link);
+			list_move_tail(&uvma->userptr.invalidate_link,
+				       &vm->userptr.invalidated);
+		}
+		spin_unlock(&vm->userptr.invalidated_lock);
+		up_write(&vm->userptr.notifier_lock);
+	}
+	return err;
 }
 
 /**
@@ -1066,6 +1091,7 @@ static void xe_vma_destroy(struct xe_vma *vma, struct dma_fence *fence)
 		xe_assert(vm->xe, vma->gpuva.flags & XE_VMA_DESTROYED);
 
 		spin_lock(&vm->userptr.invalidated_lock);
+		xe_assert(vm->xe, list_empty(&to_userptr_vma(vma)->userptr.repin_link));
 		list_del(&to_userptr_vma(vma)->userptr.invalidate_link);
 		spin_unlock(&vm->userptr.invalidated_lock);
 	} else if (!xe_vma_is_null(vma)) {
drivers/i2c/busses/i2c-ls2x.c +12 -4
index 8821cac3897b..b475dd27b7af 100644
@@ -10,6 +10,7 @@
  * Rewritten for mainline by Binbin Zhou <[email protected]>
  */
 
+#include <linux/bitfield.h>
 #include <linux/bits.h>
 #include <linux/completion.h>
 #include <linux/device.h>
@@ -26,7 +27,8 @@
 #include <linux/units.h>
 
 /* I2C Registers */
-#define I2C_LS2X_PRER		0x0 /* Freq Division Register(16 bits) */
+#define I2C_LS2X_PRER_LO	0x0 /* Freq Division Low Byte Register */
+#define I2C_LS2X_PRER_HI	0x1 /* Freq Division High Byte Register */
 #define I2C_LS2X_CTR		0x2 /* Control Register */
 #define I2C_LS2X_TXR		0x3 /* Transport Data Register */
 #define I2C_LS2X_RXR		0x3 /* Receive Data Register */
@@ -93,6 +95,7 @@ static irqreturn_t ls2x_i2c_isr(int this_irq, void *dev_id)
  */
 static void ls2x_i2c_adjust_bus_speed(struct ls2x_i2c_priv *priv)
 {
+	u16 val;
 	struct i2c_timings *t = &priv->i2c_t;
 	struct device *dev = priv->adapter.dev.parent;
 	u32 acpi_speed = i2c_acpi_find_bus_speed(dev);
@@ -104,9 +107,14 @@ static void ls2x_i2c_adjust_bus_speed(struct ls2x_i2c_priv *priv)
 	else
 		t->bus_freq_hz = LS2X_I2C_FREQ_STD;
 
-	/* Calculate and set i2c frequency. */
-	writew(LS2X_I2C_PCLK_FREQ / (5 * t->bus_freq_hz) - 1,
-	       priv->base + I2C_LS2X_PRER);
+	/*
+	 * According to the chip manual, we can only access the registers as bytes,
+	 * otherwise the high bits will be truncated.
+	 * So set the I2C frequency with a sequential writeb() instead of writew().
+	 */
+	val = LS2X_I2C_PCLK_FREQ / (5 * t->bus_freq_hz) - 1;
+	writeb(FIELD_GET(GENMASK(7, 0), val), priv->base + I2C_LS2X_PRER_LO);
+	writeb(FIELD_GET(GENMASK(15, 8), val), priv->base + I2C_LS2X_PRER_HI);
 }
 
 static void ls2x_i2c_init(struct ls2x_i2c_priv *priv)
drivers/i2c/busses/i2c-npcm7xx.c +7 -0
index bbcb4d6668ce..a693ebb64edf 100644
@@ -2319,6 +2319,13 @@ static int npcm_i2c_probe_bus(struct platform_device *pdev)
 	if (irq < 0)
 		return irq;
 
+	/*
+	 * Disable the interrupt to avoid the interrupt handler being triggered
+	 * incorrectly by the asynchronous interrupt status since the machine
+	 * might do a warm reset during the last smbus/i2c transfer session.
+	 */
+	npcm_i2c_int_enable(bus, false);
+
 	ret = devm_request_irq(bus->dev, irq, npcm_i2c_bus_irq, 0,
 			       dev_name(bus->dev), bus);
 	if (ret)
drivers/idle/intel_idle.c +4 -0
index 67aebfe0fed6..524ed143f875 100644
@@ -55,6 +55,7 @@
 #include <asm/intel-family.h>
 #include <asm/mwait.h>
 #include <asm/spec-ctrl.h>
+#include <asm/tsc.h>
 #include <asm/fpu/api.h>
 
 #define INTEL_IDLE_VERSION "0.5.1"
@@ -1749,6 +1750,9 @@ static void __init intel_idle_init_cstates_acpi(struct cpuidle_driver *drv)
 		if (intel_idle_state_needs_timer_stop(state))
 			state->flags |= CPUIDLE_FLAG_TIMER_STOP;
 
+		if (cx->type > ACPI_STATE_C1 && !boot_cpu_has(X86_FEATURE_NONSTOP_TSC))
+			mark_tsc_unstable("TSC halts in idle");
+
 		state->enter = intel_idle;
 		state->enter_s2idle = intel_idle_s2idle;
 	}
drivers/infiniband/hw/bnxt_re/bnxt_re.h +11 -7
index e94518b12f86..a316afc0139c 100644
@@ -154,6 +154,14 @@ struct bnxt_re_pacing {
 
 #define BNXT_RE_GRC_FIFO_REG_BASE 0x2000
 
+#define BNXT_RE_MIN_MSIX		2
+#define BNXT_RE_MAX_MSIX		BNXT_MAX_ROCE_MSIX
+struct bnxt_re_nq_record {
+	struct bnxt_msix_entry	msix_entries[BNXT_RE_MAX_MSIX];
+	struct bnxt_qplib_nq	nq[BNXT_RE_MAX_MSIX];
+	int			num_msix;
+};
+
 #define MAX_CQ_HASH_BITS		(16)
 #define MAX_SRQ_HASH_BITS		(16)
 struct bnxt_re_dev {
@@ -174,24 +182,20 @@ struct bnxt_re_dev {
 	unsigned int			version, major, minor;
 	struct bnxt_qplib_chip_ctx	*chip_ctx;
 	struct bnxt_en_dev		*en_dev;
-	int				num_msix;
 
 	int				id;
 
 	struct delayed_work		worker;
 	u8				cur_prio_map;
 
-	/* FP Notification Queue (CQ & SRQ) */
-	struct tasklet_struct		nq_task;
-
 	/* RCFW Channel */
 	struct bnxt_qplib_rcfw		rcfw;
 
-	/* NQ */
-	struct bnxt_qplib_nq		nq[BNXT_MAX_ROCE_MSIX];
+	/* NQ record */
+	struct bnxt_re_nq_record	*nqr;
 
 	/* Device Resources */
-	struct bnxt_qplib_dev_attr	dev_attr;
+	struct bnxt_qplib_dev_attr	*dev_attr;
 	struct bnxt_qplib_ctx		qplib_ctx;
 	struct bnxt_qplib_res		qplib_res;
 	struct bnxt_qplib_dpi		dpi_privileged;
drivers/infiniband/hw/bnxt_re/hw_counters.c +2 -2
index 1e63f8091748..f51adb0a97e6 100644
@@ -357,8 +357,8 @@ int bnxt_re_ib_get_hw_stats(struct ib_device *ibdev,
 			goto done;
 		}
 		bnxt_re_copy_err_stats(rdev, stats, err_s);
-		if (_is_ext_stats_supported(rdev->dev_attr.dev_cap_flags) &&
-		    !rdev->is_virtfn) {
+		if (bnxt_ext_stats_supported(rdev->chip_ctx, rdev->dev_attr->dev_cap_flags,
+					     rdev->is_virtfn)) {
 			rc = bnxt_re_get_ext_stat(rdev, stats);
 			if (rc) {
 				clear_bit(BNXT_RE_FLAG_ISSUE_ROCE_STATS,
drivers/infiniband/hw/bnxt_re/ib_verbs.c +24 -22

166 lines not on this page · raw message

drivers/infiniband/hw/bnxt_re/main.c +99 -54

19 lines not on this page · raw message

drivers/infiniband/hw/bnxt_re/qplib_res.c +3 -4
index 96ceec1e8199..02922a0987ad 100644

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

drivers/infiniband/hw/bnxt_re/qplib_res.h +9 -3
index c2f710364e0f..b40cff8252bc 100644

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

drivers/infiniband/hw/bnxt_re/qplib_sp.c +2 -2
index 3cca7b1395f6..807439b1acb5 100644

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

drivers/infiniband/hw/bnxt_re/qplib_sp.h +1 -2
index ecf3f45fea74..de959b3c28e0 100644

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

drivers/infiniband/hw/hns/hns_roce_hw_v2.c +48 -16

64 lines not on this page · raw message

drivers/infiniband/hw/hns/hns_roce_hw_v2.h +2 -0
index cbdbc9edbce6..91a5665465ff 100644

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

drivers/infiniband/hw/mana/main.c +1 -1
index 67c2d43135a8..457cea6d9909 100644

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

drivers/infiniband/hw/mlx5/ah.c +2 -1
index 505bc47fd575..99036afb3aef 100644

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

drivers/infiniband/hw/mlx5/counters.c +6 -2
index 4f6c1968a2ee..81cfa74147a1 100644

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

drivers/infiniband/hw/mlx5/mr.c +14 -2
index bb02b6adbf2c..753faa9ad06a 100644

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

drivers/infiniband/hw/mlx5/odp.c +1 -0
index 1d3bf5615770..b4e2a6f9cb9c 100644

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

drivers/infiniband/hw/mlx5/qp.c +6 -4
index 10ce3b44f645..ded139b4e87a 100644

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

drivers/infiniband/hw/mlx5/qp.h +1 -0
index b6ee7c3ee1ca..2530e7730635 100644

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

drivers/infiniband/hw/mlx5/umr.c +56 -27

83 lines not on this page · raw message

drivers/iommu/intel/dmar.c +1 -0
index eaf862e8dea1..7f553f7aa3cb 100644

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

drivers/iommu/intel/iommu.c +7 -3
index cc23cfcdeb2d..9c46a4cd3848 100644

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

drivers/md/dm-integrity.c +4 -4
index ee9f7cecd78e..555dc06b9422 100644

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

drivers/md/dm-vdo/dedupe.c +1 -0
index 80628ae93fba..5a74b3a85ec4 100644

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

drivers/net/dsa/realtek/Kconfig +6 -0
index 6989972eebc3..10687722d14c 100644

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

drivers/net/dsa/realtek/Makefile +3 -0
index 35491dc20d6d..17367bcba496 100644

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

drivers/net/dsa/realtek/rtl8366rb-leds.c new file +177 -0

177 lines not on this page · raw message

drivers/net/dsa/realtek/rtl8366rb.c +6 -252

258 lines not on this page · raw message

drivers/net/dsa/realtek/rtl8366rb.h new file +107 -0

107 lines not on this page · raw message

drivers/net/ethernet/cadence/macb.h +2 -0
index 5740c98d8c9f..2847278d9cd4 100644

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

drivers/net/ethernet/cadence/macb_main.c +10 -2
index 56901280ba04..60847cdb516e 100644

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

drivers/net/ethernet/freescale/enetc/enetc.c +74 -29

103 lines not on this page · raw message

drivers/net/ethernet/freescale/enetc/enetc_ethtool.c +5 -2
index 2563eb8ac7b6..6a24324703bf 100644

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

drivers/net/ethernet/intel/ice/ice.h +1 -0
index 558cda577191..2960709f6b62 100644

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

drivers/net/ethernet/intel/ice/ice_eswitch.c +1 -2
index fb527434b58b..d649c197cf67 100644

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

drivers/net/ethernet/intel/ice/ice_hw_autogen.h +3 -0
index 91cbae1eec89..8d31bfe28cc8 100644

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

drivers/net/ethernet/intel/ice/ice_lib.c +3 -0
index 06e712cdc3d9..d4e74f96a8ad 100644

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

drivers/net/ethernet/intel/ice/ice_main.c +18 -6
index 45eefe22fb5b..ca707dfcb286 100644

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

drivers/net/ethernet/intel/ice/ice_sriov.c +1 -3
index 91cb393f616f..8aabf7749aa5 100644

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

drivers/net/ethernet/intel/ice/ice_vf_lib.c +31 -3
index 8c434689e3f7..815ad0bfe832 100644

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

drivers/net/ethernet/intel/ice/ice_vf_lib_private.h +1 -0
index 0c7e77c0a09f..5392b0404986 100644

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

drivers/net/ethernet/intel/ice/ice_vf_mbx.c +32 -0
index 40cb4ba0789c..75c8113e58ee 100644

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

drivers/net/ethernet/intel/ice/ice_vf_mbx.h +9 -0
index 44bc030d17e0..684de89e5c5e 100644

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

drivers/net/ethernet/intel/ice/ice_virtchnl.c +5 -3
index b6ec01f6fa73..c8c1d48ff793 100644

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

drivers/net/ethernet/intel/idpf/idpf_txrx.c +2 -1
index 1e0d1f9b07fb..afc902ae4763 100644

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

drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c +1 -1
index 1641791a2d5b..8ed83fb98862 100644

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

drivers/net/ethernet/mellanox/mlx5/core/pci_irq.c +1 -1
index 7db9cab9bedf..d9362eabc6a1 100644

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

drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c +14 -0
index bfe6e2d631bd..f5acfb7d4ff6 100644

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

drivers/net/ethernet/ti/Kconfig +1 -0
index 0d5a862cd78a..3a13d60a947a 100644

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

drivers/net/ethernet/ti/icssg/icss_iep.c +1 -20
index 768578c0d958..d59c1744840a 100644

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

drivers/net/ipvlan/ipvlan_core.c +17 -5
index b1afcb8740de..ca62188a317a 100644

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

drivers/net/loopback.c +14 -0
index 1993b90b1a5f..491e56b3263f 100644

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

drivers/net/phy/qcom/qca807x.c +1 -1
index bd8a51ec0ecd..ec336c3e338d 100644

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

drivers/net/usb/gl620a.c +1 -3
index 46af78caf457..0bfa37c14059 100644

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

drivers/phy/rockchip/Kconfig +1 -0
index 2f7a05f21dc5..dcb8e1628632 100644

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

drivers/phy/rockchip/phy-rockchip-naneng-combphy.c +4 -1
index 2eb3329ca23f..1ef6d9630f7e 100644

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

drivers/phy/samsung/phy-exynos5-usbdrd.c +14 -11
index c421b495eb0f..46b8f6987c62 100644

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

drivers/phy/tegra/xusb-tegra186.c +11 -0
index 0f60d5d1c167..fae6242aa730 100644

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

drivers/scsi/scsi_lib.c +7 -7
index c9dde1ac9523..3023b07dc483 100644

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

drivers/thermal/gov_bang_bang.c +5 -6
index 863e7a4272e6..b887e48e8c7e 100644

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

drivers/thermal/gov_fair_share.c +5 -11
index ce0ea571ed67..d37d57d48c38 100644

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

drivers/thermal/gov_power_allocator.c +45 -26

71 lines not on this page · raw message

drivers/thermal/gov_step_wise.c +8 -8
index fd5527188cf9..ea4bf88d37f3 100644

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

drivers/thermal/thermal_core.c +19 -14
index 1d2f2b307bac..c2fa236e10cd 100644

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

drivers/thermal/thermal_core.h +2 -3
index 421522a2bb9d..163871699a60 100644

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

drivers/thermal/thermal_helpers.c +3 -2
index dc374a7a1a65..403d62d3ce77 100644

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

drivers/thermal/thermal_of.c +30 -23

53 lines not on this page · raw message

drivers/ufs/core/ufs_bsg.c +4 -2
index 8d4ad0a3f2cf..252186124669 100644

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

drivers/ufs/core/ufshcd.c +19 -19
index 67410c4cebee..a3e95ef5eda8 100644

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

fs/afs/server.c +3 -0
index 038f9d0ae3af..4504e16b458c 100644

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

fs/afs/server_list.c +2 -2
index 7e7e567a7f8a..d20cd902ef94 100644

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

fs/nfs/delegation.c +37 -0
index 035ba52742a5..4db912f56230 100644

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

fs/nfs/delegation.h +1 -0
index 71524d34ed20..8ff5ab9c5c25 100644

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

fs/nfs/direct.c +23 -0
index 90079ca134dd..c1f1b826888c 100644

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

fs/nfs/nfs4proc.c +3 -0
index 405f17e6e0b4..e7bc99c69743 100644

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

fs/overlayfs/copy_up.c +1 -1
index b2c78621da44..4388004a319d 100644

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

include/asm-generic/vmlinux.lds.h +1 -1
index fa284b64b2de..23b358a1271c 100644

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

include/linux/blkdev.h +4 -3
index b7f327ce797e..8f37c5dd52b2 100644

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

include/linux/compiler-gcc.h +0 -12
index cd6f9aae311f..070b3b680209 100644

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

include/linux/compiler.h +8 -31
index 2d962dade9fa..b15911e201bf 100644

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

include/linux/rcuref.h +6 -3
index 2c8bfd0f1b6b..6322d8c1c6b4 100644

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

include/linux/socket.h +2 -0
index d18cc47e89bd..c3322eb3d686 100644

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

include/linux/sunrpc/sched.h +1 -2
index fec1e8a1570c..eac57914dcf3 100644

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

include/net/ip.h +5 -0
index fe4f85438114..bd201278c55a 100644

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

include/net/route.h +3 -2
index da34b6fa9862..8a11d19f897b 100644

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

include/sound/cs35l56.h +31 -0
index 3dc7a1551ac3..5d653a3491d0 100644

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

include/trace/events/afs.h +2 -0
index 9a75590227f2..3dddfc6abf0e 100644

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

include/trace/events/sunrpc.h +1 -2
index 5e8495216689..5fe852bd31ab 100644

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

io_uring/net.c +3 -1
index 3974c417fe26..f32311f64113 100644

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

kernel/events/core.c +20 -11
index 501d8c2fedff..a0e1d2124727 100644

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

kernel/events/uprobes.c +5 -0
index 4b52cb2ae6d6..a0e0676f5d8b 100644

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

kernel/sched/core.c +1 -1
index c72356836eb6..9803f10a082a 100644

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

kernel/sched/ext.c +7 -4
index aa57ae3eb1ff..325fd5b9d471 100644

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

kernel/trace/ftrace.c +12 -15
index 71cc1bbfe9aa..dbd375f28ee0 100644

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

kernel/trace/trace_events_hist.c +15 -15
index 5f9119eb7c67..31f5ad322fab 100644

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

lib/rcuref.c +2 -3
index 97f300eca927..5bd726b71e39 100644

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

net/bluetooth/l2cap_core.c +7 -2
index 27b4c4a2ba1f..728a5ce9b505 100644

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

net/bridge/br_netfilter_hooks.c +5 -3
index 1d458e9da660..17a5f5923d61 100644

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

net/core/gro.c +1 -0
index 78b320b63174..0ad549b07e03 100644

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

net/core/scm.c +10 -0
index 4f6a14babe5a..733c0cbd393d 100644

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

net/core/skbuff.c +1 -1
index 61a950f13a91..f220306731da 100644

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

net/core/sysctl_net_core.c +2 -1
index 5dd54a813398..47e2743ffe22 100644

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

net/ipv4/icmp.c +9 -10
index f45bc187a92a..b8111ec651b5 100644

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

net/ipv4/ip_options.c +2 -1
index 68aedb8877b9..81e86e5defee 100644

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

net/ipv4/tcp.c +10 -16
index 68cb6a966b18..b731a4a8f2b0 100644

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

net/ipv4/tcp_minisocks.c +4 -6
index bb1fe1ba867a..f3e4fc957219 100644

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

net/ipv6/ip6_tunnel.c +2 -2
index b60e13c42bca..48fd53b98972 100644

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

net/ipv6/rpl_iptunnel.c +12 -2
index 0ac4283acdf2..7c05ac846646 100644

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

net/ipv6/seg6_iptunnel.c +12 -2
index 33833b2064c0..51583461ae29 100644

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

net/mptcp/pm_netlink.c +0 -5
index 8c4f934d198c..b4ba2d9f0417 100644

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

net/mptcp/subflow.c +1 -14
index 860903e06422..b56bbee7312c 100644

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

net/rxrpc/rxperf.c +12 -0
index 085e7892d310..b1536da2246b 100644

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

net/sunrpc/cache.c +3 -7
index 059f6ef1ad18..7fcb0574fc79 100644

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

net/sunrpc/sched.c +0 -2
index cef623ea1506..9b45fbdc90ca 100644

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

net/sunrpc/xprtsock.c +9 -1
index b69e6290acfa..171ad4e2523f 100644

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

security/integrity/ima/ima.h +3 -0
index 3c323ca213d4..abfdb4905ca2 100644

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

security/integrity/ima/ima_main.c +5 -2
index 06132cf47016..4b213de8dcb4 100644

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

security/landlock/net.c +1 -2
index d5dcc4407a19..104b6c01fe50 100644

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

sound/pci/hda/cs35l56_hda_spi.c +3 -0
index 7f02155fe61e..7c94110b6272 100644

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

sound/pci/hda/patch_realtek.c +1 -1
index 9bf99fe6cd34..4a3b4c6d4114 100644

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

sound/soc/codecs/cs35l56-shared.c +80 -0

80 lines not on this page · raw message

sound/soc/codecs/cs35l56-spi.c +3 -0
index b07b798b0b45..568f554a8638 100644

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

sound/soc/codecs/es8328.c +4 -11
index f3c97da798dc..76159c45e6b5 100644

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

sound/soc/fsl/fsl_sai.c +3 -3
index 634168d2bb6e..c5efbceb06d1 100644

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

sound/soc/fsl/imx-audmix.c +2 -2
index ff3671226306..ca33ecad0752 100644

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

sound/usb/midi.c +1 -1
index 737dd00e97b1..779d97d31f17 100644

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

sound/usb/quirks.c +1 -0
index a97efb7b131e..09210fb4ac60 100644

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

tools/objtool/check.c +6 -44

50 lines not on this page · raw message

tools/objtool/include/objtool/special.h +1 -1
index 86d4af9c5aa9..89ee12b1a138 100644

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

tools/testing/selftests/drivers/net/queues.py +3 -4
index 30f29096e27c..4868b514ae78 100755

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

tools/testing/selftests/landlock/common.h +1 -0
index 61056fa074bb..40a2def50b83 100644

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

tools/testing/selftests/landlock/config +2 -0
index 29af19c4e9f9..a8982da4acbd 100644

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

tools/testing/selftests/landlock/net_test.c +110 -14

124 lines not on this page · raw message

tools/testing/selftests/rseq/rseq-riscv-bits.h +3 -3
index de31a0143139..f02f411d550d 100644

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

tools/testing/selftests/rseq/rseq-riscv.h +1 -1
index 37e598d0a365..67d544aaa9a3 100644

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

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

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

#2 lore raw
In reply to Greg Kroah-Hartman
Quoted 4 lines · On Fri, 07 Mar 2025 18:52:44 +0100 Greg Kroah-Hartman…

I'm announcing the release of the 6.12.18 kernel.

All users of the 6.12 kernel series must upgrade.

While testing another backport, I found an unrelated build failure for loongarch in v6.12.18 that I did not see in v6.12.17 -- I cannot find it reported from a quick look, so I am doing so here:

CC arch/loongarch/kernel/asm-offsets.s - due to target missing
In file included from arch/loongarch/kernel/asm-offsets.c:8:
In file included from ./include/linux/sched.h:12:
In file included from ./arch/loongarch/include/generated/asm/current.h:1:
In file included from ./include/asm-generic/current.h:6:
./include/linux/thread_info.h:249:6: error: call to undeclared function 'annotate_reachable'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
249 | if (WARN_ON_ONCE(bytes > INT_MAX))
| ^
./include/asm-generic/bug.h:113:3: note: expanded from macro 'WARN_ON_ONCE'
113 | __WARN_FLAGS(BUGFLAG_ONCE | \
| ^
./arch/loongarch/include/asm/bug.h:47:2: note: expanded from macro '__WARN_FLAGS'
47 | annotate_reachable(); \
| ^

As well as warnings:

In file included from arch/loongarch/kernel/asm-offsets.c:9:
In file included from ./include/linux/mm.h:1120:
In file included from ./include/linux/huge_mm.h:8:
In file included from ./include/linux/fs.h:33:
In file included from ./include/linux/percpu-rwsem.h:7:
In file included from ./include/linux/rcuwait.h:6:
In file included from ./include/linux/sched/signal.h:6:
./include/linux/signal.h:114:27: warning: array index 3 is past the end of the array (that has type 'const unsigned long[1]') [-Warray-bounds]
114 | return (set1->sig[3] == set2->sig[3]) &&
| ^ ~
./include/uapi/asm-generic/signal.h:62:2: note: array 'sig' declared here
62 | unsigned long sig[_NSIG_WORDS];
| ^

I hope that helps.

Cheers,
Miguel

maintainer
#3 lore raw

Hi, Miguel,

Quoted 42 lines · Miguel Ojeda
Quoted 4 lines · On Fri, 07 Mar 2025 18:52:44 +0100 Greg Kroah-Hartman…

I'm announcing the release of the 6.12.18 kernel.

All users of the 6.12 kernel series must upgrade.

While testing another backport, I found an unrelated build failure for loongarch in v6.12.18 that I did not see in v6.12.17 -- I cannot find it reported from a quick look, so I am doing so here:

CC arch/loongarch/kernel/asm-offsets.s - due to target missing
In file included from arch/loongarch/kernel/asm-offsets.c:8:
In file included from ./include/linux/sched.h:12:
In file included from ./arch/loongarch/include/generated/asm/current.h:1:
In file included from ./include/asm-generic/current.h:6:
./include/linux/thread_info.h:249:6: error: call to undeclared function 'annotate_reachable'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
249 | if (WARN_ON_ONCE(bytes > INT_MAX))
| ^
./include/asm-generic/bug.h:113:3: note: expanded from macro 'WARN_ON_ONCE'
113 | __WARN_FLAGS(BUGFLAG_ONCE | \
| ^
./arch/loongarch/include/asm/bug.h:47:2: note: expanded from macro '__WARN_FLAGS'
47 | annotate_reachable(); \
| ^

As well as warnings:

In file included from arch/loongarch/kernel/asm-offsets.c:9:
In file included from ./include/linux/mm.h:1120:
In file included from ./include/linux/huge_mm.h:8:
In file included from ./include/linux/fs.h:33:
In file included from ./include/linux/percpu-rwsem.h:7:
In file included from ./include/linux/rcuwait.h:6:
In file included from ./include/linux/sched/signal.h:6:
./include/linux/signal.h:114:27: warning: array index 3 is past the end of the array (that has type 'const unsigned long[1]') [-Warray-bounds]
114 | return (set1->sig[3] == set2->sig[3]) &&
| ^ ~
./include/uapi/asm-generic/signal.h:62:2: note: array 'sig' declared here
62 | unsigned long sig[_NSIG_WORDS];
| ^

Quoted 1 line

I hope that helps.

This is caused by the backport commit 06e24745985c8dd0da183 ("objtool:
Remove annotate_{,un}reachable()"), but missing the commit 624bde3465f660e54a7cd4c1 ("loongarch: Use ASM_REACHABLE"), I will fix it later.

In addition, it is better to also backport [1], since similar patches for x86 have been backported, otherwise there will be build warnings.

[1] https://lore.kernel.org/loongarch/[email protected]/T/#u

Huacai

Quoted 3 lines

Cheers,
Miguel