On Thu, 2010-02-18 at 21:58 +1300, Michael Cree wrote: > Thanks for that. That explains quite a bit. Maybe I should step back to > explain what I am trying to solve which, in short, is to get the Xserver > going on old Alpha architectures that cannot do byte and word accesses > to I/O ports via dense memory. There's a special sparse mapping to > achieve that.
I'm very very very sorry. > I wondered whether I could use the new pci_device_open_io() routines in > libpciaccess, but with my testing, and your description of the PCI > resources on the x86, it is clear that this is not going to work. The > resource at bar 2 on a radeon card, despite being used as "I/O ports", > is in fact a memory resource, and has to be memory mapped. Register banks usually are, yes. > It's easy enough to get pci_device_map_range() to map both the dense and > the sparse mapping on the older Alphas (I have already implemented > that). The problem is getting the location of the sparse map, in > addition to the location of the dense map, returned back to the calling > video driver as pci_device_map_range() returns only one address and an > error code. Somehow the address of the sparse mapping has to be made > available to the Xserver's MMIO_IN/OUT routines. Any suggestions how? I'd really rather see MMIO_IN/OUT come in a new version that takes the map as a second parameter, rather than have some kind of global state in the X server for "the sparse map". You could have multiple radeons, for example. - ajax
signature.asc
Description: This is a digitally signed message part
_______________________________________________ xorg-devel mailing list [email protected] http://lists.x.org/mailman/listinfo/xorg-devel
