[libvirt] [PATCH 0/4] bhyve: model PCI ISA bridge

Roman Bogorodskiy posted 4 patches 5 years, 1 month ago
Test syntax-check passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/20190210150855.24867-1-bogorodskiy@gmail.com
There is a newer version of this series
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
[libvirt] [PATCH 0/4] bhyve: model PCI ISA bridge
Posted by Roman Bogorodskiy 5 years, 1 month ago
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

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH 0/4] bhyve: model PCI ISA bridge
Posted by Laine Stump 5 years, 1 month ago
On 2/10/19 10:08 AM, Roman Bogorodskiy wrote:
> 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.


Anything that is <controller type='pci' ...> should provide PCI slots 
that other devices (including other PCI controllers) can be connected 
to. This isn't a PCI controller, it is an ISA controller that happens to 
plug into a PCI slot. So while it is a controller, it should have a 
different type (maybe <controller type='isa'...>)


--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list