[Darwin] add spidev to platform manager requiredKmodsToLoad#840
Open
adamcalabrigo wants to merge 1 commit into
Open
[Darwin] add spidev to platform manager requiredKmodsToLoad#840adamcalabrigo wants to merge 1 commit into
adamcalabrigo wants to merge 1 commit into
Conversation
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.
Pre-submission checklist
pip install -r requirements-dev.txt && pre-commit installpre-commit runSummary
Issue
On Darwin, we have seen instances where platform_manager reports a failure to set up the SPI interface on the SMB FPGA. The root cause is the following sequence:
To load the SPI device, platform_manager first creates the PCIe subdevice, then sets the spidev driver override, and finally binds the device to the spidev driver. We are seeing this fail as follows:
If we monitor sysfs during the platform_manager initialization, we can see the following state:
This shows that there can be a state wherein platform_manager has loaded the PCIe subdevice, but the spidev driver itself still is not loaded.
Solution
To fix this issue, include the spidev driver in the
requiredKmodsToLoadin the platform_manager.json config file for Darwin and Darwin48v so that we can guarantee that the spidev driver is already loaded before platform exploration.Test Plan
Validated by stress-testing restarting the platform_manager service and verifying that SCD_SPI_MASTER and SCD_SPI_MASTER_DEVICE1 are always created successfully: