Skip to contentSkip to conversation

Linux 6.13.6

DISCUSSION Greg Kroah-Hartman 3 participants 5 messages Mar 7, 2025 – Mar 9, 2025 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 6.13.6 kernel.

All users of the 6.13 kernel series must upgrade.

The updated 6.13.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.13.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/cmpxchg.h                      |    2 
 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_gfx.c               |   11 
 drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c               |   20 
 drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h               |    2 
 drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c               |    2 
 drivers/gpu/drm/amd/amdgpu/mes_v11_0.c                |    4 
 drivers/gpu/drm/amd/amdgpu/mes_v12_0.c                |    4 
 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     |   86 +++
 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/drm_fbdev_dma.c                       |  217 ++++++--
 drivers/gpu/drm/xe/regs/xe_engine_regs.h              |    1 
 drivers/gpu/drm/xe/xe_oa.c                            |    5 
 drivers/gpu/drm/xe/xe_vm.c                            |   40 +
 drivers/i2c/busses/i2c-amd-asf-plat.c                 |    1 
 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               |    2 
 drivers/infiniband/hw/bnxt_re/hw_counters.c           |    4 
 drivers/infiniband/hw/bnxt_re/ib_verbs.c              |   40 -
 drivers/infiniband/hw/bnxt_re/main.c                  |   41 +
 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/enetc4_pf.c      |    2 
 drivers/net/ethernet/freescale/enetc/enetc_ethtool.c  |    7 
 drivers/net/ethernet/google/gve/gve_rx_dqo.c          |    2 
 drivers/net/ethernet/intel/ice/ice_eswitch.c          |    3 
 drivers/net/ethernet/intel/ice/ice_sriov.c            |    5 
 drivers/net/ethernet/intel/ice/ice_vf_lib.c           |    8 
 drivers/net/ethernet/intel/ice/ice_vf_lib_private.h   |    1 
 drivers/net/ethernet/intel/idpf/idpf_txrx.c           |    3 
 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c        |    2 
 drivers/net/ethernet/mellanox/mlx5/core/esw/qos.c     |    8 
 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                      |   21 
 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/st/phy-stm32-combophy.c                   |   38 -
 drivers/phy/tegra/xusb-tegra186.c                     |   11 
 drivers/scsi/scsi_lib.c                               |   14 
 drivers/thermal/gov_power_allocator.c                 |   32 -
 drivers/thermal/thermal_of.c                          |   50 +-
 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/btrfs/extent_map.c                                 |   83 ++-
 fs/btrfs/file.c                                       |    9 
 fs/fuse/dev.c                                         |    6 
 fs/fuse/file.c                                        |   13 
 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/net_namespace.h                           |   11 
 include/net/sock.h                                    |    1 
 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                               |   15 
 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/core/gro.c                                        |    1 
 net/core/net_namespace.c                              |    8 
 net/core/scm.c                                        |   10 
 net/core/skbuff.c                                     |    2 
 net/core/sock.c                                       |   27 -
 net/core/sysctl_net_core.c                            |    3 
 net/ipv4/tcp.c                                        |   26 -
 net/ipv4/tcp_minisocks.c                              |   10 
 net/ipv6/rpl_iptunnel.c                               |   14 
 net/ipv6/seg6_iptunnel.c                              |   14 
 net/mptcp/pm_netlink.c                                |    5 
 net/mptcp/subflow.c                                   |   20 
 net/netlink/af_netlink.c                              |   10 
 net/rds/tcp.c                                         |    8 
 net/rxrpc/rxperf.c                                    |   12 
 net/smc/af_smc.c                                      |    5 
 net/sunrpc/cache.c                                    |   10 
 net/sunrpc/sched.c                                    |    2 
 net/sunrpc/svcsock.c                                  |    5 
 net/sunrpc/xprtsock.c                                 |   18 
 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 
 177 files changed, 2634 insertions(+), 1168 deletions(-)

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

Alex Deucher (3):
drm/amdgpu/gfx: only call mes for enforce isolation if supported drm/amdgpu/mes: keep enforce isolation up to date drm/amdgpu: disable BAR resize on Dell G5 SE

Andreas Schwab (2):
riscv/atomic: Do proper sign extension also for unsigned in arch_cmpxchg 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

Andrii Nakryiko (1):
uprobes: Remove too strict lockdep_assert() condition in hprobe_expire()

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

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

Carolina Jubran (2):
net/mlx5: Fix vport QoS cleanup on error
net/mlx5: Restore missing trace event when enabling vport QoS

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

Christian Bruel (1):
phy: stm32: Fix constant-value overflow assertion

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 (3):
net: better track kernel sockets lifetime
ipvlan: ensure network headers are in skb linear part
idpf: fix checksums set in idpf_rx_rsc()

Filipe Manana (3):
btrfs: skip inodes without loaded extent maps when shrinking extent maps
btrfs: do regular iput instead of delayed iput during extent map shrinking
btrfs: fix use-after-free on inode when scanning root during em shrinking

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

Greg Kroah-Hartman (1):

      Linux 6.13.6

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

Harshitha Ramamurthy (1):
gve: unlink old napi when stopping a queue using queue API

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

Joanne Koong (1):
fuse: revert back to __readahead_folio() for readahead

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

Kuniyuki Iwashima (1):
net: Add net_passive_inc() and net_passive_dec().

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

Melissa Wen (1):
drm/amd/display: restore edid reading from a given i2c adapter

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

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

Qu Wenruo (1):
btrfs: fix data overwriting bug during buffered write when block size < page size

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

Rafael J. Wysocki (1):
thermal/of: Fix cdev lookup in thermal_of_should_bind()

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

Shyam Sundar S K (1):
i2c: amd-asf: Fix EOI register write to enable successive interrupts

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

Thomas Zimmermann (1):
drm/fbdev-dma: Add shadow buffering for deferred I/O

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 (8):
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: remove the mm_lock from the ENETC v4 driver
net: enetc: fix the off-by-one issue in enetc_map_tx_tso_buffs()
net: enetc: add missing enetc4_link_deinit()

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 56d5c11b6f1e..f49182f3bae1 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 6
 PATCHLEVEL = 13
-SUBLEVEL = 5
+SUBLEVEL = 6
 EXTRAVERSION =
 NAME = Baby Opossum Posse
 
