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". -=