Dan and all:
This is an bug related to the task "event channel
callback/failsafe callback" that we decided to do in Xen summit but not
started yet. If the task is completed, then same mechanism with X86
should be implemented, and the soft-IRQ only happens when returning to
guest like X86. (see arch/x86/x86_32/entry.s API: ret_from_intr,
test_all_events only happens when returning to guest).
I believe there are others issues but not found yet due to our
very beginning's walkaround in IA64. That usually means saving time at
beginning (shortcut) take us more in later :-(
Eddie
Xu, Anthony wrote:
> Hi All,
>
> Since the merge from xen-unstable, there is a small window between
> bvt_do_schedule and context_switch in function __enter_schedule, where
> interrupt is enabled.
>
> See below scenario:
> 1. VTI domain accesses legacy IO, VMM gets control, sets VTI-domain
> into blocked status and calls __enter_schedule to yield scheduler and
> wait QEMU in domain0 to handle IO request.
> 2. There is a timer interrupt in above window, and this timer
> interrupt triggers schedule timer, then in irq_exit function, VMM
> will do soft_irq, which in turn will invoke __enter_schedule, thus
> __enter_schedule is reentered in VMM, which is not correct.
>
> So the root cause is __enter_schedule is reentered.
> The correct way is, soft_irq should be done just before VMM returning
> to guest just like in native linux soft-irq is done just before linux
> returning to application. But in current implementation soft-irq is
> done in irq-exit function.
>
> The reason why xenU can boot is,
> xenU is always runable, so it will not be deleted from runqueue,
> though __enter_schedule is reentered, no issue appear, as for
> VTIdomain, when it does IO operation, it will be set into blocked
> status and be deleted from runqueue, which will crash the whole
> system.
>
> This patch is just a workaround, it makes sure in irq_exit only when
> VMM is not in nested interrupted situation, soft_irq is done.
>
> I strongly suggest soft-irq be done in the path of ia64_leave_kernel
> just like native linux kernel.
>
> Any comment?
>
> Thanks,
> -Anthony
_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel
|