Re: spin_unlock optimization(i386)

Ingo Molnar (mingo@chiara.csoma.elte.hu)
Fri, 26 Nov 1999 23:47:46 +0100 (CET)


This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
Send mail to mime@docserver.cac.washington.edu for more info.

--79888902-378663233-943656466=:9387
Content-Type: TEXT/PLAIN; charset=US-ASCII

On Fri, 26 Nov 1999, Erich Boleyn wrote:

> So, as I said before, IA32 isn't reordering anything in a visible way,
> it's effectively "shielding" the address on cpu1 because it hasn't
> gotten out of it's store queue yet.

hm, then why does causal.c trigger a causality violation on a 8-way box?
Interestingly it's getting triggered if there are two copies (4 threads
total) running. [which could be simply just randomness added to the system
bus load and thus statistically finds the window]

the basic causality test is what was analyzed yesterday:

CPU0 CPU1

for (;;) { for (;;) {
i++; a = j;
j++; b = i;
} if (a < b)
BUG()
}

i've extended this to do the same thing in a 'symmetric' way, still two
threads on two CPUs, but now both are doing loads and stores and the above
causality test:

CPU0 CPU1

for (;;) { for (;;) {
i1++; i2++;
j1++; j2++;
a = j2; a = j1;
b = i2; b = i1;
if (a < b) if (a < b)
BUG(); BUG();
} }

(i've attached the code again. i1, j1, i2, j2 are shared global, a, b are
private local variables.)

note that this cannot be reproduced on Andrea's dual-PII box (neither on
my dual-PIII box), but can be reproduced on my 8-way Xeon box, if two
copies of the above are running. [maybe if i added delay timings to the
above then we could trigger it on dual boxes too] 'two copies' means two
independent pairs of the above.

the code is simple and obvious enough extension of the most trivial
causality test, but it doesnt work.

Ingo

--79888902-378663233-943656466=:9387
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="causal.c"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.10.9911262347460.9387@chiara.csoma.elte.hu>
Content-Description:
Content-Disposition: attachment; filename="causal.c"

