GRUB for ThinkPad 600E mods

Being a Linux user, I have not been satisfied with the existing solutions to enable the speedstep mod. The kernel module by wmarcusm is great but has one problem. Since it does not change the kernel's internal variables like loops_per_jiffies, time-related tasks can malfunction. If you do 'sleep(1)', it actually sleeps less than 1 second. I do a lot of timing-sensitive stuff, so it is a real problem for me.

The tsc is not recalibrated either. To make everything work properly, the kernel source has to be modified. But, if you have no problem giving up tsc, it is possible to add "clock=pit" to the kernel boot options. Then you only need to update loops_per_jiffies or cpu_data.loops_per_jiffies, which can be done in a kernel module.

But I wanted to use tsc as the time base and did not want to patch and recompile the kernel everytime I install a new kernel. So I put them in the boot loader, GRUB.

I am not using Windows, but if you do, it will activate the mod and enable the cache before Windows loads. It will also activate the mod/l2cache when waking up from WinXP hibernation. (If APM hibernation is used, it won't work, as APM hibernation/wakeup is implemented in BIOS and bypasses the bootloader. WinXP uses ACPI by default and implements its own hibernation method.)

Even with this version of GRUB, wmarcusm's programs will be still useful for re-enabling the feautures after waking up from suspend or APM hibernation.

One thing to note is that the port address is hardcoded. Smile Yes, it sounds stupid, but all three ThinPad 600E's that I have access to reports the same base i/o address for the south bridge. So far I had no problem on any of the three. If you do, probe it using wmarcusm's code and put that number in place of the existing hardcoded base address.

To use the feature, you just need to add "tpad" command to your boot configuration file. If you add the "--nods" option, it will only enable the l2 cache and leave the speedstep mod alone.

One final note is that, if you only have NTFS partitions, you cannot use this version of GRUB, as it lacks NTFS support. The stage2 images can be installed on linux or fat partitions. It will be great if it is ported to WINGRUB or GRUB4DOS. If you have no idea what I am talking about, just stay with your current configuration.

Source (tgz, 954KB) grub-0_97tpad.tgz

Installation Instruction

If you have Linux installed on your TP600E, just follow the regular installation method on Linux, configure, make, and make install. Then just modify /boot/grub/menu.lst.

For your convenience, I am also providing prebuilt binaries and the boot disk image.
BOOT.ZIP is the binary distribution of the modified GRUB bootloader
for ThinkPad 600E modifications
(P-III upgrades and the DeepSleep mod).

1. The first step is to create the grub boot disk. Download the
disk image.

If you have a running Linux or FreeBSD system, use the following 
commands to create a boot disk.

	dd if=grub.img of=/dev/fd0

For DOS/Windows users, use rawrite.exe to transfer the image 
to the disk.

2. Decompress the to a partition of the supported types. 
An ideal choice will be ext2, ext3, or vfat.  NTFS is not supported 
in this version. The files must be in the path like "C:\boot\grub" or

3. Boot the computer with the GRUB boot disk you created in the 
first step.  At the GRUB command prompt, chooe the root partition 
where we stored the files in the step 2.  The first partition of the 
first drive will be (hd0,0) so type in "root (hd0,0)".

If you are not sure, you can use the "find" command to find out. 
Try "find /boot/grub/stage2".

4. Install the boot loader to the MBR using the "setup" command.
Type in "setup (hd0)" for installing to the first disk.

5. Customize /boot/grub/menu.lst.