Skip to content

Four T14 bench issues filed, and three standing ones corrected by the same readback - #462

Merged
Japabu merged 5 commits into
mainfrom
wt/toyos-benchissues
Sep 21, 2026
Merged

Japabu merged 5 commits into
mainfrom
wt/toyos-benchissues

Conversation

@Japabu

@Japabu Japabu commented Sep 14, 2026

Copy link
Copy Markdown
Collaborator

What this changes

issues/ only; no code. What the branch as a whole does to the tracker, after the round-1 review's findings were answered in the files they were found in:

  • Adds issues/build/a-hung-boots-log-partition-is-wiped-by-the-next-runs-flash.md (kind: tooling): src/metal.rs's loop flashes (:1000-1002, called at :1471) before it reads (read_log at :1489, raw_log at :1496), so a hung boot's partition survives only if something outside the loop read it between two invocations; and the loop cannot read a wedged stick at all (read_log and raw_log refuse, :1131-1162, :1184-1190). Run 55's partition was read from outside the loop before run 56 flashed over it, and held no file logd wrote. Exit condition: a pre-flash save that records, not refuses, when the stick does not answer.
  • Adds issues/kernel/a-120000-ms-boot-deadline-fired-132859-ms-late-on-the-t14.md (kind: defect): run 55's boot, armed boot-deadline=120000, expired at 252859 ms; the 60000 ms hard-lockup bound armed off the same parameter (kernel/src/deadline.rs:182, toyos-tco/src/lib.rs:154-156) was silent on the same boot. The sealed census is quoted whole; cpu0's state explains nothing about the bound (cpu4 took 215 timer interrupts in the 3.47 s cpu0 took 9). The instrument that measures the lateness exists — deadline_lateness_ms (src/metal.rs:1591), priced at ceiling 10000 in tests/metal-profile.toml:409-414, judged in tests/common/metal.rs:895-919 — and 132859 is 13x that ceiling on a boot the profile does not name. The record was read by run 56's loader pass, which printed it and ended the chain without booting a kernel (bootloader/src/main.rs:857-860).
  • Adds issues/kernel/the-deadline-header-promises-any-interrupt-and-only-the-timer-entry-polls.md (kind: defect): kernel/src/deadline.rs:11-13 claims "some CPU still takes an interrupt" keeps the bound alive; poll's only call sites are the timer entry's (kernel/src/arch/idt/timer.rs:71,79,96) and :185-186 says so. Filed, not fixed.
  • Adds issues/isolation/a-reset-stops-xhci-and-leaves-every-claimed-pci-function-armed.md (kind: defect): five paths reach the two register writes — sys_reboot and sys_shutdown through quiesce, deadline::expire (deadline.rs:224) and hardlockup::locked_up (hardlockup/mod.rs:326) straight to acpi::reset_now, panic_reboot::reboot_now to acpi::reboot — and none tears down a live process's PCI function; pcidev::release's one caller is Claim's Drop (kernel/src/device.rs:75). True today for netd's virtio-net function (system.toml:70-72); the I219 is the instance this tree reaches when PR The cable: netd takes its address from the network, and the T14 answers a ping on it #442 lands. What the 0xCF9 write does to the function is stated as unmeasured, with what would measure it.
  • Promotes issues/kernel/a-claimed-function-must-have-msi-x-and-the-i219-may-not.md from finding to defect, status: assigned to PR The cable: netd takes its address from the network, and the T14 answers a ping on it #442 (lan-metal, whose pcidev arms MSI where MSI-X is absent), and folds into it the I219's measured interrupt mode (mode=msi, recorded on that branch at git show 0a5717f5:issues/hardware/the-t14-answers-only-through-a-usb-stick.md lines 61-63), the IVAR write and readback quoted whole from toyos-i219/src/lib.rs:496-503, the fact that the write is unreachable in this tree (kernel/src/pcidev/mod.rs:544 refuses the function before open runs), and that the boots which armed MSI (runs 42 and 51, tips 4204e090 and 6276fc87) were of unmerged branches. IVAR only; nothing cited says EIAC is MSI-X-only.
  • Closes issues/kernel/a-job-list-hangs-with-interrupts-on-and-the-deadline-ends-it.md: its exit condition was a loader.log from a T14 boot that ran to its deadline with the ring tail naming what the machine was doing, and run 56's readback is that. Its one citation, in issues/kernel/an-xhci-storm-starves-the-cpu-that-takes-it.md, moves to the deadline file.
  • Deletes issues/kernel/eiac-and-ivar-are-msi-x-registers-on-an-msi-only-i219.md (folded, above) and issues/panic-path/no-watchdog-outlives-exitbootservices-and-a-hang-seals-nothing.md, both filed on earlier pushes of this branch and never on main. The panic-path file claimed a fatal event reaching apic::halt_all_cpus disarms both kernel bounds and reaches no black-box seal, so that nothing past ExitBootServices is timed by a bound this tree has verified to fire and no hung boot's record has ever been captured. Refuted twice: in the tree, the black box's own contract (kernel/src/blackbox.rs:5-7) is that the panic path seals what the panel rendered, record_panic, called at kernel/src/drivers/panic_console/mod.rs:582; and on the machine, run 55's boot — a deadline::expire wedge, which never reaches halt_all_cpus — sealed a WEDGED record that the next loader pass printed, the record the deadline file quotes.

