diff options
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/ppc/mm/pgtable.c | 5 | ||||
| -rw-r--r-- | arch/ppc/mm/tlb.c | 2 | ||||
| -rw-r--r-- | arch/ppc64/xmon/xmon.c | 2 |
3 files changed, 7 insertions, 2 deletions
diff --git a/arch/ppc/mm/pgtable.c b/arch/ppc/mm/pgtable.c index bda12bd5786f..b5316b479228 100644 --- a/arch/ppc/mm/pgtable.c +++ b/arch/ppc/mm/pgtable.c @@ -107,8 +107,11 @@ pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) ptepage->mapping = (void *) mm; ptepage->index = address & PMD_MASK; } - } else + } else { pte = (pte_t *)early_get_page(); + if (pte) + clear_page(pte); + } return pte; } diff --git a/arch/ppc/mm/tlb.c b/arch/ppc/mm/tlb.c index 34605ba4ac2f..bedc1048e9a6 100644 --- a/arch/ppc/mm/tlb.c +++ b/arch/ppc/mm/tlb.c @@ -62,7 +62,7 @@ void flush_hash_one_pte(pte_t *ptep) ptepage = virt_to_page(ptep); mm = (struct mm_struct *) ptepage->mapping; ptephys = __pa(ptep) & PAGE_MASK; - addr = ptepage->index + (((unsigned long)ptep & ~PAGE_MASK) << 9); + addr = ptepage->index + (((unsigned long)ptep & ~PAGE_MASK) << 10); flush_hash_pages(mm->context, addr, ptephys, 1); } diff --git a/arch/ppc64/xmon/xmon.c b/arch/ppc64/xmon/xmon.c index edca0c485059..b456e5763645 100644 --- a/arch/ppc64/xmon/xmon.c +++ b/arch/ppc64/xmon/xmon.c @@ -628,11 +628,13 @@ int xmon_fault_handler(struct pt_regs *regs) (data address breakpoint register) directly. */ static void set_controlled_dabr(unsigned long val) { +#ifdef CONFIG_PPC_PSERIES if (systemcfg->platform == PLATFORM_PSERIES_LPAR) { int rc = plpar_hcall_norets(H_SET_DABR, val); if (rc != H_Success) xmon_printf("Warning: setting DABR failed (%d)\n", rc); } else +#endif set_dabr(val); } |
