My Linux 2.5 Trials and Tribulations

I'm going to document my tinkerings with the new Linux 2.5 kernel series (see www.kernel.org) here. It won't be anything official, just a collection of notes. I've made the effort of writing it in HTML for you all though, to make the link clicking a little easier I guess.

This document originally started with kernel version 2.5.54, but now I'm onto 2.5.66 and have kept an archived copy.

I have recompiled a few times throughout this testing which will certainly skew any bug reports based on this information alone, so be aware.

Discontinued

I have recently purchased a Apple PowerBook G4 and have moved to Debian on that. This is where my experience with Linux 2.5 on the Dell Inspiron ends. I was mainly using 2.5 on the Dell because of compatibility and power consumption problems on 2.4, but they aren't much of an issue on the PowerBook thanks to good hardware and BenH's hard work (and AGP isn't support on ppc yet with 2.5). I'm currently using 2.4.21-pre, but have plans to play with 2.5 on the powerpc architecture soon enough. Please keep e-mailing me with any feedback regarding 2.5 and I'll keep this up-to-date with anything new I learn.

I passed my laptop onto my friend Matt Hall who may keep running with the 2.5 documentation torch. Check out his site.

The Hardware

Most of this work will take place on my laptop. I'll note if and when things relate to other hardware. Here are the specs:

00:00.0 Host bridge: Intel Corp. 82845 845 (Brookdale) Chipset Host Bridge (rev 04)
00:01.0 PCI bridge: Intel Corp. 82845 845 (Brookdale) Chipset AGP Bridge (rev 04)
00:1d.0 USB Controller: Intel Corp. 82801CA/CAM USB (Hub #1) (rev 02)
00:1d.2 USB Controller: Intel Corp. 82801CA/CAM USB (Hub #3) (rev 02)
00:1e.0 PCI bridge: Intel Corp. 82801BAM/CAM PCI Bridge (rev 42)
00:1f.0 ISA bridge: Intel Corp. 82801CAM ISA Bridge (LPC) (rev 02)
00:1f.1 IDE interface: Intel Corp. 82801CAM IDE U100 (rev 02)
00:1f.5 Multimedia audio controller: Intel Corp. 82801CA/CAM AC'97 Audio (rev 02)
00:1f.6 Modem: Intel Corp. 82801CA/CAM AC'97 Modem (rev 02)
01:00.0 VGA compatible controller: nVidia Corporation NV11 [GeForce2 Go] (rev b2)
02:00.0 Ethernet controller: 3Com Corporation 3c905C-TX/TX-M [Tornado] (rev 78)
02:01.0 CardBus bridge: Texas Instruments PCI4451 PC card Cardbus Controller
02:01.1 CardBus bridge: Texas Instruments PCI4451 PC card Cardbus Controller
02:01.2 FireWire (IEEE 1394): Texas Instruments PCI4451 IEEE-1394 Controller

Ximian Evolution

Evolution stopped working properly when I moved to 2.5.54 but according to the kernel changelog, this has now been addressed in 2.5.56+. See my 2.5.54 document which has a few more details and some modified ORBit RPMS (which fix the problem at the userspace level instead)

ACPI

My Dell Inspiron 8200 spikes to 100% CPU when gnome battstat-applet reads the battery status. I had similar problems with an Inspiron 4000 with 2.4 so I assume it's a lame hardware implementation. I'll check into it further soon.

UPDATE: I noticed in the version A07 Dell Firmware changelog ( ftp://ftp.us.dell.com/bios/I8200A07.TXT) a note regarding an "enhancement" which purports to "Improved battery status reporting algorithm to reduce time spent in SMM when updating the OS battery information.". I've had this version installed for some time and still observe a CPU hike each time the battery status is read. Not sure who to report this to at Dell.

APM

I am truly amazed by the apm support so far. I can fully suspend and wake-up my laptop without the usual problems i.e: corrupted display, X crashing, dead network cards, dead sound cards, hardware freezing, rebooting (in actual fact, I've never even had a successful suspend on *any* apm "compliant" hardware with any Linux, EVER! Until now...

I'm sure technically it's far from perfect (I find the idea that anything related to APM can be perfect rather amusing), but it's a far cry from my 2.4 experiences.

USB

Module kernel panic

Inserting the hid kernel module into a kernel with hid statically compiled in causes a kernel panic. (NULL pointer dereference). My colleague thinks this may be related to the define init code. I need to confirm this and report it.

UPDATE: Linux kernel module handing has changed considerably, see the modules section.

RedHat 8.0 initscript incompatibilities

Modules

None of my kernel modules automatically load. I guess need to "migrate" my modules.conf. More details when I do so.

UPDATE: Linux kernel modules and the their handling seem to have changed dramatically. I'll learn more about them and report back here soon. The modutils tools such as modprobe, insmod and depmod won't work with 2.5. I'm currently investigation what I should be doing. Research so far points to new tools known as module-init-tools.

Mouse

I changed my XFree86 config to use the /dev/input devices now instead of /dev/psauxf (even though this device is still available under 2.5. This is in the hope that I won't need to change my mouse preferences each time I change from mouse to touchpad (I'm hoping the resolutions will be detected or something). More details soon.

CPU Frequency Scaling

My Mobile P4 seems to frequency scale just perfectly now (although given the option, "P4/Xeon(TM) CPU On-Demand Clock Modulation" gets chosen over Speedstep, which I thought was the default on my CPU (Intel(R) Pentium(R) 4 Mobile CPU 1.60GHz).

Cpufreqd seems to do a nice job of monitoring my battery via apm and changing the scaling policy dynamically. I wrote a RedHat 8 init script for it (as requested in the TODO file) based on the RedHat APMD script.

The latest apmd package from RedHat's Rawhide has a little cpufreq support. The last changelog for apmd-3.0.2-14 reports: "if CPUFREQ="yes" and /proc/cpufreq exists, use cpufreq to change between performance and power-save when switching between ac and battery".

Apparently the /proc/cpufreq interface is now also deprecated. You are supposed to use sysfs, which I've not investigated much yet.

Burning/Ripping CDs

Ripping

Ripping seems faster, but this is a subjective analysis. I've witnessed ripping speeds up to double the fastest speed I've ever achieved on a 2.4 kernel, although I'm never in enough of a hurry to need to rip CDs so I don't spend a lot of time tweaking and testing.

During the tests cdda2wav was using less than 1% user cpu, and 30% system (on a 1.6Ghz P4 reaching ripping speeds of 8x). I used the cdda2wav tools from Jens Axboe

Burning

I will do some cdburning tests as soon as I find my laptop CD writer. I believe it is in the excessively pocketed laptop bag Dell kindly supplied to me for "free (ie: an absorbed cost). UPDATE: It was in the bag. Not done any tests yet though.

cdrecord

The special cdrecord utils from Jens Axboe (url above) currently seem to detect my CD writer incorrectly. I've not actually tested a write yet so I can't be sure. Here is the output from the scanbus:


[root@dwight linux-2.5]# cdrecord -scanbus -dev=ATAPI:
Cdrecord 1.11a39 (i686-suse-linux) Copyright (C) 1995-2002 J?rg Schilling
scsidev: 'ATAPI:'
devname: 'ATAPI'
scsibus: -1 target: -1 lun: -1
Warning: Using ATA Packet interface.
Warning: The related libscg interface code is in pre alpha.
Warning: There may be fatal problems.
Using libscg version 'schily-0.7'
scsibus0:
        0,0,0     0) *
        0,1,0     1) 'ADAPTEC ' 'ACB-5500        ' 'FAKE' NON CCS Disk
        0,2,0     2) *
        0,3,0     3) *
        0,4,0     4) *
        0,5,0     5) *
        0,6,0     6) *
        0,7,0     7) *

