Author: dannf
Date: Sun Mar 25 20:41:11 2007
New Revision: 8394

Added:
   dists/etch/linux-2.6/debian/patches/bugfix/natsemi-napi-shared-irq.patch
Modified:
   dists/etch/linux-2.6/debian/changelog
   dists/etch/linux-2.6/debian/patches/series/12
Log:
* natsemi-napi-shared-irq.patch
  Fix hang in natsemi driver when sharing interrupts. (closes: #415476)
  Thanks to Mark Brown for the backport.


Modified: dists/etch/linux-2.6/debian/changelog
==============================================================================
--- dists/etch/linux-2.6/debian/changelog       (original)
+++ dists/etch/linux-2.6/debian/changelog       Sun Mar 25 20:41:11 2007
@@ -48,7 +48,10 @@
     [SECURITY] Fix a vulnerability that permits renicing processes in
     other contexts. (closes: #412143)
     See CVE-2007-0241
-
+  * natsemi-napi-shared-irq.patch
+    Fix hang in natsemi driver when sharing interrupts. (closes: #415476)
+    Thanks to Mark Brown for the backport.
+  
   [ Bastian Blank ]
   * xen: Fix highmem dma copy code. (closes: #415805)
 
@@ -56,7 +59,7 @@
   * mips: Implement flush_anon_page() to fix data corruption issues
     (Ralf Baechle).
 
- -- Bastian Blank <[EMAIL PROTECTED]>  Sat, 24 Mar 2007 08:06:27 +0100
+ -- dann frazier <[EMAIL PROTECTED]>  Sun, 25 Mar 2007 14:35:43 -0600
 
 linux-2.6 (2.6.18.dfsg.1-11) unstable; urgency=low
 

Added: dists/etch/linux-2.6/debian/patches/bugfix/natsemi-napi-shared-irq.patch
==============================================================================
--- (empty file)
+++ dists/etch/linux-2.6/debian/patches/bugfix/natsemi-napi-shared-irq.patch    
Sun Mar 25 20:41:11 2007
@@ -0,0 +1,57 @@
+--- build-i386-none-486/drivers/net/natsemi.c.orig     2006-09-19 
21:42:06.000000000 -0600
++++ build-i386-none-486/drivers/net/natsemi.c  2007-03-25 13:46:49.000000000 
-0600
+@@ -2094,28 +2094,35 @@
+       struct netdev_private *np = netdev_priv(dev);
+       void __iomem * ioaddr = ns_ioaddr(dev);
+ 
+-      if (np->hands_off)
++      /* Reading IntrStatus automatically acknowledges so don't do
++       * that while interrupts are disabled, (for example, while a
++       * poll is scheduled).  */
++      if (np->hands_off || !readl(ioaddr + IntrEnable))
+               return IRQ_NONE;
+       
+-      /* Reading automatically acknowledges. */
+       np->intr_status = readl(ioaddr + IntrStatus);
+ 
++      if (!np->intr_status)
++              return IRQ_NONE;
++
+       if (netif_msg_intr(np))
+               printk(KERN_DEBUG
+                      "%s: Interrupt, status %#08x, mask %#08x.\n",
+                      dev->name, np->intr_status,
+                      readl(ioaddr + IntrMask));
+ 
+-      if (!np->intr_status) 
+-              return IRQ_NONE;
+-
+       prefetch(&np->rx_skbuff[np->cur_rx % RX_RING_SIZE]);
+ 
+       if (netif_rx_schedule_prep(dev)) {
+               /* Disable interrupts and register for poll */
+               natsemi_irq_disable(dev);
+               __netif_rx_schedule(dev);
+-      }
++      } else
++              printk(KERN_WARNING
++                     "%s: Ignoring interrupt, status %#08x, mask %#08x.\n",
++                     dev->name, np->intr_status,
++                     readl(ioaddr + IntrMask));
++
+       return IRQ_HANDLED;
+ }
+ 
+@@ -2131,6 +2138,12 @@
+       int work_done = 0;
+ 
+       do {
++              if (netif_msg_intr(np))
++                      printk(KERN_DEBUG
++                             "%s: Poll, status %#08x, mask %#08x.\n",
++                             dev->name, np->intr_status,
++                             readl(ioaddr + IntrMask));
++
+               if (np->intr_status &
+                   (IntrTxDone | IntrTxIntr | IntrTxIdle | IntrTxErr)) {
+                       spin_lock(&np->lock);

Modified: dists/etch/linux-2.6/debian/patches/series/12
==============================================================================
--- dists/etch/linux-2.6/debian/patches/series/12       (original)
+++ dists/etch/linux-2.6/debian/patches/series/12       Sun Mar 25 20:41:11 2007
@@ -8,3 +8,4 @@
 + bugfix/sparc/tcp-sendmsg-t12k-oops-fix.patch
 + bugfix/bnx2_tx_avail-off-by-1-fix.patch
 + bugfix/mips/flush_anon_page.patch
++ bugfix/natsemi-napi-shared-irq.patch

_______________________________________________
Kernel-svn-changes mailing list
[email protected]
http://lists.alioth.debian.org/mailman/listinfo/kernel-svn-changes

Reply via email to