Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 18 Jun 2000 11:40:52 +0200
From:      Gary Jennejohn <garyj@peedub.muc.de>
To:        Paul Herman <pherman@frenchfries.net>
Cc:        Gerhard Sittig <Gerhard.Sittig@gmx.net>, freebsd-isdn@FreeBSD.ORG
Subject:   Re: i4b hangs during boot with ELSA Microlink 
Message-ID:  <200006180940.LAA01642@peedub.muc.de>
In-Reply-To: Your message of "Sun, 18 Jun 2000 10:21:54 %2B0200." <Pine.BSF.4.21.0006180954060.353-100000@bagabeedaboo.security.at12.de> 

next in thread | previous in thread | raw e-mail | index | archive | help
Paul Herman writes:
>On Sat, 17 Jun 2000, Gerhard Sittig wrote:
>
>> The Linux driver (HiSax) had a similar problem in a former version
>> -- it hung at load time when the Elsa card was plugged into an
>> active bus.  Do I remember right that you saw the very same
>> symptom?  Maybe it's helpful to browse the Changelog of the Linux
>> driver from, say 2.2.10 up to now (2.2.16).
>
>Yes, that does indeed sound like the same problem I'm having.
>
>Thanks Gerhard, for the tip.  I'm looking at the current i4linux code
>and the main difference I see is that the their loop bails out after
>five tries.  I tried that in i4b, but the interrupts still keep coming
>(even after the function exits.)  I must be missing something.
>
>Is anyone familiar with this problem (i.e. ELSA PCI hanging on an
>active bus)?  I really have _zero_ clue about ISDN hardware, and I
>could use a little direction.  I will continue to search through CVS
>trees and mailing lists, but due to my lack of expertise in this area,
>I can very easily overlook something.
>

It looks like the card has a problem in the early stages of startup
when the cable is plugged in. It's generating interrupts which don't
seem to be getting cleared in the interrupt handler. I'm not familiar
with this card, so I can't really help.

Actually, the Linux driver does quite a bit more. It reads the
interrupt register on the card (in FreeBSD parlance iobase1 + 0x4c)
and checks whether the card actually interrupted. This is missing
from i4b. Unfortunately, iobase1 is never saved anywhere that I
can see, so it would be difficult to do the same thing, but IMO
necessary. And there's also the limitation on how often the code
goes through the loop in Linux.

The driver should be modified so that the interrupt routine is actually
in i4b_elsa_qs1p.c. This routine could then call isic_pci_intr_sc in
i4b_isic_pci.c. Or, even better, clone the code from i4b_isic_pci.c.
That would be a much cleaner solution. That's the way I did it in the
Fritz!PCI driver.

And save iobase1 so that it can be reused in the interrupt routine.

---
Gary Jennejohn / garyj@muc.de gj@freebsd.org




To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-isdn" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200006180940.LAA01642>