From patchwork Tue Jul 5 19:05:12 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Boris Ostrovsky X-Patchwork-Id: 9215117 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 2D9EB60752 for ; Tue, 5 Jul 2016 19:13:57 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1EAD628333 for ; Tue, 5 Jul 2016 19:13:57 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 1345F28336; Tue, 5 Jul 2016 19:13:57 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=2.0 tests=BAYES_00, RCVD_IN_DNSWL_MED, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 0A9C028335 for ; Tue, 5 Jul 2016 19:13:56 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bKVlH-0004Yf-Vy; Tue, 05 Jul 2016 19:11:59 +0000 Received: from mail6.bemta6.messagelabs.com ([85.158.143.247]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bKVlG-0004WV-Gc for xen-devel@lists.xen.org; Tue, 05 Jul 2016 19:11:58 +0000 Received: from [85.158.143.35] by server-1.bemta-6.messagelabs.com id 76/64-09256-D760C775; Tue, 05 Jul 2016 19:11:57 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmpnkeJIrShJLcpLzFFi42KZM10+ULeWrSb cYN0/DoslHxezODB6HN39mymAMYo1My8pvyKBNWPv+YSCHr+KrQvvMzYwHnTuYuTiEBJoZ5JY Nns9cxcjJ5DzmVHi5UNliMQGRokzLTeZIJweRonp/2ewgFSxCRhJnD06nRHEFhGQlrj2+TIjS BGzwC1Gie2/74CNEhbwkDh4fCFYEYuAqsTjrT+ZQGxeAS+Jlnf9YDUSAnISO1Y/AYtzAsXXN7 5igTjDU2LTk7PsEDXGEn2z+lgmMPItYGRYxahenFpUllqka6SXVJSZnlGSm5iZo2toYKaXm1p cnJiempOYVKyXnJ+7iREYKAxAsINx2V+nQ4ySHExKorws36rDhfiS8lMqMxKLM+KLSnNSiw8x ynBwKEnwlrPWhAsJFqWmp1akZeYAQxYmLcHBoyTC2w2S5i0uSMwtzkyHSJ1i1OU4NvfGWiYhl rz8vFQpcV4tkCIBkKKM0jy4EbD4ucQoKyXMywh0lBBPQWpRbmYJqvwrRnEORiVh3jSQKTyZeS Vwm14BHcEEdMRPl2qQI0oSEVJSDYxrWdkfbDqn+LrPoXSKUvbW/XyRHUKz1+w/mfc3ym/Z5zT tS5ppttKaIVYdO7ac3Wf0b1aQj4GAfNjsy6ffV6xa/5y/+IKH6qK1O1669tx5HLp8yh++6qdr U6UveK3sX2W5p/vIM7YZf/OLObgyJd57vMlh539yrn4Z47bqJ/tNJwYXvRMNnPpfiaU4I9FQi 7moOBEAYMUFdZoCAAA= X-Env-Sender: boris.ostrovsky@oracle.com X-Msg-Ref: server-3.tower-21.messagelabs.com!1467745915!21903812!1 X-Originating-IP: [156.151.31.81] X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: VHJ1c3RlZCBJUDogMTU2LjE1MS4zMS44MSA9PiAyODgzMzk=\n X-StarScan-Received: X-StarScan-Version: 8.46; banners=-,-,- X-VirusChecked: Checked Received: (qmail 31086 invoked from network); 5 Jul 2016 19:11:56 -0000 Received: from userp1040.oracle.com (HELO userp1040.oracle.com) (156.151.31.81) by server-3.tower-21.messagelabs.com with DHE-RSA-AES256-GCM-SHA384 encrypted SMTP; 5 Jul 2016 19:11:56 -0000 Received: from aserv0021.oracle.com (aserv0021.oracle.com [141.146.126.233]) by userp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id u65JBQCN022803 (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 5 Jul 2016 19:11:26 GMT Received: from userv0121.oracle.com (userv0121.oracle.com [156.151.31.72]) by aserv0021.oracle.com (8.13.8/8.13.8) with ESMTP id u65JBPUm000990 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 5 Jul 2016 19:11:26 GMT Received: from abhmp0009.oracle.com (abhmp0009.oracle.com [141.146.116.15]) by userv0121.oracle.com (8.13.8/8.13.8) with ESMTP id u65JBPXb009075; Tue, 5 Jul 2016 19:11:25 GMT Received: from ovs104.us.oracle.com (/10.149.76.204) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Tue, 05 Jul 2016 19:11:24 +0000 From: Boris Ostrovsky To: xen-devel@lists.xen.org Date: Tue, 5 Jul 2016 15:05:12 -0400 Message-Id: <1467745519-9868-14-git-send-email-boris.ostrovsky@oracle.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1467745519-9868-1-git-send-email-boris.ostrovsky@oracle.com> References: <1467745519-9868-1-git-send-email-boris.ostrovsky@oracle.com> X-Source-IP: aserv0021.oracle.com [141.146.126.233] Cc: wei.liu2@citrix.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, julien.grall@arm.com, jbeulich@suse.com, zhaoshenglong@huawei.com, boris.ostrovsky@oracle.com, roger.pau@citrix.com Subject: [Xen-devel] [PATCH v1 13/20] acpi/hvmloader: Include file/paths adjustments X-BeenThere: xen-devel@lists.xen.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" X-Virus-Scanned: ClamAV using ClamSMTP 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 --- 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/. 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=\"\". 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 . */ +#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 #include 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 #include 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 #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 #include 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 #include #include