Re: [PATCH] 2.6 workaround for Athlon/Opteron prefetch errata

From: Andi Kleen
Date: Thu Sep 11 2003 - 12:06:24 EST


On Thu, 11 Sep 2003 17:58:45 +0100
Jamie Lokier <jamie@xxxxxxxxxxxxx> wrote:

> Andi Kleen wrote:
> > +static int is_prefetch(struct pt_regs *regs, unsigned long addr)
>
> Do I understand that certain values of "addr" can't be due to the
> erratum?
>
> In which case, could you skip most of the is_prefetch() instruction
> decoder with a test like this?:
>
> if ((addr & 3) == 0)
> return 0;

Maybe. But gcc generates quite good code (binary decision tree) code for
the switch() statement already so I don't think it is worth it to go
through complications just to avoid that.

The decoder looks big in C, but when you take a look at its hot path in
assembly it is quite fast.

-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/