Paul Menzel (paulepanter@users.sourceforge.net) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/2938
-gerrit
commit 483cddfa6cf4a8c50482dc571ae518074d87b1ee Author: Denis 'GNUtoo' Carikli GNUtoo@no-log.org Date: Thu Mar 28 14:24:39 2013 +0100
Intel i945: ACPI: Add _OSC method
Add the ACPI Operating System Capabilities Method and let the operation system control everything.
Commit »AMD Fam14 DSDT: Add OSC method« (00a0e76b) [1] is used as a template.
The Lenovo X60 [2] running the Parabola GNU/Linux distribution [3] is used for testing.
Before that change:
$ dmesg | egrep -e OSC -e ASPM [ 0.108036] pci_root PNP0A08:00: ACPI _OSC support notification failed, disabling PCIe ASPM [ 0.108040] pci_root PNP0A08:00: Unable to request _OSC control (_OSC support mask: 0x08) [ 0.118089] ACPI _OSC control for PCIe not granted, disabling ASPM [ 16.874569] e1000e 0000:01:00.0: Disabling ASPM L0s L1
With that change:
$ dmesg | egrep -e OSC -e ASPM [ 0.107962] pci_root PNP0A08:00: Requesting ACPI _OSC control (0x1d) [ 0.108003] pci_root PNP0A08:00: ACPI _OSC control (0x1d) granted [ 0.111052] pci 0000:01:00.0: disabling ASPM on pre-1.1 PCIe device. You can enable it with 'pcie_aspm=force' [ 17.537970] e1000e 0000:01:00.0: Disabling ASPM L0s L1
[1] http://review.coreboot.org/2738 [2] http://www.coreboot.org/Lenovo_x60x [3] https://parabolagnulinux.org/
Change-Id: I1caffa44eea447d553c01caaf431f2db241ea5ea Signed-off-by: Denis 'GNUtoo' Carikli GNUtoo@no-log.org Signed-off-by: Paul Menzel paulepanter@users.sourceforge.net --- src/northbridge/intel/i945/acpi/i945.asl | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+)
diff --git a/src/northbridge/intel/i945/acpi/i945.asl b/src/northbridge/intel/i945/acpi/i945.asl index 47a6931..6a34b94 100644 --- a/src/northbridge/intel/i945/acpi/i945.asl +++ b/src/northbridge/intel/i945/acpi/i945.asl @@ -22,6 +22,25 @@ #include "hostbridge.asl" #include "../i945.h"
+/* Operating System Capabilities Method */ +Method (_OSC, 4) +{ + // Create DWord-addressable fields from the Capabilities Buffer + CreateDWordField(Arg3, 0, CDW1) + CreateDWordField(Arg3, 4, CDW2) + CreateDWordField(Arg3, 8, CDW3) + + /* Check for proper PCI/PCIe UUID */ + If (LEqual(Arg0, ToUUID("33DB4D5B-1FF7-401C-9657-7441C03DD766"))) + { + /* Let OS control everything */ + Return(Arg3) + } Else { + Or(CDW1, 4, CDW1) // Unrecognized UUID, so set bit 2 to 1 + Return(Arg3) + } +} + /* PCI Device Resource Consumption */ Device (PDRC) {