[oi-dev] Fwd: [bugs] [illumos gate - Feature #15916] bhyve upstream sync 2023 September

Stephan Althaus Stephan.Althaus at Duedinghausen.eu
Sat Dec 23 15:06:29 UTC 2023


On 12/23/23 13:19, Till Wegmueller wrote:
> Hi, Stephan
>
> The bHyve components are directly copied into illumos-gate and the 
> repository you mentioned is just the UEFI Firmware/Bootloader where we 
> seem to be up to date. All bHyve related parts get compiled with 
> illumos-gate
>
> -Till
>
> On 23.12.2023 09:59, Stephan Althaus wrote:
>> Hello!
>>
>>
>> The OI bhyve firmware package seems to be outdated.
>>
>> The related github has no more recent version, so it seems github has 
>> to be updated beforehand... (?)
>>
>>
>> $ pkg info system/bhyve/firmware
>>               Name: system/bhyve/firmware
>>            Summary: UEFI-EDK2(+CSM) firmware for bhyve
>>           Category: System/Core
>>              State: Installed
>>          Publisher: openindiana.org
>>            Version: 20210201
>>             Branch: 2022.0.0.2
>>     Packaging Date: March 25, 2022 at 06:39:30 AM
>> Last Install Time: December 23, 2023 at 08:13:52 AM
>>               Size: 7.88 MB
>>               FMRI: 
>> pkg://openindiana.org/system/bhyve/firmware@20210201-2022.0.0.2:20220325T063930Z
>>        Project URL: https://github.com/illumos/uefi-edk2
>>         Source URL: 
>> https://github.com/illumos/uefi-edk2/releases/download/il-udk2014.sp1-3/uefi-edk2-il-udk2014.sp1-3.tar.xz
>>
>>
>> GitHub:
>>
>> https://github.com/illumos/uefi-edk2/releases
>>
>>
>> Regards,
>>
>> Stephan
>>
>>
>>
>> -------- Forwarded Message --------
>> Subject:     [bugs] [illumos gate - Feature #15916] bhyve upstream 
>> sync 2023 September
>> Date:     Fri, 22 Dec 2023 22:10:32 +0000
>> From:     illumos project via illumos-bugs <bugs at lists.illumos.org>
>> Reply-To:     illumos-bugs <bugs at lists.illumos.org>
>>
>>
>>
>> Issue #15916 has been updated by Andy Fiddaman.
>>
>>
>> The changes in the associated Gerrit review have been integrated in 
>> OmniOS bloody for a few weeks, and tested with a wide range of 
>> different VMs -- including illumos, FreeBSD, Windows and Linux -- in 
>> a range of configurations including pass-through of USB hubs, NICs 
>> and GPUs (many thanks due to Jorge Schrauen and Marco van Wieringen 
>> for helping out here).
>>
>> Although this change includes new code to load ACPI tables into the 
>> guest via a fwcfg interface, this is not enabled by default. Enabling 
>> this appears to work but dumping ACPI tables from a guest running the 
>> old and new bits produces the same output in both cases.
>>
>>
>> ----------------------------------------
>> Feature #15916: bhyve upstream sync 2023 September
>> https://www.illumos.org/issues/15916#change-43755
>>
>> * Author: Andy Fiddaman
>> * Status: In Progress
>> * Priority: Low
>> * Assignee: Andy Fiddaman
>> * Category: bhyve
>> * Difficulty: Medium
>> * Gerrit CR: 3044
>> ----------------------------------------
>> This is a set of merges from bhyve in FreeBSD, summarised in the 
>> following table.
>>
>> There is very little change to the kernel components, we already had 
>> several of the fixes there.
>> The biggest set of changes are around:
>> - ACPI table generation and loading them into the guest via the fwctl 
>> interfaces;
>> - A basic emulated E820 device;
>> - TPM pass-through.
>>
>> Each line is prefixed by a set of flags showing which action was 
>> taken. The key for these is:
>>
>> <pre>
>> S - skipped
>> U - updated to match upstream
>> ~ - partially taken
>> * - merged
>> F - only freebsd-specific code changed
>> A - already had
>> </pre>
>>
>> <pre>
>> * 1 bhyve: Avoid triggering false -Wfree-nonheap-object warnings.
>> * 2 bhyve: Remove vmctx argument from PCI device model methods.
>> *F 3 bhyve: Fix a global buffer overread in the PCI hda device model.
>> *F 4 bhyve: Fix a buffer overread in the PCI hda device model.
>> S 5 vmm: take exclusive mem_segs_lock when (un)assigning ppt dev
>> S 6 vmm: take exclusive mem_segs_lock in vm_cleanup()
>> S 7 vmm: fix use after free in ppt_detach()
>> S 8 vm: centralize VM_BATCHQUEUE_SIZE definition
>> * 9 53545967642d850eee4f2dd9fa27cae52ae981b9 vtd: Increase 
>> DRHD_MAX_UNITS
>> S 10 vmm: avoid spurious rendezvous
>> S 11 vmm: purge EOL release compatibility
>> S 12 vmm: Collapse identical case statements in 
>> vlapic_icrlo_write_handler()
>> S 13 vmm: Remove an unneeded initialization of "retu"
>> S 14 vmm: Fix AP startup compatibility for old bhyve executables
>> * 15 bhyve: add helper struct for acpi device handling
>> * 16 bhyve: add helper func to add acpi resources
>> * 17 bhyve: add helper func to write a dsdt entry
>> * 18 bhyve: maintain a list of acpi devices
>> * 19 bhyve: add basic qemu fwcfg implementation
>> * 20 bhyve: add emulation for the qemu fwcfg selector port
>> * 21 bhyve: add emulation for qemu's fwcfg data port
>> * 22 bhyve: add helper to add fwcfg items
>> * 23 bhyve: add common fwcfg items
>> S 24 vmm: fix restore of TSC offset
>> S 25 bhyve: fix restore of kernel structs
>> S 26 bhyve: fix resume for vms with guest_ncpus > 1
>> * 27 bhyve: remove redundant variable
>> * 28 bhyve: Remove useless return at the end of void function
>> * 29 bhyvectl: Address compiler warnings and bump WARNS
>> S 30 bhyvectl: do not return garbage from send_message
>> S 31 bhyvectl: correct socket_fd closing in send_message
>> S 32 bhyvectl: don't leak nvlist in send_message
>> S 33 libvmm: add missing ioctl's to vm_ioctl_cmds
>> S 34 bhyve: don't flush readonly device at blockif_pause
>> S 35 bhyve: add cap limits for ipc socket
>> S 36 bhyve: exit with EX_OSERR if init checkpoint or restore time failed
>> S 37 bhyve: init checkput before caph_enter
>> S 38 bhyvectl: don't permit using --suspend and --checkpoint at same 
>> time
>> S 39 bhyve: Move libcasper dependecy to lib9p
>> * 40 bhyve: Remove trailing semicolon
>> * 41 bhyve: add helper for adding fwcfg files
>> * 42 bhyve: add cmdline option to enable qemu's fwcfg
>> SA 43 vmm: fix missing ipi statistic
>> S 44 bhyve: Sleep briefly in the VMEXIT_DEBUG handler
>> * 45 bhyve: Accept a variable-length string name for 
>> qemu_fwcfg_add_file.
>> * 46 bhyve: Don't return -ENOMEM from qemu_fwcfg_add_file.
>> * 47 libvmmapi: Add a struct vcpu and use it in most APIs.
>> S 48 bhyve: Remove vmctx member from struct vm_snapshot_meta.
>> * 49 bhyve: add helper to read PCI IDs from bhyve config
>> * 50 bhyve: make use of helper to read PCI IDs from bhyve config
>> * 51 bhyve: add config option to modify LPC IDs
>> * 52 bhyve: fix spelling mistake of pcireg option
>> * 53 bhyve: remove unnecessary const qualifier in acpi_device.h
>> * 54 bhyve: return EEXIST when adding a fwcfg item twice
>> *F 55 bhyve: scan PCI device functions to find host LPC
>> * 56 bhyve: add QEMU_FWCFG_INDEX_NB_CPUS item
>> * 57 bhyve: add missing include to qemu_fwcfg.c
>> * 58 bhyve: introduce acpi_device_emul struct
>> * 59 bhyve: do not exit if LPC finds no host selector
>> * 60 bhyve: allow building device specific ACPI tables
>> * 61 bhyve: check for errors when writing device specific DSDT entries
>> * 62 bhyve: allow device specific DSDT entries
>> * 63 bhyve: define array to protect passthru regs
>> * 64 bhyve: add hook for PCI header of passthru devices
>> * 65 bhyve: add QEMU_FWCFG_INDEX_MAX_CPUS item
>> * 66 bhyve: save softc of ACPI devices
>> S 67 Update/fix Makefile.depend for userland
>> * 68 x86: Move i386 timerreg.h to x86
>> * 69 ext2fs: extract crc16 into sys/crc16.h
>> * 70 bhyve: add helper struct for qemus acpi table loader
>> * 71 bhyve: make use of qemus acpi table loader
>> * 72 vmm: Expose some more AVX512 CPUID bits to guests
>> * 73 bhyve: add basic E820 implementation
>> * 74 bhyve: add common memory holes to E820 table
>> * 75 bhyve: add allocation function to E820
>> * 76 bhyve: add E820 dump function
>> * 77 bhyve: pass E820 table to guest
>> S 78 vmm: fix HLT loop while vcpu has requested virtual interrupts
>> S 79 vmm: Dynamically allocate a couple of per-CPU state save areas
>> *F 80 bhyve: Disable bhyve HDA debug by default.
>> *F 81 bhyve: Add DEBUG_HDA_FILE define to specify location of debug 
>> output
>> S 82 bhyve: use directory file descriptor for checkpoint
>> S 83 bhyve: enable capsicum for snapshot code
>> * 84 bhyve(8): fix typo in examples
>> S 85 vmm: don't free unallocated memory
>> * 86 bhyve: specify OpenSSL 1.1 API
>> S 87 bhyve: fix vCPU single-stepping on VMX
>> S 88 bhyve: save/restore pir_desc
>> * 89 bhyve: add cmdline option for user defined fw_cfg items
>> S 90 bhyve: make passthru sel public available
>> * 91 bhyve: don't panic if e820 finds no available memory
>> S 92 bhyve: add helper for passthru specific mmio ranges
>> S 93 bhyve: import OpRegion definitions
>> * 94 spdx: The BSD-2-Clause-FreeBSD identifier is obsolete, drop 
>> -FreeBSD
>> * 95 bhyve: error out if fwcfg user file isn't read completely
>> S 96 vmm: Avoid embedding cpuset_t ioctl ABIs
>> * 97 bhyve: Remove the exitcode stats structure
>> S 98 bhyvectl: Update usage of vm_run()
>> * 99 bhyve: Fix typos
>> * 100 libvmmapi: Remove some unneeded includes
>> * 101 bhyve: Remove vestigial support for setting max vCPUs.
>> * 102 bhyve: allow adding FwCfg items to ACPI tables
>> * 103 bhyve: add basic TPM device
>> * 104 bhyve: register TPM device as ACPI device
>> * 105 bhyve: Remove special no-op handling for I/O port 0x488
>> * 106 bhyve: Sort SRCS
>> S 107 bhyve: add empty GVT-d emulation
>> S 108 bhyve: read out graphics stolen memory address and size
>> S 109 bhyve: allocate guest memory for graphics stolen memory
>> S 110 bhyve: emulate graphics stolen memory register
>> S 111 bhyve: read OpRegion address and size for GVT-d
>> S 112 bhyve: copy OpRegion into guest memory
>> S 113 bhyve: pass address of OpRegion to the guest
>> * 114 bhyve: use assert for missing TPM version
>> * 115 bhyve: add basic TPM emulation struct
>> * 116 bhyve: add basic TPM passthrough emulation
>> * 117 bhyve: add basic CRB interface for TPM devices
>> S 118 bhyve: rename 'structs' snapshot key with 'kern_structs'
>> S 119 bhyve: simplify restore of kernel structs
>> S 120 bhyve: rename 'user_dev' with 'devices'
>> * 121 bhyve: add bus, slot and func to device name
>> S 122 bhyve: add .pe_snapshot method for PCI 'hostbridge'
>> S 123 bhyve: use pci_next() to save/restore pci devices
>> S 124 bhyve: add command line parameter and parsing for migration
>> S 125 bhyve: Remove some unneeded includes of segments.h
>> *F 126 bhyve: Include vmm.h via the usual path
>> * 127 bhyve: Register hlt and pause vmexit handlers unconditionally
>> * 128 bhyve: Refactor vmexit_suspend() a bit
>> * 129 bhyve: add helper to create a bootorder
>> * 130 bhyve: add bootindex option for several devices
>> * 131 bhyve: maintain RSDT and XSDT by basl
>> * 132 bhyve/tpm: build TPM2 table by tpm interface
>> * 133 bhyve/tpm: create crb thread for sending tpm commands
>> * 134 bhyve: dos2unix
>> S 135 lib9p: Remove set but unused sockets[] array from 
>> l9p_start_server.
>> S 136 Revert "bhyve: add command line parameter and parsing for 
>> migration"
>> * 137 Replace BSD-2-Clause-FreeBSD with BSD-2-Clause
>> * 138 nvme: Fix typo in "Command Aborted by Host" constant name.
>> * 139 bhyve: Stop calling pci_lintr_request() in the NVMe device model
>> * 140 bhyve: Rename a pci_cfgrw() parameter
>> * 141 bhyve: Deduplicate some code in modify_bar_registration()
>> S 142 vmm: don't return random error from vcpu_lock_all() if vcpu is 
>> empty
>> S 143 vmm: don't leak locks exiting vmmdev_ioctl()
>> * 144 bhyve: Fix whitespace in bhyverun.c
>> * 145 bhyve: Remove an unneeded vm_get_register() call in main()
>> * 146 bhyve: do not hold CRB mutex when executing TPM commands
>> * 147 bhyvectl: Add '--get-debug-cpus' command
>> SA 148 bhyve: Fully reset the fwctl state machine if the guest 
>> requests a reset.
>> * 149 nvme: Add more NVME Base Spec 2.0 and NVME Command Set Spec 1.0a
>> * 150 bhyve: add emulation for CRB register of TPM devices
>> * 151 bhyve: emulate TPM passthru by accessing /dev/tpmX
>> * 152 bhyve: add Qemu PPI emulation for TPM devices
>> * 153 nvme.h: Fix a comment typo in admin opcode enum
>> * 154 sys: Remove $FreeBSD$: two-line .h pattern
>> * 155 Remove $FreeBSD$: two-line .h pattern
>> * 156 sys: Remove $FreeBSD$: one-line .h pattern
>> * 157 sys: Remove $FreeBSD$: one-line .c pattern
>> * 158 Remove $FreeBSD$: one-line .c pattern
>> * 159 sys: Remove $FreeBSD$: one-line sh pattern
>> * 160 Remove $FreeBSD$: one-line sh pattern
>> * 161 Remove $FreeBSD$: two-line nroff pattern
>> * 162 bhyve: add cmdline option for TPM emulation
>> * 163 bhyve: Store the FreeBSD OUI in little-endian in the controller 
>> data
>> * 164 bhyve: default UART to 115200
>> S 165 vmm: Fix VM_GET_CPUS compatibility
>> * 166 bhyve: add config option to load ACPI tables into memory
>> * 193 bhyve nvme: Add NQN value
>> </pre>
>>
>>
>>
>> -- 
>> You have received this notification because you have either 
>> subscribed to it, or are involved in it.
>> To change your notification preferences, please click 
>> here:https://www.illumos.org/my/account
>>
>> ------------------------------------------
>> illumos: illumos-bugs
>> Permalink:https://illumos.topicbox.com/groups/bugs/T2f419f5be07c6e45-Mccd7307621486f4dc0fea867 
>>
>> Delivery options:https://illumos.topicbox.com/groups/bugs/subscription
>>
>>
>> _______________________________________________
>> oi-dev mailing list
>> oi-dev at openindiana.org
>> https://openindiana.org/mailman/listinfo/oi-dev
>
> _______________________________________________
> oi-dev mailing list
> oi-dev at openindiana.org
> https://openindiana.org/mailman/listinfo/oi-dev

Hello!

The upstream github has been updated by Andy Fiddaman,
from which we could update the OI component system/bhyve/
in the source path components/openindiana/bhyve-fw

i have only modified

COMPONENT_TAG_1=    il-edk2-stable202308-1

and the hash so far and have a build error in the tests, which should be 
disabled in the Makefile by the line

test:        $(NO_TESTS)
no? (?)

gmake -C Tests
gmake[1]: Entering directory 
'/home1/home/steven/src/oi/oi-userland/components/openindiana/bhyve-fw/build/DEBUG.csm/BaseTools/Tests'
Traceback (most recent call last):
   File 
"/home1/home/steven/src/oi/oi-userland/components/openindiana/bhyve-fw/build/DEBUG.csm/BaseTools/Tests/RunTests.py", 
line 22, in <module>
     import TestTools
   File 
"/home1/home/steven/src/oi/oi-userland/components/openindiana/bhyve-fw/uefi-edk2-il-udk2014.sp1-3/BaseTools/Tests/TestTools.py", 
line 87
     print description, '(base64 encoded):'
           ^
SyntaxError: invalid syntax


... and i believe this should (at least) be gcc-10 by now:

$(BUILD_DIR)/RELEASE.csm/.built: COMPONENT_BUILD_ENV += 
GCCPATH=/opt/gcc/4.4.4



Regards,

Stephan




More information about the oi-dev mailing list