[SeaBIOS] [PATCHv4] acpi: make default DSDT optional

Michael S. Tsirkin mst at redhat.com
Mon Mar 18 14:18:25 CET 2013


Since commit f7e4dd6c18ccfbaf6cd2f5eaaed2b77cabc8a406 QEMU loads its
own copy of DSDT, so let's not build in PIIX.  This makes building in
the DSDT an option, default to on (built-in).  If no one complains for a
while, we'll be able to switch it off and then maybe remove altogether.

With CONFIG_ACPI_DSDT = y
Total size: 127348  Fixed: 58892  Free: 3724 (used 97.2% of 128KiB rom)
With CONFIG_ACPI_DSDT = n
Total size: 122844  Fixed: 58884  Free: 8228 (used 93.7% of 128KiB rom)

Signed-off-by: Michael S. Tsirkin <mst at redhat.com>
---

Changes from v3:
	- More changes suggested by Laszlo and Kevin, missed in v2.
	  Better document the new option as suggested by Paul and Kevin.

Changes from v2:
       - fixed and extended the commit log addressing comments by Gerd,
         Laszlo, Paul. No functional changes.

Changes from v1:
       - default the new option to y to reduce
         disruption to existing users

 src/Kconfig | 10 ++++++++++
 src/acpi.c  |  3 ++-
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/src/Kconfig b/src/Kconfig
index 3141069..5796173 100644
--- a/src/Kconfig
+++ b/src/Kconfig
@@ -387,6 +387,16 @@ menu "BIOS Tables"
         default y
         help
             Support generation of ACPI tables.
+    config ACPI_DSDT
+        bool "Include default ACPI DSDT"
+        default y
+        depends on ACPI
+        help
+            Include default DSDT ACPI table in BIOS.
+            Required for QEMU 1.3 and older.
+            This option can be disabled for QEMU 1.4 and newer
+            to save some space in the ROM file.
+            If unsure, say Y.
 endmenu
 
 source vgasrc/Kconfig
diff --git a/src/acpi.c b/src/acpi.c
index 119d1c1..88abc09 100644
--- a/src/acpi.c
+++ b/src/acpi.c
@@ -826,7 +826,8 @@ acpi_setup(void)
             break;
         }
     }
-    if (fadt && !fadt->dsdt) {
+
+    if (CONFIG_ACPI_DSDT && fadt && !fadt->dsdt) {
         /* default DSDT */
         void *dsdt = malloc_high(sizeof(AmlCode));
         if (!dsdt) {
-- 
MST



More information about the SeaBIOS mailing list