From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jason Ekstrand Subject: [PATCH 7/7] drm/syncobj: Allow wait for submit and signal behavior (v5) Date: Tue, 15 Aug 2017 21:13:55 -0700 Message-ID: <1502856835-9433-8-git-send-email-jason.ekstrand@intel.com> References: <1502856835-9433-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-x244.google.com (mail-pg0-x244.google.com [IPv6:2607:f8b0:400e:c05::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id 987A46E3B5 for ; Wed, 16 Aug 2017 04:14:16 +0000 (UTC) Received: by mail-pg0-x244.google.com with SMTP id 83so4241050pgb.4 for ; Tue, 15 Aug 2017 21:14:16 -0700 (PDT) In-Reply-To: <1502856835-9433-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 , =?UTF-8?q?Christian=20K=C3=B6nig?= , 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+IDAgY2FzZQogLSBVc2Ugd2FpdF9ldmVudF9pbnRlcnJ1cHRp YmxlX3RpbWVvdXQKdjQ6CiAtIFVzZSBwcm94eSBmZW5jZQp2NToKIC0gUmV2ZXJ0IHRvIGEgY29t YmluYXRpb24gb2YgdjIgYW5kIHYzCiAtIERvbid0IHVzZSBwcm94eSBmZW5jZXMKIC0gRG9uJ3Qg dXNlIHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZV90aW1lb3V0IGJlY2F1c2UgaXQganVzdCBhZGRz IGFuCiAgIGV4dHJhIGxheWVyIG9mIGNhbGxiYWNrcwoKU2lnbmVkLW9mZi1ieTogSmFzb24gRWtz dHJhbmQgPGphc29uQGpsZWtzdHJhbmQubmV0PgpDYzogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVk aGF0LmNvbT4KQ2M6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpDYzog Q2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgotLS0KIGRyaXZlcnMv Z3B1L2RybS9kcm1fc3luY29iai5jIHwgMjUyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKystLS0tLS0tLQogaW5jbHVkZS91YXBpL2RybS9kcm0uaCAgICAgICAgfCAgIDEgKwogMiBm aWxlcyBjaGFuZ2VkLCAyMDggaW5zZXJ0aW9ucygrKSwgNDUgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJt X3N5bmNvYmouYwppbmRleCAyNGE1Mjg2Li43ZGZkYjk4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vZHJtX3N5bmNvYmouYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYwpA QCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgPGxpbnV4L2ZzLmg+CiAjaW5jbHVkZSA8bGludXgv YW5vbl9pbm9kZXMuaD4KICNpbmNsdWRlIDxsaW51eC9zeW5jX2ZpbGUuaD4KKyNpbmNsdWRlIDxs aW51eC9zY2hlZC9zaWduYWwuaD4KIAogI2luY2x1ZGUgImRybV9pbnRlcm5hbC5oIgogI2luY2x1 ZGUgPGRybS9kcm1fc3luY29iai5oPgpAQCAtODgsNiArODksMzUgQEAgc3RhdGljIHZvaWQgZHJt X3N5bmNvYmpfYWRkX2NhbGxiYWNrX2xvY2tlZChzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmos CiAJbGlzdF9hZGRfdGFpbCgmY2ItPm5vZGUsICZzeW5jb2JqLT5jYl9saXN0KTsKIH0KIAorc3Rh dGljIGludCBkcm1fc3luY29ial9mZW5jZV9nZXRfb3JfYWRkX2NhbGxiYWNrKHN0cnVjdCBkcm1f c3luY29iaiAqc3luY29iaiwKKwkJCQkJCSBzdHJ1Y3QgZG1hX2ZlbmNlICoqZmVuY2UsCisJCQkJ CQkgc3RydWN0IGRybV9zeW5jb2JqX2NiICpjYiwKKwkJCQkJCSBkcm1fc3luY29ial9mdW5jX3Qg ZnVuYykKK3sKKwlpbnQgcmV0OworCisJKmZlbmNlID0gZHJtX3N5bmNvYmpfZmVuY2VfZ2V0KHN5 bmNvYmopOworCWlmICgqZmVuY2UpCisJCXJldHVybiAxOworCisJc3Bpbl9sb2NrKCZzeW5jb2Jq LT5sb2NrKTsKKwkvKiBXZSd2ZSBhbHJlYWR5IHRyaWVkIG9uY2UgdG8gZ2V0IGEgZmVuY2UgYW5k IGZhaWxlZC4gIE5vdyB0aGF0IHdlCisJICogaGF2ZSB0aGUgbG9jaywgdHJ5IG9uZSBtb3JlIHRp bWUganVzdCB0byBiZSBzdXJlIHdlIGRvbid0IGFkZCBhCisJICogY2FsbGJhY2sgd2hlbiBhIGZl bmNlIGhhcyBhbHJlYWR5IGJlZW4gc2V0LgorCSAqLworCWlmIChzeW5jb2JqLT5mZW5jZSkgewor CQkqZmVuY2UgPSBkbWFfZmVuY2VfZ2V0KHN5bmNvYmotPmZlbmNlKTsKKwkJcmV0ID0gMTsKKwl9 IGVsc2UgeworCQkqZmVuY2UgPSBOVUxMOworCQlkcm1fc3luY29ial9hZGRfY2FsbGJhY2tfbG9j a2VkKHN5bmNvYmosIGNiLCBmdW5jKTsKKwkJcmV0ID0gMDsKKwl9CisJc3Bpbl91bmxvY2soJnN5 bmNvYmotPmxvY2spOworCisJcmV0dXJuIHJldDsKK30KKwogLyoqCiAgKiBkcm1fc3luY29ial9h ZGRfY2FsbGJhY2sgLSBhZGRzIGEgY2FsbGJhY2sgdG8gc3luY29iajo6Y2JfbGlzdAogICogQHN5 bmNvYmo6IFN5bmMgb2JqZWN0IHRvIHdoaWNoIHRvIGFkZCB0aGUgY2FsbGJhY2sKQEAgLTUwOSw2 ICs1MzksMTYwIEBAIGRybV9zeW5jb2JqX2ZkX3RvX2hhbmRsZV9pb2N0bChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkJCQkmYXJncy0+aGFuZGxlKTsKIH0KIAorc3RydWN0 IHN5bmNvYmpfd2FpdF9lbnRyeSB7CisJc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrOworCXN0cnVj dCBkbWFfZmVuY2UgKmZlbmNlOworCXN0cnVjdCBkbWFfZmVuY2VfY2IgZmVuY2VfY2I7CisJc3Ry dWN0IGRybV9zeW5jb2JqX2NiIHN5bmNvYmpfY2I7Cit9OworCitzdGF0aWMgdm9pZCBzeW5jb2Jq X3dhaXRfZmVuY2VfZnVuYyhzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSwKKwkJCQkgICAgc3RydWN0 IGRtYV9mZW5jZV9jYiAqY2IpCit7CisJc3RydWN0IHN5bmNvYmpfd2FpdF9lbnRyeSAqd2FpdCA9 CisJCWNvbnRhaW5lcl9vZihjYiwgc3RydWN0IHN5bmNvYmpfd2FpdF9lbnRyeSwgZmVuY2VfY2Ip OworCisJd2FrZV91cF9wcm9jZXNzKHdhaXQtPnRhc2spOworfQorCitzdGF0aWMgdm9pZCBzeW5j b2JqX3dhaXRfc3luY29ial9mdW5jKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwKKwkJCQkg ICAgICBzdHJ1Y3QgZHJtX3N5bmNvYmpfY2IgKmNiKQoreworCXN0cnVjdCBzeW5jb2JqX3dhaXRf ZW50cnkgKndhaXQgPQorCQljb250YWluZXJfb2YoY2IsIHN0cnVjdCBzeW5jb2JqX3dhaXRfZW50 cnksIHN5bmNvYmpfY2IpOworCisJLyogVGhpcyBoYXBwZW5zIGluc2lkZSB0aGUgc3luY29iaiBs b2NrICovCisJd2FpdC0+ZmVuY2UgPSBkbWFfZmVuY2VfZ2V0KHN5bmNvYmotPmZlbmNlKTsKKwl3 YWtlX3VwX3Byb2Nlc3Mod2FpdC0+dGFzayk7Cit9CisKK3N0YXRpYyBzaWduZWQgbG9uZyBkcm1f c3luY29ial9hcnJheV93YWl0X3RpbWVvdXQoc3RydWN0IGRybV9zeW5jb2JqICoqc3luY29ianMs CisJCQkJCQkgIHVpbnQzMl90IGNvdW50LAorCQkJCQkJICB1aW50MzJfdCBmbGFncywKKwkJCQkJ CSAgc2lnbmVkIGxvbmcgdGltZW91dCwKKwkJCQkJCSAgdWludDMyX3QgKmlkeCkKK3sKKwlzdHJ1 Y3Qgc3luY29ial93YWl0X2VudHJ5ICplbnRyaWVzOworCXN0cnVjdCBkbWFfZmVuY2UgKmZlbmNl OworCXNpZ25lZCBsb25nIHJldDsKKwl1aW50MzJfdCBzaWduYWxlZF9jb3VudCwgaTsKKworCWVu dHJpZXMgPSBrY2FsbG9jKGNvdW50LCBzaXplb2YoKmVudHJpZXMpLCBHRlBfS0VSTkVMKTsKKwlp ZiAoIWVudHJpZXMpCisJCXJldHVybiAtRU5PTUVNOworCisJLyogV2FsayB0aGUgbGlzdCBvZiBz eW5jIG9iamVjdHMgYW5kIGluaXRpYWxpemUgZW50cmllcy4gIFdlIGRvCisJICogdGhpcyB1cC1m cm9udCBzbyB0aGF0IHdlIGNhbiBwcm9wZXJseSByZXR1cm4gLUVJTlZBTCBpZiB0aGVyZSBpcwor CSAqIGEgc3luY29iaiB3aXRoIGEgbWlzc2luZyBmZW5jZSBhbmQgdGhlbiBuZXZlciBoYXZlIHRo ZSBjaGFuY2Ugb2YKKwkgKiByZXR1cm5pbmcgLUVJTlZBTCBhZ2Fpbi4KKwkgKi8KKwlzaWduYWxl ZF9jb3VudCA9IDA7CisJZm9yIChpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKwkJZW50cmllc1tp XS50YXNrID0gY3VycmVudDsKKwkJZW50cmllc1tpXS5mZW5jZSA9IGRybV9zeW5jb2JqX2ZlbmNl X2dldChzeW5jb2Jqc1tpXSk7CisJCWlmICghZW50cmllc1tpXS5mZW5jZSkgeworCQkJaWYgKGZs YWdzICYgRFJNX1NZTkNPQkpfV0FJVF9GTEFHU19XQUlUX0ZPUl9TVUJNSVQpIHsKKwkJCQljb250 aW51ZTsKKwkJCX0gZWxzZSB7CisJCQkJcmV0ID0gLUVJTlZBTDsKKwkJCQlnb3RvIGNsZWFudXBf ZW50cmllczsKKwkJCX0KKwkJfQorCisJCWlmIChkbWFfZmVuY2VfaXNfc2lnbmFsZWQoZW50cmll c1tpXS5mZW5jZSkpIHsKKwkJCWlmIChzaWduYWxlZF9jb3VudCA9PSAwICYmIGlkeCkKKwkJCQkq aWR4ID0gaTsKKwkJCXNpZ25hbGVkX2NvdW50Kys7CisJCX0KKwl9CisKKwkvKiBJbml0aWFsaXpl IHJldCB0byB0aGUgbWF4IG9mIHRpbWVvdXQgYW5kIDEuICBUaGF0IHdheSwgdGhlCisJICogZGVm YXVsdCByZXR1cm4gdmFsdWUgaW5kaWNhdGVzIGEgc3VjY2Vzc2Z1bCB3YWl0IGFuZCBub3QgYQor CSAqIHRpbWVvdXQuCisJICovCisJcmV0ID0gbWF4X3Qoc2lnbmVkIGxvbmcsIHRpbWVvdXQsIDEp OworCisJaWYgKHNpZ25hbGVkX2NvdW50ID09IGNvdW50IHx8CisJICAgIChzaWduYWxlZF9jb3Vu dCA+IDAgJiYKKwkgICAgICEoZmxhZ3MgJiBEUk1fU1lOQ09CSl9XQUlUX0ZMQUdTX1dBSVRfQUxM KSkpCisJCWdvdG8gY2xlYW51cF9lbnRyaWVzOworCisJLyogVGhlcmUncyBhIHZlcnkgYW5ub3lp bmcgbGF4bmVzcyBpbiB0aGUgZG1hX2ZlbmNlIEFQSSBoZXJlLCBpbgorCSAqIHRoYXQgYmFja2Vu ZHMgYXJlIG5vdCByZXF1aXJlZCB0byBhdXRvbWF0aWNhbGx5IHJlcG9ydCB3aGVuIGEKKwkgKiBm ZW5jZSBpcyBzaWduYWxlZCBwcmlvciB0byBmZW5jZS0+b3BzLT5lbmFibGVfc2lnbmFsaW5nKCkg YmVpbmcKKwkgKiBjYWxsZWQuICBTbyBoZXJlIGlmIHdlIGZhaWwgdG8gbWF0Y2ggc2lnbmFsZWRf Y291bnQsIHdlIG5lZWQgdG8KKwkgKiBmYWxsdGhvdWdoIGFuZCB0cnkgYSAwIHRpbWVvdXQgd2Fp dCEKKwkgKi8KKworCWlmIChmbGFncyAmIERSTV9TWU5DT0JKX1dBSVRfRkxBR1NfV0FJVF9GT1Jf U1VCTUlUKSB7CisJCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CisJCQlkcm1fc3luY29i al9mZW5jZV9nZXRfb3JfYWRkX2NhbGxiYWNrKHN5bmNvYmpzW2ldLAorCQkJCQkJCSAgICAgICZl bnRyaWVzW2ldLmZlbmNlLAorCQkJCQkJCSAgICAgICZlbnRyaWVzW2ldLnN5bmNvYmpfY2IsCisJ CQkJCQkJICAgICAgc3luY29ial93YWl0X3N5bmNvYmpfZnVuYyk7CisJCX0KKwl9CisKKwlkbyB7 CisJCXNldF9jdXJyZW50X3N0YXRlKFRBU0tfSU5URVJSVVBUSUJMRSk7CisKKwkJc2lnbmFsZWRf Y291bnQgPSAwOworCQlmb3IgKGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworCQkJZmVuY2UgPSBl bnRyaWVzW2ldLmZlbmNlOworCQkJaWYgKCFmZW5jZSkKKwkJCQljb250aW51ZTsKKworCQkJaWYg KGRtYV9mZW5jZV9pc19zaWduYWxlZChmZW5jZSkgfHwKKwkJCSAgICAoIWVudHJpZXNbaV0uZmVu Y2VfY2IuZnVuYyAmJgorCQkJICAgICBkbWFfZmVuY2VfYWRkX2NhbGxiYWNrKGZlbmNlLAorCQkJ CQkJICAgICZlbnRyaWVzW2ldLmZlbmNlX2NiLAorCQkJCQkJICAgIHN5bmNvYmpfd2FpdF9mZW5j ZV9mdW5jKSkpIHsKKwkJCQkvKiBUaGUgZmVuY2UgaGFzIGJlZW4gc2lnbmFsZWQgKi8KKwkJCQlp ZiAoZmxhZ3MgJiBEUk1fU1lOQ09CSl9XQUlUX0ZMQUdTX1dBSVRfQUxMKSB7CisJCQkJCXNpZ25h bGVkX2NvdW50Kys7CisJCQkJfSBlbHNlIHsKKwkJCQkJaWYgKGlkeCkKKwkJCQkJCSppZHggPSBp OworCQkJCQlnb3RvIGRvbmVfd2FpdGluZzsKKwkJCQl9CisJCQl9CisJCX0KKworCQlpZiAoc2ln bmFsZWRfY291bnQgPT0gY291bnQpCisJCQlnb3RvIGRvbmVfd2FpdGluZzsKKworCQlpZiAodGlt ZW91dCA9PSAwKSB7CisJCQkvKiBJZiB3ZSBhcmUgZG9pbmcgYSAwIHRpbWVvdXQgd2FpdCBhbmQg d2UgZ290CisJCQkgKiBoZXJlLCB0aGVuIHdlIGp1c3QgdGltZWQgb3V0LgorCQkJICovCisJCQly ZXQgPSAwOworCQkJZ290byBkb25lX3dhaXRpbmc7CisJCX0KKworCQlyZXQgPSBzY2hlZHVsZV90 aW1lb3V0KHJldCk7CisKKwkJaWYgKHJldCA+IDAgJiYgc2lnbmFsX3BlbmRpbmcoY3VycmVudCkp CisJCQlyZXQgPSAtRVJFU1RBUlRTWVM7CisJfSB3aGlsZSAocmV0ID4gMCk7CisKK2RvbmVfd2Fp dGluZzoKKwlfX3NldF9jdXJyZW50X3N0YXRlKFRBU0tfUlVOTklORyk7CisKK2NsZWFudXBfZW50 cmllczoKKwlmb3IgKGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworCQlpZiAoZW50cmllc1tpXS5z eW5jb2JqX2NiLmZ1bmMpCisJCQlkcm1fc3luY29ial9yZW1vdmVfY2FsbGJhY2soc3luY29ianNb aV0sCisJCQkJCQkgICAgJmVudHJpZXNbaV0uc3luY29ial9jYik7CisJCWlmIChlbnRyaWVzW2ld LmZlbmNlX2NiLmZ1bmMpCisJCQlkbWFfZmVuY2VfcmVtb3ZlX2NhbGxiYWNrKGVudHJpZXNbaV0u ZmVuY2UsCisJCQkJCQkgICZlbnRyaWVzW2ldLmZlbmNlX2NiKTsKKwkJZG1hX2ZlbmNlX3B1dChl bnRyaWVzW2ldLmZlbmNlKTsKKwl9CisJa2ZyZWUoZW50cmllcyk7CisKKwlyZXR1cm4gcmV0Owor fQorCiAvKioKICAqIGRybV90aW1lb3V0X2Fic190b19qaWZmaWVzIC0gY2FsY3VsYXRlIGppZmZp ZXMgdGltZW91dCBmcm9tIGFic29sdXRlIHZhbHVlCiAgKgpAQCAtNTQxLDQzICs3MjUsMTkgQEAg c3RhdGljIHNpZ25lZCBsb25nIGRybV90aW1lb3V0X2Fic190b19qaWZmaWVzKGludDY0X3QgdGlt ZW91dF9uc2VjKQogCXJldHVybiB0aW1lb3V0X2ppZmZpZXM2NCArIDE7CiB9CiAKLXN0YXRpYyBp bnQgZHJtX3N5bmNvYmpfd2FpdF9mZW5jZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKLQkJCQkg ICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSwKLQkJCQkgICBzdHJ1Y3QgZHJtX3N5bmNv Ympfd2FpdCAqd2FpdCwKLQkJCQkgICBzdHJ1Y3QgZG1hX2ZlbmNlICoqZmVuY2VzKQorc3RhdGlj IGludCBkcm1fc3luY29ial9hcnJheV93YWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCisJCQkJ ICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSwKKwkJCQkgIHN0cnVjdCBkcm1fc3luY29i al93YWl0ICp3YWl0LAorCQkJCSAgc3RydWN0IGRybV9zeW5jb2JqICoqc3luY29ianMpCiB7CiAJ c2lnbmVkIGxvbmcgdGltZW91dCA9IGRybV90aW1lb3V0X2Fic190b19qaWZmaWVzKHdhaXQtPnRp bWVvdXRfbnNlYyk7CiAJc2lnbmVkIGxvbmcgcmV0ID0gMDsKIAl1aW50MzJfdCBmaXJzdCA9IH4w OwogCi0JaWYgKHdhaXQtPmZsYWdzICYgRFJNX1NZTkNPQkpfV0FJVF9GTEFHU19XQUlUX0FMTCkg ewotCQl1aW50MzJfdCBpOwotCQlmb3IgKGkgPSAwOyBpIDwgd2FpdC0+Y291bnRfaGFuZGxlczsg aSsrKSB7Ci0JCQlyZXQgPSBkbWFfZmVuY2Vfd2FpdF90aW1lb3V0KGZlbmNlc1tpXSwgdHJ1ZSwg dGltZW91dCk7Ci0KLQkJCS8qIFZhcmlvdXMgZG1hX2ZlbmNlIHdhaXQgY2FsbGJhY2tzIHdpbGwg cmV0dXJuCi0JCQkgKiBFTk9FTlQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgZmVuY2UgaGFzIGFscmVh ZHkKLQkJCSAqIGJlZW4gc2lnbmFsZWQuICBXZSBuZWVkIHRvIHNhbml0aXplIHRoaXMgdG8gMCBz bwotCQkJICogd2UgZG9uJ3QgcmV0dXJuIGVhcmx5IGFuZCB0aGUgY2xpZW50IGRvZXNuJ3Qgc2Vl Ci0JCQkgKiBhbiB1bmV4cGVjdGVkIGVycm9yLgotCQkJICovCi0JCQlpZiAocmV0ID09IC1FTk9F TlQpCi0JCQkJcmV0ID0gMDsKLQotCQkJaWYgKHJldCA8IDApCi0JCQkJcmV0dXJuIHJldDsKLQkJ CWlmIChyZXQgPT0gMCkKLQkJCQlicmVhazsKLQkJCXRpbWVvdXQgPSByZXQ7Ci0JCX0KLQkJZmly c3QgPSAwOwotCX0gZWxzZSB7Ci0JCXJldCA9IGRtYV9mZW5jZV93YWl0X2FueV90aW1lb3V0KGZl bmNlcywKLQkJCQkJCSB3YWl0LT5jb3VudF9oYW5kbGVzLAotCQkJCQkJIHRydWUsIHRpbWVvdXQs Ci0JCQkJCQkgJmZpcnN0KTsKLQl9Ci0KKwlyZXQgPSBkcm1fc3luY29ial9hcnJheV93YWl0X3Rp bWVvdXQoc3luY29ianMsCisJCQkJCSAgICAgd2FpdC0+Y291bnRfaGFuZGxlcywKKwkJCQkJICAg ICB3YWl0LT5mbGFncywKKwkJCQkJICAgICB0aW1lb3V0LCAmZmlyc3QpOwogCWlmIChyZXQgPCAw KQogCQlyZXR1cm4gcmV0OwogCkBAIC01OTMsMTQgKzc1MywxNSBAQCBkcm1fc3luY29ial93YWl0 X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiB7CiAJc3RydWN0IGRy bV9zeW5jb2JqX3dhaXQgKmFyZ3MgPSBkYXRhOwogCXVpbnQzMl90ICpoYW5kbGVzOwotCXN0cnVj dCBkbWFfZmVuY2UgKipmZW5jZXM7CisJc3RydWN0IGRybV9zeW5jb2JqICoqc3luY29ianM7CiAJ aW50IHJldCA9IDA7CiAJdWludDMyX3QgaTsKIAogCWlmICghZHJtX2NvcmVfY2hlY2tfZmVhdHVy ZShkZXYsIERSSVZFUl9TWU5DT0JKKSkKIAkJcmV0dXJuIC1FTk9ERVY7CiAKLQlpZiAoYXJncy0+ ZmxhZ3MgIT0gMCAmJiBhcmdzLT5mbGFncyAhPSBEUk1fU1lOQ09CSl9XQUlUX0ZMQUdTX1dBSVRf QUxMKQorCWlmIChhcmdzLT5mbGFncyAmIH4oRFJNX1NZTkNPQkpfV0FJVF9GTEFHU19XQUlUX0FM TCB8CisJCQkgICAgRFJNX1NZTkNPQkpfV0FJVF9GTEFHU19XQUlUX0ZPUl9TVUJNSVQpKQogCQly ZXR1cm4gLUVJTlZBTDsKIAogCWlmIChhcmdzLT5jb3VudF9oYW5kbGVzID09IDApCkBAIC02MTks MjcgKzc4MCwyOCBAQCBkcm1fc3luY29ial93YWl0X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHZvaWQgKmRhdGEsCiAJCWdvdG8gZXJyX2ZyZWVfaGFuZGxlczsKIAl9CiAKLQlmZW5jZXMg PSBrY2FsbG9jKGFyZ3MtPmNvdW50X2hhbmRsZXMsCi0JCQkgc2l6ZW9mKHN0cnVjdCBkbWFfZmVu Y2UgKiksIEdGUF9LRVJORUwpOwotCWlmICghZmVuY2VzKSB7CisJc3luY29ianMgPSBrY2FsbG9j KGFyZ3MtPmNvdW50X2hhbmRsZXMsCisJCQkgICBzaXplb2Yoc3RydWN0IGRybV9zeW5jb2JqICop LCBHRlBfS0VSTkVMKTsKKwlpZiAoIXN5bmNvYmpzKSB7CiAJCXJldCA9IC1FTk9NRU07CiAJCWdv dG8gZXJyX2ZyZWVfaGFuZGxlczsKIAl9CiAKIAlmb3IgKGkgPSAwOyBpIDwgYXJncy0+Y291bnRf aGFuZGxlczsgaSsrKSB7Ci0JCXJldCA9IGRybV9zeW5jb2JqX2ZpbmRfZmVuY2UoZmlsZV9wcml2 YXRlLCBoYW5kbGVzW2ldLAotCQkJCQkgICAgICZmZW5jZXNbaV0pOwotCQlpZiAocmV0KQorCQlz eW5jb2Jqc1tpXSA9IGRybV9zeW5jb2JqX2ZpbmQoZmlsZV9wcml2YXRlLCBoYW5kbGVzW2ldKTsK KwkJaWYgKCFzeW5jb2Jqc1tpXSkgeworCQkJcmV0ID0gLUVOT0VOVDsKIAkJCWdvdG8gZXJyX2Zy ZWVfZmVuY2VfYXJyYXk7CisJCX0KIAl9CiAKLQlyZXQgPSBkcm1fc3luY29ial93YWl0X2ZlbmNl cyhkZXYsIGZpbGVfcHJpdmF0ZSwKLQkJCQkgICAgICBhcmdzLCBmZW5jZXMpOworCXJldCA9IGRy bV9zeW5jb2JqX2FycmF5X3dhaXQoZGV2LCBmaWxlX3ByaXZhdGUsCisJCQkJICAgICBhcmdzLCBz eW5jb2Jqcyk7CiAKIGVycl9mcmVlX2ZlbmNlX2FycmF5OgotCWZvciAoaSA9IDA7IGkgPCBhcmdz LT5jb3VudF9oYW5kbGVzOyBpKyspCi0JCWRtYV9mZW5jZV9wdXQoZmVuY2VzW2ldKTsKLQlrZnJl ZShmZW5jZXMpOworCXdoaWxlIChpLS0gPiAwKQorCQlkcm1fc3luY29ial9wdXQoc3luY29ianNb aV0pOworCWtmcmVlKHN5bmNvYmpzKTsKIGVycl9mcmVlX2hhbmRsZXM6CiAJa2ZyZWUoaGFuZGxl cyk7CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmggYi9pbmNsdWRlL3VhcGkv ZHJtL2RybS5oCmluZGV4IDRiMzAxYjQuLmY4ZWM4ZmUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFw aS9kcm0vZHJtLmgKKysrIGIvaW5jbHVkZS91YXBpL2RybS9kcm0uaApAQCAtNzE5LDYgKzcxOSw3 IEBAIHN0cnVjdCBkcm1fc3luY29ial9oYW5kbGUgewogfTsKIAogI2RlZmluZSBEUk1fU1lOQ09C Sl9XQUlUX0ZMQUdTX1dBSVRfQUxMICgxIDw8IDApCisjZGVmaW5lIERSTV9TWU5DT0JKX1dBSVRf RkxBR1NfV0FJVF9GT1JfU1VCTUlUICgxIDw8IDEpCiBzdHJ1Y3QgZHJtX3N5bmNvYmpfd2FpdCB7 CiAJX191NjQgaGFuZGxlczsKIAkvKiBhYnNvbHV0ZSB0aW1lb3V0ICovCi0tIAoyLjUuMC40MDAu Z2ZmODZmYWYKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=