Hi All,
We have a board which has it's own 8253[PIT] and 8259[PIC]. The 8253
is configured to raise a timer interrupt on every 20ms and 8259 is
configuered to fw that request to the device driver. In normal case,
the things work fine, 8253 raises interrupt in every 20ms and driver
interrupt service routine is executed. The problem happens if the
application run for long time[ >1day], driver interrupt service
routine is never called-up, eventhough the 8253 raises the timer
interrupt. So I added some diagnostic code to dump the values of the
8253 and 8259 internal registers during failure cases. This shows that
8253 is counting and re-counting without any problem. IMR registers is
not masking the timer interrupt, however IRR register shows that the
bit which corresponds to the timer interrupt is already set, ISR
register is not having that bit set. Based on this, I conclude that,
8253 raises the interrupt and IRR is set correctly, but 8259 is
waiting for the CPU to sent the INTA, but it didn't happen, so it
couldn't set ISR and fw the request to the driver.

The question I have here is,
What should be done to identify why the CPU didn't sent INTA?
any other ideas?


Thanks.

RE: Evenafter IRR is set, the interrrupt service routine didn't execut by pavel_a

pavel_a
Tue Mar 13 13:56:51 CDT 2007

Your PIC is not part of the main board chipset, so why
you think it should get the INTA from the CPU?
By the way, what is the *main* board chipset and how the interrupt
line of your board is connected to it?

--PA

"KK" wrote:
> Hi All,
> We have a board which has it's own 8253[PIT] and 8259[PIC]. The 8253
> is configured to raise a timer interrupt on every 20ms and 8259 is
> configuered to fw that request to the device driver. In normal case,
> the things work fine, 8253 raises interrupt in every 20ms and driver
> interrupt service routine is executed. The problem happens if the
> application run for long time[ >1day], driver interrupt service
> routine is never called-up, eventhough the 8253 raises the timer
> interrupt. So I added some diagnostic code to dump the values of the
> 8253 and 8259 internal registers during failure cases. This shows that
> 8253 is counting and re-counting without any problem. IMR registers is
> not masking the timer interrupt, however IRR register shows that the
> bit which corresponds to the timer interrupt is already set, ISR
> register is not having that bit set. Based on this, I conclude that,
> 8253 raises the interrupt and IRR is set correctly, but 8259 is
> waiting for the CPU to sent the INTA, but it didn't happen, so it
> couldn't set ISR and fw the request to the driver.
>
> The question I have here is,
> What should be done to identify why the CPU didn't sent INTA?
> any other ideas?
>
>
> Thanks.
>
>

Re: Evenafter IRR is set, the interrrupt service routine didn't execut by KK

KK
Wed Mar 14 04:42:49 CDT 2007

INT line from the board is connected to the main board PIC.


Re: Evenafter IRR is set, the interrrupt service routine didn't execut by KK

KK
Wed Mar 14 23:04:00 CDT 2007

What will happen while the driver is executing the service routine,
the same interrupt occured, in that case IRR will have the
corresponding bit set, however it can't be forwarded because ISR will
reflect that previous interrupt is servicing. In that whether 8259
will ignore the new interrupt and it will buffer it?