Don't run VGA option ROMs on S3 resume.
authorStefan Reinauer <reinauer@chromium.org>
Fri, 23 Sep 2011 17:33:58 +0000 (10:33 -0700)
committerPatrick Georgi <patrick@georgi-clan.de>
Thu, 8 Mar 2012 17:18:39 +0000 (18:18 +0100)
This will save us a few 100 ms on resume.

Change-Id: Iabf4c8ab88662ba41236162f0a6f5bd80d8c1255
Signed-off-by: Stefan Reinauer <reinauer@google.com>
Reviewed-on: http://review.coreboot.org/715
Tested-by: build bot (Jenkins)
Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
Reviewed-by: Patrick Georgi <patrick@georgi-clan.de>
src/devices/Kconfig
src/devices/pci_device.c

index 9e5ea6e09445a698564ecfaa530f2010785ab314..572addcf53848213a1317b49781e7ba80edde3ea 100644 (file)
@@ -33,6 +33,13 @@ config VGA_ROM_RUN
          Execute VGA option ROMs, if found. This is required to enable
          PCI/AGP/PCI-E video cards.
 
+config S3_VGA_ROM_RUN
+       bool "Re-run VGA option ROMs on S3 resume"
+       default y
+       depends on VGA_ROM_RUN && HAVE_ACPI_RESUME
+       help
+         Execute VGA option ROMs when coming out of an S3 resume.
+
 config PCI_ROM_RUN
        bool "Run non-VGA option ROMs"
        default y
index 2ccb38a75eed74af175abbc65e2ec5a306068486..0a870b84cfe63ee5e57e24a0ec1f122be34853fe 100644 (file)
@@ -51,6 +51,9 @@
 #if CONFIG_PC80_SYSTEM == 1
 #include <pc80/i8259.h>
 #endif
+#if CONFIG_HAVE_ACPI_RESUME && !CONFIG_S3_VGA_ROM_RUN
+#include <arch/acpi.h>
+#endif
 
 u8 pci_moving_config8(struct device *dev, unsigned int reg)
 {
@@ -672,6 +675,14 @@ void pci_dev_init(struct device *dev)
        if (ram == NULL)
                return;
 
+#if CONFIG_HAVE_ACPI_RESUME && !CONFIG_S3_VGA_ROM_RUN
+       /* If S3_VGA_ROM_RUN is disabled, skip running VGA option
+        * ROMs when coming out of an S3 resume.
+        */
+       if ((acpi_slp_type == 3) &&
+               ((dev->class >> 8) == PCI_CLASS_DISPLAY_VGA))
+               return;
+#endif
        run_bios(dev, (unsigned long)ram);
 #endif /* CONFIG_PCI_ROM_RUN || CONFIG_VGA_ROM_RUN */
 }