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