PCI card recognition and system boot

Good afternoon,

I am having trouble with a peripheral card developed in house; lets
call it CCA. This card uses a PCI interface defined as the data
acquisition class. Upon cycling the power on the system, I get the
following messages from the sloginfo utility.

Dec 18 13:21:02 3 17 0 Range check failed
(IO) - Dev 1 - Vend 1895 - Class 118000 - Addr 0 - Size 1000
Dec 18 13:21:02 3 17 0 Range check failed (MEM) - Dev 1 -
Vend 1895 - Class 118000 - Addr 0 - Size 4000000
Dec 18 13:21:02 3 17 0 Range check failed (MEM) - Dev 1 -
Vend 1895 - Class 118000 - Addr 0 - Size 4000000
Dec 18 13:21:02 3 17 0 Range check failed (MEM) - Dev 1 -
Vend 1895 - Class 118000 - Addr 0 - Size 10000
Dec 18 13:21:02 3 17 0 Range check failed (MEM) - Dev 1 -
Vend 1895 - Class 118000 - Addr 0 - Size 8000

These messages are confirmed by the pci utility,
reporting the following information:[/size:ab5bec991c]
Class = Data Acquisition (Unknown)
Vendor ID = 1895h, Unknown
Device ID = 1h, Unknown Unknown
PCI index = 0h
Class Codes = 118000h
Revision ID = 1h
Bus number = 2
Device number = 12
Function num = 0
Status Reg = 2b0h
Command Reg = 143h
I/O space access enabled
Memory space access enabled
Bus Master disabled
Special Cycle operations ignored
Memory Write and Invalidate disabled
Palette Snooping disabled
Parity Checking disabled
Data/Address stepping enabled
SERR# driver disabled
Fast back-to-back transactions to different agents enabled
Header type = 0h Single-function
BIST = 0h Build-in-self-test not supported
Latency Timer = 42h
Cache Line Size= 10h un-cacheable
PCI IO Address = 0h length 4096 enabled
PCI Mem Address = 0h prefetchable 32bit length 67108864 enabled
PCI Mem Address = 0h prefetchable 32bit length 67108864 enabled
PCI Mem Address = 0h prefetchable 32bit length 65536 enabled
PCI Mem Address = 0h prefetchable 32bit length 32768 enabled
Max Lat = 26ns
Min Gnt = 8ns
PCI Int Pin = INT A
Interrupt line = 0
CPU Interrupt = 0h
Capabilities Pointer = 80h
Capability ID = 6h
Capabilities = 0h - 0h
Device Dependent Registers:
0x40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x80: 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[/size:ab5bec991c]

However, if I proceed with a ‘warm’ boot (without
cycling the power), the sliginfo utility does not report any ‘range
check failed’ errors for the peripheral card. The CCA card is
correctly detected by pci-bios, and the pci utility reports the
following:[/size:ab5bec991c]

Class = Data Acquisition (Unknown)
Vendor ID = 1895h, Unknown
Device ID = 1h, Unknown Unknown
PCI index = 0h
Class Codes = 118000h
Revision ID = 1h
Bus number = 2
Device number = 12
Function num = 0
Status Reg = 2b0h
Command Reg = 103h
I/O space access enabled
Memory space access enabled
Bus Master disabled
Special Cycle operations ignored
Memory Write and Invalidate disabled
Palette Snooping disabled
Parity Checking disabled
Data/Address stepping disabled
SERR# driver disabled
Fast back-to-back transactions to different agents enabled
Header type = 0h Single-function
BIST = 0h Build-in-self-test not supported
Latency Timer = 42h
Cache Line Size= 10h un-cacheable
PCI IO Address = 3000h length 4096 enabled
PCI Mem Address = f4000000h prefetchable 32bit length 67108864
enabled
PCI Mem Address = f0000000h prefetchable 32bit length 67108864
enabled
PCI Mem Address = f8000000h prefetchable 32bit length 65536 enabled
PCI Mem Address = f8010000h prefetchable 32bit length 32768 enabled
Max Lat = 26ns
Min Gnt = 8ns
PCI Int Pin = INT A
Interrupt line = 11
CPU Interrupt = bh
Capabilities Pointer = 80h
Capability ID = 6h
Capabilities = 0h - 0h
Device Dependent Registers:
0x40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x80: 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[/size:ab5bec991c]
Any suggestions to avoid this warm reboot? I have
added a delay in the boot image before calling pci-bios, thinking that
the error might be related to the on-board FPGA not being loaded. But
this approach did not correct the error.

