Hi Alex,

Sorry, I made a patch to take out vfree() outside of IRQ disabled.
I checked that the call trace did not come out on the SMP Dom0.

Thanks,
KAZ

Signed-off-by: Kazuhiro Suzuki <[EMAIL PROTECTED]>


From: Alex Williamson <[EMAIL PROTECTED]>
Subject: Re: [PATCH][MCA] avoid allocating memory in interrupt context (was Re: 
[Xen-ia64-devel] [PATCH 2/3] xencomm consolidation: linux side)
Date: Tue, 04 Sep 2007 10:37:06 -0600

> On Sun, 2007-09-02 at 16:04 -0600, Alex Williamson wrote:
> > On Tue, 2007-08-28 at 20:48 +0900, SUZUKI Kazuhiro wrote:
> > > Hi,
> > > 
> > > The attached patch fixes to avoid allocating memory in interrupt
> > > context.
> > > I tried to allocate xencomm_handle in IA64_LOG_ALLOCATE instead of
> > > allocating each time.
> > 
> >    Applied.  Thanks,
> 
>    Oops, looks like this introduced another problem:
> 
> BUG: warning at 
> /home/awilliam/xen/20070902-patches/linux-2.6.18-xen.hg/arch/ia64/kernel/smp.c:341/smp_call_function()
> 
> Call Trace:
>  [<a00000010001d520>] show_stack+0x40/0xa0
>                                 sp=e0000001b51cfb70 bsp=e0000001b51c9588
>  [<a00000010001d5b0>] dump_stack+0x30/0x60
>                                 sp=e0000001b51cfd40 bsp=e0000001b51c9570
>  [<a000000100061b40>] smp_call_function+0x180/0x440
>                                 sp=e0000001b51cfd40 bsp=e0000001b51c9528
>  [<a000000100094fe0>] on_each_cpu+0x40/0x1c0
>                                 sp=e0000001b51cfd60 bsp=e0000001b51c94f0
>  [<a000000100060ed0>] smp_flush_tlb_all+0x30/0x60
>                                 sp=e0000001b51cfd60 bsp=e0000001b51c94d8
>  [<a000000100115250>] unmap_vm_area+0x390/0x440
>                                 sp=e0000001b51cfd60 bsp=e0000001b51c9490
>  [<a000000100115390>] __remove_vm_area+0x90/0x100
>                                 sp=e0000001b51cfd70 bsp=e0000001b51c9458
>  [<a000000100115430>] remove_vm_area+0x30/0x80
>                                 sp=e0000001b51cfd70 bsp=e0000001b51c9430
>  [<a0000001001154f0>] __vunmap+0x70/0x280
>                                 sp=e0000001b51cfd70 bsp=e0000001b51c9400
>  [<a000000100115950>] vfree+0x90/0xc0
>                                 sp=e0000001b51cfd70 bsp=e0000001b51c93d8
>  [<a00000010003ba40>] salinfo_log_release+0x140/0x260
>                                 sp=e0000001b51cfd70 bsp=e0000001b51c93a8
>  ...
> 
>    We can't vfree() with IRQs disabled.  Can you please find an
> alternate algorithm for freeing the log area and submit a follow up
> patch?  Thanks,
> 
>       Alex
> 
> -- 
> Alex Williamson                             HP Open Source & Linux Org.
> 
diff -r df2d73ab847a arch/ia64/kernel/salinfo.c
--- a/arch/ia64/kernel/salinfo.c        Tue Aug 28 12:44:22 2007 -0600
+++ b/arch/ia64/kernel/salinfo.c        Thu Sep 06 12:29:32 2007 +0900
@@ -408,6 +408,7 @@ salinfo_log_release(struct inode *inode,
 #ifdef CONFIG_XEN
                if (is_running_on_xen()) {
                        struct list_head *pos, *n;
+                       ia64_mca_xencomm_t *found_entry = NULL;
                        unsigned long flags;
 
                        spin_lock_irqsave(&ia64_mca_xencomm_lock, flags);
@@ -417,10 +418,15 @@ salinfo_log_release(struct inode *inode,
                                entry = list_entry(pos, ia64_mca_xencomm_t, 
list);
                                if (entry->record == data->log_buffer) {
                                        list_del(&entry->list);
-                                       vfree(entry);
+                                       found_entry = entry;
+                                       break;
                                }
                        }
                        spin_unlock_irqrestore(&ia64_mca_xencomm_lock, flags);
+                       if (found_entry) {
+                               xencomm_free(found_entry->handle);
+                               vfree(found_entry);
+                       }
                }
 #endif
                vfree(data->log_buffer);
_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@lists.xensource.com
http://lists.xensource.com/xen-ia64-devel

Reply via email to