From: Jason Baron jbaron@redhat.com
This builds seabios such that the dsdt tables are no longer built into the seabios binary. They must be passed to the seabios via fw_cfg. This saves space in the seabios binary for unnecessary dsdt tables.
I suspect that this will make other users of Seabios, besides qemu unhappy, but I'm not sure.
Signed-off-by: Jason Baron jbaron@redhat.com --- Makefile | 12 ++++++++++-- src/acpi-dsdt.dsl | 3 --- src/acpi.c | 13 +++---------- 3 files changed, 13 insertions(+), 15 deletions(-)
diff --git a/Makefile b/Makefile index 79abab6..4f9785d 100644 --- a/Makefile +++ b/Makefile @@ -21,6 +21,9 @@ SRC32FLAT=$(SRCBOTH) post.c shadow.c memmap.c coreboot.c boot.c \ biostables.c xen.c bmp.c romfile.c SRC32SEG=util.c output.c pci.c pcibios.c apm.c stacks.c
+#DSDT AML targets +DSDTTABLES=$(OUT)acpi-dsdt.aml $(OUT)q35-acpi-dsdt.aml + # Default compiler flags cc-option=$(shell if test -z "`$(1) $(2) -S -o /dev/null -xc /dev/null 2>&1`" \ ; then echo "$(2)"; else echo "$(3)"; fi ;) @@ -68,7 +71,7 @@ IASL:=iasl # Default targets -include $(KCONFIG_CONFIG)
-target-y = $(OUT) $(OUT)bios.bin +target-y = $(OUT) $(DSDTTABLES) $(OUT)bios.bin target-$(CONFIG_BUILD_VGABIOS) += $(OUT)vgabios.bin
all: $(target-y) @@ -233,7 +236,12 @@ $(OUT)%.hex: src/%.dsl ./tools/acpi_extract_preprocess.py ./tools/acpi_extract.p $(Q)$(PYTHON) ./tools/acpi_extract.py $(OUT)$*.lst > $(OUT)$*.off $(Q)cat $(OUT)$*.off > $@
-$(OUT)ccode32flat.o: $(OUT)acpi-dsdt.hex $(OUT)ssdt-proc.hex $(OUT)ssdt-pcihp.hex $(OUT)ssdt-susp.hex $(OUT)q35-acpi-dsdt.hex +$(OUT)%.aml: src/%.dsl + @echo " Compiling IASL $@" + $(Q)cpp -P $< > $(OUT)$*.dsl.i.orig + $(Q)$(IASL) $(call iasl-option,$(IASL),-Pn,) -vs -l -tc -p $(OUT)$* $(OUT)$*.dsl.i.orig + +$(OUT)ccode32flat.o: $(OUT)ssdt-proc.hex $(OUT)ssdt-pcihp.hex $(OUT)ssdt-susp.hex
################ Kconfig rules
diff --git a/src/acpi-dsdt.dsl b/src/acpi-dsdt.dsl index d2575a5..697ecdc 100644 --- a/src/acpi-dsdt.dsl +++ b/src/acpi-dsdt.dsl @@ -16,9 +16,6 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ - -ACPI_EXTRACT_ALL_CODE AmlCode - DefinitionBlock ( "acpi-dsdt.aml", // Output Filename "DSDT", // Signature diff --git a/src/acpi.c b/src/acpi.c index 6cf345a..7cc2c35 100644 --- a/src/acpi.c +++ b/src/acpi.c @@ -213,8 +213,6 @@ struct srat_memory_affinity u32 reserved3[2]; } PACKED;
-#include "acpi-dsdt.hex" - static void build_header(struct acpi_table_header *h, u32 sig, int len, u8 rev) { @@ -939,14 +937,9 @@ acpi_bios_init(void) } } if (fadt && !fadt->dsdt) { - /* default DSDT */ - void *dsdt = malloc_high(sizeof(AmlCode)); - if (!dsdt) { - warn_noalloc(); - return; - } - memcpy(dsdt, AmlCode, sizeof(AmlCode)); - fill_dsdt(fadt, dsdt); + /* FIXME: better error msg */ + warn_internalerror(); + return; }
// Build final rsdt table