From db6310c3e5948a327a1c6f5706f727fd6cd67c70 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Mon, 26 Jul 2021 15:42:00 +0100 Subject: [PATCH] [efi] Use zero for PCI vendor/device IDs when no applicable ID exists When building an EFI ROM image for which no PCI vendor/device ID is applicable (e.g. bin-x86_64-efi/ipxe.efirom), the build process will currently construct a command such as ./util/efirom -v -d -c bin-x86_64-efi/ipxe.efidrv \ bin-x86_64-efi/ipxe.efirom which gets interpreted as a vendor ID of "-0xd" (i.e. 0xfff3, after truncation to 16 bits). Fix by using an explicit zero ID when no applicable ID exists, as is already done when constructing BIOS ROM images. Reported-by: Konstantin Aladyshev Signed-off-by: Michael Brown --- src/Makefile.efi | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Makefile.efi b/src/Makefile.efi index 11e29dd58..bd479b3da 100644 --- a/src/Makefile.efi +++ b/src/Makefile.efi @@ -43,7 +43,8 @@ $(BIN)/%.drv.efi : $(BIN)/%.efidrv $(BIN)/%.efirom : $(BIN)/%.efidrv $(EFIROM) $(QM)$(ECHO) " [FINISH] $@" - $(Q)$(EFIROM) -v $(TGT_PCI_VENDOR) -d $(TGT_PCI_DEVICE) -c $< $@ + $(Q)$(EFIROM) -v $(firstword $(TGT_PCI_VENDOR) 0) \ + -d $(firstword $(TGT_PCI_DEVICE) 0) -c $< $@ $(BIN)/efidrv.cab : $(BIN)/alldrv.efis # $(ALL_drv.efi) is not yet defined $(QM)$(ECHO) " [CAB] $@"