[patch] smp-2.3.30-A1, mb(), wmb(), rmb()

Ingo Molnar (mingo@chiara.csoma.elte.hu)
Thu, 25 Nov 1999 11:51:26 +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.

--650352740-1085431359-943526905=:2579
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
Content-ID: <Pine.LNX.4.10.9911251148311.2579@chiara.csoma.elte.hu>

the attached patch completes the memory-ordering changes started by the
spin_unlock() change in 2.3.30-pre1. Here is the gist of the patch:

/*
* Force strict CPU ordering.
* And yes, this is required on UP too when we're talking
* to devices. Note that these primitives deal with operation
* ordering, not atomicity.
*
* For now, "wmb()" doesn't actually do anything, as all
* Intel CPU's follow what Intel calls a *Processor Order*,
* in which all writes are seen in the program order even
* outside the CPU.
*
* rmb(): writes are guaranteed by Intel to never pass reads
* (in an externally visible way that is), so the read barrier
* is just a dummy store. Note that (%%esp) is ours and only
* ours, so this is IRQ-safe as well. The barrier _must_
* include a store, thus the assembly. The CPU snoops external
* devices (including CPUs and DMA agents), so this works out
* just fine in all cases and is lightweight. And this is only
* 4 bytes icache footprint total. 'addl $0, (%%esp)' is a legal
* write operation which dirties the target cacheline.
*
* We expect future Intel CPU's to have a weaker ordering. But
* it's not all that bad right now already.
*/

#define mb() __asm__ __volatile__ ("addl $0, (%%esp)": : :"memory")
#define rmb() mb()
#define wmb() __asm__ __volatile__ ("": : :"memory")
#define set_rmb(var, value) do { var = value; rmb(); } while (0)
#define set_mb(var, value) set_rmb(var, value)
#define set_wmb(var, value) do { var = value; wmb(); } while (0)

The patch works just fine on my 8-way.

-- mingo

--650352740-1085431359-943526905=:2579
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="smp-2.3.30-A1"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.10.9911251148250.2579@chiara.csoma.elte.hu>
Content-Description:
Content-Disposition: ATTACHMENT; FILENAME="smp-2.3.30-A1"

