\section{Conclusions}

\noindent The performance and development costs of existing driver
fault-tolerance mechanisms have restricted their adoption.  In this
paper, we presented fine-grained fault tolerance, a {\em
  pay-as-you-go} model for tolerating driver failures that can be
dynamically invoked for specific requests.  Fine-grained fault
tolerance is made possible due to device checkpoints.  This
functionality is often considered to require a significant
re-engineering of device drivers. However, we demonstrate that
checkpoint functionality is already provided by existing
suspend/resume code. While we only applied checkpoints to fault
tolerance, there are more opportunities to use device
checkpoint/restore, such as OS migration, fast reboot, and persistent
operating systems that should be explored.

\section*{Acknowledgments}
\noindent This work is supported by National Science Foundation (NSF)
grants CNS 0745517 and CNS 0915363 and by a gift from Google. We would
like to thank our shepherd Emmett Witchel for useful feedback.  Swift
has a financial interest in Microsoft Corp.