Once the warm boot is completed I have access to the card and can
control it successfully.

Thanks in advance for your help
Daniel Labonté
[/size:ab5bec991c]

Hi,

dlabonte schrieb:

Good afternoon,

I am having trouble with a peripheral card developed in house; lets
call it CCA. This card uses a PCI interface defined as the data
acquisition class. Upon cycling the power on the system, I get the
following messages from the sloginfo utility.

Dec 18 13:21:02 3 17 0 Range check failed
(IO) - Dev 1 - Vend 1895 - Class 118000 - Addr 0 - Size 1000
Dec 18 13:21:02 3 17 0 Range check failed (MEM) - Dev 1 -
Vend 1895 - Class 118000 - Addr 0 - Size 4000000
Dec 18 13:21:02 3 17 0 Range check failed (MEM) - Dev 1 -
Vend 1895 - Class 118000 - Addr 0 - Size 4000000
Dec 18 13:21:02 3 17 0 Range check failed (MEM) - Dev 1 -
Vend 1895 - Class 118000 - Addr 0 - Size 10000
Dec 18 13:21:02 3 17 0 Range check failed (MEM) - Dev 1 -
Vend 1895 - Class 118000 - Addr 0 - Size 8000

These messages are confirmed by the pci utility,
reporting the following information:[/size:ab5bec991c]
Class = Data Acquisition (Unknown)
Vendor ID = 1895h, Unknown
Device ID = 1h, Unknown Unknown
PCI index = 0h
Class Codes = 118000h
Revision ID = 1h
Bus number = 2
Device number = 12
Function num = 0
Status Reg = 2b0h
Command Reg = 143h
I/O space access enabled
Memory space access enabled
Bus Master disabled
Special Cycle operations ignored
Memory Write and Invalidate disabled
Palette Snooping disabled
Parity Checking disabled
Data/Address stepping enabled
SERR# driver disabled
Fast back-to-back transactions to different agents enabled
Header type = 0h Single-function
BIST = 0h Build-in-self-test not supported
Latency Timer = 42h
Cache Line Size= 10h un-cacheable
PCI IO Address = 0h length 4096 enabled
PCI Mem Address = 0h prefetchable 32bit length 67108864 enabled
PCI Mem Address = 0h prefetchable 32bit length 67108864 enabled
PCI Mem Address = 0h prefetchable 32bit length 65536 enabled
PCI Mem Address = 0h prefetchable 32bit length 32768 enabled
Max Lat = 26ns
Min Gnt = 8ns
PCI Int Pin = INT A
Interrupt line = 0
CPU Interrupt = 0h
Capabilities Pointer = 80h
Capability ID = 6h
Capabilities = 0h - 0h
Device Dependent Registers:
0x40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x80: 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[/size:ab5bec991c]

this device is not configured. This is normally done by IPL-Code.
(pc-bios, boot-monitor,…)
Is your host a x86 PC ?

However, if I proceed with a ‘warm’ boot (without
cycling the power), the sliginfo utility does not report any ‘range
check failed’ errors for the peripheral card. The CCA card is
correctly detected by pci-bios, and the pci utility reports the
following:[/size:ab5bec991c]

