I don't know what this is trying to do. It might be some kind of artifact
from when get_pgd_slow() was removed.
The expanded expression with __pa() ends up looking something like this:
(unsigned long)(u64)(u32)pmd-PAGE_OFFSET
and that is just nutty because pmd is a pointer now, anyway.
Attached patch removes the casts.
Signed-off-by: Dave Hansen <haveblue@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
pmd_t *pmd = kmem_cache_alloc(pmd_cache, GFP_KERNEL);
if (!pmd)
goto out_oom;
- set_pgd(&pgd[i], __pgd(1 + __pa((u64)((u32)pmd))));
+ set_pgd(&pgd[i], __pgd(1 + __pa(pmd)));
}
return pgd;