Christoph Hellwig <h...@infradead.org> writes: > On Wed, Oct 16, 2019 at 11:21:30AM +0530, Aneesh Kumar K.V wrote: >> With commit: 0034d395f89d ("powerpc/mm/hash64: Map all the kernel >> regions in the same 0xc range"), kernel now split the 64TB address range >> into 4 contexts each of 16TB. That implies we can do only 16TB linear >> mapping. This results in boot failure on some P9 systems. >> >> Fix this by redoing the hash 4k mapping as below. >> >> vmalloc start = 0xd000000000000000 >> IO start = 0xd000380000000000 >> vmemmap start = 0xf000000000000000 >> >> Vmalloc area is now 56TB in size and IO remap 8TB. > > Btw, is there any good reason to keep the vmalloc and ioremap ranges > separate on powerpc? Most architectures just use the low-level vmap > code to implement both and share a range.
I think the main reason is that in some configurations we can't use 64K pages for MMIO, so the 64K vmalloc mappings and 4K MMIO mappings need to be in different segments. It's possible that's no longer true on modern configs. But annoyingly I can't easily tell because the kernel doesn't know, it defers to firmware telling it via the "ibm,pa-features" property and setting MMU_FTR_CI_LARGE_PAGE. The spec (PAPR) doesn't give us any hints either it just says the bit in the device tree means: The value of 1 indicates support for I=1 (cache inhibited) large pages; else not supported. Which at least suggests that firmware is allowed to support 64K MMIO mappings or not at its whim. Hopefully Ben or Paul remember more details than me. cheers