drm/amd/display: disable replay when crc source is enabled
From Ray Wu
b5896fc269e9f3b3b4a67a7ce78872bc3bbd3b25 in linux-6.18.y/6.18.57
a036db3953140d5c2816b056aa3e73b8e98d9bc0 in mainline linux
drm/amdgpu: force complete the KIQ ring fences on reset
From Jesse Zhang
c26cbd5c33cd72daa03079235de60688a3c97c52 in linux-6.18.y/6.18.57
fd65d1742992361fc2201ecb4e43411e6e417fcb in mainline linux
[BOLT] Expand builtin_unreachable recognition heuristics (#231258)
A jump to the address right past the end of a function (the result of
__builtin_unreachable()) was replaced with a nop only when the target
was within the function's padding (MaxSize). However, there is a corner
case for the very last function in a section: MaxSize equals Size, so
BOLT would see __builtin_unreachable() instead as as an interprocedural
reference to an address outside of any section, tripping the "cannot get
section for referenced address" assertion in
processInterproceduralReferences(). Fix this.
drm/amdgpu: force complete the MES ring fences on reset
From Jesse Zhang
7d722821e2f626c4e34c8510f0ce1d6f10c77a3b in linux-6.18.y/6.18.57
48dc279c3010ac8f91b1845b2abb3a1e9943a0f5 in mainline linux
[X86] Address review: test a tied input's untied read under -regalloc=fast
Add the case from the #229630 review, one value passed to an untied "r"
input and to the "0" input tied to an "rm" output, to show that the fast
register allocator no longer folds the output when everything fits.
Drop the -O0 RUN line from inline-asm-direct-mem-output-error.ll: it only
showed that "=rm" still picks memory at -O0, which asm-constraints-rm.ll
already tests, and there make the -O0 line name the instruction selector
and say that it tests the optimization level.
Assisted-by: Claude Opus 5.5
[TargetLowering][X86] Prefer 'r' over 'm' for foldable "rm" inline asm operands
An "rm" (register-or-memory) inline asm operand has always resolved to
'm', because getConstraintPreferences() picks the most general
constraint present, and 'm' is more general than 'r'. That's safe, since
memory can't run out, but it forces a value that could stay in a
register through a stack slot even when there's no register pressure
(https://github.com/llvm/llvm-project/issues/20571).
Prefer 'r' instead where the register allocator can fold the register
back to a stack slot when it runs out of registers, and mark the
register operand foldable (InlineAsm::Flag::setRegMayBeFolded()) so it
does. Both allocators can: the greedy allocator folds an operand when it
spills its value, and the fast allocator folds operands up front when
the asm's register operands wouldn't fit.
ParseConstraints() sets AsmOperandInfo::MayFoldRegister for an operand
whose constraint codes include 'r' and 'm' and are otherwise only
immediate codes, above -O0, on a target that opts in through the new
[26 lines not shown]
drm/amdkfd: Add bounds check for CRAT subtype length
From William Palacek
69164d6bdad5d6657e51436a3f602822f620a46a in linux-6.18.y/6.18.57
6e7566ba4739dd573c331adde1c96690f7a567bd in mainline linux
[InstCombine][AMDGPU] Fold select of intrinsics differing in one operand (#227737)
When both arms of a select are calls with one use to the same trivially
vectorizable intrinsic and differ in exactly one operand, sink the
select
into that operand:
$$\mathrm{select}(c,\ f(x, y),\ f(x, z)) \to f(x,\ \mathrm{select}(c, y,
z))$$
This removes one call. FMF are intersected, and the new call takes the
debug location of the select.
The fold is skipped when:
* the differing operand is an immarg,
* either differing operand is a constant, since that may enable a
cheaper
lowering (e.g. $x^2 \to x \cdot x$),
* the condition is a vector but the differing operand is a scalar, as
[3 lines not shown]
drm/amdkfd: Fix infinite loop parsing CRAT with zero subtype length
From Yongqiang Sun
39841db9322cddf7bd1dbcacdffc791475c7b02f in linux-6.18.y/6.18.57
961323c26ad4c895e3b0ea1711fc41dfd6368c12 in mainline linux
drm/amd/display: check if dml21_add_phantom_plane() is successful
From Alex Deucher
bea1f73ad69eec36b757adb8e63beb3092f862ee in linux-6.18.y/6.18.57
000acb4ce7fb9feba3072ce468ad681f6585cd5d in mainline linux
drm/amd/display: Fix divide-by-zero in calculate_mcache_setting on zero viewport
From George Zhang
23a541c31b45fa813b33269376f6bd53535429a8 in linux-6.18.y/6.18.57
f327e389c07cfc3a2f6ff54f6214e1a52d457edc in mainline linux
drm/amd/display: use kvzalloc to allocate struct dc
From Honglei Huang
c59a693fbd213f8f27942509b48b1a4111fdd40d in linux-6.18.y/6.18.57
75050390151a14802be433c3856ddcb483cecd24 in mainline linux
drm/i915/gt: Fix NULL deref on sched_engine alloc failure
From Joonas Lahtinen
c174969f6af6c22fc9c51aefcdb7f9183c3a329a in linux-6.18.y/6.18.57
82ec992c404c3dc774c5e9f3d4aa858e97187675 in mainline linux
drm/amdgpu: Fix kernel panic during driver load failure
From Harish Kasiviswanathan
f7e744bac9a720740a60d19319e8e5ed5e5c3c76 in linux-6.18.y/6.18.57
a279bd143b3c184358b658e43a057e31ee8c4de5 in mainline linux
[RegAllocFast] Address review: don't recount a tied input's untied reads
When one value is passed to both a tied operand and an untied one, e.g.
"=rm"(r) : "r"(v), "0"(v), with an explicit -regalloc=fast above -O0 (so
TwoAddress doesn't run and the ties reach RegAllocFast), the fold estimate
counted three registers where lowerTiedUse() uses one. Tied uses are
allocated first, so the value moves into the def's register and the untied
read is rewritten to it. tiedUseNeedsOwnReg() still assumed another read of
the value could get it a register first, and the untied read was counted on
its own as well, so the asm's output was folded to the stack needlessly.
Model the tied input itself: while one of its tied defs is in a register,
it needs no register of its own unless tiedUseNeedsOwnReg() says so (only
an early-clobber def now makes another read matter), and its untied reads
share whichever register it has. Once its tied defs are folded, the untied
reads need a register again, so choose what to fold by counting again with
each candidate folded, and fold both halves when neither alone helps.
Assisted-by: Claude Opus 5.5
drm/amdgpu: fix amdgpu_hmm_range_get_pages
From Christian Koenig
fa34d3e14cb763b50702e8a0f7d4cfd877a73ab9 in linux-6.18.y/6.18.57
962d684b5dc0741dcd93485d41b450de402d5592 in mainline linux
drm/amd/display: Wrap DCN32 phantom-plane allocation in DC_RUN_WITH_PREEMPTION_ENABLED
From Mikhail Gavrilov
a8c1480bb066cf0f6e79129b7292e1c99ff68b9b in linux-6.18.y/6.18.57
183182235f6d53bac62c6c39014738a54a68dfa6 in mainline linux
drm/ttm: Fix ttm_bo_shrink() infinite LRU walk on backup failure
From Thomas Hellstrom
d0ce7b07dafe43d78150f90894027746576d7cb7 in linux-6.18.y/6.18.57
1d59f36e95f7f7134db0e313c9d787cb0adb2153 in mainline linux
drm/ttm: Fix ttm_bo_swapout() infinite LRU walk on swapout failure
From Thomas Hellstrom
060f8f3020516d71bc4d6159d4d0beef85606a74 in linux-6.18.y/6.18.57
b2ed01e7ad3de80333e9b962a44024b094bc0b2b in mainline linux
drm/amdgpu/userq: fix access to stale wptr mapping
From Sunil Khatri
2da62dbb4169e758c0b1a9378b39a373bf4fb111 in linux-6.18.y/6.18.57
6da7b1242da4455b11c24ce667d1cab1a348c8ea in mainline linux
drm/amd/display: Fix dc_link NULL handling in HPD init
From Srinivasan Shanmugam
1d15503e454bf117a0d0078332d48df86a41c828 in linux-6.18.y/6.18.57
226a40c06a183abaeb7529a4f54d6c203bd14407 in mainline linux