Introduce 'isa' controller type. The only supported model
now is 'isa-bridge'. In domain XML it looks this way:
...
<controller type='isa' index='1' model='isa-bridge'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01'
function='0x0'/>
</controller>
...
Currently, this is needed for the bhyve driver to allow choosing a
specific PCI address for that. In bhyve, this controller is used to
attach serial ports and a boot ROM.
Signed-off-by: Roman Bogorodskiy <bogorodskiy@gmail.com>
---
docs/schemas/domaincommon.rng | 13 +++++++++++++
src/conf/domain_conf.c | 10 ++++++++++
src/conf/domain_conf.h | 9 +++++++++
src/qemu/qemu_command.c | 1 +
src/qemu/qemu_domain.c | 2 ++
src/qemu/qemu_domain_address.c | 1 +
src/vbox/vbox_common.c | 1 +
7 files changed, 37 insertions(+)
diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
index ba80440c72..2bf67eaa5a 100644
--- a/docs/schemas/domaincommon.rng
+++ b/docs/schemas/domaincommon.rng
@@ -2201,6 +2201,19 @@
</attribute>
</optional>
</group>
+ <!-- isa has an optional attribute "model" -->
+ <group>
+ <attribute name="type">
+ <value>isa</value>
+ </attribute>
+ <optional>
+ <attribute name="model">
+ <choice>
+ <value>isa-bridge</value>
+ </choice>
+ </attribute>
+ </optional>
+ </group>
<!-- pci has an optional attribute "model" -->
<group>
<attribute name="type">
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index cd69323f28..4d5fbed6f4 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -341,6 +341,7 @@ VIR_ENUM_IMPL(virDomainController, VIR_DOMAIN_CONTROLLER_TYPE_LAST,
"ccid",
"usb",
"pci",
+ "isa",
);
VIR_ENUM_IMPL(virDomainControllerModelPCI, VIR_DOMAIN_CONTROLLER_MODEL_PCI_LAST,
@@ -404,6 +405,10 @@ VIR_ENUM_IMPL(virDomainControllerModelIDE, VIR_DOMAIN_CONTROLLER_MODEL_IDE_LAST,
"ich6",
);
+VIR_ENUM_IMPL(virDomainControllerModelISA, VIR_DOMAIN_CONTROLLER_MODEL_ISA_LAST,
+ "isa-bridge",
+);
+
VIR_ENUM_IMPL(virDomainFS, VIR_DOMAIN_FS_TYPE_LAST,
"mount",
"block",
@@ -2041,6 +2046,7 @@ virDomainControllerDefNew(virDomainControllerType type)
case VIR_DOMAIN_CONTROLLER_TYPE_SCSI:
case VIR_DOMAIN_CONTROLLER_TYPE_SATA:
case VIR_DOMAIN_CONTROLLER_TYPE_CCID:
+ case VIR_DOMAIN_CONTROLLER_TYPE_ISA:
case VIR_DOMAIN_CONTROLLER_TYPE_LAST:
break;
}
@@ -10445,6 +10451,8 @@ virDomainControllerModelTypeFromString(const virDomainControllerDef *def,
return virDomainControllerModelPCITypeFromString(model);
else if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_IDE)
return virDomainControllerModelIDETypeFromString(model);
+ else if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_ISA)
+ return virDomainControllerModelISATypeFromString(model);
return -1;
}
@@ -10462,6 +10470,8 @@ virDomainControllerModelTypeToString(virDomainControllerDefPtr def,
return virDomainControllerModelPCITypeToString(model);
else if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_IDE)
return virDomainControllerModelIDETypeToString(model);
+ else if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_ISA)
+ return virDomainControllerModelISATypeToString(model);
return NULL;
}
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index 2bc3f879f7..3c595aab62 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -687,6 +687,7 @@ typedef enum {
VIR_DOMAIN_CONTROLLER_TYPE_CCID,
VIR_DOMAIN_CONTROLLER_TYPE_USB,
VIR_DOMAIN_CONTROLLER_TYPE_PCI,
+ VIR_DOMAIN_CONTROLLER_TYPE_ISA,
VIR_DOMAIN_CONTROLLER_TYPE_LAST
} virDomainControllerType;
@@ -767,6 +768,13 @@ typedef enum {
VIR_DOMAIN_CONTROLLER_MODEL_IDE_LAST
} virDomainControllerModelIDE;
+typedef enum {
+ VIR_DOMAIN_CONTROLLER_MODEL_ISA_DEFAULT = -1,
+ VIR_DOMAIN_CONTROLLER_MODEL_ISA_BRIDGE,
+
+ VIR_DOMAIN_CONTROLLER_MODEL_ISA_LAST
+} virDomainControllerModelISA;
+
# define IS_USB2_CONTROLLER(ctrl) \
(((ctrl)->type == VIR_DOMAIN_CONTROLLER_TYPE_USB) && \
((ctrl)->model == VIR_DOMAIN_CONTROLLER_MODEL_USB_ICH9_EHCI1 || \
@@ -3423,6 +3431,7 @@ VIR_ENUM_DECL(virDomainControllerPCIModelName);
VIR_ENUM_DECL(virDomainControllerModelSCSI);
VIR_ENUM_DECL(virDomainControllerModelUSB);
VIR_ENUM_DECL(virDomainControllerModelIDE);
+VIR_ENUM_DECL(virDomainControllerModelISA);
VIR_ENUM_DECL(virDomainFS);
VIR_ENUM_DECL(virDomainFSDriver);
VIR_ENUM_DECL(virDomainFSAccessMode);
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index f511193fca..7203a2762c 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -3024,6 +3024,7 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef,
case VIR_DOMAIN_CONTROLLER_TYPE_IDE:
case VIR_DOMAIN_CONTROLLER_TYPE_FDC:
+ case VIR_DOMAIN_CONTROLLER_TYPE_ISA:
case VIR_DOMAIN_CONTROLLER_TYPE_LAST:
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("Unsupported controller type: %s"),
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index ac01e861f7..306f957eb7 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -5851,6 +5851,7 @@ qemuDomainDeviceDefValidateController(const virDomainControllerDef *controller,
case VIR_DOMAIN_CONTROLLER_TYPE_VIRTIO_SERIAL:
case VIR_DOMAIN_CONTROLLER_TYPE_CCID:
case VIR_DOMAIN_CONTROLLER_TYPE_USB:
+ case VIR_DOMAIN_CONTROLLER_TYPE_ISA:
case VIR_DOMAIN_CONTROLLER_TYPE_LAST:
break;
}
@@ -6469,6 +6470,7 @@ qemuDomainControllerDefPostParse(virDomainControllerDefPtr cont,
case VIR_DOMAIN_CONTROLLER_TYPE_CCID:
case VIR_DOMAIN_CONTROLLER_TYPE_IDE:
case VIR_DOMAIN_CONTROLLER_TYPE_FDC:
+ case VIR_DOMAIN_CONTROLLER_TYPE_ISA:
case VIR_DOMAIN_CONTROLLER_TYPE_LAST:
break;
}
diff --git a/src/qemu/qemu_domain_address.c b/src/qemu/qemu_domain_address.c
index 32fdd59566..3e072ee8fd 100644
--- a/src/qemu/qemu_domain_address.c
+++ b/src/qemu/qemu_domain_address.c
@@ -669,6 +669,7 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDeviceDefPtr dev,
case VIR_DOMAIN_CONTROLLER_TYPE_FDC:
case VIR_DOMAIN_CONTROLLER_TYPE_CCID:
+ case VIR_DOMAIN_CONTROLLER_TYPE_ISA:
case VIR_DOMAIN_CONTROLLER_TYPE_LAST:
/* should be 0 */
return pciFlags;
diff --git a/src/vbox/vbox_common.c b/src/vbox/vbox_common.c
index 664650f217..6b75a127f8 100644
--- a/src/vbox/vbox_common.c
+++ b/src/vbox/vbox_common.c
@@ -377,6 +377,7 @@ vboxSetStorageController(virDomainControllerDefPtr controller,
case VIR_DOMAIN_CONTROLLER_TYPE_CCID:
case VIR_DOMAIN_CONTROLLER_TYPE_USB:
case VIR_DOMAIN_CONTROLLER_TYPE_PCI:
+ case VIR_DOMAIN_CONTROLLER_TYPE_ISA:
case VIR_DOMAIN_CONTROLLER_TYPE_LAST:
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("The vbox driver does not support %s controller type"),
--
2.20.1
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
On Sun, Feb 17, 2019 at 05:04:00PM +0400, Roman Bogorodskiy wrote: >Introduce 'isa' controller type. The only supported model >now is 'isa-bridge'. In domain XML it looks this way: > > ... > <controller type='isa' index='1' model='isa-bridge'> > <address type='pci' domain='0x0000' bus='0x00' slot='0x01' > function='0x0'/> > </controller> > ... > >Currently, this is needed for the bhyve driver to allow choosing a >specific PCI address for that. In bhyve, this controller is used to >attach serial ports and a boot ROM. > >Signed-off-by: Roman Bogorodskiy <bogorodskiy@gmail.com> >--- > docs/schemas/domaincommon.rng | 13 +++++++++++++ > src/conf/domain_conf.c | 10 ++++++++++ > src/conf/domain_conf.h | 9 +++++++++ This esentially implements the parser and formatter for the controller, so the XML to XML test addition should be a part of it. > src/qemu/qemu_command.c | 1 + > src/qemu/qemu_domain.c | 2 ++ > src/qemu/qemu_domain_address.c | 1 + > src/vbox/vbox_common.c | 1 + > 7 files changed, 37 insertions(+) > >diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng >index ba80440c72..2bf67eaa5a 100644 >--- a/docs/schemas/domaincommon.rng >+++ b/docs/schemas/domaincommon.rng >@@ -2201,6 +2201,19 @@ > </attribute> > </optional> > </group> >+ <!-- isa has an optional attribute "model" --> I sincerely hope nobody will ever need to specify the model for an ISA controller. >+ <group> >+ <attribute name="type"> >+ <value>isa</value> >+ </attribute> >+ <optional> >+ <attribute name="model"> >+ <choice> >+ <value>isa-bridge</value> >+ </choice> >+ </attribute> >+ </optional> This would not be needed then. >+ </group> > <!-- pci has an optional attribute "model" --> > <group> > <attribute name="type"> -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Ján Tomko wrote: > On Sun, Feb 17, 2019 at 05:04:00PM +0400, Roman Bogorodskiy wrote: > >Introduce 'isa' controller type. The only supported model > >now is 'isa-bridge'. In domain XML it looks this way: > > > > ... > > <controller type='isa' index='1' model='isa-bridge'> > > <address type='pci' domain='0x0000' bus='0x00' slot='0x01' > > function='0x0'/> > > </controller> > > ... > > > >Currently, this is needed for the bhyve driver to allow choosing a > >specific PCI address for that. In bhyve, this controller is used to > >attach serial ports and a boot ROM. > > > >Signed-off-by: Roman Bogorodskiy <bogorodskiy@gmail.com> > >--- > > docs/schemas/domaincommon.rng | 13 +++++++++++++ > > src/conf/domain_conf.c | 10 ++++++++++ > > src/conf/domain_conf.h | 9 +++++++++ > > This esentially implements the parser and formatter for the controller, > so the XML to XML test addition should be a part of it. In this case I'm inclined to squash three patches together: this one is fairly small (will be even smaller with the model attr dropped), and the automatic addition of the isa controller is also fairly small. > > src/qemu/qemu_command.c | 1 + > > src/qemu/qemu_domain.c | 2 ++ > > src/qemu/qemu_domain_address.c | 1 + > > src/vbox/vbox_common.c | 1 + > > 7 files changed, 37 insertions(+) > > > >diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng > >index ba80440c72..2bf67eaa5a 100644 > >--- a/docs/schemas/domaincommon.rng > >+++ b/docs/schemas/domaincommon.rng > >@@ -2201,6 +2201,19 @@ > > </attribute> > > </optional> > > </group> > >+ <!-- isa has an optional attribute "model" --> > > I sincerely hope nobody will ever need to specify the model for an ISA > controller. > > >+ <group> > >+ <attribute name="type"> > >+ <value>isa</value> > >+ </attribute> > > >+ <optional> > >+ <attribute name="model"> > >+ <choice> > >+ <value>isa-bridge</value> > >+ </choice> > >+ </attribute> > >+ </optional> > > This would not be needed then. > > >+ </group> > > <!-- pci has an optional attribute "model" --> > > <group> > > <attribute name="type"> Roman Bogorodskiy -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
© 2016 - 2026 Red Hat, Inc.