Automated Porting of Device Drivers - APD2

Automated Porting of Device Drivers - APD2



The device drivers are the main cause of operating system (OS) crashes. However, we have found in our study that the overall quality of drivers is quickly improving in Linux. Moreover, Linux has the largest number of supported devices, and these devices are supported until "no user can be found". This project aims to propose an OS-independent implementation of the device drivers, making easier the building of new versions for different Oses. Linux drivers are used as a repository of drivers to extract an OS-independent version; To do so, the extraction process is based on a description of the internal OS API. Then, thanks to the description of another internal API (for a different version of the OS or another OS), the goal is to retarget the OS-independent driver version. This process is useful either for driver backporting or driver portability across OSes.

Scientific results

The internships aim at define the internal APIs of Linux involved in the driver code of the selected devices. These internal APIs are described for a particular version. In the case of network devices, the API of the network subsystem is involved, as is the power management API, the memory management API, and the packet management API, among others. As a first step, we study the case of backporting where at least one of this API is different.


Thank to the APD2 project, a new collaboration between the ERODS group at the LIG and the SLS group at the TIMA laboratory has been established. The coordinators have being mentoring the internship of Damien Crastes de Paulet in 2016 (Polytech, RICM4), and are currently following the research project of Gerardo Larreinegabe (UFR IM2AG, M1 informatique). Damien had studied the BCM63xx SPI driver of Linux and its equivalent inside Contiki for the AT91 micro-controller. Gerardo is starting to study a network driver used for virtual machines. This research project will be followed by an internship. Moreover, the collaboration between the ERODS group and the Whisper INRIA group is reinforced. A publication is under-review at HoTOS 2017, and a visit of Nicolas Palix is planned in April for a week.


Nicolas Palix, assistant professor  at University of Grenoble-Alps, LIG-ERODS research group.
Frédéric Rousseau, professor at University of Grenoble-Alps, TIMA-SLS research group

Significant publications on this topic

[1] Hui Chen, Guillaume Godet-Bar, Frédéric Rousseau, and Frédéric Pétrot. Device driver generation targeting multiple operating systems using a model-driven methodology. In RSP 2014, New Delhi, India, October 16-17, 2014, pages 30–36. IEEE, 2014.

[2] Nicolas Palix, Gaël Thomas, Suman Saha, Christophe Calves, Gilles Muller, and Julia Lawall. Faults in linux 2.6. ACM Transactions on Computer Systems (TOCS), 32(2):4, June 2014.

[3] Vitaly Chipounov and George Candea. Reverse engineering of binary device drivers with revnic. In Proceedings of the 5th European conference on Computer systems, pages 167–180. ACM, 2010.

[4] Leonid Ryzhyk, Peter Chubb, Ihor Kuz, Etienne Le Sueur, and Gernot Heiser. Automatic device driver synthesis with termite. In ACM Symposium on Operating Systems Principles, SOSP ’09, pages 73–86, New York, NY, USA, 2009. ACM.