Esempio n. 1
0
void destroy_context(struct mm_struct *mm)
{
#ifdef CONFIG_SPAPR_TCE_IOMMU
	WARN_ON_ONCE(!list_empty(&mm->context.iommu_group_mem_list));
#endif
	if (radix_enabled())
		WARN_ON(process_tb[mm->context.id].prtb0 != 0);
	else
		subpage_prot_free(mm);
	destroy_pagetable_page(mm);
	destroy_contexts(&mm->context);
	mm->context.id = MMU_NO_CONTEXT;
}
Esempio n. 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 */

	destroy_pagetable_page(mm);
	__destroy_context(mm->context.id);
	subpage_prot_free(mm);
	mm->context.id = MMU_NO_CONTEXT;
}
Esempio n. 3
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;
}