Messages in this thread Patch in this message | | | Date | Thu, 22 Jan 1998 04:19:27 +0100 | From | ak@muc ... | Subject | Re: pre-2.1.81.. |
| |
On Thu, Jan 22, 1998 at 01:08:06AM +0100, Linus Torvalds wrote: > > I just made a pre-2.1.81 available on ftp.kernel.org. > > This fixes the known problems of 2.1.80, and also makes the interrupt > routing by default look like it always used to look - everything goes > through the traditional external 8259A-compatible logic.
With Ingo's changes in pre-2.1.81 and the appended patch HiSax works again. Linus, could you please add the patch to 2.1.81.
Thanks, -Andi
--- ./drivers/isdn/hisax/ix1_micro.c~ Mon Nov 3 18:54:38 1997 +++ ./drivers/isdn/hisax/ix1_micro.c Thu Jan 22 03:13:25 1998 @@ -841,7 +841,7 @@ int loop = 0; char tmp[40]; - sp->counter = kstat.interrupts[sp->irq]; + sp->counter = kstat_irqs(sp->irq); sprintf(tmp, "IRQ %d count %d", sp->irq, sp->counter); debugl1(sp, tmp); clear_pending_ints(sp); @@ -854,16 +854,16 @@ /* At least 1-3 irqs must happen * (one from HSCX A, one from HSCX B, 3rd from ISAC) */ - if (kstat.interrupts[sp->irq] > sp->counter) + if (kstat_irqs(sp->irq) > sp->counter) break; current->state = TASK_INTERRUPTIBLE; current->timeout = jiffies + 1; schedule(); } sprintf(tmp, "IRQ %d count %d", sp->irq, - kstat.interrupts[sp->irq]); + kstat_irqs(sp->irq)); debugl1(sp, tmp); - if (kstat.interrupts[sp->irq] == sp->counter) { + if (kstat_irqs(sp->irq) == sp->counter) { printk(KERN_WARNING "ix1-Micro: IRQ(%d) getting no interrupts during init\n", sp->irq); --- ./drivers/isdn/hisax/avm_a1.c~ Mon Nov 3 18:54:38 1997 +++ ./drivers/isdn/hisax/avm_a1.c Thu Jan 22 03:11:57 1998 @@ -772,7 +772,7 @@ int loop = 0; char tmp[40]; - sp->counter = kstat.interrupts[sp->irq]; + sp->counter = kstat_irqs(sp->irq); sprintf(tmp, "IRQ %d count %d", sp->irq, sp->counter); debugl1(sp, tmp); clear_pending_ints(sp); @@ -785,16 +785,16 @@ /* At least 1-3 irqs must happen * (one from HSCX A, one from HSCX B, 3rd from ISAC) */ - if (kstat.interrupts[sp->irq] > sp->counter) + if (kstat_irqs(sp->irq) > sp->counter) break; current->state = TASK_INTERRUPTIBLE; current->timeout = jiffies + 1; schedule(); } sprintf(tmp, "IRQ %d count %d", sp->irq, - kstat.interrupts[sp->irq]); + kstat_irqs(sp->irq)); debugl1(sp, tmp); - if (kstat.interrupts[sp->irq] == sp->counter) { + if (kstat_irqs(sp->irq) == sp->counter) { printk(KERN_WARNING "AVM A1: IRQ(%d) getting no interrupts during init\n", sp->irq); --- ./drivers/isdn/hisax/elsa.c~ Mon Nov 3 18:54:38 1997 +++ ./drivers/isdn/hisax/elsa.c Thu Jan 22 03:12:38 1998 @@ -1180,7 +1180,7 @@ int ret, irq_cnt, cnt = 3; long flags; - irq_cnt = kstat.interrupts[sp->irq]; + irq_cnt = kstat_irqs(sp->irq); printk(KERN_INFO "Elsa: IRQ %d count %d\n", sp->irq, irq_cnt); ret = get_irq(sp->cardnr, &elsa_interrupt); #ifdef CONFIG_HISAX_ELSA_PCC @@ -1213,8 +1213,8 @@ } #endif printk(KERN_INFO "Elsa: IRQ %d count %d\n", sp->irq, - kstat.interrupts[sp->irq]); - if (kstat.interrupts[sp->irq] == irq_cnt) { + kstat_irqs(sp->irq)); + if (kstat_irqs(sp->irq) == irq_cnt) { printk(KERN_WARNING "Elsa: IRQ(%d) getting no interrupts during init %d\n", sp->irq, 4 - cnt); --- ./drivers/isdn/hisax/teles0.c~ Mon Nov 3 18:54:38 1997 +++ ./drivers/isdn/hisax/teles0.c Thu Jan 22 03:14:17 1998 @@ -802,7 +802,7 @@ int loop = 0; char tmp[40]; - sp->counter = kstat.interrupts[sp->irq]; + sp->counter = kstat_irqs(sp->irq); sprintf(tmp, "IRQ %d count %d", sp->irq, sp->counter); debugl1(sp, tmp); clear_pending_ints(sp); @@ -815,16 +815,16 @@ /* At least 1-3 irqs must happen * (one from HSCX A, one from HSCX B, 3rd from ISAC) */ - if (kstat.interrupts[sp->irq] > sp->counter) + if (kstat_irqs(sp->irq) > sp->counter) break; current->state = TASK_INTERRUPTIBLE; current->timeout = jiffies + 1; schedule(); } sprintf(tmp, "IRQ %d count %d", sp->irq, - kstat.interrupts[sp->irq]); + kstat_irqs(sp->irq)); debugl1(sp, tmp); - if (kstat.interrupts[sp->irq] == sp->counter) { + if (kstat_irqs(sp->irq) == sp->counter) { printk(KERN_WARNING "Teles0: IRQ(%d) getting no interrupts during init\n", sp->irq); --- ./drivers/isdn/hisax/teles3.c~ Thu Jan 22 03:48:45 1998 +++ ./drivers/isdn/hisax/teles3.c Thu Jan 22 03:14:49 1998 @@ -272,7 +272,7 @@ hscx_empty_fifo(hsp, count); if ((count = hsp->rcvidx - 1) > 0) { if (!(skb = dev_alloc_skb(count))) - printk(KERN_WARNING "teles3: receive out of memory\n"); + printk(KERN_WARNING "AVM: receive out of memory\n"); else { memcpy(skb_put(skb, count), hsp->rcvbuf, count); skb_queue_tail(&hsp->rqueue, skb); @@ -287,7 +287,7 @@ if (hsp->mode == 1) { /* receive audio data */ if (!(skb = dev_alloc_skb(32))) - printk(KERN_WARNING "teles3: receive out of memory\n"); + printk(KERN_WARNING "AVM: receive out of memory\n"); else { memcpy(skb_put(skb, 32), hsp->rcvbuf, 32); skb_queue_tail(&hsp->rqueue, skb); @@ -801,7 +801,7 @@ int loop = 0; char tmp[40]; - sp->counter = kstat.interrupts[sp->irq]; + sp->counter = kstat_irqs(sp->irq); sprintf(tmp, "IRQ %d count %d", sp->irq, sp->counter); debugl1(sp, tmp); clear_pending_ints(sp); @@ -816,16 +816,17 @@ /* At least 1-3 irqs must happen * (one from HSCX A, one from HSCX B, 3rd from ISAC) */ - if (kstat.interrupts[sp->irq] > sp->counter) + if (kstat_irqs(sp->irq) > sp->counter) break; current->state = TASK_INTERRUPTIBLE; current->timeout = jiffies + 1; schedule(); } + sprintf(tmp, "IRQ %d count %d loop %d", sp->irq, - kstat.interrupts[sp->irq], loop); + kstat_irqs(sp->irq), loop); debugl1(sp, tmp); - if (kstat.interrupts[sp->irq] <= sp->counter) { + if (kstat_irqs(sp->irq) <= sp->counter) { printk(KERN_WARNING "Teles3: IRQ(%d) getting no interrupts during init\n", sp->irq);
| |