>we had the same problem running Linux on the AMD SC400.

>In the A20 gate implementation of the SC400 is a little bug. If the keybord-processor
>is initialized in the usual way it is possible that the A20 propagation is changed by
>normal keyboard-processor access. (see the attached AMD-Errata No23 for details)

>This crashes the kernel usualy at boottime. The curious thing is that the point where 
>the
>crash occurs is depending on clock-speed.

 I couldn't postpone the point of crash no matter what I tried. I even rigged a small 
video 
camera to record the endless rebooting just for fun.

>Workaround: (tested for Kernel 2.0.35)
>in i386/boot/setup.s and i386/boot/setup.S you can find the following
>sequence:

 It works! Thank you very very much.

----snip----

    ! that was painless, now we enable A20

     call empty_8042
     mov al,#0xD1  ! command write
     out #0x64,al
     call empty_8042
     mov al,#0xDF  ! A20 on
     out #0x60,al
     call empty_8042

----snip----

Put in both files before     call empty_8042     the following four lines
and recompile the kernel. This is the in the AMD-Errata23 mentioned
workarround.

----snip----

    ! that was painless, now we enable A20

     in al, #0x92
     or al, #2
     and al, #0xfe ! We don't want a reset in case it's set.
     out #0x92, al

     call empty_8042
     mov al,#0xD1  ! command write
     out #0x64,al
     call empty_8042
     mov al,#0xDF  ! A20 on
     out #0x60,al
     call empty_8042

----snip----

//Björn (Happy happy happy) Eriksson.


Reply via email to