APEI blob is created based on existing ACPI tables and allow kernel to use it as APEI specific registers, hardware behaviour simulation etc. This is the same method used on armv7 prototype.
Signed-off-by: Tomasz Nowicki tomasz.nowicki@linaro.org --- Makefile | 11 +++++++++-- model.lds.S | 12 +++++++++++- 2 files changed, 20 insertions(+), 3 deletions(-)
diff --git a/Makefile b/Makefile index 412ab45..df3ff75 100644 --- a/Makefile +++ b/Makefile @@ -16,7 +16,8 @@ CNTFRQ := 0x01800000 # 24Mhz
#INITRD_FLAGS := -DUSE_INITRD ACPI_FLAGS := -DUSE_ACPI -CPPFLAGS += $(INITRD_FLAGS) $(ACPI_FLAGS) +APEI_FLAGS := -DUSE_APEI +CPPFLAGS += $(INITRD_FLAGS) $(ACPI_FLAGS) $(APEI_FLAGS)
BOOTLOADER := boot.S MBOX_OFFSET := 0xfff8 @@ -37,6 +38,12 @@ ACPI_START := $(shell echo $$(($(PHYS_OFFSET) + $(ACPI_OFFSET)))) ACPI_SIZE := $(shell stat -Lc %s $(ACPI) 2>/dev/null || echo 0) ACPI_END := $(shell echo $$(($(ACPI_START) + $(ACPI_SIZE))))
+APEI := apei.acpi +APEI_OFFSET := 0x7fff0000 +APEI_START := $(shell echo $$(($(PHYS_OFFSET) + $(APEI_OFFSET)))) +APEI_SIZE := $(shell stat -Lc %s $(APEI) 2>/dev/null || echo 0) +APEI_END := $(shell echo $$(($(APEI_START) + $(APEI_SIZE)))) + FDT_SRC := rtsm_ve-aemv8a.dts FDT_INCL_REGEX := (/include/[[:space:]]*")([^"]+)(".*) FDT_DEPS := $(FDT_SRC) $(addprefix $(dir $(FDT_SRC)), $(shell sed -ne 'sq$(strip $(FDT_INCL_REGEX)q\2q p' < $(FDT_SRC)))) @@ -86,7 +93,7 @@ boot.o: $(BOOTLOADER) Makefile $(CC) $(CPPFLAGS) -DCNTFRQ=$(CNTFRQ) -DUART_BASE=$(UART_BASE) -DSYSREGS_BASE=$(SYSREGS_BASE) -DGIC_DIST_BASE=$(GIC_DIST_BASE) -DGIC_CPU_BASE=$(GIC_CPU_BASE) -c -o $@ $(BOOTLOADER)
model.lds: $(LD_SCRIPT) Makefile - $(CC) $(CPPFLAGS) -DPHYS_OFFSET=$(PHYS_OFFSET) -DMBOX_OFFSET=$(MBOX_OFFSET) -DKERNEL_OFFSET=$(KERNEL_OFFSET) -DFDT_OFFSET=$(FDT_OFFSET) -DFS_OFFSET=$(FS_OFFSET) -DKERNEL=$(KERNEL) -DFILESYSTEM=$(FILESYSTEM) -DACPI=$(ACPI) -DACPI_OFFSET=$(ACPI_OFFSET) -E -P -C -o $@ $< + $(CC) $(CPPFLAGS) -DPHYS_OFFSET=$(PHYS_OFFSET) -DMBOX_OFFSET=$(MBOX_OFFSET) -DKERNEL_OFFSET=$(KERNEL_OFFSET) -DFDT_OFFSET=$(FDT_OFFSET) -DFS_OFFSET=$(FS_OFFSET) -DKERNEL=$(KERNEL) -DFILESYSTEM=$(FILESYSTEM) -DACPI=$(ACPI) -DACPI_OFFSET=$(ACPI_OFFSET) -DAPEI=$(APEI) -DAPEI_OFFSET=$(APEI_OFFSET) -E -P -C -o $@ $<
ifeq ($(DTC),) $(error No dtc found! You can git clone from git://git.jdl.com/software/dtc.git) diff --git a/model.lds.S b/model.lds.S index f8d4683..4bbad07 100644 --- a/model.lds.S +++ b/model.lds.S @@ -17,6 +17,10 @@ INPUT(./fdt.dtb)
#ifdef USE_ACPI INPUT(ACPI) + +#ifdef USE_APEI +INPUT(APEI) +#endif #endif
#ifdef USE_INITRD @@ -37,10 +41,16 @@ SECTIONS . = PHYS_OFFSET + FDT_OFFSET; dtb = .; .dtb : { ./fdt.dtb } +#ifdef USE_ACPI . = PHYS_OFFSET + ACPI_OFFSET; acpi = .; -#ifdef USE_ACPI .acpi : { ACPI } + +#ifdef USE_APEI + . = PHYS_OFFSET + APEI_OFFSET; + apei = .; + .apei : { APEI } +#endif #endif . = PHYS_OFFSET + FS_OFFSET; filesystem = .;