Linux Configuration

Here is a detailed recipe for getting the most out of this hardware. This recipe applies to conditions in August 2001. If you are reading this months afterwards you may be able to skip some steps, and of course the software version numbers you want will be different.

How much swap space to allocate on a machine with 2GB core is a vexing theological question that even the wizards of the Linux kernel mailing list can't seem to agree on. The usual rule — twice your amount of physical memory — would tie up 4GB, which both seems and is ridiculous unless you're doing very heavy-duty database work or scientitic computing with very large datasets. On the other hand, the advice to top out at 128MB in the Red Hat manual is obsolete, predating the efforts at VM tuning in the 2.4 series. Early 2.4.x kernels wanted more than 2 RAM; more recent ones (2.4.8) use less swap.

A better way, according to Arjan de Ven of Red Hat, is to try to estimate the size of your working set (the core utilization of your typical mix of programs) and allocate 150% of that. For people doing typical workstation or light-duty server workloads, the working set is unlikely to go above 128MB. But 2.4.8 and later kernels permit swap partions up to 64GB in size.

  1. Remove the SB Live!, so your pre-2.4.8 kernel won't hang.

  2. Disable the ATA controller and set "Use PCI Interrupt Entries In MP Table" in the BIOS configuration screen as you reboot.

  3. Install KRUD or your favorite distribution in text mode. If your X version lacks the Radeon timing patch, be sure to tell your distribution that logins should come up in text mode too, otherwise your first login may get clobbered by the Radeon timing bug.

  4. If your X version lacks the Radeon timing patch, hack your XF86Config-4 to turn off acceleration. This will make it safe to use X until you can patch it.

  5. Download and install a 2.4.8+ kernel (see below).

  6. Power down, re-install your SB Live!, and boot into 2.4.8+. You can now have sound without system hangs.

  7. If your X has the Radeon timing patch, you're done. Otherwise...

  8. Download the X source tree. If it requires the Radeon timing patch (see below) apply that patch. Build it.

  9. Copy the rebuilt X server (XFree86) to wherever it lives on your system (usually /usr/X11R6/bin/XFree86) Then copy the Radeon X module radeon_drv.o to where it lives (usually /usr/X11R6/lib/modules/drivers/radeon_drv.o).

  10. You can now re-enable acceleration and the hardware cursor support.

Here are the things you need to know about your XFree86 configuration file (normally /etc/X11/XF86Config-4).

  1. If your installer only autodetects available screen resolutions up to 1600x1200, then you'll want to change the Modes entry in the Screen section corresponding to the Radeon device so it reads 2048x1536.

  2. Next, set your mouse protocol to "MouseManPlusPS/2", if you didn't already during the distribution install; you will get the use of the mouse wheel -- it will work X scrollbars. Look in the the Input Device section corresponding to your PS/2 mouse.

  3. If you need to temporarily disable acceleration in order not to trigger the Radeon timing bug, look in the Device section corresponding to the Radeon. You'll need to insert an option line that reads "Option NoAccel".

The change in the third step will be backed out after we fix X.

Here are the kernel configuration options you must specify to get full support for your ULB hardware:

Table 2. ULB kernel configuration symbols (2.4.8)

General options
CONFIG_MK7Y or MAthlon/Duron/K7
CONFIG_SMPYSymmetric Multi-Processing support
CONFIG_HIGHMEM4GYHigh memory support (up to 4G)
System buses
CONFIG_PCIYSupport for PCI bus hardware
CONFIG_PNPY or MSupport for Plug'n'Play hardware.
CONFIG_USBY or MUniversal Serial Bus support
Graphics options
CONFIG_AGPY or M/dev/agpgart (AGP Support)
CONFIG_DRMYDirect Rendering Manager (XFree86 DRI support)
SCSI options
CONFIG_BLK_DEV_STY or MSCSI tape support
CONFIG_SCSI_AIC7XXXYAdaptec AIC7xxx support
Networking options
CONFIG_NETYNetworking support
CONFIG_NETDEVICESYNetwork device support
CONFIG_VORTEXM3c590/3c900 series (592/595/597) "Vortex/Boomerang/Cyclone" support
Note: Vortex support has to be compiled modular because we have two NICs of the same type.
Sound options
CONFIG_SOUNDYSound card support
CONFIG_SOUND_OSSY or MOSS sound modules
CONFIG_SOUND_SBY or M100% Sound Blaster compatibles (SB16/32/64, ESS, Jazz16) support
CONFIG_SOUND_EMU10K1Y or MCreative SBLive! (EMU10K1) based PCI sound cards
System self-monitoring options
CONFIG_I2CY or MI2C support (needed for SMBus)
CONFIG_I2C_CHARDEVY or MI2C device interface
CONFIG_I2C_ALGOBITY or MSupport for `bit-banging' I2C device
Serial and Parallel ports
CONFIG_SERIALY or MRS232C serial-port support
CONFIG_PARPORTY or MParallel-port support
CONFIG_PARPORT_PCY or MPC-style hardware
CONFIG_PARPORT_1284YIEEE 1284 transfer modes
Other device options
CONFIG_BLK_DEV_FDYFloppy disk support
CONFIG_PSMOUSEYPS/2 mouse (aka "auxiliary device") support
CONFIG_RTCYReal-Time Clock support

Now here is the patch for the Radeon timing bug:

Index: radeon_driver.c
RCS file: /home/x-cvs/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c,v
retrieving revision 1.33
diff -u -r1.33 radeon_driver.c
--- radeon_driver.c	2001/08/07 07:04:43	1.33
+++ radeon_driver.c	2001/08/09 23:00:20
@@ -3588,6 +3588,7 @@
         OUTREG(RADEON_DAC_CNTL2, restore->dac2_cntl);
     RADEONRestoreMode(pScrn, restore);
+    usleep(100000);