[Darwin] add spidev to platform manager requiredKmodsToLoad #840
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: