>From 15149f5d6ac15d7e7da650259dfcfaf4097b03ae Mon Sep 17 00:00:00 2001 From: Boris Ostrovsky Date: Thu, 15 Sep 2016 11:15:31 -0400 Subject: [PATCH] libacpi: Prevent GPL-only code from seeping into non-GPL binaries Some code (specifically, introduced by commit 801d469ad ("[HVM] ACPI support patch 3 of 4: ACPI _PRT table.")) has only been licensed by GPLv2.1 We want to prevent this code from showing up in non-GPL binaries. Signed-off-by: Boris Ostrovsky --- tools/firmware/hvmloader/Makefile | 4 ++-- tools/libacpi/Makefile | 9 ++++++--- tools/libacpi/mk_dsdt.c | 10 ++++++++++ 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/tools/firmware/hvmloader/Makefile b/tools/firmware/hvmloader/Makefile index 9fa9bcc..dc21cdf 100644 --- a/tools/firmware/hvmloader/Makefile +++ b/tools/firmware/hvmloader/Makefile @@ -69,7 +69,7 @@ all: acpi subdirs-all .PHONY: acpi acpi: - $(MAKE) -C $(ACPI_PATH) ACPI_BUILD_DIR=$(CURDIR) + $(MAKE) -C $(ACPI_PATH) ACPI_BUILD_DIR=$(CURDIR) GPL=true rombios.o: roms.inc smbios.o: CFLAGS += -D__SMBIOS_DATE__="\"$(SMBIOS_REL_DATE)\"" @@ -119,7 +119,7 @@ endif clean: subdirs-clean rm -f roms.inc roms.inc.new acpi.h rm -f hvmloader hvmloader.tmp *.o $(DEPS) - $(MAKE) -C $(ACPI_PATH) ACPI_BUILD_DIR=$(CURDIR) clean + $(MAKE) -C $(ACPI_PATH) ACPI_BUILD_DIR=$(CURDIR) GPL=true clean .PHONY: distclean distclean: clean diff --git a/tools/libacpi/Makefile b/tools/libacpi/Makefile index 2d8a954..2fe14d4 100644 --- a/tools/libacpi/Makefile +++ b/tools/libacpi/Makefile @@ -18,7 +18,10 @@ include $(XEN_ROOT)/tools/firmware/Rules.mk MK_DSDT = $(ACPI_BUILD_DIR)/mk_dsdt # Sources to be generated -C_SRC = $(addprefix $(ACPI_BUILD_DIR)/, dsdt_anycpu.c dsdt_15cpu.c dsdt_anycpu_qemu_xen.c dsdt_pvh.c) +C_SRC = $(ACPI_BUILD_DIR)/dsdt_pvh.c +ifeq ($(GPL),true) +C_SRC += $(addprefix $(ACPI_BUILD_DIR)/, dsdt_anycpu.c dsdt_15cpu.c dsdt_anycpu_qemu_xen.c) +endif H_SRC = $(addprefix $(ACPI_BUILD_DIR)/, ssdt_s3.h ssdt_s4.h ssdt_pm.h ssdt_tpm.h) ifeq ($(subst all,,$(MAKECMDGOALS)),) @@ -39,14 +42,14 @@ $(MK_DSDT): mk_dsdt.c $(ACPI_BUILD_DIR)/dsdt_anycpu_qemu_xen.asl: dsdt.asl dsdt_acpi_info.asl $(MK_DSDT) awk 'NR > 1 {print s} {s=$$0}' $< > $(TDIR)/$(@F) cat dsdt_acpi_info.asl >> $(TDIR)/$(@F) - $(MK_DSDT) --debug=$(debug) --dm-version qemu-xen >> $(TDIR)/$(@F) + $(MK_DSDT) --debug=$(debug) --dm-version qemu-xen --gpl >> $(TDIR)/$(@F) cp $(TDIR)/$(@F) $@ # NB. awk invocation is a portable alternative to 'head -n -1' $(ACPI_BUILD_DIR)/dsdt_%cpu.asl: dsdt.asl dsdt_acpi_info.asl $(MK_DSDT) awk 'NR > 1 {print s} {s=$$0}' $< > $(TDIR)/$(@F) cat dsdt_acpi_info.asl >> $(TDIR)/$(@F) - $(MK_DSDT) --debug=$(debug) --maxcpu $* >> $(TDIR)/$(@F) + $(MK_DSDT) --debug=$(debug) --maxcpu $* --gpl >> $(TDIR)/$(@F) cp $(TDIR)/$(@F) $@ $(ACPI_BUILD_DIR)/dsdt_pvh.asl: dsdt_acpi_info.asl $(MK_DSDT) diff --git a/tools/libacpi/mk_dsdt.c b/tools/libacpi/mk_dsdt.c index 30477fd..c79e95f 100644 --- a/tools/libacpi/mk_dsdt.c +++ b/tools/libacpi/mk_dsdt.c @@ -99,6 +99,7 @@ static struct option options[] = { { "maxcpu", 1, 0, 'c' }, { "dm-version", 1, 0, 'q' }, { "debug", 1, 0, 'd' }, + { "gpl", 0,0,'g' }, { 0, 0, 0, 0 } }; @@ -106,6 +107,7 @@ int main(int argc, char **argv) { unsigned int slot, dev, intx, link, cpu, max_cpus = HVM_MAX_VCPUS; dm_version dm_version = QEMU_XEN_TRADITIONAL; + bool gpl = false; for ( ; ; ) { @@ -147,6 +149,9 @@ int main(int argc, char **argv) if (*optarg == 'y') debug = true; break; + case 'g': + gpl = true; + break; default: return -1; } @@ -293,6 +298,9 @@ int main(int argc, char **argv) } } pop_block(); + if (!gpl) + goto cont; // Should be "if (gpl) {...}", 'goto' is for pre-review, small diff + /*** PCI-ISA link definitions ***/ /* BUFA: List of ISA IRQs available for linking to PCI INTx. */ stmt("Name", "BUFA, ResourceTemplate() { " @@ -359,6 +367,8 @@ int main(int argc, char **argv) dev, intx, ((dev*4+dev/8+intx)&31)+16); printf("})\n"); +cont: + /* * Each PCI hotplug slot needs at least two methods to handle * the ACPI event: -- 1.8.3.1