Possible instruction pipelining problem between HT's on the same die ?

John-Mark Gurney gurney_j at resnet.uoregon.edu
Sat Jun 4 02:18:15 GMT 2005


Matthew Dillon wrote this message on Fri, Jun 03, 2005 at 13:57 -0700:
>     I've been tracking down a crash one of our users gets occassionally.
>     He has a quad Intel(R) XEON(TM) CPU 2.00GHz (1996.61-MHz 686-class CPU)
>     system.
> 
>     After getting a few of these crashes he pulled three of the four cpus
>     out.   But with just one physical cpu, with HTT turned on (so two
>     logical cpus), he is still getting these crashes.
> 
>     This is the sequence that causes the bad data:
> 
>     cpu #0	write A
> 		write B
> 
>     (HT)cpu #1	read B
> 		if (B) 
> 		    read A	<----  gets OLD data in A, not new data

[...]

>     I looked at the various SFENCE/LFENCE/MFENCE instructions and they
>     do not seem to guarentee ordering for speculative accesses at all.
>     They all say that they do not protect against speculative reads.
>     Bus-locked instructions don't seem to avoid speculative reads either.

have you put a SFENCE between write A and write B?  You never tell us
where you've tried to put the various fence instructions...

-- 
  John-Mark Gurney				Voice: +1 415 225 5579

     "All that I will do, has been done, All that I have, has not."


More information about the freebsd-hackers mailing list