On Sep 2, 2005, at 3:20 AM, Keir Fraser wrote:
On 2 Sep 2005, at 00:14, Hollis Blanchard wrote:
What confuses me is that any other interrupt could come in at point
*** above,
right? That interrupt will follow a very similar path, calling
do_softirq
again, and handle TIMER_SOFTIRQ. Then when the first do_softirq
resumes, the
ASSERT will trip.
You shouldn't call do_softirq() from nested Xen activations (this is
unlike Linux, which is happy to do softirq work from arbitrary
interrupt contexts).
Ah ha, this was the tip I needed. The test I had overlooked in
ret_from_intr was this:
movl UREGS_eflags(%esp),%eax
movb UREGS_cs(%esp),%al
testl $(3|X86_EFLAGS_VM),%eax
jnz test_all_events
I guess that is cleverly testing both the privilege level being
returned to and the virtual 8086 mode bit.
Thanks!
--
Hollis Blanchard
IBM Linux Technology Center
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|