On 07/09/2013 10:49 AM, Anthony Liguori wrote: > On Mon, Jul 8, 2013 at 7:06 PM, Alexey Kardashevskiy <a...@ozlabs.ru> wrote: >>> You should tie the vmstate section to DeviceState::vmsd. You only need >>> to do this because you haven't converted everything to QOM yet. >>> >>> Please do that to avoid these hacks. >> >> >> How? I want to support migration from xics to xics-kvm and vice versa. >> vmsd cannot be inherited and even if they could, different device names >> would kill that support. > > Please look at hw/intc/i8259_common.c and then hw/i386/kvm/i8259.c and > hw/i386/intc/i8259.c.
btw do I have to put xics_kvm.c to hw/ppc64/kvm (which does not exist yet) or to hw/intc? What is the system here? I am really confused. > The vmsd is in the common base class shared between the KVM version > and the non-KVM version. As long as the subclasses don't introduce > any new state members, you can safely migrate between the two devices. btw xics-kvm does not introduce new members but does have very different .pre_save and .post_load. This actually was the whole point of splitting xics into xics and xics-kvm. I cannot see how I can fix it without hacks. Property's can be inherited from a parent class (?) but VMStateDescription cannot. > You should consider splitting the implementations up into separate > files just like i8259 too. -- Alexey