On 2012-07-25 18:41, Peter Maydell wrote: > On 25 July 2012 17:28, Jan Kiszka <jan.kis...@siemens.com> wrote: >> On 2012-07-25 18:24, Peter Maydell wrote: >>> ...incidentally I was thinking about maybe moving kvm_irqchip_create() >>> from being called by kvm_init() to being called by the device >>> init function for the relevant irqchip (particularly we'll need >>> to do that if we adopt Avi's suggestion of having a parameter >>> to KVM_CREATE_IRQCHIP to specify a particular kind of irqchip). >>> But that's more invasive surgery so I didn't want to do it yet. >> >> This won't fly as irchip affects the whole orchestra (vcpus & irqchip >> stubs in user space), at least on x86, and has to be called in the >> current order. That's also why kernel_irqchip is a machine options, not >> an option of one of the many device models. > > Yes, one of the things you'd need to do is move actual creation > of the vcpus (as opposed to the QEMU CPU QOM objects) to rather > later in the sequence than they are now.
KVM VCPU creation is bound to the QOM object creation phase if we want hotplugging support. > > Where you have multiple devices which all need to go the same way > you can put that in the machine model code and then have all the > devices take an option the machine model sets to say which way > they go. > > (Oddities in the x86 specific bits of the KVM kernel code ought > to result in oddities in x86 specific bits of QEMU, not in > generic bits :-)) I dreamed of this as well before porting in-kernel irqchip support upstream. ;) But the point of this service is not that arch-specific in fact: By the time you have a set of kernel irqchips that cannot reasonably be instantiated / enabled separately, a single service helps to avoid that userspace tries to do this mistake at all. Not all archs may have this requirement, but a generic service needs to address it if it wants to be generic. Jan -- Siemens AG, Corporate Technology, CT RTC ITP SDP-DE Corporate Competence Center Embedded Linux