Re: [PATCH 3/5] powerpc/mm/32: Use page_is_ram to check for RAM

From: Michael Ellerman
Date: Mon Mar 19 2018 - 07:19:46 EST


Michael Ellerman <mpe@xxxxxxxxxxxxxx> writes:
> Jonathan NeuschÃfer <j.neuschaefer@xxxxxxx> writes:
>
>> Signed-off-by: Jonathan NeuschÃfer <j.neuschaefer@xxxxxxx>
>> ---
>> arch/powerpc/mm/pgtable_32.c | 3 +--
>> 1 file changed, 1 insertion(+), 2 deletions(-)
>>
>> diff --git a/arch/powerpc/mm/pgtable_32.c b/arch/powerpc/mm/pgtable_32.c
>> index d35d9ad3c1cd..d54e1a9c1c99 100644
>> --- a/arch/powerpc/mm/pgtable_32.c
>> +++ b/arch/powerpc/mm/pgtable_32.c
>> @@ -145,9 +145,8 @@ __ioremap_caller(phys_addr_t addr, unsigned long size, unsigned long flags,
>> #ifndef CONFIG_CRASH_DUMP
>> /*
>> * Don't allow anybody to remap normal RAM that we're using.
>> - * mem_init() sets high_memory so only do the check after that.
>> */
>> - if (slab_is_available() && (p < virt_to_phys(high_memory)) &&
>> + if (page_is_ram(__phys_to_pfn(p)) &&
>> !(__allow_ioremap_reserved && memblock_is_region_reserved(p, size))) {
>> printk("__ioremap(): phys addr 0x%llx is RAM lr %ps\n",
>> (unsigned long long)p, __builtin_return_address(0));
>
>
> This is killing my p5020ds (Freescale e5500) unfortunately:

Duh, I should actually read the patch :)

This is a 32-bit system with 4G of RAM, so not all of RAM is mapped,
some of it is highem which is why removing the test against high_memory
above breaks it.

So I need the high_memory test on this system.

I'm not clear why it was a problem for you on the Wii, do you even build
the Wii kernel with HIGHMEM enabled?

cheers