[libvirt] [PATCH] bhyve: fix disks address allocation

Laine Stump laine at laine.org
Sun Aug 28 17:21:50 UTC 2016


On 08/28/2016 08:45 AM, Roman Bogorodskiy wrote:
> As bhyve currently doesn't use controller addressing and simply
> uses 1 implicit controller for 1 disk device, the scheme looks the
> following:
>
>   pci addrees -> (implicit controller) -> disk device
>
> So in fact we identify disk devices by pci address of implicit
> controller and just pass it this way to bhyve in a form:
>
>   -s pci_addr,ahci-(cd|hd),/path/to/disk
>
> Therefore, we cannot use virDeviceInfoPCIAddressWanted() because it
> does not expect that disk devices might need PCI address assignment.
>
> As a result, if a disk was specified without address, it will not be
> generated and domain will to start.
>
> Until proper controller addressing is not implemented in the bhyve

s/not//   :-)

> driver, force each disk to have PCI address generated if it was not
> specified by user.
> ---
>   src/bhyve/bhyve_device.c | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/src/bhyve/bhyve_device.c b/src/bhyve/bhyve_device.c
> index 8373a5f..ca30e9f 100644
> --- a/src/bhyve/bhyve_device.c
> +++ b/src/bhyve/bhyve_device.c
> @@ -107,7 +107,8 @@ bhyveAssignDevicePCISlots(virDomainDefPtr def,
>       }
>   
>       for (i = 0; i < def->ndisks; i++) {
> -        if (!virDeviceInfoPCIAddressWanted(&def->disks[i]->info))
> +        if (def->disks[i]->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI &&
> +            !virPCIDeviceAddressIsEmpty(&def->disks[i]->info.addr.pci))
>               continue;
>           if (virDomainPCIAddressReserveNextSlot(addrs,
>                                                  &def->disks[i]->info,


ACK.




More information about the libvir-list mailing list