r1010 - trunk/kernel-2.4/source/kernel-source-2.4.27-2.4.27/debian/patches
Joshua Kwan
joshk@haydn.debian.org
Wed, 11 Aug 2004 09:43:56 -0600
Author: joshk
Date: 2004-08-11 09:43:48 -0600 (Wed, 11 Aug 2004)
New Revision: 1010
Added:
trunk/kernel-2.4/source/kernel-source-2.4.27-2.4.27/debian/patches/011_double_request_region.diff
trunk/kernel-2.4/source/kernel-source-2.4.27-2.4.27/debian/patches/012_8139too_deadlock.diff
trunk/kernel-2.4/source/kernel-source-2.4.27-2.4.27/debian/patches/013_mpparse_cries_wolf.diff
Modified:
trunk/kernel-2.4/source/kernel-source-2.4.27-2.4.27/debian/patches/patch-2.4.26-1
Log:
split out some more mini-patches
Added: trunk/kernel-2.4/source/kernel-source-2.4.27-2.4.27/debian/patches/011_double_request_region.diff
===================================================================
--- trunk/kernel-2.4/source/kernel-source-2.4.27-2.4.27/debian/patches/011_double_request_region.diff 2004-08-11 15:05:02 UTC (rev 1009)
+++ trunk/kernel-2.4/source/kernel-source-2.4.27-2.4.27/debian/patches/011_double_request_region.diff 2004-08-11 15:43:48 UTC (rev 1010)
@@ -0,0 +1,144 @@
+--- kernel-source-2.4.26/drivers/net/arcnet/com20020-isa.c 2002-08-03 10:39:44.000000000 +1000
++++ kernel-source-2.4.26-1/drivers/net/arcnet/com20020-isa.c 2003-09-27 13:32:55.000000000 +1000
+@@ -53,6 +53,7 @@
+ int ioaddr;
+ unsigned long airqmask;
+ struct arcnet_local *lp = dev->priv;
++ int err;
+
+ #ifndef MODULE
+ arcnet_init();
+@@ -66,17 +67,20 @@
+ "must specify the base address!\n");
+ return -ENODEV;
+ }
+- if (check_region(ioaddr, ARCNET_TOTAL_SIZE)) {
++ if (!request_region(ioaddr, ARCNET_TOTAL_SIZE, "arcnet (COM20020)")) {
+ BUGMSG(D_NORMAL, "IO region %xh-%xh already allocated.\n",
+ ioaddr, ioaddr + ARCNET_TOTAL_SIZE - 1);
+ return -ENXIO;
+ }
+ if (ASTATUS() == 0xFF) {
+ BUGMSG(D_NORMAL, "IO address %x empty\n", ioaddr);
+- return -ENODEV;
++ err = -ENODEV;
++ goto out;
++ }
++ if (com20020_check(dev)) {
++ err = -ENODEV;
++ goto out;
+ }
+- if (com20020_check(dev))
+- return -ENODEV;
+
+ if (!dev->irq) {
+ /* if we do this, we're sure to get an IRQ since the
+@@ -100,13 +104,21 @@
+ dev->irq = probe_irq_off(airqmask);
+ if (dev->irq <= 0) {
+ BUGMSG(D_NORMAL, "Autoprobe IRQ failed.\n");
+- return -ENODEV;
++ err = -ENODEV;
++ goto out;
+ }
+ }
+ }
+
+ lp->card_name = "ISA COM20020";
+- return com20020_found(dev, 0);
++ if ((err = com20020_found(dev, SA_SHIRQ)) != 0)
++ goto out;
++
++ return 0;
++
++out:
++ release_region(ioaddr, ARCNET_TOTAL_SIZE);
++ return err;
+ }
+
+
+@@ -182,6 +194,7 @@
+ void cleanup_module(void)
+ {
+ com20020_remove(my_dev);
++ release_region(my_dev->base_addr, ARCNET_TOTAL_SIZE);
+ }
+
+ #else
+--- kernel-source-2.4.26/drivers/net/arcnet/com20020-pci.c 2003-06-14 00:51:34.000000000 +1000
++++ kernel-source-2.4.26-1/drivers/net/arcnet/com20020-pci.c 2003-09-27 13:32:55.000000000 +1000
+@@ -113,7 +113,7 @@
+ lp->timeout = timeout;
+ lp->hw.open_close_ll = com20020pci_open_close;
+
+- if (check_region(ioaddr, ARCNET_TOTAL_SIZE)) {
++ if (!request_region(ioaddr, ARCNET_TOTAL_SIZE, "arcnet (COM20020)")) {
+ BUGMSG(D_INIT, "IO region %xh-%xh already allocated.\n",
+ ioaddr, ioaddr + ARCNET_TOTAL_SIZE - 1);
+ err = -EBUSY;
+@@ -123,18 +123,20 @@
+ BUGMSG(D_NORMAL, "IO address %Xh was reported by PCI BIOS, "
+ "but seems empty!\n", ioaddr);
+ err = -EIO;
+- goto out_priv;
++ goto out_port;
+ }
+ if (com20020_check(dev)) {
+ err = -EIO;
+- goto out_priv;
++ goto out_port;
+ }
+
+ if ((err = com20020_found(dev, SA_SHIRQ)) != 0)
+- goto out_priv;
++ goto out_port;
+
+ return 0;
+
++out_port:
++ release_region(ioaddr, ARCNET_TOTAL_SIZE);
+ out_priv:
+ kfree(dev->priv);
+ out_dev:
+@@ -144,7 +146,9 @@
+
+ static void __devexit com20020pci_remove(struct pci_dev *pdev)
+ {
+- com20020_remove(pci_get_drvdata(pdev));
++ struct net_device *dev = pci_get_drvdata(pdev);
++ com20020_remove(dev);
++ release_region(dev->base_addr, ARCNET_TOTAL_SIZE);
+ }
+
+ static struct pci_device_id com20020pci_id_table[] __devinitdata = {
+--- kernel-source-2.4.26/drivers/net/arcnet/com20020.c 2003-06-14 00:51:34.000000000 +1000
++++ kernel-source-2.4.26-1/drivers/net/arcnet/com20020.c 2003-09-27 13:32:55.000000000 +1000
+@@ -204,12 +204,6 @@
+ BUGMSG(D_NORMAL, "Can't get IRQ %d!\n", dev->irq);
+ return -ENODEV;
+ }
+- /* reserve the I/O region */
+- if (!request_region(ioaddr, ARCNET_TOTAL_SIZE, "arcnet (COM20020)")) {
+- free_irq(dev->irq, dev);
+- return -EBUSY;
+- }
+- dev->base_addr = ioaddr;
+
+ BUGMSG(D_NORMAL, "%s: station %02Xh found at %03lXh, IRQ %d.\n",
+ lp->card_name, dev->dev_addr[0], dev->base_addr, dev->irq);
+@@ -226,7 +220,6 @@
+
+ if (!dev->init && register_netdev(dev)) {
+ free_irq(dev->irq, dev);
+- release_region(ioaddr, ARCNET_TOTAL_SIZE);
+ return -EIO;
+ }
+ return 0;
+@@ -348,7 +341,6 @@
+ {
+ unregister_netdev(dev);
+ free_irq(dev->irq, dev);
+- release_region(dev->base_addr, ARCNET_TOTAL_SIZE);
+ kfree(dev->priv);
+ kfree(dev);
+ }
Added: trunk/kernel-2.4/source/kernel-source-2.4.27-2.4.27/debian/patches/012_8139too_deadlock.diff
===================================================================
--- trunk/kernel-2.4/source/kernel-source-2.4.27-2.4.27/debian/patches/012_8139too_deadlock.diff 2004-08-11 15:05:02 UTC (rev 1009)
+++ trunk/kernel-2.4/source/kernel-source-2.4.27-2.4.27/debian/patches/012_8139too_deadlock.diff 2004-08-11 15:43:48 UTC (rev 1010)
@@ -0,0 +1,69 @@
+diff -urN kernel-source-2.4.26/drivers/net/8139too.c kernel-source-2.4.26-1/drivers/net/8139too.c
+--- kernel-source-2.4.26/drivers/net/8139too.c 2004-04-14 23:05:30.000000000 +1000
++++ kernel-source-2.4.26-1/drivers/net/8139too.c 2004-04-17 14:23:48.000000000 +1000
+@@ -111,6 +111,7 @@
+ #include <linux/completion.h>
+ #include <linux/crc32.h>
+ #include <asm/io.h>
++#include <asm/semaphore.h>
+ #include <asm/uaccess.h>
+
+ #define RTL8139_DRIVER_NAME DRV_NAME " Fast Ethernet driver " DRV_VERSION
+@@ -591,6 +592,7 @@
+ struct rtl_extra_stats xstats;
+ int time_to_die;
+ struct mii_if_info mii;
++ struct semaphore mdio_sem;
+ unsigned int regs_len;
+ };
+
+@@ -1003,6 +1005,7 @@
+ tp->mii.mdio_write = mdio_write;
+ tp->mii.phy_id_mask = 0x3f;
+ tp->mii.reg_num_mask = 0x1f;
++ init_MUTEX (&tp->mdio_sem);
+
+ /* dev is fully set up and ready to use now */
+ DPRINTK("about to register device named %s (%p)...\n", dev->name, dev);
+@@ -1618,9 +1621,10 @@
+ if (tp->time_to_die)
+ break;
+
+- rtnl_lock ();
++ if (down_interruptible (&tp->mdio_sem))
++ break;
+ rtl8139_thread_iter (dev, tp, tp->mmio_addr);
+- rtnl_unlock ();
++ up (&tp->mdio_sem);
+ }
+
+ complete_and_exit (&tp->thr_exited, 0);
+@@ -2144,10 +2148,10 @@
+ wmb();
+ ret = kill_proc (tp->thr_pid, SIGTERM, 1);
+ if (ret) {
+- printk (KERN_ERR "%s: unable to signal thread\n", dev->name);
+- return ret;
++ printk (KERN_ERR "%s: unable to signal thread: %d\n", dev->name, ret);
++ } else {
++ wait_for_completion (&tp->thr_exited);
+ }
+- wait_for_completion (&tp->thr_exited);
+ }
+
+ if (netif_msg_ifdown(tp))
+@@ -2388,10 +2392,14 @@
+ if (!netif_running(dev))
+ return -EINVAL;
+
++ if (down_interruptible (&np->mdio_sem))
++ return -ERESTARTSYS;
++
+ spin_lock_irq(&np->lock);
+ rc = generic_mii_ioctl(&np->mii, data, cmd, NULL);
+ spin_unlock_irq(&np->lock);
+
++ up (&np->mdio_sem);
+ return rc;
+ }
+
Added: trunk/kernel-2.4/source/kernel-source-2.4.27-2.4.27/debian/patches/013_mpparse_cries_wolf.diff
===================================================================
--- trunk/kernel-2.4/source/kernel-source-2.4.27-2.4.27/debian/patches/013_mpparse_cries_wolf.diff 2004-08-11 15:05:02 UTC (rev 1009)
+++ trunk/kernel-2.4/source/kernel-source-2.4.27-2.4.27/debian/patches/013_mpparse_cries_wolf.diff 2004-08-11 15:43:48 UTC (rev 1010)
@@ -0,0 +1,23 @@
+diff -urN kernel-source-2.4.26/arch/i386/kernel/mpparse.c kernel-source-2.4.26-1/arch/i386/kernel/mpparse.c
+--- kernel-source-2.4.26/arch/i386/kernel/mpparse.c 2004-04-14 23:05:25.000000000 +1000
++++ kernel-source-2.4.26-1/arch/i386/kernel/mpparse.c 2004-04-17 14:23:36.000000000 +1000
+@@ -429,15 +429,12 @@
+ unsigned char *bus_data;
+
+ if (memcmp(mpc->mpc_signature,MPC_SIGNATURE,4)) {
+- panic("SMP mptable: bad signature [%c%c%c%c]!\n",
+- mpc->mpc_signature[0],
+- mpc->mpc_signature[1],
+- mpc->mpc_signature[2],
+- mpc->mpc_signature[3]);
++ printk(KERN_ERR "SMP mptable: bad signature [0x%x]!\n",
++ *(u32 *)mpc->mpc_signature);
+ return 0;
+ }
+ if (mpf_checksum((unsigned char *)mpc,mpc->mpc_length)) {
+- panic("SMP mptable: checksum error!\n");
++ printk(KERN_ERR "SMP mptable: checksum error!\n");
+ return 0;
+ }
+ if (mpc->mpc_spec!=0x01 && mpc->mpc_spec!=0x04) {
+
Modified: trunk/kernel-2.4/source/kernel-source-2.4.27-2.4.27/debian/patches/patch-2.4.26-1
===================================================================
--- trunk/kernel-2.4/source/kernel-source-2.4.27-2.4.27/debian/patches/patch-2.4.26-1 2004-08-11 15:05:02 UTC (rev 1009)
+++ trunk/kernel-2.4/source/kernel-source-2.4.27-2.4.27/debian/patches/patch-2.4.26-1 2004-08-11 15:43:48 UTC (rev 1010)
@@ -784,28 +784,6 @@
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
# CONFIG_IP_ADVANCED_ROUTER is not set
-diff -urN kernel-source-2.4.26/arch/i386/kernel/mpparse.c kernel-source-2.4.26-1/arch/i386/kernel/mpparse.c
---- kernel-source-2.4.26/arch/i386/kernel/mpparse.c 2004-04-14 23:05:25.000000000 +1000
-+++ kernel-source-2.4.26-1/arch/i386/kernel/mpparse.c 2004-04-17 14:23:36.000000000 +1000
-@@ -429,15 +429,12 @@
- unsigned char *bus_data;
-
- if (memcmp(mpc->mpc_signature,MPC_SIGNATURE,4)) {
-- panic("SMP mptable: bad signature [%c%c%c%c]!\n",
-- mpc->mpc_signature[0],
-- mpc->mpc_signature[1],
-- mpc->mpc_signature[2],
-- mpc->mpc_signature[3]);
-+ printk(KERN_ERR "SMP mptable: bad signature [0x%x]!\n",
-+ *(u32 *)mpc->mpc_signature);
- return 0;
- }
- if (mpf_checksum((unsigned char *)mpc,mpc->mpc_length)) {
-- panic("SMP mptable: checksum error!\n");
-+ printk(KERN_ERR "SMP mptable: checksum error!\n");
- return 0;
- }
- if (mpc->mpc_spec!=0x01 && mpc->mpc_spec!=0x04) {
diff -urN kernel-source-2.4.26/arch/ia64/defconfig kernel-source-2.4.26-1/arch/ia64/defconfig
--- kernel-source-2.4.26/arch/ia64/defconfig 2004-02-19 00:36:30.000000000 +1100
@@ -6478,75 +6456,7 @@
if (!skb_shinfo(skb)->nr_frags) {
vp->tx_ring[entry].frag[0].addr = cpu_to_le32(pci_map_single(vp->pdev, skb->data,
-diff -urN kernel-source-2.4.26/drivers/net/8139too.c kernel-source-2.4.26-1/drivers/net/8139too.c
---- kernel-source-2.4.26/drivers/net/8139too.c 2004-04-14 23:05:30.000000000 +1000
-+++ kernel-source-2.4.26-1/drivers/net/8139too.c 2004-04-17 14:23:48.000000000 +1000
-@@ -111,6 +111,7 @@
- #include <linux/completion.h>
- #include <linux/crc32.h>
- #include <asm/io.h>
-+#include <asm/semaphore.h>
- #include <asm/uaccess.h>
-
- #define RTL8139_DRIVER_NAME DRV_NAME " Fast Ethernet driver " DRV_VERSION
-@@ -591,6 +592,7 @@
- struct rtl_extra_stats xstats;
- int time_to_die;
- struct mii_if_info mii;
-+ struct semaphore mdio_sem;
- unsigned int regs_len;
- };
-
-@@ -1003,6 +1005,7 @@
- tp->mii.mdio_write = mdio_write;
- tp->mii.phy_id_mask = 0x3f;
- tp->mii.reg_num_mask = 0x1f;
-+ init_MUTEX (&tp->mdio_sem);
-
- /* dev is fully set up and ready to use now */
- DPRINTK("about to register device named %s (%p)...\n", dev->name, dev);
-@@ -1618,9 +1621,10 @@
- if (tp->time_to_die)
- break;
-
-- rtnl_lock ();
-+ if (down_interruptible (&tp->mdio_sem))
-+ break;
- rtl8139_thread_iter (dev, tp, tp->mmio_addr);
-- rtnl_unlock ();
-+ up (&tp->mdio_sem);
- }
-
- complete_and_exit (&tp->thr_exited, 0);
-@@ -2144,10 +2148,10 @@
- wmb();
- ret = kill_proc (tp->thr_pid, SIGTERM, 1);
- if (ret) {
-- printk (KERN_ERR "%s: unable to signal thread\n", dev->name);
-- return ret;
-+ printk (KERN_ERR "%s: unable to signal thread: %d\n", dev->name, ret);
-+ } else {
-+ wait_for_completion (&tp->thr_exited);
- }
-- wait_for_completion (&tp->thr_exited);
- }
-
- if (netif_msg_ifdown(tp))
-@@ -2388,10 +2392,14 @@
- if (!netif_running(dev))
- return -EINVAL;
-
-+ if (down_interruptible (&np->mdio_sem))
-+ return -ERESTARTSYS;
-+
- spin_lock_irq(&np->lock);
- rc = generic_mii_ioctl(&np->mii, data, cmd, NULL);
- spin_unlock_irq(&np->lock);
-
-+ up (&np->mdio_sem);
- return rc;
- }
-
+
diff -urN kernel-source-2.4.26/drivers/net/Config.in kernel-source-2.4.26-1/drivers/net/Config.in
--- kernel-source-2.4.26/drivers/net/Config.in 2004-04-14 23:05:30.000000000 +1000
+++ kernel-source-2.4.26-1/drivers/net/Config.in 2004-02-22 20:28:19.000000000 +1100
@@ -6614,152 +6524,8 @@
#define MIN_IPG 96
#define MAX_IPG 255
diff -urN kernel-source-2.4.26/drivers/net/arcnet/com20020-isa.c kernel-source-2.4.26-1/drivers/net/arcnet/com20020-isa.c
---- kernel-source-2.4.26/drivers/net/arcnet/com20020-isa.c 2002-08-03 10:39:44.000000000 +1000
-+++ kernel-source-2.4.26-1/drivers/net/arcnet/com20020-isa.c 2003-09-27 13:32:55.000000000 +1000
-@@ -53,6 +53,7 @@
- int ioaddr;
- unsigned long airqmask;
- struct arcnet_local *lp = dev->priv;
-+ int err;
-
- #ifndef MODULE
- arcnet_init();
-@@ -66,17 +67,20 @@
- "must specify the base address!\n");
- return -ENODEV;
- }
-- if (check_region(ioaddr, ARCNET_TOTAL_SIZE)) {
-+ if (!request_region(ioaddr, ARCNET_TOTAL_SIZE, "arcnet (COM20020)")) {
- BUGMSG(D_NORMAL, "IO region %xh-%xh already allocated.\n",
- ioaddr, ioaddr + ARCNET_TOTAL_SIZE - 1);
- return -ENXIO;
- }
- if (ASTATUS() == 0xFF) {
- BUGMSG(D_NORMAL, "IO address %x empty\n", ioaddr);
-- return -ENODEV;
-+ err = -ENODEV;
-+ goto out;
-+ }
-+ if (com20020_check(dev)) {
-+ err = -ENODEV;
-+ goto out;
- }
-- if (com20020_check(dev))
-- return -ENODEV;
-
- if (!dev->irq) {
- /* if we do this, we're sure to get an IRQ since the
-@@ -100,13 +104,21 @@
- dev->irq = probe_irq_off(airqmask);
- if (dev->irq <= 0) {
- BUGMSG(D_NORMAL, "Autoprobe IRQ failed.\n");
-- return -ENODEV;
-+ err = -ENODEV;
-+ goto out;
- }
- }
- }
-
- lp->card_name = "ISA COM20020";
-- return com20020_found(dev, 0);
-+ if ((err = com20020_found(dev, SA_SHIRQ)) != 0)
-+ goto out;
-+
-+ return 0;
-+
-+out:
-+ release_region(ioaddr, ARCNET_TOTAL_SIZE);
-+ return err;
- }
-
-
-@@ -182,6 +194,7 @@
- void cleanup_module(void)
- {
- com20020_remove(my_dev);
-+ release_region(my_dev->base_addr, ARCNET_TOTAL_SIZE);
- }
-
- #else
diff -urN kernel-source-2.4.26/drivers/net/arcnet/com20020-pci.c kernel-source-2.4.26-1/drivers/net/arcnet/com20020-pci.c
---- kernel-source-2.4.26/drivers/net/arcnet/com20020-pci.c 2003-06-14 00:51:34.000000000 +1000
-+++ kernel-source-2.4.26-1/drivers/net/arcnet/com20020-pci.c 2003-09-27 13:32:55.000000000 +1000
-@@ -113,7 +113,7 @@
- lp->timeout = timeout;
- lp->hw.open_close_ll = com20020pci_open_close;
-
-- if (check_region(ioaddr, ARCNET_TOTAL_SIZE)) {
-+ if (!request_region(ioaddr, ARCNET_TOTAL_SIZE, "arcnet (COM20020)")) {
- BUGMSG(D_INIT, "IO region %xh-%xh already allocated.\n",
- ioaddr, ioaddr + ARCNET_TOTAL_SIZE - 1);
- err = -EBUSY;
-@@ -123,18 +123,20 @@
- BUGMSG(D_NORMAL, "IO address %Xh was reported by PCI BIOS, "
- "but seems empty!\n", ioaddr);
- err = -EIO;
-- goto out_priv;
-+ goto out_port;
- }
- if (com20020_check(dev)) {
- err = -EIO;
-- goto out_priv;
-+ goto out_port;
- }
-
- if ((err = com20020_found(dev, SA_SHIRQ)) != 0)
-- goto out_priv;
-+ goto out_port;
-
- return 0;
-
-+out_port:
-+ release_region(ioaddr, ARCNET_TOTAL_SIZE);
- out_priv:
- kfree(dev->priv);
- out_dev:
-@@ -144,7 +146,9 @@
-
- static void __devexit com20020pci_remove(struct pci_dev *pdev)
- {
-- com20020_remove(pci_get_drvdata(pdev));
-+ struct net_device *dev = pci_get_drvdata(pdev);
-+ com20020_remove(dev);
-+ release_region(dev->base_addr, ARCNET_TOTAL_SIZE);
- }
-
- static struct pci_device_id com20020pci_id_table[] __devinitdata = {
diff -urN kernel-source-2.4.26/drivers/net/arcnet/com20020.c kernel-source-2.4.26-1/drivers/net/arcnet/com20020.c
---- kernel-source-2.4.26/drivers/net/arcnet/com20020.c 2003-06-14 00:51:34.000000000 +1000
-+++ kernel-source-2.4.26-1/drivers/net/arcnet/com20020.c 2003-09-27 13:32:55.000000000 +1000
-@@ -204,12 +204,6 @@
- BUGMSG(D_NORMAL, "Can't get IRQ %d!\n", dev->irq);
- return -ENODEV;
- }
-- /* reserve the I/O region */
-- if (!request_region(ioaddr, ARCNET_TOTAL_SIZE, "arcnet (COM20020)")) {
-- free_irq(dev->irq, dev);
-- return -EBUSY;
-- }
-- dev->base_addr = ioaddr;
-
- BUGMSG(D_NORMAL, "%s: station %02Xh found at %03lXh, IRQ %d.\n",
- lp->card_name, dev->dev_addr[0], dev->base_addr, dev->irq);
-@@ -226,7 +220,6 @@
-
- if (!dev->init && register_netdev(dev)) {
- free_irq(dev->irq, dev);
-- release_region(ioaddr, ARCNET_TOTAL_SIZE);
- return -EIO;
- }
- return 0;
-@@ -348,7 +341,6 @@
- {
- unregister_netdev(dev);
- free_irq(dev->irq, dev);
-- release_region(dev->base_addr, ARCNET_TOTAL_SIZE);
- kfree(dev->priv);
- kfree(dev);
- }
diff -urN kernel-source-2.4.26/drivers/net/hamradio/soundmodem/sm.h kernel-source-2.4.26-1/drivers/net/hamradio/soundmodem/sm.h
--- kernel-source-2.4.26/drivers/net/hamradio/soundmodem/sm.h 2002-08-03 10:39:44.000000000 +1000
+++ kernel-source-2.4.26-1/drivers/net/hamradio/soundmodem/sm.h 2002-03-06 19:49:48.000000000 +1100