There was a new release of SeaBIOS recently which includes its own
serial console redirection code. This updates SeaBIOS, enables
CONFIG_SERCON and removes SGABIOS and the option rom-related
code/config.

Working here in a quick test with OpenBSD guest (also gets rid of the
doubled characters in the boot loader seen before with SGABIOS) but I'm
not making heavy use of vmm myself.

After building, to test:

fw_update -p /path/to/packages/amd64/ -D unsigned

To revert to the old one in case of problems, pkg_delete vmm-firmware
and re-run fw_update with no command line.

Index: Makefile
===================================================================
RCS file: /cvs/ports/sysutils/firmware/vmm/Makefile,v
retrieving revision 1.11
diff -u -p -r1.11 Makefile
--- Makefile    27 Nov 2017 22:34:14 -0000      1.11
+++ Makefile    9 Jan 2018 22:38:49 -0000
@@ -2,22 +2,21 @@
 
 ONLY_FOR_ARCHS=        amd64 i386
 
-# XXX errors with with clang
+# XXX errors with clang -
 # ./src/string.c:24:16: error: invalid output constraint '=Qi' in asm
+#
+# ... and ports-gcc -
+# ld: Relocatable linking with relocations from format elf64-x86-64 
(out/ccode16.o) to format elf32-i386 (out/code16.o) is not supported
+
 CC =           /usr/bin/gcc
 
 FW_DRIVER=     vmm
-FW_VER=                1.10.2
-SB_VER=                20100422
-REVISION=      5
+FW_VER=                1.11.0
 DISTNAME=      seabios-${FW_VER}
-DISTFILES=     ${DISTNAME}${EXTRACT_SUFX} \
-       sgabios-20100422{23d474943dcd55d0550a3d20b3d30e9040a4f15b}.tar.gz:0
 
 HOMEPAGE=      https://www.seabios.org/
 
 MASTER_SITES=  https://code.coreboot.org/p/seabios/downloads/get/
-MASTER_SITES0= https://github.com/qemu/sgabios/archive/
 
 # LGPLv3 but distributed via fw_update/firmware.openbsd.org so disable
 # normal packaging.
@@ -42,31 +41,17 @@ MAKE_FLAGS= PYTHON="${MODPY_BIN}" V=1 EX
                LD32BIT_FLAG=-melf_i386_obsd LD="${LD} -nopie -znorelro" 
 
 post-extract:
-       mv ${WRKDIR}/sgabios-* ${WRKDIR}/sgabios
        cp ${FILESDIR}/config ${WRKSRC}/.config
 
 post-build:
-       sed -i 's,^#define BUILD_CL.*,#define BUILD_CL "${SB_VER}",' \
-           ${WRKDIR}/sgabios/sgabios.S
-       cd ${WRKDIR}/sgabios; env ${MAKE_ENV} ${MAKE_PROGRAM} \
-           BUILD_USER='\"_<vmm\"' BUILD_HOST='\"OpenBSD>\"'
-       dd if=/dev/zero of=${WRKDIR}/space bs=1 count=196608
-       cat ${WRKDIR}/sgabios/sgabios.bin ${WRKDIR}/space \
-           ${WRKSRC}/out/bios.bin > ${WRKDIR}/vmm-bios
-       printf 'vmm-bios includes SeaBIOS (LGPLv3) and ' > 
${WRKDIR}/vmm-bios-license
-       printf 'SGABIOS (Apache License 2.0\\n-----\\n' >> 
${WRKDIR}/vmm-bios-license
-       cat ${WRKSRC}/COPYING.LESSER >> ${WRKDIR}/vmm-bios-license
-       printf '-----\\n' >> ${WRKDIR}/vmm-bios-license
-       cat ${WRKDIR}/sgabios/COPYING >> ${WRKDIR}/vmm-bios-license
-       printf '-----\\n' >> ${WRKDIR}/vmm-bios-license
-
-post-build:
        @if ! grep -q "\"${FW_VER}${EXTRAVERSION}\"" \
            ${WRKSRC}/out/autoversion.h; then printf \
            "\\nPort problem: 'cleanbuild' version string not used.\\n\\n"; \
            tail -2 ${WRKSRC}/out/autoversion.h; echo; exit 1; fi
 
 do-install:
-        ${INSTALL_DATA} ${WRKDIR}/vmm-bios{,-license} ${PREFIX}/firmware/
+       ${INSTALL_DATA} ${WRKSRC}/out/bios.bin ${PREFIX}/firmware/vmm-bios
+       ${INSTALL_DATA} ${WRKSRC}/COPYING.LESSER \
+           ${PREFIX}/firmware/vmm-bios-license
 
 .include <bsd.port.mk>
