Re: broken local_t on i386

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 12 Jun 2006, Andi Kleen wrote:

> > #define __get_cpu_var(var) (*RELOC_HIDE(&per_cpu__##var, __my_cpu_offset()))
> 
> It is also affected by your race. The inc would only be atomic if the counter
> was in the PDA, but standard per cpu data isn't. So it has to follow 
> a pointer and then it could already have switched.

I thought the above would refer to a PDA memory area that is specially 
mapped by each processor? That is the only thing that would get this 
working right because we would map to a different PDA if the process 
would be mapped to a different processor.

> Fix would be to disable preemption. I don't think it needs cli/sti
> on non preemptible kernels.

Yuck. The advantage of local.t was that it does not need any of these 
tricks. What is the point of local.t if one needs to disable preemption?
-
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/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux