LWN.net Logo

Kernel Summit 2005: The hardware vendors' panel

From LWN's 2005 Kernel Summit coverage.
The second day of the 2005 Kernel Summit started with a panel session on device drivers, hardware vendors, and interactions with the development community. Bringing hardware vendors into the community remains a difficult issue, one which creates a fair amount of confusion and frustration on both sides. Sessions like this one may slowly help to bring a greater level of understanding, but real solutions will be some time in coming.

The first panelist was James Smart from Emulex, which first started working toward inclusion of its drivers when the distributions insisted on it. If a driver is not in the mainline, the distributors are increasingly uninterested in shipping or supporting it. Mainline inclusion also makes life easier from a customer support point of view; it is better if you do not have tell your customers to apply patches to their kernels to be able to use your products.

Working toward inclusion requires some changes in the corporate development process. When code is to be reviewed by the community, it must meet that community's standards; that includes following common coding patterns and generally writing the code to be easy to understand quickly. Drivers are expected to use common code, but, more importantly, the "second man in" is often expected to recognize commonality with existing code and help create the common code to be shared with other drivers. Developers who are not prepared to work with the community in this way may find themselves surprised. Similarly, a driver writer should submit fixes for problems found elsewhere in the kernel, rather than simply working around them.

Managers tend to like fixed schedules, but the development community does not work that way. Part of getting a company into the community is teaching its management to cope with uncertainty in scheduling. Trying to impose a deadline on the inclusion process is a sure recipe for frustration.

One of the big frustrations James mentioned - and which was echoed by other members of the panel - is the need to support multiple versions of the kernel. Different distributors ship different versions of the kernel, and each needs to be supported. The community frowns on compatibility glue, so it is hard to keep a single version of a driver around. This is simply a fact of life, an expense which must be dealt with.

Attempting to maintain a single driver which works on other operating systems as well is completely out of the question.

There are advantages to all this: the resulting driver will be smaller, cleaner, and easier to maintain into the future. Reviews from kernel developers can also be helpful in overcoming internal barriers to change. On the other hand, the inconsistencies between kernel versions and distributions can be painful. Add in customers with their own patches, and the situation gets even worse.

Another problem can be waiting for other, important parts of the kernel to mature. The device mapper code was given as an example here.

The next speaker was Andrew Vasquez from QLogic. His brief talk went over some of the hassles he has had to deal with. At the top of the list was firmware blobs. They create big patches and have GPL issues. Interestingly, he said that the firmware issues, along with pressure from "a major distribution," are motivating the company to move its firmware back into the device. If the driver does not have to load firmware to make the device function, these issues go away.

Since, as he put it, "a double-digit percentage" of QLogic's sales are for Linux systems, providing good support (and keeping the community happy) matters to the company.

Another big problem was, again, maintaining drivers over multiple versions of the kernel. Failover is another one: QLogic does not want to handle failover issues in its drivers, but getting that capability into the higher levels of the kernel has taken some time. At least, it was pointed out, it is possible to work toward that sort of change; drivers written for proprietary systems must, by force, cope with the limitations of those systems.

Then came James Ketrenos from Intel, who has been working with the IPW2100 and IPW2200 drivers. He noted that the IPW2100 Linux driver project began 12 months after the product was launched. The IPW2200 driver project started six months after the product came out. For the 2915ABG driver, the project started three months before the product launch. This is the sort of trend that the kernel developers like to see.

The biggest problem, according to James, is that customers only want to run Intel-certified drivers. But how can that come about when Intel does not control the software? A couple of possible approaches were mentioned:

  • Keep everything in the mainline, but require vendor signoff on any patches which are proposed for merging. James knew that the kernel developers were not going to accept this one.

  • Keep the driver out of the tree, and maintain control of it.

The problem here, of course, is that the vendor is trying to keep control over an open source driver, but such control is contrary to the very idea of open source. It is simply not going to happen. Vendors need to understand that they will not have the ability to require certification for any drivers (and any patches) merged into the mainline kernel. The truth of the matter is that most customers don't want that anyway; they want a well-maintained driver which is present in the mainline.

Nonetheless, Linus promised that, if Intel could get the top laptop manufacturers to support Linux (and only Linux), he would guarantee that nobody else could touch their particular driver.

Beyond that, Intel has run into a common vendor problem. Vendors do not want to post code, even for review, until it has passed through the whole corporate quality control and legal gauntlet. By that time, however, it is far too late. Chances are that there will be a fundamental problem which will require substantial rewriting, and that will set the process back by months (at best). It is better to post code early, deal with the comments, and avoid expensive setbacks later in the process. To this end, the Intel developers are currently trying to get approval to post pre-certification patches to the netdev tree for testing and review. One can only wish them luck.

The final speaker was Tim Bird, representing the Consumer Electronics Linux Forum. Vendors in this space also have version support issues, but of a slightly different variety: they tend to stick with old kernels for a long time. Many of them are still using 2.4. This situation has not been helped by the fact that support for the boards used in embedded systems tends to lag behind - though 2.6 has been better in that regard.

Consumer electronics firms have different ideas of code quality. Much code which is considered good enough for a closed platform is not something one would want to post to the world. Embedded systems development tends not to emphasize generality and long-term maintainability; this industry shoves a product out the door and moves on. So much of its code is not suitable for contribution back to the community.

