Re: [PATCH 4/5] usb,early_printk: unregister early usb before rest_init()

From: Jason Wessel
Date: Wed May 06 2009 - 09:03:23 EST


Ingo Molnar wrote:
> * Jason Wessel <jason.wessel@xxxxxxxxxxxxx> wrote:
>
>> The early_printk EHCI debug driver can hang the system or cause
>> unpredictable results because two separate APIs will attempt to write
>> to the mapped PCI region.
[clip]
>> +postcore_initcall(usb_early_debug_cleanup);
>
> We already have CON_BOOT which allows the unregistering of early
> consoles, via disable_boot_consoles() initcall in kernel/printk.c.
>
> The hang should be solved differently: either by calling
> disable_boot_consoles() explicitly after console_init() - or by
> introducing another CON_ flag that marks the console for early
> forced unregistering.

I thought about adding another flag in console_init() such that an
early console which cannot safely be used can elect to unregister.
There are two problems with this.

1) We actually need a call back to unset ehci_debug, or the
console_unregister needs to set/clear a flag which then must be
checked on each early_printk write, else any further call laying
around for early_printk can crash the system.

2) Ideally you want to keep printk alive for as long as possible,
which means you can have it all the way through start_kernel()
before the "blackout period" while waiting for pci and usb init.

Given these two issues, is it your preference still to see a patch
that changes console_init or add another call back to start_kernel() ?

An earlier iteration of this patch added a call back in start_kernel
just before rest_init(), but it seemed like it was not needed since we
can hook on to part of the relevent function init chain.

I am open to fixing this in what ever manner is acceptable.

Cheers,
Jason.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/