Index: distinfo
===================================================================
RCS file: /cvs/ports/sysutils/firmware/vmm/distinfo,v
retrieving revision 1.2
diff -u -p -r1.2 distinfo
--- distinfo    25 Apr 2017 20:09:35 -0000      1.2
+++ distinfo    9 Jan 2018 22:38:49 -0000
@@ -1,4 +1,2 @@
-SHA256 (firmware/seabios-1.10.2.tar.gz) = 
iccLcPp6sXlpTvuVwsidT1Cjk4EyHL7V2DAsubJelT0=
-SHA256 (firmware/sgabios-20100422.tar.gz) = 
+GidGDnBpBFHhvTWaR61NL95A18Y1Lm93Ijp7+biDg4=
-SIZE (firmware/seabios-1.10.2.tar.gz) = 589283
-SIZE (firmware/sgabios-20100422.tar.gz) = 31191
+SHA256 (firmware/seabios-1.11.0.tar.gz) = 
YitDLruKOwsTuKzNbUoZan6zrxHyQ4FeX3112c65m/c=
+SIZE (firmware/seabios-1.11.0.tar.gz) = 607746
Index: files/config
===================================================================
RCS file: /cvs/ports/sysutils/firmware/vmm/files/config,v
retrieving revision 1.4
diff -u -p -r1.4 config
--- files/config        27 Nov 2017 22:34:14 -0000      1.4
+++ files/config        9 Jan 2018 22:38:49 -0000
@@ -39,6 +39,7 @@ CONFIG_VIRTIO_SCSI=y
 # CONFIG_PS2PORT is not set
 # CONFIG_USB is not set
 CONFIG_SERIAL=y
+CONFIG_SERCON=y
 # CONFIG_LPT is not set
 CONFIG_RTC_TIMER=y
 CONFIG_HARDWARE_IRQ=y
@@ -56,7 +57,7 @@ CONFIG_CDROM_EMU=y
 # CONFIG_PCIBIOS is not set
 CONFIG_APMBIOS=y
 # CONFIG_PNPBIOS is not set
-CONFIG_OPTIONROMS=y
+# CONFIG_OPTIONROMS is not set
 # CONFIG_PMM is not set
 CONFIG_BOOT=y
 CONFIG_KEYBOARD=y
Index: patches/patch-Makefile
===================================================================
RCS file: /cvs/ports/sysutils/firmware/vmm/patches/patch-Makefile,v
retrieving revision 1.1
diff -u -p -r1.1 patch-Makefile
--- patches/patch-Makefile      16 Jul 2017 14:11:21 -0000      1.1
+++ patches/patch-Makefile      9 Jan 2018 22:38:49 -0000
@@ -3,7 +3,7 @@ $OpenBSD: patch-Makefile,v 1.1 2017/07/1
 Index: Makefile
 --- Makefile.orig
 +++ Makefile
-@@ -55,10 +55,18 @@ EXTRAVERSION=
+@@ -56,10 +56,18 @@ EXTRAVERSION=
  
  CPPFLAGS = -P -MD -MT $@
  
Index: patches/patch-src_fw_paravirt_c
===================================================================
RCS file: /cvs/ports/sysutils/firmware/vmm/patches/patch-src_fw_paravirt_c,v
retrieving revision 1.1
diff -u -p -r1.1 patch-src_fw_paravirt_c
--- patches/patch-src_fw_paravirt_c     19 Jul 2017 19:33:51 -0000      1.1
+++ patches/patch-src_fw_paravirt_c     9 Jan 2018 22:38:49 -0000
@@ -6,7 +6,7 @@ qemu config device which VMM doesn't hav
 Index: src/fw/paravirt.c
 --- src/fw/paravirt.c.orig
 +++ src/fw/paravirt.c
-@@ -489,6 +489,18 @@ qemu_cfg_e820(void)
+@@ -500,6 +500,18 @@ qemu_cfg_e820(void)
      dprintf(1, "RamSizeOver4G: 0x%016llx [cmos]\n", RamSizeOver4G);
  }
  
Index: patches/patch-src_fw_paravirt_h
===================================================================
RCS file: /cvs/ports/sysutils/firmware/vmm/patches/patch-src_fw_paravirt_h,v
retrieving revision 1.1
diff -u -p -r1.1 patch-src_fw_paravirt_h
--- patches/patch-src_fw_paravirt_h     19 Jul 2017 19:33:51 -0000      1.1
+++ patches/patch-src_fw_paravirt_h     9 Jan 2018 22:38:49 -0000
@@ -6,7 +6,7 @@ qemu config device which VMM doesn't hav
 Index: src/fw/paravirt.h
 --- src/fw/paravirt.h.orig
 +++ src/fw/paravirt.h