Class = Data Acquisition (Unknown)
Vendor ID = 1895h, Unknown
Device ID = 1h, Unknown Unknown
PCI index = 0h
Class Codes = 118000h
Revision ID = 1h
Bus number = 2
Device number = 12
Function num = 0
Status Reg = 2b0h
Command Reg = 103h
I/O space access enabled
Memory space access enabled
Bus Master disabled
Special Cycle operations ignored
Memory Write and Invalidate disabled
Palette Snooping disabled
Parity Checking disabled
Data/Address stepping disabled
SERR# driver disabled
Fast back-to-back transactions to different agents enabled
Header type = 0h Single-function
BIST = 0h Build-in-self-test not supported
Latency Timer = 42h
Cache Line Size= 10h un-cacheable
PCI IO Address = 3000h length 4096 enabled
PCI Mem Address = f4000000h prefetchable 32bit length 67108864
enabled
PCI Mem Address = f0000000h prefetchable 32bit length 67108864
enabled
PCI Mem Address = f8000000h prefetchable 32bit length 65536 enabled
PCI Mem Address = f8010000h prefetchable 32bit length 32768 enabled
Max Lat = 26ns
Min Gnt = 8ns
PCI Int Pin = INT A
Interrupt line = 11
CPU Interrupt = bh
Capabilities Pointer = 80h
Capability ID = 6h
Capabilities = 0h - 0h
Device Dependent Registers:
0x40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x80: 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[/size:ab5bec991c]
Now the device is well configured.

Looks like you only have a Pluf&Play RUN in your IPL, if you warmboot?!
If this is a x86 PC, have you switched off “PLUG&PLAY OS” in the bios?

Any suggestions to avoid this warm reboot? I have
added a delay in the boot image before calling pci-bios, thinking that
the error might be related to the on-board FPGA not being loaded. But
this approach did not correct the error.
This approach cannot help, because you must have loaded your FPGA before

the “PLUG&PLAY RUN” is made. AFAIK the “PLUG&PLAY RUN” is made by IPL
and not by the pci-bios resource manager.

-Michael

Once the warm boot is completed I have access to the card and can
control it successfully.

Thanks in advance for your help
Daniel Labonté
[/size:ab5bec991c]

dlabonte <labonte_d@yahoo-dot-ca.no-spam.invalid> wrote:

Good afternoon,

On an x86 machine, our pci server (pci-bios) lets the machine’s
PCI-BIOS find and configure all the various I/O cards, then it
just asks that BIOS what the configurations are.

The fact that the soft reboot allows the card to be properly
configured suggests that something on the hardware/firmware
side is not configuring properly.

It may be that your idea about a delay to allow the FPGA to
initialize is correct, but if so, it would have to be a delay
before the system’s PCI BIOS does its configuration, rather than
before any QNX components run, so introducing a delay in the
boot image will be a delay that is too late, after the problem
has already happened. Can you try booting the machine from
power off, and instead of letting it boot, throw it into the
BIOS configuration screen, leave it there for a few seconds, then
continue with the boot?

Another thing that might be worth trying, would be to see whether
the behaviour is particular to the PCI BIOS on the current machine,
and try this on a different machine. (One that would have a different
BIOS.)

-David

I am having trouble with a peripheral card developed in house; lets
call it CCA. This card uses a PCI interface defined as the data
acquisition class. Upon cycling the power on the system, I get the
following messages from the sloginfo utility.

Dec 18 13:21:02 3 17 0 Range check failed
(IO) - Dev 1 - Vend 1895 - Class 118000 - Addr 0 - Size 1000
Dec 18 13:21:02 3 17 0 Range check failed (MEM) - Dev 1 -
Vend 1895 - Class 118000 - Addr 0 - Size 4000000
Dec 18 13:21:02 3 17 0 Range check failed (MEM) - Dev 1 -
Vend 1895 - Class 118000 - Addr 0 - Size 4000000
Dec 18 13:21:02 3 17 0 Range check failed (MEM) - Dev 1 -
Vend 1895 - Class 118000 - Addr 0 - Size 10000
Dec 18 13:21:02 3 17 0 Range check failed (MEM) - Dev 1 -
Vend 1895 - Class 118000 - Addr 0 - Size 8000

