On 01/24/2012 07:38 PM, Avi Kivity wrote:
On 01/18/2012 11:52 PM, Jeremy Fitzhardinge wrote:
On 01/19/2012 12:54 AM, Srivatsa Vaddagiri wrote:
That logic relies on the "kick" being level triggered, so that "kick"
before "block" will cause the block to fall out immediately. If you're
using "hlt" as the block and it has the usual edge-triggered behaviour,
what stops a "kick-before-hlt" from losing the kick?
Hmm ..'hlt' should result in a check for kick request (in hypervisor
context) before vcpu is put to sleep. IOW vcpu1 that is attempting to kick vcpu0
will set a 'somebody_tried_kicking_vcpu0' flag, which hypervisor should check
before it puts vcpu0 to sleep because of trapped 'hlt' instruction.
Won't that trap the 'kick-before-hlt' case? What am I missing here?
Nothing, that sounds fine. It wasn't clear to me that your kick
operation left persistent state, and so has a level-triggered effect on hlt.
btw, this persistent state needs to be saved/restored for live
migration. Best to put it into some MSR.
I did not quite get it. Did you mean, add a new MSR to msrs_to_save[],
and may be retain only the kicked/pv_unhalt flag (persistent state) and
get rid of PVLOCK_KICK vcpu->request?
_______________________________________________
Virtualization mailing list
Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx
https://lists.linuxfoundation.org/mailman/listinfo/virtualization