Hello NTDEV community members,
May I ask your opinion/help on below query -
In short** - Is it possible to issue FLR from user application?
In Details - A multi function NVMe drive has changed one of its function IOQ pair and/or Interrupt vector. To get this effected on host the BAR register need to be re-read by host OS. The best way to achieve this is to use FLR on the device.
On Linux I can use 'echo 1 > /sys/bus/pci/devices/BDF..' and rescan to achieve it.
On Windows, I tried to search the same. I could find the below link -
It specifically calls out that FLR can be implemented either by bus driver or by ACPI firmware.
I was giving up the hope that I can do FLR on windows from user space.
But then I came across Discrete Device Assignment (DDA) on Windows -
If I follow below steps -
1. Disable (Disable-PnpDevice -InstanceId -Confirm:$false)
2. Unmount (Dismount-VMHostAssignableDevice -LocationPath $locationPath)
3. mount (Mount-VMHostAssignableDevice -LocationPath $locationPath)
4. Enable (Enble-PnpDevice -InstanceId -Confirm:$false)
The device BAR is reread -- essentially FLR is achieved in different way from user space.
Based on above finding I was trying to achieve above effect of steps (1 to 4 above) without having hyper-V services.
My understanding is - if FLR can be achieved by above steps with hyper-V services enabled, there must be a way to achieve FLR by using either devcon.exe or SetupDI* calls without hyper-V.
But my search for this effect has not yielded any result so far.
Does anyone from this group provide some hints on it.
Note: Sorry to posting here though it is not related to driver development directly. But I am not able to find more suitable group for this question.
It looks like you're new here. If you want to get involved, click one of these buttons!
|Upcoming OSR Seminars||Kernel Debugging||30 Mar 2020||OSR Seminar Space|
|Developing Minifilters||20 Apr 2020||OSR Seminar Space & ONLINE|
|Writing WDF Drivers||11 May 2020||OSR Seminar Space & ONLINE|
|Internals & Software Drivers||28 Sept 2020||Dulles, VA|