Re: remap_page_range64() for PPC

William Lee Irwin III
2004-10-22T14:53:45Z

On Fri, Oct 15, 2004 at 11:46:42PM -0400, Glenn Burkhardt wrote:
>> I'm writing an application to run on a PowerPC with a 2.4 embedded
>> Linux kernel, and I want to make device registers for our custom
>> hardware accessable from user space with mmap(). The physical address
>> of the device is above the 4gb boundary (we attach to the 440's
>> external peripheral bus), so a standard 'remap_page_range()' call
>> won't work.

On Fri, Oct 15, 2004 at 11:32:26PM -0700, Matt Porter wrote:
> This has come up several times on the ppc lists (but since we still
> don't have archives back, nobody can search anyway). I dropped
> 2.4 and 2.5 patches in source.mvista.com:/pub/linuxppc/ a long
> time ago. You just need to update your board-specific fixup routine
> in that version or just make a copy or remap_page_range() into your
> driver and use u64 for the phys address.
> The real fix, of course, is in the -mm tree as remap_pfn_range(),
> I plan to merge 440 io_remap_page_range() support on top of that
> call when it goes into mainline. But that doesn't help you with
> 2.4. :)

It has gone mainline. Glenn Burkhardt's troubles should now be fixed
for all time, unless io_remap_page_range() itself is in question. I'd
like to carry out a similar conversion on io_remap_page_range() so that
it can have similar safety against physical address overflow. There is
one 32-bit architecture where all IO memory is beyond the 4GB boundary,
and a number where at least some crucial portions of it are. This would
then decide how many arguments io_remap_page_range() takes. There are
some difficulties in this (particularly for the architecture[s] it
would benefit most) so I've been punting on this issue thus far.

-- wli