linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* rfc: remove early_printk from a few arches? (blackfin, m68k, mips)
@ 2014-12-17 20:58 Joe Perches
  2014-12-17 21:30 ` Kevin Cernekee
                   ` (3 more replies)
  0 siblings, 4 replies; 12+ messages in thread
From: Joe Perches @ 2014-12-17 20:58 UTC (permalink / raw)
  To: linux-arch
  Cc: LKML, Geert Uytterhoeven, linux-m68k, Steven Miao, Ralf Baechle,
	linux-mips

It seems like early_printk can be configured into
a few architectures but also appear not to be used.

$ git grep -w "early_printk"
arch/arm/kernel/Makefile:obj-$(CONFIG_EARLY_PRINTK)	+= early_printk.o
arch/arm/kernel/early_printk.c: *  linux/arch/arm/kernel/early_printk.c
arch/arm/mach-socfpga/socfpga.c:	early_printk("Early printk initialized\n");
arch/blackfin/kernel/Makefile:obj-$(CONFIG_EARLY_PRINTK)           += early_printk.o
arch/blackfin/kernel/bfin_dma.c:#include <asm/early_printk.h>
arch/blackfin/kernel/early_printk.c: * derived from arch/x86/kernel/early_printk.c
arch/blackfin/kernel/early_printk.c:#include <asm/early_printk.h>
arch/blackfin/kernel/setup.c:#include <asm/early_printk.h>
arch/blackfin/kernel/shadow_console.c:#include <asm/early_printk.h>
arch/blackfin/mm/init.c:#include <asm/early_printk.h>
arch/ia64/sn/kernel/setup.c:	 * IO on SN2 is done via SAL calls, early_printk won't work without this.
arch/m68k/kernel/Makefile:obj-$(CONFIG_EARLY_PRINTK)	+= early_printk.o
arch/microblaze/kernel/Makefile:obj-$(CONFIG_EARLY_PRINTK)	+= early_printk.o
arch/microblaze/kernel/cpu/cpuinfo-pvr-full.c:	early_printk("ERROR: Microblaze " x "-different for PVR and DTS\n");
arch/microblaze/kernel/cpu/cpuinfo-static.c:	early_printk("ERROR: Microblaze " x "-different for kernel and DTS\n");
arch/microblaze/kernel/setup.c:/* initialize device tree for usage in early_printk */
arch/mips/ath25/Makefile:obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
arch/mips/ath79/Makefile:obj-$(CONFIG_EARLY_PRINTK)		+= early_printk.o
arch/mips/bcm63xx/Makefile:obj-$(CONFIG_EARLY_PRINTK)	+= early_printk.o
arch/mips/include/asm/mach-lantiq/falcon/lantiq_soc.h: * during early_printk no ioremap possible at this early stage
arch/mips/include/asm/mach-lantiq/xway/lantiq_soc.h: * during early_printk no ioremap is possible
arch/mips/kernel/Makefile:obj-$(CONFIG_EARLY_PRINTK)	+= early_printk.o
arch/mips/lantiq/Makefile:obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
arch/mips/loongson/common/Makefile:obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
arch/mips/ralink/Makefile:obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
arch/tile/kernel/Makefile:obj-$(CONFIG_EARLY_PRINTK)	+= early_printk.o
arch/tile/kernel/early_printk.c:	early_printk("Kernel panic - not syncing: %pV", &vaf);
arch/um/kernel/Makefile:obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
arch/unicore32/kernel/Makefile:obj-$(CONFIG_EARLY_PRINTK)	+= early_printk.o
arch/unicore32/kernel/early_printk.c: * linux/arch/unicore32/kernel/early_printk.c
arch/x86/kernel/Makefile:obj-$(CONFIG_EARLY_PRINTK)	+= early_printk.o
arch/x86/kernel/e820.c:	early_printk(msg);
arch/x86/kernel/head64.c:		early_printk("Kernel alive\n");
arch/x86/kernel/head_64.S:	call early_printk
arch/x86/platform/efi/Makefile:obj-$(CONFIG_EARLY_PRINTK_EFI)	+= early_printk.o
drivers/tty/serial/8250/8250_early.c: * and on early_printk.c by Andi Kleen.
drivers/tty/serial/sn_console.c: * synchronous (raw) and asynchronous (buffered).  initially, early_printk
drivers/tty/serial/sn_console.c:	/* without early_printk, we may be invoked late enough to race
drivers/tty/serial/sn_console.c:	/* early_printk invocation may have done this for us */
include/linux/printk.h:void early_printk(const char *fmt, ...);
include/linux/printk.h:void early_printk(const char *s, ...) { }
kernel/events/core.c:		early_printk("perf interrupt took too long (%lld > %lld), lowering "
kernel/locking/lockdep.c: * We cannot printk in early bootup code. Not even early_printk()
kernel/printk/printk.c:asmlinkage __visible void early_printk(const char *fmt, ...)
kernel/printk/printk.c: * early_printk) - sometimes before setup_arch() completes - be careful
kernel/printk/printk.c: * There are two types of consoles - bootconsoles (early_printk) and

