Kevin C. Scott & Anjali Jain, Intel
In this paper we discuss some of the key software design decisions which were made to facilitate driver development and validation prior to receiving silicon. We discuss engineering collaboration across the hardware, software and firmware teams as partners in the generation of driver code, as well as using driver synthesis to generate code.
The goal of the project was three fold: 1) Develop drivers with a significant number of code paths which are easily exercisable. 2) Allow both open source and closed source drivers to share resources and obtain higher quality code as a result. 3) Allow as much code as possible to be Open Source.
We discuss the lessons learned on what and how to share between drivers, and how to develop the code such that it can be used seamlessly by driver teams with various needs (Linux, Windows, FCoE, iSCSI, DCB, RDMA, silicon firmware modules, etc.).