PCI Init for X86
From DDCIDeos
Jump to navigationJump to search
Brainstorming PCI Initialization on X86
Problem - Pal is enabling PCI devices and each time we need to develop a new driver we need to update the PAL PCR 16635
The Tiger Lake BSP is currently being supported on multiple platforms as well as qemu-x86-64 (Sky Lake) and hopefully Raptor Lake. On each one of those boards, the interrupt numbers and PCIe address BARs are either not getting initialized, getting initialized then deleted by the pre-bootloader, or changing from one board to another. This causes the user to have to update the registry as steps to getting the board to run, hence the BSP is not running "out of the box".
Options:
- Current solution (not desirable) is that the PAL has to find the memory mapped resource for each BAR that is being used (requiring the name used by the driver to be known) and update the BAR back to that value. It also assigns interrupt numbers to all of the MSIs. It then prints the PCIe output to serial for the user to identify the BARs and interrupt numbers that must be updated in the PIA files.
- Provide a pci-config-prl for x86. Create a tool that goes through the enumerated devices and changes (or perhaps even creates the pia files) for the address and interrupt number so the registry matches without having to be hand modified. Problems with this solution:
- It would be an effort to create the tool.
- On some boards, the config.pci.xml would work out of the box. On others, the customer would have to create/modify a config.pci.xml for the board, which is still not an "out of the box" experience.
- Create a pci-config-prl for each of the known board configurations. This would require many more platforms, and may still not provide an "out of the box" experience for all customers.
- MORE IDEAS SOLICITED!!!