Attached is updated patch. It use migrate_timer() function and
do __vmpclear on arcj_vmx_do_resume.
There is still one corner case. Currently the PIT timer is
initialized on pit_hook. So when migrate the timer, it maybe possible
that the pit timer is still not initialized. However, this situation may
happen also on vmx_relinquish_resources. So we plat to provide a patch
to init the pit timer on hvm_setup_platform, which is called from
>[mailto:xen-devel-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of Keir Fraser
>Sent: Wednesday, February 08, 2006 11:14 PM
>To: Jiang, Yunhong
>Subject: Re: [Xen-devel] [PATCH] Pin vcpu for VMX domain
>On 8 Feb 2006, at 12:58, Jiang, Yunhong wrote:
>> I'm not sure if it will has some corner case, and hope your
>> clarification for it.
>> considering following situation, assume the VMX switch from
>> 1) on cpu0, the timer interrupt happened, so timer_softirq_action is
>> called, the pit_timer_fn is called, and in pit_timer_fn, it
>will try to
>> set the pit timer again.
>> 2) before pit_timer_fn set the pit timer on cpu0, the stop_timer is
>> called on cpu1 on vmx_reinstall_timers.
>> 3) after stop_timer finished, the pit_timer_fn on cpu0 set
>> on cpu0.
>> on this situation, the stop_timer on cpu1 will has no
>effect. And then
>> the init_timer may cause error situation.
>> In fact, I think the old patch itself is not safe on this situation,
>> since the stop_timer is called on IPI interrupt , which may run when
>> pit_timer_fn is running.
>Good point. I'll have to add a migrate_timer() function I think, that
>does the migration atomically.
>That'll save you the hassle of stop/init/reactivate as well.
> -- Keir
>Xen-devel mailing list
Xen-devel mailing list