This adds modeling of the pci-isa bridge device for bhyve to make
it possible to assign specific PCI address for instead of the default
PCI slot 0.
I tried to keep the existing behaviour, i.e. the isa-bridge controller
is automatically added to domain if it uses serial or video devices, or
boot ROM. It also tries to assign pci slot 1 for it, that should not
be a problem because previously that address was always reserved for
the isa-bridge, so it definitely wasn't used by other devices.
Now, however, it's not always reserved. For example, if there are no
devices in the domain configuration that require isa-bridge, and
users didn't explicitly add it (or added that on a different slot),
then PCI slot 1 is available for allocation. This probably can be a
problem for users when they figure out that they still need to add the
isa-bridge device on slot 1, but it's already used, but I'm not sure
if it's worth to always reserve slot 1 for that purpose.
Roman Bogorodskiy (4):
conf: add 'isa-bridge' PCI controller model
bhyve: model PCI ISA bridge
docs: bhyve: document isa-bridge addressing
news: document bhyve isa-bridge changes
docs/drvbhyve.html.in | 22 +++++++++
docs/news.xml | 10 ++++
docs/schemas/domaincommon.rng | 1 +
src/bhyve/bhyve_command.c | 32 +++++--------
src/bhyve/bhyve_device.c | 47 ++++++++++++-------
src/bhyve/bhyve_domain.c | 6 +++
src/conf/domain_addr.c | 10 ++++
src/conf/domain_addr.h | 4 +-
src/conf/domain_conf.c | 2 +
src/conf/domain_conf.h | 1 +
src/qemu/qemu_command.c | 1 +
src/qemu/qemu_domain.c | 9 ++++
src/qemu/qemu_domain_address.c | 2 +
.../bhyvexml2argv-acpiapic.args | 2 +-
...xml2argv-addr-more-than-32-sata-disks.args | 6 +--
...hyvexml2argv-addr-multiple-sata-disks.args | 4 +-
...vexml2argv-addr-multiple-virtio-disks.args | 6 +--
...rgv-addr-no32devs-multiple-sata-disks.args | 6 +--
...l2argv-addr-no32devs-single-sata-disk.args | 4 +-
.../bhyvexml2argv-addr-single-sata-disk.args | 4 +-
...bhyvexml2argv-addr-single-virtio-disk.args | 2 +-
...vexml2argv-addr-slot-1-and-31-not-lpc.args | 10 ++++
...xml2argv-addr-slot-1-and-31-not-lpc.ldargs | 3 ++
...yvexml2argv-addr-slot-1-and-31-not-lpc.xml | 27 +++++++++++
.../bhyvexml2argv-addr-slot-1-not-lpc.args | 10 ++++
.../bhyvexml2argv-addr-slot-1-not-lpc.ldargs | 3 ++
.../bhyvexml2argv-addr-slot-1-not-lpc.xml | 27 +++++++++++
.../bhyvexml2argvdata/bhyvexml2argv-base.args | 2 +-
.../bhyvexml2argv-bhyveload-bootorder.args | 2 +-
.../bhyvexml2argv-bhyveload-bootorder1.args | 2 +-
.../bhyvexml2argv-bhyveload-bootorder3.args | 2 +-
.../bhyvexml2argv-bhyveload-explicitargs.args | 2 +-
.../bhyvexml2argv-commandline.args | 2 +-
.../bhyvexml2argv-console.args | 2 +-
.../bhyvexml2argv-cputopology.args | 2 +-
.../bhyvexml2argv-custom-loader.args | 2 +-
.../bhyvexml2argv-disk-cdrom-grub.args | 2 +-
.../bhyvexml2argv-disk-cdrom.args | 2 +-
.../bhyvexml2argv-explicit-lpc.args | 10 ++++
.../bhyvexml2argv-explicit-lpc.ldargs | 3 ++
.../bhyvexml2argv-explicit-lpc.xml | 26 ++++++++++
.../bhyvexml2argv-grub-bootorder.args | 2 +-
.../bhyvexml2argv-grub-bootorder2.args | 2 +-
.../bhyvexml2argv-grub-defaults.args | 2 +-
.../bhyvexml2argv-input-xhci-tablet.args | 4 +-
.../bhyvexml2argv-localtime.args | 2 +-
.../bhyvexml2argv-macaddr.args | 2 +-
.../bhyvexml2argv-net-e1000.args | 2 +-
.../bhyvexml2argv-serial-grub-nocons.args | 2 +-
.../bhyvexml2argv-serial-grub.args | 2 +-
.../bhyvexml2argv-serial.args | 2 +-
.../bhyvexml2argvdata/bhyvexml2argv-uefi.args | 4 +-
.../bhyvexml2argv-vnc-autoport.args | 4 +-
.../bhyvexml2argv-vnc-vgaconf-io.args | 4 +-
.../bhyvexml2argv-vnc-vgaconf-off.args | 4 +-
.../bhyvexml2argv-vnc-vgaconf-on.args | 4 +-
.../bhyvexml2argvdata/bhyvexml2argv-vnc.args | 4 +-
.../bhyvexml2argv-wired.args | 2 +-
tests/bhyvexml2argvtest.c | 3 ++
.../bhyvexml2xmlout-acpiapic.xml | 2 +-
...ml2xmlout-addr-more-than-32-sata-disks.xml | 6 +--
...yvexml2xmlout-addr-multiple-sata-disks.xml | 4 +-
...exml2xmlout-addr-multiple-virtio-disks.xml | 6 +--
...lout-addr-no32devs-multiple-sata-disks.xml | 8 ++--
...2xmlout-addr-no32devs-single-sata-disk.xml | 4 +-
.../bhyvexml2xmlout-addr-single-sata-disk.xml | 4 +-
...hyvexml2xmlout-addr-single-virtio-disk.xml | 2 +-
...exml2xmlout-addr-slot-1-and-31-not-lpc.xml | 36 ++++++++++++++
.../bhyvexml2xmlout-addr-slot-1-not-lpc.xml | 36 ++++++++++++++
.../bhyvexml2xmlout-base.xml | 2 +-
.../bhyvexml2xmlout-bhyveload-bootorder.xml | 2 +-
.../bhyvexml2xmlout-bhyveload-bootorder1.xml | 2 +-
.../bhyvexml2xmlout-bhyveload-bootorder2.xml | 2 +-
.../bhyvexml2xmlout-bhyveload-bootorder3.xml | 2 +-
.../bhyvexml2xmlout-bhyveload-bootorder4.xml | 2 +-
...bhyvexml2xmlout-bhyveload-explicitargs.xml | 2 +-
.../bhyvexml2xmlout-commandline.xml | 2 +-
.../bhyvexml2xmlout-console.xml | 3 ++
.../bhyvexml2xmlout-custom-loader.xml | 2 +-
.../bhyvexml2xmlout-disk-cdrom-grub.xml | 2 +-
.../bhyvexml2xmlout-disk-cdrom.xml | 2 +-
.../bhyvexml2xmlout-explicit-lpc.xml | 36 ++++++++++++++
.../bhyvexml2xmlout-grub-bootorder.xml | 2 +-
.../bhyvexml2xmlout-grub-bootorder2.xml | 2 +-
.../bhyvexml2xmlout-grub-defaults.xml | 2 +-
.../bhyvexml2xmlout-input-xhci-tablet.xml | 4 +-
.../bhyvexml2xmlout-localtime.xml | 2 +-
.../bhyvexml2xmlout-macaddr.xml | 2 +-
.../bhyvexml2xmlout-metadata.xml | 4 +-
.../bhyvexml2xmlout-serial-grub-nocons.xml | 3 ++
.../bhyvexml2xmlout-serial-grub.xml | 3 ++
.../bhyvexml2xmlout-serial.xml | 3 ++
.../bhyvexml2xmlout-vnc-autoport.xml | 3 ++
.../bhyvexml2xmlout-vnc-vgaconf-io.xml | 3 ++
.../bhyvexml2xmlout-vnc-vgaconf-off.xml | 3 ++
.../bhyvexml2xmlout-vnc-vgaconf-on.xml | 3 ++
.../bhyvexml2xmlout-vnc.xml | 3 ++
.../bhyvexml2xmlout-wired.xml | 2 +-
tests/bhyvexml2xmltest.c | 3 ++
99 files changed, 461 insertions(+), 128 deletions(-)
create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-addr-slot-1-and-31-not-lpc.args
create mode 100644
tests/bhyvexml2argvdata/bhyvexml2argv-addr-slot-1-and-31-not-lpc.ldargs
create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-addr-slot-1-and-31-not-lpc.xml
create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-addr-slot-1-not-lpc.args
create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-addr-slot-1-not-lpc.ldargs
create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-addr-slot-1-not-lpc.xml
create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-explicit-lpc.args
create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-explicit-lpc.ldargs
create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-explicit-lpc.xml
create mode 100644
tests/bhyvexml2xmloutdata/bhyvexml2xmlout-addr-slot-1-and-31-not-lpc.xml
create mode 100644 tests/bhyvexml2xmloutdata/bhyvexml2xmlout-addr-slot-1-not-lpc.xml
create mode 100644 tests/bhyvexml2xmloutdata/bhyvexml2xmlout-explicit-lpc.xml
--
2.20.1