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