[PATCH] dm: core: use DT region size when mapping device addresses

Peng Fan (OSS) peng.fan at oss.nxp.com
Mon May 25 05:09:39 CEST 2026


From: Peng Fan <peng.fan at nxp.com>

Update dev_read_addr_*_ptr() and dev_remap_addr_*() helpers to use
dev_read_addr_size_*() and pass the DT-provided region size to
map_sysmem() / map_physmem() instead of 0.

Ensure mappings are consistent with the size defined in the device tree
and avoids implicit or unbounded mappings. When the DT does not provide
a size, the behavior remains unchanged since size is initialized to 0.

Signed-off-by: Peng Fan <peng.fan at nxp.com>
---
 drivers/core/read.c | 34 ++++++++++++++++++++++------------
 1 file changed, 22 insertions(+), 12 deletions(-)

diff --git a/drivers/core/read.c b/drivers/core/read.c
index c0d7a969db2..ba48862f44b 100644
--- a/drivers/core/read.c
+++ b/drivers/core/read.c
@@ -132,12 +132,14 @@ fdt_addr_t dev_read_addr_index(const struct udevice *dev, int index)
 
 void *dev_read_addr_index_ptr(const struct udevice *dev, int index)
 {
-	fdt_addr_t addr = dev_read_addr_index(dev, index);
+	fdt_addr_t addr;
+	fdt_size_t size = 0;
 
+	addr = dev_read_addr_size_index(dev, index, &size);
 	if (addr == FDT_ADDR_T_NONE)
 		return NULL;
 
-	return map_sysmem(addr, 0);
+	return map_sysmem(addr, size);
 }
 
 fdt_addr_t dev_read_addr_size_index(const struct udevice *dev, int index,
@@ -157,17 +159,19 @@ void *dev_read_addr_size_index_ptr(const struct udevice *dev, int index,
 	if (addr == FDT_ADDR_T_NONE)
 		return NULL;
 
-	return map_sysmem(addr, 0);
+	return map_sysmem(addr, *size);
 }
 
 void *dev_remap_addr_index(const struct udevice *dev, int index)
 {
-	fdt_addr_t addr = dev_read_addr_index(dev, index);
+	fdt_addr_t addr;
+	fdt_size_t size = 0;
 
+	addr = dev_read_addr_size_index(dev, index, &size);
 	if (addr == FDT_ADDR_T_NONE)
 		return NULL;
 
-	return map_physmem(addr, 0, MAP_NOCACHE);
+	return map_physmem(addr, size, MAP_NOCACHE);
 }
 
 fdt_addr_t dev_read_addr_name(const struct udevice *dev, const char *name)
@@ -182,12 +186,14 @@ fdt_addr_t dev_read_addr_name(const struct udevice *dev, const char *name)
 
 void *dev_read_addr_name_ptr(const struct udevice *dev, const char *name)
 {
-	fdt_addr_t addr = dev_read_addr_name(dev, name);
+	fdt_addr_t addr;
+	fdt_size_t size = 0;
 
+	addr = dev_read_addr_size_name(dev, name, &size);
 	if (addr == FDT_ADDR_T_NONE)
 		return NULL;
 
-	return map_sysmem(addr, 0);
+	return map_sysmem(addr, size);
 }
 
 fdt_addr_t dev_read_addr_size_name(const struct udevice *dev, const char *name,
@@ -209,17 +215,19 @@ void *dev_read_addr_size_name_ptr(const struct udevice *dev, const char *name,
 	if (addr == FDT_ADDR_T_NONE)
 		return NULL;
 
-	return map_sysmem(addr, 0);
+	return map_sysmem(addr, *size);
 }
 
 void *dev_remap_addr_name(const struct udevice *dev, const char *name)
 {
-	fdt_addr_t addr = dev_read_addr_name(dev, name);
+	fdt_addr_t addr;
+	fdt_size_t size = 0;
 
+	addr = dev_read_addr_size_name(dev, name, &size);
 	if (addr == FDT_ADDR_T_NONE)
 		return NULL;
 
-	return map_physmem(addr, 0, MAP_NOCACHE);
+	return map_physmem(addr, size, MAP_NOCACHE);
 }
 
 fdt_addr_t dev_read_addr(const struct udevice *dev)
@@ -229,12 +237,14 @@ fdt_addr_t dev_read_addr(const struct udevice *dev)
 
 void *dev_read_addr_ptr(const struct udevice *dev)
 {
-	fdt_addr_t addr = dev_read_addr(dev);
+	fdt_addr_t addr;
+	fdt_size_t size = 0;
 
+	addr = dev_read_addr_size(dev, &size);
 	if (addr == FDT_ADDR_T_NONE)
 		return NULL;
 
-	return map_sysmem(addr, 0);
+	return map_sysmem(addr, size);
 }
 
 void *dev_remap_addr(const struct udevice *dev)

---
base-commit: bb354d04459f5425318aeb8a70bae995ee573f1d
change-id: 20260525-core-89721311824a

Best regards,
-- 
Peng Fan <peng.fan at nxp.com>



More information about the U-Boot mailing list