cdrdao

I don't think the cdrdao tools can make use of my ATAPI cd writer yet, as cdrecord can. It doesn't like being given the ATAPI:0,1,0 string as a device:


[root@dwight linux-2.5]# cdrdao disk-info --device ATAPI:0,1,0
Cdrdao version 1.1.5 - (C) Andreas Mueller <andreas@daneb.de>
  SCSI interface library - (C) Joerg Schilling
  L-EC encoding library - (C) Heiko Eissfeldt
  Paranoia DAE library - (C) Monty
                                                                                                                              
Check http://cdrdao.sourceforge.net/drives.html#dt for current driver tables.
                                                                                                                              
ERROR: Cannot open SCSI device 'ATAPI:0,1,0': Cannot open 'ATAPI'
ERROR: Please use option '--device bus,id,lun', e.g. --device 0,6,0
ERROR: Cannot setup device ATAPI:0,1,0.

UPDATE: I compiled in ide-scsi and got cdrdao working fine (using the boot parameter "hdc=ide-scsi" in my case). Ripped and burned a CD containing data and audio.

Frame-buffer

The NVidia frame buffer driver doesn't work for my GeForce2 GO card. According to the source it is supported, but booting with vga=796 just produces what looks like 4 copies in the screen, with green lines through it. Sticking to the VESA one for now.

UPDATE: It now works, but doesn't like any vga= code. It can boot in normal 80x60 mode, with the penguin logo as evidence, and seems *far* faster than the VESA driver which I've had to use up until now. I've not tried XFree86 with it yet, or got it working in any other mode. Sometimes switching over to X and back causes it to mess up considerably, but having 2 different drivers access the same hardware is just asking for trouble.

Lucent "Silver" 11Mb Wireless PCMCIA network card (orinoco)

These cards have given me nothing but trouble since forever. In 2.4 it was pretty much hit and miss as to whether they would be detected or setup correct, depending on which kernel, and what compiled options. The same went for 2.5. I got "RequestIRQ: Resource in Use" messages whenever I inserted the device.

I finally got it working today after *much* recompiling with various combinations of various options. Module based code just panicked my kernel on load, so I scrapped that idea. Here is my recipe for getting these cards working with the orinoco_cs drivers on Linux.

I'm planning on accessing my newly installed cable Internet connection around my home with these cards. I'm particularly interested in browsing slashdot whilst on the pot. To do this securely (the wireless bit specifically, not the pooping bit) I'm going to try get the new IPSEC stack working. I've had lots of experience with FreeS/WAN and Pluto, but this probably won't be to my advantage due to it's overly obscure nature. As usual, I'll report back here.

Firewalling (netfilter)

I've built an iptables rpm (src rpms too) against the 2.5.59 kernel with all the Netfilter options selected (except the snmp and arp tables). It's working for me (the bits I've tested) except the NETLINK targets.

Weirdness and "issues"

XFree86

I've made my XFree86 config available online. It should work fine with my kernel config.

Kernel Config

A number of people have e-mailed me requesting a copy of my kernel config, so I have uploaded it. It was last testing with version 2.5.66.

Valid HTML 3.2! $Date: 2003/07/18 08:57:31 $
Copyright (c) John Leach <john at johnleach dot co dot uk >