• B
    PCI/GPU: implement VGA arbitration on Linux · deb2d2ec
    Benjamin Herrenschmidt 提交于
    Background:
    Graphic devices are accessed through ranges in I/O or memory space. While most
    modern devices allow relocation of such ranges, some "Legacy" VGA devices
    implemented on PCI will typically have the same "hard-decoded" addresses as
    they did on ISA. For more details see "PCI Bus Binding to IEEE Std 1275-1994
    Standard for Boot (Initialization Configuration) Firmware Revision 2.1"
    Section 7, Legacy Devices.
    
    The Resource Access Control (RAC) module inside the X server currently does
    the task of arbitration when more than one legacy device co-exists on the same
    machine. But the problem happens when these devices are trying to be accessed
    by different userspace clients (e.g. two server in parallel). Their address
    assignments conflict. Therefore an arbitration scheme _outside_ of the X
    server is needed to control the sharing of these resources. This document
    introduces the operation of the VGA arbiter implemented for Linux kernel.
    Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
    Signed-off-by: NTiago Vignatti <tiago.vignatti@nokia.com>
    Signed-off-by: NDave Airlie <airlied@redhat.com>
    Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
    deb2d2ec
pci.c 71.9 KB