Commit 52b1e665 authored by Aneesh Kumar K.V's avatar Aneesh Kumar K.V Committed by Michael Ellerman

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: default avatarAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent a4d36215
...@@ -206,23 +206,7 @@ struct paca_struct { ...@@ -206,23 +206,7 @@ struct paca_struct {
#endif #endif
}; };
#ifdef CONFIG_PPC_BOOK3S extern void copy_mm_to_paca(struct mm_struct *mm);
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 struct paca_struct *paca; extern struct paca_struct *paca;
extern void initialise_paca(struct paca_struct *new_paca, int cpu); extern void initialise_paca(struct paca_struct *new_paca, int cpu);
extern void setup_paca(struct paca_struct *new_paca); extern void setup_paca(struct paca_struct *new_paca);
......
...@@ -245,3 +245,22 @@ void __init free_unused_pacas(void) ...@@ -245,3 +245,22 @@ void __init free_unused_pacas(void)
free_lppacas(); 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) ...@@ -1133,7 +1133,7 @@ void demote_segment_4k(struct mm_struct *mm, unsigned long addr)
copro_flush_all_slbs(mm); copro_flush_all_slbs(mm);
if ((get_paca_psize(addr) != MMU_PAGE_4K) && (current->mm == 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(); slb_flush_and_rebolt();
} }
} }
...@@ -1205,7 +1205,7 @@ static void check_paca_psize(unsigned long ea, struct mm_struct *mm, ...@@ -1205,7 +1205,7 @@ static void check_paca_psize(unsigned long ea, struct mm_struct *mm,
{ {
if (user_region) { if (user_region) {
if (psize != get_paca_psize(ea)) { if (psize != get_paca_psize(ea)) {
copy_mm_to_paca(&mm->context); copy_mm_to_paca(mm);
slb_flush_and_rebolt(); slb_flush_and_rebolt();
} }
} else if (get_paca()->vmalloc_sllp != } else if (get_paca()->vmalloc_sllp !=
......
...@@ -229,7 +229,7 @@ void switch_slb(struct task_struct *tsk, struct mm_struct *mm) ...@@ -229,7 +229,7 @@ void switch_slb(struct task_struct *tsk, struct mm_struct *mm)
asm volatile("slbie %0" : : "r" (slbie_data)); asm volatile("slbie %0" : : "r" (slbie_data));
get_paca()->slb_cache_ptr = 0; get_paca()->slb_cache_ptr = 0;
copy_mm_to_paca(&mm->context); copy_mm_to_paca(mm);
/* /*
* preload some userspace segments into the SLB. * preload some userspace segments into the SLB.
......
...@@ -192,7 +192,7 @@ static void slice_flush_segments(void *parm) ...@@ -192,7 +192,7 @@ static void slice_flush_segments(void *parm)
if (mm != current->active_mm) if (mm != current->active_mm)
return; return;
copy_mm_to_paca(&current->active_mm->context); copy_mm_to_paca(current->active_mm);
local_irq_save(flags); local_irq_save(flags);
slb_flush_and_rebolt(); slb_flush_and_rebolt();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment