Installation issue

Hi,

We are developing windows driver for NVMe Target. Simulating the RAID controller as NVMe Target by changing PCIe Configuration space in Firmware.
Currently RHEL (32 bit) is up and Running.

We are using the Open Source Windows NVMe driver to test the Target. During installation, we are facing resource conflict issues.
The device manager specifies : This device cannot find enough free resources that it can use. If you want to use this device, you will need to disable one of the other devices on this system. (Code 12) .
The problem is the device manager is not specifying the conflicting device and we are not able to figure out where the conflict is occurring.

The PCI Configuration information as follows,

Vender ID : 1985
Device ID : 1985
Class Code: 01 // mass storage Controller
Subclass code: 08 // NVMe Target

Programmable Interface: 00
BAR0: 8Kb (Base address is 00000004 )
BAR1: 8Kb (Base address is 0000000C)
BAR2: 64Kb (Base address is 00000001)
Subsystem Vender ID : 1985
Subsystem Device ID: 1985

Developing Platform is Windows server 2012 & Windows server2008 Both 64 bit.

Kindly Help us to resolve the issue.

Thanks,
Ravi

::DISCLAIMER::

The contents of this e-mail and any attachment(s) are confidential and intended for the named recipient(s) only.
E-mail transmission is not guaranteed to be secure or error-free as information could be intercepted, corrupted,
lost, destroyed, arrive late or incomplete, or may contain viruses in transmission. The e mail and its contents
(with or without referred errors) shall therefore not attach any liability on the originator or HCL or its affiliates.
Views or opinions, if any, presented in this email are solely those of the author and may not necessarily reflect the
views or opinions of HCL or its affiliates. Any form of reproduction, dissemination, copying, disclosure, modification,
distribution and / or publication of this message without the prior written consent of authorized representative of
HCL is strictly prohibited. If you have received this email in error please delete it and notify the sender immediately.
Before opening any email and/or attachments, please check them for viruses and other defects.


Ravi Raj Raju wrote:

We are developing windows driver for NVMe Target. Simulating the RAID
controller as NVMe Target by changing PCIe Configuration space in
Firmware.

Currently RHEL (32 bit) is up and Running.

We are using the *Open Source Windows NVMe driver* to test the Target.
During installation, we are facing resource conflict issues.

The device manager specifies : *This device cannot find enough free
resources that it can use. If you want to use this device, you will
need to disable one of the other devices on this system. (Code 12)* .

The problem is the device manager is not specifying the conflicting
device and we are not able to figure out where the conflict is occurring.

The PCI Configuration information as follows,

Vender ID : 1985

Device ID : 1985

Class Code: 01 // mass storage Controller

Subclass code: 08 // NVMe Target

Programmable Interface: 00

BAR0: 8Kb (Base address is 00000004 )

BAR1: 8Kb (Base address is 0000000C)

BAR2: 64Kb (Base address is 00000001)

Subsystem Vender ID : 1985

Subsystem Device ID: 1985

The “base address” of 1 is suspicious. The low-order bit of a BAR
specifies whether the BAR is memory space or I/O space. When the bit is
1 that means I/O space, and there isn’t 64k of I/O space available.


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.

Hi Tim Roberts,

Thanks for your Replay.
My understanding is System BIOS / Operating system will allocate the Requested memory and fills the start address is BAR Registers. If the Requested Memory is not available, then BIOS / Operating system will not initialize the PCIe Card. But in My case, Card is initializing and BAR is overwritten by Base address(00000004, 0000000C).
Are these BAR values(00000004, 0000000C) are correct? Because they are < 1Mb. BAR address should not be this value.

Thanks,
Ravi

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of Tim Roberts
Sent: Thursday, March 07, 2013 11:57 PM
To: Kernel Debugging Interest List
Subject: Re: [windbg] Installation issue

Ravi Raj Raju wrote:

We are developing windows driver for NVMe Target. Simulating the RAID
controller as NVMe Target by changing PCIe Configuration space in
Firmware.

Currently RHEL (32 bit) is up and Running.

We are using the *Open Source Windows NVMe driver* to test the Target.
During installation, we are facing resource conflict issues.

The device manager specifies : *This device cannot find enough free
resources that it can use. If you want to use this device, you will
need to disable one of the other devices on this system. (Code 12)* .

The problem is the device manager is not specifying the conflicting
device and we are not able to figure out where the conflict is occurring.

The PCI Configuration information as follows,

Vender ID : 1985

Device ID : 1985

Class Code: 01 // mass storage Controller

Subclass code: 08 // NVMe Target

Programmable Interface: 00

BAR0: 8Kb (Base address is 00000004 )

