Re: K8 Errata #93: adjusting address to a fixup block

From: Andi Kleen
Date: Sun Oct 17 2004 - 15:27:44 EST


Alexandre Oliva <aoliva@xxxxxxxxxx> writes:

> While I investigated the problem of probing the touchpad on a Compaq
> Presario r3004, I'd sometimes get the K8 Errata #93 warning. One of
> my theories was that we might be missing some fix up because of the
> Errata, or adjusting an address that wasn't the current-instruction

It's more likely the BIOS is executing SMM code to handle
the touch pad and that SMM code doesn't have the correct
workaround for the erratum.

> address, so I came up with this patch. It turned out to make no
> difference, but it still feels like an improvement to me, since some
> day we might be resuming from halt into a fix-up block. Thoughts?

The code is already ugly enough and handles most of the cases,
I don't think it is worth it complicating it even more just
to handle more corner cases of buggy BIOS.

The real fix is to fix your BIOS.

static int warned;
+ if ((error_code & 16) == 0)
+ return 0;

This is dubious because the I/D bit is undefined when NX is disabled
in EFER (e.g. with noexec=off or when the CPU doesn't support NX)

-Andi

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/