Memory mapping PCI memory region to user space

Mark Chambers markc at mail.com
Fri Mar 24 04:43:29 EST 2006


>>
>> When I was testing the Yosemite board as the host, I found
>> that I could set the endian flag on the mmapped page, which
>> then made the PCI device registers read as 32-bit quantities
>> read back with the same layout under both x86 and PPC
>> hosts.
>
> Hmm, I guess I would handle this like how the reset of the kernel
> handle is with the io routines handling the swapping.  Not sure if
> there is any advantage to using the endian flag.  I guess if you have
> something you are treating as just memory there would be.
>
>> So, if someone planned on using that 'feature', that would
>> be a reason for writing your own mmap() implementation.
>> I didn't see any option in the sysfs file for setting that
>> page flag (but, I didn't look around in other sysfs files).
>
> There isn't a sysfs flag for the endianness page attribute since
> thats a PPC book-e specific feature.  We could possible expand things
> to support it but, I've been trying to actively avoid using the 'E' bit.
>

Framebuffer applications could care about this.  Also, on the MPC8247
(maybe others, but I know about this one) you can make the PCI space
big- or little-endian.

Seems to me this is really not an endian issue but a PCI implementation
issue.  PCI is actually endian-agnostic, so we're really 'fixing' the 
Freescale
PCI implementation with endian swapping.

Mark Chambers 




More information about the Linuxppc-embedded mailing list