arch/arm64/include/asm/kvm_host.h +1 -1
index e18e9244d17a..c85aa4f1def8 100644
@@ -1262,7 +1262,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 7b2735ad32e9..3b3ecfed294f 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
@@ -1147,18 +1157,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 9c0b8d9558fc..ccdef53872a0 100644
@@ -279,12 +279,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/cmpxchg.h +1 -1
index 4cadc56220fe..427c41dde643 100644
@@ -231,7 +231,7 @@
 		__arch_cmpxchg(".w", ".w" sc_sfx, ".w" cas_sfx,		\
 			       sc_prepend, sc_append,			\
 			       cas_prepend, cas_append,			\
-			       __ret, __ptr, (long), __old, __new);	\
+			       __ret, __ptr, (long)(int)(long), __old, __new);	\
 		break;							\
 	case 8:								\
 		__arch_cmpxchg(".d", ".d" sc_sfx, ".d" cas_sfx,		\
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 c0916ed318c2..aaf5fa57591b 100644
@@ -475,7 +475,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 45010e71df86..01b0520fb180 100644
@@ -324,8 +324,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 c2fb8fe86a45..757333fe82c7 100644
@@ -1336,6 +1336,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 c75c482d4c52..c72e8b2b5ba9 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 5365e9a43000..42433c19eb30 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 cd4fac120834..3780d50fd3ae 100644
@@ -1635,6 +1635,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_gfx.c +4 -7
index 9a4dad3e4152..7ec35e367758 100644
@@ -1593,22 +1593,19 @@ static ssize_t amdgpu_gfx_set_enforce_isolation(struct device *dev,
 	}
 
 	mutex_lock(&adev->enforce_isolation_mutex);
-
 	for (i = 0; i < num_partitions; i++) {
-		if (adev->enforce_isolation[i] && !partition_values[i]) {
+		if (adev->enforce_isolation[i] && !partition_values[i])
 			/* Going from enabled to disabled */
 			amdgpu_vmid_free_reserved(adev, AMDGPU_GFXHUB(i));
-			amdgpu_mes_set_enforce_isolation(adev, i, false);
-		} else if (!adev->enforce_isolation[i] && partition_values[i]) {
+		else if (!adev->enforce_isolation[i] && partition_values[i])
 			/* Going from disabled to enabled */
 			amdgpu_vmid_alloc_reserved(adev, AMDGPU_GFXHUB(i));
-			amdgpu_mes_set_enforce_isolation(adev, i, true);
-		}
 		adev->enforce_isolation[i] = partition_values[i];
 	}
-
 	mutex_unlock(&adev->enforce_isolation_mutex);
 
+	amdgpu_mes_update_enforce_isolation(adev);
+
 	return count;
 }
 
drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c +19 -1
index 59ec20b07a6a..452ca07e7e7d 100644
@@ -1679,7 +1679,8 @@ bool amdgpu_mes_suspend_resume_all_supported(struct amdgpu_device *adev)
 }
 
 /* Fix me -- node_id is used to identify the correct MES instances in the future */
-int amdgpu_mes_set_enforce_isolation(struct amdgpu_device *adev, uint32_t node_id, bool enable)
+static int amdgpu_mes_set_enforce_isolation(struct amdgpu_device *adev,
+					    uint32_t node_id, bool enable)
 {
 	struct mes_misc_op_input op_input = {0};
 	int r;
@@ -1701,6 +1702,23 @@ int amdgpu_mes_set_enforce_isolation(struct amdgpu_device *adev, uint32_t node_i
 	return r;
 }
 
+int amdgpu_mes_update_enforce_isolation(struct amdgpu_device *adev)
+{
+	int i, r = 0;
+
+	if (adev->enable_mes && adev->gfx.enable_cleaner_shader) {
+		mutex_lock(&adev->enforce_isolation_mutex);
+		for (i = 0; i < (adev->xcp_mgr ? adev->xcp_mgr->num_xcps : 1); i++) {
+			if (adev->enforce_isolation[i])
+				r |= amdgpu_mes_set_enforce_isolation(adev, i, true);
+			else
+				r |= amdgpu_mes_set_enforce_isolation(adev, i, false);
+		}
+		mutex_unlock(&adev->enforce_isolation_mutex);
+	}
+	return r;
+}
+
 #if defined(CONFIG_DEBUG_FS)
 
 static int amdgpu_debugfs_mes_event_log_show(struct seq_file *m, void *unused)
drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h +1 -1
index c6f93cbd6739..f089c5087c63 100644
@@ -534,6 +534,6 @@ static inline void amdgpu_mes_unlock(struct amdgpu_mes *mes)
 
 bool amdgpu_mes_suspend_resume_all_supported(struct amdgpu_device *adev);
 
-int amdgpu_mes_set_enforce_isolation(struct amdgpu_device *adev, uint32_t node_id, bool enable);
+int amdgpu_mes_update_enforce_isolation(struct amdgpu_device *adev);
 
 #endif /* __AMDGPU_MES_H__ */
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +1 -1
index 2890f54339ad..e7fad5587f69 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/amdgpu/mes_v11_0.c +4 -0
index 9c905b9e9376..40750e5478ef 100644
@@ -1635,6 +1635,10 @@ static int mes_v11_0_hw_init(struct amdgpu_ip_block *ip_block)
 		goto failure;
 	}
 
