[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v1 13/20] acpi/hvmloader: Include file/paths adjustments
In prepearation to moving acpi sources into generally available libacpi: 1. Move certain x86-specific definitions into acpi's x86.h 2. Modify include files serach paths to point to acpi 3. Macro-ise include file for build.c that defines various utilities used by that file. Users of libacpi will be expected to define this macro when compiling build.c Signed-off-by: Boris Ostrovsky <boris.ostrovsky@xxxxxxxxxx> --- Changes in v1: * Pass build.c include file that declates all standard utilities (printf. strcmp etc) as DSTDUTILS macro x86-specific definitions are kept locally in x86.h. I wonder, however, whether this should go somewhere in xen/include/public/<arch>. See, for example, patch 19 that demonstrates that having x86.h live in libacpi.h may not be such a great idea. tools/firmware/hvmloader/Makefile | 3 +- tools/firmware/hvmloader/acpi/README | 17 +++++++++++--- tools/firmware/hvmloader/acpi/build.c | 5 +-- tools/firmware/hvmloader/acpi/x86.h | 38 +++++++++++++++++++++++++++++++++ tools/firmware/hvmloader/config.h | 6 ----- tools/firmware/hvmloader/hvmloader.c | 3 +- tools/firmware/hvmloader/mp_tables.c | 1 + tools/firmware/hvmloader/ovmf.c | 2 +- tools/firmware/hvmloader/pci.c | 1 + tools/firmware/hvmloader/pir.c | 1 + tools/firmware/hvmloader/rombios.c | 2 +- tools/firmware/hvmloader/seabios.c | 4 +- tools/firmware/hvmloader/smp.c | 1 + tools/firmware/hvmloader/util.c | 5 ++- 14 files changed, 68 insertions(+), 21 deletions(-) create mode 100644 tools/firmware/hvmloader/acpi/x86.h diff --git a/tools/firmware/hvmloader/Makefile b/tools/firmware/hvmloader/Makefile index 043da50..920b0d0 100644 --- a/tools/firmware/hvmloader/Makefile +++ b/tools/firmware/hvmloader/Makefile @@ -99,7 +99,8 @@ smbios.o: CFLAGS += -D__SMBIOS_DATE__="\"$(SMBIOS_REL_DATE)\"" ACPI_PATH = $(XEN_ROOT)/tools/firmware/hvmloader/acpi ACPI_FILES = dsdt_anycpu.c dsdt_15cpu.c dsdt_anycpu_qemu_xen.c build.c static_tables.c ACPI_OBJS = $(patsubst %.c,%.o,$(ACPI_FILES)) -$(ACPI_OBJS): CFLAGS += -I$(ACPI_PATH) -I. +$(ACPI_OBJS): CFLAGS += -I. -DSTDUTILS=\"../util.h\" +CFLAGS += -I$(ACPI_PATH) vpath build.c $(ACPI_PATH)/ vpath static_tables.c $(ACPI_PATH)/ OBJS += $(ACPI_OBJS) diff --git a/tools/firmware/hvmloader/acpi/README b/tools/firmware/hvmloader/acpi/README index 210d5ba..1d603ea 100644 --- a/tools/firmware/hvmloader/acpi/README +++ b/tools/firmware/hvmloader/acpi/README @@ -1,11 +1,19 @@ -ACPI Table for domain firmware +ACPI builder for domain firmware -INSTALL +BUILDING ACPI ----------------- -Simply make is OK. -# make +Users of ACPI builder are expected to provide an include file that defines +the following: +* strncpy +* printf +* NULL +* test_bit +* offsetof +When compiling build.c, the name of this include file should be given to +compiler as -DSTDUTILS=\"<filename>\". See tools/firmware/hvmloader/Makefile +for an example. Note on DSDT Table ------------------ @@ -22,3 +30,4 @@ DSDT compiler "iasl" is needed. By default, it will be downloaded using wget in Makefile. if it failed, please download manually from http://developer.intel.com/technology/iapc/acpi/downloads.htm. then compile and install iasl + diff --git a/tools/firmware/hvmloader/acpi/build.c b/tools/firmware/hvmloader/acpi/build.c index 4b0302c..290f005 100644 --- a/tools/firmware/hvmloader/acpi/build.c +++ b/tools/firmware/hvmloader/acpi/build.c @@ -15,15 +15,14 @@ * this program; If not, see <http://www.gnu.org/licenses/>. */ +#include STDUTILS #include "acpi2_0.h" #include "libacpi.h" #include "ssdt_s3.h" #include "ssdt_s4.h" #include "ssdt_tpm.h" #include "ssdt_pm.h" -#include "../config.h" -#include "../util.h" -#include "../vnuma.h" +#include "x86.h" #include <xen/hvm/hvm_xs_strings.h> #include <xen/hvm/params.h> diff --git a/tools/firmware/hvmloader/acpi/x86.h b/tools/firmware/hvmloader/acpi/x86.h new file mode 100644 index 0000000..21cad0d --- /dev/null +++ b/tools/firmware/hvmloader/acpi/x86.h @@ -0,0 +1,38 @@ +/****************************************************************************** + * x86.h + * + * x86-specific interfaces used by ACPI builder and its callers + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Copyright (c) 2016 Oracle and/or its affiliates. All rights reserved. + */ + +#ifndef __ACPI_X86_H__ +#define __ACPI_X86_H__ + +#define IOAPIC_BASE_ADDRESS 0xfec00000 +#define IOAPIC_ID 0x01 + +#define LAPIC_BASE_ADDRESS 0xfee00000 +#define LAPIC_ID(vcpu_id) ((vcpu_id) * 2) + +#define PCI_ISA_IRQ_MASK 0x0c20U /* ISA IRQs 5,10,11 are PCI connected */ + +#endif /* __ACPI_X86_H__ */ diff --git a/tools/firmware/hvmloader/config.h b/tools/firmware/hvmloader/config.h index c7460fb..d847b86 100644 --- a/tools/firmware/hvmloader/config.h +++ b/tools/firmware/hvmloader/config.h @@ -42,15 +42,9 @@ extern struct bios_config ovmf_config; #define PAGE_SHIFT 12 #define PAGE_SIZE (1ul << PAGE_SHIFT) -#define IOAPIC_BASE_ADDRESS 0xfec00000 -#define IOAPIC_ID 0x01 #define IOAPIC_VERSION 0x11 -#define LAPIC_BASE_ADDRESS 0xfee00000 -#define LAPIC_ID(vcpu_id) ((vcpu_id) * 2) - #define PCI_ISA_DEVFN 0x08 /* dev 1, fn 0 */ -#define PCI_ISA_IRQ_MASK 0x0c20U /* ISA IRQs 5,10,11 are PCI connected */ /* MMIO hole: Hardcoded defaults, which can be dynamically expanded. */ #define PCI_MEM_END 0xfc000000 diff --git a/tools/firmware/hvmloader/hvmloader.c b/tools/firmware/hvmloader/hvmloader.c index 716d03c..06a1665 100644 --- a/tools/firmware/hvmloader/hvmloader.c +++ b/tools/firmware/hvmloader/hvmloader.c @@ -24,8 +24,9 @@ #include "config.h" #include "pci_regs.h" #include "apic_regs.h" -#include "acpi/acpi2_0.h" +#include "acpi2_0.h" #include "vnuma.h" +#include "x86.h" #include <xen/version.h> #include <xen/hvm/params.h> diff --git a/tools/firmware/hvmloader/mp_tables.c b/tools/firmware/hvmloader/mp_tables.c index 69c2885..4d21304 100644 --- a/tools/firmware/hvmloader/mp_tables.c +++ b/tools/firmware/hvmloader/mp_tables.c @@ -29,6 +29,7 @@ #include <stdint.h> #include "config.h" +#include "x86.h" /* number of non-processor MP table entries */ #define NR_NONPROC_ENTRIES 18 diff --git a/tools/firmware/hvmloader/ovmf.c b/tools/firmware/hvmloader/ovmf.c index 74fec56..e7c48a5 100644 --- a/tools/firmware/hvmloader/ovmf.c +++ b/tools/firmware/hvmloader/ovmf.c @@ -23,7 +23,7 @@ #include "config.h" #include "smbios_types.h" -#include "acpi/acpi2_0.h" +#include "acpi2_0.h" #include "apic_regs.h" #include "../rombios/config.h" #include "util.h" diff --git a/tools/firmware/hvmloader/pci.c b/tools/firmware/hvmloader/pci.c index 4eb1a31..d265109 100644 --- a/tools/firmware/hvmloader/pci.c +++ b/tools/firmware/hvmloader/pci.c @@ -23,6 +23,7 @@ #include "hypercall.h" #include "config.h" #include "pci_regs.h" +#include "x86.h" #include <xen/memory.h> #include <xen/hvm/ioreq.h> diff --git a/tools/firmware/hvmloader/pir.c b/tools/firmware/hvmloader/pir.c index cc420dd..f95bcea 100644 --- a/tools/firmware/hvmloader/pir.c +++ b/tools/firmware/hvmloader/pir.c @@ -16,6 +16,7 @@ #include "config.h" #include "pir_types.h" #include "util.h" +#include "x86.h" /* * The structure of these tables is described in diff --git a/tools/firmware/hvmloader/rombios.c b/tools/firmware/hvmloader/rombios.c index 1f8fc2d..863c1a7 100644 --- a/tools/firmware/hvmloader/rombios.c +++ b/tools/firmware/hvmloader/rombios.c @@ -24,7 +24,7 @@ #include "../rombios/config.h" #include "smbios_types.h" -#include "acpi/acpi2_0.h" +#include "acpi2_0.h" #include "pci_regs.h" #include "util.h" #include "hypercall.h" diff --git a/tools/firmware/hvmloader/seabios.c b/tools/firmware/hvmloader/seabios.c index 2fbc3af..aadae30 100644 --- a/tools/firmware/hvmloader/seabios.c +++ b/tools/firmware/hvmloader/seabios.c @@ -25,8 +25,8 @@ #include "util.h" #include "smbios_types.h" -#include "acpi/acpi2_0.h" -#include "acpi/libacpi.h" +#include "acpi2_0.h" +#include "libacpi.h" #define ROM_INCLUDE_SEABIOS #include "roms.inc" diff --git a/tools/firmware/hvmloader/smp.c b/tools/firmware/hvmloader/smp.c index 082b17f..4c6c3c6 100644 --- a/tools/firmware/hvmloader/smp.c +++ b/tools/firmware/hvmloader/smp.c @@ -22,6 +22,7 @@ #include "util.h" #include "config.h" #include "apic_regs.h" +#include "x86.h" #define AP_BOOT_EIP 0x1000 extern char ap_boot_start[], ap_boot_end[]; diff --git a/tools/firmware/hvmloader/util.c b/tools/firmware/hvmloader/util.c index 9438571..b7c9ff2 100644 --- a/tools/firmware/hvmloader/util.c +++ b/tools/firmware/hvmloader/util.c @@ -22,8 +22,9 @@ #include "hypercall.h" #include "ctype.h" #include "vnuma.h" -#include "acpi/acpi2_0.h" -#include "acpi/libacpi.h" +#include "acpi2_0.h" +#include "libacpi.h" +#include "x86.h" #include <stdint.h> #include <xen/xen.h> #include <xen/memory.h> -- 1.7.1 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |