From e058371a0b2be3d2349e810f9e50a2e09f4ddad8 Mon Sep 17 00:00:00 2001 From: "Isaac J. Manjarres" Date: Mon, 28 Oct 2019 14:32:14 -0700 Subject: [PATCH] of: reserved-memory: Bypass rmem initialization check for carveouts Pure carveouts (i.e. memory that is completely unmanaged by the kernel) do not have any initialization routines associated with them. So, ignore them when checking if a region has already been initialized by the reserved memory framework. Change-Id: Ied0db066a372751f40327460e583a81ad5b5429f Signed-off-by: Isaac J. Manjarres --- drivers/of/of_reserved_mem.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/of/of_reserved_mem.c b/drivers/of/of_reserved_mem.c index f3e47e748f9d..a520923859df 100644 --- a/drivers/of/of_reserved_mem.c +++ b/drivers/of/of_reserved_mem.c @@ -404,6 +404,7 @@ bool of_reserved_mem_device_is_init(struct device *dev) { struct device_node *mem_dev_node; struct rmem_assigned_device *rd; + struct reserved_mem *rmem; bool ret = false; if (!dev->of_node) @@ -413,7 +414,11 @@ bool of_reserved_mem_device_is_init(struct device *dev) if (!mem_dev_node) return true; - if (!of_device_is_available(mem_dev_node) || !__find_rmem(mem_dev_node)) + if (!of_device_is_available(mem_dev_node)) + goto exit; + + rmem = __find_rmem(mem_dev_node); + if (!rmem || !rmem->ops) goto exit; of_node_put(mem_dev_node);