On Tue, 14 Aug 2007, Andi Kleen wrote:

> > Could you be a bit more specific? Where do you want to place the data?
> 
> DEFINE_PER_CPU(int, zone_flag);
> 
>       get_cpu();      // likely already true and then not needed
>       __get_cpu(zone_flag) = 1;
>       /* wmb is implied in spin_lock I think */

No its not. Only on x64 which has implicit write ordering.

>       spin_lock(&zone->lru_lock);
>       ...
>       spin_unlock(&zone->lru_lock);
>       __get_cpu(zone_flag) = 0;
>       put_cpu();
> 
> Interrupt handler
> 
>       if (!__get_cpu(zone_flag)) {

There are more spinlocks needed. So we would just check the whole bunch 
and fail if any of them are used?

>               do things with zone locks 
>       }
> 
> The interrupt handler shouldn't touch zone_flag. If it wants
> to it would need to be converted to a local_t and incremented/decremented
> (should be about the same cost at least on architectures with sane
> local_t implementation) 

That would mean we need to fork the code for reclaim?
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to