Garrett D'Amore wrote:
> Steven Stallion wrote:
>> All,
>>
>> I am noticing that on occasion the RTL8029AS seems to fire an interrupt
>> which is not reflected in the interrupt status register which causes a
>> spurious interrupt warning by pcisch.
>>
>> Any ideas?
>>
>> (Yes, I am clearing the interrupt before returning DDI_INTR_CLAIMED)
>>
>>   
> Are you sure that it is the RTL8029AS that is firing the interrupt, and
> not some other device sharing the interrupt line?

As far as I can tell. ::interrupts in mdb does not report that the IRQ
is shared.

Watching dtrace, something peculiar happens every 10-15 seconds - a
series of 3 - 4 interrupts are fired in a row when none should be
generated at all:

  0   6179                    re_intr:entry
  0   6219              re_intr_clear:entry
  0   6179                    re_intr:entry
  0   6219              re_intr_clear:entry
  0   6179                    re_intr:entry
  0   6179                    re_intr:entry
  0   6219              re_intr_clear:entry
  0   6179                    re_intr:entry
  0   6221                 re_portmon:entry

Another odd tidbit is that for some reason, my ISR is being invoked,
even when the device is stopped (this is a huge red flag to me).

> Make sure that you do return DDI_INTR_CLAIMED when you notice the
> interrupt status register indicates a real interrupt, and that you
> return DDI_INTR_UNCLAIMED otherwise.

My ISR follows this pattern:

1) read intr status
2) if 0, return DDI_INTR_UNCLAIMED
3) ack intr status
4) process intr
5) return DDI_INTR_CLAIMED

Steve

-- 
Yet magic and hierarchy
arise from the same source,
and this source has a null pointer.

Reference the NULL within NULL,
it is the gateway to all wizardry.
_______________________________________________
driver-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/driver-discuss

Reply via email to