On 04/12/2018 07:16 AM, David Gibson wrote:
> On Mon, Feb 12, 2018 at 09:55:17AM +1100, Benjamin Herrenschmidt wrote:
>> On Sun, 2018-02-11 at 19:08 +1100, David Gibson wrote:
>>> On Thu, Jan 18, 2018 at 08:27:52AM +1100, Benjamin Herrenschmidt wrote:
>>>> On Wed, 2018-01-17 at 15:39 +0100, Cédric Le Goater wrote:
>>>>> Migration is a problem. We will need both backend QEMU objects to be 
>>>>> available anyhow if we want to migrate. So we are back to the current 
>>>>> solution creating both QEMU objects but we can try to defer some of the 
>>>>> KVM inits and create the KVM device on demand at CAS time.
>>>>
>>>> Do we have a way to migrate a piece of info from the machine *first*
>>>> that indicate what type of XICS/XIVE to instanciate ?
>>>
>>> Nope.  qemu migration doesn't work like that.  Yes, it should, and
>>> everyone knows it, but changing it is a really long term project.
>>
>> Well, we have a problem then. It looks like Qemu broken migration is
>> fundamentally incompatible with PAPR and CAS design...
> 
> Hrm, the fit is very clunky certainly, but i think we can make it work.
> 
>> I know we don't migrate the configuration, that's not exactly what I
>> had in mind tho... Can we have some piece of *data* from the machine be
>> migrated first, and use it on the target to reconfigure the interrupt
>> controller before the stream arrives ?
> 
> Sorta.. maybe.. but it would probably get really ugly if we don't
> preserve the usual way object lifetimes work.
> 
>> Otherwise, we have indeed no much choice but the horrible wart of
>> creating both interrupt controllers with only one "active".
> 
> I really think this is the way to go, warts and all.
> 

Yes ... KVM makes it a little uglier. 

A KVM_DEVICE_DESTROY device is needed to cleanup the VM and a 
DISABLE_CAP to disconnect the vpcu from the current KVM XIVE/XICS 
device. I have used an extra arg on ENABLE_CAP for the moment.    

At the QEMU level, we need to connect/reconnect at reset time to
handle possible changes in CAS, and at post_load.

Destroying the MemoryRegion is a bit problematic, I have not
found a common layout compatible with both the emulated mode 
(std IO regions) and the KVM mode (ram device regions)

C.

Reply via email to