Why

The round-1 review (verdict SEND BACK) found, and the orchestrator upheld: the build file asserted no hung partition had ever been read when run 55's had been, and proposed a pre-flash read_log that refuses on exactly the wedged stick it would be for; the deadline file's slug named a cause its own census refutes, omitted the silent hard-lockup bound, proposed an instrument that exists, and cited neither of the two files already on the subject; the EIAC/IVAR file duplicated an open finding without citing it, asserted EIAC's mode without a source, and never said the scenario is unreachable in this tree; the isolation file's "every reset goes through acpi::reboot/acpi::shutdown" is false in the tree and its load-bearing claim about the function surviving the reset was unmeasured; and the PR body's numbers pointed at files no reader of the tree can open.

Evidence

Every number in the issue files is quoted from the bench transcripts into the file itself — run 55's loop refusal at 21:02:01Z and the copied partition's loader.log line 20 (Black box: 0x8000000 armed at 2026-09-14-205457 …); run 56's transcript line 1 and its loader pass (the boot deadline expired: a bound of 120000 ms, reached at 252859 ms, with this machine in \complete`.), the irq:` census whole, and the tail's last records; runs 42 and 51's hand-over records. The transcripts live under the orchestrator's job directory, which no reader of the tree can open, so no path there is a citation.

  • 252859 − 120000 = 132859; 132859 / 10000 = 13.3 (the ceiling at tests/metal-profile.toml:412).
  • git diff --stat 4d604c86 HEAD -- kernel/src/deadline.rs kernel/src/hardlockup/mod.rs kernel/src/drivers/acpi.rs → empty: the branch run 55 booted matches this tree on the files the deadline issue cites. git branch -a --contains 4d604c86i219-delivery only.
  • git grep -n 'regs::IVAR' 4204e090 6276fc87 -- toyos-i219/src/lib.rs → both tips carry the write and readback at :502-503; git branch -a --contains on either tip → bar-placement, i219-delivery, i219-phy, never main.
  • git grep -l lancase origin/lan-metalsrc/lan.rs, tests/toyos.rs, tests/metal-profile.toml and five more; git grep -n lancase HEAD → only the issue files.
  • rg -n 'deadline::poll' kernel/srckernel/src/arch/idt/timer.rs:79 and :96 only. rg -n 'pcidev::release' kernel/src → one line, the caller at kernel/src/device.rs:75; the definition, pub fn release(slot: usize), is at kernel/src/pcidev/mod.rs:782.
  • Every file:line in the six changed issue files was read in this worktree at 2a8cb4e7 with sed -n.

Gates

