Re: eeepc_hotkey adds 25s to boot

From: Alan Jenkins
Date: Tue Jul 28 2009 - 15:26:42 EST


On 7/28/09, Luciano Rocha <luciano@xxxxxxxxxxx> wrote:
> On Tue, Jul 28, 2009 at 05:50:26PM +0100, Luciano Rocha wrote:
>> On Mon, Jul 27, 2009 at 10:45:14PM +0300, Pekka Enberg wrote:
>> > (Adding Corentin to cc)
>> >
>> > On Mon, Jul 27, 2009 at 10:27 PM, Luciano Rocha<luciano@xxxxxxxxxxx>
>> > wrote:
>> > > As subject says, loading the eeepc_hotkeys driver or including it
>> > > inside
>> > > the kernel adds 25s to the boot process:
>> > > [ 13.990092] eeepc: Eee PC Hotkey Driver
>> > > [ 39.560645] eeepc: Hotkey init flags 0x41
>> > > [ 39.566131] eeepc: Get control methods supported: 0x101713
>> > > [ 39.566418] input: Asus EeePC extra buttons as ...
>> > >
>> > > Kernel is 2.6.30.3 (with tuxonice).
>> > >
>> > > Config and full dmesg follows.
>> > >
>> > > Also, a "rmmod eeepc_hotkeys" resulted in a kernel panic. If asked,
>> > > I'll
>> > > try to replicate it.
>> >
>> > Yes, please.
>>
>> Hm, rebooted without i2c_i801, browsed some, then did a rmmod
>> eeepc_laptop:
>> ERROR!!! H2M_MAILBOX still hold by MCU. command fail
>> ERROR!!! H2M_MAILBOX still hold by MCU. command fail
>>
>> Two equal lines, yes. What does it mean?
>
> Nevermind, the wireless driver didn't like that the hardware
> disappeared.

Thanks for the bug report anyway :-).

So presumably this is what caused your oops earlier. I assume the
wireless toggle button doesn't normally cause any errors.

The new rfkill core in 2.6.31 should avoid triggering this bug. The
new core won't disable the wireless when the eeepc-laptop module is
removed.

But we should still fix the underlying problem. It sounds like
there's a narrow danger window on module unload. And it's still there
in 2.6.31-rc4:

1019 static void eeepc_rfkill_exit(void)
1020 {
1021 eeepc_unregister_rfkill_notifier("\\_SB.PCI0.P0P6");
1022 eeepc_unregister_rfkill_notifier("\\_SB.PCI0.P0P7");
1023 if (ehotk->wlan_rfkill)
1024 rfkill_unregister(ehotk->wlan_rfkill);

Really we need to perform these unregistrations "at the same time".
The rfkill device relies on the notifier, but the notifier callback
also uses the rfkill device. I guess we will need to a mutex to
synchronize unregistration (and registration).

Alan
--
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/