mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-16 16:54:20 +08:00
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
|
||||
#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 *
|
||||
__dma_alloc(struct device *dev, size_t size, dma_addr_t *handle, gfp_t gfp,
|
||||
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);
|
||||
|
||||
/*
|
||||
* 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.
|
||||
* Note: Drivers should NOT use this function directly, as it will break
|
||||
|
Loading…
Reference in New Issue
Block a user