[AMDGPU] Fix gfx9-4-generic LDS allocation granule
gfx9-4-generic paired gfx950's 1280-byte allocation granule with
gfx942's 64 KiB LDS capacity. A 64 KiB work-group then rounded to
66560 bytes, was deemed not to fit, and dropped occupancy to 1. The
resulting VGPR budget made 1024-lane dispatches fail.
Use gfx942's 512-byte granule, which matches the capacity.
Fixes LCOMPILER-3031.
Change-Id: Ic8d36fd0921a80abd0debaee1fb2c28cd01604d0
Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
[ConstraintElim] Split signed min/max across their operands when checking a compare
The existing constraint systems only record the bounds that hold for both
operands of a min/max (smax(a, b) >= a and >= b, smin(a, b) <= a and <= b). The
other direction is a disjunction, which cannot be recorded as a fact. When a
compare of signed decompositions involves a min/max result, split it into its
operands: the decomposition is monotonic in that result, so it is the max or min
of its values on each side, and the relation holds for all or for either side
respectively.
https://alive2.llvm.org/ce/z/zsGkJ-
[ConstraintElim] A signed sum of operands with opposite signs cannot wrap
If one operand is known non-negative and the other non-positive, the signed
sum is between them, so it cannot overflow.
https://alive2.llvm.org/ce/z/ZF5Yqr
[ConstraintElim] Prove sadd/ssub.with.overflow cannot overflow from the exact sum
Decompose the operands and show that the sum lies in the range of the type. This
handles patterns like A + (B - A), as well as sums involving signed min/max
results, which are split across their respective operands using monotonicity
(for example start + smax(end - start - 1, 0) <= end).
https://alive2.llvm.org/ce/z/ze8LCk
[ConstraintElim] Propagate the sign across an icmp samesign
If one operand of `icmp samesign` is known (non-)negative, so is the other. Add
that as a fact in the signed system.
https://alive2.llvm.org/ce/z/xUgGRM
amdsmu: Don't rely on s0i3_last_entry_status metric
This metric seems unreliable and I have observed it occasionally report
1 (successful entry to S0i3) when the time_last_in_s0i3 metric was 0 on
Phoenix, which does not make sense.
So just rely on time_last_in_s0i3 instead.
Sponsored by: The FreeBSD Foundation
www/zoraxy: Fix build on non-amd64
sshprox declares UseWinTTY and gotty only for freebsd/amd64, which
breaks the build on all other architectures. amd64 embeds no gotty
binary anyway, so extend the build constraint to all of FreeBSD.
Sponsored by: Netzkommune GmbH
(cherry picked from commit 2ea38e53e6a3434d2cf581813ba80592681c811c)
www/zoraxy: Fix build on non-amd64
sshprox declares UseWinTTY and gotty only for freebsd/amd64, which
breaks the build on all other architectures. amd64 embeds no gotty
binary anyway, so extend the build constraint to all of FreeBSD.
Sponsored by: Netzkommune GmbH
www/zoraxy: Fix build on non-amd64
sshprox declares UseWinTTY and gotty only for freebsd/amd64, which
breaks the build on all other architectures. amd64 embeds no gotty
binary anyway, so extend the build constraint to all of FreeBSD.
Sponsored by: Netzkommune GmbH
powerpc/irq: Fix build with CONFIG_PROC_FS=n
Commit fbb22ceaaf8f ("powerpc/irq: Make irqstats array based") made
arch_show_interrupts() call irq_proc_emit_counts(). That function lives
in kernel/irq/proc.c, which is only built with CONFIG_PROC_FS, so
kernels without procfs no longer link:
powerpc64-linux-ld: arch/powerpc/kernel/irq.o: in function `arch_show_interrupts':
arch/powerpc/kernel/irq.c:134:(.text+0x4b8c): undefined reference to `irq_proc_emit_counts'
arch_show_interrupts() is only called from irq_seq_show(), which is in
kernel/irq/proc.c as well, so build it only with CONFIG_PROC_FS, as x86
already does.
Fixes: fbb22ceaaf8f ("powerpc/irq: Make irqstats array based")
Reported-by: kernel test robot <lkp at intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202609271531.8kf2NTjK-lkp@intel.com/
Signed-off-by: Sasha Levin <sashal at kernel.org>
Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
[AMDGPU][Scheduler] Restore local spill rejection in occupancy mode (#233979)
When rematerializing for higher occupancy, the scheduler can retain a
schedule that introduces spills even when the saved order is spill-free.
The `!TargetOcc` guard disables local spill rejection. Since occupancy
is tracked using `max(WavesBefore, WavesAfter)`, global finalization can
still consider the target reached even when the trial schedule is worse.
The guard was introduced in 7cc7a9412893 (#180646) alongside a fix for
rollback using temporary `DBG_VALUE` placeholders. dc34d163d8c9
(#192443) replaced that representation with the shared MIR
rematerializer, removing the placeholder-specific slot-index issue.
Re-enable the existing `mayCauseSpilling` check in occupancy mode to
reject such trials and restore the instruction order saved before
rescheduling, while preserving rematerialization. Global finalization
still handles rematerialization rollback. Add a MIR regression that
spills before the fix and remains spill-free afterward.
[5 lines not shown]
kernel - Fix I/O stalls caused by TRIM ops
* I/O can stall out in physstr when TRIM ops are delpoyed. The
cause is that the da_softc->outstanding_cmds_rd tracker used by
the I/O balancer was decrementing the field on TRIM completions.
* Fix by ensuring that the tracker only applies to READ commands.
* Refactor scheduling checks in dastart(). The checks were a bit broken
but worked due to a catch-all in dadone(). Refactor so they work properly.
* Refactor conditional/block syntax a bit for readability.
Reported-by: myself and numerous others
Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm
Pull KVM updates from Paolo Bonzini:
"ARM:
- pKVM state isolation: years after pKVM started being enabled
upstream, we finally get the basics in the form of state isolation.
The vcpu state is now off-limit for the host for protected VMs
- pKVM also grows a hypervisor-private memory allocator, allowing it
to deal with sub-page allocation, much like everywhere else
- pKVM also lands a trace_printk() equivalent, which hopefully will
make debugging a bit easier
- First shot at annotating portions of the KVM/arm64 code to be
extracted and built on s390. The real fun is yet to come
- Allow pre-faulting of stage-2 canonical mappings from userspace,
[301 lines not shown]
RegAlloc: Fix dead flags of defs after failed allocation (#233796)
After an allocation failure, the error register may be assigned to
multiple defs of the same instruction. If one of these is dead and
another live, the instruction fails the verifier check added in #233110.
In RegAllocBase, add the failed defs to the error register's regunit
live ranges so a later assignment cannot also def it, and make the dead
flags of the error defs agree with any def already assigned the
register. In RegAllocFast, clear the dead flags of registers with a
live def on instructions using an error assignment.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>