Patchwork UBUNTU: SAUCE: Quirk to fix suspend/resume on Lenovo Edge 11/13/14/15

login
register
mail settings
Submitter Manoj Iyer
Date Jan. 11, 2011, 11:24 p.m.
Message ID <1294788256-5048-2-git-send-email-manoj.iyer@canonical.com>
Download mbox | patch
Permalink /patch/78469/
State Changes Requested
Delegated to: Andy Whitcroft
Headers show

Comments

Manoj Iyer - Jan. 11, 2011, 11:24 p.m.
On Lenovo Edge 11/13/14/15 laptops resume from suspend does not work,
Check IRQ0 routing and if it is routed to INT0 of IOAPIC skip the
timer override. This patch was tested on Edge 11 and Edge 14, where
ATI Technologies Inc SBx00 SMBus Controller rev ids are 41 or 42.

Signed-off-by: Manoj Iyer <manoj.iyer@canonical.com>
---
 arch/x86/kernel/early-quirks.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
Tim Gardner - Jan. 12, 2011, 8:41 p.m.
On 01/11/2011 05:24 PM, Manoj Iyer wrote:
> On Lenovo Edge 11/13/14/15 laptops resume from suspend does not work,
> Check IRQ0 routing and if it is routed to INT0 of IOAPIC skip the
> timer override. This patch was tested on Edge 11 and Edge 14, where
> ATI Technologies Inc SBx00 SMBus Controller rev ids are 41 or 42.
>
> Signed-off-by: Manoj Iyer<manoj.iyer@canonical.com>
> ---
>   arch/x86/kernel/early-quirks.c |    2 +-
>   1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/arch/x86/kernel/early-quirks.c b/arch/x86/kernel/early-quirks.c
> index ebdb85c..0e30990 100644
> --- a/arch/x86/kernel/early-quirks.c
> +++ b/arch/x86/kernel/early-quirks.c
> @@ -166,7 +166,7 @@ static void __init ati_bugs_contd(int num, int slot, int func)
>   		return;
>
>   	rev = ati_sbx00_rev(num, slot, func);
> -	if (rev>  0x13)
> +	if (rev>  0x13&&  (rev != 0x41&&  rev != 0x42))
>   		return;
>
>   	/* check for IRQ0 interrupt swap */

This seems like a BIOS setup issue. Can we make the assumption that all 
ATI SBUS systems having revisions 0x41 or 0x42 behave correctly wrt 
acpi_skip_timer_override on _all_ platforms? I think you need to further 
qualify this quirk based on DMI info.

rtg
Stefan Bader - Jan. 12, 2011, 10:21 p.m.
On 01/12/2011 02:41 PM, Tim Gardner wrote:
> On 01/11/2011 05:24 PM, Manoj Iyer wrote:
>> On Lenovo Edge 11/13/14/15 laptops resume from suspend does not work,
>> Check IRQ0 routing and if it is routed to INT0 of IOAPIC skip the
>> timer override. This patch was tested on Edge 11 and Edge 14, where
>> ATI Technologies Inc SBx00 SMBus Controller rev ids are 41 or 42.
>>
>> Signed-off-by: Manoj Iyer<manoj.iyer@canonical.com>
>> ---
>>   arch/x86/kernel/early-quirks.c |    2 +-
>>   1 files changed, 1 insertions(+), 1 deletions(-)
>>
>> diff --git a/arch/x86/kernel/early-quirks.c b/arch/x86/kernel/early-quirks.c
>> index ebdb85c..0e30990 100644
>> --- a/arch/x86/kernel/early-quirks.c
>> +++ b/arch/x86/kernel/early-quirks.c
>> @@ -166,7 +166,7 @@ static void __init ati_bugs_contd(int num, int slot, int
>> func)
>>           return;
>>
>>       rev = ati_sbx00_rev(num, slot, func);
>> -    if (rev>  0x13)
>> +    if (rev>  0x13&&  (rev != 0x41&&  rev != 0x42))
>>           return;
>>
>>       /* check for IRQ0 interrupt swap */
> 
> This seems like a BIOS setup issue. Can we make the assumption that all ATI SBUS
> systems having revisions 0x41 or 0x42 behave correctly wrt
> acpi_skip_timer_override on _all_ platforms? I think you need to further qualify
> this quirk based on DMI info.
> 
> rtg

I would concur with Tim here. I do not think this is a bug in the chipset but
one that the BIOS fails to do the right thing. So I really would rather tie this
to certain boards/vendors than to the chipset if you do not have absolute proof
for the chipset to be broken generally.

-Stefan
Colin King - Jan. 13, 2011, 9:18 a.m.
On Wed, 2011-01-12 at 16:21 -0600, Stefan Bader wrote:
> On 01/12/2011 02:41 PM, Tim Gardner wrote:
> > On 01/11/2011 05:24 PM, Manoj Iyer wrote:
> >> On Lenovo Edge 11/13/14/15 laptops resume from suspend does not work,
> >> Check IRQ0 routing and if it is routed to INT0 of IOAPIC skip the
> >> timer override. This patch was tested on Edge 11 and Edge 14, where
> >> ATI Technologies Inc SBx00 SMBus Controller rev ids are 41 or 42.
> >>
> >> Signed-off-by: Manoj Iyer<manoj.iyer@canonical.com>
> >> ---
> >>   arch/x86/kernel/early-quirks.c |    2 +-
> >>   1 files changed, 1 insertions(+), 1 deletions(-)
> >>
> >> diff --git a/arch/x86/kernel/early-quirks.c b/arch/x86/kernel/early-quirks.c
> >> index ebdb85c..0e30990 100644
> >> --- a/arch/x86/kernel/early-quirks.c
> >> +++ b/arch/x86/kernel/early-quirks.c
> >> @@ -166,7 +166,7 @@ static void __init ati_bugs_contd(int num, int slot, int
> >> func)
> >>           return;
> >>
> >>       rev = ati_sbx00_rev(num, slot, func);
> >> -    if (rev>  0x13)
> >> +    if (rev>  0x13&&  (rev != 0x41&&  rev != 0x42))
> >>           return;
> >>
> >>       /* check for IRQ0 interrupt swap */
> > 
> > This seems like a BIOS setup issue. Can we make the assumption that all ATI SBUS
> > systems having revisions 0x41 or 0x42 behave correctly wrt
> > acpi_skip_timer_override on _all_ platforms? I think you need to further qualify
> > this quirk based on DMI info.
> > 
> > rtg
> 
> I would concur with Tim here. I do not think this is a bug in the chipset but
> one that the BIOS fails to do the right thing. So I really would rather tie this
> to certain boards/vendors than to the chipset if you do not have absolute proof
> for the chipset to be broken generally.

+1 on that too.
> 
> -Stefan
>

Patch

diff --git a/arch/x86/kernel/early-quirks.c b/arch/x86/kernel/early-quirks.c
index ebdb85c..0e30990 100644
--- a/arch/x86/kernel/early-quirks.c
+++ b/arch/x86/kernel/early-quirks.c
@@ -166,7 +166,7 @@  static void __init ati_bugs_contd(int num, int slot, int func)
 		return;
 
 	rev = ati_sbx00_rev(num, slot, func);
-	if (rev > 0x13)
+	if (rev > 0x13 && (rev != 0x41 && rev != 0x42))
 		return;
 
 	/* check for IRQ0 interrupt swap */