2013-03-07 21:48:43

by Zdenek Kabelac

[permalink] [raw]
Subject: Re: ACPI undocking on 3.8-rc5 no longer works with Lenovo T61

Dne 29.1.2013 11:46, Zdenek Kabelac napsal(a):
> Hi
>
> No exactly sure which patch did it - but when I'm now checking 3.8-rc5 kernel,
> I cannot use anymore this 'undock' command:
>
> echo 1 >/sys/devices/platform/dock.0/undock
>
> which works ok with 3.7 kernel - to properly undock my T61 before suspend.
>
>
> Dmesg shows this:
>
> [ 2657.087414] ACPI: \_SB_.PCI0.LPC_.EC__.BAT1: undocking
> [ 2658.613494] ata4.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen
> [ 2658.613508] ata4.00: ST_FIRST: !(DRQ|ERR|DF)
> [ 2658.613522] sr 3:0:0:0: CDB:
> [ 2658.613530] Get event status notification: 4a 01 00 00 10 00 00 00 08 00
> [ 2658.613583] ata4.00: cmd a0/00:00:00:08:00/00:00:00:00:00/a0 tag 0 pio
> 16392 in
> res 00/00:00:00:00:00/00:00:00:00:00/00 Emask 0x2 (HSM violation)
> [ 2658.613670] ata4: soft resetting link
> [ 2658.766888] ata4.00: NODEV after polling detection
> [ 2658.766900] ata4.00: revalidation failed (errno=-2)
>
>
> Here is boot log attached, my HW is Lenovo T61, C2D
>


I've run 'bisect' and found out commit which has broken 'undock' support on
my Lenovo:

commit 8ab0ab2570cfc48303e545944f53690a6983a898
Author: Toshi Kani <[email protected]>
Date: Tue Oct 23 01:30:26 2012 +0200

ACPI: dock: Remove redundant ACPI NS walk

Combined two ACPI namespace walks, which look for dock stations
and then bays separately, into a single walk.

Signed-off-by: Toshi Kani <[email protected]>
Reviewed-by: Yasuaki Ishimatsu <[email protected]>
Signed-off-by: Rafael J. Wysocki <[email protected]>


After doin plain revert of this commit undock 'support' is back -
I've tested this with 3.9-rc1 (though on this kernel it seems wifi is
again horribly broken for now)

Any idea about proper fix here ?

Zdenek


2013-03-07 22:41:31

by Toshi Kani

[permalink] [raw]
Subject: Re: ACPI undocking on 3.8-rc5 no longer works with Lenovo T61

On Thu, 2013-03-07 at 22:48 +0100, Zdenek Kabelac wrote:
> Dne 29.1.2013 11:46, Zdenek Kabelac napsal(a):
> > Hi
> >
> > No exactly sure which patch did it - but when I'm now checking 3.8-rc5 kernel,
> > I cannot use anymore this 'undock' command:
> >
> > echo 1 >/sys/devices/platform/dock.0/undock
> >
> > which works ok with 3.7 kernel - to properly undock my T61 before suspend.
> >
> >
> > Dmesg shows this:
> >
> > [ 2657.087414] ACPI: \_SB_.PCI0.LPC_.EC__.BAT1: undocking
> > [ 2658.613494] ata4.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen
> > [ 2658.613508] ata4.00: ST_FIRST: !(DRQ|ERR|DF)
> > [ 2658.613522] sr 3:0:0:0: CDB:
> > [ 2658.613530] Get event status notification: 4a 01 00 00 10 00 00 00 08 00
> > [ 2658.613583] ata4.00: cmd a0/00:00:00:08:00/00:00:00:00:00/a0 tag 0 pio
> > 16392 in
> > res 00/00:00:00:00:00/00:00:00:00:00/00 Emask 0x2 (HSM violation)
> > [ 2658.613670] ata4: soft resetting link
> > [ 2658.766888] ata4.00: NODEV after polling detection
> > [ 2658.766900] ata4.00: revalidation failed (errno=-2)
> >
> >
> > Here is boot log attached, my HW is Lenovo T61, C2D
> >
>
>
> I've run 'bisect' and found out commit which has broken 'undock' support on
> my Lenovo:
>
> commit 8ab0ab2570cfc48303e545944f53690a6983a898
> Author: Toshi Kani <[email protected]>
> Date: Tue Oct 23 01:30:26 2012 +0200
>
> ACPI: dock: Remove redundant ACPI NS walk
>
> Combined two ACPI namespace walks, which look for dock stations
> and then bays separately, into a single walk.
>
> Signed-off-by: Toshi Kani <[email protected]>
> Reviewed-by: Yasuaki Ishimatsu <[email protected]>
> Signed-off-by: Rafael J. Wysocki <[email protected]>
>
>
> After doin plain revert of this commit undock 'support' is back -
> I've tested this with 3.9-rc1 (though on this kernel it seems wifi is
> again horribly broken for now)
>
> Any idea about proper fix here ?

Sorry for the trouble. I suspect that your Lenovo has both doc station
and battery bay. Since the above patch combined HW scans for doc
station and battery bay into a single scan, it may have changed
instance# of the sysfs "dock.%d" files on your Lenovo. You can verify
the type by doing:

cat /sys/devices/platform/dock*/type

dock.0 on your Lenovo likely shows as "battery_bay", which I think you
cannot undock regardless of this patch. Can you try to undock the one
with "dock_station"?

Thanks,
-Toshi

2013-03-08 10:06:54

by Zdenek Kabelac

[permalink] [raw]
Subject: Re: ACPI undocking on 3.8-rc5 no longer works with Lenovo T61

Dne 7.3.2013 23:30, Toshi Kani napsal(a):
> On Thu, 2013-03-07 at 22:48 +0100, Zdenek Kabelac wrote:
>> Dne 29.1.2013 11:46, Zdenek Kabelac napsal(a):
>>> Hi
>>>
>>> No exactly sure which patch did it - but when I'm now checking 3.8-rc5 kernel,
>>> I cannot use anymore this 'undock' command:
>>>
>>> echo 1 >/sys/devices/platform/dock.0/undock
>>>
>>> which works ok with 3.7 kernel - to properly undock my T61 before suspend.
>>>
>>>
>>> Dmesg shows this:
>>>
>>> [ 2657.087414] ACPI: \_SB_.PCI0.LPC_.EC__.BAT1: undocking
>>> [ 2658.613494] ata4.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen
>>> [ 2658.613508] ata4.00: ST_FIRST: !(DRQ|ERR|DF)
>>> [ 2658.613522] sr 3:0:0:0: CDB:
>>> [ 2658.613530] Get event status notification: 4a 01 00 00 10 00 00 00 08 00
>>> [ 2658.613583] ata4.00: cmd a0/00:00:00:08:00/00:00:00:00:00/a0 tag 0 pio
>>> 16392 in
>>> res 00/00:00:00:00:00/00:00:00:00:00/00 Emask 0x2 (HSM violation)
>>> [ 2658.613670] ata4: soft resetting link
>>> [ 2658.766888] ata4.00: NODEV after polling detection
>>> [ 2658.766900] ata4.00: revalidation failed (errno=-2)
>>>
>>>
>>> Here is boot log attached, my HW is Lenovo T61, C2D
>>>
>>
>>
>> I've run 'bisect' and found out commit which has broken 'undock' support on
>> my Lenovo:
>>
>> commit 8ab0ab2570cfc48303e545944f53690a6983a898
>> Author: Toshi Kani <[email protected]>
>> Date: Tue Oct 23 01:30:26 2012 +0200
>>
>> ACPI: dock: Remove redundant ACPI NS walk
>>
>> Combined two ACPI namespace walks, which look for dock stations
>> and then bays separately, into a single walk.
>>
>> Signed-off-by: Toshi Kani <[email protected]>
>> Reviewed-by: Yasuaki Ishimatsu <[email protected]>
>> Signed-off-by: Rafael J. Wysocki <[email protected]>
>>
>>
>> After doin plain revert of this commit undock 'support' is back -
>> I've tested this with 3.9-rc1 (though on this kernel it seems wifi is
>> again horribly broken for now)
>>
>> Any idea about proper fix here ?
>
> Sorry for the trouble. I suspect that your Lenovo has both doc station
> and battery bay. Since the above patch combined HW scans for doc
> station and battery bay into a single scan, it may have changed
> instance# of the sysfs "dock.%d" files on your Lenovo. You can verify
> the type by doing:
>
> cat /sys/devices/platform/dock*/type
>
> dock.0 on your Lenovo likely shows as "battery_bay", which I think you
> cannot undock regardless of this patch. Can you try to undock the one
> with "dock_station"?


