From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Nicolai=20H=C3=A4hnle?= Subject: [PATCH v3 06/12] locking/ww_mutex: Add waiters in stamp order Date: Wed, 21 Dec 2016 19:46:34 +0100 Message-ID: <1482346000-9927-7-git-send-email-nhaehnle@gmail.com> References: <1482346000-9927-1-git-send-email-nhaehnle@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x242.google.com (mail-wm0-x242.google.com [IPv6:2a00:1450:400c:c09::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0A51F6E0F0 for ; Wed, 21 Dec 2016 18:46:56 +0000 (UTC) Received: by mail-wm0-x242.google.com with SMTP id m203so32030418wma.3 for ; Wed, 21 Dec 2016 10:46:55 -0800 (PST) In-Reply-To: <1482346000-9927-1-git-send-email-nhaehnle@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: linux-kernel@vger.kernel.org Cc: Maarten Lankhorst , =?UTF-8?q?Nicolai=20H=C3=A4hnle?= , Peter Zijlstra , dri-devel@lists.freedesktop.org, Ingo Molnar List-Id: dri-devel@lists.freedesktop.org RnJvbTogTmljb2xhaSBIw6RobmxlIDxOaWNvbGFpLkhhZWhubGVAYW1kLmNvbT4KCkFkZCByZWd1 bGFyIHdhaXRlcnMgaW4gc3RhbXAgb3JkZXIuIEtlZXAgYWRkaW5nIHdhaXRlcnMgdGhhdCBoYXZl IG5vCmNvbnRleHQgaW4gRklGTyBvcmRlciBhbmQgdGFrZSBjYXJlIG5vdCB0byBzdGFydmUgdGhl bS4KCldoaWxlIGFkZGluZyBvdXIgdGFzayBhcyBhIHdhaXRlciwgYmFjayBvZmYgaWYgd2UgZGV0 ZWN0IHRoYXQgdGhlcmUgaXMgYQp3YWl0ZXIgd2l0aCBhIGxvd2VyIHN0YW1wIGluIGZyb250IG9m IHVzLgoKTWFrZSBzdXJlIHRvIGNhbGwgbG9ja19jb250ZW5kZWQgZXZlbiB3aGVuIHdlIGJhY2sg b2ZmIGVhcmx5LgoKRm9yIHcvdyBtdXRleGVzLCBiZWluZyBmaXJzdCBpbiB0aGUgd2FpdCBsaXN0 IGlzIG9ubHkgc3RhYmxlIHdoZW4gdGFraW5nIHRoZQpsb2NrIHdpdGhvdXQgYSBjb250ZXh0LiBU aGVyZWZvcmUsIHRoZSBwdXJwb3NlIG9mIHRoZSBmaXJzdCBmbGFnIGlzIHNwbGl0IGludG8KdHdv OiAnZmlyc3QnIHJlbWFpbnMgdG8gaW5kaWNhdGUgd2hldGhlciB3ZSB3YW50IHRvIHNwaW4gb3B0 aW1pc3RpY2FsbHksIHdoaWxlCidoYW5kb2ZmJyBpbmRpY2F0ZXMgdGhhdCB3ZSBzaG91bGQgYmUg cHJlcGFyZWQgdG8gYWNjZXB0IGEgaGFuZG9mZi4KCkZvciB3L3cgbG9ja2luZyB3aXRoIGEgY29u dGV4dCwgd2UgYWx3YXlzIGFjY2VwdCBoYW5kb2ZmcyBhZnRlciB0aGUgZmlyc3QKc2NoZWR1bGUo KSwgdG8gaGFuZGxlIHRoZSBmb2xsb3dpbmcgc2VxdWVuY2Ugb2YgZXZlbnRzOgoKMS4gVGFzayAj MCB1bmxvY2tzIGFuZCBoYW5kcyBvZmYgdG8gVGFzayAjMiB3aGljaCBpcyBmaXJzdCBpbiBsaW5l CjIuIFRhc2sgIzEgYWRkcyBpdHNlbGYgaW4gZnJvbnQgb2YgVGFzayAjMgozLiBUYXNrICMyIHdh a2VzIHVwIGFuZCBtdXN0IGFjY2VwdCB0aGUgaGFuZG9mZiBldmVuIHRob3VnaCBpdCBpcyBubyBs b25nZXIKICAgZmlyc3QgaW4gbGluZQoKdjI6Ci0gcmVpbiBpbiB0aGUgaW5kZW50YXRpb24gb2Yg X193d19tdXRleF9hZGRfd2FpdGVyIGEgYml0Ci0gc2V0IGNvbnRlbmRpbmdfbG9jayBpbiBfX3d3 X211dGV4X2FkZF93YWl0ZXIgKENocmlzIFdpbHNvbikKCnYzOgotIHNwbGl0ICdmaXJzdCcgaW50 byAnZmlyc3QnIGFuZCAnaGFuZG9mZicgdG8gYXZvaWQgbW92aW5nIHRoZSB0cnlsb2NrIGNhbGxz CiAgYXJvdW5kIHNvIG11Y2gKLSBzY2FuIHRoZSB3YWl0X2xpc3QgaW4gcmV2ZXJzZSBvcmRlciBp biBfX3d3X211dGV4X2FkZF93YWl0ZXIKCkNjOiBQZXRlciBaaWpsc3RyYSA8cGV0ZXJ6QGluZnJh ZGVhZC5vcmc+CkNjOiBJbmdvIE1vbG5hciA8bWluZ29AcmVkaGF0LmNvbT4KQ2M6IE1hYXJ0ZW4g TGFua2hvcnN0IDxkZXZAbWJsYW5raG9yc3Qubmw+CkNjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWxA ZmZ3bGwuY2g+CkNjOiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KQ2M6 IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKU2lnbmVkLW9mZi1ieTogTmljb2xhaSBI w6RobmxlIDxuaWNvbGFpLmhhZWhubGVAYW1kLmNvbT4KLS0tCiBpbmNsdWRlL2xpbnV4L211dGV4 LmggIHwgIDMgKysKIGtlcm5lbC9sb2NraW5nL211dGV4LmMgfCA5NyArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA5MSBp bnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgv bXV0ZXguaCBiL2luY2x1ZGUvbGludXgvbXV0ZXguaAppbmRleCBiOTc4NzBmLi4xMThhM2I2IDEw MDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L211dGV4LmgKKysrIGIvaW5jbHVkZS9saW51eC9tdXRl eC5oCkBAIC0yMCw2ICsyMCw4IEBACiAjaW5jbHVkZSA8bGludXgvb3NxX2xvY2suaD4KICNpbmNs dWRlIDxsaW51eC9kZWJ1Z19sb2Nrcy5oPgogCitzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHg7CisKIC8q CiAgKiBTaW1wbGUsIHN0cmFpZ2h0Zm9yd2FyZCBtdXRleGVzIHdpdGggc3RyaWN0IHNlbWFudGlj czoKICAqCkBAIC03NSw2ICs3Nyw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IHRhc2tfc3RydWN0 ICpfX211dGV4X293bmVyKHN0cnVjdCBtdXRleCAqbG9jaykKIHN0cnVjdCBtdXRleF93YWl0ZXIg ewogCXN0cnVjdCBsaXN0X2hlYWQJbGlzdDsKIAlzdHJ1Y3QgdGFza19zdHJ1Y3QJKnRhc2s7CisJ c3RydWN0IHd3X2FjcXVpcmVfY3R4CSp3d19jdHg7CiAjaWZkZWYgQ09ORklHX0RFQlVHX01VVEVY RVMKIAl2b2lkCQkJKm1hZ2ljOwogI2VuZGlmCmRpZmYgLS1naXQgYS9rZXJuZWwvbG9ja2luZy9t dXRleC5jIGIva2VybmVsL2xvY2tpbmcvbXV0ZXguYwppbmRleCAyODJjNmRlLi41YjFjYTIwIDEw MDY0NAotLS0gYS9rZXJuZWwvbG9ja2luZy9tdXRleC5jCisrKyBiL2tlcm5lbC9sb2NraW5nL211 dGV4LmMKQEAgLTYyMCw2ICs2MjAsNTIgQEAgX193d19tdXRleF9sb2NrX2NoZWNrX3N0YW1wKHN0 cnVjdCBtdXRleCAqbG9jaywgc3RydWN0IHd3X2FjcXVpcmVfY3R4ICpjdHgpCiAJcmV0dXJuIDA7 CiB9CiAKK3N0YXRpYyBpbmxpbmUgaW50IF9fc2NoZWQKK19fd3dfbXV0ZXhfYWRkX3dhaXRlcihz dHJ1Y3QgbXV0ZXhfd2FpdGVyICp3YWl0ZXIsCisJCSAgICAgIHN0cnVjdCBtdXRleCAqbG9jaywK KwkJICAgICAgc3RydWN0IHd3X2FjcXVpcmVfY3R4ICp3d19jdHgpCit7CisJc3RydWN0IG11dGV4 X3dhaXRlciAqY3VyOworCXN0cnVjdCBsaXN0X2hlYWQgKnBvczsKKworCWlmICghd3dfY3R4KSB7 CisJCWxpc3RfYWRkX3RhaWwoJndhaXRlci0+bGlzdCwgJmxvY2stPndhaXRfbGlzdCk7CisJCXJl dHVybiAwOworCX0KKworCS8qCisJICogQWRkIHRoZSB3YWl0ZXIgYmVmb3JlIHRoZSBmaXJzdCB3 YWl0ZXIgd2l0aCBhIGhpZ2hlciBzdGFtcC4KKwkgKiBXYWl0ZXJzIHdpdGhvdXQgYSBjb250ZXh0 IGFyZSBza2lwcGVkIHRvIGF2b2lkIHN0YXJ2aW5nCisJICogdGhlbS4KKwkgKi8KKwlwb3MgPSAm bG9jay0+d2FpdF9saXN0OworCWxpc3RfZm9yX2VhY2hfZW50cnlfcmV2ZXJzZShjdXIsICZsb2Nr LT53YWl0X2xpc3QsIGxpc3QpIHsKKwkJaWYgKCFjdXItPnd3X2N0eCkKKwkJCWNvbnRpbnVlOwor CisJCWlmIChfX3d3X2N0eF9zdGFtcF9hZnRlcih3d19jdHgsIGN1ci0+d3dfY3R4KSkgeworCQkJ LyogQmFjayBvZmYgaW1tZWRpYXRlbHkgaWYgbmVjZXNzYXJ5LiAqLworCQkJaWYgKHd3X2N0eC0+ YWNxdWlyZWQgPiAwKSB7CisjaWZkZWYgQ09ORklHX0RFQlVHX01VVEVYRVMKKwkJCQlzdHJ1Y3Qg d3dfbXV0ZXggKnd3OworCisJCQkJd3cgPSBjb250YWluZXJfb2YobG9jaywgc3RydWN0IHd3X211 dGV4LCBiYXNlKTsKKwkJCQlERUJVR19MT0NLU19XQVJOX09OKHd3X2N0eC0+Y29udGVuZGluZ19s b2NrKTsKKwkJCQl3d19jdHgtPmNvbnRlbmRpbmdfbG9jayA9IHd3OworI2VuZGlmCisJCQkJcmV0 dXJuIC1FREVBRExLOworCQkJfQorCisJCQlicmVhazsKKwkJfQorCisJCXBvcyA9ICZjdXItPmxp c3Q7CisJfQorCisJbGlzdF9hZGRfdGFpbCgmd2FpdGVyLT5saXN0LCBwb3MpOworCXJldHVybiAw OworfQorCiAvKgogICogTG9jayBhIG11dGV4IChwb3NzaWJseSBpbnRlcnJ1cHRpYmxlKSwgc2xv d3BhdGg6CiAgKi8KQEAgLTYzMiw2ICs2NzgsNyBAQCBfX211dGV4X2xvY2tfY29tbW9uKHN0cnVj dCBtdXRleCAqbG9jaywgbG9uZyBzdGF0ZSwgdW5zaWduZWQgaW50IHN1YmNsYXNzLAogCXN0cnVj dCBtdXRleF93YWl0ZXIgd2FpdGVyOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJYm9vbCBmaXJz dCA9IGZhbHNlOworCWJvb2wgaGFuZG9mZiA9IGZhbHNlOwogCXN0cnVjdCB3d19tdXRleCAqd3c7 CiAJaW50IHJldDsKIApAQCAtNjY1LDE1ICs3MTIsMjUgQEAgX19tdXRleF9sb2NrX2NvbW1vbihz dHJ1Y3QgbXV0ZXggKmxvY2ssIGxvbmcgc3RhdGUsIHVuc2lnbmVkIGludCBzdWJjbGFzcywKIAlk ZWJ1Z19tdXRleF9sb2NrX2NvbW1vbihsb2NrLCAmd2FpdGVyKTsKIAlkZWJ1Z19tdXRleF9hZGRf d2FpdGVyKGxvY2ssICZ3YWl0ZXIsIHRhc2spOwogCi0JLyogYWRkIHdhaXRpbmcgdGFza3MgdG8g dGhlIGVuZCBvZiB0aGUgd2FpdHF1ZXVlIChGSUZPKTogKi8KLQlsaXN0X2FkZF90YWlsKCZ3YWl0 ZXIubGlzdCwgJmxvY2stPndhaXRfbGlzdCk7CisJbG9ja19jb250ZW5kZWQoJmxvY2stPmRlcF9t YXAsIGlwKTsKKworCWlmICghdXNlX3d3X2N0eCkgeworCQkvKiBhZGQgd2FpdGluZyB0YXNrcyB0 byB0aGUgZW5kIG9mIHRoZSB3YWl0cXVldWUgKEZJRk8pOiAqLworCQlsaXN0X2FkZF90YWlsKCZ3 YWl0ZXIubGlzdCwgJmxvY2stPndhaXRfbGlzdCk7CisJfSBlbHNlIHsKKwkJLyogQWRkIGluIHN0 YW1wIG9yZGVyLCB3YWtpbmcgdXAgd2FpdGVycyB0aGF0IG11c3QgYmFjayBvZmYuICovCisJCXJl dCA9IF9fd3dfbXV0ZXhfYWRkX3dhaXRlcigmd2FpdGVyLCBsb2NrLCB3d19jdHgpOworCQlpZiAo cmV0KQorCQkJZ290byBlcnJfZWFybHlfYmFja29mZjsKKworCQl3YWl0ZXIud3dfY3R4ID0gd3df Y3R4OworCX0KKwogCXdhaXRlci50YXNrID0gdGFzazsKIAogCWlmIChfX211dGV4X3dhaXRlcl9p c19maXJzdChsb2NrLCAmd2FpdGVyKSkKIAkJX19tdXRleF9zZXRfZmxhZyhsb2NrLCBNVVRFWF9G TEFHX1dBSVRFUlMpOwogCi0JbG9ja19jb250ZW5kZWQoJmxvY2stPmRlcF9tYXAsIGlwKTsKLQog CXNldF90YXNrX3N0YXRlKHRhc2ssIHN0YXRlKTsKIAlmb3IgKDs7KSB7CiAJCS8qCkBAIC02ODIs NyArNzM5LDcgQEAgX19tdXRleF9sb2NrX2NvbW1vbihzdHJ1Y3QgbXV0ZXggKmxvY2ssIGxvbmcg c3RhdGUsIHVuc2lnbmVkIGludCBzdWJjbGFzcywKIAkJICogYmVmb3JlIHRlc3RpbmcgdGhlIGVy cm9yIGNvbmRpdGlvbnMgdG8gbWFrZSBzdXJlIHdlIHBpY2sgdXAKIAkJICogdGhlIGhhbmRvZmYu CiAJCSAqLwotCQlpZiAoX19tdXRleF90cnlsb2NrKGxvY2ssIGZpcnN0KSkKKwkJaWYgKF9fbXV0 ZXhfdHJ5bG9jayhsb2NrLCBoYW5kb2ZmKSkKIAkJCWdvdG8gYWNxdWlyZWQ7CiAKIAkJLyoKQEAg LTcxMSwxMyArNzY4LDM0IEBAIF9fbXV0ZXhfbG9ja19jb21tb24oc3RydWN0IG11dGV4ICpsb2Nr LCBsb25nIHN0YXRlLCB1bnNpZ25lZCBpbnQgc3ViY2xhc3MsCiAJCSAqIG9yIHdlIG11c3Qgc2Vl IGl0cyB1bmxvY2sgYW5kIGFjcXVpcmUuCiAJCSAqLwogCi0JCWlmICghZmlyc3QgJiYgX19tdXRl eF93YWl0ZXJfaXNfZmlyc3QobG9jaywgJndhaXRlcikpIHsKLQkJCWZpcnN0ID0gdHJ1ZTsKKwkJ aWYgKHVzZV93d19jdHggJiYgd3dfY3R4KSB7CisJCQkvKgorCQkJICogQWx3YXlzIHJlLWNoZWNr IHdoZXRoZXIgd2UncmUgaW4gZmlyc3QgcG9zaXRpb24uIFdlCisJCQkgKiBkb24ndCB3YW50IHRv IHNwaW4gaWYgYW5vdGhlciB0YXNrIHdpdGggYSBsb3dlcgorCQkJICogc3RhbXAgaGFzIHRha2Vu IG91ciBwb3NpdGlvbi4KKwkJCSAqCisJCQkgKiBXZSBhbHNvIG1heSBoYXZlIHRvIHNldCB0aGUg aGFuZG9mZiBmbGFnIGFnYWluLCBpZgorCQkJICogb3VyIHBvc2l0aW9uIGF0IHRoZSBoZWFkIHdh cyB0ZW1wb3JhcmlseSB0YWtlbiBhd2F5LgorCQkJICovCisJCQlmaXJzdCA9IF9fbXV0ZXhfd2Fp dGVyX2lzX2ZpcnN0KGxvY2ssICZ3YWl0ZXIpOworCisJCQlpZiAoZmlyc3QpCisJCQkJX19tdXRl eF9zZXRfZmxhZyhsb2NrLCBNVVRFWF9GTEFHX0hBTkRPRkYpOworCisJCQkvKgorCQkJICogQWx3 YXlzIGJlIHByZXBhcmVkIHRvIGFjY2VwdCBhIGhhbmRvZmYgYWZ0ZXIgdGhlCisJCQkgKiBmaXJz dCB3YWl0LCBiZWNhdXNlIHdlIG1heSBoYXZlIGJlZW4gdGhlIGZpcnN0CisJCQkgKiB3YWl0ZXIg ZHVyaW5nIHVubG9jay4KKwkJCSAqLworCQkJaGFuZG9mZiA9IHRydWU7CisJCX0gZWxzZSBpZiAo IWZpcnN0ICYmIF9fbXV0ZXhfd2FpdGVyX2lzX2ZpcnN0KGxvY2ssICZ3YWl0ZXIpKSB7CisJCQlm aXJzdCA9IGhhbmRvZmYgPSB0cnVlOwogCQkJX19tdXRleF9zZXRfZmxhZyhsb2NrLCBNVVRFWF9G TEFHX0hBTkRPRkYpOwogCQl9CiAKLQkJaWYgKChmaXJzdCAmJiBtdXRleF9vcHRpbWlzdGljX3Nw aW4obG9jaywgd3dfY3R4LCB1c2Vfd3dfY3R4LCB0cnVlKSkgfHwKLQkJICAgICBfX211dGV4X3Ry eWxvY2sobG9jaywgZmlyc3QpKQorCQlpZiAoKGZpcnN0ICYmCisJCSAgICAgbXV0ZXhfb3B0aW1p c3RpY19zcGluKGxvY2ssIHd3X2N0eCwgdXNlX3d3X2N0eCwgdHJ1ZSkpIHx8CisJCSAgICBfX211 dGV4X3RyeWxvY2sobG9jaywgaGFuZG9mZikpCiAJCQlicmVhazsKIAogCQlzcGluX2xvY2tfbXV0 ZXgoJmxvY2stPndhaXRfbG9jaywgZmxhZ3MpOwpAQCAtNzQ2LDYgKzgyNCw3IEBAIF9fbXV0ZXhf bG9ja19jb21tb24oc3RydWN0IG11dGV4ICpsb2NrLCBsb25nIHN0YXRlLCB1bnNpZ25lZCBpbnQg c3ViY2xhc3MsCiBlcnI6CiAJX19zZXRfdGFza19zdGF0ZSh0YXNrLCBUQVNLX1JVTk5JTkcpOwog CW11dGV4X3JlbW92ZV93YWl0ZXIobG9jaywgJndhaXRlciwgdGFzayk7CitlcnJfZWFybHlfYmFj a29mZjoKIAlzcGluX3VubG9ja19tdXRleCgmbG9jay0+d2FpdF9sb2NrLCBmbGFncyk7CiAJZGVi dWdfbXV0ZXhfZnJlZV93YWl0ZXIoJndhaXRlcik7CiAJbXV0ZXhfcmVsZWFzZSgmbG9jay0+ZGVw X21hcCwgMSwgaXApOwotLSAKMi43LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2RyaS1kZXZlbAo=