aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-02-17 15:36:49 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2014-02-17 15:36:49 -0500
commitf2a77abdb8226b8dbad039d415d5d70a934ac605 (patch)
tree5bafcd57b253dec45b6e7d8995821653acecfba1 /include
parente4178d809fdaee32a56833fff1f5056c99e90a1a (diff)
parent66f9af83e56bfa12964d251df9d60fb571579913 (diff)
Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc
Pull powerpc fixes from Ben Herrenschmidt: "Here are some more powerpc fixes for 3.14 The main one is a nasty issue with the NUMA balancing support which requires a small generic change and the addition of a new accessor to set _PAGE_NUMA. Both have been reviewed and acked by Mel and Rik. The changelog should have plenty of details but basically, without this fix, we get random user segfaults and/or corruptions due to missing TLB/hash flushes. Aneesh series of 3 patches fixes it. We have some vDSO vs. perf fixes from Anton, some small EEH fixes from Gavin, a ppc32 regression vs the stack overflow detector, and a fix for the way we handle PCIe host bridge speed settings on pseries (which is needed for proper operations of AMD graphics cards on Power8)" * 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc: powerpc/eeh: Disable EEH on reboot powerpc/eeh: Cleanup on eeh_subsystem_enabled powerpc/powernv: Rework EEH reset powerpc: Use unstripped VDSO image for more accurate profiling data powerpc: Link VDSOs at 0x0 mm: Use ptep/pmdp_set_numa() for updating _PAGE_NUMA bit mm: Dirty accountable change only apply to non prot numa case powerpc/mm: Add new "set" flag argument to pte/pmd update function powerpc/pseries: Add Gen3 definitions for PCIE link speed powerpc/pseries: Fix regression on PCI link speed powerpc: Set the correct ksp_limit on ppc32 when switching to irq stack
Diffstat (limited to 'include')
-rw-r--r--include/asm-generic/pgtable.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h
index 8e4f41d9af4d..34c7bdc06014 100644
--- a/include/asm-generic/pgtable.h
+++ b/include/asm-generic/pgtable.h
@@ -701,6 +701,18 @@ static inline pte_t pte_mknuma(pte_t pte)
701} 701}
702#endif 702#endif
703 703
704#ifndef ptep_set_numa
705static inline void ptep_set_numa(struct mm_struct *mm, unsigned long addr,
706 pte_t *ptep)
707{
708 pte_t ptent = *ptep;
709
710 ptent = pte_mknuma(ptent);
711 set_pte_at(mm, addr, ptep, ptent);
712 return;
713}
714#endif
715
704#ifndef pmd_mknuma 716#ifndef pmd_mknuma
705static inline pmd_t pmd_mknuma(pmd_t pmd) 717static inline pmd_t pmd_mknuma(pmd_t pmd)
706{ 718{
@@ -708,6 +720,18 @@ static inline pmd_t pmd_mknuma(pmd_t pmd)
708 return pmd_clear_flags(pmd, _PAGE_PRESENT); 720 return pmd_clear_flags(pmd, _PAGE_PRESENT);
709} 721}
710#endif 722#endif
723
724#ifndef pmdp_set_numa
725static inline void pmdp_set_numa(struct mm_struct *mm, unsigned long addr,
726 pmd_t *pmdp)
727{
728 pmd_t pmd = *pmdp;
729
730 pmd = pmd_mknuma(pmd);
731 set_pmd_at(mm, addr, pmdp, pmd);
732 return;
733}
734#endif
711#else 735#else
712extern int pte_numa(pte_t pte); 736extern int pte_numa(pte_t pte);
713extern int pmd_numa(pmd_t pmd); 737extern int pmd_numa(pmd_t pmd);
@@ -715,6 +739,8 @@ extern pte_t pte_mknonnuma(pte_t pte);
715extern pmd_t pmd_mknonnuma(pmd_t pmd); 739extern pmd_t pmd_mknonnuma(pmd_t pmd);
716extern pte_t pte_mknuma(pte_t pte); 740extern pte_t pte_mknuma(pte_t pte);
717extern pmd_t pmd_mknuma(pmd_t pmd); 741extern pmd_t pmd_mknuma(pmd_t pmd);
742extern void ptep_set_numa(struct mm_struct *mm, unsigned long addr, pte_t *ptep);
743extern void pmdp_set_numa(struct mm_struct *mm, unsigned long addr, pmd_t *pmdp);
718#endif /* CONFIG_ARCH_USES_NUMA_PROT_NONE */ 744#endif /* CONFIG_ARCH_USES_NUMA_PROT_NONE */
719#else 745#else
720static inline int pmd_numa(pmd_t pmd) 746static inline int pmd_numa(pmd_t pmd)
@@ -742,10 +768,23 @@ static inline pte_t pte_mknuma(pte_t pte)
742 return pte; 768 return pte;
743} 769}
744 770
771static inline void ptep_set_numa(struct mm_struct *mm, unsigned long addr,
772 pte_t *ptep)
773{
774 return;
775}
776
777
745static inline pmd_t pmd_mknuma(pmd_t pmd) 778static inline pmd_t pmd_mknuma(pmd_t pmd)
746{ 779{
747 return pmd; 780 return pmd;
748} 781}
782
783static inline void pmdp_set_numa(struct mm_struct *mm, unsigned long addr,
784 pmd_t *pmdp)
785{
786 return ;
787}
749#endif /* CONFIG_NUMA_BALANCING */ 788#endif /* CONFIG_NUMA_BALANCING */
750 789
751#endif /* CONFIG_MMU */ 790#endif /* CONFIG_MMU */