Message ID | 87shmp991p.wl%kuninori.morimoto.gx@renesas.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi Morimoto-san, On Tue, Mar 7, 2017 at 2:24 AM, Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> wrote: > I want to ask you about boot time Tux logo. > > For some reasons, current our video driver returns -EPROBE_DEFER when > probe timing, but logo init function doesn't care it. > Thus, our kernel can't have logo when boot time. > > I think this is not only our issue, but general issue ? > > Thus, I think logo init function should care about -EPROBE_DEFER > or something. In our quick hack, this issue was solved by below patch, > but I don't know this is OK. The important part is that fb_logo_late_init() is called - as late as possible, to allow to draw the logo as late as possible, - but before free_initmem(), to avoid using freed memory. kernel_init() { kernel_init_freeable() { ... do_basic_setup() { ... do_initcalls(); ... } ... } /* need to finish all async __init code before freeing the memory */ async_synchronize_full(); free_initmem(); ... } According to the call graph above, the latest initcall() should be OK. > So, how to solve this issue ? do you have nice idea ? > or can maintainer accept below patch ? > > ------------------- > diff --git a/drivers/video/logo/logo.c b/drivers/video/logo/logo.c > index b6bc4a0bda2a..4d50bfd13e7c 100644 > --- a/drivers/video/logo/logo.c > +++ b/drivers/video/logo/logo.c > @@ -34,7 +34,7 @@ static int __init fb_logo_late_init(void) > return 0; > } > > -late_initcall(fb_logo_late_init); > +late_initcall_sync(fb_logo_late_init); > > /* logo's are marked __initdata. Use __ref to tell > * modpost that it is intended that this function uses data Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be> Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds -- To unsubscribe from this list: send the line "unsubscribe linux-fbdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi Geert Thanks. I asked this because some maintainer doesn't accept the patch which exchanges xxx_initcall. But, I will try it with your Reviewed-by. > > I want to ask you about boot time Tux logo. > > > > For some reasons, current our video driver returns -EPROBE_DEFER when > > probe timing, but logo init function doesn't care it. > > Thus, our kernel can't have logo when boot time. > > > > I think this is not only our issue, but general issue ? > > > > Thus, I think logo init function should care about -EPROBE_DEFER > > or something. In our quick hack, this issue was solved by below patch, > > but I don't know this is OK. > > The important part is that fb_logo_late_init() is called > - as late as possible, to allow to draw the logo as late as possible, > - but before free_initmem(), to avoid using freed memory. > > kernel_init() > { > kernel_init_freeable() > { > ... > do_basic_setup() > { > ... > do_initcalls(); > ... > } > ... > } > /* need to finish all async __init code before freeing the memory */ > async_synchronize_full(); > free_initmem(); > ... > } > > According to the call graph above, the latest initcall() should be OK. > > > So, how to solve this issue ? do you have nice idea ? > > or can maintainer accept below patch ? > > > > ------------------- > > diff --git a/drivers/video/logo/logo.c b/drivers/video/logo/logo.c > > index b6bc4a0bda2a..4d50bfd13e7c 100644 > > --- a/drivers/video/logo/logo.c > > +++ b/drivers/video/logo/logo.c > > @@ -34,7 +34,7 @@ static int __init fb_logo_late_init(void) > > return 0; > > } > > > > -late_initcall(fb_logo_late_init); > > +late_initcall_sync(fb_logo_late_init); > > > > /* logo's are marked __initdata. Use __ref to tell > > * modpost that it is intended that this function uses data > > Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be> > > Gr{oetje,eeting}s, > > Geert > > -- > Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org > > In personal conversations with technical people, I call myself a hacker. But > when I'm talking to journalists I just say "programmer" or something like that. > -- Linus Torvalds -- To unsubscribe from this list: send the line "unsubscribe linux-fbdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/video/logo/logo.c b/drivers/video/logo/logo.c index b6bc4a0bda2a..4d50bfd13e7c 100644 --- a/drivers/video/logo/logo.c +++ b/drivers/video/logo/logo.c @@ -34,7 +34,7 @@ static int __init fb_logo_late_init(void) return 0; } -late_initcall(fb_logo_late_init); +late_initcall_sync(fb_logo_late_init); /* logo's are marked __initdata. Use __ref to tell * modpost that it is intended that this function uses data