[PATCH] powerpc: Separate usage of KERNELBASE and PAGE_OFFSET
This patch separates usage of KERNELBASE and PAGE_OFFSET. I haven't looked at any of the PPC32 code, if we ever want to support Kdump on PPC we'll have to do another audit, ditto for iSeries. This patch makes PAGE_OFFSET the constant, it'll always be 0xC * 1 gazillion for 64-bit. To get a physical address from a virtual one you subtract PAGE_OFFSET, _not_ KERNELBASE. KERNELBASE is the virtual address of the start of the kernel, it's often the same as PAGE_OFFSET, but _might not be_. If you want to know something's offset from the start of the kernel you should subtract KERNELBASE. Signed-off-by: Michael Ellerman <michael@ellerman.id.au> Signed-off-by: Paul Mackerras <paulus@samba.org>
Цей коміт міститься в:

зафіксовано
Paul Mackerras

джерело
51fae6de24
коміт
b5666f7039
@@ -75,7 +75,7 @@ static void slb_flush_and_rebolt(void)
|
||||
vflags = SLB_VSID_KERNEL | virtual_llp;
|
||||
|
||||
ksp_esid_data = mk_esid_data(get_paca()->kstack, 2);
|
||||
if ((ksp_esid_data & ESID_MASK) == KERNELBASE)
|
||||
if ((ksp_esid_data & ESID_MASK) == PAGE_OFFSET)
|
||||
ksp_esid_data &= ~SLB_ESID_V;
|
||||
|
||||
/* We need to do this all in asm, so we're sure we don't touch
|
||||
@@ -213,7 +213,7 @@ void slb_initialize(void)
|
||||
asm volatile("isync":::"memory");
|
||||
asm volatile("slbmte %0,%0"::"r" (0) : "memory");
|
||||
asm volatile("isync; slbia; isync":::"memory");
|
||||
create_slbe(KERNELBASE, lflags, 0);
|
||||
create_slbe(PAGE_OFFSET, lflags, 0);
|
||||
|
||||
/* VMALLOC space has 4K pages always for now */
|
||||
create_slbe(VMALLOCBASE, vflags, 1);
|
||||
|
Посилання в новій задачі
Заблокувати користувача