Hi,

Juergen Pfann wrote:

> > It is not true. I have in slot 3 my SCSI controller
> > NCR53C810.
> > All is OK.
> 
> Attach any IDE hard disk (regardless if it's U-33/66 or whatever)
> to your HPT 366 and then access that disk and any SCSI device at
> the same time - I'd be surprised if you won't experience a lockup...
> Of course, I meant "...doesn't need an IRQ if you _do_ use HPT
> 366. If you don't, you might be all right."
> I did have reproducible lockups when my Hauppauge WinTV was in
> slot 3 _immediately_ after issuing any "mount /dev/hde1 ..."
> command, but of course only while watching TV. 
> All windows froze, the mouse cursor showed no reaction, I couldn't
> move around the virtual screen, no reaction to any key or key
> combination, I couldn't rlogin or telnet to the box - but the TV
> program's sound continued "happily". I doubt the system 
> was totally "dead", but at least it was totally uncontrollable,
> leaving me only the "Reset" or "Power Off" button as choice :-(.
> But all that happened only after a few hours uptime and with small
> / moderate load, so I doubt that phenomenon is similar to the reported
> locks after days or even weeks of uptime during heavy load. I never met
> such locks again, but I haven't run the box more than, say, 14 hours a
> time and not exceeded a load of ~3.5 yet - and this only for short time,
> though. I stick to say linux can't handle IRQ sharing with BP6 (yet), at
> least not if one of the devices is HPT 366.

I have no difficulties sharing IRQs, with the following patch. You will
see the sense even if the lines get broken - change

     SA_INTERRUPT|SA_SHIRQ
into
     SA_SHIRQ

After this patch, my Symbios SCSI adapter can share his IRQ with the two
HPT366s, and the Hauppauge WinTV card can share it's IRQ with the SB 128.

diff -u -rN linux-2.2.14-ide/drivers/block/ide-probe.c linux/drivers/block/ide-probe.c
--- linux-2.2.14-ide/drivers/block/ide-probe.c  Mon Feb  7 09:59:44 2000
+++ linux/drivers/block/ide-probe.c     Mon Feb  7 10:06:00 2000
@@ -587,7 +587,7 @@
         * Allocate the irq, if not already obtained for another hwif
         */
        if (!match || match->irq != hwif->irq) {
-               int sa = (hwif->chipset == ide_pci) ? SA_INTERRUPT|SA_SHIRQ : 
SA_INTERRUPT;
+               int sa = (hwif->chipset == ide_pci) ? SA_SHIRQ : SA_INTERRUPT;
                if (ide_request_irq(hwif->irq, &ide_intr, sa, hwif->name, hwgroup)) {
                        if (!match)
                                kfree(hwgroup);
diff -u -rN linux-2.2.14-ide/drivers/char/bttv.c linux/drivers/char/bttv.c
--- linux-2.2.14-ide/drivers/char/bttv.c        Thu Jan  6 13:28:59 2000
+++ linux/drivers/char/bttv.c   Mon Feb  7 10:06:00 2000
@@ -3605,7 +3605,7 @@
        btwrite(0, BT848_INT_MASK);
 
         result = request_irq(btv->irq, bttv_irq,
-                             SA_SHIRQ | SA_INTERRUPT,"bttv",(void *)btv);
+                             SA_SHIRQ, "bttv",(void *)btv);
         if (result==-EINVAL) 
         {
                 printk(KERN_ERR "bttv%d: Bad irq number or handler\n",
@@ -3769,7 +3769,7 @@
                btv->bt848_mem=ioremap(btv->bt848_adr, 0x1000);
                 
                result = request_irq(btv->irq, bttv_irq,
-                       SA_SHIRQ | SA_INTERRUPT,"bttv",(void *)btv);
+                       SA_SHIRQ, "bttv", (void *)btv);
                if (result==-EINVAL) 
                {
                        printk(KERN_ERR "bttv%d: Bad irq number or handler\n",
diff -u -rN linux-2.2.14-ide/drivers/scsi/ncr53c8xx.c linux/drivers/scsi/ncr53c8xx.c
--- linux-2.2.14-ide/drivers/scsi/ncr53c8xx.c   Thu Jan  6 13:29:04 2000
+++ linux/drivers/scsi/ncr53c8xx.c      Mon Feb  7 10:06:00 2000
@@ -4562,14 +4562,7 @@
        /*
        **      Install the interrupt handler.
        */
-
-       if (request_irq(device->slot.irq, ncr53c8xx_intr,
-                       ((driver_setup.irqm & 0x10) ? 0 : SA_SHIRQ) |
-#if LINUX_VERSION_CODE < LinuxVersionCode(2,2,0)
-                       ((driver_setup.irqm & 0x20) ? 0 : SA_INTERRUPT),
-#else
-                       0,
-#endif
+       if (request_irq(device->slot.irq, ncr53c8xx_intr, SA_SHIRQ,
                        "ncr53c8xx", np)) {
 #ifdef __sparc__
                printk(KERN_ERR "%s: request irq %s failure\n",
diff -u -rN linux-2.2.14-ide/drivers/scsi/sym53c8xx.c linux/drivers/scsi/sym53c8xx.c
--- linux-2.2.14-ide/drivers/scsi/sym53c8xx.c   Thu Jan  6 13:29:05 2000
+++ linux/drivers/scsi/sym53c8xx.c      Mon Feb  7 10:06:00 2000
@@ -4827,13 +4827,7 @@
        /*
        **      Install the interrupt handler.
        */
-       if (request_irq(device->slot.irq, sym53c8xx_intr,
-                       ((driver_setup.irqm & 0x10) ? 0 : SA_SHIRQ) |
-#if LINUX_VERSION_CODE < LinuxVersionCode(2,2,0)
-                       ((driver_setup.irqm & 0x20) ? 0 : SA_INTERRUPT),
-#else
-                       0,
-#endif
+       if (request_irq(device->slot.irq, sym53c8xx_intr, SA_SHIRQ,
                        NAME53C8XX, np)) {
                printk(KERN_ERR "%s: request irq %d failure\n",
                        ncr_name(np), device->slot.irq);

Cheers -e
-- 
Eberhard Moenkeberg ([EMAIL PROTECTED], [EMAIL PROTECTED])

--
=-          To unsubscribe, email [EMAIL PROTECTED] with the       -=
=-                body of "unsubscribe linux-abit".                 -=

Reply via email to