Skip to contentSkip to conversation

mm section mismatches

DISCUSSION Andrew Morton 6 participants 9 messages Oct 7, 2006 – Oct 9, 2006

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

i386 allmoconfig, -mm tree:

WARNING: vmlinux - Section mismatch: reference to .init.data:arch_zone_highest_possible_pfn from .text between 'memmap_zone_idx' (at offset 0xc0155e3b) and 'calculate_totalreserve_pages'

WARNING: vmlinux - Section mismatch: reference to .init.data:initkmem_list3 from .text between 'set_up_list3s' (at offset 0xc016ba8e) and 'kmem_flagcheck'

any takers?

Thanks.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>

#1 lore raw
Quoted 7 lines · On Fri, 6 Oct 2006 18:49:30 -0700 Andrew Morton wrote:

i386 allmoconfig, -mm tree:

WARNING: vmlinux - Section mismatch: reference to .init.data:arch_zone_highest_possible_pfn from .text between 'memmap_zone_idx' (at offset 0xc0155e3b) and 'calculate_totalreserve_pages'

WARNING: vmlinux - Section mismatch: reference to .init.data:initkmem_list3 from .text between 'set_up_list3s' (at offset 0xc016ba8e) and 'kmem_flagcheck'

any takers?

Could be. what patchset? I don't see this in 2.6.18-mm3.

---
~Randy

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>

#2 lore raw
Quoted 3 lines · On Fri, 6 Oct 2006 21:10:05 -0700 Randy Dunlap <[email protected]> wrote:
Quoted 1 line · On Fri, 6 Oct 2006 18:49:30 -0700 Andrew Morton wrote:

i386 allmoconfig, -mm tree:

<looks>

Quoted 1 line
Quoted 1 line

WARNING: vmlinux - Section mismatch: reference to .init.data:arch_zone_highest_possible_pfn from .text between 'memmap_zone_idx' (at offset 0xc0155e3b) and 'calculate_totalreserve_pages'

This one is non-init memmap_zone_idx() referring to __initdata arch_zone_highest_possible_pfn (Hi, Mel).

Quoted 1 line
Quoted 1 line

WARNING: vmlinux - Section mismatch: reference to .init.data:initkmem_list3 from .text between 'set_up_list3s' (at offset 0xc016ba8e) and 'kmem_flagcheck'

This is non-init set_up_list3s() referring to __initdata initkmem_list3[] (Hi, Pekka and Christoph!)

Quoted 4 lines
Quoted 1 line

any takers?

Could be. what patchset? I don't see this in 2.6.18-mm3.

Both bugs are in mainline.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>

#3 lore raw
Quoted 5 lines · On Fri, 6 Oct 2006 23:46:09 -0700 Andrew Morton wrote:
Quoted 2 lines · On Fri, 6 Oct 2006 21:10:05 -0700 Randy Dunlap <[email protected]> wrote:

On Fri, 6 Oct 2006 18:49:30 -0700 Andrew Morton wrote:

Quoted 8 lines
Quoted 1 line
Quoted 1 line

i386 allmoconfig, -mm tree:

<looks>

Quoted 1 line
Quoted 1 line

WARNING: vmlinux - Section mismatch: reference to .init.data:arch_zone_highest_possible_pfn from .text between 'memmap_zone_idx' (at offset 0xc0155e3b) and 'calculate_totalreserve_pages'

This one is non-init memmap_zone_idx() referring to __initdata arch_zone_highest_possible_pfn (Hi, Mel).

Yep.
I don't see any users (callers) of memmap_zone_idx()... Maybe that's why I still cannot reproduce the problem.

Quoted 4 lines
Quoted 1 line
Quoted 1 line

WARNING: vmlinux - Section mismatch: reference to .init.data:initkmem_list3 from .text between 'set_up_list3s' (at offset 0xc016ba8e) and 'kmem_flagcheck'

This is non-init set_up_list3s() referring to __initdata initkmem_list3[] (Hi, Pekka and Christoph!)

I can't repro that one either, so I'll let one of (...) fix it.

Quoted 6 lines
Quoted 4 lines
Quoted 1 line

any takers?

Could be. what patchset? I don't see this in 2.6.18-mm3.

Both bugs are in mainline.

---
~Randy

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>

#4 lore raw
Quoted 6 lines · Randy Dunlap
Quoted 4 lines
Quoted 1 line
Quoted 1 line

WARNING: vmlinux - Section mismatch: reference to .init.data:initkmem_list3 from .text between 'set_up_list3s' (at offset 0xc016ba8e) and 'kmem_flagcheck'

This is non-init set_up_list3s() referring to __initdata initkmem_list3[] (Hi, Pekka and Christoph!)

I can't repro that one either, so I'll let one of (...) fix it.

set_up_list3s is only called during the bootstrap of the slab allocator. So this is fine.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>

