From patchwork Thu Sep 22 19:13:36 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Boris Ostrovsky X-Patchwork-Id: 9346747 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 16F70607D0 for ; Thu, 22 Sep 2016 19:21:49 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 00A152AC90 for ; Thu, 22 Sep 2016 19:21:49 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E93822ACA9; Thu, 22 Sep 2016 19:21:48 +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 630192AC90 for ; Thu, 22 Sep 2016 19:21:48 +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 1bn9Wn-0001FJ-PM; Thu, 22 Sep 2016 19:19:25 +0000 Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bn9Wm-0001Ac-76 for xen-devel@lists.xen.org; Thu, 22 Sep 2016 19:19:24 +0000 Received: from [85.158.143.35] by server-9.bemta-6.messagelabs.com id 95/DE-28857-BBE24E75; Thu, 22 Sep 2016 19:19:23 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrDLMWRWlGSWpSXmKPExsXSO6nOVXe33pN wg2efxSyWfFzM4sDocXT3b6YAxijWzLyk/IoE1oz7q9ezFjzRr+j9+JOxgfGpZhcjF4eQwGQm iX1bFrBDOL8ZJWadPsUC4WxklLh4cxobhNPDKHFk6x+mLkZODjYBI4mzR6czgtgiAtIS1z5fB rOZBZ4wSuy8kQ5iCwt4SrzffhCsnkVAVeL79ovMIDavgJfEqm1fWUFsCQEFiSkP34PFOYHip7 rmsIHYQiC9q9axQdQYS7S/vcg2gZFvASPDKkb14tSistQiXQu9pKLM9IyS3MTMHF1DAzO93NT i4sT01JzEpGK95PzcTYzAUGEAgh2Msy/7H2KU5GBSEuV9r/0kXIgvKT+lMiOxOCO+qDQntfgQ owwHh5IE7zpdoJxgUWp6akVaZg4waGHSEhw8SiK87SBp3uKCxNzizHSI1ClGRSlx3gkgCQGQR EZpHlwbLFIuMcpKCfMyAh0ixFOQWpSbWYIq/4pRnINRSZi3C2QKT2ZeCdz0V0CLmYAWb/n5AG RxSSJCSqqBUbN1puCBqmylrGTvqOJwL8E7AX2bnktIzfYuVW+tu7FOtKP/Rw+74bz6zFPum34 eqQ39obiz4izzyoMvXk3dZfTh4uazlbslb/nlaZh+NrlQ+XB216/5BwK/tH5f6L70J7fx1b3P JvH4qh1Lm7F28arIKU++8Ry4t+3XpmcPvcRPb/VbUbjq3BIlluKMREMt5qLiRAAkb2vpjwIAA A== X-Env-Sender: boris.ostrovsky@oracle.com X-Msg-Ref: server-12.tower-21.messagelabs.com!1474571961!34653322!1 X-Originating-IP: [141.146.126.69] X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: VHJ1c3RlZCBJUDogMTQxLjE0Ni4xMjYuNjkgPT4gMjc3MjE4\n X-StarScan-Received: X-StarScan-Version: 8.84; banners=-,-,- X-VirusChecked: Checked Received: (qmail 49055 invoked from network); 22 Sep 2016 19:19:23 -0000 Received: from aserp1040.oracle.com (HELO aserp1040.oracle.com) (141.146.126.69) by server-12.tower-21.messagelabs.com with DHE-RSA-AES256-GCM-SHA384 encrypted SMTP; 22 Sep 2016 19:19:23 -0000 Received: from aserv0022.oracle.com (aserv0022.oracle.com [141.146.126.234]) by aserp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id u8MJJ9Qc021410 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 22 Sep 2016 19:19:10 GMT Received: from userv0122.oracle.com (userv0122.oracle.com [156.151.31.75]) by aserv0022.oracle.com (8.14.4/8.14.4) with ESMTP id u8MJJ9QO018961 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 22 Sep 2016 19:19:09 GMT Received: from abhmp0007.oracle.com (abhmp0007.oracle.com [141.146.116.13]) by userv0122.oracle.com (8.14.4/8.14.4) with ESMTP id u8MJJ8G5000782; Thu, 22 Sep 2016 19:19:08 GMT Received: from ovs104.us.oracle.com (/10.149.76.204) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Thu, 22 Sep 2016 12:19:08 -0700 From: Boris Ostrovsky To: xen-devel@lists.xen.org Date: Thu, 22 Sep 2016 15:13:36 -0400 Message-Id: <1474571626-6694-12-git-send-email-boris.ostrovsky@oracle.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1474571626-6694-1-git-send-email-boris.ostrovsky@oracle.com> References: <1474571626-6694-1-git-send-email-boris.ostrovsky@oracle.com> X-Source-IP: aserv0022.oracle.com [141.146.126.234] 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 , roger.pau@citrix.com Subject: [Xen-devel] [PATCH v5 11/21] acpi/hvmloader: Link ACPI object files directly 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 ACPI sources will be available to various component which will build them according to their own rules. ACPI's Makefile will only generate necessary source files. Signed-off-by: Boris Ostrovsky Acked-by: Jan Beulich --- Changes in v5: * .gitignore lists all dsdt* / ssdt* files as not tracked. * Clarified use of TMP_SUFFIX afor iasl bug workaround .gitignore | 7 +++-- tools/firmware/hvmloader/Makefile | 11 +++++++- tools/firmware/hvmloader/acpi/Makefile | 47 +++++++++++++++++++--------------- 3 files changed, 39 insertions(+), 26 deletions(-) diff --git a/.gitignore b/.gitignore index 6dee857..8e30a5d 100644 --- a/.gitignore +++ b/.gitignore @@ -127,13 +127,12 @@ tools/firmware/*bios/*bios*.txt tools/firmware/etherboot/gpxe/* tools/firmware/extboot/extboot.img tools/firmware/extboot/signrom -tools/firmware/hvmloader/acpi/mk_dsdt -tools/firmware/hvmloader/acpi/dsdt*.c -tools/firmware/hvmloader/acpi/dsdt_*cpu*.asl -tools/firmware/hvmloader/acpi/ssdt_*.h +tools/firmware/hvmloader/dsdt* tools/firmware/hvmloader/hvmloader +tools/firmware/hvmloader/mk_dsdt tools/firmware/hvmloader/roms.h tools/firmware/hvmloader/roms.inc +tools/firmware/hvmloader/ssdt* tools/firmware/rombios/BIOS-bochs-[^/]* tools/firmware/rombios/_rombios[^/]*_.c tools/firmware/rombios/rombios[^/]*.s diff --git a/tools/firmware/hvmloader/Makefile b/tools/firmware/hvmloader/Makefile index 23b0a58..2565832 100644 --- a/tools/firmware/hvmloader/Makefile +++ b/tools/firmware/hvmloader/Makefile @@ -20,6 +20,7 @@ XEN_ROOT = $(CURDIR)/../../.. include $(XEN_ROOT)/tools/firmware/Rules.mk +export ACPI_BUILD_DIR=$(CURDIR) SUBDIRS := acpi # The HVM loader is started in 32-bit mode at the address below: @@ -76,7 +77,15 @@ all: subdirs-all rombios.o: roms.inc smbios.o: CFLAGS += -D__SMBIOS_DATE__="\"$(SMBIOS_REL_DATE)\"" -hvmloader: $(OBJS) acpi/acpi.a +ACPI_PATH = acpi +ACPI_FILES = dsdt_anycpu.c dsdt_15cpu.c dsdt_anycpu_qemu_xen.c +ACPI_OBJS = $(patsubst %.c,%.o,$(ACPI_FILES)) build.o static_tables.o +$(ACPI_OBJS): CFLAGS += -I$(ACPI_PATH) -I. +vpath build.c $(ACPI_PATH) +vpath static_tables.c $(ACPI_PATH) +OBJS += $(ACPI_OBJS) + +hvmloader: $(OBJS) $(LD) $(LDFLAGS_DIRECT) -N -Ttext $(LOADADDR) -o hvmloader.tmp $^ $(OBJCOPY) hvmloader.tmp hvmloader rm -f hvmloader.tmp diff --git a/tools/firmware/hvmloader/acpi/Makefile b/tools/firmware/hvmloader/acpi/Makefile index b14b3ea..3550a84 100644 --- a/tools/firmware/hvmloader/acpi/Makefile +++ b/tools/firmware/hvmloader/acpi/Makefile @@ -15,52 +15,57 @@ XEN_ROOT = $(CURDIR)/../../../.. include $(XEN_ROOT)/tools/firmware/Rules.mk -C_SRC-$(GPL) = build.c dsdt_anycpu.c dsdt_15cpu.c dsdt_anycpu_qemu_xen.c -C_SRC = build.c static_tables.c $(C_SRC-y) -OBJS = $(patsubst %.c,%.o,$(C_SRC)) +MK_DSDT = $(ACPI_BUILD_DIR)/mk_dsdt -CFLAGS += $(CFLAGS_xeninclude) +C_SRC-$(GPL) = dsdt_anycpu.c dsdt_15cpu.c dsdt_anycpu_qemu_xen.c +C_SRC = $(addprefix $(ACPI_BUILD_DIR)/, $(C_SRC-y)) +H_SRC = $(addprefix $(ACPI_BUILD_DIR)/, ssdt_s3.h ssdt_s4.h ssdt_pm.h ssdt_tpm.h) # Suffix for temporary files. +# +# We will also use this suffix to workaround a bug in older iasl +# versions where the tool will ignore everything after last '.' in the +# path ('-p' argument). By adding "." we force iasl to use +# complete $(ACPI_BUILD_DIR) as path, even if it has '.' symbols. TMP_SUFFIX = tmp vpath iasl $(PATH) -all: acpi.a +all: $(C_SRC) $(H_SRC) -ssdt_s3.h ssdt_s4.h ssdt_pm.h ssdt_tpm.h: %.h: %.asl iasl - iasl -vs -p $* -tc $< - sed -e 's/AmlCode/$*/g' $*.hex >$@ - rm -f $*.hex $*.aml +$(H_SRC): $(ACPI_BUILD_DIR)/%.h: %.asl iasl + iasl -vs -p $(ACPI_BUILD_DIR)/$*.$(TMP_SUFFIX) -tc $< + sed -e 's/AmlCode/$*/g' $(ACPI_BUILD_DIR)/$*.hex >$@ + rm -f $(addprefix $(ACPI_BUILD_DIR)/, $*.aml $*.hex) -mk_dsdt: mk_dsdt.c +$(MK_DSDT): mk_dsdt.c $(HOSTCC) $(HOSTCFLAGS) $(CFLAGS_xeninclude) -o $@ mk_dsdt.c ifeq ($(GPL),y) -dsdt_anycpu_qemu_xen.asl: dsdt.asl dsdt_acpi_info.asl gpl/mk_dsdt_gpl.sh mk_dsdt +$(ACPI_BUILD_DIR)/dsdt_anycpu_qemu_xen.asl: dsdt.asl dsdt_acpi_info.asl gpl/mk_dsdt_gpl.sh $(MK_DSDT) awk 'NR > 1 {print s} {s=$$0}' $< > $@.$(TMP_SUFFIX) # Strip license comment sed -i '1,/\*\//{/\/\*/,/\*\//d}' $@.$(TMP_SUFFIX) ./gpl/mk_dsdt_gpl.sh >> $@.$(TMP_SUFFIX) cat dsdt_acpi_info.asl >> $@.$(TMP_SUFFIX) - ./mk_dsdt --debug=$(debug) --dm-version qemu-xen >> $@.$(TMP_SUFFIX) + $(MK_DSDT) --debug=$(debug) --dm-version qemu-xen >> $@.$(TMP_SUFFIX) mv -f $@.$(TMP_SUFFIX) $@ # NB. awk invocation is a portable alternative to 'head -n -1' -dsdt_%cpu.asl: dsdt.asl dsdt_acpi_info.asl gpl/mk_dsdt_gpl.sh mk_dsdt +$(ACPI_BUILD_DIR)/dsdt_%cpu.asl: dsdt.asl dsdt_acpi_info.asl gpl/mk_dsdt_gpl.sh $(MK_DSDT) awk 'NR > 1 {print s} {s=$$0}' $< > $@.$(TMP_SUFFIX) sed -i '1,/\*\//{/\/\*/,/\*\//d}' $@.$(TMP_SUFFIX) ./gpl/mk_dsdt_gpl.sh >> $@.$(TMP_SUFFIX) cat dsdt_acpi_info.asl >> $@.$(TMP_SUFFIX) - ./mk_dsdt --debug=$(debug) --maxcpu $* >> $@.$(TMP_SUFFIX) + $(MK_DSDT) --debug=$(debug) --maxcpu $* >> $@.$(TMP_SUFFIX) mv -f $@.$(TMP_SUFFIX) $@ endif -$(filter dsdt_%.c,$(C_SRC)): %.c: iasl %.asl - iasl -vs -p $* -tc $*.asl - sed -e 's/AmlCode/$*/g' $*.hex >$@.$(TMP_SUFFIX) - echo "int $*_len=sizeof($*);" >>$@.$(TMP_SUFFIX) +$(C_SRC): $(ACPI_BUILD_DIR)/%.c: iasl $(ACPI_BUILD_DIR)/%.asl + iasl -vs -p $(ACPI_BUILD_DIR)/$*.$(TMP_SUFFIX) -tc $(ACPI_BUILD_DIR)/$*.asl + sed -e 's/AmlCode/$*/g' $(ACPI_BUILD_DIR)/$*.hex > $@.$(TMP_SUFFIX) + echo "int $*_len=sizeof($*);" >> $@.$(TMP_SUFFIX) mv -f $@.$(TMP_SUFFIX) $@ - rm -f $*.aml $*.hex + rm -f $(addprefix $(ACPI_BUILD_DIR)/, $*.aml $*.hex) iasl: @echo @@ -76,8 +81,8 @@ acpi.a: $(OBJS) $(AR) rc $@ $(OBJS) clean: - rm -rf *.a *.o $(IASL_VER) $(IASL_VER).tar.gz $(DEPS) - rm -rf ssdt_*.h dsdt*.c *~ *.aml *.hex mk_dsdt dsdt_*cpu*.asl *.$(TMP_SUFFIX) + rm -f $(C_SRC) $(H_SRC) $(MK_DSDT) $(C_SRC:=.$(TMP_SUFFIX)) + rm -f $(patsubst %.c,%.hex,$(C_SRC)) $(patsubst %.c,%.aml,$(C_SRC)) $(patsubst %.c,%.asl,$(C_SRC)) distclean: clean