Messages in this thread | | | Date | Thu, 2 May 2002 20:44:37 +0200 | From | Andrea Arcangeli <> | Subject | Re: Bug: Discontigmem virt_to_page() [Alpha,ARM,Mips64?] |
| |
On Thu, May 02, 2002 at 08:25:35PM +0200, Daniel Phillips wrote: > On Thursday 02 May 2002 18:40, Andrea Arcangeli wrote: > > On Thu, May 02, 2002 at 09:10:00AM -0700, Martin J. Bligh wrote: > > > > You can trivially map the phys mem between 1G and 1G+256M to be in a > > > > direct mapping between 3G+256M and 3G+512M, then you can put such 256M > > > > at offset 1G into the ZONE_NORMAL of node-id 1 with discontigmem too. > > > > > > > > The constraints you have on the normal memory are only two: > > > > > > > > 1) direct mapping > > > > 2) DMA > > > > > > > > so as far as the ram is capable of 32bit DMA with pci32 and it's mapped > > > > in the direct mapping you can put it into the normal zone. There is no > > > > difference at all between discontimem or nonlinear in this sense. > > > > > > Now imagine an 8 node system, with 4Gb of memory in each node. > > > First 4Gb is in node 0, second 4Gb is in node 1, etc. > > > > > > Even with 64 bit DMA, the real problem is breaking the assumption > > > that mem between 0 and 896Mb phys maps 1-1 onto kernel space. > > > That's 90% of the difficulty of what Dan's doing anyway, as I > > > see it. > > > > You don't need any additional common code abstraction to make virtual ^^^^^^^ > > address 3G+256G to point to physical address 1G as in my example above, > M ----^
indeed
> > after that you're free to put the physical ram between 1G and 1G+256M > > into the zone normal of node 1 and the stuff should keep working but > > with zone-normal spread in more than one node. > > I don't see that you accomplished that at all, with config_discontig. > How can you address the memory at 3G+256M? That looks like highmem to
that's virtual memory, to access it you only need to dereference the address. To get the page * you can simply use virt_to_page(3G+256M) and it will return a page at phys address 1G+256M.
> me. No good at all for kmem caches, buffers, struct pages, etc.
It is good for kmem buffers struct pages, pci32, it's ZONE_NORMAL memory.
> Without config_nonlinear, those structures will all have to be off-node > for most nodes. > > -- > Daniel
Andrea - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |