[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

"out-of-context" delayed completions



Greetings,

If a device is reset while it has an outstanding delayed request, I
assume the device won't complete the delayed transaction, leaving an
"out-of-context" delayed completion lying around in an HB or PPB.  This
"out-of-context" delayed completion might later be used to complete a
delayed transaction under a different context, effectively corrupting
the transaction.  When a driver does a reset, how can it overcome this
problem?  Below is a specific example of the problem, though the problem
also can occur with delayed writes as well as delayed reads.

 - A device attempts a DMA read from a work queue in host memory, and is
   retried by the HB since the HB is handling it as a delayed
   transaction.

 - The device driver issues a reset to the device, via a PIO write.  The
   timing is such that the PIO write is on its way down to the device
   ahead of the DMA DRC.

 - The reset reaches the device and causes it to forget about completing
   the earlier DMA read from host memory.

 - The driver sets up a new work queue (context) in host memory.

 - The DMA DRC for the earlier context remains in the HB.

 - The driver restarts the device and the device resumes.  The device
   attempts a DMA read to the same location it did just before the
   reset, and the HB returns the now "out-of-context" data in the DMA
   DRC, effectively corrupting the transaction.

Joe Cowan

*----------------------------------------------------------------------*
|                              JOE COWAN                               |
|                  System Architecture and Design Lab                  |
| Email: jpc@fc.hp.com                     Joe Cowan - MS B5           |
| Work: (+1) 970 229-2404 | (T)229-2404    Hewlett-Packard Company     |
| Fax:  (+1) 970 229-3197 | (T)229-3197    3404 East Harmony Road      |
|                                          Fort Collins, CO 80525 USA  |
*----------------------------------------------------------------------*
L<