These messages are confirmed by the pci utility,
reporting the following information:[/size:ab5bec991c]
Class = Data Acquisition (Unknown)
Vendor ID = 1895h, Unknown
Device ID = 1h, Unknown Unknown
PCI index = 0h
Class Codes = 118000h
Revision ID = 1h
Bus number = 2
Device number = 12
Function num = 0
Status Reg = 2b0h
Command Reg = 143h
I/O space access enabled
Memory space access enabled
Bus Master disabled
Special Cycle operations ignored
Memory Write and Invalidate disabled
Palette Snooping disabled
Parity Checking disabled
Data/Address stepping enabled
SERR# driver disabled
Fast back-to-back transactions to different agents enabled
Header type = 0h Single-function
BIST = 0h Build-in-self-test not supported
Latency Timer = 42h
Cache Line Size= 10h un-cacheable
PCI IO Address = 0h length 4096 enabled
PCI Mem Address = 0h prefetchable 32bit length 67108864 enabled
PCI Mem Address = 0h prefetchable 32bit length 67108864 enabled
PCI Mem Address = 0h prefetchable 32bit length 65536 enabled
PCI Mem Address = 0h prefetchable 32bit length 32768 enabled
Max Lat = 26ns
Min Gnt = 8ns
PCI Int Pin = INT A
Interrupt line = 0
CPU Interrupt = 0h
Capabilities Pointer = 80h
Capability ID = 6h
Capabilities = 0h - 0h
Device Dependent Registers:
0x40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x80: 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[/size:ab5bec991c]

However, if I proceed with a ‘warm’ boot (without
cycling the power), the sliginfo utility does not report any ‘range
check failed’ errors for the peripheral card. The CCA card is
correctly detected by pci-bios, and the pci utility reports the
following:[/size:ab5bec991c]

Class = Data Acquisition (Unknown)
Vendor ID = 1895h, Unknown
Device ID = 1h, Unknown Unknown
PCI index = 0h
Class Codes = 118000h
Revision ID = 1h
Bus number = 2
Device number = 12
Function num = 0
Status Reg = 2b0h
Command Reg = 103h
I/O space access enabled
Memory space access enabled
Bus Master disabled
Special Cycle operations ignored
Memory Write and Invalidate disabled
Palette Snooping disabled
Parity Checking disabled
Data/Address stepping disabled
SERR# driver disabled
Fast back-to-back transactions to different agents enabled
Header type = 0h Single-function
BIST = 0h Build-in-self-test not supported
Latency Timer = 42h
Cache Line Size= 10h un-cacheable
PCI IO Address = 3000h length 4096 enabled
PCI Mem Address = f4000000h prefetchable 32bit length 67108864
enabled
PCI Mem Address = f0000000h prefetchable 32bit length 67108864
enabled
PCI Mem Address = f8000000h prefetchable 32bit length 65536 enabled
PCI Mem Address = f8010000h prefetchable 32bit length 32768 enabled
Max Lat = 26ns
Min Gnt = 8ns
PCI Int Pin = INT A
Interrupt line = 11
CPU Interrupt = bh
Capabilities Pointer = 80h
Capability ID = 6h
Capabilities = 0h - 0h
Device Dependent Registers:
0x40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x80: 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0xF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[/size:ab5bec991c]
Any suggestions to avoid this warm reboot? I have
added a delay in the boot image before calling pci-bios, thinking that
the error might be related to the on-board FPGA not being loaded. But
this approach did not correct the error.

Once the warm boot is completed I have access to the card and can
control it successfully.

Thanks in advance for your help
Daniel Labonte
[/size:ab5bec991c]


David Gibbs
QNX Training Services
dagibbs@qnx.com

Thank you for the replies.

The system used is a x86 machine, using an Intel 855GME R2 chipset.
I did not see references to the Plug&Play in the bios other than
PCI/PNP ISA UMB region exclusion. I will investigate developing an
IPL for this card.

I have tried to throw the booting process into the BIOS configuration
screen before continuing the boot process without changes.

Finally the time delay was placed prior to calling pci-bios in the
ifs file. Once again, this approach did not correct the detection
of the pci peripheral.

The investigation continues. Thank to all for your help, much
appreciated.

Daniel