From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Chen, Kenneth W" Date: Wed, 19 Feb 2003 18:31:33 +0000 Subject: [Linux-ia64] RE: ia64 rwsem using atomic primitive MIME-Version: 1 Content-Type: multipart/mixed; boundary="----_=_NextPart_001_01C2D845.20A459BC" Message-Id: List-Id: To: linux-ia64@vger.kernel.org This is a multi-part message in MIME format. ------_=_NextPart_001_01C2D845.20A459BC Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Here is a patch against 2.5.60. It has one new function added = __downgrade_write() for 2.5. - Ken <>=20 > -----Original Message----- > From: Chen, Kenneth W =20 > Sent: Wednesday, February 19, 2003 10:30 AM > To: 'linux-ia64@linuxia64.org' > Subject: ia64 rwsem using atomic primitive >=20 > I have converted rw semaphore from current generic spin_lock = implementation to use architecture specific atomic operation on ia64. = This new scheme speeds up all the semaphore operations in the fast path = with atomic instruction and fall back to a heavy function when there are = read/write contention. I've also taken some raw measurement how fast it = improves. The most significant gain comes from parallel reader lock = acquire/release which has around 6.6X speed up with the new version. = Here is a patch against 2.4.20. >=20 > << File: rwsem.2.4.20.patch >>=20 > - Ken >=20 ------_=_NextPart_001_01C2D845.20A459BC Content-Type: application/octet-stream; name="rwsem.2.5.60.patch" Content-Transfer-Encoding: base64 Content-Description: rwsem.2.5.60.patch Content-Disposition: attachment; filename="rwsem.2.5.60.patch" ZGlmZiAtTnVyIGxpbnV4LTIuNS42MC9hcmNoL2lhNjQvS2NvbmZpZyBsaW51eC0yLjUuNjAucndz ZW0vYXJjaC9pYTY0L0tjb25maWcNCi0tLSBsaW51eC0yLjUuNjAvYXJjaC9pYTY0L0tjb25maWcJ TW9uIEZlYiAxMCAxMDozODo1NCAyMDAzDQorKysgbGludXgtMi41LjYwLnJ3c2VtL2FyY2gvaWE2 NC9LY29uZmlnCVdlZCBGZWIgMTkgMDA6MzI6MzcgMjAwMw0KQEAgLTI2LDcgKzI2LDcgQEANCiAJ Ym9vbA0KIAlkZWZhdWx0IHkNCiANCi1jb25maWcgUldTRU1fR0VORVJJQ19TUElOTE9DSw0KK2Nv bmZpZyBSV1NFTV9YQ0hHQUREX0FMR09SSVRITQ0KIAlib29sDQogCWRlZmF1bHQgeQ0KIA0KZGlm ZiAtTnVyIGxpbnV4LTIuNS42MC9pbmNsdWRlL2FzbS1pYTY0L3J3c2VtLmggbGludXgtMi41LjYw LnJ3c2VtL2luY2x1ZGUvYXNtLWlhNjQvcndzZW0uaA0KLS0tIGxpbnV4LTIuNS42MC9pbmNsdWRl L2FzbS1pYTY0L3J3c2VtLmgJV2VkIERlYyAzMSAxNjowMDowMCAxOTY5DQorKysgbGludXgtMi41 LjYwLnJ3c2VtL2luY2x1ZGUvYXNtLWlhNjQvcndzZW0uaAlXZWQgRmViIDE5IDEwOjIxOjEyIDIw MDMNCkBAIC0wLDAgKzEsMTg4IEBADQorLyoNCisgKiBhc20taWE2NC9yd3NlbS5oOiBSL1cgc2Vt YXBob3JlcyBmb3IgaWE2NA0KKyAqDQorICogQ29weXJpZ2h0IChDKSAyMDAzIEtlbiBDaGVuIDxr ZW5uZXRoLncuY2hlbkBpbnRlbC5jb20+DQorICogQ29weXJpZ2h0IChDKSAyMDAzIEFzaXQgTWFs bGljayA8YXNpdC5rLm1hbGxpY2tAaW50ZWwuY29tPg0KKyAqDQorICogQmFzZWQgb24gYXNtLWkz ODYvcndzZW0uaCBhbmQgb3RoZXIgYXJjaGl0ZWN0dXJlIGltcGxlbWVudGF0aW9uLg0KKyAqDQor ICogVGhlIE1TVyBvZiB0aGUgY291bnQgaXMgdGhlIG5lZ2F0ZWQgbnVtYmVyIG9mIGFjdGl2ZSB3 cml0ZXJzIGFuZA0KKyAqIHdhaXRpbmcgbG9ja2VycywgYW5kIHRoZSBMU1cgaXMgdGhlIHRvdGFs IG51bWJlciBvZiBhY3RpdmUgbG9ja3MuDQorICoNCisgKiBUaGUgbG9jayBjb3VudCBpcyBpbml0 aWFsaXplZCB0byAwIChubyBhY3RpdmUgYW5kIG5vIHdhaXRpbmcgbG9ja2VycykuDQorICoNCisg KiBXaGVuIGEgd3JpdGVyIHN1YnRyYWN0cyBXUklURV9CSUFTLCBpdCdsbCBnZXQgMHhmZmZmMDAw MSBmb3IgdGhlIGNhc2UNCisgKiBvZiBhbiB1bmNvbnRlbmRlZCBsb2NrLiBSZWFkZXJzIGluY3Jl bWVudCBieSAxIGFuZCBzZWUgYSBwb3NpdGl2ZSB2YWx1ZQ0KKyAqIHdoZW4gdW5jb250ZW5kZWQs IG5lZ2F0aXZlIGlmIHRoZXJlIGFyZSB3cml0ZXJzIChhbmQgbWF5YmUpIHJlYWRlcnMNCisgKiB3 YWl0aW5nIChpbiB3aGljaCBjYXNlIGl0IGdvZXMgdG8gc2xlZXApLg0KKyAqLw0KKw0KKyNpZm5k ZWYgX0lBNjRfUldTRU1fSA0KKyNkZWZpbmUgX0lBNjRfUldTRU1fSA0KKw0KKyNpZmRlZiBfX0tF Uk5FTF9fDQorI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4NCisjaW5jbHVkZSA8bGludXgvc3Bpbmxv Y2suaD4NCisNCisvKg0KKyAqIHRoZSBzZW1hcGhvcmUgZGVmaW5pdGlvbg0KKyAqLw0KK3N0cnVj dCByd19zZW1hcGhvcmUgew0KKwlzaWduZWQgaW50CQljb3VudDsNCisJc3BpbmxvY2tfdAkJd2Fp dF9sb2NrOw0KKwlzdHJ1Y3QgbGlzdF9oZWFkCXdhaXRfbGlzdDsNCisjaWYgUldTRU1fREVCVUcN CisJaW50CQkJZGVidWc7DQorI2VuZGlmDQorfTsNCisNCisjZGVmaW5lIFJXU0VNX1VOTE9DS0VE X1ZBTFVFCQkweDAwMDAwMDAwDQorI2RlZmluZSBSV1NFTV9BQ1RJVkVfQklBUwkJMHgwMDAwMDAw MQ0KKyNkZWZpbmUgUldTRU1fQUNUSVZFX01BU0sJCTB4MDAwMGZmZmYNCisjZGVmaW5lIFJXU0VN X1dBSVRJTkdfQklBUwkJKC0weDAwMDEwMDAwKQ0KKyNkZWZpbmUgUldTRU1fQUNUSVZFX1JFQURf QklBUwkJUldTRU1fQUNUSVZFX0JJQVMNCisjZGVmaW5lIFJXU0VNX0FDVElWRV9XUklURV9CSUFT CQkoUldTRU1fV0FJVElOR19CSUFTICsgUldTRU1fQUNUSVZFX0JJQVMpDQorDQorLyoNCisgKiBp bml0aWFsaXphdGlvbg0KKyAqLw0KKyNpZiBSV1NFTV9ERUJVRw0KKyNkZWZpbmUgX19SV1NFTV9E RUJVR19JTklUICAgICAgLCAwDQorI2Vsc2UNCisjZGVmaW5lIF9fUldTRU1fREVCVUdfSU5JVAkv KiAqLw0KKyNlbmRpZg0KKw0KKyNkZWZpbmUgX19SV1NFTV9JTklUSUFMSVpFUihuYW1lKSBcDQor CXsgUldTRU1fVU5MT0NLRURfVkFMVUUsIFNQSU5fTE9DS19VTkxPQ0tFRCwgXA0KKwkgIExJU1Rf SEVBRF9JTklUKChuYW1lKS53YWl0X2xpc3QpIFwNCisJICBfX1JXU0VNX0RFQlVHX0lOSVQgfQ0K Kw0KKyNkZWZpbmUgREVDTEFSRV9SV1NFTShuYW1lKSBcDQorCXN0cnVjdCByd19zZW1hcGhvcmUg bmFtZSA9IF9fUldTRU1fSU5JVElBTElaRVIobmFtZSkNCisNCitleHRlcm4gc3RydWN0IHJ3X3Nl bWFwaG9yZSAqcndzZW1fZG93bl9yZWFkX2ZhaWxlZChzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0p Ow0KK2V4dGVybiBzdHJ1Y3Qgcndfc2VtYXBob3JlICpyd3NlbV9kb3duX3dyaXRlX2ZhaWxlZChz dHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pOw0KK2V4dGVybiBzdHJ1Y3Qgcndfc2VtYXBob3JlICpy d3NlbV93YWtlKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSk7DQorZXh0ZXJuIHN0cnVjdCByd19z ZW1hcGhvcmUgKnJ3c2VtX2Rvd25ncmFkZV93YWtlKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSk7 DQorDQorc3RhdGljIGlubGluZSB2b2lkIGluaXRfcndzZW0oc3RydWN0IHJ3X3NlbWFwaG9yZSAq c2VtKQ0KK3sNCisJc2VtLT5jb3VudCA9IFJXU0VNX1VOTE9DS0VEX1ZBTFVFOw0KKwlzcGluX2xv Y2tfaW5pdCgmc2VtLT53YWl0X2xvY2spOw0KKwlJTklUX0xJU1RfSEVBRCgmc2VtLT53YWl0X2xp c3QpOw0KKyNpZiBSV1NFTV9ERUJVRw0KKwlzZW0tPmRlYnVnID0gMDsNCisjZW5kaWYNCit9DQor DQorLyoNCisgKiBsb2NrIGZvciByZWFkaW5nDQorICovDQorc3RhdGljIGlubGluZSB2b2lkIF9f ZG93bl9yZWFkKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkNCit7DQorCWludCByZXN1bHQ7DQor CV9fYXNtX18gX192b2xhdGlsZV9fICgiZmV0Y2hhZGQ0LmFjcSAlMD1bJTFdLDEiIDoNCisJCQkg ICAgICAiPXIiKHJlc3VsdCkgOiAiciIoJnNlbS0+Y291bnQpIDogIm1lbW9yeSIpOw0KKwlpZiAo cmVzdWx0IDwgMCkNCisJCXJ3c2VtX2Rvd25fcmVhZF9mYWlsZWQoc2VtKTsNCit9DQorDQorLyoN CisgKiBsb2NrIGZvciB3cml0aW5nDQorICovDQorc3RhdGljIGlubGluZSB2b2lkIF9fZG93bl93 cml0ZShzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pDQorew0KKwlpbnQgb2xkLCBuZXc7DQorDQor CWRvIHsNCisJCW9sZCA9IHNlbS0+Y291bnQ7DQorCQluZXcgPSBvbGQgKyBSV1NFTV9BQ1RJVkVf V1JJVEVfQklBUzsNCisJfSB3aGlsZSAoY21weGNoZ19hY3EoJnNlbS0+Y291bnQsIG9sZCwgbmV3 KSAhPSBvbGQpOw0KKw0KKwlpZiAob2xkICE9IDApDQorCQlyd3NlbV9kb3duX3dyaXRlX2ZhaWxl ZChzZW0pOw0KK30NCisNCisvKg0KKyAqIHVubG9jayBhZnRlciByZWFkaW5nDQorICovDQorc3Rh dGljIGlubGluZSB2b2lkIF9fdXBfcmVhZChzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pDQorew0K KwlpbnQgcmVzdWx0Ow0KKwlfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImZldGNoYWRkNC5yZWwgJTA9 WyUxXSwtMSIgOg0KKwkJCSAgICAgICI9ciIocmVzdWx0KSA6ICJyIigmc2VtLT5jb3VudCkgOiAi bWVtb3J5Iik7DQorCWlmIChyZXN1bHQgPCAwICYmICgtLXJlc3VsdCAmIFJXU0VNX0FDVElWRV9N QVNLKSA9PSAwKQ0KKwkJcndzZW1fd2FrZShzZW0pOw0KK30NCisNCisvKg0KKyAqIHVubG9jayBh ZnRlciB3cml0aW5nDQorICovDQorc3RhdGljIGlubGluZSB2b2lkIF9fdXBfd3JpdGUoc3RydWN0 IHJ3X3NlbWFwaG9yZSAqc2VtKQ0KK3sNCisJaW50IG9sZCwgbmV3Ow0KKw0KKwlkbyB7DQorCQlv bGQgPSBzZW0tPmNvdW50Ow0KKwkJbmV3ID0gb2xkIC0gUldTRU1fQUNUSVZFX1dSSVRFX0JJQVM7 DQorCX0gd2hpbGUgKGNtcHhjaGdfcmVsKCZzZW0tPmNvdW50LCBvbGQsIG5ldykgIT0gb2xkKTsN CisNCisJaWYgKG5ldyA8IDAgJiYgKG5ldyAmIFJXU0VNX0FDVElWRV9NQVNLKSA9PSAwKQ0KKwkJ cndzZW1fd2FrZShzZW0pOw0KK30NCisNCisvKg0KKyAqIHRyeWxvY2sgZm9yIHJlYWRpbmcgLS0g cmV0dXJucyAxIGlmIHN1Y2Nlc3NmdWwsIDAgaWYgY29udGVudGlvbg0KKyAqLw0KK3N0YXRpYyBp bmxpbmUgaW50IF9fZG93bl9yZWFkX3RyeWxvY2soc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKQ0K K3sNCisJaW50IHRtcDsNCisJd2hpbGUgKCh0bXAgPSBzZW0tPmNvdW50KSA+PSAwKSB7DQorCQlp ZiAodG1wID09IGNtcHhjaGdfYWNxKCZzZW0tPmNvdW50LCB0bXAsIHRtcCsxKSkgew0KKwkJCXJl dHVybiAxOw0KKwkJfQ0KKwl9DQorCXJldHVybiAwOw0KK30NCisNCisvKg0KKyAqIHRyeWxvY2sg Zm9yIHdyaXRpbmcgLS0gcmV0dXJucyAxIGlmIHN1Y2Nlc3NmdWwsIDAgaWYgY29udGVudGlvbg0K KyAqLw0KK3N0YXRpYyBpbmxpbmUgaW50IF9fZG93bl93cml0ZV90cnlsb2NrKHN0cnVjdCByd19z ZW1hcGhvcmUgKnNlbSkNCit7DQorCWludCB0bXAgPSBjbXB4Y2hnX2FjcSgmc2VtLT5jb3VudCwg UldTRU1fVU5MT0NLRURfVkFMVUUsDQorCQkJICBSV1NFTV9BQ1RJVkVfV1JJVEVfQklBUyk7DQor CXJldHVybiB0bXAgPT0gUldTRU1fVU5MT0NLRURfVkFMVUU7DQorfQ0KKw0KKy8qDQorICogZG93 bmdyYWRlIHdyaXRlIGxvY2sgdG8gcmVhZCBsb2NrDQorICovDQorc3RhdGljIGlubGluZSB2b2lk IF9fZG93bmdyYWRlX3dyaXRlKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkNCit7DQorCWludCBv bGQsIG5ldzsNCisNCisJZG8gew0KKwkJb2xkID0gc2VtLT5jb3VudDsNCisJCW5ldyA9IG9sZCAt IFJXU0VNX1dBSVRJTkdfQklBUzsNCisJfSB3aGlsZSAoY21weGNoZ19yZWwoJnNlbS0+Y291bnQs IG9sZCwgbmV3KSAhPSBvbGQpOw0KKw0KKwlpZiAob2xkIDwgMCkNCisJCXJ3c2VtX2Rvd25ncmFk ZV93YWtlKHNlbSk7DQorfQ0KKw0KKy8qDQorICogaW1wbGVtZW50IGF0b21pYyBhZGQgZnVuY3Rp b25hbGl0eQ0KKyAqLw0KK3N0YXRpYyBpbmxpbmUgdm9pZCByd3NlbV9hdG9taWNfYWRkKGludCBk ZWx0YSwgc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKQ0KK3sNCisJYXRvbWljX2FkZChkZWx0YSwg KGF0b21pY190ICopKCZzZW0tPmNvdW50KSk7DQorfQ0KKw0KK3N0YXRpYyBpbmxpbmUgaW50IHJ3 c2VtX2F0b21pY191cGRhdGUoaW50IGRlbHRhLCBzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pDQor ew0KKwlyZXR1cm4gYXRvbWljX2FkZF9yZXR1cm4oZGVsdGEsIChhdG9taWNfdCAqKSgmc2VtLT5j b3VudCkpOw0KK30NCisNCisjZW5kaWYgLyogX19LRVJORUxfXyAqLw0KKyNlbmRpZiAvKiBfSUE2 NF9SV1NFTV9IICovDQo= ------_=_NextPart_001_01C2D845.20A459BC--