git: 0ffad4ce5655 - main - bhyve: Tidy lobits handling in pci_passthru

From: John Baldwin <jhb_at_FreeBSD.org>
Date: Wed, 26 Aug 2026 19:31:48 UTC
The branch main has been updated by jhb:

URL: https://cgit.FreeBSD.org/src/commit/?id=0ffad4ce5655cbe412b79185d2b7924d0d72983e

commit 0ffad4ce5655cbe412b79185d2b7924d0d72983e
Author:     John Baldwin <jhb@FreeBSD.org>
AuthorDate: 2026-08-26 19:31:01 +0000
Commit:     John Baldwin <jhb@FreeBSD.org>
CommitDate: 2026-08-26 19:31:01 +0000

    bhyve: Tidy lobits handling in pci_passthru
    
    - The lobits field in the "physical" BAR settings is never used, so
      don't bother setting it.
    
    - Expand the comment explaining why the existing lobits are preserved
      (namely, to preserve the prefetch flag on memory BARs).
    
    Reviewed by:    bnovkov
    Differential Revision:  https://reviews.freebsd.org/D58894
---
 usr.sbin/bhyve/pci_passthru.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/usr.sbin/bhyve/pci_passthru.c b/usr.sbin/bhyve/pci_passthru.c
index 740d9ad45d03..615b0c639bbe 100644
--- a/usr.sbin/bhyve/pci_passthru.c
+++ b/usr.sbin/bhyve/pci_passthru.c
@@ -678,12 +678,14 @@ cfginitbar(struct passthru_softc *sc)
 		sc->psc_bar[i].type = bartype;
 		sc->psc_bar[i].size = size;
 		sc->psc_bar[i].addr = base;
-		sc->psc_bar[i].lobits = 0;
 
 		/* Allocate the BAR in the guest I/O or MMIO space */
 		pci_emul_alloc_bar(pi, i, bartype, size);
 
-		/* Use same lobits as physical bar */
+		/*
+		 * Use same lobits as physical BAR to preserve
+		 * prefetch flag.
+		 */
 		lobits = (uint8_t)passthru_read_config(&sc->psc_sel,
 		    PCIR_BAR(i), 0x01);
 		if (bartype == PCIBAR_MEM32 || bartype == PCIBAR_MEM64) {
@@ -691,7 +693,6 @@ cfginitbar(struct passthru_softc *sc)
 		} else {
 			lobits &= ~PCIM_BAR_IO_BASE;
 		}
-		sc->psc_bar[i].lobits = lobits;
 		pi->pi_bar[i].lobits = lobits;
 
 		/*