Re: ptep_establish/establish_pte needs set_pte_atomic and all set_ptemust be written in asm

From: Rik van Riel
Date: Sat Sep 25 2004 - 18:45:49 EST


On Sat, 25 Sep 2004, Andrea Arcangeli wrote:

> set_pte), while something like this should be fine:
>
> ptep_get_and_clear
> set_pte
> flush_tlb

Almost. Think of software TLB refills, especially HPTE.
The order needs to be:

ptep_get_and_clear
flush_tlb
set_pte

Any page faults happening "in the middle" will end up as
virtual no-ops once they grab the page_table_lock.

Luckily the PPC64 code in 2.6 seems to have a fix for the
race already. Martin's race is a 2.4 thing only and needs
a 2-line change to establish_pte(), to make the code do what
I described above.

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


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