[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