Hi,
- Can you please explain whether an FPGA connected statically via PCIe to a CPU is a PnP device?
* If it is not a PnP it means that no MSI are supported
refer to https://msdn.microsoft.com/en-us/library/windows/hardware/ff540757(v=vs.85).aspx: “Drivers that do not support Plug and Play cannot use interrupt objects”
* If it is one when does the PnP manager invokes the driver? during power up? should the driver reset the FPGA to make the PnP map the PCIe resources?
BTW: the FPGA is operational much before the CPU is, or the OS.
Igal
If the device is enumerable over the PCIe bus it is a PnP device, and the standard PCI(e) bus driver should find it and cause the PnP subsystem to try and find a matching driver. If you boot Linux and type lspci does it show up?
PCIe defines a bunch of reset semantics, your device should follow them. After reset, a PCIe device responds to enough config space requests to be enumerated, although it may not be fully functional until the correct drivers configures it and might even do things like load firmware into it.
I assume your FPGA device loads it’s initial behavior from some external memory, like serial flash or something.
Jan
On 9/16/15, 1:06 AM, “xxxxx@lists.osr.com on behalf of xxxxx@gmail.com” wrote:
>Hi,
>
>1) Can you please explain whether an FPGA connected statically via PCIe to a CPU is a PnP device?
>
>* If it is not a PnP it means that no MSI are supported
>refer to https://msdn.microsoft.com/en-us/library/windows/hardware/ff540757(v=vs.85).aspx: “Drivers that do not support Plug and Play cannot use interrupt objects”
>
>* If it is one when does the PnP manager invokes the driver? during power up? should the driver reset the FPGA to make the PnP map the PCIe resources?
>
>BTW: the FPGA is operational much before the CPU is, or the OS.
>
>Igal
>
>—
>NTDEV is sponsored by OSR
>
>Visit the list at: http://www.osronline.com/showlists.cfm?list=ntdev
>
>OSR is HIRING!! See http://www.osr.com/careers
>
>For our schedule of WDF, WDM, debugging and other seminars visit:
>http://www.osr.com/seminars
>
>To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer
Jan,
Thabks for the reply.
I am running a windows system.
The FPGA replies correctly to the PnP.
The question were more about the interaction between the PnP and the SW
driver.
I have another one. Will the add device be invoked upon driver update
(during debugging)?
Igal
On Sep 16, 2015 12:38 PM, “Jan Bottorff” wrote:
> If the device is enumerable over the PCIe bus it is a PnP device, and the
> standard PCI(e) bus driver should find it and cause the PnP subsystem to
> try and find a matching driver. If you boot Linux and type lspci does it
> show up?
>
> PCIe defines a bunch of reset semantics, your device should follow them.
> After reset, a PCIe device responds to enough config space requests to be
> enumerated, although it may not be fully functional until the correct
> drivers configures it and might even do things like load firmware into it.
>
> I assume your FPGA device loads it’s initial behavior from some external
> memory, like serial flash or something.
>
> Jan
>
>
>
>
>
> On 9/16/15, 1:06 AM, “xxxxx@lists.osr.com on behalf of
> xxxxx@gmail.com” > xxxxx@gmail.com> wrote:
>
> >Hi,
> >
> >1) Can you please explain whether an FPGA connected statically via PCIe
> to a CPU is a PnP device?
> >
> >* If it is not a PnP it means that no MSI are supported
> >refer to
> https://msdn.microsoft.com/en-us/library/windows/hardware/ff540757(v=vs.85).aspx:
> “Drivers that do not support Plug and Play cannot use interrupt objects”
> >
> >* If it is one when does the PnP manager invokes the driver? during power
> up? should the driver reset the FPGA to make the PnP map the PCIe resources?
> >
> >BTW: the FPGA is operational much before the CPU is, or the OS.
> >
> >Igal
> >
> >—
> >NTDEV is sponsored by OSR
> >
> >Visit the list at: http://www.osronline.com/showlists.cfm?list=ntdev
> >
> >OSR is HIRING!! See http://www.osr.com/careers
> >
> >For our schedule of WDF, WDM, debugging and other seminars visit:
> >http://www.osr.com/seminars
> >
> >To unsubscribe, visit the List Server section of OSR Online at
> http://www.osronline.com/page.cfm?name=ListServer
>
> —
> NTDEV is sponsored by OSR
>
> Visit the list at: http://www.osronline.com/showlists.cfm?list=ntdev
>
> OSR is HIRING!! See http://www.osr.com/careers
>
> For our schedule of WDF, WDM, debugging and other seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR Online at
> http://www.osronline.com/page.cfm?name=ListServer
Every device in Windows, dynamically or statically enumerated, is typically a PnP device.
The only non-PnP “devices” are those created by certain software only drivers (kernel services) that do not use the PnP model.
Even if your device is built into the PCH or soldered to the main board, or if it lives as a client on an I2C bus… It’s a PnP device.
Peter
OSR
@OSRDrivers
Thank you all.
Igal
Igal Kroyter
On Wed, Sep 16, 2015 at 5:22 PM, wrote:
> Every device in Windows, dynamically or statically enumerated, is
> typically a PnP device.
>
> The only non-PnP “devices” are those created by certain software only
> drivers (kernel services) that do not use the PnP model.
>
> Even if your device is built into the PCH or soldered to the main board,
> or if it lives as a client on an I2C bus… It’s a PnP device.
>
> Peter
> OSR
> @OSRDrivers
>
>
> —
> NTDEV is sponsored by OSR
>
> Visit the list at: http://www.osronline.com/showlists.cfm?list=ntdev
>
> OSR is HIRING!! See http://www.osr.com/careers
>
> For our schedule of WDF, WDM, debugging and other seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR Online at
> http://www.osronline.com/page.cfm?name=ListServer
>
xxxxx@gmail.com wrote:
- Can you please explain whether an FPGA connected statically via PCIe to a CPU is a PnP device?
Whether an FPGA is involved is irrelevant, and its method of connection
is irrelevant. If it is a PCIe device, then it is a PnP device.
* If it is not a PnP it means that no MSI are supported
refer to https://msdn.microsoft.com/en-us/library/windows/hardware/ff540757(v=vs.85).aspx: “Drivers that do not support Plug and Play cannot use interrupt objects”
* If it is one when does the PnP manager invokes the driver? during power up? should the driver reset the FPGA to make the PnP map the PCIe resources?
The PCIe root complex will enumerate the device at boot time. It
neither knows nor cares whether the devices that respond are wired to
the motherboard, or inserted in slots, or located in the next room over
an extender cable. The BIOS will assign resources. All of that is LONG
finished before the operating system loader ever starts. The PCI driver
will ask the PCIe root complex which devices it found, and it will
expose those as PDOs. PnP will then load drivers for them. You should
NOT reset the FPGA.
BTW: the FPGA is operational much before the CPU is, or the OS.
Totally irrelevant. Just make sure the FPGA is operational before the
PCIe root complex starts to negotiate the link. If you come up after
the PCIe link negotiation is finished, then your device will not be seen
by Windows (or the BIOS), because you are violating the PCIe specification.
–
Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.
Tim, thank you for your thorough response.
Igal
On Sep 17, 2015 7:46 PM, “Tim Roberts” wrote:
> xxxxx@gmail.com wrote:
> > 1) Can you please explain whether an FPGA connected statically via PCIe
> to a CPU is a PnP device?
>
> Whether an FPGA is involved is irrelevant, and its method of connection
> is irrelevant. If it is a PCIe device, then it is a PnP device.
>
>
> > * If it is not a PnP it means that no MSI are supported
> > refer to
> https://msdn.microsoft.com/en-us/library/windows/hardware/ff540757(v=vs.85).aspx:
> “Drivers that do not support Plug and Play cannot use interrupt objects”
> >
> > * If it is one when does the PnP manager invokes the driver? during
> power up? should the driver reset the FPGA to make the PnP map the PCIe
> resources?
>
> The PCIe root complex will enumerate the device at boot time. It
> neither knows nor cares whether the devices that respond are wired to
> the motherboard, or inserted in slots, or located in the next room over
> an extender cable. The BIOS will assign resources. All of that is LONG
> finished before the operating system loader ever starts. The PCI driver
> will ask the PCIe root complex which devices it found, and it will
> expose those as PDOs. PnP will then load drivers for them. You should
> NOT reset the FPGA.
>
>
> > BTW: the FPGA is operational much before the CPU is, or the OS.
>
> Totally irrelevant. Just make sure the FPGA is operational before the
> PCIe root complex starts to negotiate the link. If you come up after
> the PCIe link negotiation is finished, then your device will not be seen
> by Windows (or the BIOS), because you are violating the PCIe specification.
>
> –
> Tim Roberts, xxxxx@probo.com
> Providenza & Boekelheide, Inc.
>
>
> —
> NTDEV is sponsored by OSR
>
> Visit the list at: http://www.osronline.com/showlists.cfm?list=ntdev
>
> OSR is HIRING!! See http://www.osr.com/careers
>
> For our schedule of WDF, WDM, debugging and other seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR Online at
> http://www.osronline.com/page.cfm?name=ListServer
>
Any PCIe device is PnP.
There can be a nonPnP driver for a PCIe device, but, since it is seriously deprecated since Windows 2000 (the presence of even 1 such driver will disable power management on the whole machine), so I would say you can hardly meet a nonPnP driver for a PCIe device.
–
Maxim S. Shatskih
Microsoft MVP on File System And Storage
xxxxx@storagecraft.com
http://www.storagecraft.com
wrote in message news:xxxxx@ntdev…
> Hi,
>
> 1) Can you please explain whether an FPGA connected statically via PCIe to a CPU is a PnP device?
>
> * If it is not a PnP it means that no MSI are supported
> refer to https://msdn.microsoft.com/en-us/library/windows/hardware/ff540757(v=vs.85).aspx: “Drivers that do not support Plug and Play cannot use interrupt objects”
>
> * If it is one when does the PnP manager invokes the driver? during power up? should the driver reset the FPGA to make the PnP map the PCIe resources?
>
> BTW: the FPGA is operational much before the CPU is, or the OS.
>
> Igal
>