From mboxrd@z Thu Jan 1 00:00:00 1970 From: robert.foss@collabora.com Subject: [PATCH i-g-t v3 01/13] lib/sw_sync: Add helper functions for managing synchronization primitives Date: Tue, 13 Sep 2016 14:22:46 -0400 Message-ID: <20160913182258.3595-2-robert.foss@collabora.com> References: <20160913182258.3595-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 [46.235.227.227]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4A6BF6E2F6 for ; Tue, 13 Sep 2016 18:23:07 +0000 (UTC) In-Reply-To: <20160913182258.3595-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 CiBsaWIvTWFrZWZpbGUuc291cmNlcyB8ICAgMiArCiBsaWIvc3dfc3luYy5jICAgICAgICB8IDE4 MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGxp Yi9zd19zeW5jLmggICAgICAgIHwgIDQ3ICsrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwg MjMyIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvc3dfc3luYy5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgbGliL3N3X3N5bmMuaAoKZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZS5z b3VyY2VzIGIvbGliL01ha2VmaWxlLnNvdXJjZXMKaW5kZXggYmFjOWE3Zi4uM2RjN2MzYyAxMDA2 NDQKLS0tIGEvbGliL01ha2VmaWxlLnNvdXJjZXMKKysrIGIvbGliL01ha2VmaWxlLnNvdXJjZXMK QEAgLTYxLDYgKzYxLDggQEAgbGliX3NvdXJjZV9saXN0ID0JIAlcCiAJcmVuZGVyY29weV9nZW44 LmMJXAogCXJlbmRlcmNvcHlfZ2VuOS5jCVwKIAlyZW5kZXJjb3B5LmgJCVwKKwlzd19zeW5jLmMJ CVwKKwlzd19zeW5jLmgJCVwKIAlpbnRlbF9yZWdfbWFwLmMJCVwKIAlpbnRlbF9pb3NmLmMJCVwK IAlpZ3Rfa21zLmMJCVwKZGlmZiAtLWdpdCBhL2xpYi9zd19zeW5jLmMgYi9saWIvc3dfc3luYy5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyMjZhZTQKLS0tIC9kZXYvbnVs bAorKysgYi9saWIvc3dfc3luYy5jCkBAIC0wLDAgKzEsMTgzIEBACisvKgorICogQ29weXJpZ2h0 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 cmV0dXJuIGZkOworfQorCitpbnQgc3dfc3luY19mZW5jZV9jcmVhdGUoaW50IGZkLCBpbnQzMl90 IHNlcW5vKQoreworCXN0cnVjdCBzd19zeW5jX2NyZWF0ZV9mZW5jZV9kYXRhIGRhdGEgPSB7fTsK KwlkYXRhLnZhbHVlID0gc2Vxbm87CisKKwlpZiAoZmQgPj0gMCkgeworCQlkb19pb2N0bChmZCwg U1dfU1lOQ19JT0NfQ1JFQVRFX0ZFTkNFLCAmZGF0YSk7CisJCXJldHVybiBkYXRhLmZlbmNlOwor CX0gZWxzZSB7CisJCWRvX2lvY3RsX2VycihmZCwgU1dfU1lOQ19JT0NfQ1JFQVRFX0ZFTkNFLCAm ZGF0YSwgRUJBREYpOworCQlyZXR1cm4gLTE7CisJfQorfQorCit2b2lkIHN3X3N5bmNfdGltZWxp bmVfaW5jKGludCBmZCwgdWludDMyX3QgY291bnQpCit7CisJdWludDMyX3QgYXJnID0gY291bnQ7 CisKKwlpZiAoZmQgPT0gMCkKKwkJcmV0dXJuOworCisJZG9faW9jdGwoZmQsIFNXX1NZTkNfSU9D X0lOQywgJmFyZyk7Cit9CisKK2ludCBzd19zeW5jX21lcmdlKGludCBmZDEsIGludCBmZDIpCit7 CisJc3RydWN0IHN5bmNfbWVyZ2VfZGF0YSBkYXRhID0ge307CisJaW50IGVycjsKKworCWRhdGEu ZmQyID0gZmQyOworCisJZXJyID0gaW9jdGwoZmQxLCBTWU5DX0lPQ19NRVJHRSwgJmRhdGEpOwor CWlmIChlcnIgPCAwKQorCQlyZXR1cm4gLWVycm5vOworCisJc3dfc3luY19mZF9pc192YWxpZChk YXRhLmZlbmNlKTsKKworCXJldHVybiBkYXRhLmZlbmNlOworfQorCitpbnQgc3dfc3luY193YWl0 KGludCBmZW5jZSwgaW50IHRpbWVvdXQpCit7CisJc3RydWN0IHBvbGxmZCBmZHM7CisJaW50IHJl dDsKKworCWZkcy5mZCA9IGZlbmNlOworCWZkcy5ldmVudHMgPSBQT0xMSU4gfCBQT0xMRVJSOwor CisJcmV0ID0gcG9sbCgmZmRzLCAxLCB0aW1lb3V0KTsKKworCXJldHVybiByZXQ7Cit9CisKK2lu dCBzd19zeW5jX2ZlbmNlX2NvdW50KGludCBmZCkKK3sKKwlzdHJ1Y3Qgc3luY19maWxlX2luZm8g aW5mbzsKKworCW1lbXNldCgmaW5mbywgMCwgc2l6ZW9mKGluZm8pKTsKKwlpZiAoaW9jdGwoZmQs IFNZTkNfSU9DX0ZJTEVfSU5GTywgJmluZm8pKQorCSAgICByZXR1cm4gLWVycm5vOworCisJcmV0 dXJuIGluZm8ubnVtX2ZlbmNlczsKK30KKworc3RhdGljIGludCBfX3N3X3N5bmNfZmVuY2VfY291 bnRfc3RhdHVzKGludCBmZCwgaW50IHN0YXR1cykKK3sKKwlzdHJ1Y3Qgc3luY19maWxlX2luZm8g aW5mbzsKKwlzdHJ1Y3Qgc3luY19mZW5jZV9pbmZvICpmZW5jZV9pbmZvOworCWludCBjb3VudDsK KwlpbnQgaTsKKworCW1lbXNldCgmaW5mbywgMCwgc2l6ZW9mKGluZm8pKTsKKwlpZiAoaW9jdGwo ZmQsIFNZTkNfSU9DX0ZJTEVfSU5GTywgJmluZm8pKQorCQlyZXR1cm4gLWVycm5vOworCisJZmVu Y2VfaW5mbyA9IGNhbGxvYyhpbmZvLm51bV9mZW5jZXMsIHNpemVvZigqZmVuY2VfaW5mbykpOwor CWlmICghZmVuY2VfaW5mbykKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlpbmZvLnN5bmNfZmVuY2Vf aW5mbyA9ICh1aW50cHRyX3QpZmVuY2VfaW5mbzsKKwlpZiAoaW9jdGwoZmQsIFNZTkNfSU9DX0ZJ TEVfSU5GTywgJmluZm8pKSB7CisJCWNvdW50ID0gLWVycm5vOworCX0gZWxzZSB7CisJCWNvdW50 ID0gMDsKKwkJZm9yIChpID0gMCA7IGkgPCBpbmZvLm51bV9mZW5jZXMgOyBpKyspCisJCSAgICBj b3VudCArPSBmZW5jZV9pbmZvW2ldLnN0YXR1cyA9PSBzdGF0dXM7CisJfQorCisJZnJlZShmZW5j ZV9pbmZvKTsKKworCXJldHVybiBjb3VudDsKK30KKworaW50IHN3X3N5bmNfZmVuY2VfY291bnRf c3RhdHVzKGludCBmZCwgaW50IHN0YXR1cykKK3sKKwlpbnQgY291bnQgPSBfX3N3X3N5bmNfZmVu Y2VfY291bnRfc3RhdHVzKGZkLCBzdGF0dXMpOworCWlndF9hc3NlcnQoY291bnQgPj0gMCk7CisJ cmV0dXJuIGNvdW50OworfQpkaWZmIC0tZ2l0IGEvbGliL3N3X3N5bmMuaCBiL2xpYi9zd19zeW5j LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGMxMTY2NgotLS0gL2Rldi9u dWxsCisrKyBiL2xpYi9zd19zeW5jLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdo dCAyMDEyIEdvb2dsZSwgSW5jCisgKiBDb3B5cmlnaHQgwqkgMjAxNiBDb2xsYWJvcmEsIEx0ZC4K KyAqCisgKiBCYXNlZCBvbiB0aGUgaW1wbGVtZW50YXRpb24gZnJvbSB0aGUgQW5kcm9pZCBPcGVu IFNvdXJjZSBQcm9qZWN0CisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJl ZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBz b2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJl IiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNs dWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9k aWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBz ZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9t IHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBm b2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBh bmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3Jh cGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlv bnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQg IkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1Q TElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJD SEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9O SU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlS SUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisg KiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9U SEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBU SEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRX QVJFLgorICoKKyAqIEF1dGhvcnM6CisgKiAgICBSb2JlcnQgRm9zcyA8cm9iZXJ0LmZvc3NAY29s bGFib3JhLmNvbT4KKyAqLworCisjaWZuZGVmIFNXX1NZTkNfSAorI2RlZmluZSBTV19TWU5DX0gK KworI2RlZmluZSBTV19TWU5DX0ZFTkNFX1NUQVRVU19FUlJPUgkJKC0xKQorI2RlZmluZSBTV19T WU5DX0ZFTkNFX1NUQVRVU19BQ1RJVkUJCSgwKQorI2RlZmluZSBTV19TWU5DX0ZFTkNFX1NUQVRV U19TSUdOQUxFRAkoMSkKKworaW50IHN3X3N5bmNfZmRfaXNfdmFsaWQoaW50IGZkKTsKK2ludCBz d19zeW5jX3RpbWVsaW5lX2NyZWF0ZSh2b2lkKTsKK2ludCBzd19zeW5jX2ZlbmNlX2NyZWF0ZShp bnQgZmQsIGludDMyX3Qgc2Vxbm8pOwordm9pZCBzd19zeW5jX3RpbWVsaW5lX2luYyhpbnQgZmQs IHVpbnQzMl90IGNvdW50KTsKK2ludCBzd19zeW5jX21lcmdlKGludCBmZDEsIGludCBmZDIpOwor aW50IHN3X3N5bmNfd2FpdChpbnQgZmVuY2UsIGludCB0aW1lb3V0KTsKK2ludCBzd19zeW5jX2Zl bmNlX2NvdW50KGludCBmZCk7CitpbnQgc3dfc3luY19mZW5jZV9jb3VudF9zdGF0dXMoaW50IGZk LCBpbnQgc3RhdHVzKTsKKworI2VuZGlmCisKLS0gCjIuOS4zCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK