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

Andi Kleen
2003-09-11T17:05:24Z

On Thu, 11 Sep 2003 17:58:45 +0100
Jamie Lokier <jamie@shareable.org> 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