Release 4.7 arch/powerpc/include/asm/mmu_context.h
#ifndef __ASM_POWERPC_MMU_CONTEXT_H
#define __ASM_POWERPC_MMU_CONTEXT_H
#ifdef __KERNEL__
#include <linux/kernel.h>
#include <linux/mm.h>
#include <linux/sched.h>
#include <linux/spinlock.h>
#include <asm/mmu.h>
#include <asm/cputable.h>
#include <asm/cputhreads.h>
/*
* Most if the context management is out of line
*/
extern int init_new_context(struct task_struct *tsk, struct mm_struct *mm);
extern void destroy_context(struct mm_struct *mm);
#ifdef CONFIG_SPAPR_TCE_IOMMU
struct mm_iommu_table_group_mem_t;
extern bool mm_iommu_preregistered(void);
extern long mm_iommu_get(unsigned long ua, unsigned long entries,
struct mm_iommu_table_group_mem_t **pmem);
extern long mm_iommu_put(struct mm_iommu_table_group_mem_t *mem);
extern void mm_iommu_init(mm_context_t *ctx);
extern void mm_iommu_cleanup(mm_context_t *ctx);
extern struct mm_iommu_table_group_mem_t *mm_iommu_lookup(unsigned long ua,
unsigned long size);
extern struct mm_iommu_table_group_mem_t *mm_iommu_find(unsigned long ua,
unsigned long entries);
extern long mm_iommu_ua_to_hpa(struct mm_iommu_table_group_mem_t *mem,
unsigned long ua, unsigned long *hpa);
extern long mm_iommu_mapped_inc(struct mm_iommu_table_group_mem_t *mem);
extern void mm_iommu_mapped_dec(struct mm_iommu_table_group_mem_t *mem);
#endif
extern void switch_slb(struct task_struct *tsk, struct mm_struct *mm);
extern void set_context(unsigned long id, pgd_t *pgd);
#ifdef CONFIG_PPC_BOOK3S_64
extern void radix__switch_mmu_context(struct mm_struct *prev,
struct mm_struct *next);
static inline void switch_mmu_context(struct mm_struct *prev,
struct mm_struct *next,
struct task_struct *tsk)
{
if (radix_enabled())
return radix__switch_mmu_context(prev, next);
return switch_slb(tsk, next);
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
| aneesh kumar | aneesh kumar | 43 | 100.00% | 2 | 100.00% |
| Total | 43 | 100.00% | 2 | 100.00% |
extern int __init_new_context(void);
extern void __destroy_context(int context_id);
static inline void mmu_context_init(void) { }
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
| benjamin herrenschmidt | benjamin herrenschmidt | 8 | 100.00% | 1 | 100.00% |
| Total | 8 | 100.00% | 1 | 100.00% |
#else
extern void switch_mmu_context(struct mm_struct *prev, struct mm_struct *next,
struct task_struct *tsk);
extern unsigned long __init_new_context(void);
extern void __destroy_context(unsigned long context_id);
extern void mmu_context_init(void);
#endif
extern void switch_cop(struct mm_struct *next);
extern int use_cop(unsigned long acop, struct mm_struct *mm);
extern void drop_cop(unsigned long acop, struct mm_struct *mm);
/*
* switch_mm is the entry point called from the architecture independent
* code in kernel/sched/core.c
*/
static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
struct task_struct *tsk)
{
/* Mark this context has been used on the new CPU */
cpumask_set_cpu(smp_processor_id(), mm_cpumask(next));
/* 32-bit keeps track of the current PGDIR in the thread struct */
#ifdef CONFIG_PPC32
tsk->thread.pgdir = next->pgd;
#endif /* CONFIG_PPC32 */
/* 64-bit Book3E keeps track of current PGD in the PACA */
#ifdef CONFIG_PPC_BOOK3E_64
get_paca()->pgd = next->pgd;
#endif
/* Nothing else to do if we aren't actually switching */
if (prev == next)
return;
#ifdef CONFIG_PPC_ICSWX
/* Switch coprocessor context only if prev or next uses a coprocessor */
if (prev->context.acop || next->context.acop)
switch_cop(next);
#endif /* CONFIG_PPC_ICSWX */
/* We must stop all altivec streams before changing the HW
* context
*/
#ifdef CONFIG_ALTIVEC
if (cpu_has_feature(CPU_FTR_ALTIVEC))
asm volatile ("dssall");
#endif /* CONFIG_ALTIVEC */
/*
* The actual HW switching method differs between the various
* sub architectures. Out of line for now
*/
switch_mmu_context(prev, next, tsk);
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
| benjamin herrenschmidt | benjamin herrenschmidt | 47 | 37.01% | 3 | 30.00% |
| tseng-hui (frank) lin | tseng-hui (frank) lin | 26 | 20.47% | 1 | 10.00% |
| anton blanchard | anton blanchard | 22 | 17.32% | 1 | 10.00% |
| paul mackerras | paul mackerras | 13 | 10.24% | 1 | 10.00% |
| andrew morton | andrew morton | 9 | 7.09% | 1 | 10.00% |
| rusty russell | rusty russell | 4 | 3.15% | 1 | 10.00% |
| olof johansson | olof johansson | 3 | 2.36% | 1 | 10.00% |
| aneesh kumar | aneesh kumar | 3 | 2.36% | 1 | 10.00% |
| Total | 127 | 100.00% | 10 | 100.00% |
#define deactivate_mm(tsk,mm) do { } while (0)
/*
* After we have set current->mm to a new value, this activates
* the context for the new mm so we see the new mappings.
*/
static inline void activate_mm(struct mm_struct *prev, struct mm_struct *next)
{
unsigned long flags;
local_irq_save(flags);
switch_mm(prev, next, current);
local_irq_restore(flags);
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
| andrew morton | andrew morton | 36 | 90.00% | 1 | 50.00% |
| anton blanchard | anton blanchard | 4 | 10.00% | 1 | 50.00% |
| Total | 40 | 100.00% | 2 | 100.00% |
/* We don't currently use enter_lazy_tlb() for anything */
static inline void enter_lazy_tlb(struct mm_struct *mm,
struct task_struct *tsk)
{
/* 64-bit Book3E keeps track of current PGD in the PACA */
#ifdef CONFIG_PPC_BOOK3E_64
get_paca()->pgd = NULL;
#endif
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
| benjamin herrenschmidt | benjamin herrenschmidt | 30 | 100.00% | 2 | 100.00% |
| Total | 30 | 100.00% | 2 | 100.00% |
static inline void arch_dup_mmap(struct mm_struct *oldmm,
struct mm_struct *mm)
{
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
| laurent dufour | laurent dufour | 16 | 100.00% | 1 | 100.00% |
| Total | 16 | 100.00% | 1 | 100.00% |
static inline void arch_exit_mmap(struct mm_struct *mm)
{
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
| laurent dufour | laurent dufour | 11 | 100.00% | 1 | 100.00% |
| Total | 11 | 100.00% | 1 | 100.00% |
static inline void arch_unmap(struct mm_struct *mm,
struct vm_area_struct *vma,
unsigned long start, unsigned long end)
{
if (start <= mm->context.vdso_base && mm->context.vdso_base < end)
mm->context.vdso_base = 0;
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
| laurent dufour | laurent dufour | 51 | 100.00% | 1 | 100.00% |
| Total | 51 | 100.00% | 1 | 100.00% |
static inline void arch_bprm_mm_init(struct mm_struct *mm,
struct vm_area_struct *vma)
{
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
| laurent dufour | laurent dufour | 16 | 100.00% | 1 | 100.00% |
| Total | 16 | 100.00% | 1 | 100.00% |
static inline bool arch_vma_access_permitted(struct vm_area_struct *vma,
bool write, bool execute, bool foreign)
{
/* by default, allow everything */
return true;
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
| dave hansen | dave hansen | 25 | 100.00% | 3 | 100.00% |
| Total | 25 | 100.00% | 3 | 100.00% |
static inline bool arch_pte_access_permitted(pte_t pte, bool write)
{
/* by default, allow everything */
return true;
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
| dave hansen | dave hansen | 17 | 100.00% | 1 | 100.00% |
| Total | 17 | 100.00% | 1 | 100.00% |
#endif /* __KERNEL__ */
#endif /* __ASM_POWERPC_MMU_CONTEXT_H */
Overall Contributors
| Person | Tokens | Prop | Commits | CommitProp |
| alexey kardashevskiy | alexey kardashevskiy | 131 | 17.80% | 1 | 3.33% |
| benjamin herrenschmidt | benjamin herrenschmidt | 127 | 17.26% | 4 | 13.33% |
| laurent dufour | laurent dufour | 94 | 12.77% | 1 | 3.33% |
| aneesh kumar | aneesh kumar | 81 | 11.01% | 2 | 6.67% |
| tseng-hui (frank) lin | tseng-hui (frank) lin | 64 | 8.70% | 1 | 3.33% |
| anton blanchard | anton blanchard | 59 | 8.02% | 3 | 10.00% |
| andrew morton | andrew morton | 57 | 7.74% | 3 | 10.00% |
| dave hansen | dave hansen | 42 | 5.71% | 3 | 10.00% |
| alexander graf | alexander graf | 32 | 4.35% | 2 | 6.67% |
| paul mackerras | paul mackerras | 19 | 2.58% | 3 | 10.00% |
| linus torvalds | linus torvalds | 9 | 1.22% | 1 | 3.33% |
| arnd bergmann | arnd bergmann | 6 | 0.82% | 1 | 3.33% |
| kumar gala | kumar gala | 5 | 0.68% | 1 | 3.33% |
| rusty russell | rusty russell | 4 | 0.54% | 1 | 3.33% |
| olof johansson | olof johansson | 3 | 0.41% | 1 | 3.33% |
| jeremy fitzhardinge | jeremy fitzhardinge | 2 | 0.27% | 1 | 3.33% |
| viresh kumar | viresh kumar | 1 | 0.14% | 1 | 3.33% |
| Total | 736 | 100.00% | 30 | 100.00% |
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.