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

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
Loading
Loading
Loading
Loading
+27 −0
Original line number Diff line number Diff line
@@ -517,6 +517,32 @@ void mark_rodata_ro(void)
}
#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)
{
	setup_vm_final();
@@ -524,6 +550,7 @@ void __init paging_init(void)
	sparse_init();
	setup_zero_page();
	zone_sizes_init();
	resource_init();
}

#ifdef CONFIG_SPARSEMEM_VMEMMAP