Re: [PATCH] rmap 13a

William Lee Irwin III
2002-05-08T22:42:55Z

William Lee Irwin III wrote:
>> A:
>> static inline void *page_address(struct page *page)
>> {
>> return __va((page - mem_map) << PAGE_SHIFT);
>> }

On Thu, May 09, 2002 at 12:34:34AM +0200, Roman Zippel wrote:
> This is very broken.

I beg your pardon? AFAICT it's equivalent to the macro you yourself
posted.

include/asm-i386/page.h:133:#define __va(x) ((void *)((unsigned long)(x)+PAGE_OFFSET))

It makes only 3 assumptions:
(1) memory is contiguous
(2) memory starts from 0
(3) mem_map is in 1:1 order-preserving correspondence with phys pages

William Lee Irwin III wrote:
>> If table lookup is wanted, I feel that should also be a generic option.
>> There is nothing inherently architecture-specific about using a table-
>> driven method of calculating page_address().

On Thu, May 09, 2002 at 12:34:34AM +0200, Roman Zippel wrote:
> Archs already do the kaddr->node lookup. Archs setup the virtual mapping
> and the pgdat nodes, they know best how they are layed out. Why do you
> want to generalize this?

Because they were doing it before and they all duplicated each others' code.

Cheers,
Bill