From: "Rafael J. Wysocki" <rjw@rjwysocki.net>
To: Paul Bolle <pebolle@tiscali.nl>
Cc: Len Brown <lenb@kernel.org>, Rubin Abdi <rubin@starset.net>,
linux-acpi@vger.kernel.org, linux-thinkpad@linux-thinkpad.org
Subject: Re: ACPI / dock: ThinkPad X220: \_SB_.PCI0.LPC_.EC__.BAT1: Unable to dock!
Date: Wed, 30 Jul 2014 00:23:30 +0200 [thread overview]
Message-ID: <1589104.UMXrnXY9GI@vostro.rjw.lan> (raw)
In-Reply-To: <1406670374.2406.27.camel@x220>
On Tuesday, July 29, 2014 11:46:14 PM Paul Bolle wrote:
> 0) A ThinkPad X220 I use prints this error at the _first_ resume from
> suspend (to ram):
> ACPI: \_SB_.PCI0.LPC_.EC__.BAT1: Unable to dock!
>
> 1) BAT1 is apparently a "battery bay". Rubin suggested that it is a
> "slice" battery. I do not use a "slice" battery. (There are two other
> possible docks according to the ACPI printks is get. An "ata bay" and a
> "dock station". I don't use those either, but the kernel at least prints
> no errors about them.)
>
> 2) I've peeked a bit at the DSDT of this machine. Its _WAK method
> contains this line:
> \_SB.PCI0.LPC.EC.BATW (Arg0)
>
> That BATW method is about 12 lines long. (Can I quote that in full?) It
> ends with this snippet:
> If (XOr (Local0, Local1))
> {
> Store (Local1, [...])
> Notify (\_SB.PCI0.LPC.EC.BAT1, 0x01) // Device Check
> }
>
> 3) That ACPI_NOTIFY_DEVICE_CHECK for BAT1 apparently triggers this call
> chain:
> acpi_bus_notify()
> acpi_hotplug_schedule()
> acpi_hotplug_work_fn()
> acpi_device_hotplug()
> dock_notify()
>
> 4) Perhaps Lenovo needs to update the ACPI part of this laptop's
> firmware. (I'm running the latest firmware.) Does Lenovo listen to
> suggestions to update its firmware?
>
> 5) A workaround in the kernel _might_ be something utterly untested like
> this:
>
> diff --git a/drivers/acpi/dock.c b/drivers/acpi/dock.c
> index d9339b442a4e..9e5856a6adfb 100644
> --- a/drivers/acpi/dock.c
> +++ b/drivers/acpi/dock.c
> @@ -333,7 +333,7 @@ static void dock_event(struct dock_station *ds, u32 event, int num)
> *
> * Execute the _DCK method in response to an acpi event
> */
> -static void handle_dock(struct dock_station *ds, int dock)
> +static acpi_status handle_dock(struct dock_station *ds, int dock)
> {
> acpi_status status;
> struct acpi_object_list arg_list;
> @@ -351,11 +351,12 @@ static void handle_dock(struct dock_station *ds, int dock)
> if (ACPI_FAILURE(status) && status != AE_NOT_FOUND)
> acpi_handle_err(ds->handle, "Failed to execute _DCK (0x%x)\n",
> status);
> + return status;
> }
>
> -static inline void dock(struct dock_station *ds)
> +static inline acpi_status dock(struct dock_station *ds)
> {
> - handle_dock(ds, 1);
> + return handle_dock(ds, 1);
> }
>
> static inline void undock(struct dock_station *ds)
> @@ -471,8 +472,12 @@ int dock_notify(struct acpi_device *adev, u32 event)
> case ACPI_NOTIFY_BUS_CHECK:
> case ACPI_NOTIFY_DEVICE_CHECK:
> if (!dock_in_progress(ds) && !acpi_device_enumerated(adev)) {
> + acpi_status status;
> +
> begin_dock(ds);
> - dock(ds);
> + status = dock(ds);
> + if (status == AE_NOT_FOUND)
> + break;
> if (!dock_present(ds)) {
> acpi_handle_err(handle, "Unable to dock!\n");
> complete_dock(ds);
>
> Please note that BAT1 does have a _EJ0 method but doesn't have a _DCK
> method.
>
> 6) Any suggestions?
Let me take a look at that, but I'll need some time.
Can you send me the output of acpidump from the machine in question, please?
Rafael
next prev parent reply other threads:[~2014-07-29 22:04 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-29 21:46 ACPI / dock: ThinkPad X220: \_SB_.PCI0.LPC_.EC__.BAT1: Unable to dock! Paul Bolle
2014-07-29 22:02 ` Paul Bolle
2014-07-29 22:23 ` Rafael J. Wysocki [this message]
2014-07-29 22:09 ` Paul Bolle
2014-07-29 22:36 ` Rafael J. Wysocki
2014-08-13 9:48 ` Paul Bolle
2014-08-13 11:49 ` Paul Bolle
2014-07-29 23:39 ` Henrique de Moraes Holschuh
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1589104.UMXrnXY9GI@vostro.rjw.lan \
--to=rjw@rjwysocki.net \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-thinkpad@linux-thinkpad.org \
--cc=pebolle@tiscali.nl \
--cc=rubin@starset.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox