On Fri, May 01, 2020 at 12:57:54PM -0300, Daniel Henrique Barboza wrote: > > > On 5/1/20 7:40 AM, Daniel P. Berrangé wrote: > > On Thu, Apr 30, 2020 at 09:00:51PM -0300, Daniel Henrique Barboza wrote: > > > > > > My initial plan is to get the logic/APIs design from Libvirt, rename > > > them in a Gopher fashion, re-code it with Go and call it a day :) > > > > That is really not a way I would like to go, as that means we immediately > > inherit the design bias of the current libvirt code. The goal is to be > > able to replace current libvirt code eventually, but I don't want it to > > just be a clone of that code, as I think it misses the opportunity to > > try to design something better than what we have done. > > > > As a particular example.. the current placement code has no conceptual > > model of machine types present in QEMU. We've just got many "if" tests > > that take different codepaths based on heuristics about the machine > > type. I would like the new API to have an explicit conceptual model > > of each machine type we intend to support. ie it should have full > > representation of the default topology of devices that are mandated > > by the machine type. Ideally this modelling should be extendable > > without having to write code in the placement model. ie we should > > be able to load a "i440fx.yaml" file describing the i440fx machine > > type and the placement logic "just works". We should not have any > > tests like "if (is i440fx)" in the code itself. > > > That's a sound idea. I'd say that instead of basing yourselves in the QEMU > machine types addressing we should aim in implementing he machine specification > instead, even as a long term goal. > > E.G let's say that Libvirt wants addressing services for a hotplug in a QEMU > i440fx guest. Instead of devaddr implementing "this is how the i440fx addressing works > in QEMU", devaddr should be more concerned about "this is how the i440fx processor > addressing works". If QEMU does additional/different things on top of that then > qemu_driver.c should operate on that. This allows devaddr to be hypervisor agnostic. Yes, it was not intended to be tied to QEMU's specific implementation either. It should be a generic modelling / addressing system. > > The libvirt code shows us the range of features we need to support at > > least though. > > I'll see if I can take a look in all the "if (pseries)" in Libvirt device addressing code > to get an idea of how a PowerPC addressing model would work related to x86. 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 :|