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

Andrea Arcangeli
2002-05-02T18:57:01Z

On Thu, May 02, 2002 at 12:31:52PM -0700, Martin J. Bligh wrote:
> between physical to virtual memory to a non 1-1 mapping.

correct. The direct mapping is nothing magic, it's like a big static
kmap area. Everybody is required to use
virt_to_page/page_address/pci_map_single/... to switch between virtual
address and mem_map anyways (thanks to the discontigous mem_map), so you
can use this property by making discontigous the virtual space as well,
not only the mem_map. discontigmem basically just allows that.

> No, you don't need to call changing that mapping "CONFIG_NONLINEAR",
> but that's basically what the bulk of Dan's patch does, so I think we should
> steal it with impunity ;-)

The difference is that if you use discontigmem you don't clobber the
common code in any way, there is no "logical/ordinal" abstraction,
there is no special table, it's all hidden in the arch section, and the
pgdat you need them anyways to allocate from affine memory with numa.

Actually the same mmu technique can be used to coalesce in virtual
memory the discontigous chunks of iSeries, then you left the lookup in
the tree to resolve from mem_map to the right virtual address and from
the right virtual address back to mem_map. (and you left DISCONTIGMEM
disabled) I think it should be possible.

Andrea