On Wed, Jan 05, 2022 at 03:02:07AM -0800, Andrea Bolognani wrote:
On Wed, Jan 05, 2022 at 10:10:07AM +0000, Daniel P. Berrangé wrote:
> On Tue, Jan 04, 2022 at 07:52:50PM +0100, Andrea Bolognani wrote:
> > + if (hvf_machines[i] != NULL) {
> > + for (j = 0; hvf_machines[i][j] != NULL; j++) {
> > + virQEMUCapsAddMachine(tmpCaps,
> > + VIR_DOMAIN_VIRT_HVF,
> > + hvf_machines[i][j],
> > + NULL,
> > + NULL,
> > + 0,
> > + false,
> > + false,
> > + true,
> > + defaultRAMid,
> > + false);
> > + virQEMUCapsSet(tmpCaps, QEMU_CAPS_HVF);
> > + }
> > + }
>
> IIUC this means in tests we're going to build capabilities that
> indicate support for KVM and HVF at the same time. This is not
> a scenario that applies in the real world, so I'm a little
> uncomfortable with this. It is the simple option, though I
> would prefer if the individual tests could express
>
> "gimme capabilities for linux"
>
> vs
>
> "gimme capabilities for macOS"
>
> Also relies on fact that we don't #ifdef any of the interesting
> code in the QEMU driver related to KVM/HVF. Probably ok-ish
> assumption in most cases, at least for unit tests.
Yeah, ideally we'd have that and also real replies files taken from
QEMU running on macOS, but I don't currently have a way to generate
the latter and the former would take more development time. In the
interest of unblocking macOS users who are currently unable to run
hardware accelerated VMs through libvirt at all, I'm personally okay
with cutting some corners and improving things later.
What if I changed things so that both the HVF test cases and the
testutilsqemu bit above are only built on macOS? We'd still have the
weird mix of capabilities on that platform, but at least Linux would
be unaffected. We run the test suite on macOS as part of our CI
pipeline, so coverage wouldn't be any worse.
I was thinking more like
- testQemuCapsInit only adds TCG+KVM emulators
- testQemuCapsInitMacOS only adds TCG+HVF emulators
In qemuxml2argvtest.c do
virCapsPtr linuxCaps = driver->caps
driver->caps = testQemuCapsInitMacOS();
DO_TEST("hvf-blah",
QEMU_CAPS_HVF,
QEMU_CAPS_PIIX3_USB_UHCI,
....
QEMU_CAPS_USB_HUB);
virObjectUnref(driver->caps);
driver->caps = linuxCaps;
feels like it ought to be reasonably simple to get working
Regards,
Daniel
--
|:
https://berrange.com -o-
https://www.flickr.com/photos/dberrange :|
|:
https://libvirt.org -o-
https://fstop138.berrange.com :|
|:
https://entangle-photo.org -o-
https://www.instagram.com/dberrange :|