command exit result
cargo test --lib (this worktree, 2a8cb4e7) 0 307 passed, 0 failed, 1 ignored
git grep --cached -n for the five deleted or renamed slugs (a-job-list-hangs-with-interrupts-on-and-the-deadline-ends-it, eiac-and-ivar-are-msi-x-registers-on-an-msi-only-i219, a-boot-deadline-of-120000-ms-fired-132859-ms-late-behind-an-xhci-storm-on-cpu0, a-reboot-quiesces-xhci-and-leaves-a-claimed-i219-armed, no-watchdog-outlives-exitbootservices-and-a-hang-seals-nothing) 1 no hit
rg -n --hidden -g '!.git' for the same five 1 no hit
rg -n -- '-area' over the six changed issue files 1 no hit
a frontmatter conformance loop over issues/*/*.md (the README's value sets, its status/kind pairing table, the date form) 0 252 files
every issues/<area>/<slug>.md the six changed files cite, tested with [ -f ] 0 7 paths, all resolve
cargo test --workspace --exclude toyos-build not run no crate is touched; every host-crate suite is unaffected by issues/
an issues gate in src/ none exists rg -n -i 'frontmatter' --glob '!issues/**' . is empty; the tree-side readers of issues/ paths are src/redlist.rs's source: rows and src/tiers.rs, and none names a file this branch moves

Anything a reader of main must not miss

  • Closed by this merge: issues/kernel/a-job-list-hangs-with-interrupts-on-and-the-deadline-ends-it.md. Its durable line — a deadline that fires is a machine on which some CPU took a timer interrupt — is already kernel/src/deadline.rs:86-87's, so no header line is owed.
  • issues/kernel/a-claimed-function-must-have-msi-x-and-the-i219-may-not.md is now kind: defect, status: assigned to PR The cable: netd takes its address from the network, and the T14 answers a ping on it #442.
  • issues/hardware/a-t14-boot-wedges-after-a-jobs-exit-and-nothing-said-why.md is not closed: its exit condition is a WEDGED record of a different shape, and the deadline file says why.
  • Pre-existing and untouched here, found by the review and ruled outside this branch: kernel/src/arch/syscall/machine.rs:97, kernel/src/drivers/xhci/stop.rs:449 and issues/kernel/quiesce-runs-while-userland-still-does-io.md each say every reset goes through acpi::reboot/acpi::shutdown, and deadline.rs:224 and hardlockup/mod.rs:326 reach reset_now directly. The isolation file states the true graph beside them.
  • Filed and not fixed, by design of this branch: the deadline header's coverage claim.

🤖 Generated with Claude Code

https://claude.ai/code/session_014iqcj4jDKpaiDX8B7CMvmK

A read-only investigation into why the T14 does not come back after
lancase-family boots (runs 36, 49, 52, 54, 55) turned up four things worth
tracking, none of them explained by the tree under suspicion (6276fc8..4d604c8
is a no-op on the shipping boot but for two argv scans that return false, and
run 36 hung on a tip that predates it entirely).

`issues/build/a-hung-boots-log-partition-is-wiped-by-the-next-runs-flash.md` —
`src/metal.rs`'s `flash` wipes and reflashes the stick at the *start* of every
run, before that run's own `read_log` can run. A run that hangs never reaches
`read_log` itself, and the next run's `flash` overwrites the partition before
anything else does. No hung boot's own `/log` has ever been read as a result.

`issues/kernel/eiac-and-ivar-are-msi-x-registers-on-an-msi-only-i219.md` —
`toyos-i219` cites the 82574 datasheet throughout and writes `EIAC`/`IVAR`
unconditionally in `open`, though the datasheet states `IVAR` is only valid in
MSI-X mode. The T14's I219 has been measured (on a sibling branch, not yet in
this tree) to be an MSI part, and separately, two runs on that branch show the
write going through anyway — evidence only that some word landed where the
driver looked, not that the register does anything documented.

`issues/panic-path/no-watchdog-outlives-exitbootservices-and-a-hang-seals-nothing.md`
— the firmware's own boot watchdog is disabled once `ExitBootServices` runs
(the loader's own log line says so), and `halt_all_cpus` unconditionally
disarms the kernel's own boot-progress deadline and hard-lockup NMI before it
holds the panel — which are also the only two callers of the black-box
`seal_wedge` path. A machine whose FADT names no reset register, or whose
reset has never been observed to fire, is left with no bound on a panic at all
and no record of one either.

`issues/isolation/a-reboot-quiesces-xhci-and-leaves-a-claimed-i219-armed.md` —
the reboot/shutdown path quiesces xHCI only; a claimed PCI function's own
teardown (`pcidev::release`) is reached from exactly one place, a claim's
`Drop`, which only runs when its holding process exits. `netd` never exits on
a `lancase` boot, so the I219 warm-resets with bus mastering, MSI and both
rings still armed.

Every citation was verified with `sed -n`/`git show` against this worktree;
where a fact was measured only on a sibling, unmerged branch, the finding says
so and cites the commit rather than presenting it as merged.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014iqcj4jDKpaiDX8B7CMvmK
@Japabu
Japabu marked this pull request as ready for review September 14, 2026 21:37
Japabu and others added 3 commits September 14, 2026 23:42
`issues/panic-path/no-watchdog-outlives-exitbootservices-and-a-hang-seals-nothing.md`
claimed the T14 has no bound past `ExitBootServices` that this tree has
verified to fire. Measurement refutes it: the FADT reset register at 0xCF9
(`kernel/src/drivers/acpi.rs:282`), the 120 s boot deadline, and the 60 s
hard-lockup NMI and panic-reboot bounds (`toyos_tco::PANIC_BOUND_MS`,
`toyos-tco/src/lib.rs:122`) all exist, and in run 55/56 the deadline fired,
the reset path ran, the black box sealed, and the next loader pass printed
it — `t14-run56/lancase-repeat.log` line 26, "Black box: the record below is
from the boot armed at 2026-09-14-205457", is that print. No citation of the
file remained anywhere in the tree, so nothing else needs to move.

That same black box is itself new evidence, and it says something the
deleted file did not: the deadline fired 132859 ms past the 120000 ms bound
it was armed with, while cpu0 spent the run's first several seconds deep in
the xHCI mass-storage recovery loop (`lancase-repeat.log` line 28's
"reached at 252859 ms", and lines 210-211's `Stopped, recovering` /
`Set TR Dequeue timed out` two seconds apart). Filed as
`issues/kernel/a-boot-deadline-of-120000-ms-fired-132859-ms-late-behind-an-xhci-storm-on-cpu0.md`.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014iqcj4jDKpaiDX8B7CMvmK
…g, and the reset graph is the tree's

Round 2 of the review of this branch: every CODE finding upheld, and each
answered in the file it was found in.

`issues/build/a-hung-boots-log-partition-is-wiped-by-the-next-runs-flash.md`
claimed no hung boot's partition had ever been read. Run 55's was: copied
whole from `/dev/sda3` at 21:15:16Z, after its loop refused at 21:02:01Z and
before run 56 flashed at 21:29:39Z. The copy held `loader.log` (the loader's
first pass alone) and `attempts`, and no file logd wrote — that boot's ring
tail carries `exit: logd pid=4 code=-1` at 3.471 s, so for the one hung
partition ever captured the flash would have destroyed nothing logd wrote.
The file now says what the tree shows: the loop's own sequence flashes
(`src/metal.rs:1471`) before it reads (`:1489`, `:1496`), so a hung boot's
partition survives only if something outside the loop read it first; and the
loop cannot read a wedged stick at all — `read_log` and `raw_log` refuse
(`:1131-1162`, `:1184-1190`) — so the remedy is a pre-flash save that records
rather than refuses when the stick does not answer. Every citation is an
exact line; the "-area" hedge is gone.

The deadline issue is renamed to
`issues/kernel/a-120000-ms-boot-deadline-fired-132859-ms-late-on-the-t14.md`.
"Behind an xHCI storm on cpu0" was a cause the file's own census refutes:
cpu4 took 215 timer interrupts in the 3.47 s in which cpu0 took 9, and `poll`
runs on every CPU's timer entry. The census is quoted whole, both blocks. The
hard-lockup bound armed off the same parameter at 60000 ms
(`kernel/src/deadline.rs:182`, `toyos-tco/src/lib.rs:154-156`) was silent on
the same boot, and the file says so. The instrument that measures this —
`deadline_lateness_ms` (`src/metal.rs:1591`), priced at ceiling 10000 in
`tests/metal-profile.toml:409-414` and judged in
`tests/common/metal.rs:895-919` — is cited instead of a second one proposed:
132859 is 13x that ceiling on a boot (`lancase`) the profile does not name and
this tree does not have. The record was run 55's boot's (armed 20:54:57Z, the
unmerged `i219-delivery` at 4d604c8, whose deadline, hardlockup and acpi
sources are byte-identical to this tree's), read by run 56's loader pass,
which printed it and ended the chain without booting a kernel
(`bootloader/src/main.rs:857-860`). Run 56 came back — to Ubuntu, after
100 s, having booted no kernel.

`issues/kernel/a-job-list-hangs-with-interrupts-on-and-the-deadline-ends-it.md`
is closed. Its exit condition was "a `loader.log` from a T14 boot that ran to
its deadline, with the ring tail naming what the machine was doing when it
stopped", and run 56's readback is that: the tail names the boot stick's
READ(10) transport breaking at 3.47 s, logd and netd dying on faults over
file bytes the device would not read, the test runner failing to load, and
the disk going offline at 5.556 s, after which nothing was written until the
expiry at 252.859 s. Its durable line — a deadline that fires is a machine on
which some CPU took a timer interrupt — is already `deadline.rs:86-87`'s, so
no header line is owed; what this record adds, that it can fire 133 s after
the bound, is the successor's subject. Its one citation, in
`issues/kernel/an-xhci-storm-starves-the-cpu-that-takes-it.md`, moves to the
successor; no other pointer at the slug or the path exists in the tree.
`issues/hardware/a-t14-boot-wedges-after-a-jobs-exit-and-nothing-said-why.md`
waits for a record of a different shape and is not closed by this one; the
successor cites it and says why.

The tree-checkable defect the deadline file obscured is filed on its own:
`issues/kernel/the-deadline-header-promises-any-interrupt-and-only-the-timer-entry-polls.md`.
`deadline.rs:11-13` says "some CPU still takes an interrupt"; `poll`'s two
call sites are the timer entry's (`kernel/src/arch/idt/timer.rs:71,96`) and
`:185-186` says so; `hardlockup/mod.rs:4-5` repeats the wide claim. Filed,
not fixed: this branch touches `issues/` only.

`issues/kernel/eiac-and-ivar-are-msi-x-registers-on-an-msi-only-i219.md` is
folded into
`issues/kernel/a-claimed-function-must-have-msi-x-and-the-i219-may-not.md`
and deleted: that finding already carried the claim, the §10.2.4.9 argument
and an exit condition asking for exactly the mode reading the new file
supplied. This is that finding's next review, so it is promoted to a defect
and assigned to PR #442 (`lan-metal`), whose `pcidev` arms MSI where MSI-X is
absent. The fold keeps IVAR only — nothing cited says EIAC is MSI-X-only —
quotes `toyos-i219/src/lib.rs:496-503` whole, comment included, and says in
so many words that the write is unreachable in this tree
(`kernel/src/pcidev/mod.rs:544` refuses the function before `open` runs) and
that runs 42 and 51, which armed MSI, were of unmerged branches (tips
4204e09 and 6276fc8, both carrying the same write and readback). The
"citation policy violated" paragraph is dropped: both offsets are in the
datasheet, and the policy is about the number.

`issues/isolation/a-reboot-quiesces-xhci-and-leaves-a-claimed-i219-armed.md`
is renamed to
`issues/isolation/a-reset-stops-xhci-and-leaves-every-claimed-pci-function-armed.md`
and rewritten around the call graph the tree has: `deadline::expire`
(`deadline.rs:224`) and `hardlockup::locked_up` (`hardlockup/mod.rs:326`)
call `acpi::reset_now` directly, and `panic_reboot::reboot_now` reaches
`acpi::reboot` without `quiesce` — five paths, not two. The claim that the
function's armed state survives the 0xCF9 write is stated as unmeasured, with
what would measure it, and nothing rests on it. The general defect is this
tree's today: `netd` holds a virtio-net function (`system.toml:70-72`) and
nothing between `SYS_REBOOT` and the port write asks it to let go. The I219
is the instance the tree reaches when PR #442 lands — `lancase` is that
branch's — and on run 55's boot the function had already been released by
netd's death before the reset.

Every number in the issue files is quoted from the bench transcripts into the
file itself; the private paths those transcripts live under are cited
nowhere. Every file:line was read in this worktree with `sed -n`.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014iqcj4jDKpaiDX8B7CMvmK
…ement, quote the MSI-X reading that bears on :544, and restore the ccorpus hang

Round 3 of the review of this branch.

The `irq: cpu0 total=103171 timer=10 xhci=103161` census in
`a-120000-ms-boot-deadline-fired-132859-ms-late-on-the-t14.md` traced to no
run: `t14-run20/metaldevicecase.log:401` carries it, whose transcript line 1
reads `boot=metaldevicecase tip=f46f91eb`, and `t14-run25-metal.log` has no
such line. Both this file and the pre-existing
`an-xhci-storm-starves-the-cpu-that-takes-it.md`, which the new file cites,
called it run 25's; both now attribute it to run 20's `metaldevicecase` boot
at tip `f46f91eb` and quote the log line whole instead of citing a private
path.

`the-deadline-header-promises-any-interrupt-and-only-the-timer-entry-polls.md`
called `:96` `timer_handler`'s first statement. `sed -n 90,98p
kernel/src/arch/idt/timer.rs` shows the function opens at `:92`, its first
statement is `crate::irq_census::irq_took!(Timer);` at `:93`, and
`crate::deadline::poll()` at `:96` is the second.

`a-claimed-function-must-have-msi-x-and-the-i219-may-not.md` read Ubuntu's
`mode=msi` as evidence the I219 lacks MSI-X, but the file's own paragraph
above says `e1000e` never sets `FLAG_HAS_MSIX` for this family, so Linux
picks MSI whether or not the capability exists — the reading is a delivery
mode, not a capability read. The line that does bear on `pcidev/mod.rs:544`
is quoted instead: `git show 0a5717f:issues/hardware/the-t14-answers-only-
through-a-usb-stick.md` line 63, "`pcidev` armed MSI-X alone and refused
it" — a reading against this kernel's own `enable_msix`.

The same file's exit condition has two halves — PR #442's MSI arm landing,
and the bench measurement of the IVAR write in MSI mode — and PR #442 holds
only the first; nobody holds the second. `status: assigned` over-reported
what is held, so it is `open`, with the body now saying which half #442
holds and which half is unclaimed.

`a-job-list-hangs-with-interrupts-on-and-the-deadline-ends-it.md` was closed
on run 56's readback of run 55's `lancase` boot, but run 55 ran no job list
at all (its tail records `spawn: /system/bin/test-runner: ELF: fewer bytes
than a file header`) — its subject is a storage transport dying, not a job
list hanging with interrupts on, so the file's exit condition — a
`loader.log` from a boot of the tracked shape — is still unmet. It was
`kind: defect`, not `kind: finding`, so the finding-folding rule does not
reach it; restored, per the branch's choice, rather than handing the
successor file a second exit condition. Its `ccorpus` evidence (118 C cases,
187 s) is unchanged; a line naming why run 55 does not close it is added.

PR body: `rg -n 'pcidev::release' kernel/src` prints one line
(`kernel/src/device.rs:75`) and not a definition — `pub fn release(slot:
usize)` does not contain the string `pcidev::release`, since it is written
from inside the module it defines. The body now states the command's real
output and the definition's location separately. "The sealed census is
quoted whole; it refutes any cause on cpu0" is replaced with the issue
file's own sentence, "cpu0's state explains nothing about the bound" — the
census is a 3.47 s/3.479 s snapshot 249 s before the expiry and cannot speak
for the 249 s after it. Title changed to name what the merge does instead of
calling it four findings, when none of the four added files is `kind:
finding`.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014iqcj4jDKpaiDX8B7CMvmK
@Japabu Japabu changed the title File four findings from the T14 hang investigation Files four T14 issues, promotes one, closes one, deletes two Sep 16, 2026
@Japabu Japabu changed the title Files four T14 issues, promotes one, closes one, deletes two Four T14 bench issues filed, and three standing ones corrected by the same readback Sep 16, 2026
@Japabu
Japabu enabled auto-merge September 18, 2026 14:50
@Japabu
Japabu added this pull request to the merge queue Sep 18, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to no response for status checks Sep 18, 2026
@Japabu
Japabu added this pull request to the merge queue Sep 21, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Sep 21, 2026
@Japabu
Japabu enabled auto-merge September 21, 2026 15:42
@Japabu
Japabu added this pull request to the merge queue Sep 21, 2026
Merged via the queue into main with commit e818caa Sep 21, 2026
24 checks passed
Japabu added a commit that referenced this pull request Sep 21, 2026
main's #462 rewrote issues/kernel/a-claimed-function-must-have-msi-x-and-the-i219-may-not.md
while this branch deletes it, because this branch is the first half of its exit
condition: pcidev arms MSI where a function has no MSI-X.

Every hunk of main's side is accounted for:
- kind finding -> defect, the `:544` citation, and the paragraphs saying this
  tree refuses the I219 at `:544`: made false by this branch, gone with the file.
- the bench reading that the part took the IVAR write on MSI-arming boots, and
  the second half of the exit condition: carried into
  issues/hardware/toyos-i219-refuses-a-part-outside-msi-x-mode-at-ivar.md, which
  owns the IVAR question.
- the one citation of the deleted file, which arrived with #462 in
  issues/isolation/a-reset-stops-xhci-and-leaves-every-claimed-pci-function-armed.md,
  is removed with the sentence this branch makes false.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014iqcj4jDKpaiDX8B7CMvmK
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant