mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 05:35:25 +00:00
bhyve: support 'isa' controller for LPC
Support modeling of the 'isa' controller for bhyve. 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. When domain configuration requires the 'isa' controller to be present, automatically add it on domain post-parse stage. Now, as this controller is always available when needed, it's not necessary to implicitly add it to the bhyve command line, so remove bhyveBuildLPCArgStr(). Also, make bhyveDomainDefNeedsISAController() static as it's no longer used outside of bhyve_domain.c. As more than one ISA controller is not supported by bhyve, and multiple controllers with the same index are forbidden, so forbid ISA controllers with non-zero index for bhyve. Signed-off-by: Roman Bogorodskiy <bogorodskiy@gmail.com> Reviewed-by: Ján Tomko <jtomko@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
parent
f787df9947
commit
16a2882350
@ -329,7 +329,8 @@ bhyveBuildControllerArgStr(const virDomainDef *def,
|
||||
virDomainControllerDefPtr controller,
|
||||
bhyveConnPtr driver,
|
||||
virCommandPtr cmd,
|
||||
unsigned *nusbcontrollers)
|
||||
unsigned *nusbcontrollers,
|
||||
unsigned *nisacontrollers)
|
||||
{
|
||||
switch (controller->type) {
|
||||
case VIR_DOMAIN_CONTROLLER_TYPE_PCI:
|
||||
@ -354,15 +355,17 @@ bhyveBuildControllerArgStr(const virDomainDef *def,
|
||||
if (bhyveBuildUSBControllerArgStr(def, controller, cmd) < 0)
|
||||
return -1;
|
||||
break;
|
||||
case VIR_DOMAIN_CONTROLLER_TYPE_ISA:
|
||||
if (++*nisacontrollers > 1) {
|
||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
"%s", _("only single ISA controller is supported"));
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
virCommandAddArg(cmd, "-s");
|
||||
virCommandAddArgFormat(cmd, "%d:0,lpc",
|
||||
controller->info.addr.pci.slot);
|
||||
break;
|
||||
}
|
||||
|
||||
static int
|
||||
bhyveBuildLPCArgStr(const virDomainDef *def G_GNUC_UNUSED,
|
||||
virCommandPtr cmd)
|
||||
{
|
||||
virCommandAddArgList(cmd, "-s", "1,lpc", NULL);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -545,6 +548,7 @@ virBhyveProcessBuildBhyveCmd(bhyveConnPtr driver, virDomainDefPtr def,
|
||||
virCommandPtr cmd = virCommandNew(BHYVE);
|
||||
size_t i;
|
||||
unsigned nusbcontrollers = 0;
|
||||
unsigned nisacontrollers = 0;
|
||||
unsigned nvcpus = virDomainDefGetVcpus(def);
|
||||
|
||||
/* CPUs */
|
||||
@ -650,7 +654,7 @@ virBhyveProcessBuildBhyveCmd(bhyveConnPtr driver, virDomainDefPtr def,
|
||||
/* Devices */
|
||||
for (i = 0; i < def->ncontrollers; i++) {
|
||||
if (bhyveBuildControllerArgStr(def, def->controllers[i], driver, cmd,
|
||||
&nusbcontrollers) < 0)
|
||||
&nusbcontrollers, &nisacontrollers) < 0)
|
||||
goto error;
|
||||
}
|
||||
for (i = 0; i < def->nnets; i++) {
|
||||
@ -681,9 +685,6 @@ virBhyveProcessBuildBhyveCmd(bhyveConnPtr driver, virDomainDefPtr def,
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (bhyveDomainDefNeedsISAController(def))
|
||||
bhyveBuildLPCArgStr(def, cmd);
|
||||
|
||||
if (bhyveBuildConsoleArgStr(def, cmd) < 0)
|
||||
goto error;
|
||||
|
||||
|
@ -46,10 +46,16 @@ bhyveCollectPCIAddress(virDomainDefPtr def G_GNUC_UNUSED,
|
||||
if (addr->slot == 0) {
|
||||
return 0;
|
||||
} else if (addr->slot == 1) {
|
||||
if (!(device->type == VIR_DOMAIN_DEVICE_CONTROLLER &&
|
||||
device->data.controller->type == VIR_DOMAIN_CONTROLLER_TYPE_ISA)) {
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -101,6 +107,15 @@ bhyveAssignDevicePCISlots(virDomainDefPtr def,
|
||||
return -1;
|
||||
}
|
||||
|
||||
for (i = 0; i < def->ncontrollers; i++) {
|
||||
if ((def->controllers[i]->type == VIR_DOMAIN_CONTROLLER_TYPE_ISA) &&
|
||||
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) ||
|
||||
|
@ -59,13 +59,13 @@ virDomainXMLPrivateDataCallbacks virBhyveDriverPrivateDataCallbacks = {
|
||||
.free = bhyveDomainObjPrivateFree,
|
||||
};
|
||||
|
||||
bool
|
||||
static bool
|
||||
bhyveDomainDefNeedsISAController(virDomainDefPtr def)
|
||||
{
|
||||
if (def->os.bootloader == NULL && def->os.loader)
|
||||
return true;
|
||||
|
||||
if (def->nserials)
|
||||
if (def->nserials || def->nconsoles)
|
||||
return true;
|
||||
|
||||
if (def->ngraphics && def->nvideos)
|
||||
@ -95,6 +95,11 @@ bhyveDomainDefPostParse(virDomainDefPtr def,
|
||||
VIR_DOMAIN_CONTROLLER_MODEL_PCI_ROOT) < 0)
|
||||
return -1;
|
||||
|
||||
if (bhyveDomainDefNeedsISAController(def))
|
||||
if (virDomainDefMaybeAddController(def, VIR_DOMAIN_CONTROLLER_TYPE_ISA, 0,
|
||||
VIR_DOMAIN_CONTROLLER_MODEL_ISA_DEFAULT) < 0)
|
||||
return -1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -191,10 +196,26 @@ virBhyveDriverCreateXMLConf(bhyveConnPtr driver)
|
||||
NULL, NULL);
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
bhyveDomainDeviceDefValidate(const virDomainDeviceDef *dev,
|
||||
const virDomainDef *def G_GNUC_UNUSED,
|
||||
void *opaque G_GNUC_UNUSED)
|
||||
{
|
||||
if (dev->type == VIR_DOMAIN_DEVICE_CONTROLLER &&
|
||||
dev->data.controller->type == VIR_DOMAIN_CONTROLLER_TYPE_ISA &&
|
||||
dev->data.controller->idx != 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
virDomainDefParserConfig virBhyveDriverDomainDefParserConfig = {
|
||||
.devicesPostParseCallback = bhyveDomainDeviceDefPostParse,
|
||||
.domainPostParseCallback = bhyveDomainDefPostParse,
|
||||
.assignAddressesCallback = bhyveDomainDefAssignAddresses,
|
||||
.deviceValidateCallback = bhyveDomainDeviceDefValidate,
|
||||
};
|
||||
|
||||
static void
|
||||
|
@ -39,5 +39,3 @@ virDomainXMLOptionPtr virBhyveDriverCreateXMLConf(bhyveConnPtr);
|
||||
extern virDomainXMLPrivateDataCallbacks virBhyveDriverPrivateDataCallbacks;
|
||||
extern virDomainDefParserConfig virBhyveDriverDomainDefParserConfig;
|
||||
extern virXMLNamespace virBhyveDriverDomainXMLNamespace;
|
||||
|
||||
bool bhyveDomainDefNeedsISAController(virDomainDefPtr def);
|
||||
|
@ -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
|
@ -0,0 +1,3 @@
|
||||
/usr/sbin/bhyveload \
|
||||
-m 214 \
|
||||
-d /tmp/freebsd.img bhyve
|
@ -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='0'>
|
||||
<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>
|
@ -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
|
@ -0,0 +1,3 @@
|
||||
/usr/sbin/bhyveload \
|
||||
-m 214 \
|
||||
-d /tmp/freebsd.img bhyve
|
@ -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='0'>
|
||||
<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>
|
@ -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>
|
@ -5,7 +5,7 @@
|
||||
-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:b1:42:eb \
|
||||
-s 1,lpc \
|
||||
-l com1,/dev/nmdm0A bhyve
|
||||
|
10
tests/bhyvexml2argvdata/bhyvexml2argv-isa-controller.args
Normal file
10
tests/bhyvexml2argvdata/bhyvexml2argv-isa-controller.args
Normal file
@ -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
|
@ -0,0 +1,3 @@
|
||||
/usr/sbin/bhyveload \
|
||||
-m 214 \
|
||||
-d /tmp/freebsd.img bhyve
|
24
tests/bhyvexml2argvdata/bhyvexml2argv-isa-controller.xml
Normal file
24
tests/bhyvexml2argvdata/bhyvexml2argv-isa-controller.xml
Normal file
@ -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='0'/>
|
||||
<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>
|
@ -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'/>
|
||||
<controller type='isa' index='2'/>
|
||||
<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>
|
@ -5,7 +5,7 @@
|
||||
-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:a7:cd:5b \
|
||||
-s 1,lpc \
|
||||
-l com1,/dev/nmdm0A bhyve
|
||||
|
@ -5,7 +5,7 @@
|
||||
-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:f0:72:11 \
|
||||
-s 1,lpc \
|
||||
-l com1,/dev/nmdm0A bhyve
|
||||
|
@ -5,7 +5,7 @@
|
||||
-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:4f:f3:5b \
|
||||
-s 1,lpc \
|
||||
-l com1,/dev/nmdm0A bhyve
|
||||
|
@ -6,6 +6,6 @@
|
||||
-P \
|
||||
-s 0:0,hostbridge \
|
||||
-l bootrom,/path/to/test.fd \
|
||||
-s 1:0,lpc \
|
||||
-s 2:0,ahci,hd:/tmp/freebsd.img \
|
||||
-s 3:0,virtio-net,faketapdev,mac=52:54:00:00:00:00 \
|
||||
-s 1,lpc bhyve
|
||||
-s 3:0,virtio-net,faketapdev,mac=52:54:00:00:00:00 bhyve
|
||||
|
@ -6,7 +6,7 @@
|
||||
-P \
|
||||
-s 0:0,hostbridge \
|
||||
-l bootrom,/path/to/test.fd \
|
||||
-s 1:0,lpc \
|
||||
-s 2:0,ahci,hd:/tmp/freebsd.img \
|
||||
-s 3:0,virtio-net,faketapdev,mac=52:54:00:00:00:00 \
|
||||
-s 4:0,fbuf,tcp=127.0.0.1:5900 \
|
||||
-s 1,lpc bhyve
|
||||
-s 4:0,fbuf,tcp=127.0.0.1:5900 bhyve
|
||||
|
@ -6,7 +6,7 @@
|
||||
-P \
|
||||
-s 0:0,hostbridge \
|
||||
-l bootrom,/path/to/test.fd \
|
||||
-s 1:0,lpc \
|
||||
-s 2:0,ahci,hd:/tmp/freebsd.img \
|
||||
-s 3:0,virtio-net,faketapdev,mac=52:54:00:00:00:00 \
|
||||
-s 4:0,fbuf,tcp=127.0.0.1:5904,vga=io \
|
||||
-s 1,lpc bhyve
|
||||
-s 4:0,fbuf,tcp=127.0.0.1:5904,vga=io bhyve
|
||||
|
@ -6,7 +6,7 @@
|
||||
-P \
|
||||
-s 0:0,hostbridge \
|
||||
-l bootrom,/path/to/test.fd \
|
||||
-s 1:0,lpc \
|
||||
-s 2:0,ahci,hd:/tmp/freebsd.img \
|
||||
-s 3:0,virtio-net,faketapdev,mac=52:54:00:00:00:00 \
|
||||
-s 4:0,fbuf,tcp=127.0.0.1:5904,vga=off \
|
||||
-s 1,lpc bhyve
|
||||
-s 4:0,fbuf,tcp=127.0.0.1:5904,vga=off bhyve
|
||||
|
@ -6,7 +6,7 @@
|
||||
-P \
|
||||
-s 0:0,hostbridge \
|
||||
-l bootrom,/path/to/test.fd \
|
||||
-s 1:0,lpc \
|
||||
-s 2:0,ahci,hd:/tmp/freebsd.img \
|
||||
-s 3:0,virtio-net,faketapdev,mac=52:54:00:00:00:00 \
|
||||
-s 4:0,fbuf,tcp=127.0.0.1:5904,vga=on \
|
||||
-s 1,lpc bhyve
|
||||
-s 4:0,fbuf,tcp=127.0.0.1:5904,vga=on bhyve
|
||||
|
@ -6,7 +6,7 @@
|
||||
-P \
|
||||
-s 0:0,hostbridge \
|
||||
-l bootrom,/path/to/test.fd \
|
||||
-s 1:0,lpc \
|
||||
-s 2:0,ahci,hd:/tmp/freebsd.img \
|
||||
-s 3:0,virtio-net,faketapdev,mac=52:54:00:00:00:00 \
|
||||
-s 4:0,fbuf,tcp=127.0.0.1:5904 \
|
||||
-s 1,lpc bhyve
|
||||
-s 4:0,fbuf,tcp=127.0.0.1:5904 bhyve
|
||||
|
@ -202,6 +202,8 @@ mymain(void)
|
||||
DO_TEST("commandline");
|
||||
DO_TEST("msrs");
|
||||
DO_TEST("sound");
|
||||
DO_TEST("isa-controller");
|
||||
DO_TEST_FAILURE("isa-multiple-controllers");
|
||||
|
||||
/* Address allocation tests */
|
||||
DO_TEST("addr-single-sata-disk");
|
||||
@ -209,6 +211,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;
|
||||
|
@ -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='0'>
|
||||
<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>
|
@ -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='0'>
|
||||
<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>
|
@ -20,6 +20,9 @@
|
||||
<address type='drive' controller='0' bus='0' target='2' unit='0'/>
|
||||
</disk>
|
||||
<controller type='pci' index='0' model='pci-root'/>
|
||||
<controller type='isa' index='0'>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
|
||||
</controller>
|
||||
<controller type='sata' index='0'>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
|
||||
</controller>
|
||||
|
36
tests/bhyvexml2xmloutdata/bhyvexml2xmlout-isa-controller.xml
Normal file
36
tests/bhyvexml2xmloutdata/bhyvexml2xmlout-isa-controller.xml
Normal file
@ -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='0'>
|
||||
<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>
|
@ -20,6 +20,9 @@
|
||||
<address type='drive' controller='0' bus='0' target='2' unit='0'/>
|
||||
</disk>
|
||||
<controller type='pci' index='0' model='pci-root'/>
|
||||
<controller type='isa' index='0'>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
|
||||
</controller>
|
||||
<controller type='sata' index='0'>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
|
||||
</controller>
|
||||
|
@ -20,6 +20,9 @@
|
||||
<address type='drive' controller='0' bus='0' target='2' unit='0'/>
|
||||
</disk>
|
||||
<controller type='pci' index='0' model='pci-root'/>
|
||||
<controller type='isa' index='0'>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
|
||||
</controller>
|
||||
<controller type='sata' index='0'>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
|
||||
</controller>
|
||||
|
@ -20,6 +20,9 @@
|
||||
<address type='drive' controller='0' bus='0' target='2' unit='0'/>
|
||||
</disk>
|
||||
<controller type='pci' index='0' model='pci-root'/>
|
||||
<controller type='isa' index='0'>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
|
||||
</controller>
|
||||
<controller type='sata' index='0'>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
|
||||
</controller>
|
||||
|
@ -21,6 +21,9 @@
|
||||
<address type='drive' controller='0' bus='0' target='2' unit='0'/>
|
||||
</disk>
|
||||
<controller type='pci' index='0' model='pci-root'/>
|
||||
<controller type='isa' index='0'>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
|
||||
</controller>
|
||||
<controller type='sata' index='0'>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
|
||||
</controller>
|
||||
|
@ -21,6 +21,9 @@
|
||||
<address type='drive' controller='0' bus='0' target='2' unit='0'/>
|
||||
</disk>
|
||||
<controller type='pci' index='0' model='pci-root'/>
|
||||
<controller type='isa' index='0'>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
|
||||
</controller>
|
||||
<controller type='sata' index='0'>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
|
||||
</controller>
|
||||
|
@ -21,6 +21,9 @@
|
||||
<address type='drive' controller='0' bus='0' target='2' unit='0'/>
|
||||
</disk>
|
||||
<controller type='pci' index='0' model='pci-root'/>
|
||||
<controller type='isa' index='0'>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
|
||||
</controller>
|
||||
<controller type='sata' index='0'>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
|
||||
</controller>
|
||||
|
@ -21,6 +21,9 @@
|
||||
<address type='drive' controller='0' bus='0' target='2' unit='0'/>
|
||||
</disk>
|
||||
<controller type='pci' index='0' model='pci-root'/>
|
||||
<controller type='isa' index='0'>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
|
||||
</controller>
|
||||
<controller type='sata' index='0'>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
|
||||
</controller>
|
||||
|
@ -21,6 +21,9 @@
|
||||
<address type='drive' controller='0' bus='0' target='2' unit='0'/>
|
||||
</disk>
|
||||
<controller type='pci' index='0' model='pci-root'/>
|
||||
<controller type='isa' index='0'>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
|
||||
</controller>
|
||||
<controller type='sata' index='0'>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
|
||||
</controller>
|
||||
|
@ -109,6 +109,7 @@ mymain(void)
|
||||
DO_TEST_DIFFERENT("commandline");
|
||||
DO_TEST_DIFFERENT("msrs");
|
||||
DO_TEST_DIFFERENT("sound");
|
||||
DO_TEST_DIFFERENT("isa-controller");
|
||||
|
||||
/* Address allocation tests */
|
||||
DO_TEST_DIFFERENT("addr-single-sata-disk");
|
||||
@ -116,6 +117,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;
|
||||
|
Loading…
Reference in New Issue
Block a user