[libvirt] [PATCH v5] bhyve: implement PCI address allocation
Ján Tomko
jtomko at redhat.com
Tue May 27 07:53:41 UTC 2014
On 05/26/2014 06:24 PM, Roman Bogorodskiy wrote:
> Ján Tomko wrote:
>
>> On 05/17/2014 07:49 PM, Roman Bogorodskiy wrote:
>>> Automatically allocate PCI addresses for devices instead
>>> of hardcoding them in the driver code. The current
>>> allocation schema is to dedicate an entire slot for each devices.
>>>
>>> Also, allow having arbitrary number of devices.
>>> ---
>>> po/POTFILES.in | 1 +
>>> src/Makefile.am | 4 +
>>> src/bhyve/bhyve_command.c | 112 +++++++------
>>> src/bhyve/bhyve_device.c | 174 +++++++++++++++++++++
>>> src/bhyve/bhyve_device.h | 38 +++++
>>> src/bhyve/bhyve_domain.c | 75 +++++++++
>>> src/bhyve/bhyve_domain.h | 39 +++++
>>> src/bhyve/bhyve_driver.c | 12 +-
>>> .../bhyvexml2argvdata/bhyvexml2argv-acpiapic.args | 2 +-
>>> tests/bhyvexml2argvdata/bhyvexml2argv-acpiapic.xml | 2 +
>>> tests/bhyvexml2argvdata/bhyvexml2argv-base.args | 2 +-
>>> tests/bhyvexml2argvdata/bhyvexml2argv-base.xml | 2 +
>>> tests/bhyvexml2argvdata/bhyvexml2argv-console.args | 4 +-
>>> tests/bhyvexml2argvdata/bhyvexml2argv-console.xml | 2 +
>>> .../bhyvexml2argv-disk-virtio.args | 2 +-
>>> .../bhyvexml2argv-disk-virtio.xml | 2 +
>>> tests/bhyvexml2argvdata/bhyvexml2argv-macaddr.args | 2 +-
>>> tests/bhyvexml2argvdata/bhyvexml2argv-macaddr.xml | 2 +
>>> tests/bhyvexml2argvdata/bhyvexml2argv-serial.args | 4 +-
>>> tests/bhyvexml2argvdata/bhyvexml2argv-serial.xml | 2 +
>>> 20 files changed, 416 insertions(+), 67 deletions(-)
>>> create mode 100644 src/bhyve/bhyve_device.c
>>> create mode 100644 src/bhyve/bhyve_device.h
>>> create mode 100644 src/bhyve/bhyve_domain.c
>>> create mode 100644 src/bhyve/bhyve_domain.h
>>>
>>
>> ACK
>
> Thanks!
>
> One more thing that bothers me: after this change user needs to
> re-define a domain, otherwise domain will have no addresses and will
> fail to start.
>
> Could/should it be handled somehow?
Yes, it would be nice not to break upgrades :)
In QEMU driver, this is done by calling AssignAddresses from QemuProcessStart.
>
>>> --- a/src/bhyve/bhyve_command.c
>>> +++ b/src/bhyve/bhyve_command.c
>>> @@ -39,58 +39,48 @@
>>> VIR_LOG_INIT("bhyve.bhyve_command");
>>>
>>> static int
>>> -bhyveBuildNetArgStr(const virDomainDef *def, virCommandPtr cmd, bool dryRun)
>>> +bhyveBuildNetArgStr(const virDomainDef *def,
>>> + virDomainNetDefPtr net,
>>> + virCommandPtr cmd,
>>> + bool dryRun)
>>> {
>>
>>> + char *brname = NULL;
>>> + int actualType = virDomainNetGetActualType(net);
>>>
>>> - if (def->nnets != 1) {
>>> - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
>>> - _("domain should have one and only one net defined"));
>>
>> I don't see this check re-added anywhere. Is it okay to have a domain with no
>> net now?
>
> Interesting question. Initially, I've added this requirement because it
> was the only (easy) way to get into the guest. Now, as we have serial
> console support in bhyve, it's possible to get into domain without
> having any network interfaces, so user has a choice.
>
> However, user could still not add serial console and network interface
> and end up with a unaccessible domain. Does it make sense from the user
> experience point of view to prevent this situation from happening?
>
If bhyve is able to run the inaccessible domain, I think we should allow it.
Jan
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20140527/29aa880d/attachment-0001.sig>
More information about the libvir-list
mailing list