Thanks - you are correct here - and I've not had though about that
before I've started bisect.

So while before this patch dock.0 had type dock_station, it's now battery_bay
and dock_station becomes dock.2 and I need to update my undocking script.

Zdenek

2013-03-08 14:15:35

by Toshi Kani

[permalink] [raw]
Subject: Re: ACPI undocking on 3.8-rc5 no longer works with Lenovo T61

On Fri, 2013-03-08 at 11:06 +0100, Zdenek Kabelac wrote:
> Dne 7.3.2013 23:30, Toshi Kani napsal(a):
> > On Thu, 2013-03-07 at 22:48 +0100, Zdenek Kabelac wrote:
> >> Dne 29.1.2013 11:46, Zdenek Kabelac napsal(a):
> >>> Hi
> >>>
> >>> No exactly sure which patch did it - but when I'm now checking 3.8-rc5 kernel,
> >>> I cannot use anymore this 'undock' command:
> >>>
> >>> echo 1 >/sys/devices/platform/dock.0/undock
> >>>
> >>> which works ok with 3.7 kernel - to properly undock my T61 before suspend.
> >>>
> >>>
> >>> Dmesg shows this:
> >>>
> >>> [ 2657.087414] ACPI: \_SB_.PCI0.LPC_.EC__.BAT1: undocking
> >>> [ 2658.613494] ata4.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen
> >>> [ 2658.613508] ata4.00: ST_FIRST: !(DRQ|ERR|DF)
> >>> [ 2658.613522] sr 3:0:0:0: CDB:
> >>> [ 2658.613530] Get event status notification: 4a 01 00 00 10 00 00 00 08 00
> >>> [ 2658.613583] ata4.00: cmd a0/00:00:00:08:00/00:00:00:00:00/a0 tag 0 pio
> >>> 16392 in
> >>> res 00/00:00:00:00:00/00:00:00:00:00/00 Emask 0x2 (HSM violation)
> >>> [ 2658.613670] ata4: soft resetting link
> >>> [ 2658.766888] ata4.00: NODEV after polling detection
> >>> [ 2658.766900] ata4.00: revalidation failed (errno=-2)
> >>>
> >>>
> >>> Here is boot log attached, my HW is Lenovo T61, C2D
> >>>
> >>
> >>
> >> I've run 'bisect' and found out commit which has broken 'undock' support on
> >> my Lenovo:
> >>
> >> commit 8ab0ab2570cfc48303e545944f53690a6983a898
> >> Author: Toshi Kani <[email protected]>
> >> Date: Tue Oct 23 01:30:26 2012 +0200
> >>
> >> ACPI: dock: Remove redundant ACPI NS walk
> >>
> >> Combined two ACPI namespace walks, which look for dock stations
> >> and then bays separately, into a single walk.
> >>
> >> Signed-off-by: Toshi Kani <[email protected]>
> >> Reviewed-by: Yasuaki Ishimatsu <[email protected]>
> >> Signed-off-by: Rafael J. Wysocki <[email protected]>
> >>
> >>
> >> After doin plain revert of this commit undock 'support' is back -
> >> I've tested this with 3.9-rc1 (though on this kernel it seems wifi is
> >> again horribly broken for now)
> >>
> >> Any idea about proper fix here ?
> >
> > Sorry for the trouble. I suspect that your Lenovo has both doc station
> > and battery bay. Since the above patch combined HW scans for doc
> > station and battery bay into a single scan, it may have changed
> > instance# of the sysfs "dock.%d" files on your Lenovo. You can verify
> > the type by doing:
> >
> > cat /sys/devices/platform/dock*/type
> >
> > dock.0 on your Lenovo likely shows as "battery_bay", which I think you
> > cannot undock regardless of this patch. Can you try to undock the one
> > with "dock_station"?
>
>
> Thanks - you are correct here - and I've not had though about that
> before I've started bisect.
>
> So while before this patch dock.0 had type dock_station, it's now battery_bay
> and dock_station becomes dock.2 and I need to update my undocking script.

