Re: race with page_referenced_one->ptep_test_and_clear_young and pagetable setup/pulldown

Rik van Riel
2007-10-05T01:53:19Z

On Thu, 04 Oct 2007 18:43:32 -0700
Jeremy Fitzhardinge <jeremy@goop.org> wrote:

> It seems to me that there are a few ways to fix this:
>
> 1. Use asm-generic/pgtable.h when CONFIG_PARAVIRT is enabled. This
> will clearly work, but is pretty blunt.
> 2. Make test_and_clear_pte_flags a new paravirt-op, which can be
> implemented in Xen as a hypercall, and as a raw
> test_and_clear_bit for everyone else. The downside is adding yet
> another pv-op.

Either of these two would work. Another alternative could be to
let test_and_clear_pte_flags have an exception table entry, where
we jump right to the next instruction if the instruction clearing
the flag fails.

That is the essentially variant you need for Xen, except the fast
path is still exactly the same it is as when running on native
hardware.

--
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are,
by definition, not smart enough to debug it." - Brian W. Kernighan