mirror of https://gitee.com/openkylin/linux.git
ARM: dma-mapping: move consistent_init into CONFIG_MMU section
No point wrapping the contents of this function with #ifdef CONFIG_MMU when we can place it and the core_initcall() entirely within the existing conditional block. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Acked-by: Greg Ungerer <gerg@uclinux.org>
This commit is contained in:
parent
695ae0af5a
commit
88c58f3b92
|
@ -144,6 +144,44 @@ static struct arm_vmregion_head consistent_head = {
|
||||||
#error ARM Coherent DMA allocator does not (yet) support huge TLB
|
#error ARM Coherent DMA allocator does not (yet) support huge TLB
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Initialise the consistent memory allocation.
|
||||||
|
*/
|
||||||
|
static int __init consistent_init(void)
|
||||||
|
{
|
||||||
|
int ret = 0;
|
||||||
|
pgd_t *pgd;
|
||||||
|
pmd_t *pmd;
|
||||||
|
pte_t *pte;
|
||||||
|
int i = 0;
|
||||||
|
u32 base = CONSISTENT_BASE;
|
||||||
|
|
||||||
|
do {
|
||||||
|
pgd = pgd_offset(&init_mm, base);
|
||||||
|
pmd = pmd_alloc(&init_mm, pgd, base);
|
||||||
|
if (!pmd) {
|
||||||
|
printk(KERN_ERR "%s: no pmd tables\n", __func__);
|
||||||
|
ret = -ENOMEM;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
WARN_ON(!pmd_none(*pmd));
|
||||||
|
|
||||||
|
pte = pte_alloc_kernel(pmd, base);
|
||||||
|
if (!pte) {
|
||||||
|
printk(KERN_ERR "%s: no pte tables\n", __func__);
|
||||||
|
ret = -ENOMEM;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
consistent_pte[i++] = pte;
|
||||||
|
base += (1 << PGDIR_SHIFT);
|
||||||
|
} while (base < CONSISTENT_END);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
core_initcall(consistent_init);
|
||||||
|
|
||||||
static void *
|
static void *
|
||||||
__dma_alloc(struct device *dev, size_t size, dma_addr_t *handle, gfp_t gfp,
|
__dma_alloc(struct device *dev, size_t size, dma_addr_t *handle, gfp_t gfp,
|
||||||
pgprot_t prot)
|
pgprot_t prot)
|
||||||
|
@ -399,46 +437,6 @@ void dma_free_coherent(struct device *dev, size_t size, void *cpu_addr, dma_addr
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(dma_free_coherent);
|
EXPORT_SYMBOL(dma_free_coherent);
|
||||||
|
|
||||||
/*
|
|
||||||
* Initialise the consistent memory allocation.
|
|
||||||
*/
|
|
||||||
static int __init consistent_init(void)
|
|
||||||
{
|
|
||||||
int ret = 0;
|
|
||||||
#ifdef CONFIG_MMU
|
|
||||||
pgd_t *pgd;
|
|
||||||
pmd_t *pmd;
|
|
||||||
pte_t *pte;
|
|
||||||
int i = 0;
|
|
||||||
u32 base = CONSISTENT_BASE;
|
|
||||||
|
|
||||||
do {
|
|
||||||
pgd = pgd_offset(&init_mm, base);
|
|
||||||
pmd = pmd_alloc(&init_mm, pgd, base);
|
|
||||||
if (!pmd) {
|
|
||||||
printk(KERN_ERR "%s: no pmd tables\n", __func__);
|
|
||||||
ret = -ENOMEM;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
WARN_ON(!pmd_none(*pmd));
|
|
||||||
|
|
||||||
pte = pte_alloc_kernel(pmd, base);
|
|
||||||
if (!pte) {
|
|
||||||
printk(KERN_ERR "%s: no pte tables\n", __func__);
|
|
||||||
ret = -ENOMEM;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
consistent_pte[i++] = pte;
|
|
||||||
base += (1 << PGDIR_SHIFT);
|
|
||||||
} while (base < CONSISTENT_END);
|
|
||||||
#endif /* !CONFIG_MMU */
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
core_initcall(consistent_init);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Make an area consistent for devices.
|
* Make an area consistent for devices.
|
||||||
* Note: Drivers should NOT use this function directly, as it will break
|
* Note: Drivers should NOT use this function directly, as it will break
|
||||||
|
|
Loading…
Reference in New Issue