Subject: Re: Dell Latitude D600
To: None <port-i386@netbsd.org>
From: Alan Barrett <apb@cequrux.com>
List: port-i386
Date: 05/26/2003 18:03:02
On Fri, 23 May 2003, Daniel Carosone wrote:
> On Thu, May 22, 2003 at 06:49:29PM +0200, Alan Barrett wrote:
> > * USB works, modulo the problems I reported a few days ago
> >   when a umass device sometimes fails to get a scsibus attached to it.
> 
> Assuming you have the problem I saw once, it seems it fails to
> allocate a large enough contiguous memory range when the device
> attaches, but does so silently without a useful message.

I found the place in sys/dev/umass.c where a call to usbd_alloc_buffer()
could fail, and added a printf.  Since then, the bug hasn't happened to
me.

> > * Non-ACPI kernel freezes up.
> > 
> >   If I run a kernel without ACPI support, then closing the lid of
> >   the laptop causes a complete freeze.  There's no panic message or
> >   anything; the system just freezes up completely.
> 
> Ouch. This is bad news for your other desires; see below.
> 
> Does the BIOS offer any other acpi/apm related options that might
> alleviate the problem?

No, no options in the BIOS.

The problem turned out to be more complex.  I have seen four different
behaviours, based on presence or absence of "acpi0 at mainbus0" and
"agp* at pchb?" in the kernel config.  Here's a table summarising the
results from testing a whole lot of different kernels until I found the
important differences:

Kernel:            A            B               C               D
agp* at pchb?:     no agp       no agp          with agp        with agp
acpi0 at mainbus0: no acpi      with acpi       no acpi         with acpi
                -------------   -------------   -------------   -------------   
Power button:   instant off     ACPI event,     instant off     ACPI event,
                                sync, halt.                     sync, halt.
Suspend button: no action       ACPI event      no action       ACPI event
Lid close/open: LCD turns off   ACPI event      system freeze   system freeze
CRT/LCD button: Toggle between  Toggle between  system freeze   system freeze
                LCD and VGA     LCD and VGA
Battery button: Displays BIOS   no action       system freeze   system freeze
                screen with
                battery state

Kernel "A" is my favourite so far, because of the action on lid close.
Kernel "B" is a close second because I could theoretically use powerd to
customise what happens when the power or suspend buttons are pressed.

Any kernel with "agp* at pchb?" seems to be bad.

> > * Can't use LCD and external monitor simultaneously.
> > 
> >   Pressing the "CRT/LCD" button (actually "Fn"+"F8") switches between
> >   the internal LCD and the external VGA monitor.  I can't find a way of
> >   having them both turned on simultaneously.
> 
> This is something Xfree86 will need to deal with.

Hmm.  Ideally, I'd like it to work in any display mode, including text.
My previous laptop used to have a 3-way cycle (LCD/VGA/both) and it just
worked, invisible to NetBSD.  But I'd settle for something that worked
only when X was running.

> > * Can't suspend/hibernate.
> 
> NetBSD's ACPI support is still new, and doesn't yet extend to
> sleep/hibernation stuff.  The only way to that with present code
> is with help from the BIOS under the APM framework.  Newer laptops
> might no longer have this capability, but it's worth checking.

The BIOS doesn't offer any way to enable or disable APM or ACPI.  A
NetBSD kernel configured with "apm0 at mainbus0" fails to find any APM
support in the machine.

--apb (Alan Barrett)