Re: Getting X on Linux/SGI
From: Nigel Gamble <hidden>
Date: 1997-06-20 20:17:13
On Fri, 20 Jun 1997, David S. Miller wrote:
He was given QNX to write his drivers and get the box going. Since it is a micro-kernel, you have to perform a task switch to handle even an interrupt, and you have to compile your interrupt handlers with a special compiler and compiler options using QNX compilers just to cope with this bullshit. This was on both systems. Interrupt response was so slow, that even when he coded the drivers in raw optimized assembly he could not keep up and would drop characters easily on his serial ports, the ISDN performance sucked balls as well. So eddie got so frustrated one night that he took both the m68k and Intel ports of Linux, in about an hour added kernel build time configuration options such as "CONFIG_NO_MEMORY_MANAGEMENT", "CONFIG_NO_FANCY_SYSCALLS", "CONFIG_NO_USELESS_FEATURES" and the like to the point where he was able to get a 120k sized Linux kernel with his drivers and the specialized code to run the control systems he needed to deploy, and he got full over the serial line KGDB source level debugging of his kernel as well. The next night he got it completely working and debugged, needless to say this thing didn't have the interrupt performance problems QNX did. The next evening he blew the first revisions of the PROM's the boxes would eventually use in production when these things got sent to the customers.
This tells me more about this guy's determination to use Linux, come what may, than it does about QNX. If he'd put half the effort into learning the QNX device driver model that he did into hacking Linux, I bet he could have solved his problem with QNX. I certainly could. When I first implemented a version of the Linux parallel port printer driver that used interrupts (because the polling driver was only printing one line every 30 seconds on my old dot-matrix printer), I discovered that my driver couldn't send characters fast enough to keep up with a laser printer. Does this imply that Linux's (non-threaded) interrupt performance sucked? No, it just meant that my naive first attempt was taking an interrupt for every character. Nigel Gamble "Are we going to push the edge of the envelope, Brain?" Silicon Graphics "No, Pinky, but we may get to the sticky part." nigel@sgi.com (415) 933-3109