Ping. any news? On Tue, Oct 08, 2013 at 06:19:20AM +0000, Moore, Robert wrote: > I am out this week, will take a look when I get back. > Bob > > > > -----Original Message----- > > From: Michael S. Tsirkin [mailto:[email protected]] > > Sent: Monday, October 07, 2013 12:18 AM > > To: Moore, Robert > > Cc: Kevin O'Connor; Idwer Vollering; [email protected]; Tang, Feng; > > [email protected] > > Subject: iasl compiler/disassembler getting confused by Scope operator > > > > I observe the following issue with acpica-tools-20130823-2.fc19.i686: > > Compile a file, disassemble it then compile again, this fails because the > > Extern directives produced by disassembler confuse the compiler. > > > > Wiuld be nice if this was fixed disasseble then compile is a nice sanity- > > check tool. > > Thanks! > > > > ---> > > > > Original: > > > > > > /* > > * Intel ACPI Component Architecture > > * AML Disassembler version 20130823-32 [Aug 28 2013] > > * Copyright (c) 2000 - 2013 Intel Corporation > > * > > * Disassembly of SSDT, Mon Oct 7 09:48:29 2013 > > * > > * Original Table Header: > > * Signature "SSDT" > > * Length 0x00000FE0 (4064) > > * Revision 0x01 > > * Checksum 0x9F > > * OEM ID "BOCHS " > > * OEM Table ID "BXPCSSDT" > > * OEM Revision 0x00000001 (1) > > * Compiler ID "BXPC" > > * Compiler Version 0x00000001 (1) > > */ > > DefinitionBlock ("SSDT.aml", "SSDT", 1, "BOCHS ", "BXPCSSDT", 0x00000001) > > { > > > > External (_SB_.PCI0, DeviceObj) > > External (_SB_.PCI0.ISA_, DeviceObj) > > External (BNUM, FieldUnitObj) > > External (CPEJ, MethodObj) // 2 Arguments > > External (CPMA, MethodObj) // 1 Arguments > > External (CPST, MethodObj) // 1 Arguments > > External (PCEJ, MethodObj) // 2 Arguments > > External (PCID, FieldUnitObj) > > External (PCIU, FieldUnitObj) > > > > Scope (\) > > { > > Name (P0S, 0x80000000) > > Name (P0E, 0xFEBFFFFF) > > Name (P1V, 0x00) > > Name (P1S, Buffer (0x08) > > { > > 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 > > }) > > Name (P1E, Buffer (0x08) > > { > > 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 > > }) > > Name (P1L, Buffer (0x08) > > { > > 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 > > }) > > } > > > > Scope (\) > > { > > Name (_S3, Package (0x04) // _S3_: S3 System State > > { > > One, > > One, > > Zero, > > Zero > > }) > > Name (_S4, Package (0x04) // _S4_: S4 System State > > { > > 0x02, > > 0x02, > > Zero, > > Zero > > }) > > Name (_S5, Package (0x04) // _S5_: S5 System State > > { > > Zero, > > Zero, > > Zero, > > Zero > > }) > > } > > > > Scope (\_SB.PCI0.ISA) > > { > > Device (PEVT) > > { > > Name (_HID, "QEMU0001") // _HID: Hardware ID > > Name (PEST, 0x0000) > > OperationRegion (PEOR, SystemIO, PEST, One) > > Field (PEOR, ByteAcc, NoLock, Preserve) > > { > > PEPT, 8 > > } > > > > Method (_STA, 0, NotSerialized) // _STA: Status > > { > > Store (PEST, Local0) > > If (LEqual (Local0, Zero)) > > { > > Return (Zero) > > } > > Else > > { > > Return (0x0F) > > } > > } > > > > Method (RDPT, 0, NotSerialized) > > { > > Store (PEPT, Local0) > > Return (Local0) > > } > > > > Method (WRPT, 1, NotSerialized) > > { > > Store (Arg0, PEPT) > > } > > > > Name (_CRS, ResourceTemplate () // _CRS: Current Resource > > Settings > > { > > IO (Decode16, > > 0x0000, // Range Minimum > > 0x0000, // Range Maximum > > 0x01, // Alignment > > 0x01, // Length > > _Y03) > > }) > > CreateWordField (_CRS, \_SB.PCI0.ISA.PEVT._Y03._MIN, IOMN) // > > _MIN: Minimum Base Address > > CreateWordField (_CRS, \_SB.PCI0.ISA.PEVT._Y03._MAX, IOMX) // > > _MAX: Maximum Base Address > > Method (_INI, 0, NotSerialized) // _INI: Initialize > > { > > Store (PEST, IOMN) > > Store (PEST, IOMX) > > } > > } > > } > > > > Scope (_SB) > > { > > Scope (PCI0) > > { > > Name (BSEL, Zero) > > Device (S18) > > { > > Name (_SUN, 0x03) // _SUN: Slot User Number > > Name (_ADR, 0x00030000) // _ADR: Address > > Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device > > { > > PCEJ (BSEL, _SUN) > > } > > } > > > > Method (DVNT, 2, NotSerialized) > > { > > If (And (Arg0, 0x08)) > > { > > Notify (S18, Arg1) > > } > > } > > > > Method (PCNT, 0, NotSerialized) > > { > > Store (Zero, BNUM) > > DVNT (PCIU, One) > > DVNT (PCID, 0x03) > > ^S20.PCNT () > > } > > > > Device (S20) > > { > > Name (_SUN, 0x04) // _SUN: Slot User Number > > Name (_ADR, 0x00040000) // _ADR: Address > > Name (BSEL, One) > > Method (PCNT, 0, NotSerialized) > > { > > Store (One, BNUM) > > } > > } > > } > > } > > } > > > > > > --- > > > > Compile with iasl foo.dsl > > > > Disassemble with iasl -d -e DSDT SSDT.aml (see DSDT.dsl at the end of the > > mail). > > > > > > /* > > * Intel ACPI Component Architecture > > * AML Disassembler version 20130823-32 [Aug 28 2013] > > * Copyright (c) 2000 - 2013 Intel Corporation > > * > > * Disassembly of SSDT.aml, Mon Oct 7 10:10:41 2013 > > * > > * Original Table Header: > > * Signature "SSDT" > > * Length 0x00000207 (519) > > * Revision 0x01 > > * Checksum 0xBF > > * OEM ID "BOCHS " > > * OEM Table ID "BXPCSSDT" > > * OEM Revision 0x00000001 (1) > > * Compiler ID "INTL" > > * Compiler Version 0x20130823 (538118179) > > */ > > DefinitionBlock ("SSDT.aml", "SSDT", 1, "BOCHS ", "BXPCSSDT", 0x00000001) > > { > > > > External (_SB_.PCI0.ISA_, DeviceObj) > > External (BNUM, FieldUnitObj) > > External (PCEJ, MethodObj) // 2 Arguments > > External (PCI0, DeviceObj) > > External (PCID, FieldUnitObj) > > External (PCIU, FieldUnitObj) > > > > Scope (\) > > { > > Name (P0S, 0x80000000) > > Name (P0E, 0xFEBFFFFF) > > Name (P1V, Zero) > > Name (P1S, Buffer (0x08) > > { > > 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 > > }) > > Name (P1E, Buffer (0x08) > > { > > 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 > > }) > > Name (P1L, Buffer (0x08) > > { > > 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 > > }) > > } > > > > Scope (\) > > { > > Name (_S3, Package (0x04) // _S3_: S3 System State > > { > > One, > > One, > > Zero, > > Zero > > }) > > Name (_S4, Package (0x04) // _S4_: S4 System State > > { > > 0x02, > > 0x02, > > Zero, > > Zero > > }) > > Name (_S5, Package (0x04) // _S5_: S5 System State > > { > > Zero, > > Zero, > > Zero, > > Zero > > }) > > } > > > > Scope (\_SB.PCI0.ISA) > > { > > Device (PEVT) > > { > > Name (_HID, "QEMU0001") // _HID: Hardware ID > > Name (PEST, Zero) > > OperationRegion (PEOR, SystemIO, PEST, One) > > Field (PEOR, ByteAcc, NoLock, Preserve) > > { > > PEPT, 8 > > } > > > > Method (_STA, 0, NotSerialized) // _STA: Status > > { > > Store (PEST, Local0) > > If (LEqual (Local0, Zero)) > > { > > Return (Zero) > > } > > Else > > { > > Return (0x0F) > > } > > } > > > > Method (RDPT, 0, NotSerialized) > > { > > Store (PEPT, Local0) > > Return (Local0) > > } > > > > Method (WRPT, 1, NotSerialized) > > { > > Store (Arg0, PEPT) > > } > > > > Name (_CRS, ResourceTemplate () // _CRS: Current Resource > > Settings > > { > > IO (Decode16, > > 0x0000, // Range Minimum > > 0x0000, // Range Maximum > > 0x01, // Alignment > > 0x01, // Length > > _Y00) > > }) > > CreateWordField (_CRS, \_SB.PCI0.ISA.PEVT._Y00._MIN, IOMN) // > > _MIN: Minimum Base Address > > CreateWordField (_CRS, \_SB.PCI0.ISA.PEVT._Y00._MAX, IOMX) // > > _MAX: Maximum Base Address > > Method (_INI, 0, NotSerialized) // _INI: Initialize > > { > > Store (PEST, IOMN) > > Store (PEST, IOMX) > > } > > } > > } > > > > Scope (_SB) > > { > > Scope (PCI0) > > { > > Name (BSEL, Zero) > > Device (S18) > > { > > Name (_SUN, 0x03) // _SUN: Slot User Number > > Name (_ADR, 0x00030000) // _ADR: Address > > Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device > > { > > PCEJ (BSEL, _SUN) > > } > > } > > > > Method (DVNT, 2, NotSerialized) > > { > > If (And (Arg0, 0x08)) > > { > > Notify (S18, Arg1) > > } > > } > > > > Method (PCNT, 0, NotSerialized) > > { > > Store (Zero, BNUM) > > DVNT (PCIU, One) > > DVNT (PCID, 0x03) > > ^S20.PCNT () > > } > > > > Device (S20) > > { > > Name (_SUN, 0x04) // _SUN: Slot User Number > > Name (_ADR, 0x00040000) // _ADR: Address > > Name (BSEL, One) > > Method (PCNT, 0, NotSerialized) > > { > > Store (One, BNUM) > > } > > } > > } > > } > > } > > > > <---- > > > > Compilation error: > > Intel ACPI Component Architecture > > ASL Optimizing Compiler version 20130823-32 [Aug 28 2013] Copyright (c) > > 2000 - 2013 Intel Corporation > > > > SSDT.dsl 130: Scope (PCI0) > > Error 6117 - ^ Existing object has invalid type for > > Scope operator (PCI0 [Untyped]) > > > > > > > > If you compane the original and the disassebled result, you see the issue: > > > > > > DefinitionBlock ("SSDT.aml", "SSDT", 1, "BOCHS ", "BXPCSSDT", > > 0x00000001) > > { > > > > - External (_SB_.PCI0, DeviceObj) > > External (_SB_.PCI0.ISA_, DeviceObj) > > External (BNUM, FieldUnitObj) > > External (CPEJ, MethodObj) // 2 Arguments > > External (CPMA, MethodObj) // 1 Arguments > > External (CPST, MethodObj) // 1 Arguments > > External (PCEJ, MethodObj) // 2 Arguments > > + External (PCI0, DeviceObj) > > External (PCID, FieldUnitObj) > > External (PCIU, FieldUnitObj) > > > > > > So External (_SB_.PCI0.ISA_, DeviceObj) > > implicitly defines PCI0 as an untyped object, Scope (PCI0) is then taken > > to refer to that (since it's in the correct namespace). > > Also, External (PCI0, DeviceObj) is produced in the wrong namespace. > > > > > > To reproduce you will need a DSDT (for disassembler), see DSDT.dsl below: > > > > > > /* > > * Intel ACPI Component Architecture > > * AML Disassembler version 20130823-32 [Aug 28 2013] > > * Copyright (c) 2000 - 2013 Intel Corporation > > * > > * Disassembly of DSDT, Mon Oct 7 09:58:06 2013 > > * > > * Original Table Header: > > * Signature "DSDT" > > * Length 0x00001158 (4440) > > * Revision 0x01 **** 32-bit table (V1), no 64-bit math > > support > > * Checksum 0xC6 > > * OEM ID "BXPC" > > * OEM Table ID "BXDSDT" > > * OEM Revision 0x00000001 (1) > > * Compiler ID "INTL" > > * Compiler Version 0x20130823 (538118179) > > */ > > DefinitionBlock ("DSDT.aml", "DSDT", 1, "BXPC", "BXDSDT", 0x00000001) { > > External (_SB_.PCI0.PCNT, MethodObj) > > External (NTFY, MethodObj) > > > > External (CPON) > > External (P0E_, IntObj) > > External (P0S_, IntObj) > > External (P1E_, IntObj) > > External (P1L_, IntObj) > > External (P1S_, IntObj) > > External (P1V_) > > > > Scope (\) > > { > > OperationRegion (DBG, SystemIO, 0x0402, One) > > Field (DBG, ByteAcc, NoLock, Preserve) > > { > > DBGB, 8 > > } > > > > Method (DBUG, 1, NotSerialized) > > { > > ToHexString (Arg0, Local0) > > ToBuffer (Local0, Local0) > > Subtract (SizeOf (Local0), One, Local1) > > Store (Zero, Local2) > > While (LLess (Local2, Local1)) > > { > > Store (DerefOf (Index (Local0, Local2)), DBGB) > > Increment (Local2) > > } > > > > Store (0x0A, DBGB) > > } > > } > > > > Scope (_SB) > > { > > Device (PCI0) > > { > > Name (_HID, EisaId ("PNP0A03")) // _HID: Hardware ID > > Name (_ADR, Zero) // _ADR: Address > > Name (_UID, One) // _UID: Unique ID > > } > > } > > > > Scope (_SB.PCI0) > > { > > Device (ISA) > > { > > Name (_ADR, 0x00010000) // _ADR: Address > > OperationRegion (P40C, PCI_Config, 0x60, 0x04) > > Name (FDEN, One) > > } > > } > > > > Scope (_SB.PCI0) > > { > > OperationRegion (PCST, SystemIO, 0xAE00, 0x08) > > Field (PCST, DWordAcc, NoLock, WriteAsZeros) > > { > > PCIU, 32, > > PCID, 32 > > } > > > > OperationRegion (SEJ, SystemIO, 0xAE08, 0x04) > > Field (SEJ, DWordAcc, NoLock, WriteAsZeros) > > { > > B0EJ, 32 > > } > > > > OperationRegion (BNMR, SystemIO, 0xAE10, 0x04) > > Field (BNMR, DWordAcc, NoLock, WriteAsZeros) > > { > > BNUM, 32 > > } > > > > Mutex (BLCK, 0x00) > > Method (PCEJ, 2, NotSerialized) > > { > > Acquire (BLCK, 0xFFFF) > > Store (Arg0, BNUM) > > Store (ShiftLeft (One, Arg1), B0EJ) > > Release (BLCK) > > Return (Zero) > > } > > } > > > > Scope (_GPE) > > { > > Name (_HID, "ACPI0006") // _HID: Hardware ID > > Method (_L00, 0, NotSerialized) // _Lxx: Level-Triggered GPE > > { > > } > > > > Method (_E01, 0, NotSerialized) // _Exx: Edge-Triggered GPE > > { > > Acquire (\_SB.PCI0.BLCK, 0xFFFF) > > \_SB.PCI0.PCNT () > > Release (\_SB.PCI0.BLCK) > > } > > > > } > > } > >
-- coreboot mailing list: [email protected] http://www.coreboot.org/mailman/listinfo/coreboot

