Ok, how does this one look? It needs some obvious work, but is the approach of adding functionality to sysfs instead of /proc the right way to go? What I've done: o add mmap support to bin files in sysfs o make PCI resources available via mmap o make legacy I/O and memory space available in sysfs e.g. 0000:01:03.0/ |-- class |-- config |-- detach_state |-- device |-- driver -> ../../../bus/pci/drivers/qla1280 |-- host0 | |-- irq |-- legacy_io |-- legacy_mem |-- local_cpus |-- resource |-- resource0 |-- resource1 |-- rom |-- subsystem_device |-- subsystem_vendor `-- vendor Things that need work: o documentation o file placement o more error checking (e.g. don't call attr->read() unless it exists!) I'm not sure where we should put the legacy stuff. On sn2, each PCI root bus could have its own legacy files, but on other machines it might be a per-domain attribute. Maybe we could define the API to be such that applications have to walk upward from the device they're interested in to get to legacy stuff? Also, some arches (like ia64) don't allow mmap of I/O space, so I/O resources exported above will be useless unless I add read/write methods for I/O space. Thanks, Jesse