LS0tIGxpbnV4L2luY2x1ZGUvYXNtLWkzODYvc3lzdGVtLmgub3JpZwlGcmkg
T2N0IDE1IDE4OjI5OjQyIDE5OTkNCisrKyBsaW51eC9pbmNsdWRlL2FzbS1p
Mzg2L3N5c3RlbS5oCVRodSBOb3YgMjUgMDI6MzQ6NTcgMTk5OQ0KQEAgLTE2
MSwyMSArMTYxLDMxIEBADQogLyoNCiAgKiBGb3JjZSBzdHJpY3QgQ1BVIG9y
ZGVyaW5nLg0KICAqIEFuZCB5ZXMsIHRoaXMgaXMgcmVxdWlyZWQgb24gVVAg
dG9vIHdoZW4gd2UncmUgdGFsa2luZw0KLSAqIHRvIGRldmljZXMuDQorICog
dG8gZGV2aWNlcy4gTm90ZSB0aGF0IHRoZXNlIHByaW1pdGl2ZXMgZGVhbCB3
aXRoIG9wZXJhdGlvbg0KKyAqIG9yZGVyaW5nLCBub3QgYXRvbWljaXR5Lg0K
ICAqDQogICogRm9yIG5vdywgIndtYigpIiBkb2Vzbid0IGFjdHVhbGx5IGRv
IGFueXRoaW5nLCBhcyBhbGwNCiAgKiBJbnRlbCBDUFUncyBmb2xsb3cgd2hh
dCBJbnRlbCBjYWxscyBhICpQcm9jZXNzb3IgT3JkZXIqLA0KICAqIGluIHdo
aWNoIGFsbCB3cml0ZXMgYXJlIHNlZW4gaW4gdGhlIHByb2dyYW0gb3JkZXIg
ZXZlbg0KICAqIG91dHNpZGUgdGhlIENQVS4NCiAgKg0KLSAqIEkgZXhwZWN0
IGZ1dHVyZSBJbnRlbCBDUFUncyB0byBoYXZlIGEgd2Vha2VyIG9yZGVyaW5n
LA0KLSAqIGJ1dCBJJ2QgYWxzbyBleHBlY3QgdGhlbSB0byBmaW5hbGx5IGdl
dCB0aGVpciBhY3QgdG9nZXRoZXINCi0gKiBhbmQgYWRkIHNvbWUgcmVhbCBt
ZW1vcnkgYmFycmllcnMgaWYgc28uDQorICogcm1iKCk6IHdyaXRlcyBhcmUg
Z3VhcmFudGVlZCBieSBJbnRlbCB0byBuZXZlciBwYXNzIHJlYWRzDQorICog
KGluIGFuIGV4dGVybmFsbHkgdmlzaWJsZSB3YXkgdGhhdCBpcyksIHNvIHRo
ZSByZWFkIGJhcnJpZXINCisgKiBpcyBqdXN0IGEgZHVtbXkgc3RvcmUuIE5v
dGUgdGhhdCAoJSVlc3ApIGlzIG91cnMgYW5kIG9ubHkNCisgKiBvdXJzLCBz
byB0aGlzIGlzIElSUS1zYWZlIGFzIHdlbGwuIFRoZSBiYXJyaWVyIF9tdXN0
Xw0KKyAqIGluY2x1ZGUgYSBzdG9yZSwgdGh1cyB0aGUgYXNzZW1ibHkuIFRo
ZSBDUFUgc25vb3BzIGV4dGVybmFsDQorICogZGV2aWNlcyAoaW5jbHVkaW5n
IENQVXMgYW5kIERNQSBhZ2VudHMpLCBzbyB0aGlzIHdvcmtzIG91dA0KKyAq
IGp1c3QgZmluZSBpbiBhbGwgY2FzZXMgYW5kIGlzIGxpZ2h0d2VpZ2h0LiBB
bmQgdGhpcyBpcyBvbmx5DQorICogNCBieXRlcyBpY2FjaGUgZm9vdHByaW50
IHRvdGFsLiAnYWRkbCAkMCwgKCUlZXNwKScgaXMgYSBsZWdhbA0KKyAqIHdy
aXRlIG9wZXJhdGlvbiB3aGljaCBkaXJ0aWVzIHRoZSB0YXJnZXQgY2FjaGVs
aW5lLg0KKyAqDQorICogV2UgZXhwZWN0IGZ1dHVyZSBJbnRlbCBDUFUncyB0
byBoYXZlIGEgd2Vha2VyIG9yZGVyaW5nLiBCdXQNCisgKiBpdCdzIG5vdCBh
bGwgdGhhdCBiYWQgcmlnaHQgbm93IGFscmVhZHkuDQogICovDQotI2RlZmlu
ZSBtYigpIAlfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImxvY2s7IGFkZGwgJDAs
MCglJWVzcCkiOiA6IDoibWVtb3J5IikNCisjZGVmaW5lIG1iKCkgCV9fYXNt
X18gX192b2xhdGlsZV9fICgiYWRkbCAkMCwgKCUlZXNwKSI6IDogOiJtZW1v
cnkiKQ0KICNkZWZpbmUgcm1iKCkJbWIoKQ0KICNkZWZpbmUgd21iKCkJX19h
c21fXyBfX3ZvbGF0aWxlX18gKCIiOiA6IDoibWVtb3J5IikNCi0jZGVmaW5l
IHNldF9ybWIodmFyLCB2YWx1ZSkgZG8geyB4Y2hnKCZ2YXIsIHZhbHVlKTsg
fSB3aGlsZSAoMCkNCisjZGVmaW5lIHNldF9ybWIodmFyLCB2YWx1ZSkgZG8g
eyB2YXIgPSB2YWx1ZTsgcm1iKCk7IH0gd2hpbGUgKDApDQogI2RlZmluZSBz
ZXRfbWIodmFyLCB2YWx1ZSkgc2V0X3JtYih2YXIsIHZhbHVlKQ0KICNkZWZp
bmUgc2V0X3dtYih2YXIsIHZhbHVlKSBkbyB7IHZhciA9IHZhbHVlOyB3bWIo
KTsgfSB3aGlsZSAoMCkNCiANCg==
--650352740-1085431359-943526905=:2579--

-
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/