Re: [RFC/PATCH] Make printk work for really early debugging

From: Michael Ellerman
Date: Thu May 18 2006 - 05:55:13 EST

On Thu, 2006-05-18 at 02:34 -0700, Andrew Morton wrote:
> Michael Ellerman <michael@xxxxxxxxxxxxxx> wrote:
> >
> > Currently printk is no use for early debugging because it refuses to actually
> > print anything to the console unless cpu_online(smp_processor_id()) is true.
> >
> > The stated explanation is that console drivers may require per-cpu resources,
> > or otherwise barf, because the system is not yet setup correctly. Fair enough.
> >
> > However some console drivers might be quite happy running early during boot,
> > in fact we have one, and so it'd be nice if printk understood that.
> >
> > So I add a flag (which I would have called CON_BOOT, but that's taken) called
> > CON_ANYTIME, which indicates that a console is happy to be called anytime,
> > even if the cpu is not yet online.
> >
> > Tested on a Power 5 machine, with both a CON_ANYTIME driver and a bogus
> > console driver that BUG()s if called while offline. No problems AFAICT.
> > Built for i386 UP & SMP.
> hm, OK. But iirc is was just one silly ia64 console driver which had this
> problem. It might be better to make the new behaviour be the default and mark
> the ia64 driver CON_NEEDS_CPU_ONLINE or something.
> No?
> Or go through and audit the drivers and sprinkle CON_ANYTIME in all the
> safe ones, maybe.

Quite possibly, I started from the assumption that we liked the current
behaviour. Inverting the logic, ie. CON_NEEDS_CPU_ONLINE, would be ok
with me, but it would be a much more intrusive change. All of a sudden
we'll be calling into all sorts of drivers that we didn't previously.

I'll trawl through the console drivers tomorrow and see if I can guess
what percentage look like they will/won't work, then we can decide which
way to flip it.


Michael Ellerman
IBM OzLabs

phone: +61 2 6212 1183 (tie line 70 21183)

We do not inherit the earth from our ancestors,
we borrow it from our children. - S.M.A.R.T Person

Attachment: signature.asc
Description: This is a digitally signed message part