Kouya Shimura
2009-Jul-27 05:27 UTC
[Xen-devel] [PATCH] passthrough: use tasklet to deliver interrupts
This patch enables delivery of interrupts even if the VCPU#0 is halted. Note: the change of raise_softirq (convert to macro from static inline) is needed for ia64 build. Signed-off-by: Kouya Shimura <kouya@jp.fujitsu.com> _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Keir Fraser
2009-Jul-27 08:04 UTC
[Xen-devel] Re: [PATCH] passthrough: use tasklet to deliver interrupts
On 27/07/2009 06:27, "Kouya Shimura" <kouya@jp.fujitsu.com> wrote:> This patch enables delivery of interrupts even if the VCPU#0 is halted.You remove a set_time/stop_timer pair. Is this because it was just to handle arbitrary delay in calling hvm_dirq_assist() (which should no longer be possible as we use a tasklet)?> Note: the change of raise_softirq (convert to macro from static inline) > is needed for ia64 build.That makes no sense. The function has been implemented (and used) in its existing form for a long time. Why would it suddenly break on ia64? -- Keir _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Kouya Shimura
2009-Jul-27 09:43 UTC
[Xen-devel] Re: [PATCH] passthrough: use tasklet to deliver interrupts
Keir Fraser writes:> You remove a set_time/stop_timer pair. Is this because it was just to handle > arbitrary delay in calling hvm_dirq_assist() (which should no longer be > possible as we use a tasklet)?Yes. I think PT_IRQ_TIME_OUT(8msec) might be possible but can hardly happen. Even if hvm_dirq_assist() is not executed within an arbitrary time, I think it is harmless. hvm_dirq_assist() will be certainly executed on a VM exit. Strictly speeking, timer is also not guaranteed. Actually I have observed 10msec delay from hvm_do_IRQ_dpci till hvm_dirq_assist(). It is a special case caused by flush_tlb_mask().> > Note: the change of raise_softirq (convert to macro from static inline) > > is needed for ia64 build. > > That makes no sense. The function has been implemented (and used) in its > existing form for a long time. Why would it suddenly break on ia64?Since "#include <xen/softirq.h>" is added to xen/hvm/irq.h. In ia64, smp_processor_id() refers a field of struct vcpu. It makes difficult to untie the nest of include. Using a pointer to tasklet in struct hvm_irq_dpci helps to solve it. But malloc/free is ugly... Thanks, Kouya _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel