• Mel Gorman's avatar
    powerpc: Do not assert pte_locked for hugepage PTE entries · af3e4aca
    Mel Gorman authored
    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: default avatarMel Gorman <mel@csn.ul.ie>
    Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    af3e4aca
pgtable.c 6.64 KB