From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Paul Subject: [PATCH 15/26] drm/dp_mst: Refactor pdt setup/teardown, add more locking Date: Wed, 17 Jul 2019 21:42:38 -0400 Message-ID: <20190718014329.8107-16-lyude@redhat.com> References: <20190718014329.8107-1-lyude@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1C2436E2DA for ; Thu, 18 Jul 2019 01:44:44 +0000 (UTC) In-Reply-To: <20190718014329.8107-1-lyude@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: Maxime Ripard , Sean Paul , linux-kernel@vger.kernel.org, David Airlie , Juston Li , Harry Wentland List-Id: dri-devel@lists.freedesktop.org U2luY2Ugd2UncmUgZ29pbmcgdG8gYmUgaW1wbGVtZW50aW5nIHN1c3BlbmQvcmVzdW1lIHJlcHJv YmluZyB2ZXJ5IHNvb24sCndlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIGFyZSBleHRyYSBjYXJlZnVs IHRvIGVuc3VyZSB0aGF0IG91ciBsb2NraW5nCmFjdHVhbGx5IHByb3RlY3RzIHRoZSB0b3BvbG9n eSBzdGF0ZSB3aGVyZSB3ZSBleHBlY3QgaXQgdG8uIFR1cm5zIG91dAp0aGlzIGlzbid0IHRoZSBj YXNlIHdpdGggZHJtX2RwX3BvcnRfc2V0dXBfcGR0KCkgYW5kCmRybV9kcF9wb3J0X3RlYXJkb3du X3BkdCgpLCBib3RoIG9mIHdoaWNoIGNoYW5nZSBwb3J0LT5tc3RiIHdpdGhvdXQKZ3JhYmJpbmcg Jm1nci0+bG9jay4KCkFkZGl0aW9uYWxseSwgc2luY2UgbW9zdCBjYWxsZXJzIG9mIHRoZXNlIGZ1 bmN0aW9ucyBhcmUganVzdCB1c2luZyBpdCB0bwp0ZWFyZG93biB0aGUgcG9ydCdzIHByZXZpb3Vz IFBEVCBhbmQgc2V0dXAgYSBuZXcgb25lIHdlIGNhbiBzaW1wbGlmeQp0aGluZ3MgYSBiaXQgYW5k IGNvbWJpbmUgZHJtX2RwX3BvcnRfc2V0dXBfcGR0KCkgYW5kCmRybV9kcF9wb3J0X3RlYXJkb3du X3BkdCgpIGludG8gYSBzaW5nbGUgZnVuY3Rpb246CmRybV9kcF9wb3J0X3NldF9wZHQoKS4gVGhp cyBmdW5jdGlvbiBhbHNvIGhhbmRsZXMgYWN0dWFsbHkgZW5zdXJpbmcgdGhhdAp3ZSBncmFiIHRo ZSBjb3JyZWN0IGxvY2tzIHdoZW4gd2UgbmVlZCB0byBtb2RpZnkgcG9ydC0+bXN0Yi4KCkNjOiBK dXN0b24gTGkgPGp1c3Rvbi5saUBpbnRlbC5jb20+CkNjOiBJbXJlIERlYWsgPGltcmUuZGVha0Bp bnRlbC5jb20+CkNjOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwu Y29tPgpDYzogSGFycnkgV2VudGxhbmQgPGh3ZW50bGFuQGFtZC5jb20+ClNpZ25lZC1vZmYtYnk6 IEx5dWRlIFBhdWwgPGx5dWRlQHJlZGhhdC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2RybV9k cF9tc3RfdG9wb2xvZ3kuYyB8IDE4MSArKysrKysrKysrKysrKystLS0tLS0tLS0tLQogaW5jbHVk ZS9kcm0vZHJtX2RwX21zdF9oZWxwZXIuaCAgICAgICB8ICAgNiArLQogMiBmaWxlcyBjaGFuZ2Vk LCAxMTAgaW5zZXJ0aW9ucygrKSwgNzcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2RybV9kcF9tc3RfdG9wb2xvZ3kuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHBf bXN0X3RvcG9sb2d5LmMKaW5kZXggMTNhZGZiNzdiZjAwLi42OGZkYTIxMzFmZWIgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHBfbXN0X3RvcG9sb2d5LmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2RybV9kcF9tc3RfdG9wb2xvZ3kuYwpAQCAtMTQ4NSwyNCArMTQ4NSw2IEBAIGRybV9k cF9tc3RfdG9wb2xvZ3lfcHV0X21zdGIoc3RydWN0IGRybV9kcF9tc3RfYnJhbmNoICptc3RiKQog CWtyZWZfcHV0KCZtc3RiLT50b3BvbG9neV9rcmVmLCBkcm1fZHBfZGVzdHJveV9tc3RfYnJhbmNo X2RldmljZSk7CiB9CiAKLXN0YXRpYyB2b2lkIGRybV9kcF9wb3J0X3RlYXJkb3duX3BkdChzdHJ1 Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0LCBpbnQgb2xkX3BkdCkKLXsKLQlzdHJ1Y3QgZHJtX2Rw X21zdF9icmFuY2ggKm1zdGI7Ci0KLQlzd2l0Y2ggKG9sZF9wZHQpIHsKLQljYXNlIERQX1BFRVJf REVWSUNFX0RQX0xFR0FDWV9DT05WOgotCWNhc2UgRFBfUEVFUl9ERVZJQ0VfU1NUX1NJTks6Ci0J CS8qIHJlbW92ZSBpMmMgb3ZlciBzaWRlYmFuZCAqLwotCQlkcm1fZHBfbXN0X3VucmVnaXN0ZXJf aTJjX2J1cygmcG9ydC0+YXV4KTsKLQkJYnJlYWs7Ci0JY2FzZSBEUF9QRUVSX0RFVklDRV9NU1Rf QlJBTkNISU5HOgotCQltc3RiID0gcG9ydC0+bXN0YjsKLQkJcG9ydC0+bXN0YiA9IE5VTEw7Ci0J CWRybV9kcF9tc3RfdG9wb2xvZ3lfcHV0X21zdGIobXN0Yik7Ci0JCWJyZWFrOwotCX0KLX0KLQog c3RhdGljIHZvaWQgZHJtX2RwX2Rlc3Ryb3lfcG9ydChzdHJ1Y3Qga3JlZiAqa3JlZikKIHsKIAlz dHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0ID0KQEAgLTE3MTIsMzggKzE2OTQsNzkgQEAgc3Rh dGljIHU4IGRybV9kcF9jYWxjdWxhdGVfcmFkKHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQs CiAJcmV0dXJuIHBhcmVudF9sY3QgKyAxOwogfQogCi0vKgotICogcmV0dXJuIHNlbmRzIGxpbmsg YWRkcmVzcyBmb3IgbmV3IG1zdGIKLSAqLwotc3RhdGljIGJvb2wgZHJtX2RwX3BvcnRfc2V0dXBf cGR0KHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQpCitzdGF0aWMgaW50IGRybV9kcF9wb3J0 X3NldF9wZHQoc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydCwgdTggbmV3X3BkdCkKIHsKLQlp bnQgcmV0OwotCXU4IHJhZFs2XSwgbGN0OwotCWJvb2wgc2VuZF9saW5rID0gZmFsc2U7CisJc3Ry dWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IgPSBwb3J0LT5tZ3I7CisJc3RydWN0IGRy bV9kcF9tc3RfYnJhbmNoICptc3RiOworCXU4IHJhZFs4XSwgbGN0OworCWludCByZXQgPSAwOwor CisJaWYgKHBvcnQtPnBkdCA9PSBuZXdfcGR0KQorCQlyZXR1cm4gMDsKKworCS8qIFRlYXJkb3du IHRoZSBvbGQgcGR0LCBpZiB0aGVyZSBpcyBvbmUgKi8KKwlzd2l0Y2ggKHBvcnQtPnBkdCkgewor CWNhc2UgRFBfUEVFUl9ERVZJQ0VfRFBfTEVHQUNZX0NPTlY6CisJY2FzZSBEUF9QRUVSX0RFVklD RV9TU1RfU0lOSzoKKwkJLyoKKwkJICogSWYgdGhlIG5ldyBQRFQgd291bGQgYWxzbyBoYXZlIGFu IGkyYyBidXMsIGRvbid0IGJvdGhlcgorCQkgKiB3aXRoIHJlcmVnaXN0ZXJpbmcgaXQKKwkJICov CisJCWlmIChuZXdfcGR0ID09IERQX1BFRVJfREVWSUNFX0RQX0xFR0FDWV9DT05WIHx8CisJCSAg ICBuZXdfcGR0ID09IERQX1BFRVJfREVWSUNFX1NTVF9TSU5LKSB7CisJCQlwb3J0LT5wZHQgPSBu ZXdfcGR0OworCQkJcmV0dXJuIDA7CisJCX0KKworCQkvKiByZW1vdmUgaTJjIG92ZXIgc2lkZWJh bmQgKi8KKwkJZHJtX2RwX21zdF91bnJlZ2lzdGVyX2kyY19idXMoJnBvcnQtPmF1eCk7CisJCWJy ZWFrOworCWNhc2UgRFBfUEVFUl9ERVZJQ0VfTVNUX0JSQU5DSElORzoKKwkJbXV0ZXhfbG9jaygm bWdyLT5sb2NrKTsKKwkJZHJtX2RwX21zdF90b3BvbG9neV9wdXRfbXN0Yihwb3J0LT5tc3RiKTsK KwkJcG9ydC0+bXN0YiA9IE5VTEw7CisJCW11dGV4X3VubG9jaygmbWdyLT5sb2NrKTsKKwkJYnJl YWs7CisJfQorCisJcG9ydC0+cGR0ID0gbmV3X3BkdDsKIAlzd2l0Y2ggKHBvcnQtPnBkdCkgewog CWNhc2UgRFBfUEVFUl9ERVZJQ0VfRFBfTEVHQUNZX0NPTlY6CiAJY2FzZSBEUF9QRUVSX0RFVklD RV9TU1RfU0lOSzoKIAkJLyogYWRkIGkyYyBvdmVyIHNpZGViYW5kICovCiAJCXJldCA9IGRybV9k cF9tc3RfcmVnaXN0ZXJfaTJjX2J1cygmcG9ydC0+YXV4KTsKIAkJYnJlYWs7CisKIAljYXNlIERQ X1BFRVJfREVWSUNFX01TVF9CUkFOQ0hJTkc6CiAJCWxjdCA9IGRybV9kcF9jYWxjdWxhdGVfcmFk KHBvcnQsIHJhZCk7CisJCW1zdGIgPSBkcm1fZHBfYWRkX21zdF9icmFuY2hfZGV2aWNlKGxjdCwg cmFkKTsKKwkJaWYgKCFtc3RiKSB7CisJCQlyZXQgPSAtRU5PTUVNOworCQkJRFJNX0VSUk9SKCJG YWlsZWQgdG8gY3JlYXRlIE1TVEIgZm9yIHBvcnQgJXAiLCBwb3J0KTsKKwkJCWdvdG8gb3V0Owor CQl9CiAKLQkJcG9ydC0+bXN0YiA9IGRybV9kcF9hZGRfbXN0X2JyYW5jaF9kZXZpY2UobGN0LCBy YWQpOwotCQlpZiAocG9ydC0+bXN0YikgewotCQkJcG9ydC0+bXN0Yi0+bWdyID0gcG9ydC0+bWdy OwotCQkJcG9ydC0+bXN0Yi0+cG9ydF9wYXJlbnQgPSBwb3J0OwotCQkJLyoKLQkJCSAqIE1ha2Ug c3VyZSB0aGlzIHBvcnQncyBtZW1vcnkgYWxsb2NhdGlvbiBzdGF5cwotCQkJICogYXJvdW5kIHVu dGlsIGl0cyBjaGlsZCBNU1RCIHJlbGVhc2VzIGl0Ci0JCQkgKi8KLQkJCWRybV9kcF9tc3RfZ2V0 X3BvcnRfbWFsbG9jKHBvcnQpOworCQltdXRleF9sb2NrKCZtZ3ItPmxvY2spOworCQlwb3J0LT5t c3RiID0gbXN0YjsKKwkJbXN0Yi0+bWdyID0gcG9ydC0+bWdyOworCQltc3RiLT5wb3J0X3BhcmVu dCA9IHBvcnQ7CiAKLQkJCXNlbmRfbGluayA9IHRydWU7Ci0JCX0KKwkJLyoKKwkJICogTWFrZSBz dXJlIHRoaXMgcG9ydCdzIG1lbW9yeSBhbGxvY2F0aW9uIHN0YXlzCisJCSAqIGFyb3VuZCB1bnRp bCBpdHMgY2hpbGQgTVNUQiByZWxlYXNlcyBpdAorCQkgKi8KKwkJZHJtX2RwX21zdF9nZXRfcG9y dF9tYWxsb2MocG9ydCk7CisJCW11dGV4X3VubG9jaygmbWdyLT5sb2NrKTsKKworCQkvKiBBbmQg bWFrZSBzdXJlIHdlIHNlbmQgYSBsaW5rIGFkZHJlc3MgZm9yIHRoaXMgKi8KKwkJcmV0ID0gMTsK IAkJYnJlYWs7CiAJfQotCXJldHVybiBzZW5kX2xpbms7CisKK291dDoKKwlpZiAocmV0IDwgMCkK KwkJcG9ydC0+cGR0ID0gRFBfUEVFUl9ERVZJQ0VfTk9ORTsKKwlyZXR1cm4gcmV0OwogfQogCiBz dGF0aWMgdm9pZCBkcm1fZHBfY2hlY2tfbXN0Yl9ndWlkKHN0cnVjdCBkcm1fZHBfbXN0X2JyYW5j aCAqbXN0YiwgdTggKmd1aWQpCkBAIC0xNzkzLDEwICsxODE2LDkgQEAgc3RhdGljIHZvaWQgZHJt X2RwX2FkZF9wb3J0KHN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqbXN0YiwKIAkJCSAgICBzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJICAgIHN0cnVjdCBkcm1fZHBfbGlua19hZGRyX3JlcGx5 X3BvcnQgKnBvcnRfbXNnKQogeworCXN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdy ID0gbXN0Yi0+bWdyOwogCXN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQ7Ci0JYm9vbCByZXQ7 CiAJYm9vbCBjcmVhdGVkID0gZmFsc2U7Ci0JaW50IG9sZF9wZHQgPSAwOwogCWludCBvbGRfZGRw cyA9IDA7CiAKIAlwb3J0ID0gZHJtX2RwX2dldF9wb3J0KG1zdGIsIHBvcnRfbXNnLT5wb3J0X251 bWJlcik7CkBAIC0xODA4LDcgKzE4MzAsNyBAQCBzdGF0aWMgdm9pZCBkcm1fZHBfYWRkX3BvcnQo c3RydWN0IGRybV9kcF9tc3RfYnJhbmNoICptc3RiLAogCQlrcmVmX2luaXQoJnBvcnQtPm1hbGxv Y19rcmVmKTsKIAkJcG9ydC0+cGFyZW50ID0gbXN0YjsKIAkJcG9ydC0+cG9ydF9udW0gPSBwb3J0 X21zZy0+cG9ydF9udW1iZXI7Ci0JCXBvcnQtPm1nciA9IG1zdGItPm1ncjsKKwkJcG9ydC0+bWdy ID0gbWdyOwogCQlwb3J0LT5hdXgubmFtZSA9ICJEUE1TVCI7CiAJCXBvcnQtPmF1eC5kZXYgPSBk ZXYtPmRldjsKIApAQCAtMTgyMCwxMSArMTg0Miw5IEBAIHN0YXRpYyB2b2lkIGRybV9kcF9hZGRf cG9ydChzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2ggKm1zdGIsCiAKIAkJY3JlYXRlZCA9IHRydWU7 CiAJfSBlbHNlIHsKLQkJb2xkX3BkdCA9IHBvcnQtPnBkdDsKIAkJb2xkX2RkcHMgPSBwb3J0LT5k ZHBzOwogCX0KIAotCXBvcnQtPnBkdCA9IHBvcnRfbXNnLT5wZWVyX2RldmljZV90eXBlOwogCXBv cnQtPmlucHV0ID0gcG9ydF9tc2ctPmlucHV0X3BvcnQ7CiAJcG9ydC0+bWNzID0gcG9ydF9tc2ct Pm1jczsKIAlwb3J0LT5kZHBzID0gcG9ydF9tc2ctPmRkcHM7CkBAIC0xODM2LDI5ICsxODU2LDMz IEBAIHN0YXRpYyB2b2lkIGRybV9kcF9hZGRfcG9ydChzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2gg Km1zdGIsCiAJLyogbWFuYWdlIG1zdGIgcG9ydCBsaXN0cyB3aXRoIG1nciBsb2NrIC0gdGFrZSBh IHJlZmVyZW5jZQogCSAgIGZvciB0aGlzIGxpc3QgKi8KIAlpZiAoY3JlYXRlZCkgewotCQltdXRl eF9sb2NrKCZtc3RiLT5tZ3ItPmxvY2spOworCQltdXRleF9sb2NrKCZtZ3ItPmxvY2spOwogCQlk cm1fZHBfbXN0X3RvcG9sb2d5X2dldF9wb3J0KHBvcnQpOwogCQlsaXN0X2FkZCgmcG9ydC0+bmV4 dCwgJm1zdGItPnBvcnRzKTsKLQkJbXV0ZXhfdW5sb2NrKCZtc3RiLT5tZ3ItPmxvY2spOworCQlt dXRleF91bmxvY2soJm1nci0+bG9jayk7CiAJfQogCiAJaWYgKG9sZF9kZHBzICE9IHBvcnQtPmRk cHMpIHsKIAkJaWYgKHBvcnQtPmRkcHMpIHsKIAkJCWlmICghcG9ydC0+aW5wdXQpIHsKLQkJCQlk cm1fZHBfc2VuZF9lbnVtX3BhdGhfcmVzb3VyY2VzKG1zdGItPm1nciwKLQkJCQkJCQkJbXN0Yiwg cG9ydCk7CisJCQkJZHJtX2RwX3NlbmRfZW51bV9wYXRoX3Jlc291cmNlcyhtZ3IsIG1zdGIsCisJ CQkJCQkJCXBvcnQpOwogCQkJfQogCQl9IGVsc2UgewogCQkJcG9ydC0+YXZhaWxhYmxlX3BibiA9 IDA7CiAJCX0KIAl9CiAKLQlpZiAob2xkX3BkdCAhPSBwb3J0LT5wZHQgJiYgIXBvcnQtPmlucHV0 KSB7Ci0JCWRybV9kcF9wb3J0X3RlYXJkb3duX3BkdChwb3J0LCBvbGRfcGR0KTsKLQotCQlyZXQg PSBkcm1fZHBfcG9ydF9zZXR1cF9wZHQocG9ydCk7Ci0JCWlmIChyZXQgPT0gdHJ1ZSkKLQkJCWRy bV9kcF9zZW5kX2xpbmtfYWRkcmVzcyhtc3RiLT5tZ3IsIHBvcnQtPm1zdGIpOworCWlmICghcG9y dC0+aW5wdXQpIHsKKwkJaW50IHJldCA9IGRybV9kcF9wb3J0X3NldF9wZHQocG9ydCwKKwkJCQkJ ICAgICAgcG9ydF9tc2ctPnBlZXJfZGV2aWNlX3R5cGUpOworCQlpZiAocmV0ID09IDEpIHsKKwkJ CWRybV9kcF9zZW5kX2xpbmtfYWRkcmVzcyhtZ3IsIHBvcnQtPm1zdGIpOworCQl9IGVsc2UgaWYg KHJldCA8IDApIHsKKwkJCURSTV9FUlJPUigiRmFpbGVkIHRvIGNoYW5nZSBQRFQgb24gcG9ydCAl cDogJWRcbiIsCisJCQkJICBwb3J0LCByZXQpOworCQkJZ290byBmYWlsOworCQl9CiAJfQogCiAJ aWYgKGNyZWF0ZWQgJiYgIXBvcnQtPmlucHV0KSB7CkBAIC0xODY2LDE4ICsxODkwLDExIEBAIHN0 YXRpYyB2b2lkIGRybV9kcF9hZGRfcG9ydChzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2ggKm1zdGIs CiAKIAkJYnVpbGRfbXN0X3Byb3BfcGF0aChtc3RiLCBwb3J0LT5wb3J0X251bSwgcHJvcHBhdGgs CiAJCQkJICAgIHNpemVvZihwcm9wcGF0aCkpOwotCQlwb3J0LT5jb25uZWN0b3IgPSAoKm1zdGIt Pm1nci0+Y2JzLT5hZGRfY29ubmVjdG9yKShtc3RiLT5tZ3IsCi0JCQkJCQkJCSAgIHBvcnQsCi0J CQkJCQkJCSAgIHByb3BwYXRoKTsKLQkJaWYgKCFwb3J0LT5jb25uZWN0b3IpIHsKLQkJCS8qIHJl bW92ZSBpdCBmcm9tIHRoZSBwb3J0IGxpc3QgKi8KLQkJCW11dGV4X2xvY2soJm1zdGItPm1nci0+ bG9jayk7Ci0JCQlsaXN0X2RlbCgmcG9ydC0+bmV4dCk7Ci0JCQltdXRleF91bmxvY2soJm1zdGIt Pm1nci0+bG9jayk7Ci0JCQkvKiBkcm9wIHBvcnQgbGlzdCByZWZlcmVuY2UgKi8KLQkJCWRybV9k cF9tc3RfdG9wb2xvZ3lfcHV0X3BvcnQocG9ydCk7Ci0JCQlnb3RvIG91dDsKLQkJfQorCQlwb3J0 LT5jb25uZWN0b3IgPSAoKm1nci0+Y2JzLT5hZGRfY29ubmVjdG9yKShtZ3IsIHBvcnQsCisJCQkJ CQkJICAgICBwcm9wcGF0aCk7CisJCWlmICghcG9ydC0+Y29ubmVjdG9yKQorCQkJZ290byBmYWls OworCiAJCWlmICgocG9ydC0+cGR0ID09IERQX1BFRVJfREVWSUNFX0RQX0xFR0FDWV9DT05WIHx8 CiAJCSAgICAgcG9ydC0+cGR0ID09IERQX1BFRVJfREVWSUNFX1NTVF9TSU5LKSAmJgogCQkgICAg cG9ydC0+cG9ydF9udW0gPj0gRFBfTVNUX0xPR0lDQUxfUE9SVF8wKSB7CkBAIC0xODg1LDI4ICsx OTAyLDM4IEBAIHN0YXRpYyB2b2lkIGRybV9kcF9hZGRfcG9ydChzdHJ1Y3QgZHJtX2RwX21zdF9i cmFuY2ggKm1zdGIsCiAJCQkJCQkJICZwb3J0LT5hdXguZGRjKTsKIAkJCWRybV9jb25uZWN0b3Jf c2V0X3RpbGVfcHJvcGVydHkocG9ydC0+Y29ubmVjdG9yKTsKIAkJfQotCQkoKm1zdGItPm1nci0+ Y2JzLT5yZWdpc3Rlcl9jb25uZWN0b3IpKHBvcnQtPmNvbm5lY3Rvcik7CisKKwkJKCptZ3ItPmNi cy0+cmVnaXN0ZXJfY29ubmVjdG9yKShwb3J0LT5jb25uZWN0b3IpOwogCX0KIAotb3V0OgogCS8q IHB1dCByZWZlcmVuY2UgdG8gdGhpcyBwb3J0ICovCiAJZHJtX2RwX21zdF90b3BvbG9neV9wdXRf cG9ydChwb3J0KTsKKwlyZXR1cm47CisKK2ZhaWw6CisJLyogUmVtb3ZlIGl0IGZyb20gdGhlIHBv cnQgbGlzdCAqLworCW11dGV4X2xvY2soJm1nci0+bG9jayk7CisJbGlzdF9kZWwoJnBvcnQtPm5l eHQpOworCW11dGV4X3VubG9jaygmbWdyLT5sb2NrKTsKKworCS8qIERyb3AgdGhlIHBvcnQgbGlz dCByZWZlcmVuY2UgKi8KKwlkcm1fZHBfbXN0X3RvcG9sb2d5X3B1dF9wb3J0KHBvcnQpOworCS8q IEFuZCBub3cgZHJvcCBvdXIgcmVmZXJlbmNlICovCisJZHJtX2RwX21zdF90b3BvbG9neV9wdXRf cG9ydChwb3J0KTsKIH0KIAogc3RhdGljIHZvaWQgZHJtX2RwX3VwZGF0ZV9wb3J0KHN0cnVjdCBk cm1fZHBfbXN0X2JyYW5jaCAqbXN0YiwKIAkJCSAgICAgICBzdHJ1Y3QgZHJtX2RwX2Nvbm5lY3Rp b25fc3RhdHVzX25vdGlmeSAqY29ubl9zdGF0KQogewogCXN0cnVjdCBkcm1fZHBfbXN0X3BvcnQg KnBvcnQ7Ci0JaW50IG9sZF9wZHQ7CiAJaW50IG9sZF9kZHBzOwogCWJvb2wgZG93b3JrID0gZmFs c2U7CisKIAlwb3J0ID0gZHJtX2RwX2dldF9wb3J0KG1zdGIsIGNvbm5fc3RhdC0+cG9ydF9udW1i ZXIpOwogCWlmICghcG9ydCkKIAkJcmV0dXJuOwogCiAJb2xkX2RkcHMgPSBwb3J0LT5kZHBzOwot CW9sZF9wZHQgPSBwb3J0LT5wZHQ7Ci0JcG9ydC0+cGR0ID0gY29ubl9zdGF0LT5wZWVyX2Rldmlj ZV90eXBlOwogCXBvcnQtPm1jcyA9IGNvbm5fc3RhdC0+bWVzc2FnZV9jYXBhYmlsaXR5X3N0YXR1 czsKIAlwb3J0LT5sZHBzID0gY29ubl9zdGF0LT5sZWdhY3lfZGV2aWNlX3BsdWdfc3RhdHVzOwog CXBvcnQtPmRkcHMgPSBjb25uX3N0YXQtPmRpc3BsYXlwb3J0X2RldmljZV9wbHVnX3N0YXR1czsK QEAgLTE5MTgsMTEgKzE5NDUsMTcgQEAgc3RhdGljIHZvaWQgZHJtX2RwX3VwZGF0ZV9wb3J0KHN0 cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqbXN0YiwKIAkJCXBvcnQtPmF2YWlsYWJsZV9wYm4gPSAw OwogCQl9CiAJfQotCWlmIChvbGRfcGR0ICE9IHBvcnQtPnBkdCAmJiAhcG9ydC0+aW5wdXQpIHsK LQkJZHJtX2RwX3BvcnRfdGVhcmRvd25fcGR0KHBvcnQsIG9sZF9wZHQpOwogCi0JCWlmIChkcm1f ZHBfcG9ydF9zZXR1cF9wZHQocG9ydCkpCisJaWYgKCFwb3J0LT5pbnB1dCkgeworCQlpbnQgcmV0 ID0gZHJtX2RwX3BvcnRfc2V0X3BkdChwb3J0LAorCQkJCQkgICAgICBjb25uX3N0YXQtPnBlZXJf ZGV2aWNlX3R5cGUpOworCQlpZiAocmV0ID09IDEpIHsKIAkJCWRvd29yayA9IHRydWU7CisJCX0g ZWxzZSBpZiAocmV0IDwgMCkgeworCQkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gY2hhbmdlIFBEVCBm b3IgcG9ydCAlcDogJWRcbiIsCisJCQkJICBwb3J0LCByZXQpOworCQkJZG93b3JrID0gZmFsc2U7 CisJCX0KIAl9CiAKIAlkcm1fZHBfbXN0X3RvcG9sb2d5X3B1dF9wb3J0KHBvcnQpOwpAQCAtMzg4 NCw5ICszOTE3LDcgQEAgZHJtX2RwX2ZpbmlzaF9kZXN0cm95X3BvcnQoc3RydWN0IGRybV9kcF9t c3RfcG9ydCAqcG9ydCkKIAlpZiAocG9ydC0+Y29ubmVjdG9yKQogCQlwb3J0LT5tZ3ItPmNicy0+ ZGVzdHJveV9jb25uZWN0b3IocG9ydC0+bWdyLCBwb3J0LT5jb25uZWN0b3IpOwogCi0JZHJtX2Rw X3BvcnRfdGVhcmRvd25fcGR0KHBvcnQsIHBvcnQtPnBkdCk7Ci0JcG9ydC0+cGR0ID0gRFBfUEVF Ul9ERVZJQ0VfTk9ORTsKLQorCWRybV9kcF9wb3J0X3NldF9wZHQocG9ydCwgRFBfUEVFUl9ERVZJ Q0VfTk9ORSk7CiAJZHJtX2RwX21zdF9wdXRfcG9ydF9tYWxsb2MocG9ydCk7CiB9CiAKZGlmZiAt LWdpdCBhL2luY2x1ZGUvZHJtL2RybV9kcF9tc3RfaGVscGVyLmggYi9pbmNsdWRlL2RybS9kcm1f ZHBfbXN0X2hlbHBlci5oCmluZGV4IDRjOGQxNzdlODNlNS4uZjcwNGQyMTdjOWUwIDEwMDY0NAot LS0gYS9pbmNsdWRlL2RybS9kcm1fZHBfbXN0X2hlbHBlci5oCisrKyBiL2luY2x1ZGUvZHJtL2Ry bV9kcF9tc3RfaGVscGVyLmgKQEAgLTU1LDggKzU1LDEwIEBAIHN0cnVjdCBkcm1fZHBfdmNwaSB7 CiAgKiBAbnVtX3NkcF9zdHJlYW1fc2lua3M6IE51bWJlciBvZiBzdHJlYW0gc2lua3MKICAqIEBh dmFpbGFibGVfcGJuOiBBdmFpbGFibGUgYmFuZHdpZHRoIGZvciB0aGlzIHBvcnQuCiAgKiBAbmV4 dDogbGluayB0byBuZXh0IHBvcnQgb24gdGhpcyBicmFuY2ggZGV2aWNlCi0gKiBAbXN0YjogYnJh bmNoIGRldmljZSBhdHRhY2ggYmVsb3cgdGhpcyBwb3J0Ci0gKiBAYXV4OiBpMmMgYXV4IHRyYW5z cG9ydCB0byB0YWxrIHRvIGRldmljZSBjb25uZWN0ZWQgdG8gdGhpcyBwb3J0LgorICogQG1zdGI6 IGJyYW5jaCBkZXZpY2Ugb24gdGhpcyBwb3J0LCBwcm90ZWN0ZWQgYnkKKyAqICZkcm1fZHBfbXN0 X3RvcG9sb2d5X21nci5sb2NrCisgKiBAYXV4OiBpMmMgYXV4IHRyYW5zcG9ydCB0byB0YWxrIHRv IGRldmljZSBjb25uZWN0ZWQgdG8gdGhpcyBwb3J0LCBwcm90ZWN0ZWQKKyAqIGJ5ICZkcm1fZHBf bXN0X3RvcG9sb2d5X21nci5sb2NrCiAgKiBAcGFyZW50OiBicmFuY2ggZGV2aWNlIHBhcmVudCBv ZiB0aGlzIHBvcnQKICAqIEB2Y3BpOiBWaXJ0dWFsIENoYW5uZWwgUGF5bG9hZCBpbmZvIGZvciB0 aGlzIHBvcnQuCiAgKiBAY29ubmVjdG9yOiBEUk0gY29ubmVjdG9yIHRoaXMgcG9ydCBpcyBjb25u ZWN0ZWQgdG8uCi0tIAoyLjIxLjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2RyaS1kZXZlbA==