Sam Ravnborg pisze: > On Mon, Apr 14, 2008 at 10:53:07AM +0200, Ingo Molnar wrote: >> * Sam Ravnborg wrote: >> >>>> hm, that's an interesting case: we need those annotations probably >>>> because gcc decided to not inline those functions. (this is possible >>>> via the new CONFIG_OPTIMIZE_INLINING=y option) Sam, what's your take >>>> on that? >>> gcc uses different heuristics for inlining between the different >>> versions. Therefore to achieve somehow predictable results I added >>> -fno-inline-functions-called-once when CONFIG_DEBUG_SECTION_MISMATCH >>> is enabled. >>> >>> So in the above case for any normal kernel build we would see that gcc >>> inlined the above and everything is fine. But for the >>> CONFIG_DEBUG_SECTION_MISMTCH cases we do not inline and thus we see >>> that we have a section mismatch. >> ah, ok. So i guess this will result in a few isolated cases of __init >> annotations added to inline functions - Jacek fixed one such case - but >> it should not result in the general spreading of __init annotations to >> inline functions, correct? (which i was worried about) > I do not think so. The need for small isolated inline functions > in the init paths are minimal and last I did a section mismatch free > sweep on the kernel it was only few if any inline functions(*) I had > to annotate. > > (*) Considering only the minimal amount of function that ought > to be annotated inlined. There's a lot of inline __init functions already - which, on the other hand should not result in more of such. Attached you can find grep on tree which shows all inline __init functions (you won't find my paravirt_pagetable_setup_* functions in output as I removed __init for test). Sam, do -fno-inline-functions-called-once could affect paravirt_pagetable_setup_done? In general there was no section mismatch warning for this function, but I've annotated it also. -Jacek