Repository navigation
feat(nvidia): required each active head's link to be a serial link - #514
Merged
FlareCoding merged 1 commit intoOct 29, 2026
Merged
Conversation
|
Current version of PR was reviewed by /review-bugbot with additional instructions on Oct 29, 06:20. It flagged 0 findings. Bugbot on commit |
A link reply naming anything but one of the chip's serial links is refused as malformed, since detaching an active head writes its link's control, which must not fall past the chip's links.
FlareCoding
force-pushed
the
pr/nvidia-head-serial-links
branch
from
October 29, 2026 07:47
f0d8a32 to
f0cf505
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Bring-up refuses as malformed an active head (one of the display engine's units that each generate one monitor's timing, left driving a monitor by the boot firmware) whose link is not one of the chip's serial links (NVIDIA's SORs, the units each driving one DisplayPort, HDMI or DVI connector), so a board whose firmware lit a head through another kind of link (a parallel input output resource or PIOR, a display serial interface or DSI, or an analog output resource or DAC) or through a serial link at index 4 or past on GA102 fails
attach()withERR_BAD_MESSAGEand keeps its boot framebuffer, where NVIDIA's driver goes on. The reason lands in the next PR, whose shutdown update stops each active head by writing its link's control, which must not name a link past the chip's serial links.Changes
chip_display::serial_link_count(chip.h, chip.cpp) is 4 on GA102 (on the RTX 3080 the firmware answers its DisplayPort capabilities request,DP_GET_CAPS, for four SORs), and a static assertion keeps every chip's count withinSERIAL_LINKS_MAX, the 8 NVIDIA's driver allows (NV_EVO_MAX_ORS).read_active_heads(display_active_heads.cpp) takes the count fromdisplay_engine::set_upand refuses withERR_BAD_MESSAGEa reply of display common (the firmware's object for the display's connectors) that names, for a head's display id, a link of a type other than NVIDIA's serial output resource (rm::OUTPUT_RESOURCE_TYPE_SERIAL, 2) or an index at or past the count. It logs the link's index and type with the head and its display id and leaves the caller's heads as they were.nvidia: head 0 shows display id 0x100, which is output 0, through link 0 of NVIDIA's output resource type 2, then head 0 as the boot head owning window 0, and ended bring-up with the driver attached and 0 IOMMU or PCIe faults on the host.nvidia_display_active_headschecks that a link naming a DAC, a PIOR, a DSI or a type NVIDIA's driver lacks, or a serial link at index 4, 256, 2147483647 or 4294967294, is refused as malformed with a crossbar, each logging the link's index and type, with no later request and the caller's heads kept, while its other tests and the display engine's give the chip 4 serial links.