예제 #1
0
void destroy_context(struct mm_struct *mm)
{
#ifdef CONFIG_SPAPR_TCE_IOMMU
	mm_iommu_cleanup(&mm->context);
#endif

#ifdef CONFIG_PPC_ICSWX
	drop_cop(mm->context.acop, mm);
	kfree(mm->context.cop_lockp);
	mm->context.cop_lockp = NULL;
#endif /* CONFIG_PPC_ICSWX */

	destroy_pagetable_page(mm);
	__destroy_context(mm->context.id);
	subpage_prot_free(mm);
	mm->context.id = MMU_NO_CONTEXT;
}
예제 #2
0
void destroy_context(struct mm_struct *mm)
{
#ifdef CONFIG_SPAPR_TCE_IOMMU
    mm_iommu_cleanup(&mm->context);
#endif

#ifdef CONFIG_PPC_ICSWX
    drop_cop(mm->context.acop, mm);
    kfree(mm->context.cop_lockp);
    mm->context.cop_lockp = NULL;
#endif /* CONFIG_PPC_ICSWX */

    if (radix_enabled())
        process_tb[mm->context.id].prtb1 = 0;
    else
        subpage_prot_free(mm);
    destroy_pagetable_page(mm);
    __destroy_context(mm->context.id);
    mm->context.id = MMU_NO_CONTEXT;
}