cvs commit: src/sys/amd64/include _types.h src/sys/i386/include _types.h src/sys/net if_bridge.c src/sys/netinet ip_var.h src/sys/netinet6 ip6_var.h

Robert Watson rwatson at
Mon Jul 4 10:16:04 GMT 2005

On Mon, 4 Jul 2005, Peter Grehan wrote:

>>> FYI, any modern ppc implementation doesn't require strict alignment for 
>>> integer load/stores though there's a performance penalty for having to 
>>> split the access into smaller ones. 
>> While it's not immediately relevant to the IP code, generally speaking, 
>> is it the case that non-aligned integer reads can be non-atomic with 
>> respect to other CPUs due to the multiple access implementation?
> I'd say certainly ! In fact, are there any architectures that could 
> guarantee atomicity in this case ?

I'd guess not, but couldn't say for sure.  The reason it's of interest is 
that there are a number of places in the kernel where the atomicity of 
integer and pointer reads is assumed, or order to implement optimistic 
concurrency or where there are tolerable races.  In general, because our 
compiler works hard to ensure alignment, and because we try to run on 
architectures that provide hard failure in the presence of an alignment 
failure, we probably don't have incorrectness as a result of non-atomic 
non-aligned reads, but it's something to be careful not to introduce, and 
a case where "hard failure" architectures provide a visible failure where 
"do it slowly and less atomically" architectures may mask the problem.

Robert N M Watson

More information about the cvs-src mailing list