Re: [PATCH] avoid unnecessary cache flushes
Richard Henderson (rth@twiddle.net)
Mon, 3 Sep 2001 13:41:25 -0700
On Mon, Sep 03, 2001 at 01:27:02PM -0700, David Mosberger wrote:
>   >> +		if (!test_bit(PG_arch_1, &page->flags)) {
>   >> +			__flush_dcache_icache((unsigned long)kmap(page));
>   >> +			kunmap(page);
>   >> +			set_bit(PG_arch_1, &page->flags);
> 
>   Richard> Race.  Use test_and_set_bit.
> 
> Nope, the old code is correct: you must turn on PG_arch_1 *after*
> flushing the cache.  Yes, you might sometimes double flush, but that's
> both safe and rare.
You can get a missed flush from
	bit == 0
	flush cache
				modify page
				bit = 0
	bit = 1
unless this is protected from some outer lock of which 
I am not aware.
I do see your point about the early set though.
r~
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/