amd64/73211: FAST_IPSEC broken on amd64

Peter Wemm peter at wemm.org
Wed Oct 27 13:07:20 PDT 2004


On Wednesday 27 October 2004 12:00 pm, David Gilbert wrote:
> The following reply was made to PR amd64/73211; it has been noted by
> GNATS.
>
> From: David Gilbert <dgilbert at dclg.ca>
> To: obrien at FreeBSD.org
> Cc: David Gilbert <dgilbert at dclg.ca>,
>  FreeBSD-gnats-submit at FreeBSD.org, freebsd-amd64 at FreeBSD.org
> Subject: Re: amd64/73211: FAST_IPSEC broken on amd64
> Date: Wed, 27 Oct 2004 14:51:47 -0400
>
>  >>>>> "David" == David O'Brien <obrien at FreeBSD.org> writes:
>
>  David> On Wed, Oct 27, 2004 at 02:14:04PM -0400, David Gilbert wrote:
>  >> After attempting to obtain a dump, it would appear that this
>  >> crash won't produce a dump.  It might be memory corruption as the
>  >> tech reported this crash to be a General Protection Fault in
>  >> kernel mode.
>
>  David> Download the latest memtest86+ ISO image from
> www.memtest.org, David> burn it to CDROM, and see if all your RAM
> passes.
>
>  Since we've stresstested this box with packets and compiling and
> other chores, I strongly suspect the memory is not at fault.  The
> memory is also registered ECC.
>
>  I'll have them run memory tests, but I'm at least the second
>  independant person to report that FAST_IPSEC and amd64 are broken.
>
>  The difference between the divide error and the GPF error was
>  recompiling the kernel to dump --- so it's possible (I'm not in
> front of the machine) that the GPF is a second panic when it tries to
> dump.

AMD did some really silly things in the design of this cpu.  One is that 
trying to access an invalid address causes a GPF with no clues as to 
what the invalid address was.  Normally you'd get a segmentation or 
page trap which includes the faulting address.  When you get a GPF, you 
have to disassemble the code and figure out what the heck caused it.  
Usually it'll be a memory reference and if you look at the register or 
address it is trying to use for the address, it'll be in non-canonical 
form.

For example, dereferencing 0xdeadc0dedeadc0de  will cause an anonymous 
GPF with no other clues available to the trap handler.  This is a real 
PITA to say the least.

If I ever find the !^@#$!^@#!# AMD engineer who came up with the bright 
idea signalling this with a GPF instead of the regular trap types that 
include a virtual address....  well, lets not go there in case there 
are children reading this list.
-- 
Peter Wemm - peter at wemm.org; peter at FreeBSD.org; peter at yahoo-inc.com
"All of this is for nothing if we don't go to the stars" - JMS/B5


More information about the freebsd-amd64 mailing list