RE: [Devel] Reserved method has too many arguments (_OSC requires 4)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thomas,

Looking closely at the ASL code for _OSC that you provided, I'm afraid that the control method is botched beyond all hope.


Here is the definition of _OSC:

Arguments: (4)
Arg0 - A Buffer containing a UUID
Arg1 - An Integer containing a Revision ID of the buffer format
Arg2 - An Integer containing a count of entries in Arg3
Arg3 - A Buffer containing a list of DWORD capabilities


Analyzing the method:

>Method (_OSC, 5, NotSerialized)
>{
>   Store (Arg3, Local0)
>   Multiply (Local0, 0x04, Local1)

Attempting to convert a DWORD count to a BYTE count. It is Arg2 that contains the count, not Arg3.


>   Name (BUF1, Buffer (Local1) {})
>   Store (Arg4, BUF1)

Attempting to copy the input buffer. It is Arg3 that contains the input buffer, not Arg4. 


>   Store (Zero, Local1)
>   Store (Zero, Local2)
>   While (Local0)
>   {

Attempt to walk the entire input buffer, by DWORDs. Local0 incorrectly contains Arg3, should the count -- Arg2.


>       Multiply (Local1, 0x04, Local2)
>       CreateDWordField (BUF1, Local2, CAPB)

Create a named object (CAPB) within a loop. This will fail on the second iteration of the loop -- i.e., on the second DWORD.


>       If (Arg2)
>       {
>           If (LEqual (Local1, Zero))
>           {
>               And (CAPB, 0xFFFFFFFC)

gr.asl    20:     And (CAPB, 0xFFFFFFFC)
Warning  1106 -     ^ Result is not used, operator has no effect


>           }
>       }
>       Increment (Local1)
>       Decrement (Local0)
>   }
>   Return (BUF1)
>}


Even if the code would actually execute, it doesn't do anything.

Also, the UUID is never checked.

Bob



>-----Original Message-----
>From: devel-bounces@xxxxxxxxxx [mailto:devel-bounces@xxxxxxxxxx] On Behalf
>Of Thomas Renninger
>Sent: Friday, March 12, 2010 6:01 AM
>To: linux-acpi@xxxxxxxxxxxxxxx
>Cc: devel@xxxxxxxxxx
>Subject: [Devel] Reserved method has too many arguments (_OSC requires 4)
>
>Hi,
>
>I have a laptop freezing early, acpi=off and noapic helps.
>I wonder whether this could have to do with the broken _OSC method.
>
>I cannot access the machine myself, eventually I can get more info
>if needed, but the machine is freezing really early (after ACPI
>initialization, somewhere around bringing up CPUs (possibly when
>starting PCI init already?).
>
>This is not the first time I see this message.
>It would be great to get (from include/linux/kernel.h):
>#define FW_BUG          "[Firmware Bug]: "
>#define FW_WARN         "[Firmware Warn]: "
>#define FW_INFO         "[Firmware Info]: "
>marked messages into ACPICA and blame the guys who are responsible
>for that.
>
>My other concern/question is: what exactly happens in such a case?
>Will _OSC get invoked at all?
>If yes, what will be the last argument, zero, -1?
>
>Hmm, I doubt it has to do with the freeze, but it would still be
>great if someone knowing these parts could comment what people
>with such a BIOS could expect to happen.
>
>Thanks,
>
>  Thomas
>
>Method (_OSC, 5, NotSerialized)
>{
>   Store (Arg3, Local0)
>   Multiply (Local0, 0x04, Local1)
>   Name (BUF1, Buffer (Local1) {})
>   Store (Arg4, BUF1)
>   Store (Zero, Local1)
>   Store (Zero, Local2)
>   While (Local0)
>   {
>       Multiply (Local1, 0x04, Local2)
>       CreateDWordField (BUF1, Local2, CAPB)
>       If (Arg2)
>       {
>           If (LEqual (Local1, Zero))
>           {
>               And (CAPB, 0xFFFFFFFC)
>           }
>       }
>       Increment (Local1)
>       Decrement (Local0)
>   }
>   Return (BUF1)
>}
>_______________________________________________
>Devel mailing list
>Devel@xxxxxxxxxx
>http://lists.acpica.org/listinfo/devel
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux