Hi Joost!

Joost Mulders wrote:
> Steve,
> 
> These might be caused by posted-write buffers on a PCI bridge as well.
> Your service routine could look something like this:
> 
> status = rtl_read(interrupt status) & interrupt configuration
> if (status == 0)
>  return unclaimed
> else {
>  rtl_write(status)
>  rtl_read(something)
>  rtl_work()
>  return claimed
> }

This is the exact pattern I am using in the ISR (with the exception of
the second rtl_read invocation).

> The rtl_read(something) is to ensure that all data is delivered to host
> memory before rtl_work() processes it. Without the "read something",
> data can be queued (posted) in an intermediate bridge. It could be that
> your device interrupts again when it sees that not all descriptors are
> taken by the host after acknowledgement.

Interesting. I'll give this a shot and see what happens.

> Note that I don't have any authority on this subject. It's just that
> I've been reading the Shanley PCI book (p256 if you have it) on this
> topic recently.

I've been eyeballing that book for a little while now. It sounds like
its time to pull the trigger and pick one up :)

Thanks!

Steve
_______________________________________________
driver-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/driver-discuss

Reply via email to