mirror of
https://github.com/torvalds/linux.git
synced 2024-12-09 04:31:39 +00:00
powerpc/mm: Move copy_mm_to_paca to paca.c
We also update the function arg to struct mm_struct. Move this so that function finds the definition of struct mm_struct. No functional change in this patch. Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
parent
a4d3621503
commit
52b1e66587
@ -206,23 +206,7 @@ struct paca_struct {
|
||||
#endif
|
||||
};
|
||||
|
||||
#ifdef CONFIG_PPC_BOOK3S
|
||||
static inline void copy_mm_to_paca(mm_context_t *context)
|
||||
{
|
||||
get_paca()->mm_ctx_id = context->id;
|
||||
#ifdef CONFIG_PPC_MM_SLICES
|
||||
get_paca()->mm_ctx_low_slices_psize = context->low_slices_psize;
|
||||
memcpy(&get_paca()->mm_ctx_high_slices_psize,
|
||||
&context->high_slices_psize, SLICE_ARRAY_SIZE);
|
||||
#else
|
||||
get_paca()->mm_ctx_user_psize = context->user_psize;
|
||||
get_paca()->mm_ctx_sllp = context->sllp;
|
||||
#endif
|
||||
}
|
||||
#else
|
||||
static inline void copy_mm_to_paca(mm_context_t *context){}
|
||||
#endif
|
||||
|
||||
extern void copy_mm_to_paca(struct mm_struct *mm);
|
||||
extern struct paca_struct *paca;
|
||||
extern void initialise_paca(struct paca_struct *new_paca, int cpu);
|
||||
extern void setup_paca(struct paca_struct *new_paca);
|
||||
|
@ -245,3 +245,22 @@ void __init free_unused_pacas(void)
|
||||
|
||||
free_lppacas();
|
||||
}
|
||||
|
||||
void copy_mm_to_paca(struct mm_struct *mm)
|
||||
{
|
||||
#ifdef CONFIG_PPC_BOOK3S
|
||||
mm_context_t *context = &mm->context;
|
||||
|
||||
get_paca()->mm_ctx_id = context->id;
|
||||
#ifdef CONFIG_PPC_MM_SLICES
|
||||
get_paca()->mm_ctx_low_slices_psize = context->low_slices_psize;
|
||||
memcpy(&get_paca()->mm_ctx_high_slices_psize,
|
||||
&context->high_slices_psize, SLICE_ARRAY_SIZE);
|
||||
#else /* CONFIG_PPC_MM_SLICES */
|
||||
get_paca()->mm_ctx_user_psize = context->user_psize;
|
||||
get_paca()->mm_ctx_sllp = context->sllp;
|
||||
#endif
|
||||
#else /* CONFIG_PPC_BOOK3S */
|
||||
return;
|
||||
#endif
|
||||
}
|
||||
|
@ -1133,7 +1133,7 @@ void demote_segment_4k(struct mm_struct *mm, unsigned long addr)
|
||||
copro_flush_all_slbs(mm);
|
||||
if ((get_paca_psize(addr) != MMU_PAGE_4K) && (current->mm == mm)) {
|
||||
|
||||
copy_mm_to_paca(&mm->context);
|
||||
copy_mm_to_paca(mm);
|
||||
slb_flush_and_rebolt();
|
||||
}
|
||||
}
|
||||
@ -1205,7 +1205,7 @@ static void check_paca_psize(unsigned long ea, struct mm_struct *mm,
|
||||
{
|
||||
if (user_region) {
|
||||
if (psize != get_paca_psize(ea)) {
|
||||
copy_mm_to_paca(&mm->context);
|
||||
copy_mm_to_paca(mm);
|
||||
slb_flush_and_rebolt();
|
||||
}
|
||||
} else if (get_paca()->vmalloc_sllp !=
|
||||
|
@ -229,7 +229,7 @@ void switch_slb(struct task_struct *tsk, struct mm_struct *mm)
|
||||
asm volatile("slbie %0" : : "r" (slbie_data));
|
||||
|
||||
get_paca()->slb_cache_ptr = 0;
|
||||
copy_mm_to_paca(&mm->context);
|
||||
copy_mm_to_paca(mm);
|
||||
|
||||
/*
|
||||
* preload some userspace segments into the SLB.
|
||||
|
@ -192,7 +192,7 @@ static void slice_flush_segments(void *parm)
|
||||
if (mm != current->active_mm)
|
||||
return;
|
||||
|
||||
copy_mm_to_paca(¤t->active_mm->context);
|
||||
copy_mm_to_paca(current->active_mm);
|
||||
|
||||
local_irq_save(flags);
|
||||
slb_flush_and_rebolt();
|
||||
|
Loading…
Reference in New Issue
Block a user