From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH] Avoid mutex starvation when optimistic spinning is disabled Date: Tue, 23 Aug 2016 10:10:11 +0200 Message-ID: <1471939811-9817-7-git-send-email-maarten.lankhorst@linux.intel.com> References: <1471939811-9817-1-git-send-email-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mblankhorst.nl (mblankhorst.nl [141.105.120.124]) by gabe.freedesktop.org (Postfix) with ESMTPS id BDB1D6E5B4 for ; Tue, 23 Aug 2016 08:10:18 +0000 (UTC) In-Reply-To: <1471939811-9817-1-git-send-email-maarten.lankhorst@linux.intel.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 Cc: Jason Low List-Id: intel-gfx@lists.freedesktop.org RnJvbTogSmFzb24gTG93IDxqYXNvbi5sb3cyQGhwZS5jb20+CgpPbiBUdWUsIDIwMTYtMDctMTkg YXQgMTY6MDQgLTA3MDAsIEphc29uIExvdyB3cm90ZToKPiBIaSBJbXJlLAo+Cj4gSGVyZSBpcyBh IHBhdGNoIHdoaWNoIHByZXZlbnRzIGEgdGhyZWFkIGZyb20gc3BlbmRpbmcgdG9vIG11Y2ggInRp bWUiCj4gd2FpdGluZyBmb3IgYSBtdXRleCBpbiB0aGUgIUNPTkZJR19NVVRFWF9TUElOX09OX09X TkVSIGNhc2UuCj4KPiBXb3VsZCB5b3UgbGlrZSB0byB0cnkgdGhpcyBvdXQgYW5kIHNlZSBpZiB0 aGlzIGFkZHJlc3NlcyB0aGUgbXV0ZXgKPiBzdGFydmF0aW9uIGlzc3VlIHlvdSBhcmUgc2VlaW5n IGluIHlvdXIgd29ya2xvYWQgd2hlbiBvcHRpbWlzdGljCj4gc3Bpbm5pbmcgaXMgZGlzYWJsZWQ/ CgpBbHRob3VnaCBpdCBsb29rcyBsaWtlIGl0IGRpZG4ndCB0YWtlIGNhcmUgb2YgdGhlICdsb2Nr IHN0ZWFsaW5nJyBjYXNlCmluIHRoZSBzbG93cGF0aC4gSGVyZSBpcyB0aGUgdXBkYXRlZCBmaXhl ZCB2ZXJzaW9uOgoKW2ltcmU6IGZpeGVkIHRyeW11dGV4LCB3d19tdXRleCBmdW5jdGlvbnMsIHJl c2V0IHlpZWxkX3RvX3dhaXRlciBvbmx5IGluCiB0aGUgd2FpdGVyIHRocmVhZC5dClNpZ25lZC1v ZmYtYnk6IEltcmUgRGVhayA8aW1yZS5kZWFrQGludGVsLmNvbT4KLS0tCiBpbmNsdWRlL2xpbnV4 L211dGV4LmggIHwgIDIgKysKIGtlcm5lbC9sb2NraW5nL211dGV4LmMgfCA4MCArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2Vk LCA3MSBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9pbmNsdWRl L2xpbnV4L211dGV4LmggYi9pbmNsdWRlL2xpbnV4L211dGV4LmgKaW5kZXggMmNiNzUzMS4uYzFj YTY4ZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tdXRleC5oCisrKyBiL2luY2x1ZGUvbGlu dXgvbXV0ZXguaApAQCAtNTcsNiArNTcsOCBAQCBzdHJ1Y3QgbXV0ZXggewogI2VuZGlmCiAjaWZk ZWYgQ09ORklHX01VVEVYX1NQSU5fT05fT1dORVIKIAlzdHJ1Y3Qgb3B0aW1pc3RpY19zcGluX3F1 ZXVlIG9zcTsgLyogU3Bpbm5lciBNQ1MgbG9jayAqLworI2Vsc2UKKwlib29sIHlpZWxkX3RvX3dh aXRlcjsgLyogUHJldmVudCBzdGFydmF0aW9uIHdoZW4gc3Bpbm5pbmcgZGlzYWJsZWQgKi8KICNl bmRpZgogI2lmZGVmIENPTkZJR19ERUJVR19NVVRFWEVTCiAJdm9pZAkJCSptYWdpYzsKZGlmZiAt LWdpdCBhL2tlcm5lbC9sb2NraW5nL211dGV4LmMgYi9rZXJuZWwvbG9ja2luZy9tdXRleC5jCmlu ZGV4IGE3MGI5MGQuLmNlNzAyOTkgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9sb2NraW5nL211dGV4LmMK KysrIGIva2VybmVsL2xvY2tpbmcvbXV0ZXguYwpAQCAtNTUsNiArNTUsOCBAQCBfX211dGV4X2lu aXQoc3RydWN0IG11dGV4ICpsb2NrLCBjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3QgbG9ja19jbGFz c19rZXkgKmtleSkKIAltdXRleF9jbGVhcl9vd25lcihsb2NrKTsKICNpZmRlZiBDT05GSUdfTVVU RVhfU1BJTl9PTl9PV05FUgogCW9zcV9sb2NrX2luaXQoJmxvY2stPm9zcSk7CisjZWxzZQorCWxv Y2stPnlpZWxkX3RvX3dhaXRlciA9IGZhbHNlOwogI2VuZGlmCiAKIAlkZWJ1Z19tdXRleF9pbml0 KGxvY2ssIG5hbWUsIGtleSk7CkBAIC03MSw2ICs3Myw5IEBAIEVYUE9SVF9TWU1CT0woX19tdXRl eF9pbml0KTsKICAqLwogX192aXNpYmxlIHZvaWQgX19zY2hlZCBfX211dGV4X2xvY2tfc2xvd3Bh dGgoYXRvbWljX3QgKmxvY2tfY291bnQpOwogCisKK3N0YXRpYyBpbmxpbmUgYm9vbCBuZWVkX3lp ZWxkX3RvX3dhaXRlcihzdHJ1Y3QgbXV0ZXggKmxvY2spOworCiAvKioKICAqIG11dGV4X2xvY2sg LSBhY3F1aXJlIHRoZSBtdXRleAogICogQGxvY2s6IHRoZSBtdXRleCB0byBiZSBhY3F1aXJlZApA QCAtOTUsMTEgKzEwMCwxNSBAQCBfX3Zpc2libGUgdm9pZCBfX3NjaGVkIF9fbXV0ZXhfbG9ja19z bG93cGF0aChhdG9taWNfdCAqbG9ja19jb3VudCk7CiB2b2lkIF9fc2NoZWQgbXV0ZXhfbG9jayhz dHJ1Y3QgbXV0ZXggKmxvY2spCiB7CiAJbWlnaHRfc2xlZXAoKTsKKwogCS8qCiAJICogVGhlIGxv Y2tpbmcgZmFzdHBhdGggaXMgdGhlIDEtPjAgdHJhbnNpdGlvbiBmcm9tCiAJICogJ3VubG9ja2Vk JyBpbnRvICdsb2NrZWQnIHN0YXRlLgogCSAqLwotCV9fbXV0ZXhfZmFzdHBhdGhfbG9jaygmbG9j ay0+Y291bnQsIF9fbXV0ZXhfbG9ja19zbG93cGF0aCk7CisJaWYgKCFuZWVkX3lpZWxkX3RvX3dh aXRlcihsb2NrKSkKKwkJX19tdXRleF9mYXN0cGF0aF9sb2NrKCZsb2NrLT5jb3VudCwgX19tdXRl eF9sb2NrX3Nsb3dwYXRoKTsKKwllbHNlCisJCV9fbXV0ZXhfbG9ja19zbG93cGF0aCgmbG9jay0+ Y291bnQpOwogCW11dGV4X3NldF9vd25lcihsb2NrKTsKIH0KIApAQCAtMzk4LDEyICs0MDcsNDEg QEAgZG9uZToKIAogCXJldHVybiBmYWxzZTsKIH0KKworc3RhdGljIGlubGluZSBib29sIGRvX3lp ZWxkX3RvX3dhaXRlcihzdHJ1Y3QgbXV0ZXggKmxvY2ssIGludCBsb29wcykKK3sKKwlyZXR1cm4g ZmFsc2U7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBuZWVkX3lpZWxkX3RvX3dhaXRlcihzdHJ1 Y3QgbXV0ZXggKmxvY2spCit7CisJcmV0dXJuIGZhbHNlOworfQorCiAjZWxzZQogc3RhdGljIGJv b2wgbXV0ZXhfb3B0aW1pc3RpY19zcGluKHN0cnVjdCBtdXRleCAqbG9jaywKIAkJCQkgIHN0cnVj dCB3d19hY3F1aXJlX2N0eCAqd3dfY3R4LCBjb25zdCBib29sIHVzZV93d19jdHgpCiB7CiAJcmV0 dXJuIGZhbHNlOwogfQorCisjZGVmaW5lIE1VVEVYX01BWF9XQUlUIDMyCisKK3N0YXRpYyBpbmxp bmUgYm9vbCBkb195aWVsZF90b193YWl0ZXIoc3RydWN0IG11dGV4ICpsb2NrLCBpbnQgbG9vcHMp Cit7CisJaWYgKGxvb3BzIDwgTVVURVhfTUFYX1dBSVQpCisJCXJldHVybiBmYWxzZTsKKworCWlm IChsb2NrLT55aWVsZF90b193YWl0ZXIgIT0gdHJ1ZSkKKwkJbG9jay0+eWllbGRfdG9fd2FpdGVy ID10cnVlOworCisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBuZWVkX3lp ZWxkX3RvX3dhaXRlcihzdHJ1Y3QgbXV0ZXggKmxvY2spCit7CisJcmV0dXJuIGxvY2stPnlpZWxk X3RvX3dhaXRlcjsKK30KICNlbmRpZgogCiBfX3Zpc2libGUgX191c2VkIG5vaW5saW5lCkBAIC01 MDksNyArNTQ3LDkgQEAgX19tdXRleF9sb2NrX2NvbW1vbihzdHJ1Y3QgbXV0ZXggKmxvY2ssIGxv bmcgc3RhdGUsIHVuc2lnbmVkIGludCBzdWJjbGFzcywKIAlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRh c2sgPSBjdXJyZW50OwogCXN0cnVjdCBtdXRleF93YWl0ZXIgd2FpdGVyOwogCXVuc2lnbmVkIGxv bmcgZmxhZ3M7CisJYm9vbCB5aWVsZF9mb3JjZWQgPSBmYWxzZTsKIAlpbnQgcmV0OworCWludCBs b29wID0gMDsKIAogCWlmICh1c2Vfd3dfY3R4KSB7CiAJCXN0cnVjdCB3d19tdXRleCAqd3cgPSBj b250YWluZXJfb2YobG9jaywgc3RydWN0IHd3X211dGV4LCBiYXNlKTsKQEAgLTUzMiw3ICs1NzIs NyBAQCBfX211dGV4X2xvY2tfY29tbW9uKHN0cnVjdCBtdXRleCAqbG9jaywgbG9uZyBzdGF0ZSwg dW5zaWduZWQgaW50IHN1YmNsYXNzLAogCSAqIE9uY2UgbW9yZSwgdHJ5IHRvIGFjcXVpcmUgdGhl IGxvY2suIE9ubHkgdHJ5LWxvY2sgdGhlIG11dGV4IGlmCiAJICogaXQgaXMgdW5sb2NrZWQgdG8g cmVkdWNlIHVubmVjZXNzYXJ5IHhjaGcoKSBvcGVyYXRpb25zLgogCSAqLwotCWlmICghbXV0ZXhf aXNfbG9ja2VkKGxvY2spICYmCisJaWYgKCFuZWVkX3lpZWxkX3RvX3dhaXRlcihsb2NrKSAmJiAh bXV0ZXhfaXNfbG9ja2VkKGxvY2spICYmCiAJICAgIChhdG9taWNfeGNoZ19hY3F1aXJlKCZsb2Nr LT5jb3VudCwgMCkgPT0gMSkpCiAJCWdvdG8gc2tpcF93YWl0OwogCkBAIC01NDYsNiArNTg2LDgg QEAgX19tdXRleF9sb2NrX2NvbW1vbihzdHJ1Y3QgbXV0ZXggKmxvY2ssIGxvbmcgc3RhdGUsIHVu c2lnbmVkIGludCBzdWJjbGFzcywKIAlsb2NrX2NvbnRlbmRlZCgmbG9jay0+ZGVwX21hcCwgaXAp OwogCiAJZm9yICg7OykgeworCQlsb29wKys7CisKIAkJLyoKIAkJICogTGV0cyB0cnkgdG8gdGFr ZSB0aGUgbG9jayBhZ2FpbiAtIHRoaXMgaXMgbmVlZGVkIGV2ZW4gaWYKIAkJICogd2UgZ2V0IGhl cmUgZm9yIHRoZSBmaXJzdCB0aW1lIChzaG9ydGx5IGFmdGVyIGZhaWxpbmcgdG8KQEAgLTU1Niw3 ICs1OTgsOCBAQCBfX211dGV4X2xvY2tfY29tbW9uKHN0cnVjdCBtdXRleCAqbG9jaywgbG9uZyBz dGF0ZSwgdW5zaWduZWQgaW50IHN1YmNsYXNzLAogCQkgKiBvdGhlciB3YWl0ZXJzLiBXZSBvbmx5 IGF0dGVtcHQgdGhlIHhjaGcgaWYgdGhlIGNvdW50IGlzCiAJCSAqIG5vbi1uZWdhdGl2ZSBpbiBv cmRlciB0byBhdm9pZCB1bm5lY2Vzc2FyeSB4Y2hnIG9wZXJhdGlvbnM6CiAJCSAqLwotCQlpZiAo YXRvbWljX3JlYWQoJmxvY2stPmNvdW50KSA+PSAwICYmCisJCWlmICgoIW5lZWRfeWllbGRfdG9f d2FpdGVyKGxvY2spIHx8IGxvb3AgPiAxKSAmJgorCQkgICAgYXRvbWljX3JlYWQoJmxvY2stPmNv dW50KSA+PSAwICYmCiAJCSAgICAoYXRvbWljX3hjaGdfYWNxdWlyZSgmbG9jay0+Y291bnQsIC0x KSA9PSAxKSkKIAkJCWJyZWFrOwogCkBAIC01ODEsNiArNjI0LDcgQEAgX19tdXRleF9sb2NrX2Nv bW1vbihzdHJ1Y3QgbXV0ZXggKmxvY2ssIGxvbmcgc3RhdGUsIHVuc2lnbmVkIGludCBzdWJjbGFz cywKIAkJc3Bpbl91bmxvY2tfbXV0ZXgoJmxvY2stPndhaXRfbG9jaywgZmxhZ3MpOwogCQlzY2hl ZHVsZV9wcmVlbXB0X2Rpc2FibGVkKCk7CiAJCXNwaW5fbG9ja19tdXRleCgmbG9jay0+d2FpdF9s b2NrLCBmbGFncyk7CisJCXlpZWxkX2ZvcmNlZCA9IGRvX3lpZWxkX3RvX3dhaXRlcihsb2NrLCBs b29wKTsKIAl9CiAJX19zZXRfdGFza19zdGF0ZSh0YXNrLCBUQVNLX1JVTk5JTkcpOwogCkBAIC01 OTAsNiArNjM0LDkgQEAgX19tdXRleF9sb2NrX2NvbW1vbihzdHJ1Y3QgbXV0ZXggKmxvY2ssIGxv bmcgc3RhdGUsIHVuc2lnbmVkIGludCBzdWJjbGFzcywKIAkJYXRvbWljX3NldCgmbG9jay0+Y291 bnQsIDApOwogCWRlYnVnX211dGV4X2ZyZWVfd2FpdGVyKCZ3YWl0ZXIpOwogCisJaWYgKHlpZWxk X2ZvcmNlZCkKKwkJbG9jay0+eWllbGRfdG9fd2FpdGVyID0gZmFsc2U7CisKIHNraXBfd2FpdDoK IAkvKiBnb3QgdGhlIGxvY2sgLSBjbGVhbnVwIGFuZCByZWpvaWNlISAqLwogCWxvY2tfYWNxdWly ZWQoJmxvY2stPmRlcF9tYXAsIGlwKTsKQEAgLTc4OSwxMCArODM2LDEzIEBAIF9fbXV0ZXhfbG9j a19pbnRlcnJ1cHRpYmxlX3Nsb3dwYXRoKHN0cnVjdCBtdXRleCAqbG9jayk7CiAgKi8KIGludCBf X3NjaGVkIG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZShzdHJ1Y3QgbXV0ZXggKmxvY2spCiB7Ci0J aW50IHJldDsKKwlpbnQgcmV0ID0gMTsKIAogCW1pZ2h0X3NsZWVwKCk7Ci0JcmV0ID0gIF9fbXV0 ZXhfZmFzdHBhdGhfbG9ja19yZXR2YWwoJmxvY2stPmNvdW50KTsKKworCWlmICghbmVlZF95aWVs ZF90b193YWl0ZXIobG9jaykpCisJCXJldCA9ICBfX211dGV4X2Zhc3RwYXRoX2xvY2tfcmV0dmFs KCZsb2NrLT5jb3VudCk7CisKIAlpZiAobGlrZWx5KCFyZXQpKSB7CiAJCW11dGV4X3NldF9vd25l cihsb2NrKTsKIAkJcmV0dXJuIDA7CkBAIC04MDQsMTAgKzg1NCwxMyBAQCBFWFBPUlRfU1lNQk9M KG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSk7CiAKIGludCBfX3NjaGVkIG11dGV4X2xvY2tfa2ls bGFibGUoc3RydWN0IG11dGV4ICpsb2NrKQogewotCWludCByZXQ7CisJaW50IHJldCA9IDE7CiAK IAltaWdodF9zbGVlcCgpOwotCXJldCA9IF9fbXV0ZXhfZmFzdHBhdGhfbG9ja19yZXR2YWwoJmxv Y2stPmNvdW50KTsKKworCWlmICghbmVlZF95aWVsZF90b193YWl0ZXIobG9jaykpCisJCXJldCA9 IF9fbXV0ZXhfZmFzdHBhdGhfbG9ja19yZXR2YWwoJmxvY2stPmNvdW50KTsKKwogCWlmIChsaWtl bHkoIXJldCkpIHsKIAkJbXV0ZXhfc2V0X293bmVyKGxvY2spOwogCQlyZXR1cm4gMDsKQEAgLTkw NSw2ICs5NTgsOSBAQCBpbnQgX19zY2hlZCBtdXRleF90cnlsb2NrKHN0cnVjdCBtdXRleCAqbG9j aykKIHsKIAlpbnQgcmV0OwogCisJaWYgKG5lZWRfeWllbGRfdG9fd2FpdGVyKGxvY2spKQorCQly ZXR1cm4gMDsKKwogCXJldCA9IF9fbXV0ZXhfZmFzdHBhdGhfdHJ5bG9jaygmbG9jay0+Y291bnQs IF9fbXV0ZXhfdHJ5bG9ja19zbG93cGF0aCk7CiAJaWYgKHJldCkKIAkJbXV0ZXhfc2V0X293bmVy KGxvY2spOwpAQCAtOTE3LDExICs5NzMsMTIgQEAgRVhQT1JUX1NZTUJPTChtdXRleF90cnlsb2Nr KTsKIGludCBfX3NjaGVkCiBfX3d3X211dGV4X2xvY2soc3RydWN0IHd3X211dGV4ICpsb2NrLCBz dHJ1Y3Qgd3dfYWNxdWlyZV9jdHggKmN0eCkKIHsKLQlpbnQgcmV0OworCWludCByZXQgPSAxOwog CiAJbWlnaHRfc2xlZXAoKTsKIAotCXJldCA9IF9fbXV0ZXhfZmFzdHBhdGhfbG9ja19yZXR2YWwo JmxvY2stPmJhc2UuY291bnQpOworCWlmICghbmVlZF95aWVsZF90b193YWl0ZXIoJmxvY2stPmJh c2UpKQorCQlyZXQgPSBfX211dGV4X2Zhc3RwYXRoX2xvY2tfcmV0dmFsKCZsb2NrLT5iYXNlLmNv dW50KTsKIAogCWlmIChsaWtlbHkoIXJldCkpIHsKIAkJd3dfbXV0ZXhfc2V0X2NvbnRleHRfZmFz dHBhdGgobG9jaywgY3R4KTsKQEAgLTkzNSwxMSArOTkyLDEyIEBAIEVYUE9SVF9TWU1CT0woX193 d19tdXRleF9sb2NrKTsKIGludCBfX3NjaGVkCiBfX3d3X211dGV4X2xvY2tfaW50ZXJydXB0aWJs ZShzdHJ1Y3Qgd3dfbXV0ZXggKmxvY2ssIHN0cnVjdCB3d19hY3F1aXJlX2N0eCAqY3R4KQogewot CWludCByZXQ7CisJaW50IHJldCA9IDE7CiAKIAltaWdodF9zbGVlcCgpOwogCi0JcmV0ID0gX19t dXRleF9mYXN0cGF0aF9sb2NrX3JldHZhbCgmbG9jay0+YmFzZS5jb3VudCk7CisJaWYgKCFuZWVk X3lpZWxkX3RvX3dhaXRlcigmbG9jay0+YmFzZSkpCisJCXJldCA9IF9fbXV0ZXhfZmFzdHBhdGhf bG9ja19yZXR2YWwoJmxvY2stPmJhc2UuY291bnQpOwogCiAJaWYgKGxpa2VseSghcmV0KSkgewog CQl3d19tdXRleF9zZXRfY29udGV4dF9mYXN0cGF0aChsb2NrLCBjdHgpOwotLSAKMi41LjAKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=