Messages in this thread |  | | Date | Fri, 10 Jul 2020 05:05:30 +0300 | From | Nick Kossifidis <> | Subject | Re: [PATCH 1/2] riscv: Register System RAM as iomem resources |
| |
Στις 2020-07-09 21:27, Palmer Dabbelt έγραψε: > On Tue, 16 Jun 2020 00:45:46 PDT (-0700), zong.li@sifive.com wrote: >> 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: Zong Li <zong.li@sifive.com> >> --- >> arch/riscv/mm/init.c | 22 ++++++++++++++++++++++ >> 1 file changed, 22 insertions(+) >> >> diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c >> index f4adb3684f3d..bbe816e03b2f 100644 >> --- a/arch/riscv/mm/init.c >> +++ b/arch/riscv/mm/init.c >> @@ -517,6 +517,27 @@ 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)); >> + >> + res->name = "System RAM"; >> + res->start = >> __pfn_to_phys(memblock_region_memory_base_pfn(region)); >> + res->end = __pfn_to_phys(memblock_region_memory_end_pfn(region)) - >> 1; >> + res->flags = IORESOURCE_SYSTEM_RAM | IORESOURCE_BUSY; > > Looks like everyone else is checking MEMBLOCK_NOMAP before registering > memory > regions. I've added that and put this on for-next. Thanks! > > commit 11dc632bf515874c84887727614e8044452f1f28 > gpg: Signature made Thu 09 Jul 2020 11:24:08 AM PDT > gpg: using RSA key > 2B3C3747446843B24A943A7A2E1319F35FBB1889 > gpg: issuer "palmer@dabbelt.com" > gpg: Good signature from "Palmer Dabbelt <palmer@dabbelt.com>" > [ultimate] > gpg: aka "Palmer Dabbelt <palmerdabbelt@google.com>" > [ultimate] > Author: Zong Li <zong.li@sifive.com> > Date: Tue Jun 16 15:45:46 2020 +0800 > > 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: Zong Li <zong.li@sifive.com> > [Palmer: check MEMBLOCK_NOMAP] > Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com> > > diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c > index f4adb3684f3d..8b78fd23713e 100644 > --- a/arch/riscv/mm/init.c > +++ b/arch/riscv/mm/init.c > @@ -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 > > >> + >> + request_resource(&iomem_resource, res); >> + } >> +} >> + >> void __init paging_init(void) >> { >> setup_vm_final(); >> @@ -524,6 +545,7 @@ void __init paging_init(void) >> sparse_init(); >> setup_zero_page(); >> zone_sizes_init(); >> + resource_init(); >> } >> >> #ifdef CONFIG_SPARSEMEM_VMEMMAP > > _______________________________________________ > linux-riscv mailing list > linux-riscv@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-riscv
Zong Li sent a newer version of this series without this patch, since I'm handling this on the kexec/kdump series as well where other sections needed for kdump are also registered.
|  |