In <[EMAIL PROTECTED]>,
Andrew Gallatin wrote:
> Bruce Evans writes:
> > Possible causes of the problem:
> > 1) isa_handle_intr() claims to send specific EOIs (0x30 | irq) but
> > actually sends non-specific ones (0x20 | garbage). Since interrupts
> > may be handled in non-LIFO order, this results in EOIs being sent
> > for the wrong interrupts. I think this just randomizes the
> > brokenness caused by delaying sending of EOIs. I can't see how it
> > would result in an EOI being lost -- the right number of EOIs will
> > have been sent after all handlers have returned.
>
>
> I think that sending non-specific EOIs is the problem. Sending
> specific EOIs seem to eliminate my nic timeouts and the need to
> manually feed an eoi to recover from a missing interrupt.
>
> My question is: how does one send a specific EOI correctly? I don't
> have decent documentation for this. Above, you seem to imply that
> 0x30 is a specific EOI. That does not seem to work for me (machine
> locks at boot).
>
> Linux uses 0xe0. According to some Tru64 docs I have,
> that means "Rotate Priority on specific EOI". According
> to that same documentation, 0x60 is a specific EOI. Both of these
> appear to work just fine. What should the alpha port use?
My notes say:
Non-specific EOI : 0x20
Specific EOI : 0x60 | IRQn
EOI + rotate priority : 0xa0
EOI + select lowest priority : 0xe0 | IRQn
--
Robert S. F. Drehmel <[EMAIL PROTECTED]>
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message