|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v5 03/21] acpi: Prevent GPL-only code from seeping into non-GPL binaries
>>> On 22.09.16 at 21:13, <boris.ostrovsky@xxxxxxxxxx> wrote:
> --- a/tools/firmware/hvmloader/Makefile
> +++ b/tools/firmware/hvmloader/Makefile
> @@ -65,6 +65,10 @@ ROMBIOS_ROM := $(ROMBIOS_DIR)/BIOS-bochs-latest
> ROMS += $(ROMBIOS_ROM) $(STDVGA_ROM) $(CIRRUSVGA_ROM) $(ETHERBOOT_ROMS)
> endif
>
> +# Certain parts of ACPI builder are GPL-only
> +GPL = y
> +export GPL
This could (and hence imo should) be a single line.
Also I think I did say so before - please use := for simple assignments
like this one.
> --- a/tools/firmware/hvmloader/acpi/Makefile
> +++ b/tools/firmware/hvmloader/acpi/Makefile
> @@ -17,7 +17,8 @@
> XEN_ROOT = $(CURDIR)/../../../..
> include $(XEN_ROOT)/tools/firmware/Rules.mk
>
> -C_SRC = build.c dsdt_anycpu.c dsdt_15cpu.c static_tables.c
> dsdt_anycpu_qemu_xen.c
> +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)
I don't think the use of tabs here is really helpful. In no case should
a blank be followed by a tab.
> @@ -36,18 +37,25 @@ ssdt_s3.h ssdt_s4.h ssdt_pm.h ssdt_tpm.h: %.h: %.asl iasl
> mk_dsdt: mk_dsdt.c
> $(HOSTCC) $(HOSTCFLAGS) $(CFLAGS_xeninclude) -o $@ mk_dsdt.c
>
> -dsdt_anycpu_qemu_xen.asl: dsdt.asl dsdt_acpi_info.asl mk_dsdt
> +ifeq ($(GPL),y)
> +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)
I don't think the leading ./ is necessary here, ...
> cat dsdt_acpi_info.asl >> $@.$(TMP_SUFFIX)
> ./mk_dsdt --debug=$(debug) --dm-version qemu-xen >> $@.$(TMP_SUFFIX)
... other than e.g. here.
Also I think shell scripts get better invoked via $(SHELL), to avoid
running into problems when on some file system they end up without
execute permission.
> --- /dev/null
> +++ b/tools/firmware/hvmloader/acpi/gpl/mk_dsdt_gpl.sh
> @@ -0,0 +1,110 @@
> +# This program is free software; you can redistribute it and/or modify it
> +# under the terms and conditions of the GNU General Public License,
> +# version 2, as published by the Free Software Foundation.
> +#
> +# This program is distributed in the hope it will be useful, but WITHOUT
> +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
> +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
> +# more details.
> +#
> +# You should have received a copy of the GNU General Public License along
> with
> +# this program; If not, see <http://www.gnu.org/licenses/>.
> +#
> +
> +printf "\n /* Beginning of GPL-only code */\n\n"
> +
> +printf " /* _S3 and _S4 are in separate SSDTs */\n"
> +printf " Name (\_S5, Package (0x04) {\n"
> +printf " 0x00, /* PM1a_CNT.SLP_TYP */\n"
> +printf " 0x00, /* PM1b_CNT.SLP_TYP */\n"
> +printf " 0x00, /* reserved */\n"
> +printf " 0x00 /* reserved */\n"
> +printf " })\n"
> +
> +printf " Name(PICD, 0)\n"
> +printf " Method(_PIC, 1) {\n"
> +printf " Store(Arg0, PICD)\n"
> +printf " }\n"
Wouldn't this be better readable with "echo", avoiding all the \n
instances? Actually this seems to even apply to most if not
everything further down, as so far I didn't spot a case where
you actually pass anything other than just a format string.
> +# PCI-ISA link definitions
> +
> +# BUFA: List of ISA IRQs available for linking to PCI INTx.
> +printf " Scope ( \_SB.PCI0 ) {\n"
> +printf " Name ( BUFA, ResourceTemplate() { IRQ(Level, ActiveLow,
> Shared) { 5, 10, 11 } } )\n"
> +# BUFB: IRQ descriptor for returning from link-device _CRS methods.
> +printf " Name ( BUFB, Buffer() { 0x23, 0x00, 0x00, 0x18, 0x79, 0 }
> )\n"
> +printf " CreateWordField ( BUFB, 0x01, IRQV )\n"
> +
> +links=(A B C D)
Is this portable?
> +for i in `seq 0 3`;
> +do
I think you want to use only one of ; and newline as separator here.
And is there a reason to prefer backquotes over the imo better
legible $()?
> + link=${links[$i]}
> + printf " Device ( LNK$link ) {\n"
> + printf " Name ( _HID, EISAID(\"PNP0C0F\") )\n" #PCI
> interrupt link
> + printf " Name ( _UID, $((i+1)))\n"
> + printf " Method ( _STA, 0) {\n"
> + printf " If ( And(PIR$link, 0x80) ) {\n"
> + printf " Return ( 0x09 )\n"
> + printf " }\n"
> + printf " Else {\n"
Since you re-write all of this anyway, please put the Else-es on the
same lines as the closing braces.
> + printf " Return ( 0x0B )\n"
> + printf " }\n"
> + printf " }\n"
> + printf " Method ( _PRS ) {\n"
> + printf " Return ( BUFA )\n"
> + printf " }\n"
> + printf " Method ( _DIS ) {\n"
> + printf " Or ( PIR$link, 0x80, PIR$link )\n"
> + printf " }\n"
> + printf " Method ( _CRS ) {\n"
> + printf " And ( PIR$link, 0x0f, Local0 )\n"
> + printf " ShiftLeft ( 0x1, Local0, IRQV )\n"
> + printf " Return ( BUFB )\n"
> + printf " }\n"
> + printf " Method ( _SRS, 1 ) {\n"
> + printf " CreateWordField ( ARG0, 0x01, IRQ1 )\n"
> + printf " FindSetRightBit ( IRQ1, Local0 )\n"
> + printf " Decrement ( Local0 )\n"
> + printf " Store ( Local0, PIR$link )\n"
> + printf " }\n"
> + printf " }\n"
> +done
> +
> +# PCI interrupt routing definitions
> +# _PRT: Method to return routing table.
> +printf " Method ( _PRT, 0 ) {\n"
> +printf " If ( PICD ) {\n"
> +printf " Return ( PRTA )\n"
> +printf " }\n"
> +printf " Return ( PRTP )\n"
> +printf " }\n"
> +
> +# PRTP: PIC routing table (via ISA links).
> +printf " Name(PRTP, Package() {\n"
> +for dev in `seq 1 31`;
> +do
> + for intx in `seq 0 3`; # INTA-D
> + do
> + link_idx=$(((dev+intx)&3))
Just like in C, please have blanks around binary operators.
> + printf " Package(){0x%04xffff, %u, \\_SB.PCI0.LNK%c, 0},\n"
> $dev $intx ${links[$link_idx]}
I think you should really use \\\\ here, to avoid some shell having an
extension giving meaning to \_. And please split this long line.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |