Comment 168 for bug 95444

Revision history for this message
Thunderbird (thunderbird-linuxhardware) wrote :

I have no good method of detecting which cards are supported. Right now the detection mechanism is a crappy whitelist for some vendors and it doesn't mean all models of a vendor are supported. The best way is to make a list of pci device ids in combination with the vendor id of a board.

This information can be obtained in different ways. In case of nvclock 0.8b4 run nvclock -D:
NV_PBUS_PCI_0 (0x1800): 014f10de
NV_PBUS_PCI_0 (0x182c): 00000000

Here 0x014f is the pci device id (geforce 6200 in this case) and the pci subvendor id is 0 (to be exact the pci subvendor id is 16-bit and it at pci header offset 0x2c).

Another way is using lspci -x:
01:00.0 VGA compatible controller: nVidia Corporation NV43 [GeForce 6200] (rev a2)
00: de 10 4f 01 07 00 10 00 a2 00 00 03 00 00 00 00
10: 00 00 00 d4 0c 00 00 c8 00 00 00 00 04 00 00 da
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 60 00 00 00 00 00 00 00 05 01 00 00

In this case byte 3 and 4 contain the device id. Just reading 3 (0x4f) and 4 (0x01) might make you think the device id is 0x4f01 but it is little endian, so they need to be swapped to become '0x14f'. At 0x2c and 0x2d you would see the subvendor but in my case it is 0.

Because my subvendor is 0, here another example:
02:11.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8169 Gigabit Ethernet (rev 10)
00: ec 10 69 81 17 00 b0 02 10 00 00 02 10 20 00 00
10: 01 de 00 00 00 f0 ef df 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 7b 14 0a 24
30: 00 00 00 00 dc 00 00 00 00 00 00 00 0a 01 20 40

At 0x2c and 0x2d you see 0x7b and 0x14, the subvendor id is 0x147b which means Abit (the vendor of my motherboard).