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>