Hands-on Projects for the Linux Graphics Subsystem
PCI bus provides "Plug n' Play" capability to the Video Card of the X Server, which means that the resources the video card needs, in memory and IO space, are not preconfigured but rather negotiated in Boot time by the BIOS so that conflicts with other PCI devices regarding the memory spaces required for their functionality are avoided.
As we discuss in the following sections BIOS finds the memory requirements for a certain PCI device and then fills the actual memory mapped address in the device's configuration space that the device should use. The driver, e.g. the video driver then uses the Operating System as an intermediate to learn for instance the actual memory location that will be used as the frame buffer, that is the memory area that corresponds to the video memory and its contents are sent to the screen.
In the previous sections we met PCI first in section 18.104.22.168 when a General (PCI) Bus Probe took place. In this section a "PCI in a nutshell" intro was also included. By following the source we found that the info about the PCI relies in the Operating System, for instance Linux.
PCI was examined then as the BusID xorg.conf option of the Device section. This was used in section 22.214.171.124 to locate the right video card device.
The most important part took place in section 126.96.36.199 where the memory areas and the I/O space required by the video card were mapped to the memory.