+	r = amdgpu_mes_update_enforce_isolation(adev);
+	if (r)
+		goto failure;
+
 out:
 	/*
 	 * Disable KIQ ring usage from the driver once MES is enabled.
drivers/gpu/drm/amd/amdgpu/mes_v12_0.c +4 -0
index 9ecc5d61e49b..0921fd8c050d 100644
@@ -1590,6 +1590,10 @@ static int mes_v12_0_hw_init(struct amdgpu_ip_block *ip_block)
 		goto failure;
 	}
 
+	r = amdgpu_mes_update_enforce_isolation(adev);
+	if (r)
+		goto failure;
+
 out:
 	/*
 	 * Disable KIQ ring usage from the driver once MES is enabled.
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 +77 -9

181 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 8908646ad620..4323b601c9aa 100644
@@ -3042,6 +3042,7 @@ static int kv_dpm_hw_init(struct amdgpu_ip_block *ip_block)
 	if (!amdgpu_dpm)
 		return 0;
 
+	mutex_lock(&adev->pm.mutex);
 	kv_dpm_setup_asic(adev);
 	ret = kv_dpm_enable(adev);
 	if (ret)
@@ -3049,6 +3050,8 @@ static int kv_dpm_hw_init(struct amdgpu_ip_block *ip_block)
 	else
 		adev->pm.dpm_enabled = true;
 	amdgpu_legacy_dpm_compute_clocks(adev);
+	mutex_unlock(&adev->pm.mutex);
+
 	return ret;
 }
 
@@ -3066,32 +3069,42 @@ static int kv_dpm_suspend(struct amdgpu_ip_block *ip_block)
 {
 	struct amdgpu_device *adev = ip_block->adev;
 
+	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(struct amdgpu_ip_block *ip_block)
 {
-	int ret;
+	int ret = 0;
 	struct amdgpu_device *adev = ip_block->adev;
 
-	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 ee23a0f897c5..5fb2409b6fc2 100644
@@ -7785,6 +7785,7 @@ static int si_dpm_hw_init(struct amdgpu_ip_block *ip_block)
 	if (!amdgpu_dpm)
 		return 0;
 
+	mutex_lock(&adev->pm.mutex);
 	si_dpm_setup_asic(adev);
 	ret = si_dpm_enable(adev);
 	if (ret)
@@ -7792,6 +7793,7 @@ static int si_dpm_hw_init(struct amdgpu_ip_block *ip_block)
 	else
 		adev->pm.dpm_enabled = true;
 	amdgpu_legacy_dpm_compute_clocks(adev);
+	mutex_unlock(&adev->pm.mutex);
 	return ret;
 }
 
@@ -7809,32 +7811,44 @@ static int si_dpm_suspend(struct amdgpu_ip_block *ip_block)
 {
 	struct amdgpu_device *adev = ip_block->adev;
 
+	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(struct amdgpu_ip_block *ip_block)
 {
-	int ret;
+	int ret = 0;
 	struct amdgpu_device *adev = ip_block->adev;
 
-	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/drm_fbdev_dma.c +155 -62

282 lines not on this page · raw message

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 +3 -2
index 913f6ba60637..5c50ca8cd8e7 100644
@@ -1766,7 +1766,7 @@ static int xe_oa_stream_init(struct xe_oa_stream *stream,
 	stream->oa_buffer.format = &stream->oa->oa_formats[param->oa_format];
 
 	stream->sample = param->sample;
-	stream->periodic = param->period_exponent > 0;
+	stream->periodic = param->period_exponent >= 0;
 	stream->period_exponent = param->period_exponent;
 	stream->no_preempt = param->no_preempt;
 	stream->wait_num_reports = param->wait_num_reports;
@@ -2058,6 +2058,7 @@ int xe_oa_stream_open_ioctl(struct drm_device *dev, u64 data, struct drm_file *f
 	}
 
 	param.xef = xef;
+	param.period_exponent = -1;
 	ret = xe_oa_user_extensions(oa, XE_OA_USER_EXTN_FROM_OPEN, data, 0, &param);
 	if (ret)
 		return ret;
@@ -2112,7 +2113,7 @@ int xe_oa_stream_open_ioctl(struct drm_device *dev, u64 data, struct drm_file *f
 		goto err_exec_q;
 	}
 
-	if (param.period_exponent > 0) {
+	if (param.period_exponent >= 0) {
 		u64 oa_period, oa_freq_hz;
 
 		/* Requesting samples from OAG buffer is a privileged operation */
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-amd-asf-plat.c +1 -0
index 7512614bf4b7..93ebec162c6d 100644
@@ -293,6 +293,7 @@ static irqreturn_t amd_asf_irq_handler(int irq, void *ptr)
 		amd_asf_update_ioport_target(piix4_smba, ASF_SLV_INTR, SMBHSTSTS, true);
 	}
 
