Hi,
Recently
I confront the problem as follows:
In my computer(X58 mother board, Nvidia 8400 graphic card), I want
to access the size and address of Expansion Rom of Nvidia 8400 graphic card.
So in
my code, I use the following function:
pci_fill_info(pci_dev, PCI_FILL_IRQ |
PCI_FILL_BASES | PCI_FILL_ROM_BASE | PCI_FILL_SIZES);
When I use
pci_dev->rom_base_addr,
pci_dev->rom_size to get Expansion Rom’s size and address, unfortunately it return 0x00.
I have tried to find the root of this problem, I use
[root@localhost ~]# lspci -v -xxx -s
3:0.0
03:00.0 VGA
compatible controller: nVidia Corporation Unknown device 0422 (rev a1) (prog-if
00 [VGA])
Subsystem: nVidia Corporation Unknown device 0523
Flags: fast devsel, IRQ 16
Memory at c2000000 (32-bit, non-prefetchable) [disabled] [size=16M]
Memory at e0000000 (64-bit, prefetchable) [disabled] [size=256M]
Memory at c0000000 (64-bit, non-prefetchable) [disabled] [size=32M]
I/O ports at 2000 [disabled] [size=128]
Expansion ROM at <ignored> [disabled]
Capabilities: [60] Power Management version 2
Capabilities: [68] Message Signalled Interrupts: 64bit+ Queue=0/0 Enable-
Capabilities: [78] Express Endpoint IRQ 0
00: de 10 22 04 00 00 10 00 a1 00 00 03
10 00 00 00
10: 00 00 00 c2 0c 00 00 e0 00 00 00 00 04 00
00 c0
20: 00 00 00 00 01 20 00 00 00 00 00 00 de 10
23 05
30: 00 00 fe ff 60 00 00 00
00 00 00 00 0b 01 00 00
40: de 10 23 05 00 00 00 00 00 00 00 00 00 00
00 00
50: 01 00 00 00 01 00 00 00 ce d6 23 00 00 00
00 00
60: 01 68 02 00 00 00 00 00 05 78 80 00 00 00
00 00
70: 00 00 00 00 00 00 00 00 10 00 01 00 e0 84
00 00
80: 10 28 00 00 01 3d 01 00 48 00 01 11 00 00
00 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00
f0: 02 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00
As marked as red, the Expansion Rom address of
configuration address has value, but in general information it shows ignored?
Why does this problem happen?
Can anybody give me some suggestions?
Thanks in advance.