- 追加された行はこの色です。
- 削除された行はこの色です。
*参照元 [#if9a466b]
#backlinks
*説明 [#g0f618d3]
-パス: [[linux-4.4.1/drivers/base/dma-contiguous.c]]
-FIXME: これは何?
--説明
**引数 [#u39d0b9c]
-struct reserved_mem *rmem
--
--[[linux-4.4.1/reserved_mem]]
**返り値 [#v1bbe5d7]
-int
--
**参考 [#v9fe5625]
*実装 [#ddb5468e]
static int __init rmem_cma_setup(struct reserved_mem *rmem)
{
phys_addr_t align = PAGE_SIZE << max(MAX_ORDER - 1, pageblock_order);
phys_addr_t mask = align - 1;
unsigned long node = rmem->fdt_node;
struct cma *cma;
int err;
-
--[[linux-4.4.1/phys_addr_t]]
--[[linux-4.4.1/PAGE_SIZE]]
--[[linux-4.4.1/max()]]
--[[linux-4.4.1/MAX_ORDER]]
--[[linux-4.4.1/pageblock_order(global)]]
--[[linux-4.4.1/cma]]
if (!of_get_flat_dt_prop(node, "reusable", NULL) ||
of_get_flat_dt_prop(node, "no-map", NULL))
return -EINVAL;
-
-必ず reusable プロパティを持っている必要がある。
-また no-map プロパティを持っていてはならない。
--[[linux-4.4.1/of_get_flat_dt_prop()]]
if ((rmem->base & mask) || (rmem->size & mask)) {
pr_err("Reserved memory: incorrect alignment of CMA region\n");
return -EINVAL;
}
-
--[[linux-4.4.1/pr_err()]]
err = cma_init_reserved_mem(rmem->base, rmem->size, 0, &cma);
if (err) {
pr_err("Reserved memory: unable to setup CMA region\n");
return err;
}
/* Architecture specific contiguous memory fixup. */
dma_contiguous_early_fixup(rmem->base, rmem->size);
-
--[[linux-4.4.1/cma_init_reserved_mem()]]
--[[linux-4.4.1/dma_contiguous_early_fixup()]]
if (of_get_flat_dt_prop(node, "linux,cma-default", NULL))
dma_contiguous_set_default(cma);
-
--[[linux-4.4.1/dma_contiguous_set_default()]]
rmem->ops = &rmem_cma_ops;
rmem->priv = cma;
-
--[[linux-4.4.1/rmem_cma_ops(global)]]
pr_info("Reserved memory: created CMA memory pool at %pa, size %ld MiB\n",
&rmem->base, (unsigned long)rmem->size / SZ_1M);
-
--[[linux-4.4.1/pr_info()]]
--[[linux-4.4.1/SZ_1M]]
return 0;
}
RESERVEDMEM_OF_DECLARE(cma, "shared-dma-pool", rmem_cma_setup);
-
-デバイスツリーの compatible プロパティが compatible = "shared-dma-pool" の値であるノードに対応する。
--[[linux-4.4.1/RESERVEDMEM_OF_DECLARE()]]
--[[linux-4.4.1/__of_table_cma(global)]]
*コメント [#r843592f]