Re: Bug: Discontigmem virt_to_page() [Alpha,ARM,Mips64?]

Andrea Arcangeli
2002-05-03T06:38:12Z

On Thu, May 02, 2002 at 03:20:39PM -0700, Martin J. Bligh wrote:
> > On Thu, May 02, 2002 at 08:41:36PM +0200, Andrea Arcangeli wrote:
> >> but can you plugin 32bit pci hardware into your 64bit-pci slots, right?
> >> If not, and if you're also sure the linux drivers for your hardware are all
> >> 64bit-pci capable then you can do the changes regardless of the 4G
> >> limit, in such case you can spread the direct mapping all over the whole
> >> 64G physical ram, whereever you want, no 4G constraint anymore.
> >
> > I believe 64-bit PCI is pretty much taken to be a requirement; if it
> > weren't the 4GB limit would once again apply and we'd be in much
> > trouble, or we'd have to implement a different method of accommodating
> > limited device addressing capabilities and would be in trouble again.
>
> IIRC, there are some funny games you can play with 32bit PCI DMA.
> You're not necessarily restricted to the bottom 4Gb of phys addr space,
> you're restricted to a 4Gb window, which you can shift by programming
> a register on the card. Fixing that register to point to a window for the
> node in question allows you to allocate from a node's pg_data_t and
> assure DMAable RAM is returned.

if you've as many windows as the number of nodes than you're just fine
in all cases. you only need to teach pci_map_single and friends to
return the right bus address that won't be an identity anymore with the
phys addr, then you can forget the >4G phys constraint on the pages
returned by zone_normal :).

Andrea