libpciaccess problem with new IO interface
ajax at nwnk.net
Thu Feb 18 10:25:44 PST 2010
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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Size: 198 bytes
Desc: This is a digitally signed message part
Url : http://lists.x.org/archives/xorg-devel/attachments/20100218/eb49ebea/attachment.pgp
More information about the xorg-devel