|
|
|
|
|
|
|
|
|
|
xen-ia64-devel
[Xen-ia64-devel] [PATCH] Fix dom0 losing timer interrupt issue
We kept seeing unstable when running multiple domains for a while, and
finally found dom0 will lose timer interrupt under certain conditions.
It really took us a whole day to track down the root cause, and now
system is more stable with attached patch! Brief description as
following:
=========================================
Under some specific conditions, dom0 will lose guest timer interrupt.
Xen/ia64 will try to pend guest timer interrupt to dom0 within each
machine timer interrupt handler. To avoid duplicated delivery,
domain_itm_last recorded domain_itm of last injection. If two are
identical, it means interrupt injected but guest has not set new itm
value. Or else
corresponding pending irr bit will be turned on. That works in most
cases.
However currently guest linux may try to set itm multiple times within
one
handler before turn on psr.i again. Among first few settings, new guest
timer
interrupt may be pended. Then once guest linux enables interrupt, a new
timer interrupt will be injected immediately. However this injection may
have
itc still smaller than the domain_itm set at the last round of last
handle.
In this case, guest linux will set same domain_itm as last again.
However
since domain_itm_last already equals to domain_itm at last read ivr,
later
no guest timer interrupt can be injected any more since Xen always
thinks
an instance already injected without guest's response.
Attahced patch fixed this issue by adding sanity check upon guest timer
vector when deciding to inject interrupt into dom0. We always compare
current
itc with latest domain_itm that guest really wants. So if itc <
domain_itm
at this point, we simply clear the pending bit and no injection.
There's also a small fix to vcpu_read_ivr, where domain_itm_last should
be updated before clearing irr bit. Or els a small window still remains
to add a duplicate interrupt.
Signed-off-by Anthony Xu <anthony.xu@xxxxxxxxx>
Signed-off-by Kevin Tian <kevin.tian@xxxxxxxxx>
Thanks,
Kevin
dom0_lose_timer.patch
Description: dom0_lose_timer.patch
_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel
|
<Prev in Thread] |
Current Thread |
[Next in Thread>
|
- [Xen-ia64-devel] [PATCH] Fix dom0 losing timer interrupt issue,
Tian, Kevin <=
|
|
|
|
|