PCI/GPU: implement VGA arbitration on Linux
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Tue, 11 Aug 2009 05:52:06 +0000 (15:52 +1000)
committerJesse Barnes <jbarnes@virtuousgeek.org>
Wed, 9 Sep 2009 20:29:36 +0000 (13:29 -0700)
commitdeb2d2ecd43dfc51efe71eed7128fda514da96c6
treeba05339620bc285265f88d2c7c43df5fc25b732c
parent500559a92dd36af7cee95ed2f5b7722fb95a82e7
PCI/GPU: implement VGA arbitration on Linux

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: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Tiago Vignatti <tiago.vignatti@nokia.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
drivers/gpu/Makefile
drivers/gpu/vga/Kconfig [new file with mode: 0644]
drivers/gpu/vga/Makefile [new file with mode: 0644]
drivers/gpu/vga/vgaarb.c [new file with mode: 0644]
drivers/pci/pci.c
drivers/video/Kconfig
include/linux/pci.h
include/linux/vgaarb.h [new file with mode: 0644]