Great! Thanks for the verification!
-Toshi


Subject: Re: ACPI undocking on 3.8-rc5 no longer works with Lenovo T61

On Thu, 07 Mar 2013, Toshi Kani wrote:
> dock.0 on your Lenovo likely shows as "battery_bay", which I think you
> cannot undock regardless of this patch. Can you try to undock the one

You're supposed to be able to undock any thinkpad battery just fine, and it
used to work on older firmware such as the one in the T61. If this is
broken, some other bugs may be at play.

--
"One disk to rule them all, One disk to find them. One disk to bring
them all and in the darkness grind them. In the Land of Redmond
where the shadows lie." -- The Silicon Valley Tarot
Henrique Holschuh

2013-03-14 19:29:05

by Toshi Kani

[permalink] [raw]
Subject: Re: ACPI undocking on 3.8-rc5 no longer works with Lenovo T61

On Sat, 2013-03-09 at 18:40 -0300, Henrique de Moraes Holschuh wrote:
> On Thu, 07 Mar 2013, Toshi Kani wrote:
> > dock.0 on your Lenovo likely shows as "battery_bay", which I think you
> > cannot undock regardless of this patch. Can you try to undock the one
>
> You're supposed to be able to undock any thinkpad battery just fine, and it
> used to work on older firmware such as the one in the T61. If this is
> broken, some other bugs may be at play.

Agreed. Let's look at the error messages...

Dne 29.1.2013 11:46, Zdenek Kabelac napsal(a):
> Dmesg shows this:
>
> [ 2657.087414] ACPI: \_SB_.PCI0.LPC_.EC__.BAT1: undocking

The dock driver called _DCK, which was successful. So, the dock driver
did its job.

> [ 2658.613494] ata4.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action
0x6 frozen

This message came from ata_eh_link_report(), which indicates that there
was an ATA link error detected.

> [ 2658.613508] ata4.00: ST_FIRST: !(DRQ|ERR|DF)
> [ 2658.613522] sr 3:0:0:0: CDB:
> [ 2658.613530] Get event status notification: 4a 01 00 00 10 00 00 00
08 00
> [ 2658.613583] ata4.00: cmd a0/00:00:00:08:00/00:00:00:00:00/a0 tag 0
pio
> 16392 in
> res 00/00:00:00:00:00/00:00:00:00:00/00 Emask 0x2 (HSM
violation)
> [ 2658.613670] ata4: soft resetting link
> [ 2658.766888] ata4.00: NODEV after polling detection

This indicates that the target device, which I think the battery bay,
was gone.

> [ 2658.766900] ata4.00: revalidation failed (errno=-2)
>

So, it looks to me that the battery bay was undocked, but an ATA link
error was detected. This could be either a new FW causing the ATA link
error or the ATA stack detecting the link error which didn't before.

Thanks,
-Toshi