Re: 2.6.26.[1-3] + x61 tablet + x6ultrabase: no resume afterundocking

From: Zhang Rui
Date: Sun Aug 31 2008 - 23:18:30 EST


On Sat, 2008-08-30 at 15:35 -0700, Steven King wrote:
> While 2.6.26 made my x61t work with the x6ultrabase, I find that once I have
> docked the x61t, I can only resume after a suspend2ram if the x61t is docked.
> That is:
>
> Never have been docked: suspend & resume works fine.
> Docked: suspend & resume works fine.
> Docked, undocked, re-docked: suspend & resume works fine.
>
> Docked, then undocked: never finishes resuming (the disk seems to spin up and
> the sleep led goes off, but the system doesnt seem to get any further).
>
> Any suggestions?
>
I have an acpidump of a X61, and it may also send notifications in _STA
method.
Please please try the following patch and see if it helps.
and it would be great if you can attach the acpidump of your laptop.

In some BIOSes, every _STA method call will send a notification again,
this cause freeze. And in some BIOSes, it appears _STA should be called
after _DCK. This tries to avoid calls _STA, and still keep the device
present check.
http://bugzilla.kernel.org/show_bug.cgi?id=10431

Signed-off-by: Shaohua Li <shaohua.li@xxxxxxxxx>
---
drivers/acpi/dock.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)

Index: linux/drivers/acpi/dock.c
===================================================================
--- linux.orig/drivers/acpi/dock.c 2008-08-27 14:38:44.000000000 +0800
+++ linux/drivers/acpi/dock.c 2008-08-28 09:33:02.000000000 +0800
@@ -604,14 +604,17 @@ static int handle_eject_request(struct d
static void dock_notify(acpi_handle handle, u32 event, void *data)
{
struct dock_station *ds = data;
+ struct acpi_device *tmp;

switch (event) {
case ACPI_NOTIFY_BUS_CHECK:
- if (!dock_in_progress(ds) && dock_present(ds)) {
+ if (!dock_in_progress(ds) && acpi_bus_get_device(ds->handle,
+ &tmp)) {
begin_dock(ds);
dock(ds);
if (!dock_present(ds)) {
printk(KERN_ERR PREFIX "Unable to dock!\n");
+ complete_dock(ds);
break;
}
atomic_notifier_call_chain(&dock_notifier_list,


--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html


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