From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jason Ekstrand Subject: [PATCH v3 9/9] drm/syncobj: Allow wait for submit and signal behavior (v3) Date: Wed, 9 Aug 2017 18:35:30 -0700 Message-ID: <1502328930-10772-1-git-send-email-jason.ekstrand@intel.com> References: <1502298054-12260-1-git-send-email-jason.ekstrand@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pg0-x243.google.com (mail-pg0-x243.google.com [IPv6:2607:f8b0:400e:c05::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id BD5A56E53D for ; Thu, 10 Aug 2017 01:35:35 +0000 (UTC) Received: by mail-pg0-x243.google.com with SMTP id y129so7197499pgy.3 for ; Wed, 09 Aug 2017 18:35:35 -0700 (PDT) In-Reply-To: <1502298054-12260-1-git-send-email-jason.ekstrand@intel.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: Jason Ekstrand , Dave Airlie , Jason Ekstrand List-Id: dri-devel@lists.freedesktop.org VnVsa2FuIFZrRmVuY2Ugc2VtYW50aWNzIHJlcXVpcmUgdGhhdCB0aGUgYXBwbGljYXRpb24gYmUg YWJsZSB0byBwZXJmb3JtCmEgQ1BVIHdhaXQgb24gd29yayB3aGljaCBtYXkgbm90IHlldCBoYXZl IGJlZW4gc3VibWl0dGVkLiAgVGhpcyBpcwpwZXJmZWN0bHkgc2FmZSBiZWNhdXNlIHRoZSBDUFUg d2FpdCBoYXMgYSB0aW1lb3V0IHdoaWNoIHdpbGwgZ2V0CnRyaWdnZXJlZCBldmVudHVhbGx5IGlm IG5vIHdvcmsgaXMgZXZlciBzdWJtaXR0ZWQuICBUaGlzIGJlaGF2aW9yIGlzCmFkdmFudGFnZW91 cyBmb3IgbXVsdGktdGhyZWFkZWQgd29ya2xvYWRzIGJlY2F1c2UsIHNvIGxvbmcgYXMgYWxsIG9m IHRoZQp0aHJlYWRzIGFncmVlIG9uIHdoYXQgZmVuY2VzIHRvIHVzZSB1cC1mcm9udCwgeW91IGRv bid0IGhhdmUgdGhlIGV4dHJhCmNyb3NzLXRocmVhZCBzeW5jaHJvbml6YXRpb24gY29zdCBvZiB0 aHJlYWQgQSB0ZWxsaW5nIHRocmVhZCBCIHRoYXQgaXQKaGFzIHN1Ym1pdHRlZCBpdHMgZGVwZW5k ZW50IHdvcmsgYW5kIHRocmVhZCBCIGlzIG5vdyBmcmVlIHRvIHdhaXQuCgpXaXRoaW4gYSBzaW5n bGUgcHJvY2VzcywgdGhpcyBjYW4gYmUgaW1wbGVtZW50ZWQgaW4gdGhlIHVzZXJzcGFjZSBkcml2 ZXIKYnkgZG9pbmcgZXhhY3RseSB0aGUgc2FtZSBraW5kIG9mIHRyYWNraW5nIHRoZSBhcHAgd291 bGQgaGF2ZSB0byBkbwp1c2luZyBwb3NpeCBjb25kaXRpb24gdmFyaWFibGVzIG9yIHNpbWlsYXIu ICBIb3dldmVyLCBpbiBvcmRlciBmb3IgdGhpcwp0byB3b3JrIGNyb3NzLXByb2Nlc3MgKGFzIGlz IHJlcXVpcmVkIGJ5IFZLX0tIUl9leHRlcm5hbF9mZW5jZSksIHdlIG5lZWQKdG8gaGFuZGxlIHRo aXMgaW4gdGhlIGtlcm5lbC4KClRoaXMgY29tbWl0IGFkZHMgYSBXQUlUX0ZPUl9TVUJNSVQgZmxh ZyB0byBEUk1fSU9DVExfU1lOQ09CSl9XQUlUIHdoaWNoCmluc3RydWN0cyB0aGUgSU9DVEwgdG8g d2FpdCBmb3IgdGhlIHN5bmNvYmogdG8gaGF2ZSBhIG5vbi1udWxsIGZlbmNlIGFuZAp0aGVuIHdh aXQgb24gdGhlIGZlbmNlLiAgQ29tYmluZWQgd2l0aCBEUk1fSU9DVExfU1lOQ09CSl9SRVNFVCwg eW91IGNhbgplYXNpbHkgZ2V0IHRoZSBWdWxrYW4gYmVoYXZpb3IuCgp2MjoKIC0gRml4IGEgYnVn IGluIHRoZSBpbnZhbGlkIHN5bmNvYmogZXJyb3IgcGF0aAogLSBVbmlmeSB0aGUgd2FpdC1hbGwg YW5kIHdhaXQtYW55IGNhc2VzCnYzOgogLSBVbmlmeSB0aGUgdGltZW91dCA9PSAwIGNhc2UgYSBi aXQgd2l0aCB0aGUgdGltZW91dCA+IDAgY2FzZQogLSB1c2Ugd2FpdF9ldmVudF9pbnRlcnJ1cHRp YmxlX3RpbWVvdXQKClNpZ25lZC1vZmYtYnk6IEphc29uIEVrc3RyYW5kIDxqYXNvbkBqbGVrc3Ry YW5kLm5ldD4KQ2M6IERhdmUgQWlybGllIDxhaXJsaWVkQHJlZGhhdC5jb20+Ci0tLQogZHJpdmVy cy9ncHUvZHJtL2RybV9zeW5jb2JqLmMgfCAyMzkgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tCiBpbmNsdWRlL3VhcGkvZHJtL2RybS5oICAgICAgICB8ICAgMSArCiAy IGZpbGVzIGNoYW5nZWQsIDE5NSBpbnNlcnRpb25zKCspLCA0NSBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYyBiL2RyaXZlcnMvZ3B1L2RybS9k cm1fc3luY29iai5jCmluZGV4IDUxMGRmYzIuLjZlNmZiODYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9kcm1fc3luY29iai5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5j CkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSA8bGludXgvZnMuaD4KICNpbmNsdWRlIDxsaW51 eC9hbm9uX2lub2Rlcy5oPgogI2luY2x1ZGUgPGxpbnV4L3N5bmNfZmlsZS5oPgorI2luY2x1ZGUg PGxpbnV4L3NjaGVkL3NpZ25hbC5oPgogCiAjaW5jbHVkZSAiZHJtX2ludGVybmFsLmgiCiAjaW5j bHVkZSA8ZHJtL2RybV9zeW5jb2JqLmg+CkBAIC0xMDQsNiArMTA1LDI3IEBAIHN0YXRpYyB2b2lk IGRybV9zeW5jb2JqX2FkZF9jYWxsYmFja19sb2NrZWQoc3RydWN0IGRybV9zeW5jb2JqICpzeW5j b2JqLAogCWxpc3RfYWRkX3RhaWwoJmNiLT5ub2RlLCAmc3luY29iai0+Y2JfbGlzdCk7CiB9CiAK K3N0YXRpYyBpbnQgZHJtX3N5bmNvYmpfZmVuY2VfZ2V0X29yX2FkZF9jYWxsYmFjayhzdHJ1Y3Qg ZHJtX3N5bmNvYmogKnN5bmNvYmosCisJCQkJCQkgc3RydWN0IGRtYV9mZW5jZSAqKmZlbmNlLAor CQkJCQkJIHN0cnVjdCBkcm1fc3luY29ial9jYiAqY2IsCisJCQkJCQkgZHJtX3N5bmNvYmpfZnVu Y190IGZ1bmMpCit7CisJaW50IHJldDsKKworCXNwaW5fbG9jaygmc3luY29iai0+bG9jayk7CisJ aWYgKHN5bmNvYmotPmZlbmNlKSB7CisJCSpmZW5jZSA9IGRtYV9mZW5jZV9nZXQoc3luY29iai0+ ZmVuY2UpOworCQlyZXQgPSAxOworCX0gZWxzZSB7CisJCSpmZW5jZSA9IE5VTEw7CisJCWRybV9z eW5jb2JqX2FkZF9jYWxsYmFja19sb2NrZWQoc3luY29iaiwgY2IsIGZ1bmMpOworCQlyZXQgPSAw OworCX0KKwlzcGluX3VubG9jaygmc3luY29iai0+bG9jayk7CisKKwlyZXR1cm4gcmV0OworfQor CiAvKioKICAqIGRybV9zeW5jb2JqX2FkZF9jYWxsYmFjayAtIGFkZHMgYSBjYWxsYmFjayB0byBz eW5jb2JqOjpjYl9saXN0CiAgKiBAc3luY29iajogU3luYyBvYmplY3QgdG8gd2hpY2ggdG8gYWRk IHRoZSBjYWxsYmFjawpAQCAtNTI2LDYgKzU0OCwxNTUgQEAgZHJtX3N5bmNvYmpfZmRfdG9faGFu ZGxlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCQkJCSZhcmdz LT5oYW5kbGUpOwogfQogCitzdHJ1Y3Qgc3luY29ial93YWl0X2VudHJ5IHsKKwl3YWl0X3F1ZXVl X2hlYWRfdCAqd3E7CisJc3RydWN0IGRtYV9mZW5jZSAqZmVuY2U7CisJc3RydWN0IGRtYV9mZW5j ZV9jYiBmZW5jZV9jYjsKKwlzdHJ1Y3QgZHJtX3N5bmNvYmpfY2Igc3luY29ial9jYjsKK307CisK K3N0YXRpYyB2b2lkIHN5bmNvYmpfd2FpdF9mZW5jZV9mdW5jKHN0cnVjdCBkbWFfZmVuY2UgKmZl bmNlLAorCQkJCSAgICBzdHJ1Y3QgZG1hX2ZlbmNlX2NiICpjYikKK3sKKwlzdHJ1Y3Qgc3luY29i al93YWl0X2VudHJ5ICp3YWl0ID0KKwkJY29udGFpbmVyX29mKGNiLCBzdHJ1Y3Qgc3luY29ial93 YWl0X2VudHJ5LCBmZW5jZV9jYik7CisKKwl3YWtlX3VwKHdhaXQtPndxKTsKK30KKworc3RhdGlj IHZvaWQgc3luY29ial93YWl0X3N5bmNvYmpfZnVuYyhzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNv YmosCisJCQkJICAgICAgc3RydWN0IGRybV9zeW5jb2JqX2NiICpjYikKK3sKKwlzdHJ1Y3Qgc3lu Y29ial93YWl0X2VudHJ5ICp3YWl0ID0KKwkJY29udGFpbmVyX29mKGNiLCBzdHJ1Y3Qgc3luY29i al93YWl0X2VudHJ5LCBzeW5jb2JqX2NiKTsKKworCS8qIFRoaXMgaGFwcGVucyBpbnNpZGUgdGhl IHN5bmNvYmogbG9jayAqLworCXdhaXQtPmZlbmNlID0gZG1hX2ZlbmNlX2dldChzeW5jb2JqLT5m ZW5jZSk7CisJd2FrZV91cCh3YWl0LT53cSk7Cit9CisKK3N0YXRpYyBib29sIGRybV9zeW5jb2Jq X2FycmF5X3dhaXRfY29tcGxldGUoc3RydWN0IHN5bmNvYmpfd2FpdF9lbnRyeSAqZW50cmllcywK KwkJCQkJICAgIHVpbnQzMl90IGNvdW50LAorCQkJCQkgICAgdWludDMyX3QgZmxhZ3MsCisJCQkJ CSAgICB1aW50MzJfdCAqaWR4KQoreworCXN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlOworCXVpbnQz Ml90IHNpZ25hbGVkX2NvdW50OworCWludCBpOworCisJc2lnbmFsZWRfY291bnQgPSAwOworCWZv ciAoaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CisJCWZlbmNlID0gZW50cmllc1tpXS5mZW5jZTsK KwkJaWYgKCFmZW5jZSkKKwkJCWNvbnRpbnVlOworCisJCWlmIChkbWFfZmVuY2VfaXNfc2lnbmFs ZWQoZmVuY2UpIHx8CisJCSAgICAoIWVudHJpZXNbaV0uZmVuY2VfY2IuZnVuYyAmJgorCQkgICAg IGRtYV9mZW5jZV9hZGRfY2FsbGJhY2soZmVuY2UsCisJCQkJCSAgICAmZW50cmllc1tpXS5mZW5j ZV9jYiwKKwkJCQkJICAgIHN5bmNvYmpfd2FpdF9mZW5jZV9mdW5jKSkpIHsKKwkJCS8qIFRoZSBm ZW5jZSBoYXMgYmVlbiBzaWduYWxlZCAqLworCQkJaWYgKGZsYWdzICYgRFJNX1NZTkNPQkpfV0FJ VF9GTEFHU19XQUlUX0FMTCkgeworCQkJCXNpZ25hbGVkX2NvdW50Kys7CisJCQl9IGVsc2Ugewor CQkJCWlmIChpZHgpCisJCQkJCSppZHggPSBpOworCQkJCXJldHVybiB0cnVlOworCQkJfQorCQl9 CisJfQorCisJaWYgKHNpZ25hbGVkX2NvdW50ID09IGNvdW50KQorCQlyZXR1cm4gdHJ1ZTsKKwor CXJldHVybiBmYWxzZTsKK30KKworc3RhdGljIHNpZ25lZCBsb25nIGRybV9zeW5jb2JqX2FycmF5 X3dhaXRfdGltZW91dChzdHJ1Y3QgZHJtX3N5bmNvYmogKipzeW5jb2JqcywKKwkJCQkJCSAgdWlu dDMyX3QgY291bnQsCisJCQkJCQkgIHVpbnQzMl90IGZsYWdzLAorCQkJCQkJICBzaWduZWQgbG9u ZyB0aW1lb3V0LAorCQkJCQkJICB1aW50MzJfdCAqaWR4KQoreworCXdhaXRfcXVldWVfaGVhZF90 IHN5bmNvYmpfd2FpdF9xdWV1ZTsKKwlzdHJ1Y3Qgc3luY29ial93YWl0X2VudHJ5ICplbnRyaWVz OworCXNpZ25lZCBsb25nIHJldDsKKwl1aW50MzJfdCBzaWduYWxlZF9jb3VudCwgaTsKKworCWVu dHJpZXMgPSBrY2FsbG9jKGNvdW50LCBzaXplb2YoKmVudHJpZXMpLCBHRlBfS0VSTkVMKTsKKwlp ZiAoIWVudHJpZXMpCisJCXJldHVybiAtRU5PTUVNOworCisJLyogV2FsayB0aGUgbGlzdCBvZiBz eW5jIG9iamVjdHMgYW5kIGluaXRpYWxpemUgZW50cmllcy4gIFdlIGRvCisJICogdGhpcyB1cC1m cm9udCBzbyB0aGF0IHdlIGNhbiBwcm9wZXJseSByZXR1cm4gLUVJTlZBTCBpZiB0aGVyZSBpcwor CSAqIGEgc3luY29iaiB3aXRoIGEgbWlzc2luZyBmZW5jZSBhbmQgdGhlbiBuZXZlciBoYXZlIHRo ZSBjaGFuY2Ugb2YKKwkgKiByZXR1cm5pbmcgLUVJTlZBTCBhZ2Fpbi4KKwkgKi8KKwlzaWduYWxl ZF9jb3VudCA9IDA7CisJZm9yIChpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKwkJZW50cmllc1tp XS53cSA9ICZzeW5jb2JqX3dhaXRfcXVldWU7CisJCWVudHJpZXNbaV0uZmVuY2UgPSBkcm1fc3lu Y29ial9mZW5jZV9nZXQoc3luY29ianNbaV0pOworCQlpZiAoIWVudHJpZXNbaV0uZmVuY2UpIHsK KwkJCWlmIChmbGFncyAmIERSTV9TWU5DT0JKX1dBSVRfRkxBR1NfV0FJVF9GT1JfU1VCTUlUKSB7 CisJCQkJY29udGludWU7CisJCQl9IGVsc2UgeworCQkJCXJldCA9IC1FSU5WQUw7CisJCQkJZ290 byBjbGVhbnVwX2VudHJpZXM7CisJCQl9CisJCX0KKworCQlpZiAoZG1hX2ZlbmNlX2lzX3NpZ25h bGVkKGVudHJpZXNbaV0uZmVuY2UpKSB7CisJCQlpZiAoc2lnbmFsZWRfY291bnQgPT0gMCAmJiBp ZHgpCisJCQkJKmlkeCA9IGk7CisJCQlzaWduYWxlZF9jb3VudCsrOworCQl9CisJfQorCisJaWYg KHNpZ25hbGVkX2NvdW50ID09IGNvdW50IHx8CisJICAgIChzaWduYWxlZF9jb3VudCA+IDAgJiYK KwkgICAgICEoZmxhZ3MgJiBEUk1fU1lOQ09CSl9XQUlUX0ZMQUdTX1dBSVRfQUxMKSkpIHsKKwkJ cmV0ID0gbWF4X3Qoc2lnbmVkIGxvbmcsIHRpbWVvdXQsIDEpOworCQlnb3RvIGNsZWFudXBfZW50 cmllczsKKwl9CisKKwkvKiBUaGVyZSdzIGEgdmVyeSBhbm5veWluZyBsYXhuZXNzIGluIHRoZSBk bWFfZmVuY2UgQVBJIGhlcmUsIGluCisJICogdGhhdCBiYWNrZW5kcyBhcmUgbm90IHJlcXVpcmVk IHRvIGF1dG9tYXRpY2FsbHkgcmVwb3J0IHdoZW4gYQorCSAqIGZlbmNlIGlzIHNpZ25hbGVkIHBy aW9yIHRvIGZlbmNlLT5vcHMtPmVuYWJsZV9zaWduYWxpbmcoKSBiZWluZworCSAqIGNhbGxlZC4g IFNvIGhlcmUgaWYgd2UgZmFpbCB0byBtYXRjaCBzaWduYWxlZF9jb3VudCwgd2UgbmVlZCB0bwor CSAqIGZhbGx0aG91Z2ggYW5kIHRyeSBhIDAgdGltZW91dCB3YWl0IQorCSAqLworCisJaW5pdF93 YWl0cXVldWVfaGVhZCgmc3luY29ial93YWl0X3F1ZXVlKTsKKworCWlmIChmbGFncyAmIERSTV9T WU5DT0JKX1dBSVRfRkxBR1NfV0FJVF9GT1JfU1VCTUlUKSB7CisJCWZvciAoaSA9IDA7IGkgPCBj b3VudDsgKytpKSB7CisJCQlkcm1fc3luY29ial9mZW5jZV9nZXRfb3JfYWRkX2NhbGxiYWNrKHN5 bmNvYmpzW2ldLAorCQkJCQkJCSAgICAgICZlbnRyaWVzW2ldLmZlbmNlLAorCQkJCQkJCSAgICAg ICZlbnRyaWVzW2ldLnN5bmNvYmpfY2IsCisJCQkJCQkJICAgICAgc3luY29ial93YWl0X3N5bmNv YmpfZnVuYyk7CisJCX0KKwl9CisKKwlyZXQgPSB3YWl0X2V2ZW50X2ludGVycnVwdGlibGVfdGlt ZW91dCgKKwkJc3luY29ial93YWl0X3F1ZXVlLAorCQlkcm1fc3luY29ial9hcnJheV93YWl0X2Nv bXBsZXRlKGVudHJpZXMsIGNvdW50LCBmbGFncywgaWR4KSwKKwkJdGltZW91dCk7CisKK2NsZWFu dXBfZW50cmllczoKKwlmb3IgKGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworCQlpZiAoZW50cmll c1tpXS5zeW5jb2JqX2NiLmZ1bmMpCisJCQlkcm1fc3luY29ial9yZW1vdmVfY2FsbGJhY2soc3lu Y29ianNbaV0sCisJCQkJCQkgICAgJmVudHJpZXNbaV0uc3luY29ial9jYik7CisJCWlmIChlbnRy aWVzW2ldLmZlbmNlX2NiLmZ1bmMpCisJCQlkbWFfZmVuY2VfcmVtb3ZlX2NhbGxiYWNrKGVudHJp ZXNbaV0uZmVuY2UsCisJCQkJCQkgICZlbnRyaWVzW2ldLmZlbmNlX2NiKTsKKwkJZG1hX2ZlbmNl X3B1dChlbnRyaWVzW2ldLmZlbmNlKTsKKwl9CisJa2ZyZWUoZW50cmllcyk7CisKKwlyZXR1cm4g cmV0OworfQorCiAvKioKICAqIGRybV90aW1lb3V0X2Fic190b19qaWZmaWVzIC0gY2FsY3VsYXRl IGppZmZpZXMgdGltZW91dCBmcm9tIGFic29sdXRlIHZhbHVlCiAgKgpAQCAtNTU4LDQzICs3Mjks MTkgQEAgc3RhdGljIHNpZ25lZCBsb25nIGRybV90aW1lb3V0X2Fic190b19qaWZmaWVzKGludDY0 X3QgdGltZW91dF9uc2VjKQogCXJldHVybiB0aW1lb3V0X2ppZmZpZXM2NCArIDE7CiB9CiAKLXN0 YXRpYyBpbnQgZHJtX3N5bmNvYmpfd2FpdF9mZW5jZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK LQkJCQkgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSwKLQkJCQkgICBzdHJ1Y3QgZHJt X3N5bmNvYmpfd2FpdCAqd2FpdCwKLQkJCQkgICBzdHJ1Y3QgZG1hX2ZlbmNlICoqZmVuY2VzKQor c3RhdGljIGludCBkcm1fc3luY29ial9hcnJheV93YWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs CisJCQkJICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSwKKwkJCQkgIHN0cnVjdCBkcm1f c3luY29ial93YWl0ICp3YWl0LAorCQkJCSAgc3RydWN0IGRybV9zeW5jb2JqICoqc3luY29ianMp CiB7CiAJc2lnbmVkIGxvbmcgdGltZW91dCA9IGRybV90aW1lb3V0X2Fic190b19qaWZmaWVzKHdh aXQtPnRpbWVvdXRfbnNlYyk7CiAJc2lnbmVkIGxvbmcgcmV0ID0gMDsKIAl1aW50MzJfdCBmaXJz dCA9IH4wOwogCi0JaWYgKHdhaXQtPmZsYWdzICYgRFJNX1NZTkNPQkpfV0FJVF9GTEFHU19XQUlU X0FMTCkgewotCQl1aW50MzJfdCBpOwotCQlmb3IgKGkgPSAwOyBpIDwgd2FpdC0+Y291bnRfaGFu ZGxlczsgaSsrKSB7Ci0JCQlyZXQgPSBkbWFfZmVuY2Vfd2FpdF90aW1lb3V0KGZlbmNlc1tpXSwg dHJ1ZSwgdGltZW91dCk7Ci0KLQkJCS8qIFZhcmlvdXMgZG1hX2ZlbmNlIHdhaXQgY2FsbGJhY2tz IHdpbGwgcmV0dXJuCi0JCQkgKiBFTk9FTlQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgZmVuY2UgaGFz IGFscmVhZHkKLQkJCSAqIGJlZW4gc2lnbmFsZWQuICBXZSBuZWVkIHRvIHNhbml0aXplIHRoaXMg dG8gMCBzbwotCQkJICogd2UgZG9uJ3QgcmV0dXJuIGVhcmx5IGFuZCB0aGUgY2xpZW50IGRvZXNu J3Qgc2VlCi0JCQkgKiBhbiB1bmV4cGVjdGVkIGVycm9yLgotCQkJICovCi0JCQlpZiAocmV0ID09 IC1FTk9FTlQpCi0JCQkJcmV0ID0gMDsKLQotCQkJaWYgKHJldCA8IDApCi0JCQkJcmV0dXJuIHJl dDsKLQkJCWlmIChyZXQgPT0gMCkKLQkJCQlicmVhazsKLQkJCXRpbWVvdXQgPSByZXQ7Ci0JCX0K LQkJZmlyc3QgPSAwOwotCX0gZWxzZSB7Ci0JCXJldCA9IGRtYV9mZW5jZV93YWl0X2FueV90aW1l b3V0KGZlbmNlcywKLQkJCQkJCSB3YWl0LT5jb3VudF9oYW5kbGVzLAotCQkJCQkJIHRydWUsIHRp bWVvdXQsCi0JCQkJCQkgJmZpcnN0KTsKLQl9Ci0KKwlyZXQgPSBkcm1fc3luY29ial9hcnJheV93 YWl0X3RpbWVvdXQoc3luY29ianMsCisJCQkJCSAgICAgd2FpdC0+Y291bnRfaGFuZGxlcywKKwkJ CQkJICAgICB3YWl0LT5mbGFncywKKwkJCQkJICAgICB0aW1lb3V0LCAmZmlyc3QpOwogCWlmIChy ZXQgPCAwKQogCQlyZXR1cm4gcmV0OwogCkBAIC02MTAsMTQgKzc1NywxNSBAQCBkcm1fc3luY29i al93YWl0X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiB7CiAJc3Ry dWN0IGRybV9zeW5jb2JqX3dhaXQgKmFyZ3MgPSBkYXRhOwogCXVpbnQzMl90ICpoYW5kbGVzOwot CXN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZXM7CisJc3RydWN0IGRybV9zeW5jb2JqICoqc3luY29i anM7CiAJaW50IHJldCA9IDA7CiAJdWludDMyX3QgaTsKIAogCWlmICghZHJtX2NvcmVfY2hlY2tf ZmVhdHVyZShkZXYsIERSSVZFUl9TWU5DT0JKKSkKIAkJcmV0dXJuIC1FTk9ERVY7CiAKLQlpZiAo YXJncy0+ZmxhZ3MgIT0gMCAmJiBhcmdzLT5mbGFncyAhPSBEUk1fU1lOQ09CSl9XQUlUX0ZMQUdT X1dBSVRfQUxMKQorCWlmIChhcmdzLT5mbGFncyAmIH4oRFJNX1NZTkNPQkpfV0FJVF9GTEFHU19X QUlUX0FMTCB8CisJCQkgICAgRFJNX1NZTkNPQkpfV0FJVF9GTEFHU19XQUlUX0ZPUl9TVUJNSVQp KQogCQlyZXR1cm4gLUVJTlZBTDsKIAogCWlmIChhcmdzLT5jb3VudF9oYW5kbGVzID09IDApCkBA IC02MzYsMjcgKzc4NCwyOCBAQCBkcm1fc3luY29ial93YWl0X2lvY3RsKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCWdvdG8gZXJyX2ZyZWVfaGFuZGxlczsKIAl9CiAKLQlm ZW5jZXMgPSBrY2FsbG9jKGFyZ3MtPmNvdW50X2hhbmRsZXMsCi0JCQkgc2l6ZW9mKHN0cnVjdCBk bWFfZmVuY2UgKiksIEdGUF9LRVJORUwpOwotCWlmICghZmVuY2VzKSB7CisJc3luY29ianMgPSBr Y2FsbG9jKGFyZ3MtPmNvdW50X2hhbmRsZXMsCisJCQkgICBzaXplb2Yoc3RydWN0IGRybV9zeW5j b2JqICopLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXN5bmNvYmpzKSB7CiAJCXJldCA9IC1FTk9NRU07 CiAJCWdvdG8gZXJyX2ZyZWVfaGFuZGxlczsKIAl9CiAKIAlmb3IgKGkgPSAwOyBpIDwgYXJncy0+ Y291bnRfaGFuZGxlczsgaSsrKSB7Ci0JCXJldCA9IGRybV9zeW5jb2JqX2ZpbmRfZmVuY2UoZmls ZV9wcml2YXRlLCBoYW5kbGVzW2ldLAotCQkJCQkgICAgICZmZW5jZXNbaV0pOwotCQlpZiAocmV0 KQorCQlzeW5jb2Jqc1tpXSA9IGRybV9zeW5jb2JqX2ZpbmQoZmlsZV9wcml2YXRlLCBoYW5kbGVz W2ldKTsKKwkJaWYgKCFzeW5jb2Jqc1tpXSkgeworCQkJcmV0ID0gLUVOT0VOVDsKIAkJCWdvdG8g ZXJyX2ZyZWVfZmVuY2VfYXJyYXk7CisJCX0KIAl9CiAKLQlyZXQgPSBkcm1fc3luY29ial93YWl0 X2ZlbmNlcyhkZXYsIGZpbGVfcHJpdmF0ZSwKLQkJCQkgICAgICBhcmdzLCBmZW5jZXMpOworCXJl dCA9IGRybV9zeW5jb2JqX2FycmF5X3dhaXQoZGV2LCBmaWxlX3ByaXZhdGUsCisJCQkJICAgICBh cmdzLCBzeW5jb2Jqcyk7CiAKIGVycl9mcmVlX2ZlbmNlX2FycmF5OgotCWZvciAoaSA9IDA7IGkg PCBhcmdzLT5jb3VudF9oYW5kbGVzOyBpKyspCi0JCWRtYV9mZW5jZV9wdXQoZmVuY2VzW2ldKTsK LQlrZnJlZShmZW5jZXMpOworCXdoaWxlIChpLS0gPiAwKQorCQlkcm1fc3luY29ial9wdXQoc3lu Y29ianNbaV0pOworCWtmcmVlKHN5bmNvYmpzKTsKIGVycl9mcmVlX2hhbmRsZXM6CiAJa2ZyZWUo aGFuZGxlcyk7CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmggYi9pbmNsdWRl L3VhcGkvZHJtL2RybS5oCmluZGV4IDRiMzAxYjQuLmY4ZWM4ZmUgMTAwNjQ0Ci0tLSBhL2luY2x1 ZGUvdWFwaS9kcm0vZHJtLmgKKysrIGIvaW5jbHVkZS91YXBpL2RybS9kcm0uaApAQCAtNzE5LDYg KzcxOSw3IEBAIHN0cnVjdCBkcm1fc3luY29ial9oYW5kbGUgewogfTsKIAogI2RlZmluZSBEUk1f U1lOQ09CSl9XQUlUX0ZMQUdTX1dBSVRfQUxMICgxIDw8IDApCisjZGVmaW5lIERSTV9TWU5DT0JK X1dBSVRfRkxBR1NfV0FJVF9GT1JfU1VCTUlUICgxIDw8IDEpCiBzdHJ1Y3QgZHJtX3N5bmNvYmpf d2FpdCB7CiAJX191NjQgaGFuZGxlczsKIAkvKiBhYnNvbHV0ZSB0aW1lb3V0ICovCi0tIAoyLjUu MC40MDAuZ2ZmODZmYWYKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1k ZXZlbAo=