powerpc/mm: move ioremap_prot() into ioremap.c
Both ioremap_prot() are idenfical, move them into ioremap.c Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/0b3eb0e0f1490a99fd6c983e166fb8946233f151.1566309262.git.christophe.leroy@c-s.fr
This commit is contained in:
parent
4634c375db
commit
edfe1a5679
|
@ -34,3 +34,22 @@ void __iomem *ioremap_coherent(phys_addr_t addr, unsigned long size)
|
|||
return iowa_ioremap(addr, size, prot, caller);
|
||||
return __ioremap_caller(addr, size, prot, caller);
|
||||
}
|
||||
|
||||
void __iomem *ioremap_prot(phys_addr_t addr, unsigned long size, unsigned long flags)
|
||||
{
|
||||
pte_t pte = __pte(flags);
|
||||
void *caller = __builtin_return_address(0);
|
||||
|
||||
/* writeable implies dirty for kernel addresses */
|
||||
if (pte_write(pte))
|
||||
pte = pte_mkdirty(pte);
|
||||
|
||||
/* we don't want to let _PAGE_USER and _PAGE_EXEC leak out */
|
||||
pte = pte_exprotect(pte);
|
||||
pte = pte_mkprivileged(pte);
|
||||
|
||||
if (iowa_is_active())
|
||||
return iowa_ioremap(addr, size, pte_pgprot(pte), caller);
|
||||
return __ioremap_caller(addr, size, pte_pgprot(pte), caller);
|
||||
}
|
||||
EXPORT_SYMBOL(ioremap_prot);
|
||||
|
|
|
@ -47,23 +47,6 @@ ioremap_wt(phys_addr_t addr, unsigned long size)
|
|||
}
|
||||
EXPORT_SYMBOL(ioremap_wt);
|
||||
|
||||
void __iomem *
|
||||
ioremap_prot(phys_addr_t addr, unsigned long size, unsigned long flags)
|
||||
{
|
||||
pte_t pte = __pte(flags);
|
||||
|
||||
/* writeable implies dirty for kernel addresses */
|
||||
if (pte_write(pte))
|
||||
pte = pte_mkdirty(pte);
|
||||
|
||||
/* we don't want to let _PAGE_USER and _PAGE_EXEC leak out */
|
||||
pte = pte_exprotect(pte);
|
||||
pte = pte_mkprivileged(pte);
|
||||
|
||||
return __ioremap_caller(addr, size, pte_pgprot(pte), __builtin_return_address(0));
|
||||
}
|
||||
EXPORT_SYMBOL(ioremap_prot);
|
||||
|
||||
void __iomem *
|
||||
__ioremap_caller(phys_addr_t addr, unsigned long size, pgprot_t prot, void *caller)
|
||||
{
|
||||
|
|
|
@ -203,29 +203,6 @@ void __iomem * __ioremap_caller(phys_addr_t addr, unsigned long size,
|
|||
return ret;
|
||||
}
|
||||
|
||||
void __iomem * ioremap_prot(phys_addr_t addr, unsigned long size,
|
||||
unsigned long flags)
|
||||
{
|
||||
pte_t pte = __pte(flags);
|
||||
void *caller = __builtin_return_address(0);
|
||||
|
||||
/* writeable implies dirty for kernel addresses */
|
||||
if (pte_write(pte))
|
||||
pte = pte_mkdirty(pte);
|
||||
|
||||
/* we don't want to let _PAGE_EXEC leak out */
|
||||
pte = pte_exprotect(pte);
|
||||
/*
|
||||
* Force kernel mapping.
|
||||
*/
|
||||
pte = pte_mkprivileged(pte);
|
||||
|
||||
if (iowa_is_active())
|
||||
return iowa_ioremap(addr, size, pte_pgprot(pte), caller);
|
||||
return __ioremap_caller(addr, size, pte_pgprot(pte), caller);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Unmap an IO region and remove it from imalloc'd list.
|
||||
* Access to IO memory should be serialized by driver.
|
||||
|
@ -247,7 +224,6 @@ void iounmap(volatile void __iomem *token)
|
|||
vunmap(addr);
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(ioremap_prot);
|
||||
EXPORT_SYMBOL(__ioremap_at);
|
||||
EXPORT_SYMBOL(iounmap);
|
||||
EXPORT_SYMBOL(__iounmap_at);
|
||||
|
|
Loading…
Reference in New Issue