linux-xiaomi-chiron/arch/mips/kernel
James Hogan 16a767ec63 MIPS: Fix max_low_pfn with disabled highmem
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@imgtec.com>
Cc: Paul Burton <paul.burton@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/14490/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
2016-11-04 01:45:22 +01:00
..
.gitignore
8250-platform.c
asm-offsets.c
binfmt_elfn32.c MIPS: kernel: Audit and remove any unnecessary uses of module.h 2016-10-05 01:31:20 +02:00
binfmt_elfo32.c MIPS: kernel: Audit and remove any unnecessary uses of module.h 2016-10-05 01:31:20 +02:00
bmips_5xxx_init.S
bmips_vec.S
branch.c MIPS: tracing: disable uprobe/kprobe on compact branch instructions 2016-10-06 17:37:40 +02:00
cevt-bcm1480.c
cevt-ds1287.c
cevt-gt641xx.c
cevt-r4k.c
cevt-sb1250.c
cevt-txx9.c
cps-vec-ns16550.S
cps-vec.S
cpu-bugs64.c
cpu-probe.c
crash.c mips/panic: replace smp_send_stop() with kdump friendly version in panic path 2016-10-11 15:06:32 -07:00
crash_dump.c
csrc-bcm1480.c
csrc-ioasic.c
csrc-r4k.c
csrc-sb1250.c
early_printk.c
early_printk_8250.c
elf.c
entry.S
ftrace.c
genex.S
gpio_txx9.c
head.S
i8253.c
idle.c
irq-gt641xx.c
irq-msc01.c
irq-rm7000.c
irq.c
irq_txx9.c
jump_label.c
kgdb.c
kprobes.c MIPS: tracing: disable uprobe/kprobe on compact branch instructions 2016-10-06 17:37:40 +02:00
linux32.c MIPS: kernel: Audit and remove any unnecessary uses of module.h 2016-10-05 01:31:20 +02:00
machine_kexec.c mips/panic: replace smp_send_stop() with kdump friendly version in panic path 2016-10-11 15:06:32 -07:00
Makefile
mcount.S
mips-cm.c
mips-cpc.c MIPS: CPC: Provide default mips_cpc_default_phys_base to ignore CPC 2016-11-04 00:17:46 +01:00
mips-mt-fpaff.c
mips-mt.c
mips-r2-to-r6-emul.c MIPS: Fix FCSR Cause bit handling for correct SIGFPE issue 2016-11-04 01:28:41 +01:00
mips_ksyms.c
mips_machine.c
module-rela.c
module.c MIPS: Migrate exception table users off module.h and onto extable.h 2016-10-04 16:13:57 +02:00
octeon_switch.S
perf_event.c
perf_event_mipsxx.c
pm-cps.c MIPS: pm-cps: Generate idle state entry code when CPUs are onlined 2016-10-05 01:31:20 +02:00
pm.c
probes-common.h MIPS: tracing: disable uprobe/kprobe on compact branch instructions 2016-10-06 17:37:40 +02:00
proc.c
process.c nmi_backtrace: add more trigger_*_cpu_backtrace() methods 2016-10-07 18:46:30 -07:00
prom.c
ptrace.c MIPS: Fix FCSR Cause bit handling for correct SIGFPE issue 2016-11-04 01:28:41 +01:00
ptrace32.c mm: replace access_process_vm() write parameter with gup_flags 2016-10-19 08:31:25 -07:00
r4k_fpu.S
r4k_switch.S
r2300_fpu.S MIPS: Correct MIPS I FP sigcontext layout 2016-11-04 01:39:23 +01:00
r2300_switch.S
r6000_fpu.S MIPS: Fix ISA I/II FP signal context offsets 2016-11-04 01:38:52 +01:00
relocate.c MIPS: KASLR: Fix handling of NULL FDT 2016-11-04 00:30:49 +01:00
relocate_kernel.S
reset.c
rtlx-cmp.c
rtlx-mt.c
rtlx.c
scall32-o32.S MIPS: Wire up new pkey_{mprotect,alloc,free} syscalls 2016-10-14 11:05:13 -07:00
scall64-64.S MIPS: Wire up new pkey_{mprotect,alloc,free} syscalls 2016-10-14 11:05:13 -07:00
scall64-n32.S MIPS: Wire up new pkey_{mprotect,alloc,free} syscalls 2016-10-14 11:05:13 -07:00
scall64-o32.S MIPS: Wire up new pkey_{mprotect,alloc,free} syscalls 2016-10-14 11:05:13 -07:00
segment.c
setup.c MIPS: Fix max_low_pfn with disabled highmem 2016-11-04 01:45:22 +01:00
signal-common.h
signal.c
signal32.c
signal_n32.c
signal_o32.c
smp-bmips.c
smp-cmp.c
smp-cps.c
smp-mt.c
smp-up.c
smp.c MIPS: kernel: Audit and remove any unnecessary uses of module.h 2016-10-05 01:31:20 +02:00
spinlock_test.c
spram.c
stacktrace.c
sync-r4k.c
syscall.c
sysrq.c
time.c
topology.c
traps.c MIPS: Fix FCSR Cause bit handling for correct SIGFPE issue 2016-11-04 01:28:41 +01:00
unaligned.c
uprobes.c MIPS: tracing: disable uprobe/kprobe on compact branch instructions 2016-10-06 17:37:40 +02:00
vdso.c
vmlinux.lds.S nmi_backtrace: generate one-line reports for idle cpus 2016-10-07 18:46:30 -07:00
vpe-cmp.c
vpe-mt.c
vpe.c
watch.c