Dong, Eddie wrote:
> Avi Kivity wrote:
>   
>> Dong, Eddie wrote:
>>     
>>> Avi:
>>>     Basically with those patches applied so far, we can do k<->k, u
>>> <->u and k->u live migration for typical case, the u->k migration has
>>> bug so far which is still debuging.
>>>     But I am thinking about the corner case (pending irq) for cross
>>> migration, i.e. pending irq in valid IDT_Vectoring of kernel irqchip
>>> and those in interrupt_bitmap of user level case.  In most case,
>>> there are no pending irqs, that is fine for us. In some case if
>>> there is a pending irq, cross migration need to convert between them
>>>     which may be not feasible. In k->u case,  we can just convert
>>>       
> the
>   
>>> IDT_vectoring indicated pending irq (single vector) to a
>>> interrupt_bitmap, but vice versa may not be true since user level
>>> case may have multiple pending irqs in theory though rare.  In that
>>> case u->k cross migration may fail since we don't know this vectored
>>> irq comes from PIC or APIC and thus unable to push back to PIC/APIC
>>> device model. If there is only one pending irq in interrupt_bitmap,
>>>     we can simply convert it to IDT_Vectoring BTW, multiple pending
>>> IRQs in interrupt_bitmap has potential architectural issue even in
>>> pure user level case due to premature IRR->ISR convert in PIC/APIC
>>> device model as we discussed. 
>>>
>>>     If above limitation is fine, we can use interrupt_bitmap in
>>> SREGS data structure to carry the pending irq for kernel level too.
>>> Any opinion? thx,eddie
>>>
>>>       
>> Userspace will never set more than one bit in the pending bitmap,
>> because it needs to inspect the tpr before injecting an interrupt.  As
>>     
>
> I didn't look into detail of them in user level. But can TPR checking
> guarantee
> there is no multiple injection? 

It's the other way round:  the code injects interrupts one at a time in 
order to be able to check the tpr in user space (the whole 
pending_interrupts thing is a bug -- it's impossible to queue interrupts 
at that level because of the tpr).


> An asynchronize device model can inject
> an
> higher irq after the previous one.
> Even in synchronize model, if a previous irq fails to inject with
> IDT_vectoring valid,
> and get push back, a higher irq can again get injected.
>
>   
The code guarantees that we won't inject an interrupt until after the 
previous one was accepted, but I think it doesn't handle failures to 
inject well.


-- 
error compiling committee.c: too many arguments to function


-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel

Reply via email to