https://bugzilla.kernel.org/show_bug.cgi?id=47981





--- Comment #32 from Robert Moore <robert.mo...@intel.com>  2012-10-11 20:00:05 
---

The plot is a bit thicker than I expected at first. After recreating some
test ASL code in one of the areas of the table where there are errors, it
looks like the table has been corrupted/scribbled in a somewhat systematic
way.

Below are 4 bytes that are incorrect in the original table, along with
their offsets and the correct values. Note the sequence of incorrect
values: 1C, 1D, 1E, 1F.

@22CD: is 1C, should be 08 - Name() opcode
@22D8: is 1D, should be 14 - Method() opcode
@22E3: is 1E, should be 57 - "W" in GPRW name
@22EE: is 1F, should be 00 - Method flags for _PRW

This corruption is of course enough to thoroughly confuse the AML
interpreter.

One other data point: The table checksum appears to be correct, so
it looks like someone (probably the BIOS) changed a bunch of data in
the table, then recomputed the checksum over the entire modified table.


// Data below

// Some of the errors, all within the same Device() object

Found unknown opcode 0x1C at table offset 0x22CE, context:
  0000: 41 52 31 34 A4 50 52 31 34 5B 82 36 50 30 50 31  AR14.PR14[.6P0P1
  0010: 1C 5F 41 44 52 0C 00 00 1E 00 1D 0F 5F 50 52 57  ._ADR......._PRW
  0020: 00 A4 47 50 52 1E 0A 0B 0A 04 14 16 5F 50 52 54  ..GPR......._PRT

Found unknown opcode 0x1D at table offset 0x22D8, context:
  0000: 82 36 50 30 50 31 1C 5F 41 44 52 0C 00 00 1E 00  .6P0P1._ADR.....
  0010: 1D 0F 5F 50 52 57 00 A4 47 50 52 1E 0A 0B 0A 04  .._PRW..GPR.....
  0020: 14 16 5F 50 52 54 1F A0 0A 50 49 43 4D A4 41 52  .._PRT...PICM.AR

Found unknown opcode 0x0F at table offset 0x22D9, context:
  0000: 36 50 30 50 31 1C 5F 41 44 52 0C 00 00 1E 00 1D  6P0P1._ADR......
  0010: 0F 5F 50 52 57 00 A4 47 50 52 1E 0A 0B 0A 04 14  ._PRW..GPR......
  0020: 16 5F 50 52 54 1F A0 0A 50 49 43 4D A4 41 52 30  ._PRT...PICM.AR0


// Actual (original) table data

  22C0:                      5B 82 36 50 30 50 31 1C 5F  14.PR14[.6P0P1._
  22D0: 41 44 52 0C 00 00 1E 00 1D 0F 5F 50 52 57 00 A4  ADR......._PRW..
  22E0: 47 50 52 1E 0A 0B 0A 04 14 16 5F 50 52 54 1F A0  GPR......._PRT..
  22F0: 0A 50 49 43 4D A4 41 52 30 31 A4 50 52 30 31     .PICM.AR01.PR01[


// Compilation of small test code

                   0x5B,0x82,0x36,0x50,0x30,  /* 00000118    "R14[.6P0" */
    0x50,0x31,0x08,0x5F,0x41,0x44,0x52,0x0C,  /* 00000120    "P1._ADR." */
    0x00,0x00,0x1E,0x00,0x14,0x0F,0x5F,0x50,  /* 00000128    "......_P" */
    0x52,0x57,0x00,0xA4,0x47,0x50,0x52,0x57,  /* 00000130    "RW..GPRW" */
    0x0A,0x0B,0x0A,0x04,0x14,0x16,0x5F,0x50,  /* 00000138    "......_P" */
    0x52,0x54,0x00,0xA0,0x0A,0x50,0x49,0x43,  /* 00000140    "RT...PIC" */
    0x4D,0xA4,0x41,0x52,0x30,0x31,0xA4,0x50,  /* 00000148    "M.AR01.P" */
    0x52,0x30,0x31,                           /* 00000150    "R01..MAI" */


// Small test ASL code

    Device (P0P1)
    {
        Name (_ADR, 0x001E0000)  // _ADR: Address
        Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
        {
            Return (GPRW (0x0B, 0x04))
        }

        Method (_PRT, 0, NotSerialized)  // _PRT: PCI Routing Table
        {
            If (PICM)
            {
                Return (AR01)
            }

            Return (PR01)
        }
    }

-- 
Configure bugmail: https://bugzilla.kernel.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching the assignee of the bug.

------------------------------------------------------------------------------
Don't let slow site performance ruin your business. Deploy New Relic APM
Deploy New Relic app performance management and know exactly
what is happening inside your Ruby, Python, PHP, Java, and .NET app
Try New Relic at no cost today and get our sweet Data Nerd shirt too!
http://p.sf.net/sfu/newrelic-dev2dev
_______________________________________________
acpi-bugzilla mailing list
acpi-bugzilla@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/acpi-bugzilla

Reply via email to