On Tue, Mar 3, 2026 at 2:13 PM Maxime Ripard mripard@redhat.com wrote:
On Tue, Mar 03, 2026 at 01:33:46PM +0100, Albert Esteve wrote:
Add a helper function wrapping internal reserved memory device_init call and expose it externally.
Use the new helper function within of_reserved_mem_device_init_by_idx().
Signed-off-by: Albert Esteve aesteve@redhat.com
drivers/of/of_reserved_mem.c | 27 +++++++++++++++++++++++---- include/linux/of_reserved_mem.h | 8 ++++++++ 2 files changed, 31 insertions(+), 4 deletions(-)
diff --git a/drivers/of/of_reserved_mem.c b/drivers/of/of_reserved_mem.c index 1fd28f8056108..3a350bef8f11e 100644 --- a/drivers/of/of_reserved_mem.c +++ b/drivers/of/of_reserved_mem.c @@ -605,6 +605,28 @@ struct rmem_assigned_device { static LIST_HEAD(of_rmem_assigned_device_list); static DEFINE_MUTEX(of_rmem_assigned_device_mutex);
+/**
- of_reserved_mem_device_init_with_mem() - assign reserved memory region to
given device
- @dev: Pointer to the device to configure
- @rmem: Reserved memory region to assign
- This function assigns respective DMA-mapping operations based on the
- reserved memory region already provided in @rmem to the @dev device,
- without walking DT nodes.
- Returns error code or zero on success.
- */
+int of_reserved_mem_device_init_with_mem(struct device *dev,
struct reserved_mem *rmem)+{
if (!dev || !rmem || !rmem->ops || !rmem->ops->device_init)return -EINVAL;return rmem->ops->device_init(rmem, dev);+} +EXPORT_SYMBOL_GPL(of_reserved_mem_device_init_with_mem);
/**
- of_reserved_mem_device_init_by_idx() - assign reserved memory region to
given device@@ -643,14 +665,11 @@ int of_reserved_mem_device_init_by_idx(struct device *dev, rmem = of_reserved_mem_lookup(target); of_node_put(target);
if (!rmem || !rmem->ops || !rmem->ops->device_init)return -EINVAL;rd = kmalloc_obj(struct rmem_assigned_device); if (!rd) return -ENOMEM;ret = rmem->ops->device_init(rmem, dev);
ret = of_reserved_mem_device_init_with_mem(dev, rmem); if (ret == 0) { rd->dev = dev; rd->rmem = rmem;I think you need to take the allocation of rd, and everything below. Otherwise, your device, despite being attechd, wouldn't be listed anywhere.
True, I did not pay enough attention to that part. I will fix it in the next version.
Maxime
linaro-mm-sig@lists.linaro.org