I am adapting a Windows / Linux driver of a FPGA based PCIe card. (using a LatticeECP3 with PCIe Endpoint) I need to add a driver function to allow a host driven bitstream update of the FPGA without the need of rebooting the host afterwards.
I.e. after flashing I would need to reset the FPGA to let the bitstream be reloaded. This of course would lead to a loss of the Config Space settings of PCIe endpoint.
My first approach was to implement following steps:
- Save the PCI config space of the PCIe.
- Put the device into sleep mode via power management functions.
- Wake up the device via power management functions. This would trigger an FPGA reset.
- Restore the PCI Config Space.
My questions:
- Q1: Is this a supported use case for PCIe devices running on Windows 7 / Linux host platforms anyway?
- Q2: What are the appropriate key words to find documentation or coding examples about this use case.