From mboxrd@z Thu Jan 1 00:00:00 1970 From: robert.foss@collabora.com Subject: [PATCH i-g-t v4 01/13] lib/sw_sync: Add helper functions for managing synchronization primitives Date: Wed, 14 Sep 2016 11:04:30 -0400 Message-ID: <20160914150442.18183-2-robert.foss@collabora.com> References: <20160914150442.18183-1-robert.foss@collabora.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [IPv6:2a00:1098:0:82:1000:25:2eeb:e3e3]) by gabe.freedesktop.org (Postfix) with ESMTPS id 125936E771 for ; Wed, 14 Sep 2016 15:04:50 +0000 (UTC) In-Reply-To: <20160914150442.18183-1-robert.foss@collabora.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org, Gustavo Padovan , Daniel Stone , Daniel Vetter , Marius Vlad , Eric Engestrom , Chris Wilson Cc: Gustavo Padovan List-Id: intel-gfx@lists.freedesktop.org RnJvbTogUm9iZXJ0IEZvc3MgPHJvYmVydC5mb3NzQGNvbGxhYm9yYS5jb20+CgpCYXNlIGZ1bmN0 aW9ucyB0byBoZWxwIHRlc3RpbmcgdGhlIFN5bmMgRmlsZSBGcmFtZXdvcmsgKGV4cGxpY2l0IGZl bmNpbmcKbWVjaGFuaXNtIHBvcnRlZCBmcm9tIEFuZHJvaWQpLgpUaGVzZSBmdW5jdGlvbnMgYWxs b3cgeW91IHRvIGNyZWF0ZSwgdXNlIGFuZCBkZXN0cm95IHRpbWVsaW5lcyBhbmQgZmVuY2VzLgoK U2lnbmVkLW9mZi1ieTogUm9iZXJ0IEZvc3MgPHJvYmVydC5mb3NzQGNvbGxhYm9yYS5jb20+ClNp Z25lZC1vZmYtYnk6IEd1c3Rhdm8gUGFkb3ZhbiA8Z3VzdGF2by5wYWRvdmFuQGNvbGxhYm9yYS5j by51az4KUmV2aWV3ZWQtYnk6IEVyaWMgRW5nZXN0cm9tIDxlcmljQGVuZ2VzdHJvbS5jaD4KLS0t CiBsaWIvTWFrZWZpbGUuc291cmNlcyB8ICAgMiArCiBsaWIvc3dfc3luYy5jICAgICAgICB8IDE5 MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGxp Yi9zd19zeW5jLmggICAgICAgIHwgIDQ4ICsrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwg MjQwIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvc3dfc3luYy5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgbGliL3N3X3N5bmMuaAoKZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZS5z b3VyY2VzIGIvbGliL01ha2VmaWxlLnNvdXJjZXMKaW5kZXggYmFjOWE3Zi4uM2RjN2MzYyAxMDA2 NDQKLS0tIGEvbGliL01ha2VmaWxlLnNvdXJjZXMKKysrIGIvbGliL01ha2VmaWxlLnNvdXJjZXMK QEAgLTYxLDYgKzYxLDggQEAgbGliX3NvdXJjZV9saXN0ID0JIAlcCiAJcmVuZGVyY29weV9nZW44 LmMJXAogCXJlbmRlcmNvcHlfZ2VuOS5jCVwKIAlyZW5kZXJjb3B5LmgJCVwKKwlzd19zeW5jLmMJ CVwKKwlzd19zeW5jLmgJCVwKIAlpbnRlbF9yZWdfbWFwLmMJCVwKIAlpbnRlbF9pb3NmLmMJCVwK IAlpZ3Rfa21zLmMJCVwKZGlmZiAtLWdpdCBhL2xpYi9zd19zeW5jLmMgYi9saWIvc3dfc3luYy5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlNjQ4MzcKLS0tIC9kZXYvbnVs bAorKysgYi9saWIvc3dfc3luYy5jCkBAIC0wLDAgKzEsMTkwIEBACisvKgorICogQ29weXJpZ2h0 IDIwMTIgR29vZ2xlLCBJbmMKKyAqIENvcHlyaWdodCDCqSAyMDE2IENvbGxhYm9yYSwgTHRkLgor ICoKKyAqIEJhc2VkIG9uIHRoZSBpbXBsZW1lbnRhdGlvbiBmcm9tIHRoZSBBbmRyb2lkIE9wZW4g U291cmNlIFByb2plY3QKKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVl IG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNv ZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUi KSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1 ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2Rp ZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNl bGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20g dGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZv bGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFu ZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFw aCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9u cyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAi QVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBM SUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNI QU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05J TkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJ R0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAq IExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RI RVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRI RSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdB UkUuCisgKgorICogQXV0aG9yczoKKyAqICAgIFJvYmVydCBGb3NzIDxyb2JlcnQuZm9zc0Bjb2xs YWJvcmEuY29tPgorICovCisKKyNpZm5kZWYgQU5EUk9JRAorI2RlZmluZSBfR05VX1NPVVJDRQor I2Vsc2UKKyNpbmNsdWRlIDxsaWJnZW4uaD4KKyNlbmRpZgorI2luY2x1ZGUgPGZjbnRsLmg+Cisj aW5jbHVkZSA8cG9sbC5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPGxpbnV4L3N5 bmNfZmlsZS5oPgorI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorCisjaW5jbHVkZSAic3dfc3luYy5o IgorI2luY2x1ZGUgImRybXRlc3QuaCIKKyNpbmNsdWRlICJpb2N0bF93cmFwcGVycy5oIgorCisj aWZuZGVmIFNXX1NZTkNfSU9DX0lOQworc3RydWN0IHN3X3N5bmNfY3JlYXRlX2ZlbmNlX2RhdGEg eworCV9fdTMyCXZhbHVlOworCWNoYXIJbmFtZVszMl07CisJX19zMzIJZmVuY2U7Cit9OworCisj ZGVmaW5lIFNXX1NZTkNfSU9DX01BR0lDCQknVycKKyNkZWZpbmUgU1dfU1lOQ19JT0NfQ1JFQVRF X0ZFTkNFCV9JT1dSKFNXX1NZTkNfSU9DX01BR0lDLCAwLFwKKwkJCQkJCXN0cnVjdCBzd19zeW5j X2NyZWF0ZV9mZW5jZV9kYXRhKQorI2RlZmluZSBTV19TWU5DX0lPQ19JTkMJCQlfSU9XKFNXX1NZ TkNfSU9DX01BR0lDLCAxLCBfX3UzMikKKyNlbmRpZgorCisjZGVmaW5lIERFVkZTX1NXX1NZTkMg ICAiL2Rldi9zd19zeW5jIgorI2RlZmluZSBERUJVR0ZTX1NXX1NZTkMgIi9zeXMva2VybmVsL2Rl YnVnL3N5bmMvc3dfc3luYyIKKworCitpbnQgc3dfc3luY19mZF9pc192YWxpZChpbnQgZmQpCit7 CisJaW50IHN0YXR1czsKKworCWlmIChmZCA8IDApCisJCXJldHVybiAwOworCisJc3RhdHVzID0g ZmNudGwoZmQsIEZfR0VURkQsIDApOworCXJldHVybiBzdGF0dXMgPj0gMDsKK30KKworaW50IHN3 X3N5bmNfdGltZWxpbmVfY3JlYXRlKHZvaWQpCit7CisJaW50IGZkID0gb3BlbihERVZGU19TV19T WU5DLCBPX1JEV1IpOworCisJaWYgKGZkIDwgMCkKKwkJZmQgPSBvcGVuKERFQlVHRlNfU1dfU1lO QywgT19SRFdSKTsKKworCWlndF9hc3NlcnQoc3dfc3luY19mZF9pc192YWxpZChmZCkpOworCisJ cmV0dXJuIGZkOworfQorCitpbnQgX19zd19zeW5jX2ZlbmNlX2NyZWF0ZShpbnQgZmQsIHVpbnQz Ml90IHNlcW5vKQoreworCisJc3RydWN0IHN3X3N5bmNfY3JlYXRlX2ZlbmNlX2RhdGEgZGF0YTsK KworCW1lbXNldCgmZGF0YSwgMCwgc2l6ZW9mKGRhdGEpKTsKKwlkYXRhLnZhbHVlID0gc2Vxbm87 CisKKwlpZiAoaWd0X2lvY3RsKGZkLCBTV19TWU5DX0lPQ19DUkVBVEVfRkVOQ0UsICZkYXRhKSkK KwkJcmV0dXJuIC1lcnJubzsKKworCXJldHVybiBkYXRhLmZlbmNlOworfQorCitpbnQgc3dfc3lu Y19mZW5jZV9jcmVhdGUoaW50IGZkLCB1aW50MzJfdCBzZXFubykKK3sKKwlpbnQgZmVuY2UgPSBf X3N3X3N5bmNfZmVuY2VfY3JlYXRlKGZkLCBzZXFubyk7CisJaWd0X2Fzc2VydChmZW5jZSA+PSAw KTsKKwlyZXR1cm4gZmVuY2U7Cit9CisKK3ZvaWQgc3dfc3luY190aW1lbGluZV9pbmMoaW50IGZk LCB1aW50MzJfdCBjb3VudCkKK3sKKwl1aW50MzJfdCBhcmcgPSBjb3VudDsKKworCWlmIChmZCA9 PSAwKQorCQlyZXR1cm47CisKKwlkb19pb2N0bChmZCwgU1dfU1lOQ19JT0NfSU5DLCAmYXJnKTsK K30KKworaW50IHN3X3N5bmNfbWVyZ2UoaW50IGZkMSwgaW50IGZkMikKK3sKKwlzdHJ1Y3Qgc3lu Y19tZXJnZV9kYXRhIGRhdGEgPSB7fTsKKwlpbnQgZXJyOworCisJZGF0YS5mZDIgPSBmZDI7CisK KwllcnIgPSBpb2N0bChmZDEsIFNZTkNfSU9DX01FUkdFLCAmZGF0YSk7CisJaWYgKGVyciA8IDAp CisJCXJldHVybiAtZXJybm87CisKKwlzd19zeW5jX2ZkX2lzX3ZhbGlkKGRhdGEuZmVuY2UpOwor CisJcmV0dXJuIGRhdGEuZmVuY2U7Cit9CisKK2ludCBzd19zeW5jX3dhaXQoaW50IGZlbmNlLCBp bnQgdGltZW91dCkKK3sKKwlzdHJ1Y3QgcG9sbGZkIGZkczsKKwlpbnQgcmV0OworCisJZmRzLmZk ID0gZmVuY2U7CisJZmRzLmV2ZW50cyA9IFBPTExJTiB8IFBPTExFUlI7CisKKwlyZXQgPSBwb2xs KCZmZHMsIDEsIHRpbWVvdXQpOworCisJcmV0dXJuIHJldDsKK30KKworaW50IHN3X3N5bmNfZmVu Y2VfY291bnQoaW50IGZkKQoreworCXN0cnVjdCBzeW5jX2ZpbGVfaW5mbyBpbmZvOworCisJbWVt c2V0KCZpbmZvLCAwLCBzaXplb2YoaW5mbykpOworCWlmIChpb2N0bChmZCwgU1lOQ19JT0NfRklM RV9JTkZPLCAmaW5mbykpCisJICAgIHJldHVybiAtZXJybm87CisKKwlyZXR1cm4gaW5mby5udW1f ZmVuY2VzOworfQorCitzdGF0aWMgaW50IF9fc3dfc3luY19mZW5jZV9jb3VudF9zdGF0dXMoaW50 IGZkLCBpbnQgc3RhdHVzKQoreworCXN0cnVjdCBzeW5jX2ZpbGVfaW5mbyBpbmZvOworCXN0cnVj dCBzeW5jX2ZlbmNlX2luZm8gKmZlbmNlX2luZm87CisJaW50IGNvdW50OworCWludCBpOworCisJ bWVtc2V0KCZpbmZvLCAwLCBzaXplb2YoaW5mbykpOworCWlmIChpb2N0bChmZCwgU1lOQ19JT0Nf RklMRV9JTkZPLCAmaW5mbykpCisJCXJldHVybiAtZXJybm87CisKKwlmZW5jZV9pbmZvID0gY2Fs bG9jKGluZm8ubnVtX2ZlbmNlcywgc2l6ZW9mKCpmZW5jZV9pbmZvKSk7CisJaWYgKCFmZW5jZV9p bmZvKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWluZm8uc3luY19mZW5jZV9pbmZvID0gKHVpbnRw dHJfdClmZW5jZV9pbmZvOworCWlmIChpb2N0bChmZCwgU1lOQ19JT0NfRklMRV9JTkZPLCAmaW5m bykpIHsKKwkJY291bnQgPSAtZXJybm87CisJfSBlbHNlIHsKKwkJY291bnQgPSAwOworCQlmb3Ig KGkgPSAwIDsgaSA8IGluZm8ubnVtX2ZlbmNlcyA7IGkrKykKKwkJICAgIGNvdW50ICs9IGZlbmNl X2luZm9baV0uc3RhdHVzID09IHN0YXR1czsKKwl9CisKKwlmcmVlKGZlbmNlX2luZm8pOworCisJ cmV0dXJuIGNvdW50OworfQorCitpbnQgc3dfc3luY19mZW5jZV9jb3VudF9zdGF0dXMoaW50IGZk LCBpbnQgc3RhdHVzKQoreworCWludCBjb3VudCA9IF9fc3dfc3luY19mZW5jZV9jb3VudF9zdGF0 dXMoZmQsIHN0YXR1cyk7CisJaWd0X2Fzc2VydChjb3VudCA+PSAwKTsKKwlyZXR1cm4gY291bnQ7 Cit9CmRpZmYgLS1naXQgYS9saWIvc3dfc3luYy5oIGIvbGliL3N3X3N5bmMuaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZWU5MjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvbGli L3N3X3N5bmMuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IDIwMTIgR29vZ2xl LCBJbmMKKyAqIENvcHlyaWdodCDCqSAyMDE2IENvbGxhYm9yYSwgTHRkLgorICoKKyAqIEJhc2Vk IG9uIHRoZSBpbXBsZW1lbnRhdGlvbiBmcm9tIHRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2pl Y3QKKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwg dG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBh c3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRl YWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0 IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBw dWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9m IHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0 d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25k aXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1p c3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUg aW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAq IFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRI T1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJ TkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwK KyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQu ICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMg QkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwg V0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklT SU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBP UiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgorICog QXV0aG9yczoKKyAqICAgIFJvYmVydCBGb3NzIDxyb2JlcnQuZm9zc0Bjb2xsYWJvcmEuY29tPgor ICovCisKKyNpZm5kZWYgU1dfU1lOQ19ICisjZGVmaW5lIFNXX1NZTkNfSAorCisjZGVmaW5lIFNX X1NZTkNfRkVOQ0VfU1RBVFVTX0VSUk9SCQkoLTEpCisjZGVmaW5lIFNXX1NZTkNfRkVOQ0VfU1RB VFVTX0FDVElWRQkJKDApCisjZGVmaW5lIFNXX1NZTkNfRkVOQ0VfU1RBVFVTX1NJR05BTEVECSgx KQorCitpbnQgc3dfc3luY19mZF9pc192YWxpZChpbnQgZmQpOworaW50IHN3X3N5bmNfdGltZWxp bmVfY3JlYXRlKHZvaWQpOworaW50IF9fc3dfc3luY19mZW5jZV9jcmVhdGUoaW50IGZkLCB1aW50 MzJfdCBzZXFubyk7CitpbnQgc3dfc3luY19mZW5jZV9jcmVhdGUoaW50IGZkLCB1aW50MzJfdCBz ZXFubyk7Cit2b2lkIHN3X3N5bmNfdGltZWxpbmVfaW5jKGludCBmZCwgdWludDMyX3QgY291bnQp OworaW50IHN3X3N5bmNfbWVyZ2UoaW50IGZkMSwgaW50IGZkMik7CitpbnQgc3dfc3luY193YWl0 KGludCBmZW5jZSwgaW50IHRpbWVvdXQpOworaW50IHN3X3N5bmNfZmVuY2VfY291bnQoaW50IGZk KTsKK2ludCBzd19zeW5jX2ZlbmNlX2NvdW50X3N0YXR1cyhpbnQgZmQsIGludCBzdGF0dXMpOwor CisjZW5kaWYKKwotLSAKMi45LjMKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo=