summaryrefslogtreecommitdiff
path: root/scripts/Makefile.thinlto
diff options
context:
space:
mode:
authorDavidlohr Bueso <dave@stgolabs.net>2026-11-08 14:07:37 -0800
committerDave Jiang <dave.jiang@intel.com>2026-11-09 15:25:20 -0700
commite8116033242d6c1146b8c3ebb1dafacd9ae24a51 (patch)
tree4065b1c2f1b2bee6b130bd519ec06f3884ebc706 /scripts/Makefile.thinlto
parent77d2d170a9bbdb3a61b1fa86d6f6662ffa62c409 (diff)
downloadlinux-next-e8116033242d6c1146b8c3ebb1dafacd9ae24a51.tar.gz
linux-next-e8116033242d6c1146b8c3ebb1dafacd9ae24a51.zip
cxl: Handle auto-committed BI hdm decoders
An HDM decoder that firmware committed with the BI bit set was assembled without the bit ever being looked at. Record it, and refuse what is broken - BI paired with a host-only target range type, or for an endpoint decoder BI on a path that cannot route BISnp. Taking over such a path must not re-program what firmware already did, and a dport's committed state does not say which device it was committed for, only that firmware committed for something below it. Two endpoints sharing a level show why that is not enough to go on. RP Forward set, but for mem0 | USP / \ DSP0 DSP1 | | mem0 mem1 BI Enable BI Enable set clear Adoption is therefore seeded from the endpoint's own BI Enable, since only a device firmware itself enabled can have had its BI-ID accounted for above, and carried up the walk. A level is taken as found, with no register write and no commit, when nothing this driver routed sits below it, the value this driver would write is already there, and both the decoder and the switch's route table are committed - the table carries a commit of its own that firmware may not have performed. The first level to fall short ends adoption, and from it up the driver programs and commits as for any other device. RP Forward, written but never committed | USP0 route table committed by the driver | DSP0 Forward, written and committed | ..... adoption ended here ..... USP1 route table already committed | DSP1 Enable, taken as found | mem0 BI Enable already set by firmware An adopted level owes no commit either way. Table 8-152 and Table 8-156 owe one per new BI device enabled below the port, and an adopted level is not seeing one. On failure the walk unwinds through the same release as teardown. An adopted level was found up and is held, so the unwind drops its reference and leaves its register alone; a level this walk brought up is cleared. Teardown works the same way: every level this driver brought up is deallocated, unless a decoder below still decodes with BI and holds it. A committed decoder is refused when its coherency model does not fit where it lands: unlike a decoder this driver programs it cannot inherit a region's model, so its committed BI bit must match the window's, checked before the region is built and again at attach, where a second decoder joining the region arrives. A firmware-committed decoder's BI bit is recorded as CXL_DECODER_F_BI at enumeration, as it already is for a decoder this driver commits. Reviewed-by: Dave Jiang <dave.jiang@intel.com> Reviewed-by: Jonathan Cameron <jonathan.cameron@oss.qualcomm.com> Reviewed-by: Li Ming <ming.li@zohomail.com> Reviewed-by: Alison Schofield <alison.schofield@intel.com> Signed-off-by: Davidlohr Bueso <dave@stgolabs.net> Link: https://patch.msgid.link/0570b67e078439a64c513d62faca1abd7ed70e6c.1794172701.git.dave@stgolabs.net Signed-off-by: Dave Jiang <dave.jiang@intel.com>
Diffstat (limited to 'scripts/Makefile.thinlto')
0 files changed, 0 insertions, 0 deletions