Hacking Linux for Fun and Profit at IBM

David Eger GT '03

Anand, David, David (Random), and Ron Woan
at the Capitol of Texas
Of all of the jobs I've had, the time I worked at IBM was by far the most intense, and the most rewarding. It was eleven weeks of Linux kernel and userland programming, working along side some of the most skilled undergraduates I've met. During that summer of 2001, we got to play with a prototype technology, think about the business angles of our project, and in the end present our work to a full array of high executives in IBM from CEO Lou Gerstner to IBM's Director of Computer Science Research Stuart Feldman.

In the Spring of 2001, I had met a recruiter by the name of Ron Woan at an ACM meeting on Georgia Tech campus. He gave a talk on setting up networks to do specific jobs - where to put your databases and web servers, how to arrange the servers for various security tasks, and trying to build enough redundancy into your network so that there aren't any outages. Having been on the core team responsible for the 1996 Olympics web site, he knew this stuff from personal experience; and that was one of the things that attracted me to the internship program - that they had bothered to send a technical person who really knew his stuff. The job description didn't hurt either: Take a prototype technology - an unreleased System-On-a-Chip - and make Linux do something neat with it.

A System-On-a-Chip is basically what the name implies. Take a microprocessor along with most of the things it needs to work with the outside world - an Ethernet controller, a PCMCIA controller, input controllers, a video controller, an interrupt chip, and maybe a USB controller, and shrink it all down into one tiny silicon package. This sort of device is can be general purpose or very specialized, and can be put into a wide range of portable electronics, from mobile phones to PDAs. The kernel is the piece of software that makes the hardware work.

Our toys / Bishop's mad skills
What I found when I got to Austin was a mentor who was as bad-ass as they come. He had been working day and night to get a physical test rig ready for us. The chip we were to develop for, the PPC 405LP code-named "Earl", was still not fully designed, and so Bishop's clever idea was to take Earl's sister chip, the PPC 405 GP and convince it that it was Earl. He did this by putting Earl's new functionality into a couple of FPGA's, and then telling the 405 GP that the new functionality close by. This took lots of mad hackery with solder, PCI daisy chaining, and playing with internal/external CPU busses. For a computer science major - someone who is used to working solely with software, and for which hardware is something the EE's know about - the fact that you could grab some wires and stretch them from one board to another and call them interrupt lines was a bit much. I mean, interrupt lines are abstract notions in the textbooks! Even wilder is compiling your kernel to try to fix a problem and having your machine's input suddenly stop working. "Did I break my kernel? What did I change? It was only three lines, and it had nothing to do with the touch panel code! Hmm.. well, let's try the old kernel. That one doesn't work anymore either. When was the last time I remember the input working properly? I know Ben is working on this stuff; I wonder if he's changed anything..." and after about half an hour looking over to realize that someone bumped the interrupt wires out of their sockets.

The Earl Intern Team
Matthew Helsley - Touch Panel
Benjamin Li - PCMCIA, Flash Boot
Benjamin Gigot - Business Case
David Eger - Video
Over the summer, I wrote a driver for an LCD controller that the hardware geeks had built and spent a lot of time trying to optimize a graphics stack. My comrades - Ben Li and Matt Helsley from UCLA, and Benjamin Gigot from Harvard - worked on getting the input (a touchpanel) and the PCMCIA + IBM Microdrive working. The summer gave us many an opportunity to learn EEish things - how to burn an EEPROM, how to use hardware debugging tools and inspect CPU lock-ups, and when to ask bishop for the soldering iron so we could get our serial-port game controller gerry-rigged through the PCMCIA slot.

Chasing down obscure hardware and software bugs and eating sushi and Chinese food was life for my team on many a freezing summer night. Yes freezing. Yes, in Texas. In the land where it was over a hundred degrees for a month on end. Our work was in the lab on the sixth floor of building 906. The lab, formerly a computer room, had three industrial sized air conditioners with two settings: Off, and Freezing. So while the rest of the world sweated out the summer nights, we brought blankets and poked around at our toy machines, trying to make them show pretty colors and do something neat when we poked at their screens.

The chip, code-named "Earl" by the playful folks at Austin Research Lab was unveiled to the world on March 13, 2002 at the Embedded Systems Conference in San Francisco. It was running a 2.4.17 Linux kernel booted from flash, Qt/Embedded running on the framebuffer with the touchpanel, and an MPEG-4 video player streaming data from an IBM microdrive. It also featured dynamic voltage and frequency scaling - an exciting power-saving technology in the embedded space which gives great hope of extending battery life.