Bug 3649
Summary: | Error: Return object type is incorrect | ||
---|---|---|---|
Product: | ACPI | Reporter: | Patrick Ale (patrick.ale) |
Component: | BIOS | Assignee: | Robert Moore (Robert.Moore) |
Status: | REJECTED INVALID | ||
Severity: | normal | CC: | acpi-bugzilla |
Priority: | P2 | ||
Hardware: | i386 | ||
OS: | Linux | ||
Kernel Version: | 2.6.8.1 and 2.6.9 | Subsystem: | |
Regression: | --- | Bisected commit-id: | |
Attachments: |
Acer Aspire 1703sm_2.6 acpidmp
Acer Aspire 1703_sm_2.6 dmesg Dmesg with ACPI debug statements enabled Dmesg 2.6.10-vanilla Dmesg 2.6.10-mm2 |
Description
Patrick Ale
2004-10-27 02:56:27 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 Created attachment 4063 [details]
Acer Aspire 1703sm_2.6 acpidmp
This is the acpidmp output as requested
Created attachment 4064 [details]
Acer Aspire 1703_sm_2.6 dmesg
This is the dmesg output as requested
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 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. 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 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 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 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 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.
Created attachment 4350 [details]
Dmesg 2.6.10-vanilla
And here is the dmesg output for the 2.6.10-vanilla kernel. :)
Created attachment 4351 [details]
Dmesg 2.6.10-mm2
And the dmesg output for the 2.6.10-mm2 kernel.
Cheers,
Patrick
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. did this *ever* work in Linux? this looks like a BIOS bug -- is there a later BIOS available for this box? I'd like to close this since the ASL is indeed returning the incorrect type. |