lkml.org 
[lkml]   [2020]   [Jun]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
Date
SubjectRe: [PATCH 1/2] riscv: Register System RAM as iomem resources
On Tue, Jun 16, 2020 at 7:52 PM Nick Kossifidis <mick@ics.forth.gr> wrote:
>
> Στις 2020-06-16 10:45, Zong Li έγραψε:
> > 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;
> > +
> > + 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
>
>
> I already have a patch for registering System RAM as an iomem resource
> on my kexec/kdump series. Since I don't care about System RAM regions
> being accurately exposed to userspace (I parse the current device tree
> instead) I just use memblock_start_of_DRAM/end_of_DRAM. This approach
> from arm64 codebase is better since it also handles the case of sparse
> memory regions but in order to be useful for kdump we need to add the
> various segments of the kernel image as child nodes to their respective
> region for kexec-tools. I'll re-spin my patchset anyway so I'll extend
> it to better handle System RAM regions.

OK, great, I would remove this patch here and only reserve the second
patch in the next version.

\
 
 \ /
  Last update: 2020-06-17 03:24    [W:0.113 / U:1.440 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site