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
[email protected]
https://lists.sourceforge.net/lists/listinfo/acpi-bugzilla