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