These seem to the only uses:

arch/arm/mach-socfpga/socfpga.c:	early_printk("Early printk initialized\n");
[]
arch/microblaze/kernel/cpu/cpuinfo-pvr-full.c:	early_printk("ERROR: Microblaze " x "-different for PVR and DTS\n");
arch/microblaze/kernel/cpu/cpuinfo-static.c:	early_printk("ERROR: Microblaze " x "-different for kernel and DTS\n");
[]
arch/tile/kernel/early_printk.c:	early_printk("Kernel panic - not syncing: %pV", &vaf);
[]
arch/x86/kernel/e820.c:	early_printk(msg);
arch/x86/kernel/head64.c:		early_printk("Kernel alive\n");
arch/x86/kernel/head_64.S:	call early_printk
[]
kernel/events/core.c:		early_printk("perf interrupt took too long (%lld > %lld), lowering "

So blackfin, m68k, and mips seems to have it possible to enable,
but also don't appear at first glance to use it,

Is early_printk really used by these architectures?
Should it be removed?



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: rfc: remove early_printk from a few arches? (blackfin, m68k, mips)
  2014-12-17 20:58 rfc: remove early_printk from a few arches? (blackfin, m68k, mips) Joe Perches
@ 2014-12-17 21:30 ` Kevin Cernekee
  2014-12-17 22:30   ` Måns Rullgård
  2014-12-18 23:33 ` Thomas Gleixner
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 12+ messages in thread
From: Kevin Cernekee @ 2014-12-17 21:30 UTC (permalink / raw)
  To: Joe Perches
  Cc: linux-arch, LKML, Geert Uytterhoeven, linux-m68k, Steven Miao,
	Ralf Baechle, linux-mips

On Wed, Dec 17, 2014 at 12:58 PM, Joe Perches <joe@perches.com> wrote:
> It seems like early_printk can be configured into
> a few architectures but also appear not to be used.
>
> $ git grep -w "early_printk"
[snip]
> arch/mips/kernel/Makefile:obj-$(CONFIG_EARLY_PRINTK)    += early_printk.o

Nowadays I try to use OF_EARLYCON whenever possible, but when that has
been unavailable, I have used arch/mips/kernel/early_printk.c to get
console output before the serial driver is initialized.  It runs very
early in the boot sequence and has very few dependencies, which makes
it useful for board bringup.

At least on MIPS, the EARLY_PRINTK implementation registers itself as
a console and works with standard printk() calls.  It doesn't rely on
arch/driver code explicitly calling early_printk().

Side note: looking through kernel/printk/printk.c it looks like
there's a space missing in the description string:

MODULE_PARM_DESC(ignore_loglevel, "ignore loglevel setting, to"
        "print all kernel messages to the console.");

But since CONFIG_PRINTK is a bool option, I don't know if the
description string actually shows up anywhere.  Should it be converted
into a comment?

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: rfc: remove early_printk from a few arches? (blackfin, m68k, mips)
  2014-12-17 21:30 ` Kevin Cernekee
@ 2014-12-17 22:30   ` Måns Rullgård
  0 siblings, 0 replies; 12+ messages in thread
From: Måns Rullgård @ 2014-12-17 22:30 UTC (permalink / raw)
  To: Kevin Cernekee
  Cc: Joe Perches, linux-arch, LKML, Geert Uytterhoeven, linux-m68k,
	Steven Miao, Ralf Baechle, linux-mips

Kevin Cernekee <cernekee@gmail.com> writes:

> On Wed, Dec 17, 2014 at 12:58 PM, Joe Perches <joe@perches.com> wrote:
>> It seems like early_printk can be configured into
>> a few architectures but also appear not to be used.
>>
>> $ git grep -w "early_printk"
> [snip]
>> arch/mips/kernel/Makefile:obj-$(CONFIG_EARLY_PRINTK)    += early_printk.o
>
> Nowadays I try to use OF_EARLYCON whenever possible, but when that has
> been unavailable, I have used arch/mips/kernel/early_printk.c to get
> console output before the serial driver is initialized.  It runs very
> early in the boot sequence and has very few dependencies, which makes
> it useful for board bringup.

EARLY_PRINTK on MIPS is enabled just after prom_init(), well before
OF_EARLYCON is usable.  I'd prefer if it stayed that way.

-- 
Måns Rullgård
mans@mansr.com

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: rfc: remove early_printk from a few arches? (blackfin, m68k, mips)
  2014-12-17 20:58 rfc: remove early_printk from a few arches? (blackfin, m68k, mips) Joe Perches
  2014-12-17 21:30 ` Kevin Cernekee
@ 2014-12-18 23:33 ` Thomas Gleixner
  2014-12-19  1:14   ` Joe Perches
  2014-12-19  8:03 ` Geert Uytterhoeven
  2014-12-28 18:33 ` Pavel Machek
  3 siblings, 1 reply; 12+ messages in thread
From: Thomas Gleixner @ 2014-12-18 23:33 UTC (permalink / raw)
  To: Joe Perches
  Cc: linux-arch, LKML, Geert Uytterhoeven, linux-m68k, Steven Miao,
	Ralf Baechle, linux-mips

On Wed, 17 Dec 2014, Joe Perches wrote:
> It seems like early_printk can be configured into
> a few architectures but also appear not to be used.
> 
> $ git grep -w "early_printk"
...
> These seem to the only uses:
... 
> So blackfin, m68k, and mips seems to have it possible to enable,
> but also don't appear at first glance to use it,

Hint: CONFIG_EARLY_PRINTK covers far more than early_printk()
 
> Is early_printk really used by these architectures?
> Should it be removed?

Sure, if you have a good reason to remove working functionality.

Thanks,

	tglx

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: rfc: remove early_printk from a few arches? (blackfin, m68k, mips)
  2014-12-18 23:33 ` Thomas Gleixner
@ 2014-12-19  1:14   ` Joe Perches
  2014-12-19  1:43     ` Måns Rullgård
  0 siblings, 1 reply; 12+ messages in thread
From: Joe Perches @ 2014-12-19  1:14 UTC (permalink / raw)
  To: Thomas Gleixner
  Cc: linux-arch, LKML, Geert Uytterhoeven, linux-m68k, Steven Miao,
	Ralf Baechle, linux-mips

On Fri, 2014-12-19 at 00:33 +0100, Thomas Gleixner wrote:
> On Wed, 17 Dec 2014, Joe Perches wrote:
> > It seems like early_printk can be configured into
> > a few architectures but also appear not to be used.
> > 
> > $ git grep -w "early_printk"
> ...
> > These seem to the only uses:
> ... 
> > So blackfin, m68k, and mips seems to have it possible to enable,
> > but also don't appear at first glance to use it,
> 
> Hint: CONFIG_EARLY_PRINTK covers far more than early_printk()

I know this.

Note also I didn't specify CONFIG_EARLY_PRINTK,
just early_printk.
 
> > Is early_printk really used by these architectures?
> > Should it be removed?
> 
> Sure, if you have a good reason to remove working functionality.

Unused.

Ideally, all direct early_printk() uses would go away.
This would just be a starting point to minimize code.



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: rfc: remove early_printk from a few arches? (blackfin, m68k, mips)
  2014-12-19  1:14   ` Joe Perches
@ 2014-12-19  1:43     ` Måns Rullgård
  2014-12-19  2:08       ` Joe Perches
  0 siblings, 1 reply; 12+ messages in thread
From: Måns Rullgård @ 2014-12-19  1:43 UTC (permalink / raw)
  To: Joe Perches
  Cc: Thomas Gleixner, linux-arch, LKML, Geert Uytterhoeven,
	linux-m68k, Steven Miao, Ralf Baechle, linux-mips

Joe Perches <joe@perches.com> writes:

> On Fri, 2014-12-19 at 00:33 +0100, Thomas Gleixner wrote:
>> On Wed, 17 Dec 2014, Joe Perches wrote:
>> > It seems like early_printk can be configured into
>> > a few architectures but also appear not to be used.
>> > 
>> > $ git grep -w "early_printk"
>> ...
>> > These seem to the only uses:
>> ... 
>> > So blackfin, m68k, and mips seems to have it possible to enable,
>> > but also don't appear at first glance to use it,
>> 
>> Hint: CONFIG_EARLY_PRINTK covers far more than early_printk()
>
> I know this.
>
> Note also I didn't specify CONFIG_EARLY_PRINTK,
> just early_printk.
>
>> > Is early_printk really used by these architectures?
>> > Should it be removed?
>> 
>> Sure, if you have a good reason to remove working functionality.
>
> Unused.

What exactly are you proposing to remove?  I see no unused code related
to early printk (in any variant) under arch/mips.

-- 
Måns Rullgård
mans@mansr.com

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: rfc: remove early_printk from a few arches? (blackfin, m68k, mips)
  2014-12-19  1:43     ` Måns Rullgård
@ 2014-12-19  2:08       ` Joe Perches
  2014-12-19 10:33         ` Måns Rullgård
  0 siblings, 1 reply; 12+ messages in thread
From: Joe Perches @ 2014-12-19  2:08 UTC (permalink / raw)
  To: Måns Rullgård
  Cc: Thomas Gleixner, linux-arch, LKML, Geert Uytterhoeven,
	linux-m68k, Steven Miao, Ralf Baechle, linux-mips

On Fri, 2014-12-19 at 01:43 +0000, Måns Rullgård wrote:
> What exactly are you proposing to remove?

Optionally compile out
kernel/printk/printk.c:early_printk()
even if CONFIG_EARLY_PRINTK is enabled.

> I see no unused code related
> to early printk (in any variant) under arch/mips.

I think there could be yet another CONFIG option
to specifically enable the early_printk function
for the arches that use it.

The kernel/printk/early_printk() function seems
used only by arm/microblaze/tile/x86.



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: rfc: remove early_printk from a few arches? (blackfin, m68k, mips)
  2014-12-17 20:58 rfc: remove early_printk from a few arches? (blackfin, m68k, mips) Joe Perches
  2014-12-17 21:30 ` Kevin Cernekee
  2014-12-18 23:33 ` Thomas Gleixner
@ 2014-12-19  8:03 ` Geert Uytterhoeven
  2014-12-28 18:33 ` Pavel Machek
  3 siblings, 0 replies; 12+ messages in thread
From: Geert Uytterhoeven @ 2014-12-19  8:03 UTC (permalink / raw)
  To: Joe Perches
  Cc: linux-arch, LKML, linux-m68k, Steven Miao, Ralf Baechle,
	linux-mips, Finn Thain

On Wed, Dec 17, 2014 at 9:58 PM, Joe Perches <joe@perches.com> wrote:
> It seems like early_printk can be configured into
> a few architectures but also appear not to be used.
>
> $ git grep -w "early_printk"

[...]

> arch/m68k/kernel/Makefile:obj-$(CONFIG_EARLY_PRINTK)    += early_printk.o

[...]

> These seem to the only uses:
>
> arch/arm/mach-socfpga/socfpga.c:        early_printk("Early printk initialized\n");
> []
> arch/microblaze/kernel/cpu/cpuinfo-pvr-full.c:  early_printk("ERROR: Microblaze " x "-different for PVR and DTS\n");
> arch/microblaze/kernel/cpu/cpuinfo-static.c:    early_printk("ERROR: Microblaze " x "-different for kernel and DTS\n");
> []
> arch/tile/kernel/early_printk.c:        early_printk("Kernel panic - not syncing: %pV", &vaf);
> []
> arch/x86/kernel/e820.c: early_printk(msg);
> arch/x86/kernel/head64.c:               early_printk("Kernel alive\n");
> arch/x86/kernel/head_64.S:      call early_printk
> []
> kernel/events/core.c:           early_printk("perf interrupt took too long (%lld > %lld), lowering "
>
> So blackfin, m68k, and mips seems to have it possible to enable,
> but also don't appear at first glance to use it,
>
> Is early_printk really used by these architectures?
> Should it be removed?

The m68k "early_printk" match is not about the early_printk()
function, but about
the early printk functionality. Hence nothing to remove there.

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

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: rfc: remove early_printk from a few arches? (blackfin, m68k, mips)
  2014-12-19  2:08       ` Joe Perches
@ 2014-12-19 10:33         ` Måns Rullgård
  2014-12-19 22:49           ` Joe Perches
  2014-12-28 18:36           ` Pavel Machek
  0 siblings, 2 replies; 12+ messages in thread
From: Måns Rullgård @ 2014-12-19 10:33 UTC (permalink / raw)
  To: Joe Perches
  Cc: Thomas Gleixner, linux-arch, LKML, Geert Uytterhoeven,
	linux-m68k, Steven Miao, Ralf Baechle, linux-mips

Joe Perches <joe@perches.com> writes:

> On Fri, 2014-12-19 at 01:43 +0000, Måns Rullgård wrote:
>> What exactly are you proposing to remove?
>
> Optionally compile out
> kernel/printk/printk.c:early_printk()
> even if CONFIG_EARLY_PRINTK is enabled.
>
>> I see no unused code related
>> to early printk (in any variant) under arch/mips.
>
> I think there could be yet another CONFIG option
> to specifically enable the early_printk function
> for the arches that use it.

Why bother?  On MIPS it would save 132 bytes of compiled code.

> The kernel/printk/early_printk() function seems
> used only by arm/microblaze/tile/x86.

Rather than introduce more config complexity, you could try to remove
the 7 remaining uses of early_printk().

- arch/arm/mach-socfpga
  Single early_printk("Early printk initialized\n") call serving no
  apparent purpose can probably be safely deleted.  Since there are no
  other early_printk() calls, this information seems rather useless.

- arch/microblaze, arch/tile, arch/x86
  These all do a register_console() for the early console, so regular
  printk() should work.  Moreover, x86 allows multiple early consoles,
  but calling early_printk() will only output to the last one specified.

-- 
Måns Rullgård
mans@mansr.com

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: rfc: remove early_printk from a few arches? (blackfin, m68k, mips)
  2014-12-19 10:33         ` Måns Rullgård
@ 2014-12-19 22:49           ` Joe Perches
  2014-12-28 18:36           ` Pavel Machek
  1 sibling, 0 replies; 12+ messages in thread
From: Joe Perches @ 2014-12-19 22:49 UTC (permalink / raw)
  To: Måns Rullgård
  Cc: Thomas Gleixner, linux-arch, LKML, Geert Uytterhoeven,
	linux-m68k, Steven Miao, Ralf Baechle, linux-mips

On Fri, 2014-12-19 at 10:33 +0000, Måns Rullgård wrote:
> Joe Perches <joe@perches.com> writes:
> > The kernel/printk/early_printk() function seems
> > used only by arm/microblaze/tile/x86.
> 
> Rather than introduce more config complexity, you could try to remove
> the 7 remaining uses of early_printk().

That's the general idea actually.
Dunno if that's possible at one go though.

cheers, Joe


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: rfc: remove early_printk from a few arches? (blackfin, m68k, mips)
  2014-12-17 20:58 rfc: remove early_printk from a few arches? (blackfin, m68k, mips) Joe Perches
                   ` (2 preceding siblings ...)
  2014-12-19  8:03 ` Geert Uytterhoeven
@ 2014-12-28 18:33 ` Pavel Machek
  3 siblings, 0 replies; 12+ messages in thread
From: Pavel Machek @ 2014-12-28 18:33 UTC (permalink / raw)
  To: Joe Perches
  Cc: linux-arch, LKML, Geert Uytterhoeven, linux-m68k, Steven Miao,
	Ralf Baechle, linux-mips

On Wed 2014-12-17 12:58:47, Joe Perches wrote:
> It seems like early_printk can be configured into
> a few architectures but also appear not to be used.
> 
> $ git grep -w "early_printk"
> arch/arm/kernel/Makefile:obj-$(CONFIG_EARLY_PRINTK)	+= early_printk.o
> arch/arm/kernel/early_printk.c: *  linux/arch/arm/kernel/early_printk.c
> arch/arm/mach-socfpga/socfpga.c:	early_printk("Early printk initialized\n");
> arch/blackfin/kernel/Makefile:obj-$(CONFIG_EARLY_PRINTK)           += early_printk.o
> arch/blackfin/kernel/bfin_dma.c:#include <asm/early_printk.h>
> arch/blackfin/kernel/early_printk.c: * derived from arch/x86/kernel/early_printk.c
> arch/blackfin/kernel/early_printk.c:#include <asm/early_printk.h>
> arch/blackfin/kernel/setup.c:#include <asm/early_printk.h>
> arch/blackfin/kernel/shadow_console.c:#include <asm/early_printk.h>
> arch/blackfin/mm/init.c:#include <asm/early_printk.h>
> arch/ia64/sn/kernel/setup.c:	 * IO on SN2 is done via SAL calls, early_printk won't work without this.
> arch/m68k/kernel/Makefile:obj-$(CONFIG_EARLY_PRINTK)	+= early_printk.o
> arch/microblaze/kernel/Makefile:obj-$(CONFIG_EARLY_PRINTK)	+= early_printk.o
> arch/microblaze/kernel/cpu/cpuinfo-pvr-full.c:	early_printk("ERROR: Microblaze " x "-different for PVR and DTS\n");
> arch/microblaze/kernel/cpu/cpuinfo-static.c:	early_printk("ERROR: Microblaze " x "-different for kernel and DTS\n");
> arch/microblaze/kernel/setup.c:/* initialize device tree for usage in early_printk */
> arch/mips/ath25/Makefile:obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
> arch/mips/ath79/Makefile:obj-$(CONFIG_EARLY_PRINTK)		+= early_printk.o
> arch/mips/bcm63xx/Makefile:obj-$(CONFIG_EARLY_PRINTK)	+= early_printk.o
> arch/mips/include/asm/mach-lantiq/falcon/lantiq_soc.h: * during early_printk no ioremap possible at this early stage
> arch/mips/include/asm/mach-lantiq/xway/lantiq_soc.h: * during early_printk no ioremap is possible
> arch/mips/kernel/Makefile:obj-$(CONFIG_EARLY_PRINTK)	+= early_printk.o
> arch/mips/lantiq/Makefile:obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
> arch/mips/loongson/common/Makefile:obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
> arch/mips/ralink/Makefile:obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
> arch/tile/kernel/Makefile:obj-$(CONFIG_EARLY_PRINTK)	+= early_printk.o
> arch/tile/kernel/early_printk.c:	early_printk("Kernel panic - not syncing: %pV", &vaf);
> arch/um/kernel/Makefile:obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
> arch/unicore32/kernel/Makefile:obj-$(CONFIG_EARLY_PRINTK)	+= early_printk.o
> arch/unicore32/kernel/early_printk.c: * linux/arch/unicore32/kernel/early_printk.c
> arch/x86/kernel/Makefile:obj-$(CONFIG_EARLY_PRINTK)	+= early_printk.o
> arch/x86/kernel/e820.c:	early_printk(msg);
> arch/x86/kernel/head64.c:		early_printk("Kernel alive\n");
> arch/x86/kernel/head_64.S:	call early_printk
> arch/x86/platform/efi/Makefile:obj-$(CONFIG_EARLY_PRINTK_EFI)	+= early_printk.o
> drivers/tty/serial/8250/8250_early.c: * and on early_printk.c by Andi Kleen.
> drivers/tty/serial/sn_console.c: * synchronous (raw) and asynchronous (buffered).  initially, early_printk
> drivers/tty/serial/sn_console.c:	/* without early_printk, we may be invoked late enough to race
> drivers/tty/serial/sn_console.c:	/* early_printk invocation may have done this for us */
> include/linux/printk.h:void early_printk(const char *fmt, ...);
> include/linux/printk.h:void early_printk(const char *s, ...) { }
> kernel/events/core.c:		early_printk("perf interrupt took too long (%lld > %lld), lowering "
> kernel/locking/lockdep.c: * We cannot printk in early bootup code. Not even early_printk()
> kernel/printk/printk.c:asmlinkage __visible void early_printk(const char *fmt, ...)
> kernel/printk/printk.c: * early_printk) - sometimes before setup_arch() completes - be careful
> kernel/printk/printk.c: * There are two types of consoles - bootconsoles (early_printk) and
> 
> These seem to the only uses:
> 
> arch/arm/mach-socfpga/socfpga.c:	early_printk("Early printk initialized\n");
> []
> arch/microblaze/kernel/cpu/cpuinfo-pvr-full.c:	early_printk("ERROR: Microblaze " x "-different for PVR and DTS\n");
> arch/microblaze/kernel/cpu/cpuinfo-static.c:	early_printk("ERROR: Microblaze " x "-different for kernel and DTS\n");
> []
> arch/tile/kernel/early_printk.c:	early_printk("Kernel panic - not syncing: %pV", &vaf);
> []
> arch/x86/kernel/e820.c:	early_printk(msg);
> arch/x86/kernel/head64.c:		early_printk("Kernel alive\n");
> arch/x86/kernel/head_64.S:	call early_printk
> []
> kernel/events/core.c:		early_printk("perf interrupt took too long (%lld > %lld), lowering "
> 
> So blackfin, m68k, and mips seems to have it possible to enable,
> but also don't appear at first glance to use it,
> 
> Is early_printk really used by these architectures?
> Should it be removed?

early_printk() is for debugging. Actually, feel free to remove:

arch/arm/mach-socfpga/socfpga.c:      early_printk("Early printk initialized\n");

Its debugging output I added and should have been removed. So... early_printk()s
_should_ be unused in the mainline code, but functionality should be
kept, so that when someone needs it, he can enable it.

									Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: rfc: remove early_printk from a few arches? (blackfin, m68k, mips)
  2014-12-19 10:33         ` Måns Rullgård
  2014-12-19 22:49           ` Joe Perches
@ 2014-12-28 18:36           ` Pavel Machek
  1 sibling, 0 replies; 12+ messages in thread
From: Pavel Machek @ 2014-12-28 18:36 UTC (permalink / raw)
  To: Måns Rullgård
  Cc: Joe Perches, Thomas Gleixner, linux-arch, LKML,
	Geert Uytterhoeven, linux-m68k, Steven Miao, Ralf Baechle,
	linux-mips

On Fri 2014-12-19 10:33:42, Måns Rullgård wrote:
> Joe Perches <joe@perches.com> writes:
> 
> > On Fri, 2014-12-19 at 01:43 +0000, Måns Rullgård wrote:
> >> What exactly are you proposing to remove?
> >
> > Optionally compile out
> > kernel/printk/printk.c:early_printk()
> > even if CONFIG_EARLY_PRINTK is enabled.
> >
> >> I see no unused code related
> >> to early printk (in any variant) under arch/mips.
> >
> > I think there could be yet another CONFIG option
> > to specifically enable the early_printk function
> > for the arches that use it.
> 
> Why bother?  On MIPS it would save 132 bytes of compiled code.
> 
> > The kernel/printk/early_printk() function seems
> > used only by arm/microblaze/tile/x86.
> 
> Rather than introduce more config complexity, you could try to remove
> the 7 remaining uses of early_printk().
> 
> - arch/arm/mach-socfpga
>   Single early_printk("Early printk initialized\n") call serving no
>   apparent purpose can probably be safely deleted.  Since there are no
>   other early_printk() calls, this information seems rather useless.

Feel free to do that, but please keep early_printk() available...

...so that I can debug the socfpga early boot when needed.

								Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2014-12-28 18:36 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-12-17 20:58 rfc: remove early_printk from a few arches? (blackfin, m68k, mips) Joe Perches
2014-12-17 21:30 ` Kevin Cernekee
2014-12-17 22:30   ` Måns Rullgård
2014-12-18 23:33 ` Thomas Gleixner
2014-12-19  1:14   ` Joe Perches
2014-12-19  1:43     ` Måns Rullgård
2014-12-19  2:08       ` Joe Perches
2014-12-19 10:33         ` Måns Rullgård
2014-12-19 22:49           ` Joe Perches
2014-12-28 18:36           ` Pavel Machek
2014-12-19  8:03 ` Geert Uytterhoeven
2014-12-28 18:33 ` Pavel Machek

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).