In addition, these companies tend not to put their best developers on community work; those guys are locked in the basement trying to get the next product out. When a developer does get the opportunity to contribute something, it tends to be in a two-week window before the next product crunch begins. As a result, embedded developers have a tendency to dump some (often terrible) code on a maintainer, then disappear again. These developers never get the chance to learn how to work with or earn trust within the community. To make things worse, consumer electronics developers tend to deal in lots of proprietary secret stuff, have little time for after-work coding, and lack confidence in their English language skills.

So getting embedded systems developers to work more with the community is going to be a challenge. CELF is going to try to help by hiring a developer of its own; this person will, among other things, help to serve as a liaison between embedded developers and the community.

Tim also allowed as to how a nice, stable kernel programming API would be a nice thing to have. He knew better than to push that issue in this crowd, however.

James Bottomley, the leader of this session, summarized with a few points of his own. He stressed the need for involvement with the community from the start. The 2.6 development process makes stabilization harder; James seems to think that it is not working entirely well. Negative feedback from the community remains an issue; if we want to be an inclusive community, we need to treat people more nicely on the mailing lists. Finally, more educational outreach to manufacturers can only be a good thing. Corporations can learn to work with free software, given time and patience.


(Log in to post comments)

The hardware vendors' panel

Posted Jul 20, 2005 3:06 UTC (Wed) by jwb (guest, #15467) [Link]

What kind of crack is the Intel guy on? I've never heard someone say "wow I would love to run Linux, but until it has certified drivers, I'm not touching it." If anything, people prefer drivers in the mainline, even ones that came from random unknown hackers, to the trash that comes from most manufacturers.

The hardware vendors' panel

Posted Jul 20, 2005 4:24 UTC (Wed) by iabervon (subscriber, #722) [Link]

I suspect that most people who buy stuff directly from Intel (i.e., Intel's actual customers) care about certified drivers, while others tend not to. So few users care, but those who do are important contracts for Intel.

It seems to me like the right way for them to do things is to have a driver in the mainline that other people patch as needed, and keep their own version in their own repository that they certify. Then users who care about certification can get the driver from Intel, while others can get it from the mainline.

Intel certified drivers

Posted Jul 22, 2005 0:29 UTC (Fri) by giraffedata (subscriber, #1954) [Link]

What I don't get is why does an Intel customer need Intel to certify a device driver, but none of the rest of the system? In the kernel alone, more than half the code that has to work right for the customer to successfully exploit the Intel product is not part of the driver in question. Who certifies the rest of Linux? It's always been my impression that using Linux and getting performance guarantees are dichotomous.

So I agree that what a company in Intel's position should do is simply design to and test with a particular entire system configuration (driver, kernel, middleware, applications, ...) and advertise those particular test results and leave the customer to do what he always does with Linux -- try to stick close to that configuration, and assume the risk of breakage.

Intel certified drivers

Posted Jul 22, 2005 10:08 UTC (Fri) by farnz (guest, #17727) [Link]

PHB syndrome kicks in; their Dell laptop is an Intel Centrino laptop, which implies that Intel makes most of the hardware in it. Everyone knows that hardware is much more important than software, since it's so easy to copy software, yet very hard to copy hardware. Therefore, only device drivers matter, since the rest of the kernel doesn't do anything with the hardware.

You and I know that this is a completely wrong assessment of the situation, but it's how PHBs are prone to thinking.

The hardware vendors' panel

Posted Jul 20, 2005 4:43 UTC (Wed) by gdt (subscriber, #6284) [Link]

If you've never heard that said then you've never read a corporate PC buying contract. It's how corporate buyers ensure that the PC they buy fully interoperates with the operating system chosen by the IT Department.

That Intel are seeing this request is good. It means that some IT Departments have asked their buyers to ensure that Linux runs on the notebooks they buy.

The hardware vendors' panel

Posted Jul 22, 2005 8:08 UTC (Fri) by bronson (subscriber, #4806) [Link]

jwb, apparently you work in a small company? The PHBs that I know ask for "XYZ Certification" all the time. Certification is mostly meaningless, of course, since modern computers are so incredibly complex. But they don't understand that. And they control the purse strings.

That said, I don't see that there's much of a problem here.. Intel can simply say, "the zqfmgb driver in Linux 2.6.14 is Intel Certified." True, they'll have to certify a new kernel release every 4 months or so. That should be trivial unless their driver is undergoing serious code churn.

"and only Linux"

Posted Jul 20, 2005 8:23 UTC (Wed) by eru (subscriber, #2753) [Link]

This sounds so odd I suspect insufficient context, or insufficent smileys. Could someone who was present clarify?

Nonetheless, Linus promised that, if Intel could get the top laptop manufacturers to support Linux (and only Linux), he would guarantee that nobody else could touch their particular driver.

Especially the "only linux" part. I have hard time believing Linus would say that (except tongue firmly in cheek). Was that part from the talk by the Intel guy, or an audience comment from the Man himself?

"and only Linux"

Posted Jul 20, 2005 10:50 UTC (Wed) by corbet (editor, #1) [Link]

Yes, of course it was tongue-in-cheek. Sorry if that wasn't clear.

The hardware vendors' panel

Posted Jul 20, 2005 20:46 UTC (Wed) by oak (guest, #2786) [Link]

Why the multiple kernel version driver support cannot work like the kernel
does?

Instead of having backwards compatibility in newer drivers, add forwards
portability to the drivers for old kernels... (I quite liked that idea
when I first heard it :))

Copyright © 2005, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds