http://bugzilla.kernel.org/show_bug.cgi?id=9915
------- Comment #3 from [EMAIL PROTECTED] 2008-02-09 02:44 ------- Reviewing the DSDT for use of OSI(Linux), I don't see that Panasonic has any specific support for Linux. Rather, OSI(Linux)'s main effect seems to be to run the DSDT as if Windows NT were running. In particular, there is a bunch of USB code that gets disabled because OSI(Linux) disables the Vista-validated path through the BIOS. However, I don't fully follow the save/restore to INFO mechanism -- it could possibly have some implications on SMM code. I'll be surprised if acpi_osi=Linux behaves differently from acpi_osi=!Linux WRT. the boot problems reported here. However, I wouldn't be surprised to see a differences in suspend/resume function, or USB function. Name (OSID, 0x00) # OSID is not referenced, except by the CKOS method itself Method (CKOS, 0, NotSerialized) { If (OSID) { Return (OSID) } If (CondRefOf (\_OSI, Local0)) { If (\_OSI ("Linux")) { Store (0x10, OSID) # OSI(Linux) sets OSID to x10 } Else { If (\_OSI ("Windows 2006")) { Store (0x83, OSID) } Else { Store (0x82, OSID) } } } Else { If (LEqual (SCMP (\_OS, "Microsoft Windows NT"), Zero)) { Store (0x81, OSID) } Else { If (LEqual (SCMP (\_OS, "Microsoft Windows"), Zero)) { Store (0x01, OSID) } Else { If (LEqual (SCMP (\_OS, "Microsoft WindowsME: Millennium Edition"), Zero)) { Store (0x02, OSID) } Else { Store (0xFF, OSID) } } } } Return (OSID) } ... Scope (\_SB) { Method (_INI, 0, NotSerialized) { If (DTSE) { \_SB.PSRV (0xC9, 0x04, 0x00, 0x00, 0x00) } Store (0x07D0, OSYS) If (CondRefOf (\_OSI, Local0)) { If (\_OSI ("Linux")) { Store (0x03E8, OSYS) } # OSYS is immediately over-written, so this OSI(Linux) is a NOP If (\_OSI ("Windows 2001")) { Store (0x07D1, OSYS) } If (\_OSI ("Windows 2001 SP1")) { Store (0x07D1, OSYS) } If (\_OSI ("Windows 2001 SP2")) { Store (0x07D2, OSYS) } If (\_OSI ("Windows 2006")) { Store (0x07D6, OSYS) } If (LAnd (MPEN, LEqual (OSYS, 0x07D1))) { \_SB.PSRV (0xC9, 0x03, One, One, 0x00) } } \_SB.PCI0.GFX0.INIG () } } # CKOS is used in several places Method (_WAK, 1, NotSerialized) { \_SB.PSRV (0x92, 0x03, 0x01, \CKOS (), 0x00) If (LEqual (Arg0, 0x03)) { \_SB.BAY3 () } ... Method (PSRV, 5, Serialized) { Acquire (PSMX, 0xFFFF) If (Arg2) { # Arg3 is the output from CKOS() Store (Arg3, INFO) } Store (Arg1, DID) Store (Arg0, BCMD) Store (0x00, SMIC) If (LEqual (Arg4, 0x00)) { Store (Zero, Local0) } Else { If (LEqual (Arg4, 0x01)) { Store (INF, Local0) } Else { If (LEqual (Arg4, 0x03)) { Store (INFD, Local0) } Else { If (LEqual (Arg4, 0x04)) { Store (INFP, Local0) } Else { Store (INFO, Local0) } } } } Release (PSMX) Return (Local0) } OperationRegion (SMI1, SystemMemory, 0x3F6D0D4D, 0x00000200) Field (SMI1, AnyAcc, NoLock, Preserve) { BCMD, 8, DID, 32, INFO, 4056 } # PSRV is widely called, and sometimes its return value is used. Device (PCI0) { Method (_INI, 0, NotSerialized) { \_SB.PSRV (0x92, 0x03, 0x01, \CKOS (), 0x00) GINI () AINI () \_SB.PSRV (0xB8, 0x01, 0x00, 0x00, 0x00) } # a bunch of USB code depends on CKOS == x83 (Vista) If (LEqual (\CKOS (), 0x83)) { Name (USP1, Zero) Name (USP2, Zero) Name (USPE, Zero) Name (\_SB.PCI0.USB1._PRW, Package (0x02) { 0x03, 0x03 }) Method (\_SB.PCI0.USB1._PSW, 1, NotSerialized) { Store (Arg0, USP1) \_SB.ECPF (0x021A, 0x03, LOr (USPE, USP1)) If (Arg0) { Store (0x03, \_SB.PCI0.USB1.RSEN) } Else { Store (Zero, \_SB.PCI0.USB1.RSEN) } } Name (\_SB.PCI0.USB2._PRW, Package (0x02) { 0x04, 0x03 }) Method (\_SB.PCI0.USB2._PSW, 1, NotSerialized) { Store (Arg0, USP2) \_SB.ECPF (0x021A, 0x0C, LOr (USPE, USP2)) If (Arg0) { Store (0x03, \_SB.PCI0.USB2.RSEN) } Else { Store (Zero, \_SB.PCI0.USB2.RSEN) } } Name (\_SB.PCI0.EHCI._PRW, Package (0x02) { 0x0D, 0x03 }) Method (\_SB.PCI0.EHCI._PSW, 1, NotSerialized) { Store (Arg0, USPE) \_SB.ECPF (0x021A, 0x03, LOr (USPE, USP1)) \_SB.ECPF (0x021A, 0x0C, LOr (USPE, USP2)) } Scope (\_GPE) { Method (_L03, 0, NotSerialized) { Notify (\_SB.PCI0.USB1, 0x02) } Method (_L04, 0, NotSerialized) { Notify (\_SB.PCI0.USB2, 0x02) } } } -- Configure bugmail: http://bugzilla.kernel.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug, or are watching someone who is. ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ acpi-bugzilla mailing list acpi-bugzilla@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/acpi-bugzilla