On Thu, Jan 25, 2024 at 03:58:29PM +0100, Peter Krempa wrote:
> On Wed, Jan 24, 2024 at 20:37:49 +0100, Andrea Bolognani wrote:
> > Most of the functions responsible for choosing architecture and
> > machine specific defaults are already close to one another, with
> > just a couple of strays. Having everything in one place will
> > hopefully make it harder to miss updating any of the functions
> > when new architectures are being introduced.
>
> Too bad that the code is using a eclectic selection of ARCH_IS_* macros
> together with checkers such as qemuDomainIsRISCVVirt etc, because it's
> hard to create a proper fix which would be a properly typed switch
> statement, where the compiler would enforce what you want to achieve
> here.

Unfortunately that's needed because some architectures have wildly
different machine types.

On Arm, for example, the virt machine type is lean, modern and geared
towards PCI/virtio, but you also have machine types implementing very
old embedded boards where all controllers are hard-coded.

The solution would be to restrict support to the small subset of
virt-friendly machine types, one or two per architecture, that we
actually test in any capacity, but since things have been
free-for-all until now there is the expectation that even machine
types that libvirt knows nothing about will keep working the same as
they ever have.

> Also too bad that the list of arches is *massive* to have it everywhere,
> despite the fac that we effectively ignore a half of them.

Yeah, my first instinct was to add switch()es everywhere, but as soon
as I started I realized that unfortunately it just made the code
much, much worse :(

-- 
Andrea Bolognani / Red Hat / Virtualization
_______________________________________________
Devel mailing list -- devel@lists.libvirt.org
To unsubscribe send an email to devel-le...@lists.libvirt.org

Reply via email to