Re: [PATCH] VGA arbitration: draft of kernel side

Benjamin Herrenschmidt
2005-03-09T05:41:56Z

On Tue, 2005-03-08 at 23:35 -0500, Jon Smirl wrote:
> This is from /linux-2.5/Documentation/filesystems/sysfs-pci.txt. It
> describes how ia64 is achieving legacy IO. The VGA control code
> probably needs to be coordinated with this.

This is a different thing, and I will implement it on ppc one of these
days. This is for issuing the IO cycles on the bus. It has nothing
to do with the actual arbitration work.

> --------------------------------------------------------------------------
>
> Accessing legacy resources through sysfs
>
> Legacy I/O port and ISA memory resources are also provided in sysfs if the
> underlying platform supports them. They're located in the PCI class heirarchy,
> e.g.
>
> /sys/class/pci_bus/0000:17/
> |-- bridge -> ../../../devices/pci0000:17
> |-- cpuaffinity
> |-- legacy_io
> `-- legacy_mem
>
> The legacy_io file is a read/write file that can be used by applications to
> do legacy port I/O. The application should open the file, seek to the desired
> port (e.g. 0x3e8) and do a read or a write of 1, 2 or 4 bytes. The legacy_mem
> file should be mmapped with an offset corresponding to the memory offset
> desired, e.g. 0xa0000 for the VGA frame buffer. The application can then
> simply dereference the returned pointer (after checking for errors of course)
> to access legacy memory space.
>
> Supporting PCI access on new platforms
>
> In order to support PCI resource mapping as described above, Linux platform
> code must define HAVE_PCI_MMAP and provide a pci_mmap_page_range function.
> Platforms are free to only support subsets of the mmap functionality, but
> useful return codes should be provided.
>
> Legacy resources are protected by the HAVE_PCI_LEGACY define. Platforms
> wishing to support legacy functionality should define it and provide
> pci_legacy_read, pci_legacy_write and pci_mmap_legacy_page_range functions.
>
>
--
Benjamin Herrenschmidt <benh@kernel.crashing.org>