DQovKg0KICogTGludXggU01QIG1lbW9yeSBtb2RlbCBhbmQgU01QIGNhdXNh
bGl0eSB0ZXN0ZXIsIEluZ28gTW9sbmFyDQogKg0KICogQ29weXJpZ2h0IChD
KSAxOTk5LCBJbmdvIE1vbG5hciA8bWluZ29AcmVkaGF0LmNvbT4NCiAqLw0K
DQojaW5jbHVkZSA8dW5pc3RkLmg+DQojaW5jbHVkZSA8c3RkaW8uaD4NCiNp
bmNsdWRlIDxzdGRsaWIuaD4NCiNpbmNsdWRlIDxzaWduYWwuaD4NCiNpbmNs
dWRlIDxzeXMvd2FpdC5oPg0KI2luY2x1ZGUgPGxpbnV4L3VuaXN0ZC5oPg0K
DQp2b2xhdGlsZSBzdGF0aWMgaW50IHN0YXJ0ZWQgPSAwOw0Kc3RhdGljIGlu
dCBudW10aHJlYWRzOw0KaW50IGxvY2sgPSAwOw0KDQojZGVmaW5lIG1iKCkg
IF9fYXNtX18gX192b2xhdGlsZV9fICgibG9jazsgYWRkbCAkMCwwKCUlZXNw
KSI6IDogOiJtZW1vcnkiKQ0KI2RlZmluZSBpbmMoeCkgIF9fYXNtX18gX192
b2xhdGlsZV9fICgiaW5jbCAlMCI6ICI9bSIoeCk6IDoibWVtb3J5IikNCiNk
ZWZpbmUgbG9ja19pbmMoeCkgIF9fYXNtX18gX192b2xhdGlsZV9fICgibG9j
azsgaW5jbCAlMCI6ICI9bSIoeCk6IDoibWVtb3J5IikNCg0Kdm9sYXRpbGUg
aW50IGRhdGExID0gMCwgZGF0YTIgPSAwOw0Kdm9sYXRpbGUgaW50IGRhdGEz
ID0gMCwgZGF0YTQgPSAwOw0KDQpzdGF0aWMgaW50IHRlc3RfbG9ja2luZyhp
bnQgY3B1KQ0Kew0KCWludCBhLCBiLCBpID0gMDsNCg0KCXN3aXRjaCAoY3B1
KSB7DQoJY2FzZSAwOg0KCQlmb3IgKDs7KSB7DQoJCQlpKys7DQoJCQlpZiAo
bG9jaykgew0KCQkJCWxvY2tfaW5jKGRhdGEzKTsgDQoJCQkJbG9ja19pbmMo
ZGF0YTQpOw0KCQkJfSBlbHNlIHsNCgkJCQlpbmMoZGF0YTMpOyANCgkJCQlp
bmMoZGF0YTQpOw0KCQkJfQ0KCQkJaWYgKGkgPiAxMDAwMDAwMDAwKSB7DQoJ
CQkJZGF0YTQgPSAwOw0KCQkJCWRhdGEzID0gMDsNCgkJCQlpID0gMDsNCgkJ
CX0NCgkJCWIgPSBkYXRhMjsNCgkJCWEgPSBkYXRhMTsNCgkJCWlmIChhIDwg
Yikgew0KCQkJCXByaW50ZigiPCVkPiAlZCAlZFxuIiwgaSwgYSwgYik7DQoJ
CQkJcmV0dXJuIDE7DQoJCQl9DQoJCX0NCgljYXNlIDE6DQoJCWZvciAoOzsp
IHsNCgkJCWkrKzsNCgkJCWlmIChsb2NrKSB7DQoJCQkJbG9ja19pbmMoZGF0
YTEpOyANCgkJCQlsb2NrX2luYyhkYXRhMik7DQoJCQl9IGVsc2Ugew0KCQkJ
CWluYyhkYXRhMSk7IA0KCQkJCWluYyhkYXRhMik7DQoJCQl9DQoJCQlpZiAo
aSA+IDEwMDAwMDAwMDApIHsNCgkJCQlkYXRhMiA9IDA7DQoJCQkJZGF0YTEg
PSAwOw0KCQkJCWkgPSAwOw0KCQkJfQ0KCQkJYiA9IGRhdGE0Ow0KCQkJYSA9
IGRhdGEzOw0KCQkJaWYgKGEgPCBiKSB7DQoJCQkJcHJpbnRmKCI8JWQ+ICVk
ICVkXG4iLCBpLCBhLCBiKTsNCgkJCQlyZXR1cm4gMTsNCgkJCX0NCgkJfQ0K
CWRlZmF1bHQ6DQoJCXJldHVybiAxOw0KCX0NCn0NCg0Kdm9pZCB0ZXN0X2Nh
dXNhbGl0eSAoaW50IGNwdSkNCnsNCglhc20gdm9sYXRpbGUgKCJsb2NrOyBp
bmNsICUwIjoiPW0iKHN0YXJ0ZWQpKTsNCgl3aGlsZSAobnVtdGhyZWFkcyAh
PSBzdGFydGVkKSBtYigpOw0KDQoJdGVzdF9sb2NraW5nKGNwdSk7DQoNCglw
cmludGYoIjx0aHJlYWQlZD4gQlJPS0UgY2F1c2FsaXR5ISBXZWFrbHkgb3Jk
ZXJlZCBtZW1vcnk/XG4iLCBjcHUpOw0KCWV4aXQoMCk7DQp9DQoNCnN0YXRp
YyB2b2lkIHN0YXJ0X3RocmVhZChpbnQgY3B1KQ0Kew0KCWNoYXIgKm5ld3N0
YWNrID0gKGNoYXIgKikgbWFsbG9jKDEwMDAwKSArIDUwMDA7DQoNCgkqbmV3
c3RhY2sgPSBjcHU7DQoJX19hc21fXyBfX3ZvbGF0aWxlX18oDQoJCSJpbnQg
JDB4ODAJXG5cdCIJLyogTGludXgvaTM4NiBzeXN0ZW0gY2FsbCAqLw0KCQki
dGVzdGwgJTAsJTAJXG5cdCIJLyogY2hlY2sgcmV0dXJuIHZhbHVlICovDQoJ
CSJqbmUgMWYJCVxuXHQiCS8qIGp1bXAgaWYgcGFyZW50ICovDQoJCSJjYWxs
IColMglcblx0IgkvKiBzdGFydCBzdWJ0aHJlYWQgZnVuY3Rpb24gKi8NCgkJ
Im1vdmwgJTEsJTAJXG5cdCINCgkJImludCAkMHg4MAlcblx0IgkvKiBleGl0
IHN5c3RlbSBjYWxsOiBleGl0IHN1YnRocmVhZCAqLw0KCQkiMToJCVxuXHQi
DQoJCTogOiJhIiAoX19OUl9jbG9uZSksImkiIChfX05SX2V4aXQpLCAiciIg
KHRlc3RfY2F1c2FsaXR5KSwNCgkJICAgImIiICgweGFmMDAgfCBTSUdDSExE
KSwgImMiIChuZXdzdGFjaykpOw0KCXJldHVybjsNCn0NCg0KaW50IG1haW4g
KGludCBhcmdjLCBjaGFyICogKiBhcmd2KQ0Kew0KCWludCBpOw0KDQoJaWYg
KGFyZ2MgIT0gMykgew0KCQlwcmludGYoInVzYWdlOiBjYXVzYWwgPExPQ0s6
MC8xPiA8a2lkczozLTg+XG4iKTsNCgkJZXhpdCgwKTsNCgl9DQoJbG9jayA9
IGF0b2woYXJndlsxXSk7DQoJbnVtdGhyZWFkcyA9IGF0b2woYXJndlsyXSk7
DQoNCglmb3IgKGkgPSAwOyBpIDwgbnVtdGhyZWFkczsgaSsrKSB7DQoJCXN0
YXJ0X3RocmVhZChpKTsNCgl9DQoJcmV0dXJuICgwKTsNCn0NCg0K
--79888902-378663233-943656466=:9387--

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/