Hi, Yamahata-san,
Thank you for your comments.
In IA64, ITM/ITC model is used.(for example *1)
This IA64 model is different from x86 timer model.
So It needs to send a correct ITM/ITC interrupt to Guest OS by using VIRQ_ITC.
This VIRQ_ITC signal timing is controlled by the Guest OS itself.
So VIRQ_ITC from other is not permitted on this model.(*2)
If you set the timer externally, GuestOS timer model is corrupted.
HYPERVISOR_set_timer_op just sends VIRQ_TIMER signal to Guest OS,
if it reaches the time.
For x86 case, timer_interrupt@xxxxxxxxxxxxxxxxxxxx/arch/i386/kernel/time-xen.c
wake up.
The function is permitted to wake up any time.(just get timer information from
Xen Hypervisor.)
For IA64 case, no corresponding function for VIRQ_TIMER is exists.
If you switch from VIRQ_TIMER to VIRQ_ITC, assumption model in timer function
is different.
(The IA64 functions are assumed that it only runs on itc/itm timer
interruption.)
So VIRQ_ITC timer function is not available for HYPERVISOR_set_timer_op.
If you want to use HYPERVISOR_set_timer_op on IA64,
you should make a new timer_interrupt function for HYPERVISOR_set_timer_op
to avoid distruct itc/itm model.
Consider the above circumstances,
I decided to emulate PAL_HALT_LIGHT on the Xen Hypervisor.
This model does not effect on VIRQ_ITC and itc/itm model.
Thanks,
Atsushi SAKAI.
>Hi Sakai.
>
>xenLinux/x86 paravirtualizes idle loop to get timer interrupt
>while cpu halting.
>More exactly safe_halt() is paravirtualized using
>HYPERVISOR_set_timer_op().
>Xen/IA64 doesn't support HYPERVISOR_set_timer_op(), but it
>would be quite easy to add its support.
>
>I'm not sure about which is better, your approach or paravirtualizing
>idle loop.
>Could you explain the reason why you added vcpu->arch.hlt_timer
>instead of supporting set_timer_op hypercall with vcpu->timer?
>
>Thanks.
>
>On Wed, Jul 05, 2006 at 12:46:35PM +0900, Atsushi SAKAI wrote:
>> Hi, All
>>
>> This patch emulates Guest PAL_HALT_LIGHT on domU by using do_block and timer.
>> It also adds the function of the timer event sending to domU at the vcpu
>> woke up.
>>
>> Signed-off-by: Atsushi SAKAI <sakaia@xxxxxxxxxxxxxx>
>>
>>
>> About the timer event sending to domU
>>
>> The function "xen_timer_interrupt" on ParaVM/IA64 only sends
>> the timer signal to current vcpu.
>> When the idle domain is running, no domUx receives timer signal.
>> If some domain cannot receive the timer signal during 10 secs,
>> a message "BUG: soft lockup detected appeared" comes from domUx.
>> To avoid this, I add a timer check routine at the vcpu woke up.
>>
>> I tested a few days.
>>
>> Thanks,
>> Atsushi SAKAI
>>
>>
>>
>
>
>> _______________________________________________
>> Xen-ia64-devel mailing list
>> Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
>> http://lists.xensource.com/xen-ia64-devel
>
>--
>yamahata
>
_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel
|