On 08.07.2022 16:54, Wei Chen wrote: > @@ -82,3 +83,25 @@ unsigned int __init arch_get_dma_bitsize(void) > flsl(node_start_pfn(node) + node_spanned_pages(node) / 4 - > 1) > + PAGE_SHIFT, 32); > } > + > +/* > + * This function provides the ability for caller to get one RAM entry > + * from architectural memory map by index. > + * > + * This function will return zero if it can return a proper RAM entry. > + * otherwise it will return -ENODEV for out of scope index, or return > + * -EINVAL for non-RAM type memory entry. > + */
I think the comment also wants to spell out that the range is exclusive at the end (assuming that's suitable for Arm; else now would perhaps be the time to change it). > +int __init arch_get_memory_map(unsigned int idx, paddr_t *start, paddr_t > *end) > +{ > + if ( idx >= e820.nr_map ) > + return -ENODEV; Perhaps better -ENOENT? > + if ( e820.map[idx].type != E820_RAM ) > + return -EINVAL; I'm sorry, this should have occurred to me already when commenting on v1: "get_memory_map" doesn't really fit this "RAM only" restriction. Maybe arch_get_ram_range()? Or maybe others have some good naming suggestion? > + *start = e820.map[idx].addr; > + *end = e820.map[idx].addr + e820.map[idx].size; Nit: Would be shorter to read if you (re)used *start. Jan