[Bug 271785] PCI: HotPlug: no BAR mapping after attaching a virtual function to the VM
Date: Thu, 08 Jun 2023 16:20:37 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=271785 John Baldwin <jhb@FreeBSD.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jhb@FreeBSD.org --- Comment #2 from John Baldwin <jhb@FreeBSD.org> --- I'm not quite sure I follow exactly. Are you creating the VFs in a FreeBSD bare metal machine, or have you created a VF on a host and are then passing that VF through to the guest as a PCI-e hot-plug event? Generally speaking, FreeBSD's PCI bus driver does not try to assign resources to a device when it discovers it. When a device is enumerated, if the BARs already have a resource that has been assigned by firmware (e.g. during boot), then this existing resource allocations are preserved and the address space is reserved when enumerating the device. However, if a BAR doesn't have a firmware-assigned address range when a qdevice is enumerated, the BAR is still sized but left unallocated. If a device driver attaches and calls bus_alloc_resource to reserve a BAR, at that point resources are allocated for the BAR. For HotPlug, BARs are always unassigned when the device appears, so they are only assigned resources when you attach a driver. Thus, if you create a VF on the host and pass through to the FreeBSD guest and the guest doesn't have a driver for the VF device loaded, I would expect to see all the BARs unassigned. However, once you load a driver the BARs should be assigned resources during the attach of the device driver. -- You are receiving this mail because: You are the assignee for the bug.