Linux 6.12.18
Subsystems (2)
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.12.18 kernel.
All users of the 6.12 kernel series must upgrade.
The updated 6.12.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.12.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Makefile | 2 arch/arm64/include/asm/kvm_host.h | 2 arch/arm64/kvm/arm.c | 22 arch/arm64/kvm/vmid.c | 11 arch/arm64/mm/init.c | 7 arch/riscv/include/asm/futex.h | 2 arch/riscv/kernel/cacheinfo.c | 12 arch/riscv/kernel/cpufeature.c | 2 arch/riscv/kernel/setup.c | 2 arch/riscv/kernel/signal.c | 6 arch/riscv/kvm/vcpu_sbi_hsm.c | 11 arch/riscv/kvm/vcpu_sbi_replace.c | 15 arch/x86/Kconfig | 1 arch/x86/events/core.c | 2 arch/x86/kernel/cpu/cyrix.c | 4 arch/x86/kernel/cpu/microcode/amd.c | 283 +++++-- arch/x86/kernel/cpu/microcode/amd_shas.c | 444 ++++++++++++ arch/x86/kernel/cpu/microcode/internal.h | 2 block/blk-zoned.c | 76 +- drivers/firmware/cirrus/cs_dsp.c | 24 drivers/firmware/efi/mokvar-table.c | 42 - drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 7 drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 2 drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v10.c | 6 drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v11.c | 5 drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v12.c | 5 drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c | 5 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 69 + drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.c | 14 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_psr.c | 3 drivers/gpu/drm/amd/pm/legacy-dpm/kv_dpm.c | 25 drivers/gpu/drm/amd/pm/legacy-dpm/legacy_dpm.c | 8 drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c | 26 drivers/gpu/drm/xe/regs/xe_engine_regs.h | 1 drivers/gpu/drm/xe/xe_oa.c | 657 ++++++++++-------- drivers/gpu/drm/xe/xe_oa_types.h | 6 drivers/gpu/drm/xe/xe_vm.c | 40 - drivers/i2c/busses/i2c-ls2x.c | 16 drivers/i2c/busses/i2c-npcm7xx.c | 7 drivers/idle/intel_idle.c | 4 drivers/infiniband/hw/bnxt_re/bnxt_re.h | 18 drivers/infiniband/hw/bnxt_re/hw_counters.c | 4 drivers/infiniband/hw/bnxt_re/ib_verbs.c | 46 - drivers/infiniband/hw/bnxt_re/main.c | 153 ++-- drivers/infiniband/hw/bnxt_re/qplib_res.c | 7 drivers/infiniband/hw/bnxt_re/qplib_res.h | 12 drivers/infiniband/hw/bnxt_re/qplib_sp.c | 4 drivers/infiniband/hw/bnxt_re/qplib_sp.h | 3 drivers/infiniband/hw/hns/hns_roce_hw_v2.c | 64 + drivers/infiniband/hw/hns/hns_roce_hw_v2.h | 2 drivers/infiniband/hw/mana/main.c | 2 drivers/infiniband/hw/mlx5/ah.c | 3 drivers/infiniband/hw/mlx5/counters.c | 8 drivers/infiniband/hw/mlx5/mr.c | 16 drivers/infiniband/hw/mlx5/odp.c | 1 drivers/infiniband/hw/mlx5/qp.c | 10 drivers/infiniband/hw/mlx5/qp.h | 1 drivers/infiniband/hw/mlx5/umr.c | 83 +- drivers/iommu/intel/dmar.c | 1 drivers/iommu/intel/iommu.c | 10 drivers/md/dm-integrity.c | 8 drivers/md/dm-vdo/dedupe.c | 1 drivers/net/dsa/realtek/Kconfig | 6 drivers/net/dsa/realtek/Makefile | 3 drivers/net/dsa/realtek/rtl8366rb-leds.c | 177 ++++ drivers/net/dsa/realtek/rtl8366rb.c | 258 ------- drivers/net/dsa/realtek/rtl8366rb.h | 107 ++ drivers/net/ethernet/cadence/macb.h | 2 drivers/net/ethernet/cadence/macb_main.c | 12 drivers/net/ethernet/freescale/enetc/enetc.c | 103 ++ drivers/net/ethernet/freescale/enetc/enetc_ethtool.c | 7 drivers/net/ethernet/intel/ice/ice.h | 1 drivers/net/ethernet/intel/ice/ice_eswitch.c | 3 drivers/net/ethernet/intel/ice/ice_hw_autogen.h | 3 drivers/net/ethernet/intel/ice/ice_lib.c | 3 drivers/net/ethernet/intel/ice/ice_main.c | 24 drivers/net/ethernet/intel/ice/ice_sriov.c | 4 drivers/net/ethernet/intel/ice/ice_vf_lib.c | 34 drivers/net/ethernet/intel/ice/ice_vf_lib_private.h | 1 drivers/net/ethernet/intel/ice/ice_vf_mbx.c | 32 drivers/net/ethernet/intel/ice/ice_vf_mbx.h | 9 drivers/net/ethernet/intel/ice/ice_virtchnl.c | 8 drivers/net/ethernet/intel/idpf/idpf_txrx.c | 3 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c | 2 drivers/net/ethernet/mellanox/mlx5/core/pci_irq.c | 2 drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c | 14 drivers/net/ethernet/ti/Kconfig | 1 drivers/net/ethernet/ti/icssg/icss_iep.c | 21 drivers/net/ipvlan/ipvlan_core.c | 22 drivers/net/loopback.c | 14 drivers/net/phy/qcom/qca807x.c | 2 drivers/net/usb/gl620a.c | 4 drivers/phy/rockchip/Kconfig | 1 drivers/phy/rockchip/phy-rockchip-naneng-combphy.c | 5 drivers/phy/samsung/phy-exynos5-usbdrd.c | 25 drivers/phy/tegra/xusb-tegra186.c | 11 drivers/scsi/scsi_lib.c | 14 drivers/thermal/gov_bang_bang.c | 11 drivers/thermal/gov_fair_share.c | 16 drivers/thermal/gov_power_allocator.c | 71 + drivers/thermal/gov_step_wise.c | 16 drivers/thermal/thermal_core.c | 33 drivers/thermal/thermal_core.h | 5 drivers/thermal/thermal_helpers.c | 5 drivers/thermal/thermal_of.c | 53 - drivers/ufs/core/ufs_bsg.c | 6 drivers/ufs/core/ufshcd.c | 38 - fs/afs/server.c | 3 fs/afs/server_list.c | 4 fs/nfs/delegation.c | 37 + fs/nfs/delegation.h | 1 fs/nfs/direct.c | 23 fs/nfs/nfs4proc.c | 3 fs/overlayfs/copy_up.c | 2 include/asm-generic/vmlinux.lds.h | 2 include/linux/blkdev.h | 7 include/linux/compiler-gcc.h | 12 include/linux/compiler.h | 39 - include/linux/rcuref.h | 9 include/linux/socket.h | 2 include/linux/sunrpc/sched.h | 3 include/net/ip.h | 5 include/net/route.h | 5 include/sound/cs35l56.h | 31 include/trace/events/afs.h | 2 include/trace/events/sunrpc.h | 3 io_uring/net.c | 4 kernel/events/core.c | 31 kernel/events/uprobes.c | 5 kernel/sched/core.c | 2 kernel/sched/ext.c | 11 kernel/trace/ftrace.c | 27 kernel/trace/trace_events_hist.c | 30 lib/rcuref.c | 5 net/bluetooth/l2cap_core.c | 9 net/bridge/br_netfilter_hooks.c | 8 net/core/gro.c | 1 net/core/scm.c | 10 net/core/skbuff.c | 2 net/core/sysctl_net_core.c | 3 net/ipv4/icmp.c | 19 net/ipv4/ip_options.c | 3 net/ipv4/tcp.c | 26 net/ipv4/tcp_minisocks.c | 10 net/ipv6/ip6_tunnel.c | 4 net/ipv6/rpl_iptunnel.c | 14 net/ipv6/seg6_iptunnel.c | 14 net/mptcp/pm_netlink.c | 5 net/mptcp/subflow.c | 15 net/rxrpc/rxperf.c | 12 net/sunrpc/cache.c | 10 net/sunrpc/sched.c | 2 net/sunrpc/xprtsock.c | 10 security/integrity/ima/ima.h | 3 security/integrity/ima/ima_main.c | 7 security/landlock/net.c | 3 sound/pci/hda/cs35l56_hda_spi.c | 3 sound/pci/hda/patch_realtek.c | 2 sound/soc/codecs/cs35l56-shared.c | 80 ++ sound/soc/codecs/cs35l56-spi.c | 3 sound/soc/codecs/es8328.c | 15 sound/soc/fsl/fsl_sai.c | 6 sound/soc/fsl/imx-audmix.c | 4 sound/usb/midi.c | 2 sound/usb/quirks.c | 1 tools/objtool/check.c | 50 - tools/objtool/include/objtool/special.h | 2 tools/testing/selftests/drivers/net/queues.py | 7 tools/testing/selftests/landlock/common.h | 1 tools/testing/selftests/landlock/config | 2 tools/testing/selftests/landlock/net_test.c | 124 +++ tools/testing/selftests/rseq/rseq-riscv-bits.h | 6 tools/testing/selftests/rseq/rseq-riscv.h | 2 173 files changed, 2929 insertions(+), 1406 deletions(-)
Adrien Vergé (1):
ALSA: hda/realtek: Fix microphone regression on ASUS N705UD
Alex Deucher (1):
drm/amdgpu: disable BAR resize on Dell G5 SE
Andreas Schwab (1):
riscv/futex: sign extend compare value in atomic cmpxchg
Andrew Jones (4):
riscv: KVM: Fix hart suspend status check
riscv: KVM: Fix hart suspend_type use
riscv: KVM: Fix SBI IPI error generation
riscv: KVM: Fix SBI TIME error generation
André Draszik (1):
phy: exynos5-usbdrd: gs101: ensure power is gated to SS phy in phy_exit()
Ard Biesheuvel (2):
objtool: Fix C jump table annotations for Clang vmlinux.lds: Ensure that const vars with relocations are mapped R/O
Arnd Bergmann (2):
sunrpc: suppress warnings for unused procfs functions
phy: rockchip: fix Kconfig dependency more
Arthur Simchaev (1):
scsi: ufs: core: bsg: Fix crash when arpmb command fails
Ashutosh Dixit (4):
drm/xe/oa: Signal output fences
drm/xe/oa: Move functions up so they can be reused for config ioctl drm/xe/oa: Add syncs support to OA config ioctl drm/xe/oa: Allow only certain property changes from config
BH Hsieh (1):
phy: tegra: xusb: reset VBUS & ID OVERRIDE
Bart Van Assche (1):
scsi: ufs: core: Fix ufshcd_is_ufs_dev_busy() and ufshcd_eh_timed_out()
Benjamin Coddington (1):
SUNRPC: Handle -ETIMEDOUT return from tlshd
Binbin Zhou (1):
i2c: ls2x: Fix frequency division register access
Borislav Petkov (AMD) (7):
x86/microcode/AMD: Have __apply_microcode_amd() return bool x86/microcode/AMD: Remove ugly linebreak in __verify_patch_section() signature x86/microcode/AMD: Remove unused save_microcode_in_initrd_amd() declarations x86/microcode/AMD: Merge early_apply_microcode() into its single callsite x86/microcode/AMD: Get rid of the _load_microcode_amd() forward declaration x86/microcode/AMD: Add get_patch_level()
x86/microcode/AMD: Load only SHA256-checksummed patches
Breno Leitao (1):
perf/core: Add RCU read lock protection to perf_iterate_ctx()
Chancel Liu (1):
ASoC: fsl: Rename stream name of SAI DAI driver
Chukun Pan (1):
phy: rockchip: naneng-combphy: compatible reset with old DT
Clément Léger (1):
riscv: cpufeature: use bitmap_equal() instead of memcmp()
Damien Le Moal (1):
block: Remove zone write plugs when handling native zone append writes
David Howells (3):
rxrpc: rxperf: Fix missing decoding of terminal magic cookie
afs: Fix the server_list to unuse a displaced server rather than putting it
afs: Give an afs_server object a ref on the afs_cell object it points to
David Yat Sin (1):
drm/amdkfd: Preserve cp_hqd_pq_control on update_mqd
Dmitry Panchenko (1):
ALSA: usb-audio: Re-add sample rate quirk for Pioneer DJM-900NXS2
Eric Dumazet (2):
ipvlan: ensure network headers are in skb linear part
idpf: fix checksums set in idpf_rx_rsc()
George Moussalem (1):
net: phy: qcom: qca807x fix condition for DAC_DSP_BIAS_CURRENT
Greg Kroah-Hartman (1):
Linux 6.12.18
Guillaume Nault (3):
ipv4: Convert icmp_route_lookup() to dscp_t.
ipv4: Convert ip_route_input() to dscp_t.
ipvlan: Prepare ipvlan_process_v4_outbound() to future .flowi4_tos conversion.
Harshal Chaudhari (1):
net: mvpp2: cls: Fixed Non IP flow, with vlan tag flow defination.
Ido Schimmel (1):
net: loopback: Avoid sending IP packets without an Ethernet header
Jerry Snitselaar (1):
iommu/vt-d: Remove device comparison in context_setup_pass_through_cb
Jiri Slaby (SUSE) (1):
net: set the minimum for net_hotdata.netdev_budget_usecs
Joe Damato (1):
selftests: drv-net: Check if combined-count exists
Junxian Huang (1):
RDMA/hns: Fix mbox timing out by adding retry mechanism
Justin Iurman (2):
net: ipv6: fix dst ref loop on input in seg6 lwt
net: ipv6: fix dst ref loop on input in rpl lwt
Kalesh AP (5):
RDMA/bnxt_re: Fail probe early when not enough MSI-x vectors are reserved RDMA/bnxt_re: Refactor NQ allocation
RDMA/bnxt_re: Cache MSIx info to a local structure RDMA/bnxt_re: Add sanity checks on rdev validity RDMA/bnxt_re: Allocate dev_attr information dynamically
Kan Liang (2):
perf/x86: Fix low freqency setting issue perf/core: Fix low freq setting via IOC_PERIOD
Kashyap Desai (1):
RDMA/bnxt_re: Fix the page details for the srq created by kernel consumers
Kaustabh Chakraborty (1):
phy: exynos5-usbdrd: fix MPLL_MULTIPLIER and SSC_REFCLKSEL masks in refclk
Ken Raeburn (1):
dm vdo: add missing spin_lock_init
Konstantin Taranov (1):
RDMA/mana_ib: Allocate PAGE aligned doorbell index
Krzysztof Kozlowski (1):
thermal: of: Simplify thermal_of_should_bind with scoped for each OF child
Linus Walleij (1):
net: dsa: rtl8366rb: Fix compilation problem
Lu Baolu (1):
iommu/vt-d: Fix suspicious RCU usage
Luiz Augusto von Dentz (1):
Bluetooth: L2CAP: Fix L2CAP_ECRED_CONN_RSP response
Luo Gengkun (1):
perf/core: Order the PMU list to fix warning about unordered pmu_ctx_list
Manivannan Sadhasivam (1):
scsi: ufs: core: Set default runtime/system PM levels before ufshcd_hba_init()
Marcin Szycik (2):
ice: Fix deinitializing VF in error path
ice: Avoid setting default Rx VSI twice in switchdev setup
Mark Zhang (1):
IB/mlx5: Set and get correct qp_num for a DCT QP
Matthew Auld (2):
drm/xe/userptr: restore invalidation list on error drm/xe/userptr: fix EFAULT handling
Matthieu Baerts (NGI0) (1):
mptcp: reset when MPTCP opts are dropped after join
Meghana Malladi (1):
net: ti: icss-iep: Reject perout generation request
Mikhail Ivanov (3):
landlock: Fix non-TCP sockets restriction selftests/landlock: Test that MPTCP actions are not restricted selftests/landlock: Test TCP accesses with protocol=IPPROTO_TCP
Milan Broz (1):
dm-integrity: Avoid divide by zero in table status in Inline mode
Mingcong Bai (1):
drm/xe/regs: remove a duplicate definition for RING_CTL_SIZE(size)
Mohammad Heib (1):
net: Clear old fragment checksum value in napi_reuse_skb
Nicolas Frattaroli (1):
ASoC: es8328: fix route from DAC to output
Nikita Zhandarovich (1):
usbnet: gl620a: fix endpoint checking in genelink_bind()
Nikolay Borisov (1):
x86/microcode/AMD: Return bool from find_blobs_in_containers()
Nikolay Kuratov (1):
ftrace: Avoid potential division by zero in function_stat_show()
Oliver Upton (1):
KVM: arm64: Ensure a VMID is allocated before programming VTTBR_EL2
Paolo Abeni (1):
mptcp: always handle address removal under msk socket lock
Patrisious Haddad (2):
RDMA/mlx5: Fix AH static rate parsing
RDMA/mlx5: Fix bind QP error cleanup flow
Paul Greenwalt (1):
ice: add E830 HW VF mailbox message limit support
Pavel Begunkov (1):
io_uring/net: save msg_control for compat
Peter Jones (1):
efi: Don't map the entire mokvar table to determine its size
Peter Zijlstra (2):
unreachable: Unify
objtool: Remove annotate_{,un}reachable()
Philo Lu (1):
ipvs: Always clear ipvs_property flag in skb_scrub_packet()
Pierre-Eric Pelloux-Prayer (1):
drm/amdgpu: init return value in amdgpu_ttm_clear_buffer
Qunqin Zhao (1):
net: stmmac: dwmac-loongson: Add fix_soc_reset() callback
Rafael J. Wysocki (3):
thermal/of: Fix cdev lookup in thermal_of_should_bind()
thermal: core: Move lists of thermal instances to trip descriptors
thermal: gov_power_allocator: Add missing NULL pointer check
Richard Fitzgerald (2):
firmware: cs_dsp: Remove async regmap writes
ASoC: cs35l56: Prevent races when soft-resetting using SPI control
Rob Herring (1):
riscv: cacheinfo: Use of_property_present() for non-boolean properties
Roberto Sassu (1):
ima: Reset IMA_NONACTION_RULE_FLAGS after post_setattr
Roman Li (1):
drm/amd/display: Fix HPD after gpu reset
Russell Senior (1):
x86/CPU: Fix warm boot hang regression on AMD SC1100 SoC systems
Ryan Roberts (1):
arm64/mm: Fix Boot panic on Ampere Altra
Sascha Hauer (1):
net: ethernet: ti: am65-cpsw: select PAGE_POOL
Sean Anderson (1):
net: cadence: macb: Synchronize stats calculations
Selvin Xavier (1):
RDMA/bnxt_re: Fix the statistics for Gen P7 VF
Shay Drory (1):
net/mlx5: IRQ, Fix null string in debug print
Stafford Horne (1):
rseq/selftests: Fix riscv rseq_offset_deref_addv inline asm
Stanislav Fomichev (1):
tcp: devmem: don't write truncated dmabuf CMSGs to userspace
Steven Rostedt (1):
tracing: Fix bad hist from corrupting named_triggers list
Takashi Iwai (2):
ALSA: usb-audio: Avoid dropping MIDI events at closing multiple ports
ALSA: hda/realtek: Fix wrong mic setup for ASUS VivoBook 15
Tejun Heo (1):
sched_ext: Fix pick_task_scx() picking non-queued tasks when it's called without balance()
Thomas Gleixner (3):
intel_idle: Handle older CPUs, which stop the TSC in deeper C states, correctly
rcuref: Plug slowpath race in rcuref_put()
sched/core: Prevent rescheduling when interrupts are disabled
Tom Chung (1):
drm/amd/display: Disable PSR-SU on eDP panels
Tong Tiangen (1):
uprobes: Reject the shared zeropage in uprobe_write_opcode()
Trond Myklebust (4):
NFS: O_DIRECT writes must check and adjust the file length
NFS: Adjust delegated timestamps for O_DIRECT reads and writes
SUNRPC: Prevent looping due to rpc_signal_task() races
NFSv4: Fix a deadlock when recovering state on a sillyrenamed file
Tyrone Ting (1):
i2c: npcm: disable interrupt enable bit before devm_request_irq
Umesh Nerlige Ramappa (1):
drm/xe/oa: Allow oa_exponent value of 0
Vasiliy Kovalev (1):
ovl: fix UAF in ovl_dentry_update_reval by moving dput() in ovl_link_up
Wang Hai (1):
tcp: Defer ts_recent changes until req is owned
Wei Fang (6):
net: enetc: fix the off-by-one issue in enetc_map_tx_buffs()
net: enetc: keep track of correct Tx BD count in enetc_map_tx_tso_buffs()
net: enetc: VFs do not support HWTSTAMP_TX_ONESTEP_SYNC
net: enetc: update UDP checksum when updating originTimestamp field
net: enetc: correct the xdp_tx statistics
net: enetc: fix the off-by-one issue in enetc_map_tx_tso_buffs()
Ye Bin (1):
scsi: core: Clear driver private data when retrying request
Yilin Chen (1):
drm/amd/display: add a quirk to enable eDP0 on DP1
Yishai Hadas (4):
RDMA/mlx5: Fix the recovery flow of the UMR QP RDMA/mlx5: Fix a race for DMABUF MR which can lead to CQE with error RDMA/mlx5: Fix a WARN during dereg_mr for DM type RDMA/mlx5: Fix implicit ODP hang on parent deregistration
Yong-Xuan Wang (2):
riscv: signal: fix signal frame size
riscv: signal: fix signal_minsigstksz
Yu-Che Cheng (2):
thermal: gov_power_allocator: Fix incorrect calculation in divvy_up_power()
thermal: gov_power_allocator: Update total_weight on bind and cdev updates
chr[] (1):
amdgpu/pm/legacy: fix suspend/resume issues
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 12 -SUBLEVEL = 17 +SUBLEVEL = 18 EXTRAVERSION = NAME = Baby Opossum Posse
arch/arm64/include/asm/kvm_host.h +1 -1
@@ -1243,7 +1243,7 @@ int kvm_arm_pvtime_has_attr(struct kvm_vcpu *vcpu,extern unsigned int __ro_after_init kvm_arm_vmid_bits;int __init kvm_arm_vmid_alloc_init (void );void __init kvm_arm_vmid_alloc_free (void ); -bool kvm_arm_vmid_update (struct kvm_vmid *kvm_vmid); +void kvm_arm_vmid_update (struct kvm_vmid *kvm_vmid);void kvm_arm_vmid_clear_active (void );static inline void kvm_arm_pvtime_vcpu_init (struct kvm_vcpu_arch *vcpu_arch)
arch/arm64/kvm/arm.c +10 -12
@@ -580,6 +580,16 @@ void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu) mmu = vcpu->arch.hw_mmu; last_ran =this_cpu_ptr (mmu->last_vcpu_ran); +/* +* Ensure a VMID is allocated for the MMU before programming VTTBR_EL2, +* which happens eagerly in VHE. +* +* Also, the VMID allocator only preserves VMIDs that are active at the +* time of rollover, so KVM might need to grab a new VMID for the MMU if +* this is called from kvm_sched_in(). +*/ +kvm_arm_vmid_update (&mmu->vmid); +/* * We guarantee that both TLBs and I-cache are private to each * vcpu. If detecting that a vcpu from the same VM has
@@ -1155,18 +1165,6 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu)*/ preempt_disable (); -/* -* The VMID allocator only tracks active VMIDs per -* physical CPU, and therefore the VMID allocated may not be -* preserved on VMID roll-over if the task was preempted, -* making a thread's VMID inactive. So we need to call -* kvm_arm_vmid_update() in non-premptible context. -*/ -if (kvm_arm_vmid_update (&vcpu->arch.hw_mmu->vmid) && -has_vhe ()) -__load_stage2 (vcpu->arch.hw_mmu, - vcpu->arch.hw_mmu->arch); -kvm_pmu_flush_hwstate (vcpu);local_irq_disable ();
arch/arm64/kvm/vmid.c +3 -8
@@ -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
@@ -278,12 +278,7 @@ void __init arm64_memblock_init(void)if (IS_ENABLED (CONFIG_RANDOMIZE_BASE )) {extern u16 memstart_offset_seed; - -/* -* Use the sanitised version of id_aa64mmfr0_el1 so that linear -* map randomization can be enabled by shrinking the IPA space. -*/ -u64 mmfr0 =read_sanitised_ftr_reg (SYS_ID_AA64MMFR0_EL1 ); +u64 mmfr0 =read_cpuid (ID_AA64MMFR0_EL1 );int parange =cpuid_feature_extract_unsigned_field ( mmfr0,ID_AA64MMFR0_EL1_PARANGE_SHIFT ); s64 range = linear_region_size -
arch/riscv/include/asm/futex.h +1 -1
@@ -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
@@ -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
@@ -454,7 +454,7 @@ static void __init riscv_resolve_isa(unsigned long *source_isa,if (bit <RISCV_ISA_EXT_BASE ) *this_hwcap |= isa2hwcap[bit]; } - }while (loop &&memcmp (prev_resolved_isa, resolved_isa,sizeof (prev_resolved_isa))); + }while (loop && !bitmap_equal (prev_resolved_isa, resolved_isa,RISCV_ISA_EXT_MAX )); }static void __init match_isa_ext (const char *name,const char *name_end,unsigned long *bitmap)
arch/riscv/kernel/setup.c +1 -1
@@ -288,8 +288,8 @@ void __init setup_arch(char **cmdline_p)riscv_init_cbo_blocksizes ();riscv_fill_hwcap (); -init_rt_signal_env ();apply_boot_alternatives (); +init_rt_signal_env ();if (IS_ENABLED (CONFIG_RISCV_ISA_ZICBOM ) &&riscv_isa_extension_available (NULL ,ZICBOM ))
arch/riscv/kernel/signal.c +0 -6
@@ -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
@@ -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
@@ -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
@@ -1333,6 +1333,7 @@ config X86_REBOOTFIXUPS config MICROCODE def_bool y depends on CPU_SUP_AMD || CPU_SUP_INTEL + select CRYPTO_LIB_SHA256 if CPU_SUP_AMD config MICROCODE_INITRD32 def_bool y
arch/x86/events/core.c +1 -1
@@ -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
@@ -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
@@ -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
@@ -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 *firmwarecs_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 *firmwarecs_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
@@ -1542,6 +1542,13 @@ int amdgpu_device_resize_fb_bar(struct amdgpu_device *adev)if (amdgpu_sriov_vf (adev))return 0 ; +/* resizing on Dell G5 SE platforms causes problems with runtime pm */ +if ((amdgpu_runtime_pm !=0 ) && + adev->pdev->vendor ==PCI_VENDOR_ID_ATI && + adev->pdev->device ==0x731f && + adev->pdev->subsystem_vendor ==PCI_VENDOR_ID_DELL ) +return 0 ; +/* PCI_EXT_CAP_ID_VNDR extended capability is located at 0x100 */ if (!pci_find_ext_capability (adev->pdev,PCI_EXT_CAP_ID_VNDR ))DRM_WARN ("System can't access extended configuration space, please check!!\n" );
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +1 -1
@@ -2280,7 +2280,7 @@ int amdgpu_ttm_clear_buffer(struct amdgpu_bo *bo,struct amdgpu_ring *ring = adev->mman.buffer_funcs_ring;struct amdgpu_res_cursor cursor;u64 addr; -int r; +int r =0 ;if (!adev->mman.buffer_funcs_enabled)return -EINVAL ;
drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v10.c +4 -2
@@ -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
@@ -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
@@ -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
@@ -182,6 +182,9 @@ static void init_mqd(struct mqd_manager *mm, void **mqd, m->cp_hqd_persistent_state =CP_HQD_PERSISTENT_STATE__PRELOAD_REQ_MASK |0x53 <<CP_HQD_PERSISTENT_STATE__PRELOAD_SIZE__SHIFT ; + m->cp_hqd_pq_control =5 <<CP_HQD_PQ_CONTROL__RPTR_BLOCK_SIZE__SHIFT ; + m->cp_hqd_pq_control |=CP_HQD_PQ_CONTROL__UNORD_DISPATCH_MASK ; + m->cp_mqd_control =1 <<CP_MQD_CONTROL__PRIV_STATE__SHIFT ; m->cp_mqd_base_addr_lo =lower_32_bits (addr);
@@ -244,7 +247,7 @@ static void update_mqd(struct mqd_manager *mm, void *mqd, m =get_mqd (mqd); - m->cp_hqd_pq_control =5 <<CP_HQD_PQ_CONTROL__RPTR_BLOCK_SIZE__SHIFT ; + m->cp_hqd_pq_control &= ~CP_HQD_PQ_CONTROL__QUEUE_SIZE_MASK ; m->cp_hqd_pq_control |=order_base_2 (q->queue_size /4 ) -1 ;pr_debug ("cp_hqd_pq_control 0x%x\n" , m->cp_hqd_pq_control);
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +62 -7
144 lines not on this page · raw message
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.c +14 -0
@@ -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
@@ -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
@@ -3043,6 +3043,7 @@ static int kv_dpm_hw_init(void *handle)if (!amdgpu_dpm)return 0 ; +mutex_lock (&adev->pm.mutex);kv_dpm_setup_asic (adev); ret =kv_dpm_enable (adev);if (ret)
@@ -3050,6 +3051,8 @@ static int kv_dpm_hw_init(void *handle)else adev->pm.dpm_enabled = true;amdgpu_legacy_dpm_compute_clocks (adev); +mutex_unlock (&adev->pm.mutex); +return ret; }
@@ -3067,32 +3070,42 @@ static int kv_dpm_suspend(void *handle) {struct amdgpu_device *adev = (struct amdgpu_device *)handle; +cancel_work_sync (&adev->pm.dpm.thermal.work); +if (adev->pm.dpm_enabled) { +mutex_lock (&adev->pm.mutex); + adev->pm.dpm_enabled = false;/* disable dpm */ kv_dpm_disable (adev);/* reset the power state */ adev->pm.dpm.current_ps = adev->pm.dpm.requested_ps = adev->pm.dpm.boot_ps; +mutex_unlock (&adev->pm.mutex); }return 0 ; }static int kv_dpm_resume (void *handle) { -int ret; +int ret =0 ;struct amdgpu_device *adev = (struct amdgpu_device *)handle; -if (adev->pm.dpm_enabled) { +if (!amdgpu_dpm) +return 0 ; + +if (!adev->pm.dpm_enabled) { +mutex_lock (&adev->pm.mutex);/* asic init will reset to the boot state */ kv_dpm_setup_asic (adev); ret =kv_dpm_enable (adev); -if (ret) +if (ret) { adev->pm.dpm_enabled = false; -else + }else { adev->pm.dpm_enabled = true; -if (adev->pm.dpm_enabled)amdgpu_legacy_dpm_compute_clocks (adev); + } +mutex_unlock (&adev->pm.mutex); } -return 0 ; +return ret; }static bool kv_dpm_is_idle (void *handle)
drivers/gpu/drm/amd/pm/legacy-dpm/legacy_dpm.c +6 -2
@@ -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
@@ -7783,6 +7783,7 @@ static int si_dpm_hw_init(void *handle)if (!amdgpu_dpm)return 0 ; +mutex_lock (&adev->pm.mutex);si_dpm_setup_asic (adev); ret =si_dpm_enable (adev);if (ret)
@@ -7790,6 +7791,7 @@ static int si_dpm_hw_init(void *handle)else adev->pm.dpm_enabled = true;amdgpu_legacy_dpm_compute_clocks (adev); +mutex_unlock (&adev->pm.mutex);return ret; }
@@ -7807,32 +7809,44 @@ static int si_dpm_suspend(void *handle) {struct amdgpu_device *adev = (struct amdgpu_device *)handle; +cancel_work_sync (&adev->pm.dpm.thermal.work); +if (adev->pm.dpm_enabled) { +mutex_lock (&adev->pm.mutex); + adev->pm.dpm_enabled = false;/* disable dpm */ si_dpm_disable (adev);/* reset the power state */ adev->pm.dpm.current_ps = adev->pm.dpm.requested_ps = adev->pm.dpm.boot_ps; +mutex_unlock (&adev->pm.mutex); } +return 0 ; }static int si_dpm_resume (void *handle) { -int ret; +int ret =0 ;struct amdgpu_device *adev = (struct amdgpu_device *)handle; -if (adev->pm.dpm_enabled) { +if (!amdgpu_dpm) +return 0 ; + +if (!adev->pm.dpm_enabled) {/* asic init will reset to the boot state */ +mutex_lock (&adev->pm.mutex);si_dpm_setup_asic (adev); ret =si_dpm_enable (adev); -if (ret) +if (ret) { adev->pm.dpm_enabled = false; -else + }else { adev->pm.dpm_enabled = true; -if (adev->pm.dpm_enabled)amdgpu_legacy_dpm_compute_clocks (adev); + } +mutex_unlock (&adev->pm.mutex); } -return 0 ; + +return ret; }static bool si_dpm_is_idle (void *handle)
drivers/gpu/drm/xe/regs/xe_engine_regs.h +0 -1
@@ -53,7 +53,6 @@#define RING_CTL (base) XE_REG((base) + 0x3c)#define RING_CTL_SIZE (size) ((size) - PAGE_SIZE)/* in bytes -> pages */ -#define RING_CTL_SIZE (size) ((size) - PAGE_SIZE)/* in bytes -> pages */ #define RING_START_UDW (base) XE_REG((base) + 0x48)
drivers/gpu/drm/xe/xe_oa.c +390 -267
778 lines not on this page · raw message
drivers/gpu/drm/xe/xe_oa_types.h +6 -0
@@ -239,6 +239,12 @@ struct xe_oa_stream {/** @no_preempt: Whether preemption and timeslicing is disabled for stream exec_q */ u32 no_preempt; +/** @xef: xe_file with which the stream was opened */ +struct xe_file *xef; + +/** @last_fence: fence to use in stream destroy when needed */ +struct dma_fence *last_fence; +/** @num_syncs: size of @syncs array */ u32 num_syncs;
drivers/gpu/drm/xe/xe_vm.c +33 -7
@@ -667,20 +667,33 @@ int xe_vm_userptr_pin(struct xe_vm *vm)/* Collect invalidated userptrs */ spin_lock (&vm->userptr.invalidated_lock); +xe_assert (vm->xe,list_empty (&vm->userptr.repin_list));list_for_each_entry_safe (uvma, next, &vm->userptr.invalidated, userptr.invalidate_link) {list_del_init (&uvma->userptr.invalidate_link); -list_move_tail (&uvma->userptr.repin_link, - &vm->userptr.repin_list); +list_add_tail (&uvma->userptr.repin_link, + &vm->userptr.repin_list); }spin_unlock (&vm->userptr.invalidated_lock); -/* Pin and move to temporary list */ +/* Pin and move to bind list */ list_for_each_entry_safe (uvma, next, &vm->userptr.repin_list, userptr.repin_link) { err =xe_vma_userptr_pin_pages (uvma);if (err == -EFAULT ) {list_del_init (&uvma->userptr.repin_link); +/* +* We might have already done the pin once already, but +* then had to retry before the re-bind happened, due +* some other condition in the caller, but in the +* meantime the userptr got dinged by the notifier such +* that we need to revalidate here, but this time we hit +* the EFAULT. In such a case make sure we remove +* ourselves from the rebind list to avoid going down in +* flames. +*/ +if (!list_empty (&uvma->vma.combined_links.rebind)) +list_del_init (&uvma->vma.combined_links.rebind);/* Wait for pending binds */ xe_vm_lock (vm, false);
@@ -691,10 +704,10 @@ int xe_vm_userptr_pin(struct xe_vm *vm) err =xe_vm_invalidate_vma (&uvma->vma);xe_vm_unlock (vm);if (err) -return err; +break ; }else { -if (err <0 ) -return err; +if (err) +break ;list_del_init (&uvma->userptr.repin_link); list_move_tail(&uvma->vma.combined_links.rebind,
@@ -702,7 +715,19 @@ int xe_vm_userptr_pin(struct xe_vm *vm) } } -return 0 ; +if (err) { +down_write (&vm->userptr.notifier_lock); +spin_lock (&vm->userptr.invalidated_lock); +list_for_each_entry_safe (uvma, next, &vm->userptr.repin_list, + userptr.repin_link) { +list_del_init (&uvma->userptr.repin_link); +list_move_tail (&uvma->userptr.invalidate_link, + &vm->userptr.invalidated); + } +spin_unlock (&vm->userptr.invalidated_lock); +up_write (&vm->userptr.notifier_lock); + } +return err; }/**
@@ -1066,6 +1091,7 @@ static void xe_vma_destroy(struct xe_vma *vma, struct dma_fence *fence)xe_assert (vm->xe, vma->gpuva.flags &XE_VMA_DESTROYED );spin_lock (&vm->userptr.invalidated_lock); +xe_assert (vm->xe,list_empty (&to_userptr_vma (vma)->userptr.repin_link));list_del (&to_userptr_vma (vma)->userptr.invalidate_link);spin_unlock (&vm->userptr.invalidated_lock); }else if (!xe_vma_is_null (vma)) {
drivers/i2c/busses/i2c-ls2x.c +12 -4
@@ -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
@@ -2319,6 +2319,13 @@ static int npcm_i2c_probe_bus(struct platform_device *pdev)if (irq <0 )return irq; +/* +* Disable the interrupt to avoid the interrupt handler being triggered +* incorrectly by the asynchronous interrupt status since the machine +* might do a warm reset during the last smbus/i2c transfer session. +*/ +npcm_i2c_int_enable (bus, false); + ret =devm_request_irq (bus->dev, irq, npcm_i2c_bus_irq,0 ,dev_name (bus->dev), bus);if (ret)
drivers/idle/intel_idle.c +4 -0
@@ -55,6 +55,7 @@#include <asm/intel-family.h> #include <asm/mwait.h> #include <asm/spec-ctrl.h> +#include <asm/tsc.h> #include <asm/fpu/api.h> #define INTEL_IDLE_VERSION "0.5.1"
@@ -1749,6 +1750,9 @@ static void __init intel_idle_init_cstates_acpi(struct cpuidle_driver *drv)if (intel_idle_state_needs_timer_stop (state)) state->flags |=CPUIDLE_FLAG_TIMER_STOP ; +if (cx->type >ACPI_STATE_C1 && !boot_cpu_has (X86_FEATURE_NONSTOP_TSC )) +mark_tsc_unstable ("TSC halts in idle" ); + state->enter = intel_idle; state->enter_s2idle = intel_idle_s2idle; }
drivers/infiniband/hw/bnxt_re/bnxt_re.h +11 -7
@@ -154,6 +154,14 @@ struct bnxt_re_pacing {#define BNXT_RE_GRC_FIFO_REG_BASE 0x2000 +#define BNXT_RE_MIN_MSIX 2 +#define BNXT_RE_MAX_MSIX BNXT_MAX_ROCE_MSIX +struct bnxt_re_nq_record { +struct bnxt_msix_entry msix_entries[BNXT_RE_MAX_MSIX ]; +struct bnxt_qplib_nq nq[BNXT_RE_MAX_MSIX ]; +int num_msix; +}; +#define MAX_CQ_HASH_BITS (16)#define MAX_SRQ_HASH_BITS (16)struct bnxt_re_dev {
@@ -174,24 +182,20 @@ struct bnxt_re_dev {unsigned int version, major, minor;struct bnxt_qplib_chip_ctx *chip_ctx;struct bnxt_en_dev *en_dev; -int num_msix;int id;struct delayed_work worker;u8 cur_prio_map; -/* FP Notification Queue (CQ & SRQ) */ -struct tasklet_struct nq_task; -/* RCFW Channel */ struct bnxt_qplib_rcfw rcfw; -/* NQ */ -struct bnxt_qplib_nq nq[BNXT_MAX_ROCE_MSIX ]; +/* NQ record */ +struct bnxt_re_nq_record *nqr;/* Device Resources */ -struct bnxt_qplib_dev_attr dev_attr; +struct bnxt_qplib_dev_attr *dev_attr;struct bnxt_qplib_ctx qplib_ctx;struct bnxt_qplib_res qplib_res;struct bnxt_qplib_dpi dpi_privileged;
drivers/infiniband/hw/bnxt_re/hw_counters.c +2 -2
@@ -357,8 +357,8 @@ int bnxt_re_ib_get_hw_stats(struct ib_device *ibdev, goto done; }bnxt_re_copy_err_stats (rdev, stats, err_s); -if (_is_ext_stats_supported (rdev->dev_attr.dev_cap_flags) && - !rdev->is_virtfn) { +if (bnxt_ext_stats_supported (rdev->chip_ctx, rdev->dev_attr->dev_cap_flags, + rdev->is_virtfn)) { rc =bnxt_re_get_ext_stat (rdev, stats);if (rc) { clear_bit(BNXT_RE_FLAG_ISSUE_ROCE_STATS,
drivers/infiniband/hw/bnxt_re/ib_verbs.c +24 -22
166 lines not on this page · raw message
drivers/infiniband/hw/bnxt_re/main.c +99 -54
19 lines not on this page · raw message
drivers/infiniband/hw/bnxt_re/qplib_res.c +3 -4
Lines of this file are not shown. View the raw message.
drivers/infiniband/hw/bnxt_re/qplib_res.h +9 -3
Lines of this file are not shown. View the raw message.
drivers/infiniband/hw/bnxt_re/qplib_sp.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/infiniband/hw/bnxt_re/qplib_sp.h +1 -2
Lines of this file are not shown. View the raw message.
drivers/infiniband/hw/hns/hns_roce_hw_v2.c +48 -16
64 lines not on this page · raw message
drivers/infiniband/hw/hns/hns_roce_hw_v2.h +2 -0
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/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_main.c +10 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/freescale/enetc/enetc.c +74 -29
103 lines not on this page · raw message
drivers/net/ethernet/freescale/enetc/enetc_ethtool.c +5 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_eswitch.c +1 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_hw_autogen.h +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_lib.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_main.c +18 -6
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_sriov.c +1 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_vf_lib.c +31 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_vf_lib_private.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_vf_mbx.c +32 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_vf_mbx.h +9 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_virtchnl.c +5 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/idpf/idpf_txrx.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/pci_irq.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c +14 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/ti/icssg/icss_iep.c +1 -20
Lines of this file are not shown. View the raw message.
drivers/phy/rockchip/phy-rockchip-naneng-combphy.c +4 -1
Lines of this file are not shown. View the raw message.
drivers/phy/samsung/phy-exynos5-usbdrd.c +14 -11
Lines of this file are not shown. View the raw message.
drivers/thermal/gov_power_allocator.c +45 -26
71 lines not on this page · raw message
drivers/thermal/thermal_of.c +30 -23
53 lines not on this page · raw message
sound/soc/codecs/cs35l56-shared.c +80 -0
80 lines not on this page · raw message
tools/objtool/check.c +6 -44
50 lines not on this page · raw message
tools/objtool/include/objtool/special.h +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/drivers/net/queues.py +3 -4
Lines of this file are not shown. View the raw message.
tools/testing/selftests/landlock/common.h +1 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/landlock/config +2 -0
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
Lines of this file are not shown. View the raw message.
tools/testing/selftests/rseq/rseq-riscv.h +1 -1
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.
Quoted 4 lines · On Fri, 07 Mar 2025 18:52:44 +0100 Greg Kroah-Hartman…
I'm announcing the release of the 6.12.18 kernel.
All users of the 6.12 kernel series must upgrade.
While testing another backport, I found an unrelated build failure for loongarch in v6.12.18 that I did not see in v6.12.17 -- I cannot find it reported from a quick look, so I am doing so here:
CC arch/loongarch/kernel/asm-offsets.s - due to target missing
In file included from arch/loongarch/kernel/asm-offsets.c:8:
In file included from ./include/linux/sched.h:12:
In file included from ./arch/loongarch/include/generated/asm/current.h:1:
In file included from ./include/asm-generic/current.h:6:
./include/linux/thread_info.h:249:6: error: call to undeclared function 'annotate_reachable'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
249 | if (WARN_ON_ONCE(bytes > INT_MAX))
| ^
./include/asm-generic/bug.h:113:3: note: expanded from macro 'WARN_ON_ONCE'
113 | __WARN_FLAGS(BUGFLAG_ONCE | \
| ^
./arch/loongarch/include/asm/bug.h:47:2: note: expanded from macro '__WARN_FLAGS'
47 | annotate_reachable(); \
| ^
As well as warnings:
In file included from arch/loongarch/kernel/asm-offsets.c:9:
In file included from ./include/linux/mm.h:1120:
In file included from ./include/linux/huge_mm.h:8:
In file included from ./include/linux/fs.h:33:
In file included from ./include/linux/percpu-rwsem.h:7:
In file included from ./include/linux/rcuwait.h:6:
In file included from ./include/linux/sched/signal.h:6:
./include/linux/signal.h:114:27: warning: array index 3 is past the end of the array (that has type 'const unsigned long[1]') [-Warray-bounds]
114 | return (set1->sig[3] == set2->sig[3]) &&
| ^ ~
./include/uapi/asm-generic/signal.h:62:2: note: array 'sig' declared here
62 | unsigned long sig[_NSIG_WORDS];
| ^
I hope that helps.
Cheers,
Miguel
Huacai Chen
maintainerHi, Miguel,
Quoted 42 lines · Miguel Ojeda
Quoted 4 lines · On Fri, 07 Mar 2025 18:52:44 +0100 Greg Kroah-Hartman…
I'm announcing the release of the 6.12.18 kernel.
All users of the 6.12 kernel series must upgrade.
While testing another backport, I found an unrelated build failure for loongarch in v6.12.18 that I did not see in v6.12.17 -- I cannot find it reported from a quick look, so I am doing so here:
CC
arch/loongarch/kernel/asm-offsets.s- due to target missing
In file included fromarch/loongarch/kernel/asm-offsets.c:8:
In file included from./include/linux/sched.h:12:
In file included from./arch/loongarch/include/generated/asm/current.h:1:
In file included from./include/asm-generic/current.h:6:
./include/linux/thread_info.h:249:6: error: call to undeclared function 'annotate_reachable'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
249 | if (WARN_ON_ONCE(bytes > INT_MAX))
| ^
./include/asm-generic/bug.h:113:3: note: expanded from macro 'WARN_ON_ONCE'
113 | __WARN_FLAGS(BUGFLAG_ONCE | \
| ^
./arch/loongarch/include/asm/bug.h:47:2: note: expanded from macro '__WARN_FLAGS'
47 |annotate_reachable(); \
| ^As well as warnings:
In file included from
arch/loongarch/kernel/asm-offsets.c:9:
In file included from./include/linux/mm.h:1120:
In file included from./include/linux/huge_mm.h:8:
In file included from./include/linux/fs.h:33:
In file included from./include/linux/percpu-rwsem.h:7:
In file included from./include/linux/rcuwait.h:6:
In file included from./include/linux/sched/signal.h:6:
./include/linux/signal.h:114:27: warning: array index 3 is past the end of the array (that has type 'const unsigned long[1]') [-Warray-bounds]
114 | return (set1->sig[3] == set2->sig[3]) &&
| ^ ~
./include/uapi/asm-generic/signal.h:62:2: note: array 'sig' declared here
62 | unsigned long sig[_NSIG_WORDS];
| ^
Quoted 1 line
I hope that helps.
This is caused by the backport commit 06e24745985c8dd0da183 ("objtool:
Remove annotate_{,un}reachable()"), but missing the commit 624bde3465f660e54a7cd4c1 ("loongarch: Use ASM_REACHABLE"), I will fix it later.
In addition, it is better to also backport [1], since similar patches for x86 have been backported, otherwise there will be build warnings.
[1] https://lore.kernel.org/loongarch/[email protected]/T/#u
Huacai
Quoted 3 lines
Cheers,
Miguel