Round 6 (June 2013) OPW Linux kernel projects
After being accepted into the program, OPW interns worked on real-world kernel projects, ranging from parallelizing the x86 boot process to updating TTY drivers that were created in 2005 and getting them merged into the staging tree. During the internship period, interns worked remotely, communicating with mentors via email, IRC, phone conversations, and Google hangout. Interns had to manage their own time efficiently and learn how to seek help from their mentors and the community when they got stuck. These skills will prove invaliable as interns move into jobs working with the global Linux kernel community.
Lidza Louina worked with Greg Kroah-Hartman on improving drivers in the staging tree. Lidza started out by doing driver cleanup, then went on to merge two TTY drivers into the staging tree that had been out-of-tree since 2005. That involved getting them to compile, updating the drivers to work with new kernel API, and cleaning them up to match kernel coding style. Lidza contributed 18 patches to the 3.11 kernel, and 62 patches to the 3.12 kernel.
Xenia Ragiadakou worked with Sarah Sharp on the USB 3.0 host controller driver (xHCI). She worked on improving the driver debugging, by adding dynamic debug support and event tracing. This eliminates the need to recompile the driver to turn on debugging, without adding extra overhead when debugging is turned off. Xenia added 12 trace events to the driver, as well as contributing many bug fixes and code cleanup patches. Xenia contributed 100 patches to the 3.11 kernel, 28 patches for the 3.12 kernel, 52 patches for the 3.13 kernel, and 15 patches for the 3.15 kernel.
Lisa Nguyen worked with Konrad Wilk on the Xen block layer. The goal was to extend the Xen block drivers by implementing DIF/DIX, a protocol to add extra checksum information. Lisa will work beyond her kernel internship period to get the block layer code merged. Lisa contributed 23 patches for the 3.10 and 3.11 kernels.
Elena Ufimtseva worked with the Xen team to implement vNUMA in Xen. This involved exposing the NUMA topology to the guest, to allow the guest to make smart decisions through NUMA aware scheduling. Elena continued to work on her project after the internship ended, and sent out her first RFC in December. Elena contributed 10 patches to the 3.11 kernel.
Tülin İzer worked to parallelize the x86 boot process. This meant understanding and modifying very low level bring up code. Tülin continued to work on her project after the internship ended. Tülin contributed 34 patches to the 3.11 kernel.
Old project descriptions
The Linux kernel ethernet drivers communicate with network hardware, to give you access to the Internet. Ethernet devices can be as simple as the 1 gigabit ethernet controllers in your laptop, to much faster ethernet controllers in servers.
Interns would work on the Intel 1 gigabit ethernet driver, igb and/or ethtool, the networking configuration userspace application that works with the drivers. Wired ethernet devices supported by igb are found in some laptops and most servers, but hardware will be provided if you don't have access to it. What will be required is a PCIe slot to put the any hardware you need into and at least one other system (laptop is fine, as long as it has an RJ45 network drop) to use as a link partner and a network cable to link them.
The Linux kernel includes a USB stack that communicates with the hardware behind your USB ports (USB host controller drivers), and includes USB device drivers that talk to your USB devices (USB device drivers).
Interns would work on the USB 3.0 host controller driver. The Linux kernel USB 3.0 host driver works 10 times faster than USB 2.0 host driver. The USB 3.0 driver still needs a lot of work, so there are plenty of small bug fixes that interns can tackle. If time permits, interns could also work on small to medium features.
Another project would be to on refactoring the USB core hub.c.
Mentor: Sarah Sharp (contact info)
This part of the kernel is usually considered one of the more complex areas of the operating system. However, with a bit of guidance, it's really fascinating to see how a computer begins the journey from powered off to a blinking cursor at your login prompt.
Interns would work alongside PJ on central boot code in the Linux kernel. Today, the kernel brings CPU's online one by one in a serial fashion. We can do better. Several stages of changes are planned to go from a completely serial approach to a fully parallel approach to bringing CPU's up. Interns would work on some of these planned changes.
Mentors: Peter Waskiewicz Jr (PJ) (contact info)
Xen subsystem in Linux
The Linux kernel interfaces with the Xen hypervisor via hypercalls and also with other kernels by backend and frontend drivers. Xen's architecture allows to seperate each guest completlty and they can communicate amongst each other using backend/frontend drivers. But as any software exists there are bugs and the need to improve, cleanup and in general make it better. And also help in writting documentation on how Linux and Xen interact.
Multiple design issues with the block protocol (https://docs.google.com/document/d/1Vh5T8Z3Tx3sUEhVB0DnNDKBNiqB_ZA8Z5YVqAsCIjuI/edit). Also there are bugs in the code.
Mentors: Konrad Rzeszutek Wilk (contact info)