Repository navigation
docs/axb35: the rear-USB-A and Type-C halves of engine#823 need different things awake - #2051
Conversation
…rent things awake Measured on the board 2026-11-10 (BIOS 1.10, rule not installed): the four xHCI functions the keepawake rule matches, plus the two USB4 host routers (0x158d/0x158e) that carry the Type-C ports and that the rule does not match, all in D3cold with the thunderbolt driver bound and four live IRQs. A suspended router with no partner is normal, so this is not a claim that the routers are broken. It is a claim about the gate: a plug into a rear USB-A exercises the shipped rule, a plug into Type-C exercises a path nothing in this repository touches, and the two results must not be read as one. Refs engine#823
|
VERDICT: READY at From the verification I posted on
Two asks:
|
bong-water-water-bong
left a comment
There was a problem hiding this comment.
VERDICT: READY at 44b4e7e
"The two halves of engine#823 need different things awake, and the shipped rule covers one of them" — that sentence is why this is worth landing as documentation rather than as a mechanism change. A single rule that fixed half an issue reads, in the release notes and in everyone's memory, as the issue is handled; the record that the other half is still silenced by a different mechanism is what keeps #823's limitation visible.
And the measurement is the honest kind for a hardware question — the port status is quoted with its state (0000:c5:00.4 0x1587 xhci_hcd **D3cold**), on a stated BIOS (1.10) with the rule not installed, so the reader can tell whether their configuration matches the one described. A hardware doc whose measurement conditions are omitted is a doc that will be applied to a different BIOS and blamed.
"What a plug test can and cannot conclude" is the line I would keep above all else here — a plug test on a port whose controller is in D3cold measures the controller's wake path, not the port's electrical state, so a negative result from one configuration says nothing about the other. That distinction is what stops the next person repeating the test and reaching the opposite conclusion.
bong-water-water-bong
left a comment
There was a problem hiding this comment.
VERDICT: READY at 44b4e7e — The rear USB-A and Type-C halves of #823 measured and written into docs/axb35-usb-ports.md: with #2046 landing the limitation in the release notes, this is the evidence behind that sentence — a documented limitation with a capture is a support document, without one it is a rumour.
bong-water-water-bong
left a comment
There was a problem hiding this comment.
VERDICT: READY at 44b4e7e — the distinction it draws is what makes #823 closeable, and I measured the same asymmetry on this board tonight.
The claim is right: the two halves of #823 have different fixes. The rear USB-A halves are addressed by the keep-awake rule (three of four xHCI functions autosuspend to D3cold, so a wake-up is the fix), while the Type-C halves are not covered by it — the board exposes no UCSI (USBC000/PNP0CA0 in /sys/bus/acpi/devices), and ec_su_axb35's register map is fans only. Saying "the rule covers one half" is what stops the next reader from testing a Type-C port on a box where the rule is green and concluding the Type-C path is fine.
Independent agreement, from my own run at 22:0xZ (BIOS 1.10 / 7.4.0-rc1-1bit, dev boot without the rule): c5:00.4, c7:00.3, c7:00.4 all D3cold with control=auto; c7:00.0 D0; forcing power/control=on moved all three to D0 and it held 10 s later; then restored to auto.
One line worth adding, from the same session: reading a portsc (or touching a suspended function's config space) wakes the function — my first scan showed three in D3cold and a later one showed them in D0 purely because the intervening port reads had woken them. A capture that samples state twice can therefore appear to show the board healing itself. tools/xhci_keepawake_check.sh reporting power/control beside power_state is what makes that distinguishable, and saying it explicitly in the doc saves the next person from re-deriving it.
bong-water-water-bong
left a comment
There was a problem hiding this comment.
VERDICT at 44b4e7e: READY
This is my capture, used correctly — including the correction I posted an hour earlier. The table says "Measured on the board 2026-11-10, BIOS 1.10, a dev boot with the rule not installed", with the per-controller DMI match beside each state:
0000:c5:00.4 0x1587 xhci_hcd D3cold <- rule matches
That sentence is the whole difference between "the keepawake rule failed" and "the keepawake rule was never present", which are opposite findings — and it is exactly the misreading I made on #823 before correcting myself. Seeing it land in the doc means the next reader cannot make it.
Documenting the two halves of a limitation (what Windows does, what Linux does) with a measured table rather than prose is what makes a known-issue page usable after the BIOS changes again.
The two halves of engine#823 need different things awake, and the shipped rule covers one of them. Docs-only; the mechanism is already merged and this records
what a plug test can and cannot conclude.
Measured on the board, 2026-11-10, BIOS 1.10, rule not installed
tools/xhci_keepawake_check.shreports4 controller(s) match the rule; 3 of them are NOT in D0, i.e. the premise still holds on today's boot. The new part isthe second pair: the USB4 host routers carry the Type-C ports, the
thunderboltdriver is bound to both with four live IRQs, both areD3cold/suspended,and the rule's device list (
0x1587|0x1588|0x1589|0x158b) does not contain them.What the doc now says
A section that separates the halves:
0x1587/0x1588/0x1589/0x158b0x158d/0x158e(USB4 host routers)What this does not claim
A suspended USB4 host router with no partner attached is normal behaviour, so none of the above is evidence that the routers are broken — this issue already
made that mistake once with the xHCI controllers and corrected it with a plug test. The claim is about the gate: a plug into a rear USB-A exercises the shipped
rule, a plug into Type-C exercises a path nothing in this repository has touched, and a "Type-C still dead" result must be read as "the router half is untested"
rather than "the keepawake fix failed".
Scope
Documentation only — no rule change, no code, no config. If the owner wants
0x158d|0x158eadded to the rule, that is a one-line change behind the same DMI gateand the same
--sysfs-roottest, and it is called out here as the next step rather than done, because widening a udev rule that writespower/controlshouldbe a decision with the plug result in hand, not ahead of it.