diff options
-rw-r--r-- | debian/changelog | 3 | ||||
-rw-r--r-- | debian/patches/24_pci_irq_fix.patch | 36 |
2 files changed, 39 insertions, 0 deletions
diff --git a/debian/changelog b/debian/changelog index 5c75971..6cec45c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -15,6 +15,9 @@ gnumach (1:20060201-1) UNRELEASED; urgency=low - debian/patches/90_autoconf_autogen.patch: Likewise. * Fix -H kernel command line argument to halt on panic. (Closes: #184624) Thanks to Soeren D. Schulze <soeren.d.schulze@gmx.de>. + * Do not allow PCI IRQ's higher than 16. + - debian/patches/patches/24_pci_irq_fix.patch: New file. + Thanks to Gianluca Guida <glguida@gmail.com>. -- Guillem Jover <guillem@debian.org> Wed, 1 Feb 2006 23:21:59 +0200 diff --git a/debian/patches/24_pci_irq_fix.patch b/debian/patches/24_pci_irq_fix.patch new file mode 100644 index 0000000..21c961c --- /dev/null +++ b/debian/patches/24_pci_irq_fix.patch @@ -0,0 +1,36 @@ +#DPATCHLEVEL=1 + +My laptop's motherboard set its RTL8139 NIC IRQ at a value that is not +included in the range 0<=x<16 and it's not 255. + +GNU Mach can't handle that, and when I try a 'devprobe eth0' I get a +panic due to a failed assert (irq < 16). This patch tell GNU Mach to +ignore this kind of IRQ. + +The real solution for this problem would be an PCI IRQ Router, which +is what I am going to port/implement in Mach soon. For now, this patch +helps by both removing the failed assert and by noticing the user that +the device is not being used for unassigned IRQ. + + +2006-01-28 Gianluca Guida <glguida@gmail.com> + + * linux/src/drivers/net/pci-scan.c (pci_drv_register): Skip device + if we are getting an invalid IRQ >= 16 and different from 255 (it + happens in some motherboard). + + +diff -ru gnumach-vanilla/linux/src/drivers/net/pci-scan.c gnumach-irqpciquickfix/linux/src/drivers/net/pci-scan.c +--- gnumach-vanilla/linux/src/drivers/net/pci-scan.c 2006-01-22 16:54:41.000000000 +0100 ++++ gnumach-irqpciquickfix/linux/src/drivers/net/pci-scan.c 2006-01-28 06:19:58.000000000 +0100 +@@ -347,7 +347,7 @@ + pci_tbl[chip_idx].name, pciaddr, irq); + + if ( ! (pci_flags & PCI_UNUSED_IRQ) && +- (irq == 0 || irq == 255)) { ++ (irq == 0 || irq >= 16)) { + if (pci_bus == 32) /* Broken CardBus activation. */ + printk(KERN_WARNING "Resources for CardBus device '%s' have" + " not been allocated.\n" + + |