#5 lore raw
Quoted 4 lines · On Mon, 9 Oct 2006 11:06:00 -0700 (PDT) Christoph Lameter <[email protected]>…
Quoted 2 lines · Randy Dunlap
Quoted 2 lines
Quoted 1 line
Quoted 1 line

WARNING: vmlinux - Section mismatch: reference to .init.data:initkmem_list3 from .text between 'set_up_list3s' (at offset 0xc016ba8e) and 'kmem_flagcheck'

Quoted 8 lines
Quoted 4 lines
Quoted 2 lines

This is non-init set_up_list3s() referring to __initdata initkmem_list3[] (Hi, Pekka and Christoph!)

I can't repro that one either, so I'll let one of (...) fix it.

set_up_list3s is only called during the bootstrap of the slab allocator. So this is fine.

Except it'll generate a scary warning for evermore.

It'd be nice to find some hack to make the warning go away, but I can't think of one.

Maybe create a new section just for this purpose, put the function in that.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>

#6 lore raw
In reply to Andrew Morton

On (06/10/06 23:46), Andrew Morton didst pronounce:

Quoted 5 lines
Quoted 2 lines · On Fri, 6 Oct 2006 21:10:05 -0700 Randy Dunlap <[email protected]> wrote:

On Fri, 6 Oct 2006 18:49:30 -0700 Andrew Morton wrote:

Quoted 8 lines
Quoted 1 line
Quoted 1 line

i386 allmoconfig, -mm tree:

<looks>

Quoted 1 line
Quoted 1 line

WARNING: vmlinux - Section mismatch: reference to .init.data:arch_zone_highest_possible_pfn from .text between 'memmap_zone_idx' (at offset 0xc0155e3b) and 'calculate_totalreserve_pages'

This one is non-init memmap_zone_idx() referring to __initdata arch_zone_highest_possible_pfn (Hi, Mel).

Hi Andrew.

memmap_zone_idx() is not used anymore. It was required by an earlier version of account-for-memmap-and-optionally-the-kernel-image-as-holes.patch but not any more. This patch clears up the warning. It has been boottested on x86_64 and ppc64.

mm/page_alloc.c +0 -17
diff -rup -X /usr/src/patchset-0.6/bin//dontdiff linux-2.6.19-rc1-clean/mm/page_alloc.c linux-2.6.19-rc1-fix_section/mm/page_alloc.c
@@ -2294,19 +2294,6 @@ unsigned long __init zone_absent_pages_i
 	return __absent_pages_in_range(nid, zone_start_pfn, zone_end_pfn);
 }
 
-/* Return the zone index a PFN is in */
-int memmap_zone_idx(struct page *lmem_map)
-{
-	int i;
-	unsigned long phys_addr = virt_to_phys(lmem_map);
-	unsigned long pfn = phys_addr >> PAGE_SHIFT;
-
-	for (i = 0; i < MAX_NR_ZONES; i++)
-		if (pfn < arch_zone_highest_possible_pfn[i])
-			break;
-
-	return i;
-}
 #else
 static inline unsigned long zone_spanned_pages_in_node(int nid,
 					unsigned long zone_type,
@@ -2325,10 +2312,6 @@ static inline unsigned long zone_absent_
 	return zholes_size[zone_type];
 }
 
-static inline int memmap_zone_idx(struct page *lmem_map)
-{
-	return MAX_NR_ZONES;
-}
 #endif
 
 static void __init calculate_node_totalpages(struct pglist_data *pgdat,

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>

#7 lore raw
In reply to Andrew Morton

Hola Senor Morton,

Quoted 5 lines · Andrew Morton

i386 allmoconfig, -mm tree:

WARNING: vmlinux - Section mismatch: reference to .init.data:initkmem_list3 from .text between 'set_up_list3s' (at offset 0xc016ba8e) and 'kmem_flagcheck'

any takers?

setup_cpu_cache is a non-init function that calls set_up_list3s which is init. However, due to g_cpucache_up, we will never hit the branch in setup_cpu_cache that calls set_up_list3s.

No idea how to fix the warning. Due to g_cpucache_up, we need some entry point that calls both init and non-init functions... Christoph?

Pekka

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>

#8 lore raw
Quoted 3 lines · Pekka J Enberg

setup_cpu_cache is a non-init function that calls set_up_list3s which is init. However, due to g_cpucache_up, we will never hit the branch in setup_cpu_cache that calls set_up_list3s.

It hits that code during bootstrap. Note that g_cpucache_up is NONE on startup and thus we will be hitting that function from kmem_init().

Quoted 2 lines

No idea how to fix the warning. Due to g_cpucache_up, we need some entry point that calls both init and non-init functions... Christoph?

To tell you the truth on of the crappy issues about the current slab is the mindboogling way of complexity of the bootstrap. Which is due to the inability to statically define a kmem_cache structure because we seem to have made an early decision to only work with kmem_cache_t handles so that the data structures are opaque from the outside.

To fix: Revert the change that made set_up_lists3s non init. In 2.6.18-mm3 this set_up_list3s is not init.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>