Atsushi Nemoto wrote: > On Wed, 26 Jul 2006 16:33:45 +0200, Franck Bui-Huu <vagabon.xyz@xxxxxxxxx> wrote: >> I don't think that's correct to mark them as "reserved". Basicaly >> "reserved" means that it belongs to the kernel (code or data), these >> holes are not and we will end up to have wrong value as you pointed >> out. >> >> Having quick look at sparsemem code, I don't think that it expects >> to have holes inside a section, do it ? If so you probably have to >> fix up your section size... > > Yes, for such small holes, sparsemem and flatmem is same. We can use > smaller section size to save more memory, but I suppose it will be a > bit slower. > I'm suprised that sparsemem code doens't check for holes inside sections. I would feel really more confortable to use sparsemem if a check like the following patch exists. We could safely use pfn_valid() in _any_ cases and if holes exist inside sections then the user have to fix up its section sizes. what do you think ? Franck -- >8 -- diff --git a/mm/sparse.c b/mm/sparse.c index 86c52ab..4c29a13 100644 --- a/mm/sparse.c +++ b/mm/sparse.c @@ -119,6 +119,13 @@ void memory_present(int nid, unsigned lo { unsigned long pfn; + if (start & (PAGES_PER_SECTION-1) || end & (PAGES_PER_SECTION-1)) { + printk(KERN_ERR "SPARSEMEM: memory area (%lx-%lx) creates a " + "hole inside a section, fix your SECTION_SIZE_BITS " + "value...\n", start, end); + BUG(); + } + start &= PAGE_SECTION_MASK; for (pfn = start; pfn < end; pfn += PAGES_PER_SECTION) { unsigned long section = pfn_to_section_nr(pfn);