BAR1: 8Kb (Base address is 0000000C)

BAR2: 64Kb (Base address is 00000001)

Subsystem Vender ID : 1985

Subsystem Device ID: 1985

The “base address” of 1 is suspicious. The low-order bit of a BAR
specifies whether the BAR is memory space or I/O space. When the bit is
1 that means I/O space, and there isn’t 64k of I/O space available.


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.


WINDBG is sponsored by OSR

OSR is hiring!! Info at 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

::DISCLAIMER::

The contents of this e-mail and any attachment(s) are confidential and intended for the named recipient(s) only.
E-mail transmission is not guaranteed to be secure or error-free as information could be intercepted, corrupted,
lost, destroyed, arrive late or incomplete, or may contain viruses in transmission. The e mail and its contents
(with or without referred errors) shall therefore not attach any liability on the originator or HCL or its affiliates.
Views or opinions, if any, presented in this email are solely those of the author and may not necessarily reflect the
views or opinions of HCL or its affiliates. Any form of reproduction, dissemination, copying, disclosure, modification,
distribution and / or publication of this message without the prior written consent of authorized representative of
HCL is strictly prohibited. If you have received this email in error please delete it and notify the sender immediately.
Before opening any email and/or attachments, please check them for viruses and other defects.


Ravi Raj Raju wrote:

My understanding is System BIOS / Operating system will allocate the Requested memory and fills the start address is BAR Registers. If the Requested Memory is not available, then BIOS / Operating system will not initialize the PCIe Card. But in My case, Card is initializing and BAR is overwritten by Base address(00000004, 0000000C).
Are these BAR values(00000004, 0000000C) are correct? Because they are < 1Mb. BAR address should not be this value.

No, those are invalid. My point is that the low-order two bits of the
BAR register are read-only – they indicate whether the BAR is memory
space or I/O space. The fact that the third one has “1” might mean it
is expecting I/O space. There isn’t 64kB of I/O space available, so
that would fail, and that might leave the card disabled, in which the
contents of the other BARs are irrelevant.


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.

HI all,

Debugged Windows NVMe Resource conflict issue and observed that NVMe Target is detected as Parallel port device under PCI to PCI Bridge.
We found this in Registry and Device manager. In General Scenario it should have detected as PnP Device under PCI Bus. Please let ME know is this correct behavior.

Thanks,
Ravi

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of Tim Roberts
Sent: Thursday, March 07, 2013 11:57 PM
To: Kernel Debugging Interest List
Subject: Re: [windbg] Installation issue

Ravi Raj Raju wrote:

We are developing windows driver for NVMe Target. Simulating the RAID
controller as NVMe Target by changing PCIe Configuration space in
Firmware.

Currently RHEL (32 bit) is up and Running.

We are using the *Open Source Windows NVMe driver* to test the Target.
During installation, we are facing resource conflict issues.

The device manager specifies : *This device cannot find enough free
resources that it can use. If you want to use this device, you will
need to disable one of the other devices on this system. (Code 12)* .

The problem is the device manager is not specifying the conflicting
device and we are not able to figure out where the conflict is occurring.

The PCI Configuration information as follows,

Vender ID : 1985

Device ID : 1985

Class Code: 01 // mass storage Controller

Subclass code: 08 // NVMe Target

Programmable Interface: 00

BAR0: 8Kb (Base address is 00000004 )

BAR1: 8Kb (Base address is 0000000C)

BAR2: 64Kb (Base address is 00000001)

Subsystem Vender ID : 1985

Subsystem Device ID: 1985

The “base address” of 1 is suspicious. The low-order bit of a BAR
specifies whether the BAR is memory space or I/O space. When the bit is
1 that means I/O space, and there isn’t 64k of I/O space available.


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.


WINDBG is sponsored by OSR

OSR is hiring!! Info at 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

::DISCLAIMER::

The contents of this e-mail and any attachment(s) are confidential and intended for the named recipient(s) only.
E-mail transmission is not guaranteed to be secure or error-free as information could be intercepted, corrupted,
lost, destroyed, arrive late or incomplete, or may contain viruses in transmission. The e mail and its contents
(with or without referred errors) shall therefore not attach any liability on the originator or HCL or its affiliates.
Views or opinions, if any, presented in this email are solely those of the author and may not necessarily reflect the
views or opinions of HCL or its affiliates. Any form of reproduction, dissemination, copying, disclosure, modification,
distribution and / or publication of this message without the prior written consent of authorized representative of
HCL is strictly prohibited. If you have received this email in error please delete it and notify the sender immediately.
Before opening any email and/or attachments, please check them for viruses and other defects.