+	iowrite32(irq, dev->eoi_base);
 	return IRQ_HANDLED;
 }
 
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 482a0074d448..da12e5af9064 100644
@@ -2329,6 +2329,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 ac4d8faa3886..51293efd02ea 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"
@@ -1797,6 +1798,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 +1 -1
index 2975b11b79bf..22c98c155bd3 100644
@@ -204,7 +204,7 @@ struct bnxt_re_dev {
 	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 +21 -19
index 1ff2e176b036..0ed62d3e494c 100644
@@ -161,7 +161,7 @@ static int __qp_access_flags_to_ib(struct bnxt_qplib_chip_ctx *cctx, u8 qflags)
 static void bnxt_re_check_and_set_relaxed_ordering(struct bnxt_re_dev *rdev,
 						   struct bnxt_qplib_mrw *qplib_mr)
 {
-	if (_is_relaxed_ordering_supported(rdev->dev_attr.dev_cap_flags2) &&
+	if (_is_relaxed_ordering_supported(rdev->dev_attr->dev_cap_flags2) &&
 	    pcie_relaxed_ordering_enabled(rdev->en_dev->pdev))
 		qplib_mr->flags |= CMDQ_REGISTER_MR_FLAGS_ENABLE_RO;
 }
@@ -186,7 +186,7 @@ int bnxt_re_query_device(struct ib_device *ibdev,
 			 struct ib_udata *udata)
 {
 	struct bnxt_re_dev *rdev = to_bnxt_re_dev(ibdev, ibdev);
-	struct bnxt_qplib_dev_attr *dev_attr = &rdev->dev_attr;
+	struct bnxt_qplib_dev_attr *dev_attr = rdev->dev_attr;
 
 	memset(ib_attr, 0, sizeof(*ib_attr));
 	memcpy(&ib_attr->fw_ver, dev_attr->fw_ver,
@@ -275,7 +275,7 @@ int bnxt_re_query_port(struct ib_device *ibdev, u32 port_num,
 		       struct ib_port_attr *port_attr)
 {
 	struct bnxt_re_dev *rdev = to_bnxt_re_dev(ibdev, ibdev);
-	struct bnxt_qplib_dev_attr *dev_attr = &rdev->dev_attr;
+	struct bnxt_qplib_dev_attr *dev_attr = rdev->dev_attr;
 	int rc;
 
 	memset(port_attr, 0, sizeof(*port_attr));
@@ -333,8 +333,8 @@ void bnxt_re_query_fw_str(struct ib_device *ibdev, char *str)
 	struct bnxt_re_dev *rdev = to_bnxt_re_dev(ibdev, ibdev);
 
 	snprintf(str, IB_FW_VERSION_NAME_MAX, "%d.%d.%d.%d",
-		 rdev->dev_attr.fw_ver[0], rdev->dev_attr.fw_ver[1],
-		 rdev->dev_attr.fw_ver[2], rdev->dev_attr.fw_ver[3]);
+		 rdev->dev_attr->fw_ver[0], rdev->dev_attr->fw_ver[1],
+		 rdev->dev_attr->fw_ver[2], rdev->dev_attr->fw_ver[3]);
 }
 
 int bnxt_re_query_pkey(struct ib_device *ibdev, u32 port_num,
@@ -585,7 +585,7 @@ static int bnxt_re_create_fence_mr(struct bnxt_re_pd *pd)
 	mr->qplib_mr.pd = &pd->qplib_pd;
 	mr->qplib_mr.type = CMDQ_ALLOCATE_MRW_MRW_FLAGS_PMR;
 	mr->qplib_mr.access_flags = __from_ib_access_flags(mr_access_flags);
-	if (!_is_alloc_mr_unified(rdev->dev_attr.dev_cap_flags)) {
+	if (!_is_alloc_mr_unified(rdev->dev_attr->dev_cap_flags)) {
 		rc = bnxt_qplib_alloc_mrw(&rdev->qplib_res, &mr->qplib_mr);
 		if (rc) {
 			ibdev_err(&rdev->ibdev, "Failed to alloc fence-HW-MR\n");
@@ -1057,7 +1057,7 @@ static int bnxt_re_setup_swqe_size(struct bnxt_re_qp *qp,
 	rdev = qp->rdev;
 	qplqp = &qp->qplib_qp;
 	sq = &qplqp->sq;
-	dev_attr = &rdev->dev_attr;
+	dev_attr = rdev->dev_attr;
 
 	align = sizeof(struct sq_send_hdr);
 	ilsize = ALIGN(init_attr->cap.max_inline_data, align);
@@ -1277,7 +1277,7 @@ static int bnxt_re_init_rq_attr(struct bnxt_re_qp *qp,
 	rdev = qp->rdev;
 	qplqp = &qp->qplib_qp;
 	rq = &qplqp->rq;
-	dev_attr = &rdev->dev_attr;
+	dev_attr = rdev->dev_attr;
 
 	if (init_attr->srq) {
 		struct bnxt_re_srq *srq;
@@ -1314,7 +1314,7 @@ static void bnxt_re_adjust_gsi_rq_attr(struct bnxt_re_qp *qp)
 
 	rdev = qp->rdev;
 	qplqp = &qp->qplib_qp;
-	dev_attr = &rdev->dev_attr;
+	dev_attr = rdev->dev_attr;
 
 	if (!bnxt_qplib_is_chip_gen_p5_p7(rdev->chip_ctx)) {
 		qplqp->rq.max_sge = dev_attr->max_qp_sges;
@@ -1340,7 +1340,7 @@ static int bnxt_re_init_sq_attr(struct bnxt_re_qp *qp,
 	rdev = qp->rdev;
 	qplqp = &qp->qplib_qp;
 	sq = &qplqp->sq;
-	dev_attr = &rdev->dev_attr;
+	dev_attr = rdev->dev_attr;
 
 	sq->max_sge = init_attr->cap.max_send_sge;
 	entries = init_attr->cap.max_send_wr;
@@ -1393,7 +1393,7 @@ static void bnxt_re_adjust_gsi_sq_attr(struct bnxt_re_qp *qp,
 
 	rdev = qp->rdev;
 	qplqp = &qp->qplib_qp;
-	dev_attr = &rdev->dev_attr;
+	dev_attr = rdev->dev_attr;
 
 	if (!bnxt_qplib_is_chip_gen_p5_p7(rdev->chip_ctx)) {
 		entries = bnxt_re_init_depth(init_attr->cap.max_send_wr + 1, uctx);
@@ -1442,7 +1442,7 @@ static int bnxt_re_init_qp_attr(struct bnxt_re_qp *qp, struct bnxt_re_pd *pd,
 
 	rdev = qp->rdev;
 	qplqp = &qp->qplib_qp;
-	dev_attr = &rdev->dev_attr;
+	dev_attr = rdev->dev_attr;
 
 	/* Setup misc params */
 	ether_addr_copy(qplqp->smac, rdev->netdev->dev_addr);
@@ -1612,7 +1612,7 @@ int bnxt_re_create_qp(struct ib_qp *ib_qp, struct ib_qp_init_attr *qp_init_attr,
 	ib_pd = ib_qp->pd;
 	pd = container_of(ib_pd, struct bnxt_re_pd, ib_pd);
 	rdev = pd->rdev;
-	dev_attr = &rdev->dev_attr;
+	dev_attr = rdev->dev_attr;
 	qp = container_of(ib_qp, struct bnxt_re_qp, ib_qp);
 
 	uctx = rdma_udata_to_drv_context(udata, struct bnxt_re_ucontext, ib_uctx);
@@ -1840,7 +1840,7 @@ int bnxt_re_create_srq(struct ib_srq *ib_srq,
 	ib_pd = ib_srq->pd;
 	pd = container_of(ib_pd, struct bnxt_re_pd, ib_pd);
 	rdev = pd->rdev;
-	dev_attr = &rdev->dev_attr;
+	dev_attr = rdev->dev_attr;
 	srq = container_of(ib_srq, struct bnxt_re_srq, ib_srq);
 
 	if (srq_init_attr->attr.max_wr >= dev_attr->max_srq_wqes) {
@@ -1872,6 +1872,8 @@ int bnxt_re_create_srq(struct ib_srq *ib_srq,
 	srq->qplib_srq.threshold = srq_init_attr->attr.srq_limit;
 	srq->srq_limit = srq_init_attr->attr.srq_limit;
 	srq->qplib_srq.eventq_hw_ring_id = rdev->nqr->nq[0].ring_id;
+	srq->qplib_srq.sg_info.pgsize = PAGE_SIZE;
+	srq->qplib_srq.sg_info.pgshft = PAGE_SHIFT;
 	nq = &rdev->nqr->nq[0];
 
 	if (udata) {
@@ -2044,7 +2046,7 @@ int bnxt_re_modify_qp(struct ib_qp *ib_qp, struct ib_qp_attr *qp_attr,
 {
 	struct bnxt_re_qp *qp = container_of(ib_qp, struct bnxt_re_qp, ib_qp);
 	struct bnxt_re_dev *rdev = qp->rdev;
-	struct bnxt_qplib_dev_attr *dev_attr = &rdev->dev_attr;
+	struct bnxt_qplib_dev_attr *dev_attr = rdev->dev_attr;
 	enum ib_qp_state curr_qp_state, new_qp_state;
 	int rc, entries;
 	unsigned int flags;
@@ -3091,7 +3093,7 @@ int bnxt_re_create_cq(struct ib_cq *ibcq, const struct ib_cq_init_attr *attr,
 	struct ib_udata *udata = &attrs->driver_udata;
 	struct bnxt_re_ucontext *uctx =
 		rdma_udata_to_drv_context(udata, struct bnxt_re_ucontext, ib_uctx);
-	struct bnxt_qplib_dev_attr *dev_attr = &rdev->dev_attr;
+	struct bnxt_qplib_dev_attr *dev_attr = rdev->dev_attr;
 	struct bnxt_qplib_chip_ctx *cctx;
 	int cqe = attr->cqe;
 	int rc, entries;
@@ -3226,7 +3228,7 @@ int bnxt_re_resize_cq(struct ib_cq *ibcq, int cqe, struct ib_udata *udata)
 
 	cq =  container_of(ibcq, struct bnxt_re_cq, ib_cq);
 	rdev = cq->rdev;
-	dev_attr = &rdev->dev_attr;
+	dev_attr = rdev->dev_attr;
 	if (!ibcq->uobject) {
 		ibdev_err(&rdev->ibdev, "Kernel CQ Resize not supported");
 		return -EOPNOTSUPP;
@@ -4199,7 +4201,7 @@ static struct ib_mr *__bnxt_re_user_reg_mr(struct ib_pd *ib_pd, u64 length, u64
 	mr->qplib_mr.access_flags = __from_ib_access_flags(mr_access_flags);
 	mr->qplib_mr.type = CMDQ_ALLOCATE_MRW_MRW_FLAGS_MR;
 
-	if (!_is_alloc_mr_unified(rdev->dev_attr.dev_cap_flags)) {
+	if (!_is_alloc_mr_unified(rdev->dev_attr->dev_cap_flags)) {
 		rc = bnxt_qplib_alloc_mrw(&rdev->qplib_res, &mr->qplib_mr);
 		if (rc) {
 			ibdev_err(&rdev->ibdev, "Failed to allocate MR rc = %d", rc);
@@ -4291,7 +4293,7 @@ int bnxt_re_alloc_ucontext(struct ib_ucontext *ctx, struct ib_udata *udata)
 	struct bnxt_re_ucontext *uctx =
 		container_of(ctx, struct bnxt_re_ucontext, ib_uctx);
 	struct bnxt_re_dev *rdev = to_bnxt_re_dev(ibdev, ibdev);
-	struct bnxt_qplib_dev_attr *dev_attr = &rdev->dev_attr;
+	struct bnxt_qplib_dev_attr *dev_attr = rdev->dev_attr;
 	struct bnxt_re_user_mmap_entry *entry;
 	struct bnxt_re_uctx_resp resp = {};
 	struct bnxt_re_uctx_req ureq = {};
drivers/infiniband/hw/bnxt_re/main.c +28 -13

115 lines not on this page · raw message

drivers/infiniband/hw/bnxt_re/qplib_res.c +3 -4
index 96ceec1e8199..02922a0987ad 100644
@@ -876,14 +876,13 @@ void bnxt_qplib_free_res(struct bnxt_qplib_res *res)
 	bnxt_qplib_free_dpi_tbl(res, &res->dpi_tbl);
 }
 
-int bnxt_qplib_alloc_res(struct bnxt_qplib_res *res, struct pci_dev *pdev,
-			 struct net_device *netdev,
-			 struct bnxt_qplib_dev_attr *dev_attr)
+int bnxt_qplib_alloc_res(struct bnxt_qplib_res *res, struct net_device *netdev)
 {
+	struct bnxt_qplib_dev_attr *dev_attr;
 	int rc;
 
-	res->pdev = pdev;
 	res->netdev = netdev;
+	dev_attr = res->dattr;
 
 	rc = bnxt_qplib_alloc_sgid_tbl(res, &res->sgid_tbl, dev_attr->max_sgid);
 	if (rc)
drivers/infiniband/hw/bnxt_re/qplib_res.h +9 -3
index cbfc49a1a56d..711990232de1 100644
@@ -424,9 +424,7 @@ int bnxt_qplib_dealloc_dpi(struct bnxt_qplib_res *res,
 void bnxt_qplib_cleanup_res(struct bnxt_qplib_res *res);
 int bnxt_qplib_init_res(struct bnxt_qplib_res *res);
 void bnxt_qplib_free_res(struct bnxt_qplib_res *res);
-int bnxt_qplib_alloc_res(struct bnxt_qplib_res *res, struct pci_dev *pdev,
-			 struct net_device *netdev,
-			 struct bnxt_qplib_dev_attr *dev_attr);
+int bnxt_qplib_alloc_res(struct bnxt_qplib_res *res, struct net_device *netdev);
 void bnxt_qplib_free_ctx(struct bnxt_qplib_res *res,
 			 struct bnxt_qplib_ctx *ctx);
 int bnxt_qplib_alloc_ctx(struct bnxt_qplib_res *res,
@@ -549,6 +547,14 @@ static inline bool _is_ext_stats_supported(u16 dev_cap_flags)
 		CREQ_QUERY_FUNC_RESP_SB_EXT_STATS;
 }
 
+static inline int bnxt_ext_stats_supported(struct bnxt_qplib_chip_ctx *ctx,
+					   u16 flags, bool virtfn)
+{
+	/* ext stats supported if cap flag is set AND is a PF OR a Thor2 VF */
+	return (_is_ext_stats_supported(flags) &&
+		((virtfn && bnxt_qplib_is_chip_gen_p7(ctx)) || (!virtfn)));
+}
+
 static inline bool _is_hw_retx_supported(u16 dev_cap_flags)
 {
 	return dev_cap_flags &
drivers/infiniband/hw/bnxt_re/qplib_sp.c +2 -2
index 9df3e3271577..2e09616736bc 100644
@@ -88,9 +88,9 @@ static void bnxt_qplib_query_version(struct bnxt_qplib_rcfw *rcfw,
 	fw_ver[3] = resp.fw_rsvd;
 }
 
-int bnxt_qplib_get_dev_attr(struct bnxt_qplib_rcfw *rcfw,
-			    struct bnxt_qplib_dev_attr *attr)
+int bnxt_qplib_get_dev_attr(struct bnxt_qplib_rcfw *rcfw)
 {
+	struct bnxt_qplib_dev_attr *attr = rcfw->res->dattr;
 	struct creq_query_func_resp resp = {};
 	struct bnxt_qplib_cmdqmsg msg = {};
 	struct creq_query_func_resp_sb *sb;
drivers/infiniband/hw/bnxt_re/qplib_sp.h +1 -2
index e6beeb514b7d..a1878eec7ba6 100644
@@ -325,8 +325,7 @@ int bnxt_qplib_add_sgid(struct bnxt_qplib_sgid_tbl *sgid_tbl,
 int bnxt_qplib_update_sgid(struct bnxt_qplib_sgid_tbl *sgid_tbl,
 			   struct bnxt_qplib_gid *gid, u16 gid_idx,
 			   const u8 *smac);
-int bnxt_qplib_get_dev_attr(struct bnxt_qplib_rcfw *rcfw,
-			    struct bnxt_qplib_dev_attr *attr);
+int bnxt_qplib_get_dev_attr(struct bnxt_qplib_rcfw *rcfw);
 int bnxt_qplib_set_func_resources(struct bnxt_qplib_res *res,
 				  struct bnxt_qplib_rcfw *rcfw,
 				  struct bnxt_qplib_ctx *ctx);
drivers/infiniband/hw/hns/hns_roce_hw_v2.c +48 -16

110 lines not on this page · raw message

drivers/infiniband/hw/hns/hns_roce_hw_v2.h +2 -0
index cbdbc9edbce6..91a5665465ff 100644
@@ -230,6 +230,8 @@ enum hns_roce_opcode_type {
 };
 
 #define HNS_ROCE_OPC_POST_MB_TIMEOUT 35000
+#define HNS_ROCE_OPC_POST_MB_TRY_CNT 8
+#define HNS_ROCE_OPC_POST_MB_RETRY_GAP_MSEC 5
 struct hns_roce_cmdq_tx_timeout_map {
 	u16 opcode;
 	u32 tx_timeout;
drivers/infiniband/hw/mana/main.c +1 -1
index 67c2d43135a8..457cea6d9909 100644
@@ -174,7 +174,7 @@ static int mana_gd_allocate_doorbell_page(struct gdma_context *gc,
 
 	req.resource_type = GDMA_RESOURCE_DOORBELL_PAGE;
 	req.num_resources = 1;
-	req.alignment = 1;
+	req.alignment = PAGE_SIZE / MANA_PAGE_SIZE;
 
 	/* Have GDMA start searching from 0 */
 	req.allocated_resources = 0;
drivers/infiniband/hw/mlx5/ah.c +2 -1
index 505bc47fd575..99036afb3aef 100644
@@ -67,7 +67,8 @@ static void create_ib_ah(struct mlx5_ib_dev *dev, struct mlx5_ib_ah *ah,
 		ah->av.tclass = grh->traffic_class;
 	}
 
-	ah->av.stat_rate_sl = (rdma_ah_get_static_rate(ah_attr) << 4);
+	ah->av.stat_rate_sl =
+		(mlx5r_ib_rate(dev, rdma_ah_get_static_rate(ah_attr)) << 4);
 
 	if (ah_attr->type == RDMA_AH_ATTR_TYPE_ROCE) {
 		if (init_attr->xmit_slave)
drivers/infiniband/hw/mlx5/counters.c +6 -2
index 4f6c1968a2ee..81cfa74147a1 100644
@@ -546,6 +546,7 @@ static int mlx5_ib_counter_bind_qp(struct rdma_counter *counter,
 				   struct ib_qp *qp)
 {
 	struct mlx5_ib_dev *dev = to_mdev(qp->device);
+	bool new = false;
 	int err;
 
 	if (!counter->id) {
@@ -560,6 +561,7 @@ static int mlx5_ib_counter_bind_qp(struct rdma_counter *counter,
 			return err;
 		counter->id =
 			MLX5_GET(alloc_q_counter_out, out, counter_set_id);
+		new = true;
 	}
 
 	err = mlx5_ib_qp_set_counter(qp, counter);
@@ -569,8 +571,10 @@ static int mlx5_ib_counter_bind_qp(struct rdma_counter *counter,
 	return 0;
 
 fail_set_counter:
-	mlx5_ib_counter_dealloc(counter);
-	counter->id = 0;
+	if (new) {
+		mlx5_ib_counter_dealloc(counter);
+		counter->id = 0;
+	}
 
 	return err;
 }
drivers/infiniband/hw/mlx5/mr.c +14 -2
index bb02b6adbf2c..753faa9ad06a 100644
@@ -1550,7 +1550,7 @@ static void mlx5_ib_dmabuf_invalidate_cb(struct dma_buf_attachment *attach)
 
 	dma_resv_assert_held(umem_dmabuf->attach->dmabuf->resv);
 
-	if (!umem_dmabuf->sgt)
+	if (!umem_dmabuf->sgt || !mr)
 		return;
 
 	mlx5r_umr_update_mr_pas(mr, MLX5_IB_UPD_XLT_ZAP);
@@ -1935,7 +1935,8 @@ mlx5_alloc_priv_descs(struct ib_device *device,
 static void
 mlx5_free_priv_descs(struct mlx5_ib_mr *mr)
 {
-	if (!mr->umem && !mr->data_direct && mr->descs) {
+	if (!mr->umem && !mr->data_direct &&
+	    mr->ibmr.type != IB_MR_TYPE_DM && mr->descs) {
 		struct ib_device *device = mr->ibmr.device;
 		int size = mr->max_descs * mr->desc_size;
 		struct mlx5_ib_dev *dev = to_mdev(device);
@@ -2022,11 +2023,16 @@ static int mlx5_revoke_mr(struct mlx5_ib_mr *mr)
 	struct mlx5_ib_dev *dev = to_mdev(mr->ibmr.device);
 	struct mlx5_cache_ent *ent = mr->mmkey.cache_ent;
 	bool is_odp = is_odp_mr(mr);
+	bool is_odp_dma_buf = is_dmabuf_mr(mr) &&
+			!to_ib_umem_dmabuf(mr->umem)->pinned;
 	int ret = 0;
 
 	if (is_odp)
 		mutex_lock(&to_ib_umem_odp(mr->umem)->umem_mutex);
 
+	if (is_odp_dma_buf)
+		dma_resv_lock(to_ib_umem_dmabuf(mr->umem)->attach->dmabuf->resv, NULL);
+
 	if (mr->mmkey.cacheable && !mlx5r_umr_revoke_mr(mr) && !cache_ent_find_and_store(dev, mr)) {
 		ent = mr->mmkey.cache_ent;
 		/* upon storing to a clean temp entry - schedule its cleanup */
@@ -2054,6 +2060,12 @@ static int mlx5_revoke_mr(struct mlx5_ib_mr *mr)
 		mutex_unlock(&to_ib_umem_odp(mr->umem)->umem_mutex);
 	}
 
+	if (is_odp_dma_buf) {
+		if (!ret)
+			to_ib_umem_dmabuf(mr->umem)->private = NULL;
+		dma_resv_unlock(to_ib_umem_dmabuf(mr->umem)->attach->dmabuf->resv);
+	}
+
 	return ret;
 }
 
drivers/infiniband/hw/mlx5/odp.c +1 -0
index 1d3bf5615770..b4e2a6f9cb9c 100644
@@ -242,6 +242,7 @@ static void destroy_unused_implicit_child_mr(struct mlx5_ib_mr *mr)
 	if (__xa_cmpxchg(&imr->implicit_children, idx, mr, NULL, GFP_KERNEL) !=
 	    mr) {
 		xa_unlock(&imr->implicit_children);
+		mlx5r_deref_odp_mkey(&imr->mmkey);
 		return;
 	}
 
drivers/infiniband/hw/mlx5/qp.c +6 -4
index a43eba9d3572..88724d15705d 100644
@@ -3447,11 +3447,11 @@ static int ib_to_mlx5_rate_map(u8 rate)
 	return 0;
 }
 
-static int ib_rate_to_mlx5(struct mlx5_ib_dev *dev, u8 rate)
+int mlx5r_ib_rate(struct mlx5_ib_dev *dev, u8 rate)
 {
 	u32 stat_rate_support;
 
-	if (rate == IB_RATE_PORT_CURRENT)
+	if (rate == IB_RATE_PORT_CURRENT || rate == IB_RATE_800_GBPS)
 		return 0;
 
 	if (rate < IB_RATE_2_5_GBPS || rate > IB_RATE_800_GBPS)
@@ -3596,7 +3596,7 @@ static int mlx5_set_path(struct mlx5_ib_dev *dev, struct mlx5_ib_qp *qp,
 		       sizeof(grh->dgid.raw));
 	}
 
-	err = ib_rate_to_mlx5(dev, rdma_ah_get_static_rate(ah));
+	err = mlx5r_ib_rate(dev, rdma_ah_get_static_rate(ah));
 	if (err < 0)
 		return err;
 	MLX5_SET(ads, path, stat_rate, err);
@@ -4579,6 +4579,8 @@ static int mlx5_ib_modify_dct(struct ib_qp *ibqp, struct ib_qp_attr *attr,
 
 		set_id = mlx5_ib_get_counters_id(dev, attr->port_num - 1);
[… more lines in the raw message]

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 9f424acf474e..e540092d664d 100644

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

drivers/iommu/intel/iommu.c +7 -3
index 8f75c11a3ec4..9ab5371c3538 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 b6f8e2dc7729..3f3d29af1be4 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 daa416fb1724..af2debcaf7dc 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/enetc4_pf.c +1 -1
index fc41078c4f5d..73ac8c6afb3a 100644

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

drivers/net/ethernet/freescale/enetc/enetc_ethtool.c +5 -2
index bf34b5bb1e35..ece3ae28ba82 100644

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

drivers/net/ethernet/google/gve/gve_rx_dqo.c +2 -0
index 8ac0047f1ada..f0674a443567 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_sriov.c +1 -4
index b83f99c01d91..8aabf7749aa5 100644

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

drivers/net/ethernet/intel/ice/ice_vf_lib.c +8 -0
index c7c0c2f50c26..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/idpf/idpf_txrx.c +2 -1
index 9be6a6b59c4e..977741c41498 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/esw/qos.c +7 -1
index 8b7c843446e1..823c1ba456cd 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 +16 -5
index fd591ddb3884..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/st/phy-stm32-combophy.c +18 -20
index 49e9fa90a681..607b4d607eb5 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 5f9b107ae267..43766589bfc6 100644

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

drivers/thermal/gov_power_allocator.c +23 -9
index 3b644de3292e..0d9f636c80f4 100644

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

drivers/thermal/thermal_of.c +29 -21

50 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 56b32d245c2e..a5bb6ea96460 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/btrfs/extent_map.c +59 -24

83 lines not on this page · raw message

fs/btrfs/file.c +8 -1
index 6542ee00bf39..088ef0b4d56b 100644

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

fs/fuse/dev.c +6 -0
index 27ccae63495d..9ce6d1c6cac1 100644

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

fs/fuse/file.c +11 -2
index 7d92a5479998..d63e56fd3dd2 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 b08dbe96bc57..6a6e75884133 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 0c28e5fa3407..d7310fcf3888 100644

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

include/asm-generic/vmlinux.lds.h +1 -1
index 54504013c749..337d3336e175 100644

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

include/linux/blkdev.h +4 -3
index 495813277597..315899779af1 100644

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

include/linux/compiler-gcc.h +0 -12
index d0ed9583743f..c9b58188ec61 100644

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

include/linux/compiler.h +8 -31
index 7af999a131cb..d004f9b5528d 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/net_namespace.h +11 -0
index 44be742cf4d6..47181fd749b2 100644

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

include/net/sock.h +1 -0
index 691ca7695d1d..d3efb581c2ff 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 b13dc275ef4a..851841336ee6 100644

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

io_uring/net.c +3 -1
index b01bf900e3b9..96af3408792b 100644

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

kernel/events/core.c +20 -11
index e9f698c08dc1..0e6e16eb2d10 100644

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

kernel/events/uprobes.c +12 -3
index 7f1a95b4f14d..3c34761c9ae7 100644

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

kernel/sched/core.c +1 -1
index aeba4e920102..86cb6db08168 100644

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

kernel/sched/ext.c +7 -4
index c1dec2453af4..5ccd46124ff0 100644

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

kernel/trace/ftrace.c +12 -15
index b1861a57e2b0..14d6c8e542f1 100644

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

kernel/trace/trace_events_hist.c +15 -15
index 9c058aa8baf3..89e5bcb91562 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/core/gro.c +1 -0
index 78b320b63174..0ad549b07e03 100644

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

net/core/net_namespace.c +4 -4
index b5cd3ae4f04c..b71aa96eeee2 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 f251a99f8d42..bed75273f8c4 100644

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

net/core/sock.c +22 -5
index be84885f9290..9d5dd99cc581 100644

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

net/core/sysctl_net_core.c +2 -1
index ad2741f1346a..c7769ee0d9c5 100644

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

net/ipv4/tcp.c +10 -16
index 0d704bda6c41..d74281eca14f 100644

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

net/ipv4/tcp_minisocks.c +4 -6
index 7121d8573928..789e495d3bd6 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 cc7db93e745c..2b1982fe1632 100644

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

net/mptcp/subflow.c +2 -18
index fd021cf8286e..9f18217dddc8 100644

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

net/netlink/af_netlink.c +0 -10
index f4e7b5e4bb59..e88a1ac160bc 100644

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

net/rds/tcp.c +2 -6
index 0581c53e6517..3cc2f303bf78 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/smc/af_smc.c +1 -4
index ebc41a7b13db..ba834cefb177 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/svcsock.c +1 -4
index cb3bd12f5818..72e5a01df3d3 100644

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

net/sunrpc/xprtsock.c +11 -7
index c60936d8cef7..83cc095846d3 100644

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

security/integrity/ima/ima.h +3 -0
index c0d3b716d11f..1799ea6b1d58 100644

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

security/integrity/ima/ima_main.c +5 -2
index 9b87556b03a7..b028c501949c 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 d4ee5bb7c486..903578466905 100644

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

sound/pci/hda/patch_realtek.c +1 -1
index ffe3de617d5d..0ffb7fa1b883 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 c101134e8532..ca6c03a8766d 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 50ecc5f51100..dac5d4ddacd6 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 38303da957ee..8a518905a9f9 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

Greg Kroah-Hartman wrote on 07/03/2025 18:52:

Quoted 4 lines

I'm announcing the release of the 6.13.6 kernel.

All users of the 6.13 kernel series must upgrade.

Thank you all for the new stable kernel. Unfortunately, the following messages appear in dmesg on my system:

[    0.000000] microcode: You should not be seeing this. Please send the
following couple of lines to x86-<at>-kernel.org
[    0.000000] microcode: CPUID(1).EAX: 0xa50f00, current revision: 0xa500011
[    0.000000] Linux version 6.13.6 (root@uruz) (gcc (Debian 14.2.0-17) 14.2.0,
GNU ld (GNU Binutils for Debian) 2.44) #1 SMP Fri Mar  7 19:40:58 CET 2025
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz root=PARTUUID=cb5df131-01

random.trust_cpu=on amd_pstate=active spec_rstack_overflow=off

...

[    0.295153] smpboot: CPU0: AMD Ryzen 7 5700G with Radeon Graphics (family:
0x19, model: 0x50, stepping: 0x0)
[    0.295308] Performance Events: Fam17h+ core perfctr, AMD PMU driver.
[    0.295386] ... version:                0
[    0.295442] ... bit width:              48
[    0.295499] ... generic registers:      6
[    0.295555] ... value mask:             0000ffffffffffff
[    0.295617] ... max period:             00007fffffffffff
[    0.295678] ... fixed-purpose events:   0
[    0.295735] ... event mask:             000000000000003f
[    0.295838] signal: max sigframe size: 2976
[    0.295921] rcu: Hierarchical SRCU implementation.
[    0.295981] rcu: 	Max phase no-delay instances is 1000.
[    0.296062] Timer migration: 2 hierarchy levels; 8 children per group; 2
crossnode level
[    0.296192] smp: Bringing up secondary CPUs ...
[    0.296286] smpboot: x86: Booting SMP configuration:
[    0.296346] .... node  #0, CPUs:        #1  #2  #3  #4
[    0.015631] microcode: You should not be seeing this. Please send the
following couple of lines to x86-<at>-kernel.org
[    0.015631] microcode: CPUID(1).EAX: 0xa50f00, current revision: 0xa500011
[    0.015631] microcode: You should not be seeing this. Please send the
following couple of lines to x86-<at>-kernel.org
[    0.015631] microcode: CPUID(1).EAX: 0xa50f00, current revision: 0xa500011
[    0.015631] microcode: You should not be seeing this. Please send the
following couple of lines to x86-<at>-kernel.org
[    0.015631] microcode: CPUID(1).EAX: 0xa50f00, current revision: 0xa500011
[    0.015631] microcode: You should not be seeing this. Please send the
following couple of lines to x86-<at>-kernel.org
[    0.015631] microcode: CPUID(1).EAX: 0xa50f00, current revision: 0xa500011
[    0.296783]   #5
[    0.015631] microcode: You should not be seeing this. Please send the
following couple of lines to x86-<at>-kernel.org
[    0.015631] microcode: CPUID(1).EAX: 0xa50f00, current revision: 0xa500011
[    0.296817]   #6
[    0.015631] microcode: You should not be seeing this. Please send the
following couple of lines to x86-<at>-kernel.org
[    0.015631] microcode: CPUID(1).EAX: 0xa50f00, current revision: 0xa500011
[    0.296817]   #7
[    0.015631] microcode: You should not be seeing this. Please send the
following couple of lines to x86-<at>-kernel.org
[    0.015631] microcode: CPUID(1).EAX: 0xa50f00, current revision: 0xa500011
[    0.310182]   #8
[    0.015631] microcode: You should not be seeing this. Please send the
following couple of lines to x86-<at>-kernel.org
[    0.015631] microcode: CPUID(1).EAX: 0xa50f00, current revision: 0xa500011
[    0.310682]   #9
[    0.015631] microcode: You should not be seeing this. Please send the
following couple of lines to x86-<at>-kernel.org
[    0.015631] microcode: CPUID(1).EAX: 0xa50f00, current revision: 0xa500011
[    0.310978]  #10
[    0.015631] microcode: You should not be seeing this. Please send the
following couple of lines to x86-<at>-kernel.org
[    0.015631] microcode: CPUID(1).EAX: 0xa50f00, current revision: 0xa500011
[    0.311265]  #11
[    0.015631] microcode: You should not be seeing this. Please send the
following couple of lines to x86-<at>-kernel.org
[    0.015631] microcode: CPUID(1).EAX: 0xa50f00, current revision: 0xa500011
[    0.311553]  #12
[    0.015631] microcode: You should not be seeing this. Please send the
following couple of lines to x86-<at>-kernel.org
[    0.015631] microcode: CPUID(1).EAX: 0xa50f00, current revision: 0xa500011
[    0.311842]  #13
[    0.015631] microcode: You should not be seeing this. Please send the
following couple of lines to x86-<at>-kernel.org
[    0.015631] microcode: CPUID(1).EAX: 0xa50f00, current revision: 0xa500011
[    0.312134]  #14
[    0.015631] microcode: You should not be seeing this. Please send the
following couple of lines to x86-<at>-kernel.org
[    0.015631] microcode: CPUID(1).EAX: 0xa50f00, current revision: 0xa500011
[    0.312424]  #15
[    0.015631] microcode: You should not be seeing this. Please send the
following couple of lines to x86-<at>-kernel.org
[    0.015631] microcode: CPUID(1).EAX: 0xa50f00, current revision: 0xa500011
[    0.313521] Spectre V2 : Update user space SMT mitigation: STIBP always-on
[    0.328817] smp: Brought up 1 node, 16 CPUs
[    0.330152] smpboot: Total of 16 processors activated (121422.53 BogoMIPS)
[    0.331117] Memory: 61612104K/62798720K available (10240K kernel code, 922K

rwdata, 2264K rodata, 1248K init, 1564K bss, 1173300K reserved, 0K cma-reserved)

Before this, I used stable kernel 6.13.4 which didn't show these lines.

Regards,
Jörg.

#3 lore raw
Quoted 3 lines · Jörg-Volker Peetz
[    0.000000] microcode: You should not be seeing this. Please send the
following couple of lines to x86-<at>-kernel.org
[    0.000000] microcode: CPUID(1).EAX: 0xa50f00, current revision: 0xa500011

This should fix it:

https://lore.kernel.org/r/[email protected]

Thx.

Signature · 4 lines
Regards/Gruss,
    Boris.

https://people.kernel.org/tglx/notes-about-netiquette
author maintainer
#4 lore raw
Quoted 8 lines · Borislav Petkov
Quoted 3 lines · Jörg-Volker Peetz
[    0.000000] microcode: You should not be seeing this. Please send the
following couple of lines to x86-<at>-kernel.org
[    0.000000] microcode: CPUID(1).EAX: 0xa50f00, current revision: 0xa500011

This should fix it:

https://lore.kernel.org/r/[email protected]

Now queued up.