Only for programmers and BIOS gurus with technical questions.
#59905 by gandhig
Fri Nov 15, 2013 8:12 am
hi, my old P3 mainboard bios was not properly detecting a modern PCI graphics card(with a PCI-e to PCI bridge) and it doesn't turn up in the pci device listing during bootup. on diagnosing with a DOS tool, the reverse PCI-PCIe bridge (Pericom chip) onboard the graphics card was not passing on the memory ranges to the secondary side of the bridge due to error condition. The PCI registers of the graphics card itself was showing "Bus access disabled".

When i installed the graphics card in a somewhat modern Core2Duo system, everything went fine. When i wrote the Memory range settings (obtained from new system) to the PCI registers of the graphics card using a DOS based PCI config utility in my old system, i was able to use the same in Windows XP but with poor performance.

i decided to disassemble my mainboard bios to understand the incompatibility and possibly mod the bios for proper detection. one abnormality i noticed was that my motherboard(award ver 6.00) bios doesn't not properly identify device BAR's if it is a combination of 'Prefetchable' type and '64 bit decoder' while pci enumeration. it is handling prefetchable memory requests(64-bit memory space) by the pci devices as 'non-prefetchable' which is the default when there is no match with the last 4 bits of BAR.

can someone shed some light on the consequences, if a non-prefetchable address range is assigned by the host to the 'prefetchable' type BAR of a pci device. i just want to know whether this is the main culprit so that i can attempt to mod my bios or it is inconseequential.