[libvirt] [PATCH v2 3/6] bhyve: support 'isa' controller for LPC
Roman Bogorodskiy
bogorodskiy at gmail.com
Sun Mar 3 14:00:32 UTC 2019
Ján Tomko wrote:
> On Sun, Feb 17, 2019 at 05:04:02PM +0400, Roman Bogorodskiy wrote:
> >Support modeling of the 'isa' controller for bhyve. When controller is
> >not present in the domain XML, but domain requires it to be there (e.g.
> >because bootrom is used), implicitly add addition of this controller to
> >the command line arguments, and bind it to PCI slot 1.
> >
> >PCI slot 1 is always reserved still. User can manually define any PCI
> >slot for the 'isa' controller, including PCI slot 1, but other devices
> >are not allowed to use this address.
> >
>
> I thought one of the points was to allow the use of slot 1 for users
> who request it. But this also works - the restriction can be relaxed
> later if needed.
The main goal for now is to allow to choose PCI slot for the LPC
controller. My plan is to relax it later indeed.
> >Signed-off-by: Roman Bogorodskiy <bogorodskiy at gmail.com>
> >---
> > src/bhyve/bhyve_command.c | 18 +++++++++-
> > src/bhyve/bhyve_device.c | 25 ++++++++++---
> > ...ml2argv-addr-isa-controller-on-slot-1.args | 10 ++++++
> > ...2argv-addr-isa-controller-on-slot-1.ldargs | 3 ++
> > ...xml2argv-addr-isa-controller-on-slot-1.xml | 26 ++++++++++++++
> > ...l2argv-addr-isa-controller-on-slot-31.args | 10 ++++++
> > ...argv-addr-isa-controller-on-slot-31.ldargs | 3 ++
> > ...ml2argv-addr-isa-controller-on-slot-31.xml | 26 ++++++++++++++
> > ...argv-addr-non-isa-controller-on-slot-1.xml | 23 ++++++++++++
> > .../bhyvexml2argv-isa-controller.args | 10 ++++++
> > .../bhyvexml2argv-isa-controller.ldargs | 3 ++
> > .../bhyvexml2argv-isa-controller.xml | 24 +++++++++++++
> > ...bhyvexml2argv-isa-multiple-controllers.xml | 25 +++++++++++++
> > tests/bhyvexml2argvtest.c | 5 +++
> > ...l2xmlout-addr-isa-controller-on-slot-1.xml | 36 +++++++++++++++++++
> > ...2xmlout-addr-isa-controller-on-slot-31.xml | 36 +++++++++++++++++++
> > .../bhyvexml2xmlout-isa-controller.xml | 36 +++++++++++++++++++
> > tests/bhyvexml2xmltest.c | 3 ++
> > 18 files changed, 317 insertions(+), 5 deletions(-)
> > create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-addr-isa-controller-on-slot-1.args
> > create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-addr-isa-controller-on-slot-1.ldargs
> > create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-addr-isa-controller-on-slot-1.xml
> > create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-addr-isa-controller-on-slot-31.args
> > create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-addr-isa-controller-on-slot-31.ldargs
> > create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-addr-isa-controller-on-slot-31.xml
> > create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-addr-non-isa-controller-on-slot-1.xml
> > create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-isa-controller.args
> > create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-isa-controller.ldargs
> > create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-isa-controller.xml
> > create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-isa-multiple-controllers.xml
> > create mode 100644 tests/bhyvexml2xmloutdata/bhyvexml2xmlout-addr-isa-controller-on-slot-1.xml
> > create mode 100644 tests/bhyvexml2xmloutdata/bhyvexml2xmlout-addr-isa-controller-on-slot-31.xml
> > create mode 100644 tests/bhyvexml2xmloutdata/bhyvexml2xmlout-isa-controller.xml
> >
> >diff --git a/src/bhyve/bhyve_command.c b/src/bhyve/bhyve_command.c
> >index f49dc77118..2c90265a93 100644
> >--- a/src/bhyve/bhyve_command.c
> >+++ b/src/bhyve/bhyve_command.c
> >@@ -461,6 +461,7 @@ virBhyveProcessBuildBhyveCmd(virConnectPtr conn,
> > */
> > size_t i;
> > int nusbcontrollers = 0;
> >+ int nisacontrollers = 0;
> > unsigned int nvcpus = virDomainDefGetVcpus(def);
> >
> > virCommandPtr cmd = virCommandNew(BHYVE);
> >@@ -581,6 +582,21 @@ virBhyveProcessBuildBhyveCmd(virConnectPtr conn,
> > if (bhyveBuildUSBControllerArgStr(def, controller, cmd) < 0)
> > goto error;
> > break;
> >+ case VIR_DOMAIN_CONTROLLER_TYPE_ISA:
> >+ if (controller->model != VIR_DOMAIN_CONTROLLER_MODEL_ISA_BRIDGE) {
> >+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
> >+ "%s", _("unsupported ISA controller model: only ISA bridge supported"));
> >+ goto error;
> >+ }
> >+ if (++nisacontrollers > 1) {
> >+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
> >+ "%s", _("only single ISA controller is supported"));
> >+ goto error;
> >+ }
>
> This error message can be reported much sooner - since we already forbid
> multiple controllers with the same index, all you need to do is forbid
> non-zero index virDomainControllerDefValidate
Do you mean implementing this check in virDomainDefParserConfig.deviceValidateCallback
of the bhyve driver?
>
> Also, this whole switch is indented by 8 instead of 4 spaces.
>
> >+ virCommandAddArg(cmd, "-s");
> >+ virCommandAddArgFormat(cmd, "%d:0,lpc",
> >+ controller->info.addr.pci.slot);
> >+ break;
> > }
> > }
> > for (i = 0; i < def->nnets; i++) {
> >@@ -618,7 +634,7 @@ virBhyveProcessBuildBhyveCmd(virConnectPtr conn,
> > }
> > }
> >
> >- if (bhyveDomainDefNeedsISAController(def))
> >+ if (nisacontrollers == 0 && bhyveDomainDefNeedsISAController(def))
> > bhyveBuildLPCArgStr(def, cmd);
> >
> > if (bhyveBuildConsoleArgStr(def, cmd) < 0)
> >diff --git a/src/bhyve/bhyve_device.c b/src/bhyve/bhyve_device.c
> >index 201044d9e6..42093afb7b 100644
> >--- a/src/bhyve/bhyve_device.c
> >+++ b/src/bhyve/bhyve_device.c
> >@@ -47,10 +47,17 @@ bhyveCollectPCIAddress(virDomainDefPtr def ATTRIBUTE_UNUSED,
> > if (addr->slot == 0) {
> > return 0;
> > } else if (addr->slot == 1) {
> >- virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> >- _("PCI bus 0 slot 1 is reserved for the implicit "
> >- "LPC PCI-ISA bridge"));
> >- return -1;
> >+ if (!((device->type == VIR_DOMAIN_DEVICE_CONTROLLER) &&
> >+ (device->data.controller->type == VIR_DOMAIN_CONTROLLER_TYPE_ISA) &&
>
> == has higher precedence than &&, the inner parentheses can be dropped
>
> >+ (device->data.controller->model == VIR_DOMAIN_CONTROLLER_MODEL_ISA_BRIDGE))) {
> >+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> >+ _("PCI bus 0 slot 1 is reserved for the implicit "
> >+ "LPC PCI-ISA bridge"));
> >+ return -1;
> >+ } else {
> >+ /* We reserve slot 1 for LPC in bhyveAssignDevicePCISlots(), so exit early */
> >+ return 0;
> >+ }
> > }
> > }
> >
> >@@ -103,6 +110,16 @@ bhyveAssignDevicePCISlots(virDomainDefPtr def,
> > goto error;
> > }
> >
> >+ for (i = 0; i < def->ncontrollers; i++) {
> >+ if ((def->controllers[i]->type == VIR_DOMAIN_CONTROLLER_TYPE_ISA) &&
> >+ (def->controllers[i]->model == VIR_DOMAIN_CONTROLLER_MODEL_ISA_BRIDGE) &&
> >+ virDeviceInfoPCIAddressIsWanted(&def->controllers[i]->info)) {
> >+ def->controllers[i]->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI;
> >+ def->controllers[i]->info.addr.pci = lpc_addr;
> >+ break;
> >+ }
> >+ }
> >+
> > for (i = 0; i < def->ncontrollers; i++) {
> > if ((def->controllers[i]->type == VIR_DOMAIN_CONTROLLER_TYPE_PCI) ||
> > (def->controllers[i]->type == VIR_DOMAIN_CONTROLLER_TYPE_SATA) ||
> >diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-addr-isa-controller-on-slot-1.args b/tests/bhyvexml2argvdata/bhyvexml2argv-addr-isa-controller-on-slot-1.args
> >new file mode 100644
> >index 0000000000..910d1bbcfa
> >--- /dev/null
> >+++ b/tests/bhyvexml2argvdata/bhyvexml2argv-addr-isa-controller-on-slot-1.args
> >@@ -0,0 +1,10 @@
> >+/usr/sbin/bhyve \
> >+-c 1 \
> >+-m 214 \
> >+-u \
> >+-H \
> >+-P \
> >+-s 0:0,hostbridge \
> >+-s 1:0,lpc \
> >+-s 2:0,ahci,hd:/tmp/freebsd.img \
> >+-s 3:0,virtio-net,faketapdev,mac=52:54:00:b9:94:02 bhyve
> >diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-addr-isa-controller-on-slot-1.ldargs b/tests/bhyvexml2argvdata/bhyvexml2argv-addr-isa-controller-on-slot-1.ldargs
> >new file mode 100644
> >index 0000000000..32538b558e
> >--- /dev/null
> >+++ b/tests/bhyvexml2argvdata/bhyvexml2argv-addr-isa-controller-on-slot-1.ldargs
> >@@ -0,0 +1,3 @@
> >+/usr/sbin/bhyveload \
> >+-m 214 \
> >+-d /tmp/freebsd.img bhyve
> >diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-addr-isa-controller-on-slot-1.xml b/tests/bhyvexml2argvdata/bhyvexml2argv-addr-isa-controller-on-slot-1.xml
> >new file mode 100644
> >index 0000000000..796903a9fa
> >--- /dev/null
> >+++ b/tests/bhyvexml2argvdata/bhyvexml2argv-addr-isa-controller-on-slot-1.xml
> >@@ -0,0 +1,26 @@
> >+<domain type='bhyve'>
> >+ <name>bhyve</name>
> >+ <uuid>df3be7e7-a104-11e3-aeb0-50e5492bd3dc</uuid>
> >+ <memory>219136</memory>
> >+ <vcpu>1</vcpu>
> >+ <os>
> >+ <type>hvm</type>
> >+ </os>
> >+ <devices>
> >+ <controller type='isa' index='1' model='isa-bridge'>
> >+ <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
> >+ </controller>
> >+ <disk type='file'>
> >+ <driver name='file' type='raw'/>
> >+ <source file='/tmp/freebsd.img'/>
> >+ <target dev='hda' bus='sata'/>
> >+ <address type='drive' controller='0' bus='0' target='2' unit='0'/>
> >+ </disk>
> >+ <interface type='bridge'>
> >+ <mac address='52:54:00:b9:94:02'/>
> >+ <model type='virtio'/>
> >+ <source bridge="virbr0"/>
> >+ <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
> >+ </interface>
> >+ </devices>
> >+</domain>
> >diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-addr-isa-controller-on-slot-31.args b/tests/bhyvexml2argvdata/bhyvexml2argv-addr-isa-controller-on-slot-31.args
> >new file mode 100644
> >index 0000000000..ee833eb460
> >--- /dev/null
> >+++ b/tests/bhyvexml2argvdata/bhyvexml2argv-addr-isa-controller-on-slot-31.args
> >@@ -0,0 +1,10 @@
> >+/usr/sbin/bhyve \
> >+-c 1 \
> >+-m 214 \
> >+-u \
> >+-H \
> >+-P \
> >+-s 0:0,hostbridge \
> >+-s 31:0,lpc \
> >+-s 2:0,ahci,hd:/tmp/freebsd.img \
> >+-s 3:0,virtio-net,faketapdev,mac=52:54:00:b9:94:02 bhyve
> >diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-addr-isa-controller-on-slot-31.ldargs b/tests/bhyvexml2argvdata/bhyvexml2argv-addr-isa-controller-on-slot-31.ldargs
> >new file mode 100644
> >index 0000000000..32538b558e
> >--- /dev/null
> >+++ b/tests/bhyvexml2argvdata/bhyvexml2argv-addr-isa-controller-on-slot-31.ldargs
> >@@ -0,0 +1,3 @@
> >+/usr/sbin/bhyveload \
> >+-m 214 \
> >+-d /tmp/freebsd.img bhyve
> >diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-addr-isa-controller-on-slot-31.xml b/tests/bhyvexml2argvdata/bhyvexml2argv-addr-isa-controller-on-slot-31.xml
> >new file mode 100644
> >index 0000000000..65d7480db6
> >--- /dev/null
> >+++ b/tests/bhyvexml2argvdata/bhyvexml2argv-addr-isa-controller-on-slot-31.xml
> >@@ -0,0 +1,26 @@
> >+<domain type='bhyve'>
> >+ <name>bhyve</name>
> >+ <uuid>df3be7e7-a104-11e3-aeb0-50e5492bd3dc</uuid>
> >+ <memory>219136</memory>
> >+ <vcpu>1</vcpu>
> >+ <os>
> >+ <type>hvm</type>
> >+ </os>
> >+ <devices>
> >+ <controller type='isa' index='1' model='isa-bridge'>
> >+ <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x0'/>
> >+ </controller>
> >+ <disk type='file'>
> >+ <driver name='file' type='raw'/>
> >+ <source file='/tmp/freebsd.img'/>
> >+ <target dev='hda' bus='sata'/>
> >+ <address type='drive' controller='0' bus='0' target='2' unit='0'/>
> >+ </disk>
> >+ <interface type='bridge'>
> >+ <mac address='52:54:00:b9:94:02'/>
> >+ <model type='virtio'/>
> >+ <source bridge="virbr0"/>
> >+ <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
> >+ </interface>
> >+ </devices>
> >+</domain>
> >diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-addr-non-isa-controller-on-slot-1.xml b/tests/bhyvexml2argvdata/bhyvexml2argv-addr-non-isa-controller-on-slot-1.xml
> >new file mode 100644
> >index 0000000000..88ad9aebb7
> >--- /dev/null
> >+++ b/tests/bhyvexml2argvdata/bhyvexml2argv-addr-non-isa-controller-on-slot-1.xml
> >@@ -0,0 +1,23 @@
> >+<domain type='bhyve'>
> >+ <name>bhyve</name>
> >+ <uuid>df3be7e7-a104-11e3-aeb0-50e5492bd3dc</uuid>
> >+ <memory>219136</memory>
> >+ <vcpu>1</vcpu>
> >+ <os>
> >+ <type>hvm</type>
> >+ </os>
> >+ <devices>
> >+ <disk type='file'>
> >+ <driver name='file' type='raw'/>
> >+ <source file='/tmp/freebsd.img'/>
> >+ <target dev='hda' bus='sata'/>
> >+ <address type='drive' controller='0' bus='0' target='2' unit='0'/>
> >+ </disk>
> >+ <interface type='bridge'>
> >+ <mac address='52:54:00:b9:94:02'/>
> >+ <model type='virtio'/>
> >+ <source bridge="virbr0"/>
> >+ <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
> >+ </interface>
> >+ </devices>
> >+</domain>
> >diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-isa-controller.args b/tests/bhyvexml2argvdata/bhyvexml2argv-isa-controller.args
> >new file mode 100644
> >index 0000000000..910d1bbcfa
> >--- /dev/null
> >+++ b/tests/bhyvexml2argvdata/bhyvexml2argv-isa-controller.args
> >@@ -0,0 +1,10 @@
> >+/usr/sbin/bhyve \
> >+-c 1 \
> >+-m 214 \
> >+-u \
> >+-H \
> >+-P \
> >+-s 0:0,hostbridge \
> >+-s 1:0,lpc \
> >+-s 2:0,ahci,hd:/tmp/freebsd.img \
> >+-s 3:0,virtio-net,faketapdev,mac=52:54:00:b9:94:02 bhyve
> >diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-isa-controller.ldargs b/tests/bhyvexml2argvdata/bhyvexml2argv-isa-controller.ldargs
> >new file mode 100644
> >index 0000000000..32538b558e
> >--- /dev/null
> >+++ b/tests/bhyvexml2argvdata/bhyvexml2argv-isa-controller.ldargs
> >@@ -0,0 +1,3 @@
> >+/usr/sbin/bhyveload \
> >+-m 214 \
> >+-d /tmp/freebsd.img bhyve
> >diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-isa-controller.xml b/tests/bhyvexml2argvdata/bhyvexml2argv-isa-controller.xml
> >new file mode 100644
> >index 0000000000..71265ea32c
> >--- /dev/null
> >+++ b/tests/bhyvexml2argvdata/bhyvexml2argv-isa-controller.xml
> >@@ -0,0 +1,24 @@
> >+<domain type='bhyve'>
> >+ <name>bhyve</name>
> >+ <uuid>df3be7e7-a104-11e3-aeb0-50e5492bd3dc</uuid>
> >+ <memory>219136</memory>
> >+ <vcpu>1</vcpu>
> >+ <os>
> >+ <type>hvm</type>
> >+ </os>
> >+ <devices>
> >+ <controller type='isa' index='1' model='isa-bridge'/>
> >+ <disk type='file'>
> >+ <driver name='file' type='raw'/>
> >+ <source file='/tmp/freebsd.img'/>
> >+ <target dev='hda' bus='sata'/>
> >+ <address type='drive' controller='0' bus='0' target='2' unit='0'/>
> >+ </disk>
> >+ <interface type='bridge'>
> >+ <mac address='52:54:00:b9:94:02'/>
> >+ <model type='virtio'/>
> >+ <source bridge="virbr0"/>
> >+ <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
> >+ </interface>
> >+ </devices>
> >+</domain>
> >diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-isa-multiple-controllers.xml b/tests/bhyvexml2argvdata/bhyvexml2argv-isa-multiple-controllers.xml
> >new file mode 100644
> >index 0000000000..25622ce78a
> >--- /dev/null
> >+++ b/tests/bhyvexml2argvdata/bhyvexml2argv-isa-multiple-controllers.xml
> >@@ -0,0 +1,25 @@
> >+<domain type='bhyve'>
> >+ <name>bhyve</name>
> >+ <uuid>df3be7e7-a104-11e3-aeb0-50e5492bd3dc</uuid>
> >+ <memory>219136</memory>
> >+ <vcpu>1</vcpu>
> >+ <os>
> >+ <type>hvm</type>
> >+ </os>
> >+ <devices>
> >+ <controller type='isa' index='1' model='isa-bridge'/>
> >+ <controller type='isa' index='2' model='isa-bridge'/>
> >+ <disk type='file'>
> >+ <driver name='file' type='raw'/>
> >+ <source file='/tmp/freebsd.img'/>
> >+ <target dev='hda' bus='sata'/>
> >+ <address type='drive' controller='0' bus='0' target='2' unit='0'/>
> >+ </disk>
> >+ <interface type='bridge'>
> >+ <mac address='52:54:00:b9:94:02'/>
> >+ <model type='virtio'/>
> >+ <source bridge="virbr0"/>
> >+ <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
> >+ </interface>
> >+ </devices>
> >+</domain>
> >diff --git a/tests/bhyvexml2argvtest.c b/tests/bhyvexml2argvtest.c
> >index 4a7f65a8e2..d120bd43ca 100644
> >--- a/tests/bhyvexml2argvtest.c
> >+++ b/tests/bhyvexml2argvtest.c
> >@@ -211,6 +211,8 @@ mymain(void)
> > DO_TEST("cputopology");
> > DO_TEST_FAILURE("cputopology-nvcpu-mismatch");
> > DO_TEST("commandline");
> >+ DO_TEST("isa-controller");
> >+ DO_TEST_FAILURE("isa-multiple-controllers");
> >
> > /* Address allocation tests */
> > DO_TEST("addr-single-sata-disk");
> >@@ -218,6 +220,9 @@ mymain(void)
> > DO_TEST("addr-more-than-32-sata-disks");
> > DO_TEST("addr-single-virtio-disk");
> > DO_TEST("addr-multiple-virtio-disks");
> >+ DO_TEST("addr-isa-controller-on-slot-1");
> >+ DO_TEST("addr-isa-controller-on-slot-31");
> >+ DO_TEST_FAILURE("addr-non-isa-controller-on-slot-1");
> >
> > /* The same without 32 devs per controller support */
> > driver.bhyvecaps ^= BHYVE_CAP_AHCI32SLOT;
> >diff --git a/tests/bhyvexml2xmloutdata/bhyvexml2xmlout-addr-isa-controller-on-slot-1.xml b/tests/bhyvexml2xmloutdata/bhyvexml2xmlout-addr-isa-controller-on-slot-1.xml
> >new file mode 100644
> >index 0000000000..db84185fe6
> >--- /dev/null
> >+++ b/tests/bhyvexml2xmloutdata/bhyvexml2xmlout-addr-isa-controller-on-slot-1.xml
> >@@ -0,0 +1,36 @@
> >+<domain type='bhyve'>
> >+ <name>bhyve</name>
> >+ <uuid>df3be7e7-a104-11e3-aeb0-50e5492bd3dc</uuid>
> >+ <memory unit='KiB'>219136</memory>
> >+ <currentMemory unit='KiB'>219136</currentMemory>
> >+ <vcpu placement='static'>1</vcpu>
> >+ <os>
> >+ <type arch='x86_64'>hvm</type>
> >+ <boot dev='hd'/>
> >+ </os>
> >+ <clock offset='utc'/>
> >+ <on_poweroff>destroy</on_poweroff>
> >+ <on_reboot>restart</on_reboot>
> >+ <on_crash>destroy</on_crash>
> >+ <devices>
> >+ <disk type='file' device='disk'>
> >+ <driver name='file' type='raw'/>
> >+ <source file='/tmp/freebsd.img'/>
> >+ <target dev='hda' bus='sata'/>
> >+ <address type='drive' controller='0' bus='0' target='2' unit='0'/>
> >+ </disk>
> >+ <controller type='isa' index='1' model='isa-bridge'>
> >+ <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
> >+ </controller>
> >+ <controller type='pci' index='0' model='pci-root'/>
> >+ <controller type='sata' index='0'>
> >+ <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
> >+ </controller>
> >+ <interface type='bridge'>
> >+ <mac address='52:54:00:b9:94:02'/>
> >+ <source bridge='virbr0'/>
> >+ <model type='virtio'/>
> >+ <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
> >+ </interface>
> >+ </devices>
> >+</domain>
> >diff --git a/tests/bhyvexml2xmloutdata/bhyvexml2xmlout-addr-isa-controller-on-slot-31.xml b/tests/bhyvexml2xmloutdata/bhyvexml2xmlout-addr-isa-controller-on-slot-31.xml
> >new file mode 100644
> >index 0000000000..6ab5e6ad1a
> >--- /dev/null
> >+++ b/tests/bhyvexml2xmloutdata/bhyvexml2xmlout-addr-isa-controller-on-slot-31.xml
> >@@ -0,0 +1,36 @@
> >+<domain type='bhyve'>
> >+ <name>bhyve</name>
> >+ <uuid>df3be7e7-a104-11e3-aeb0-50e5492bd3dc</uuid>
> >+ <memory unit='KiB'>219136</memory>
> >+ <currentMemory unit='KiB'>219136</currentMemory>
> >+ <vcpu placement='static'>1</vcpu>
> >+ <os>
> >+ <type arch='x86_64'>hvm</type>
> >+ <boot dev='hd'/>
> >+ </os>
> >+ <clock offset='utc'/>
> >+ <on_poweroff>destroy</on_poweroff>
> >+ <on_reboot>restart</on_reboot>
> >+ <on_crash>destroy</on_crash>
> >+ <devices>
> >+ <disk type='file' device='disk'>
> >+ <driver name='file' type='raw'/>
> >+ <source file='/tmp/freebsd.img'/>
> >+ <target dev='hda' bus='sata'/>
> >+ <address type='drive' controller='0' bus='0' target='2' unit='0'/>
> >+ </disk>
> >+ <controller type='isa' index='1' model='isa-bridge'>
> >+ <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x0'/>
> >+ </controller>
> >+ <controller type='pci' index='0' model='pci-root'/>
> >+ <controller type='sata' index='0'>
> >+ <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
> >+ </controller>
> >+ <interface type='bridge'>
> >+ <mac address='52:54:00:b9:94:02'/>
> >+ <source bridge='virbr0'/>
> >+ <model type='virtio'/>
> >+ <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
> >+ </interface>
> >+ </devices>
> >+</domain>
> >diff --git a/tests/bhyvexml2xmloutdata/bhyvexml2xmlout-isa-controller.xml b/tests/bhyvexml2xmloutdata/bhyvexml2xmlout-isa-controller.xml
> >new file mode 100644
> >index 0000000000..db84185fe6
> >--- /dev/null
> >+++ b/tests/bhyvexml2xmloutdata/bhyvexml2xmlout-isa-controller.xml
> >@@ -0,0 +1,36 @@
> >+<domain type='bhyve'>
> >+ <name>bhyve</name>
> >+ <uuid>df3be7e7-a104-11e3-aeb0-50e5492bd3dc</uuid>
> >+ <memory unit='KiB'>219136</memory>
> >+ <currentMemory unit='KiB'>219136</currentMemory>
> >+ <vcpu placement='static'>1</vcpu>
> >+ <os>
> >+ <type arch='x86_64'>hvm</type>
> >+ <boot dev='hd'/>
> >+ </os>
> >+ <clock offset='utc'/>
> >+ <on_poweroff>destroy</on_poweroff>
> >+ <on_reboot>restart</on_reboot>
> >+ <on_crash>destroy</on_crash>
> >+ <devices>
> >+ <disk type='file' device='disk'>
> >+ <driver name='file' type='raw'/>
> >+ <source file='/tmp/freebsd.img'/>
> >+ <target dev='hda' bus='sata'/>
> >+ <address type='drive' controller='0' bus='0' target='2' unit='0'/>
> >+ </disk>
> >+ <controller type='isa' index='1' model='isa-bridge'>
> >+ <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
> >+ </controller>
> >+ <controller type='pci' index='0' model='pci-root'/>
> >+ <controller type='sata' index='0'>
> >+ <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
> >+ </controller>
> >+ <interface type='bridge'>
> >+ <mac address='52:54:00:b9:94:02'/>
> >+ <source bridge='virbr0'/>
> >+ <model type='virtio'/>
> >+ <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
> >+ </interface>
> >+ </devices>
> >+</domain>
> >diff --git a/tests/bhyvexml2xmltest.c b/tests/bhyvexml2xmltest.c
> >index ed421b8839..4b7f59ea29 100644
> >--- a/tests/bhyvexml2xmltest.c
> >+++ b/tests/bhyvexml2xmltest.c
> >@@ -111,6 +111,7 @@ mymain(void)
> > DO_TEST_DIFFERENT("vnc-vgaconf-io");
> > DO_TEST_DIFFERENT("vnc-autoport");
> > DO_TEST_DIFFERENT("commandline");
> >+ DO_TEST_DIFFERENT("isa-controller");
> >
> > /* Address allocation tests */
> > DO_TEST_DIFFERENT("addr-single-sata-disk");
> >@@ -118,6 +119,8 @@ mymain(void)
> > DO_TEST_DIFFERENT("addr-more-than-32-sata-disks");
> > DO_TEST_DIFFERENT("addr-single-virtio-disk");
> > DO_TEST_DIFFERENT("addr-multiple-virtio-disks");
> >+ DO_TEST_DIFFERENT("addr-isa-controller-on-slot-1");
> >+ DO_TEST_DIFFERENT("addr-isa-controller-on-slot-31");
> >
> > /* The same without 32 devs per controller support */
> > driver.bhyvecaps ^= BHYVE_CAP_AHCI32SLOT;
> >--
> >2.20.1
> >
> >--
> >libvir-list mailing list
> >libvir-list at redhat.com
> >https://www.redhat.com/mailman/listinfo/libvir-list
Roman Bogorodskiy
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 455 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20190303/785b68ba/attachment-0001.sig>
More information about the libvir-list
mailing list