On 11/01/2016 06:59 AM, James Hogan wrote: > When low memory doesn't reach HIGHMEM_START (e.g. up to 256MB at PA=0 is > common) and highmem is present above HIGHMEM_START (e.g. on Malta the > RAM overlayed by the IO region is aliased at PA=0x90000000), max_low_pfn > will be initially calculated very large and then clipped down to > HIGHMEM_START. > > This causes crashes when reading /sys/kernel/mm/page_idle/bitmap > (i.e. CONFIG_IDLE_PAGE_TRACKING=y) when highmem is disabled. pfn_valid() > will compare against max_mapnr which is derived from max_low_pfn when > there is no highend_pfn set up, and will return true for PFNs right up > to HIGHMEM_START, even though they are beyond the end of low memory and > no page structs will actually exist for these PFNs. > > This is fixed by skipping high memory regions when initially calculating > max_low_pfn if highmem is disabled, so it doesn't get clipped too high. > We also clip regions which overlap the highmem boundary when highmem is > disabled, so that max_pfn doesn't extend into highmem either. > > Signed-off-by: James Hogan <james.hogan@xxxxxxxxxx> > Cc: Ralf Baechle <ralf@xxxxxxxxxxxxxx> > Cc: Paul Burton <paul.burton@xxxxxxxxxx> > Cc: linux-mips@xxxxxxxxxxxxxx Should this also go to -stable, if so, which kernels would be affected? -- Florian