[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [Xen-ia64-devel] [Xen-devel] [PATCH]Make VTIdomain boot again

Hi all,

Do_softirq is invoked at the path of ia64_leave_kernel instead of being 
invoking in function irq_exit, which is aligned with XEN/X86 and avoids 
__enter_schedule being reentered. VTIdomain can boot again after applying this 

BTW, a small bug is fixed.
- (p6)  br.call.sptk.many b0=deliver_pending_interrupt
+(pUStk)        br.call.sptk.many b0=deliver_pending_interrupt
Since P6 is scratch register, after returning from deliver_pending_interrupt, 
p6 may be changed. But p6 is also used by subsequent code and should not be 

Signed-off-by Anthony Xu <anthony.xu@xxxxxxxxx>


>-----Original Message-----
>From: Alex Williamson [mailto:alex.williamson@xxxxxx]
>Sent: 2006年2月9日 11:32
>To: Xu, Anthony
>Cc: xen-devel@xxxxxxxxxxxxxxxxxxx; xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
>Subject: Re: [Xen-ia64-devel] [Xen-devel] [PATCH]Make VTIdomain boot again
>On Thu, 2006-02-09 at 10:31 +0800, Xu, Anthony wrote:
>> Keir,
>> This patch is intended to make VTIdomain boot again, and will not impact
>> domU. Actually VTIdomain and domU can boot simultaneously after applying
>> this patch, Could you please check this patch into xen-unstable.hg? This
>> is a must in 3.0.1.
>Hi Anthony,
>   Xen 3.0.1 went out on Feb. 1st.  A couple comments
>--- a/xen/arch/ia64/linux-xen/irq_ia64.c        Thu Jan 26 10:31:28 2006
>+++ b/xen/arch/ia64/linux-xen/irq_ia64.c        Wed Feb  8 16:28:11 2006
>@@ -169,7 +169,7 @@
>         * handler needs to be able to wait for further keyboard
>interrupts, which can't
>         * come through until ia64_eoi() has been done.
>         */
>-       irq_exit();
>+       xen_irq_exit(regs);
> }
>>>> This needs to be in an #ifdef XEN.
>-void irq_exit(void)
>+void xen_irq_exit(struct pt_regs *regs)
> {
>        //account_system_vtime(current);
>        sub_preempt_count(IRQ_EXIT_OFFSET);
>-       if (!in_interrupt() && local_softirq_pending()) {
>+    if((((char *)regs) -(char *) current) !=
>+        return;
>+       if (!in_interrupt()&&local_softirq_pending()) {
>>>> Formatting here is inconsistent with the rest of the file and
>itself.  Could we be setting some flag and adding the test to the
>existing in_interrupt/local_softirq_pending check?  This looks rather
>precarious.  Thanks,
>       Alex

Attachment: dosoftirq.patch
Description: dosoftirq.patch

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.