Bug 3649 - Error: Return object type is incorrect
Summary: Error: Return object type is incorrect
Status: REJECTED INVALID
Alias: None
Product: ACPI
Classification: Unclassified
Component: BIOS (show other bugs)
Hardware: i386 Linux
: P2 normal
Assignee: Robert Moore
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-10-27 02:56 UTC by Patrick Ale
Modified: 2006-01-17 14:39 UTC (History)
1 user (show)

See Also:
Kernel Version: 2.6.8.1 and 2.6.9
Subsystem:
Regression: ---
Bisected commit-id:


Attachments
Acer Aspire 1703sm_2.6 acpidmp (84.00 KB, text/plain)
2004-11-17 08:00 UTC, Patrick Ale
Details
Acer Aspire 1703_sm_2.6 dmesg (15.07 KB, text/plain)
2004-11-17 08:01 UTC, Patrick Ale
Details
Dmesg with ACPI debug statements enabled (15.10 KB, text/plain)
2005-01-07 04:22 UTC, Patrick Ale
Details
Dmesg 2.6.10-vanilla (15.10 KB, text/plain)
2005-01-07 04:49 UTC, Patrick Ale
Details
Dmesg 2.6.10-mm2 (15.10 KB, text/plain)
2005-01-07 05:45 UTC, Patrick Ale
Details

Description Patrick Ale 2004-10-27 02:56:27 UTC
Distribution: Debian / Testing
Hardware Environment: 
Acer Aspire 1703SM_2.6

Software Environment: 
Debian Testing with kernel 2.6.9 and ACPI Subsystem revision 20040816
Problem Description:
"Return Object not correct errors in the kernel"
The output of my DMESG on this matter is:
PCI: Ignoring BAR0-3 of IDE controller 0000:00:02.5
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.AGPB._PRT]
    ACPI-0205: *** Error: Return object type is incorrect
[\_SB_.PCI0.LPCB.LNKA._CRS] (Node dfdda440), AE_TYPE
ACPI: PCI Interrupt Link [LNKA] (IRQs 7 10) *0
ACPI: PCI Interrupt Link [LNKB] (IRQs 3) *0, disabled.
    ACPI-0205: *** Error: Return object type is incorrect
[\_SB_.PCI0.LPCB.LNKC._CRS] (Node dfdda240), AE_TYPE
ACPI: PCI Interrupt Link [LNKC] (IRQs 5) *0
    ACPI-0205: *** Error: Return object type is incorrect
[\_SB_.PCI0.LPCB.LNKD._CRS] (Node dfdda140), AE_TYPE
ACPI: PCI Interrupt Link [LNKD] (IRQs 7 10) *0
    ACPI-0205: *** Error: Return object type is incorrect
[\_SB_.PCI0.LPCB.LNKE._CRS] (Node dfddaf20), AE_TYPE
ACPI: PCI Interrupt Link [LNKE] (IRQs 7 10) *0
    ACPI-0205: *** Error: Return object type is incorrect
[\_SB_.PCI0.LPCB.LNKF._CRS] (Node dfddae20), AE_TYPE
ACPI: PCI Interrupt Link [LNKF] (IRQs 7 10) *0
    ACPI-0205: *** Error: Return object type is incorrect
[\_SB_.PCI0.LPCB.LNKG._CRS] (Node dfddad20), AE_TYPE



Steps to reproduce:
Enable ACPI in the kernel on an Acer Aspire 1703 and do an 'dmesg | grep ACPI |
less'.
My DSDT file can be found at:
http://lilith.cathedrallabs.org/~patrick/aceraspire1703.dsdt
Comment 1 Len Brown 2004-11-14 21:40:37 UTC
No error messages in previous releases? 
 
DSDT is not found at that URL. 
instead, please attach the output from acpidmp, available in /usr/sbin/ or in pmtools: 
http://ftp.kernel.org/pub/linux/kernel/people/lenb/acpi/utils/ 
 
Also, please attach the complete output from dmesg -s64000 
 
Comment 2 Patrick Ale 2004-11-17 08:00:41 UTC
Created attachment 4063 [details]
Acer Aspire 1703sm_2.6 acpidmp

This is the acpidmp output as requested
Comment 3 Patrick Ale 2004-11-17 08:01:47 UTC
Created attachment 4064 [details]
Acer Aspire 1703_sm_2.6 dmesg

This is the dmesg output as requested
Comment 4 Patrick Ale 2004-11-17 08:05:48 UTC
Hi,

First of all thanks for your reply.
I've only used kernel 2.6.8.1 and 2.6.9 on this laptop so far but I'll try some
other kernels aswell. Any sugestions? Would you like me to test a 2.6 or 2.4 kernel?

The DSDT file wasnt available due to a rather destructive cleaning of my home
directory. When needed I can upload it again.

Thanks again,

Patrick
Comment 5 Len Brown 2005-01-03 19:19:57 UTC
This may be an object-type-conversion AML issue, 
as _CRS appears to return an IRQ, as required: 
 
               Name (Z00B, ResourceTemplate () 
                { 
                    IRQ (Level, ActiveLow, Shared) {7,10} 
                }) 
                Device (LNKA) 
                { 
                    Name (_HID, EisaId ("PNP0C0F")) 
                    Name (_UID, 0x01) 
                    Method (_PRS, 0, NotSerialized) 
                    { 
                        Return (Z00B) 
                    } 
 
                    Method (_DIS, 0, NotSerialized) 
                    { 
                        Or (\_SB.PCI0.LPCB.PIRA, 0x80, \_SB.PCI0.LPCB.PIRA) 
                    } 
 
                    Method (_CRS, 0, NotSerialized) 
                    { 
                        Store (Z00B, Local0) 
                        CreateWordField (Local0, 0x01, IRA0) 
                        If (LEqual (And (\_SB.PCI0.LPCB.PIRA, 0x80), Zero)) 
                        { 
                            And (\_SB.PCI0.LPCB.PIRA, 0x0F, Local0) 
                            ShiftLeft (0x01, Local0, IRA0) 
                        } 
                        Else 
                        { 
                            Store (0x00, IRA0) 
                        } 
 
                        Return (Local0) 
                    } 
 
Yes, it would be useful if you can test a stock 2.6.10 kernel, 
as well as the latest -mm patch because we've updated the 
interpreter in this area recently. 
 
BTW. The DSDT is not necessary, as it is included in acpidmp output. 
 
Comment 6 Robert Moore 2005-01-04 15:37:37 UTC
I don't think that this message is coming from the core ACPI CA code, it must 
be from one of the drivers:

    ACPI-0205: *** Error: Return object type is incorrect
[\_SB_.PCI0.LPCB.LNKA._CRS] (Node dfdda440), AE_TYPE
Comment 7 Luming Yu 2005-01-04 18:19:30 UTC
Bob,
 I searched the code, and found the only place is at
./utilities/uteval.c:      ACPI_REPORT_METHOD_ERROR ("Return object type is 
incorrect",
 It is in function acpi_ut_evaluate_object.

Thanks,
Luming
Comment 8 Robert Moore 2005-01-06 15:56:09 UTC
Then the full debug output has not been enabled.  Please enable and post the 
output.  There should be more info about what type was expected vs. what 
actually was returned.

#ifdef ACPI_DEBUG_OUTPUT
Comment 9 Patrick Ale 2005-01-07 04:14:37 UTC
In kernel 2.6.10, 2.6.10-ac2 the problems still appear.
I am enabling "Debug statements" now in the kernel and will paste the result
plus the result I get from the -mm patch.

Thanks for your time so far :)


Patrick
Comment 10 Patrick Ale 2005-01-07 04:22:04 UTC
Created attachment 4349 [details]
Dmesg with ACPI debug statements enabled

This is the output of a 'dmesg -s64000'. The kernel is 2.6.10-ac2 with Debug
statements enabled.
Comment 11 Patrick Ale 2005-01-07 04:49:09 UTC
Created attachment 4350 [details]
Dmesg 2.6.10-vanilla

And here is the dmesg output for the 2.6.10-vanilla kernel. :)
Comment 12 Patrick Ale 2005-01-07 05:45:47 UTC
Created attachment 4351 [details]
Dmesg 2.6.10-mm2

And the dmesg output for the 2.6.10-mm2 kernel.

Cheers,

Patrick
Comment 13 Robert Moore 2005-01-07 10:19:08 UTC
It appears that _CRS has a code path that will return an Integer object (type 
1).

Method (_CRS, 0, NotSerialized) 
{ 
    Store (Z00B, Local0) 
    CreateWordField (Local0, 0x01, IRA0) 
    If (LEqual (And (\_SB.PCI0.LPCB.PIRA, 0x80), Zero)) 
    { 
        And (\_SB.PCI0.LPCB.PIRA, 0x0F, Local0) 
        ShiftLeft (0x01, Local0, IRA0) 
    } 
    Else 
    { 
        Store (0x00, IRA0) 
    } 

    Return (Local0) 
} 

The And() statement above will overwrite Local0 with an Integer, which will 
then be returned in the Return() statement.

Looks like bad ASL to me.  Try changing the use of Local0 in the And() path to 
Local1.

Comment 14 Len Brown 2005-07-27 19:24:48 UTC
did this *ever* work in Linux?

this looks like a BIOS bug -- is there a later BIOS available for this box?
Comment 15 Robert Moore 2006-01-17 14:39:21 UTC
I'd like to close this since the ASL is indeed returning the incorrect type.

Note You need to log in before you can comment on or make changes to this bug.