home
manual & docs drivers & updates software GNU/Linux Introduction Read this What you need to know about the aero Partitioning the harddisk Choosing the installation method Preparing the Aero for a Red Hat 6.1 harddisk install The Red Hat 6.1 Installation Process RAM-problems The Floppy Access to DOS-Partitions The Linux-BootLoader Configuring X-Windows Patching and compiling a new kernel Solving the RAM problem Installing PCMCIA and configuring it for Bad RAM Finished - What comes next? Advanced Power Management Getting WebDAV to work with XP Conclusion GNU Free Documentation License FreeDOS internal speaker the press the people (& their mails) the aeros wildest dream... links about |
RAM-Problems |
|
And how to fight them
|
||
|
||
If you don't want to do all the patching and compiling stuff right now...If you followed this documentation to this point, linux ist just freshly installed. Maybe you first want to look around, configure some settings - and need therefore a stable system - without directly beginning with patching the kernel and compiling. And if you do all this directly on the aero (and not still with the hdd in the desktop) you anyway can't patch and compile on a machine that freezes and crashs.So at this stadium of our install we simply disable pcmcia and avoid with this the ram-problem. For security I also disabled most daemons that linux starts at boot time. To do all this: Hit "i" when asked to in the boot process (the line "Hit i to enter interactive setup"). You then can choose each loaded daemon by yes/no. Choose "no" for all daemons. After booting Red Hat you can choose the loaded daemons manually with the tool ntsysv, so give in the command: "/usr/sbin/ntsysv" Most important is to disable the pcmcia daemon. The RAM-problem
Linux on the compaq contura aero may become unstable on machines that have been upgraded to 20 MB RAM. This instability is caused by an invalid access to specific memory addresses above 16 MB. Linux conflicts here with the pcmcia-controller.
The package must be installed if you want to use pcmcia with kernel 2.2 or 2.4 and can be downloaded here: http://pcmcia-cs.sourceforge.net/ The BadRAM -patch can be downloaded from here: http://rick.vanrein.org/linux/badram/ BadMEM is found here: http://badmem.sourceforge.net/ Applied patches for redhat stock-kernels (2.4) can be found here: http://dynamicnetservices.com/~will/badram/
All BadRAM-patches that I have found, I have collected here.
1. Specifying the memory for the pcmcia-controllerWith kernel 2.2 I used with success the ram-addresses "0xb0000-0xb7fff". So try to specify the ports and the memory that the pcmcia-controller shall use in /etc/pcmcia/config.opts with the following values: /etc/pcmcia/config.opts include port 0x100-0x4ff, port 0xc00-0xcff include memory 0xb0000-0xb7fff
All other "include memory"-statements must be outcommented. cat /proc/iomem For me this created the following output: 00000000-0009efff : System RAM 000a0000-000bffff : Video RAM area 000c0000-000c7fff : Video ROM 000f0000-000fffff : System ROM 00100000-013fffff : System RAM 00100000-00240c09 : Kernel code 00240c0a-00283d5f : Kernel data
Kernel 2.2 used the memory range 0xb0000-0xb7fff. Now, with Kernel 2.4 this range is reserved for Video RAM and can not be used. Still free seem to be the adress-range from Oxd0000 to 0xeffff. So lets try out these addresses:
include port 0x100-0x4ff, port 0xc00-0xcff include memory 0xd0000-0xd7fff All other "include memory"-statements must be outcommented. The above values work OK for me. 2. Configuring BadRAM
Now with specifying the memory-adresses for the pcmcia-controller the work is NOT done. We must keep in mind, that the memory range used by the controller throws a shadow of unusable ram-adresses into the > 16 MB range. These RAM adresses have to be excluded, otherwise linux will freeze if you enable pcmcia. This can be done with the kernel-patches BadRAM or BadMEM.
CONFIG_BADRAM=y
In some kernels this option may be found under "kernel-hacking".
Please take care to enable that option.
linux badram=value1,value2 or in lilo.conf with the line append="badram=value1,value2"
The two values specify a so called V1-pattern. value1 is supposed to be the first RAM-address to exclude, value2 is a so called mask. So the second value is NOT the last address to exclude but (as I understand) a description of the geometrical form of the RAM area that should be excluded. This is OK for the original purpose of BadRAM: Using defunct RAM-Modules. Defect areas of a RAM bank don't stretch over a one coherent logical adress range, they stretch over a geometrical area on the physical ram-module.
0xffff8000
value1 depends on the address-range, specified in /etc/pcmcia/config.opts for the pcmcia-controller. include memory 0xb0000-0xb7fff the correct value1 for BadRAM would be 0x010b0000. So these are settings for Badram corresponding to the settings for the pcmcia-controller in /etc/pcmcia/config.opts: config.opts corresponding BadRAM-statement 0xb0000-0xb7fff 0x010b0000,0xffff8000 0xd0000-0xd7fff 0x010d0000,0xffff8000 0xe0000-0xe7fff 0x010e0000,0xffff8000
and so on.
include memory 0xd0000-0xd7fff So in lilo.conf I must use the line append="badram=0x010d0000,0xffff8000"
Now we paid respect to the 'shadow' the pcmcia-controller throws into the >16MB RAM-range, we excluded these areas with the help of BadRAM and can now (after a lilo -v) safely reboot the aero and use pcmcia.
3. ConclusionRunning Linux on laptops meant once again that users have to work around errors that were made by the manufactures, in this case compaq. On the other hand I can not blame them: They never thought that the contura aero would once run with more than 12 MB RAM and never dreamed of Red Hat 9 installed on it instead of windows 3.1. ;-)My thanks go to David Hinds who helped with practical tips to find the correct RAM-values. And to the linux-community for providing all the information, knowledge and software. Linux means learning. Thanks for helping. Hope this may help others. Uli The exact procedure of patching and configuring will be described in the further chapters "Patching and Compiling a new kernel", "Solving the RAM-problem" and in the section "PCMCIA", subsection "The BadRAM-options for the card-manager". Annotations:
Interesting feature for 2.4-kernels
append="mem=exactmap mem=X@Y mem=X@Y"
when X and Y stand for the hexadecimal memory-addresses. ---------------------snip---------------------------- I've got PCMCIA and the 20mb upgrade working under linux on the aero. The problem appears to be incomplete address decoding (at a guess) - Isuspect some parts of the system, including the PCMCIA controller,ignore the top 8 address bits, thus causing a false image of e.g. thememory-mapped area used by the PCMCIA controller to appear at 16mb+expected location. The solution (works for me on 2.2.20 and debian woody) is to patch yourkernel with Rick van Rein's BadRAM patch. e.g. If you tell cardmgr toonly use memory locations 0xb0000-0xb7fff, then tell badram to exclude 16mb + this area with the kernel parameters "badram=0x010b0000,0xffff8000". This only wastes 32kb of RAM instead of the 4mb you give up when you use"mem=16384k". So far it appears to be as stable, too. don -----------------snap---------------------
|
||
Comments
Suggestions for this page? Ideas? Please drop a note! |
||
|
||