-@@ -59,4 +59,5 @@ int qemu_cfg_write_file(void *src, struct romfile_s *f
+@@ -60,4 +60,5 @@ int qemu_cfg_write_file(void *src, struct romfile_s *f
  int qemu_cfg_write_file_simple(void *src, u16 key, u32 offset, u32 len);
  u16 qemu_get_romfile_key(struct romfile_s *file);
  
Index: patches/patch-src_fw_pciinit_c
===================================================================
RCS file: /cvs/ports/sysutils/firmware/vmm/patches/patch-src_fw_pciinit_c,v
retrieving revision 1.1
diff -u -p -r1.1 patch-src_fw_pciinit_c
--- patches/patch-src_fw_pciinit_c      26 Mar 2017 17:06:29 -0000      1.1
+++ patches/patch-src_fw_pciinit_c      9 Jan 2018 22:38:49 -0000
@@ -3,9 +3,10 @@ $OpenBSD: patch-src_fw_pciinit_c,v 1.1 2
 Since we hijacked the OpenBSD PCI vendor ID, this diff should probably
 not be upstreamed.
 
---- src/fw/pciinit.c.orig      Fri Feb 24 15:01:20 2017
-+++ src/fw/pciinit.c   Sat Mar 25 14:19:56 2017
-@@ -141,6 +141,11 @@ static int mch_pci_slot_get_irq(struct pci_device *pci
+Index: src/fw/pciinit.c
+--- src/fw/pciinit.c.orig
++++ src/fw/pciinit.c
+@@ -142,6 +142,11 @@ static int mch_pci_slot_get_irq(struct pci_device *pci
      return pci_irqs[(pin - 1 + pin_addend) & 3];
  }
  
@@ -17,7 +18,7 @@ not be upstreamed.
  /* PIIX3/PIIX4 PCI to ISA bridge */
  static void piix_isa_bridge_setup(struct pci_device *pci, void *arg)
  {
-@@ -506,11 +511,18 @@ static void mch_mem_addr_setup(struct pci_device *dev,
+@@ -507,11 +512,18 @@ static void mch_mem_addr_setup(struct pci_device *dev,
          pci_io_low_end = acpi_pm_base;
  }
  
Index: patches/patch-src_hw_pci_ids_h
===================================================================
RCS file: /cvs/ports/sysutils/firmware/vmm/patches/patch-src_hw_pci_ids_h,v
retrieving revision 1.1
diff -u -p -r1.1 patch-src_hw_pci_ids_h
--- patches/patch-src_hw_pci_ids_h      26 Mar 2017 17:06:29 -0000      1.1
+++ patches/patch-src_hw_pci_ids_h      9 Jan 2018 22:38:49 -0000
@@ -3,9 +3,10 @@ $OpenBSD: patch-src_hw_pci_ids_h,v 1.1 2
 Since we hijacked the OpenBSD PCI vendor ID, this diff should probably
 not be upstreamed.
 
---- src/hw/pci_ids.h.orig      Fri Feb 24 15:01:20 2017
-+++ src/hw/pci_ids.h   Sat Mar 25 14:13:05 2017
-@@ -146,6 +146,9 @@
+Index: src/hw/pci_ids.h
+--- src/hw/pci_ids.h.orig
++++ src/hw/pci_ids.h
+@@ -147,6 +147,9 @@
  #define PCI_DEVICE_ID_BERKOM_A4T              0xffa4
  #define PCI_DEVICE_ID_BERKOM_SCITEL_QUADRO    0xffa8
  
Index: patches/patch-src_optionroms_c
===================================================================
RCS file: patches/patch-src_optionroms_c
diff -N patches/patch-src_optionroms_c
--- patches/patch-src_optionroms_c      19 Jul 2017 19:33:51 -0000      1.2
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,16 +0,0 @@
-$OpenBSD: patch-src_optionroms_c,v 1.2 2017/07/19 19:33:51 sthen Exp $
-
-Needed for SGABIOS option ROM for VMM. Normally these are setup based on
-the qemu fw_cfg interface (or coreboot CBFS on hardware).
-
---- src/optionroms.c.orig      Fri Mar 31 09:34:40 2017
-+++ src/optionroms.c   Fri Mar 31 09:35:35 2017
-@@ -361,7 +361,7 @@ optionrom_setup(void)
- 
-     // All option roms found and deployed - now build BEV/BCV vectors.
- 
--    u32 pos = post_vga;
-+    u32 pos = BUILD_BIOS_ADDR - BUILD_ROM_START;
-     while (pos < rom_get_last()) {
-         struct rom_header *rom = (void*)pos;
-         if (! is_valid_rom(rom)) {

Reply via email to