[Debian-eeepc-devel] Some experiences with kernel 2.6.31

Alan Jenkins sourcejedi.lkml at googlemail.com
Sun Oct 11 11:39:03 UTC 2009


On 10/10/09, Luca Niccoli <lultimouomo at gmail.com> wrote:
> 2009/10/10 Alan Jenkins <sourcejedi.lkml at googlemail.com>:
>
>> I think we can avoid the *known* delays altogether.  We should only
>> need to suffer the camera delay if it was disabled in the BIOS and we
>> have to enable it - but that should be a one-off, because the BIOS
>> remembers the setting for us.
>
> Right, the (obvious) patch attached trims half a second if the camera
> is already enabled.
>
>> Cool.  So that leave 2900 - 0500 = ~2400ms of unknown delays.
>
> Mmm, right now the load time grown by 1200ms (under every kernel and
> in every condition), I don't know why...
> Anyway, not compiling rfkill-input trims another second on the load
> time with wifi and bt off, and it doesn't take longer if they're on.
> So I'm down to 3100ms in every condition. Still slow, but an
> improvement nonetheless.
>
>> The easy option is to force the entire driver to load asynchronously
>> (i.e. in the background), like the acpi battery driver.
>
> By making asynchronous calls we could shorten the load time even in
> the module case, no?
> It would still take the time it takes for the slowest init to return,
> but better than nothing.

But there is only one init method to run :-/.

-Your patch eliminates the delay from the camera.
- Assuming rfkill-input is removed on schedule, the rfkill delay will
be removed in 2.6.33.  (And if it is delayed, we can do exactly the
same as with the camera).
-> Then there is only the INIT method left - there is nothing else to
run it in parallel with.

>> The hard way is to work out why Asus have added these delays and what
>> they do about them on the pre-installed OS's.  The obvious place to
>> look would be the acpi INIT method.  I am curious as to what your
>> "acpidump" output looks like.  But to be honest, I doubt it's worth
>> the effort.  Especially if the answer is that they don't install Linux
>> anymore and the Windows driver is loaded as a background process :-).
>
> http://bugzilla.kernel.org/show_bug.cgi?id=12243
> The problem seems well known, and stalled.

It looks to me like the delay on module loading can't be solved in the
kernel.  I think there's a better way to work around it in userspace
though.

Instead of

"blacklist eeepc-laptop"

try

"install eeepc-laptop modprobe --ignore-install eeepc-laptop $CMDLINE_OPTS &"

In the init script, do "modprobe --use-blacklist eeepc-laptop".  If
the background modprobe is still running, that will wait for it to
finish.

That way, we
 - load eeepc-laptop as normal when udev starts, but avoid blocking
the rest of the boot process on it
 - avoid a confusing "blacklist" entry which isn't really a blacklist
 -  allow the user to add "blacklist eeepc-laptop" and have it work as normal

Then we should also change the eeepc-laptop driver to initialise
asynchronously when it is built in to the kernel.  Otherwise building
it into the kernel will slow down the boot process, which is
unpleasantly counter-intuitive.

Does that make sense?  Do you want to work on this yourself, or should
I add it to my TODO list?

Thanks
Alan



More information about the Debian-eeepc-devel mailing list