Repository navigation
feat(nvidia): found the chosen output's DisplayPort link and its facts - #516
Merged
Merged
Conversation
A refused assignment or facts request leaves the link not set up, and bring-up then takes the display engine down before the mode set's end. A request failing otherwise fails `set_up` with its error after both.
|
Current version of PR was reviewed by /review-bugbot with additional instructions on Oct 29, 14:11. It flagged 0 findings. Bugbot on commit |
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
Before the chosen output's link can be trained, bring-up must know which output resource and link drive its display id and what the resource's links support, so inside the mode set it has the display id assigned a resource as NVIDIA's modesetting module does and reads the resource's DisplayPort facts.
Changes
assign_output_link(display_link.h, display_link.cpp) sends NVIDIA's DFP_ASSIGN_SOR (re-declared in rm.h) for the display id and takes the last resource whose entry in the reply drives the display id on its own or as the primary of two output resources fed by two heads, as the modesetting module reads the reply.assign_output_linkreads the display id's output resource facts and takes the link their protocol names, A or B. Without a crossbar, the resource is the one those facts name, which must be a serial one display common can assign.read_link_capabilitiessends DP_GET_CAPS for the resource and counts FEC support, the increased watermark limits and PHY repeater training as set only when their bytes are 1, NVIDIA's NV_TRUE.link_rate_of_code(display_outputs.h, display_outputs.cpp) reads the highest rate code with the table that reads a display id's link rate code, a code NVIDIA defines no rate for counting as RBR.display_engine's bring-up callsset_up_output_linkand logs the resource, its link and its facts. A refused assignment or resource facts request, or an answer naming no serial resource driving DisplayPort, logs one error line ending in "so the link's DisplayPort facts are not read", and a refused DisplayPort facts request logs its own.OK. A request failing other than by display common's refusal, such as one whose reply never arrives, fails the set-up with its error after the take-down and the end.nvidia: display id 0x100 is driven by output resource 0 through its link B, as display common assigned itandnvidia: output resource 0's DisplayPort links run up to DisplayPort rate 0x1E, support FEC, take the increased watermark limits and support DisplayPort 1.2, and the firmware trains PHY repeatersbetween the mode set's start and end, with no take-down, then ended bring-up with the driver attached, with 0 IOMMU or PCIe faults on the host. No head drives the link before the driver lights an output of its own, so the monitor shows no picture; the screen was not captured.nvidia_display_linkchecks the assignment, resource facts and DisplayPort facts requests in NVIDIA's layouts, each zeroed but for what it sends though an earlier call left its frame dirty, the resource taken on its own or as the primary and none for a secondary or missing one or a refusal, the last of two entries naming the display id taken, the index taken from the output resource facts without a crossbar, each resource type, index and protocol refused and logged with its values, a crossbar reply naming no resource and a refused resource facts request logged with what they skip, none of these refusals logging a link, an error other than a refusal passed on for both facts requests, the facts' bytes counted only at 1 (0x81 and 0xFF counting as clear), DisplayPort 1.2 read from the versions' bit 0 alone, every highest rate code including one with bit 3 set, and the facts left unread on a refusal.nvidia_display_enginechecks that after the shutdown update a set-up reads the chosen output's resource facts and then the resource's DisplayPort facts, once each and before the mode set's end, logging both and taking nothing down; that with a crossbar it takes the resource and link the assignment names; that a refused assignment, or a refused or late DisplayPort facts request, takes the engine down and ends the mode set, a late one failing the set-up with its error; and that a set-up without a base buffer asks for neither.