diff mbox

[v1,13/20] acpi/hvmloader: Include file/paths adjustments

Message ID 1467745519-9868-14-git-send-email-boris.ostrovsky@oracle.com (mailing list archive)
State New, archived
Headers show

Commit Message

Boris Ostrovsky July 5, 2016, 7:05 p.m. UTC
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@oracle.com>
---

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

Comments

Jan Beulich July 8, 2016, 3:51 p.m. UTC | #1
>>> On 05.07.16 at 21:05, <boris.ostrovsky@oracle.com> wrote:
> 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.

None of what you put there in this patch looks like a candidate for
becoming part of the public interface.

> @@ -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
> +

Please don't.

> --- 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"

Is this really still needed here an in all of the further places where
you convert its path? I'd generally expect libacpi.h to be the only
interface needed now.

Jan
diff mbox

Patch

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>