The branch main has been updated by novel: URL: https://cgit.FreeBSD.org/src/commit/?id=8bd30a72e7012126a1c8d52b3ba32f844a88f8dc
commit 8bd30a72e7012126a1c8d52b3ba32f844a88f8dc Author: Roman Bogorodskiy <[email protected]> AuthorDate: 2026-08-21 13:27:56 +0000 Commit: Roman Bogorodskiy <[email protected]> CommitDate: 2026-08-26 16:26:37 +0000 bhyve: fix byte order for manually set NVMe eui64 Manually specified eui64 value gets converted to big endian twice: first using htobe64() and then using be64enc(). On little-endian hosts that results in a little-endian value instead of a big-endian. Fix by removing htobe64() for a user submitted value. Fixes: 409a80e5a434 ("bhyve: Create EUI64 for NVMe namespaces") Reviewed by: chuck Relnotes: yes Sponsored by: The FreeBSD Foundation MFC after: 3 weeks Differential Revision: https://reviews.freebsd.org/D59080 --- UPDATING | 10 ++++++++++ usr.sbin/bhyve/pci_nvme.c | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/UPDATING b/UPDATING index fba3cf159402..93c6c9e358a3 100644 --- a/UPDATING +++ b/UPDATING @@ -27,6 +27,16 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 16.x IS SLOW: world, or to merely disable the most expensive debugging functionality at runtime, run "ln -s 'abort:false,junk:false' /etc/malloc.conf".) +20260826: + bhyve(8) users who explicitly set the eui64 option for an NVMe + device may need to update their configuration. Due to an incorrect + byte-order conversion, bhyve previously presented manually + configured EUI-64 values to the guest with their bytes reversed. + To preserve the identifier previously visible to the guest, + byte-reverse the value in the eui64 option. Automatically + generated EUI-64 values, used when the option is omitted, + are unaffected. + 20260814: libusb version has been upgraded to 1.0.27 compatible version. All of the missing parts have been implemented. diff --git a/usr.sbin/bhyve/pci_nvme.c b/usr.sbin/bhyve/pci_nvme.c index b2b9f0ff88a8..0e20122648a6 100644 --- a/usr.sbin/bhyve/pci_nvme.c +++ b/usr.sbin/bhyve/pci_nvme.c @@ -3215,7 +3215,7 @@ pci_nvme_parse_config(struct pci_nvme_softc *sc, nvlist_t *nvl) } value = get_config_value_node(nvl, "eui64"); if (value != NULL) - sc->nvstore.eui64 = htobe64(strtoull(value, NULL, 0)); + sc->nvstore.eui64 = strtoull(value, NULL, 0); value = get_config_value_node(nvl, "dsm"); if (value != NULL) { if (strcmp(value, "auto") == 0)
