David Gibson's Home Page

I'm a Linux kernel hacker, mostly, though I've also worked on other projects including, recently, qemu. I'm currently working in Red Hat's virtualization group.

Device Tree Compiler and libfdt

I wrote the Device Tree Compiler, a program which takes a textual representation of an Open Firmware style device tree, and converts it into the flattened device tree binary. This format is used by the powerpc Linux kernel to supply a device tree for embedded powerpc systems which don't have Open Firmware. The format is now also used by several other Linux architectures including ARM, and by some other software such as U-Boot.

I also wrote libfdt, a library for manipulating flattened device trees. It is designed to be embeddable nearly anywhere flattened device trees are used, including in the constrained environments of bootloaders and firmware. Currently it is used by the Linux kernel, U-Boot and qemu amongst others.

Day to day maintenance of dtc and libfdt and has now been taken over by Jon Loeliger of Freescale. Releases can be found here.

Linux support for the Logitech QuickCall USB VOIP Speakerphone

This is a rather neat USB Audio speakerphone gadget (now end-of-life). Unfortunately Logitech only supplies Windows drivers. However, it's almost a standard USB Audio Class device, so with a few tweaks I've managed to get it working under Linux.

Junk Code

Assorted small bits and pieces of code. Everyone should have a junkcode pile.


Assorted papers written for various conferences. None terribly recent any more.

Old projects:

I wrote the "orinoco" driver, a (then) new driver for Lucent/Cabletron and some PrismII IEEE802.11 wireless cards, designed to replace wvlan_cs. It cleaned up some ugliness in that driver. It's been included in the Linux kernel since version 2.4.3, and maintenance has now been taken over by Pavel Roskin

I wrote esky a process checkpointing system that works under Solaris and Linux. Unlike most checkpointers, it uses no assembler, so it is portable between different CPUs.

In 2001, I worked on an electronic voting and counting system to be used in the 2001 ACT elections.

I'm also did some initial work on libkbl with Alex Smola. It's a C library for working with support vector machines and other kernel-based learning machines (that's mathematical kernels, not OS kernels).

david AT gibson.dropbear.id.au
Last modified Wednesday, 27-Jan-2016 20:06:21 AEDT