Section mismatches in drivers/video/console/promcon

Sam Ravnborg
2007-06-02T12:42:01Z

Building a kernel for sparc64 defconfig gave me following warnings:
WARNING: drivers/built-in.o(.text+0xb788): Section mismatch: reference to .init.data:promfont_unitable (between 'promcon_init_unimap' and 'promcon_init')
WARNING: drivers/built-in.o(.text+0xb790): Section mismatch: reference to .init.data:promfont_unitable (between 'promcon_init_unimap' and 'promcon_init')
WARNING: drivers/built-in.o(.text+0xb794): Section mismatch: reference to .init.data:promfont_unicount (between 'promcon_init_unimap' and 'promcon_init')
WARNING: drivers/built-in.o(.text+0xb798): Section mismatch: reference to .init.data:promfont_unicount (between 'promcon_init_unimap' and 'promcon_init')

The warnings happens because the function: promcon_init_unimap()
references promfont_unitable and promfont_unicount which are marked
__initdata by the conmakehash command in the drivers/video/console/Makefile

The function promcon_init_unimap() are referenced in two places:
1) In prom_con_init() which is marked __init => no problem.
2) In promcon_init() which is not marked __init => warning.
The actual code is here:
if (!promcon_uni_pagedir[0] && p) {
promcon_init_unimap(conp);
}

I could not from the code judge if promcon_init_unimap is really
only used during early init or this is a bug.
If promcon_init_unimap() is only used during early init it
should be marked __init_refok (with a proper comment)
to silence the warning.

A few people in to: that I hope can help out (thanks to git blame)...

Sam