Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 25 Jan 2001 16:45:59 +0530 (IST)
From:      Mohana Krishna Penumetcha <pmk@sasi.com>
To:        freebsd-hackers@FreeBSD.ORG
Subject:   Re: interrupt handling routine not called!!!
Message-ID:  <Pine.LNX.4.10.10101251631180.6275-100000@pcs113.sasi.com>
In-Reply-To: <Pine.LNX.4.10.10101241538430.5634-100000@pcs113.sasi.com>

next in thread | previous in thread | raw e-mail | index | archive | help


we have done some further testing and verified the intr_handler table and
corresponding mask values. everything seems to be correct. this leaves us
with the hardware. the problem could be either the device is not
activating the interrupt line(i.e. not conssitent with status register
values) or the interrupt is getting lost while being propogated to the
interrupt controller. in our setup, device is connected to pci bus, which
is connected to host-pci bridge, but is it possible for the interrupts to
get lost?

if i want to check the interrupt register of the controller, to see what
interrupts are active, which part of the o.s. code i needs to modify.
considering this is very critical code, i would like to go through some
documentation, is there any thing available?


thanks,
mohan

 On Wed, 24 Jan 2001, Mohana Krishna Penumetcha wrote:

> hi,
> 
> we are writing a driver(FreeBSD 4.0) for a switch connected to a PCI port.
> the interrupt handling routine is not getting called. we checked the
> switch IRQ status register and find some interrupts to be pending. we
> have no clue about what is happening, can someone give a few ideas about
> what could be wrong?
> 
> some info you may ask for:
> 
> vmstat -i doesn't show any thing about the device
> 
> there doen't seem to be any conflicts while assigning the IRQ numbers. and
> the IRQ info in dmesg matches with the interrupt line configuration
> register of the device.
> 
> code to register to interrupt routine:
> 
> rid = 0;
> sc->edge_irq = bus_alloc_resource(dev,SYS_RES_IRQ,
>                                   &rid, 0,
>                                   ~0,   1,
>                                    RF_SHAREABLE|RF_ACTIVE);
> if(!sc->edge_irq){
>    /*release all resources*/
>    return -1;
> }
> error = bus_setup_intr(dev, sc->edge_irq,
>                        INTR_TYPE_NET,
>                        edge_intr, /*interrupt handler*/
>                        sc,
>                        &sc->edge_intrhand);
> if(error){
>   /*release all resources*/
>   return -1;
> }
> 
> 
> thanks,
> mohan
> 
> ---------------------------------------------------------------------------
> 	Creativity is allowing yourself to make mistakes and Art is 
> 	knowing which ones to keep.
> 			-Dilbert
> 
> Mohana Krishna P.
> ph:- 527 6100/6108 x6352
> Telecom ODC, Sasken Communication Technologies, INDIA.
> http://www.sasken.com
> ---------------------------------------------------------------------------
> 
> 
> 
> 



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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.LNX.4.10.10101251631180.6275-100000>