powerpc: Do not assert pte_locked for hugepage PTE entries
With CONFIG_DEBUG_VM, an assertion is made when changing the protection
flags of a PTE that the PTE is locked. Huge pages use a different pagetable
format and the assertion is bogus and will always trigger with a bug looking
something like
Unable to handle kernel paging request for data at address 0xf1a00235800006f8
Faulting instruction address: 0xc000000000034a80
Oops: Kernel access of bad area, sig: 11 [#1]
SMP NR_CPUS=32 NUMA Maple
Modules linked in: dm_snapshot dm_mirror dm_region_hash
dm_log dm_mod loop evdev ext3 jbd mbcache sg sd_mod ide_pci_generic
pata_amd ata_generic ipr libata tg3 libphy scsi_mod windfarm_pid
windfarm_smu_sat windfarm_max6690_sensor windfarm_lm75_sensor
windfarm_cpufreq_clamp windfarm_core i2c_powermac
NIP:
c000000000034a80 LR:
c000000000034b18 CTR:
0000000000000003
REGS:
c000000003037600 TRAP: 0300 Not tainted (2.6.30-rc3-autokern1)
MSR:
9000000000009032 <EE,ME,IR,DR> CR:
28002484 XER:
200fffff
DAR:
f1a00235800006f8, DSISR:
0000000040010000
TASK =
c0000002e54cc740[2960] 'map_high_trunca' THREAD:
c000000003034000 CPU: 2
GPR00:
4000000000000000 c000000003037880 c000000000895d30 c0000002e5a2e500
GPR04:
00000000a0000000 c0000002edc40880 0000005700000393 0000000000000001
GPR08:
f000000011ac0000 01a00235800006e8 00000000000000f5 f1a00235800006e8
GPR12:
0000000028000484 c0000000008dd780 0000000000001000 0000000000000000
GPR16:
fffffffffffff000 0000000000000000 00000000a0000000 c000000003037a20
GPR20:
c0000002e5f4ece8 0000000000001000 c0000002edc40880 0000000000000000
GPR24:
c0000002e5f4ece8 0000000000000000 00000000a0000000 c0000002e5f4ece8
GPR28:
0000005700000393 c0000002e5a2e500 00000000a0000000 c000000003037880
NIP [
c000000000034a80] .assert_pte_locked+0xa4/0xd0
LR [
c000000000034b18] .ptep_set_access_flags+0x6c/0xb4
Call Trace:
[
c000000003037880] [
c000000003037990] 0xc000000003037990 (unreliable)
[
c000000003037910] [
c000000000034b18] .ptep_set_access_flags+0x6c/0xb4
[
c0000000030379b0] [
c00000000014bef8] .hugetlb_cow+0x124/0x674
[
c000000003037b00] [
c00000000014c930] .hugetlb_fault+0x4e8/0x6f8
[
c000000003037c00] [
c00000000013443c] .handle_mm_fault+0xac/0x828
[
c000000003037cf0] [
c0000000000340a8] .do_page_fault+0x39c/0x584
[
c000000003037e30] [
c0000000000057b0] handle_page_fault+0x20/0x5c
Instruction dump:
7d29582a 7d200074 7800d182 0b000000 3c004000 3960ffff 780007c6 796b00c4
7d290214 7929a302 1d290068 7d6b4a14 <
800b0010>
7c000074 7800d182 0b000000
This patch fixes the problem by not asseting the PTE is locked for VMAs
backed by huge pages.
Signed-off-by: Mel Gorman <mel@csn.ul.ie>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>