On Wed, 2019-10-16 at 20:30 +1100, Michael Ellerman wrote: > 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.
Not 100% certain but I think the HW only started supporting non-4k MMIO pages with P7 (or was it some variant of P6 ?) Also it's unclear under what circumstances the proprietary hypervisor or KVM will allow it. I know at some point KVM didn't... Cheers, Ben.