Commit 526fbaed authored by Zong Li's avatar Zong Li Committed by Palmer Dabbelt

riscv: Register System RAM as iomem resources

Add System RAM to /proc/iomem, various tools expect it such as kdump.
It is also needed for page_is_ram API which checks the specified address
whether registered as System RAM in iomem_resource list.
Signed-off-by: default avatarZong Li <zong.li@sifive.com>
[Palmer: check MEMBLOCK_NOMAP]
Signed-off-by: default avatarPalmer Dabbelt <palmerdabbelt@google.com>
parent a2693fe2
...@@ -517,6 +517,32 @@ void mark_rodata_ro(void) ...@@ -517,6 +517,32 @@ void mark_rodata_ro(void)
} }
#endif #endif
void __init resource_init(void)
{
struct memblock_region *region;
for_each_memblock(memory, region) {
struct resource *res;
res = memblock_alloc(sizeof(struct resource), SMP_CACHE_BYTES);
if (!res)
panic("%s: Failed to allocate %zu bytes\n", __func__,
sizeof(struct resource));
if (memblock_is_nomap(region)) {
res->name = "reserved";
res->flags = IORESOURCE_MEM;
} else {
res->name = "System RAM";
res->flags = IORESOURCE_SYSTEM_RAM | IORESOURCE_BUSY;
}
res->start = __pfn_to_phys(memblock_region_memory_base_pfn(region));
res->end = __pfn_to_phys(memblock_region_memory_end_pfn(region)) - 1;
request_resource(&iomem_resource, res);
}
}
void __init paging_init(void) void __init paging_init(void)
{ {
setup_vm_final(); setup_vm_final();
...@@ -524,6 +550,7 @@ void __init paging_init(void) ...@@ -524,6 +550,7 @@ void __init paging_init(void)
sparse_init(); sparse_init();
setup_zero_page(); setup_zero_page();
zone_sizes_init(); zone_sizes_init();
resource_init();
} }
#ifdef CONFIG_SPARSEMEM_VMEMMAP #ifdef CONFIG_SPARSEMEM_VMEMMAP
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment