• Ivan Kokshaysky's avatar
    PCI/alpha: pci sysfs resources · 10a0ef39
    Ivan Kokshaysky authored
    This closes http://bugzilla.kernel.org/show_bug.cgi?id=10893
    which is a showstopper for X development on alpha.
    
    The generic HAVE_PCI_MMAP code (drivers/pci-sysfs.c) is not
    very useful since we have to deal with three different types
    of MMIO address spaces: sparse and dense mappings for old
    ev4/ev5 machines and "normal" 1:1 MMIO space (bwx) for ev56 and
    later.
    Also "write combine" mappings are meaningless on alpha - roughly
    speaking, alpha does write combining, IO reordering and other
    optimizations by default, unless user splits IO accesses
    with memory barriers.
    
    I think the cleanest way to deal with resource files on alpha
    is to convert the default no-op pci_create_resource_files() and
    pci_remove_resource_files() for !HAVE_PCI_MMAP case into __weak
    functions and override them with alpha specific ones.
    
    Another alpha hook is needed for "legacy_" resource files
    to handle sparse addressing (pci_adjust_legacy_attr).
    
    With the "standard" resourceN files on ev56/ev6 libpciaccess
    works "out of the box". Handling of resourceN_sparse/resourceN_dense
    files on older machines obviously requires some userland work.
    
    Sparse/dense stuff has been tested on sx164 (pca56/pyxis, normally
    uses bwx IO) with the kernel hacked into "cia compatible" mode.
    Signed-off-by: default avatarIvan Kokshaysky <ink@jurassic.park.msu.ru>
    Signed-off-by: default avatarJesse Barnes <jbarnes@virtuousgeek.org>
    10a0ef39
pci-sysfs.c 25 KB