Re: PCI bus operations and driver design

Tech-Archive recommends: Repair Windows Errors & Optimize Windows Performance

From: Dwight Holman (dwight.holman.SPAM_at_xtra.co.nz)
Date: 10/05/04


Date: Tue, 05 Oct 2004 16:08:26 +1300


>>So, is it possible for a write to memory mapped DPRAM to occasionally
>>fail?
>
> Yes, but on most platforms these failures are catastrophic and global and not
> the concern of individual device drivers. On some platforms you could
> experience a 'hot unplug' (aka surprise removal) of your pci device as a result
> of such a catastrophic event, so it is a good idea to correctly implement your
> surprise removal path and to prevent endless loops in your hardware access
> routines. There is a white paper on driver hardening on the microsoft web site.
> It was by a certain Simon Graham and it was presented at winhec a few years
> back and it covers the basics.

Thanks for your comments.

The problem I'm chasing doesn't sound anything like that. So perhaps
I'm on the wrong track.

>>Can anybody out there share their experience of the possible failure
>>scenarios when performing such operations over a PCI bus?
>>
>>What strategies are required to ensure that writes to such memory
>>(over a PCI bus) occur reliably?
>
> It is up to the platform hardware to manage the bus and its reliability, not
> your device driver.

So, a bug in the PCI hardware could cause such problems...

What about interaction with another PCI device on the same bus?

>>I guess the answer is 'it depends', so ok... Lets assume that we must
>>either succeed in writing the memory, or know clearly that the
>>operation failed.
>>
>>To me the simple (intuitive) answer is that after writing the memory,
>>the driver should read it back to verify the operation worked.
>>
>
> Don't do that unless you have gobs of excess bandwidth that you desperately
> need to consume :-)
>
> Assume that the transaction succeeded. If it doesn't either the system will
> crash (standard PC architecture) or your device will suddenly disappear (high
> end HA server platforms.)

Well we're not transferring large amounts of data, so we won't have
that problem ;-)

Dwight



Relevant Pages