From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jason Ekstrand Subject: [PATCH 9/9] drm/syncobj: Allow wait for submit and signal behavior Date: Tue, 8 Aug 2017 15:46:09 -0700 Message-ID: <1502232369-19753-10-git-send-email-jason.ekstrand@intel.com> References: <1502232369-19753-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-x241.google.com (mail-pg0-x241.google.com [IPv6:2607:f8b0:400e:c05::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7269D6E27F for ; Tue, 8 Aug 2017 22:46:46 +0000 (UTC) Received: by mail-pg0-x241.google.com with SMTP id l64so4270399pge.2 for ; Tue, 08 Aug 2017 15:46:46 -0700 (PDT) In-Reply-To: <1502232369-19753-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 , 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 eW91IGNhbgplYXNpbHkgZ2V0IHRoZSBWdWxrYW4gYmVoYXZpb3IuCgpTaWduZWQtb2ZmLWJ5OiBK YXNvbiBFa3N0cmFuZCA8amFzb25Aamxla3N0cmFuZC5uZXQ+Ci0tLQogZHJpdmVycy9ncHUvZHJt L2RybV9zeW5jb2JqLmMgfCAzMTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KystLS0tCiBpbmNsdWRlL3VhcGkvZHJtL2RybS5oICAgICAgICB8ICAgMSArCiAyIGZpbGVzIGNo YW5nZWQsIDI5MyBpbnNlcnRpb25zKCspLCAyNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29i ai5jCmluZGV4IDUxMGRmYzIuLmVjZmM0M2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9k cm1fc3luY29iai5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jCkBAIC01MSw2 ICs1MSw3IEBACiAjaW5jbHVkZSA8bGludXgvZnMuaD4KICNpbmNsdWRlIDxsaW51eC9hbm9uX2lu b2Rlcy5oPgogI2luY2x1ZGUgPGxpbnV4L3N5bmNfZmlsZS5oPgorI2luY2x1ZGUgPGxpbnV4L3Nj aGVkL3NpZ25hbC5oPgogCiAjaW5jbHVkZSAiZHJtX2ludGVybmFsLmgiCiAjaW5jbHVkZSA8ZHJt L2RybV9zeW5jb2JqLmg+CkBAIC0xMDQsNiArMTA1LDI3IEBAIHN0YXRpYyB2b2lkIGRybV9zeW5j b2JqX2FkZF9jYWxsYmFja19sb2NrZWQoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLAogCWxp c3RfYWRkX3RhaWwoJmNiLT5ub2RlLCAmc3luY29iai0+Y2JfbGlzdCk7CiB9CiAKK3N0YXRpYyBp bnQgZHJtX3N5bmNvYmpfZmVuY2VfZ2V0X29yX2FkZF9jYWxsYmFjayhzdHJ1Y3QgZHJtX3N5bmNv YmogKnN5bmNvYmosCisJCQkJCQkgc3RydWN0IGRtYV9mZW5jZSAqKmZlbmNlLAorCQkJCQkJIHN0 cnVjdCBkcm1fc3luY29ial9jYiAqY2IsCisJCQkJCQkgZHJtX3N5bmNvYmpfZnVuY190IGZ1bmMp Cit7CisJaW50IHJldDsKKworCXNwaW5fbG9jaygmc3luY29iai0+bG9jayk7CisJaWYgKHN5bmNv YmotPmZlbmNlKSB7CisJCSpmZW5jZSA9IGRtYV9mZW5jZV9nZXQoc3luY29iai0+ZmVuY2UpOwor CQlyZXQgPSAxOworCX0gZWxzZSB7CisJCSpmZW5jZSA9IE5VTEw7CisJCWRybV9zeW5jb2JqX2Fk ZF9jYWxsYmFja19sb2NrZWQoc3luY29iaiwgY2IsIGZ1bmMpOworCQlyZXQgPSAwOworCX0KKwlz cGluX3VubG9jaygmc3luY29iai0+bG9jayk7CisKKwlyZXR1cm4gcmV0OworfQorCiAvKioKICAq IGRybV9zeW5jb2JqX2FkZF9jYWxsYmFjayAtIGFkZHMgYSBjYWxsYmFjayB0byBzeW5jb2JqOjpj Yl9saXN0CiAgKiBAc3luY29iajogU3luYyBvYmplY3QgdG8gd2hpY2ggdG8gYWRkIHRoZSBjYWxs YmFjawpAQCAtNTI2LDYgKzU0OCwyNTUgQEAgZHJtX3N5bmNvYmpfZmRfdG9faGFuZGxlX2lvY3Rs KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCQkJCSZhcmdzLT5oYW5kbGUp OwogfQogCitzdGF0aWMgaW50IGRybV9zeW5jb2JqX3NpZ25hbGVkKHN0cnVjdCBkcm1fc3luY29i aiAqc3luY29iaiwKKwkJCQl1aW50MzJfdCB3YWl0X2ZsYWdzKQoreworCXN0cnVjdCBkbWFfZmVu Y2UgKmZlbmNlOworCWludCByZXQ7CisKKwlmZW5jZSA9IGRybV9zeW5jb2JqX2ZlbmNlX2dldChz eW5jb2JqKTsKKwlpZiAoIWZlbmNlKSB7CisJCWlmICh3YWl0X2ZsYWdzICYgRFJNX1NZTkNPQkpf V0FJVF9GTEFHU19XQUlUX0ZPUl9TVUJNSVQpCisJCQlyZXR1cm4gMDsKKwkJZWxzZQorCQkJcmV0 dXJuIC1FSU5WQUw7CisJfQorCisJcmV0ID0gZG1hX2ZlbmNlX2lzX3NpZ25hbGVkKGZlbmNlKSA/ IDEgOiAwOworCisJZG1hX2ZlbmNlX3B1dChmZW5jZSk7CisKKwlyZXR1cm4gcmV0OworfQorCitz dHJ1Y3Qgc3luY29ial9nZXRfd2FpdF9jYiB7CisJc3RydWN0IGRybV9zeW5jb2JqX2NiIGJhc2U7 CisJc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrOworCXN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZTsK K307CisKK3N0YXRpYyB2b2lkIHN5bmNvYmpfZ2V0X3dhaXRfY2JfZnVuYyhzdHJ1Y3QgZHJtX3N5 bmNvYmogKnN5bmNvYmosCisJCQkJICAgICBzdHJ1Y3QgZHJtX3N5bmNvYmpfY2IgKndhaXRfY2Ip Cit7CisJc3RydWN0IHN5bmNvYmpfZ2V0X3dhaXRfY2IgKndhaXQgPQorCQljb250YWluZXJfb2Yo d2FpdF9jYiwgc3RydWN0IHN5bmNvYmpfZ2V0X3dhaXRfY2IsIGJhc2UpOworCisJLyogVGhpcyBo YXBwZW5zIGluc2lkZSB0aGUgc3luY29iaiBsb2NrICovCisJKndhaXQtPmZlbmNlID0gZG1hX2Zl bmNlX2dldChzeW5jb2JqLT5mZW5jZSk7CisJd2FrZV91cF9wcm9jZXNzKHdhaXQtPnRhc2spOwor fQorCitzdGF0aWMgc2lnbmVkIGxvbmcKK2RybV9zeW5jb2JqX2dldF9mZW5jZV93YWl0X3RpbWVv dXQoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLAorCQkJCSAgIHN0cnVjdCBkbWFfZmVuY2Ug KipmZW5jZSwKKwkJCQkgICBzaWduZWQgbG9uZyB0aW1lb3V0KQoreworCXN0cnVjdCBzeW5jb2Jq X2dldF93YWl0X2NiIGNiOworCXNpZ25lZCBsb25nIHJldDsKKworCWlmICh0aW1lb3V0ID09IDAp IHsKKwkJKmZlbmNlID0gZHJtX3N5bmNvYmpfZmVuY2VfZ2V0KHN5bmNvYmopOworCQlpZiAoKmZl bmNlKQorCQkJcmV0dXJuIDE7CisJCXJldHVybiAwOworCX0KKworCWNiLnRhc2sgPSBjdXJyZW50 OworCWNiLmZlbmNlID0gZmVuY2U7CisKKwlpZiAoZHJtX3N5bmNvYmpfZmVuY2VfZ2V0X29yX2Fk ZF9jYWxsYmFjayhzeW5jb2JqLCBmZW5jZSwgJmNiLmJhc2UsCisJCQkJCQkgIHN5bmNvYmpfZ2V0 X3dhaXRfY2JfZnVuYykpIHsKKwkJLyogV2UgZ290IHRoZSBmZW5jZSBpbW1lZGlhdGVseS4gTm8g Y2FsbGJhY2sgd2FzIGluc3RhbGxlZC4gKi8KKwkJcmV0dXJuIHRpbWVvdXQ7CisJfQorCisJcmV0 ID0gdGltZW91dDsKKwl3aGlsZSAocmV0ID4gMCkgeworCQlzZXRfY3VycmVudF9zdGF0ZShUQVNL X0lOVEVSUlVQVElCTEUpOworCisJCWlmICgqZmVuY2UpCisJCQlicmVhazsKKworCQlyZXQgPSBz Y2hlZHVsZV90aW1lb3V0KHJldCk7CisKKwkJaWYgKHJldCA+IDAgJiYgc2lnbmFsX3BlbmRpbmco Y3VycmVudCkpCisJCQlyZXQgPSAtRVJFU1RBUlRTWVM7CisJfQorCisJX19zZXRfY3VycmVudF9z dGF0ZShUQVNLX1JVTk5JTkcpOworCisJZHJtX3N5bmNvYmpfcmVtb3ZlX2NhbGxiYWNrKHN5bmNv YmosICZjYi5iYXNlKTsKKworCS8qIEl0J3MgcG9zc2libGUgdGhhdCB3ZSBnb3QgdGhlIGZlbmNl IGFmdGVyIHRpbWluZyBvdXQgb3IgZ2V0dGluZworCSAqIGludGVycnVwdGVkIGJ1dCBiZWZvcmUg cmVtb3ZpbmcgdGhlIGNhbGxiYWNrLgorCSAqLworCWlmIChyZXQgPD0gMCAmJiAqZmVuY2UpCisJ ICAgIHJldCA9IDE7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgc2lnbmVkIGxvbmcgZHJt X3N5bmNvYmpfd2FpdF90aW1lb3V0KHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwKKwkJCQkJ ICAgIHVpbnQzMl90IGZsYWdzLAorCQkJCQkgICAgc2lnbmVkIGxvbmcgdGltZW91dCkKK3sKKwlz dHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZTsKKwlzaWduZWQgbG9uZyByZXQ7CisKKwlpZiAodGltZW91 dCA9PSAwKQorCQlyZXR1cm4gZHJtX3N5bmNvYmpfc2lnbmFsZWQoc3luY29iaiwgZmxhZ3MpOwor CisJaWYgKGZsYWdzICYgRFJNX1NZTkNPQkpfV0FJVF9GTEFHU19XQUlUX0ZPUl9TVUJNSVQpIHsK KwkJcmV0ID0gZHJtX3N5bmNvYmpfZ2V0X2ZlbmNlX3dhaXRfdGltZW91dChzeW5jb2JqLCAmZmVu Y2UsCisJCQkJCQkJIHRpbWVvdXQpOworCQlpZiAocmV0IDw9IDApCisJCQlyZXR1cm4gcmV0Owor CQl0aW1lb3V0ID0gcmV0OworCX0gZWxzZSB7CisJCWZlbmNlID0gZHJtX3N5bmNvYmpfZmVuY2Vf Z2V0KHN5bmNvYmopOworCX0KKworCWlmICghZmVuY2UpCisJCXJldHVybiAtRUlOVkFMOworCisJ cmV0ID0gZG1hX2ZlbmNlX3dhaXRfdGltZW91dChmZW5jZSwgdHJ1ZSwgdGltZW91dCk7CisKKwkv KiBWYXJpb3VzIGRtYV9mZW5jZSB3YWl0IGNhbGxiYWNrcyB3aWxsIHJldHVybiBFTk9FTlQgdG8g aW5kaWNhdGUKKwkgKiB0aGF0IHRoZSBmZW5jZSBoYXMgYWxyZWFkeSBiZWVuIHNpZ25hbGVkLiAg V2Ugc2FuaXRpemUgdGhpcyBhcworCSAqIHJldHVybmluZyB3aXRoIGFsbCBvZiB0aGUgdGltZSBs ZWZ0LgorCSAqLworCWlmIChyZXQgPT0gLUVOT0VOVCkKKwkJcmV0ID0gdGltZW91dDsKKworCWRt YV9mZW5jZV9wdXQoZmVuY2UpOworCisJcmV0dXJuIHJldDsKK30KKworc3RydWN0IHN5bmNvYmpf d2FpdF9hbnlfZW50cnkgeworCXN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzazsKKwlzdHJ1Y3QgZG1h X2ZlbmNlICpmZW5jZTsKKwlzdHJ1Y3QgZG1hX2ZlbmNlX2NiIGZlbmNlX2NiOworCXN0cnVjdCBk cm1fc3luY29ial9jYiBzeW5jb2JqX2NiOworfTsKKworc3RhdGljIHZvaWQgc3luY29ial93YWl0 X2FueV9mZW5jZV9mdW5jKHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlLAorCQkJCQlzdHJ1Y3QgZG1h X2ZlbmNlX2NiICpjYikKK3sKKwlzdHJ1Y3Qgc3luY29ial93YWl0X2FueV9lbnRyeSAqd2FpdCA9 CisJCWNvbnRhaW5lcl9vZihjYiwgc3RydWN0IHN5bmNvYmpfd2FpdF9hbnlfZW50cnksIGZlbmNl X2NiKTsKKworCXdha2VfdXBfcHJvY2Vzcyh3YWl0LT50YXNrKTsKK30KKworc3RhdGljIHZvaWQg c3luY29ial93YWl0X2FueV9zeW5jb2JqX2Z1bmMoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2Jq LAorCQkJCQkgIHN0cnVjdCBkcm1fc3luY29ial9jYiAqY2IpCit7CisJc3RydWN0IHN5bmNvYmpf d2FpdF9hbnlfZW50cnkgKndhaXQgPQorCQljb250YWluZXJfb2YoY2IsIHN0cnVjdCBzeW5jb2Jq X3dhaXRfYW55X2VudHJ5LCBzeW5jb2JqX2NiKTsKKworCS8qIFRoaXMgaGFwcGVucyBpbnNpZGUg dGhlIHN5bmNvYmogbG9jayAqLworCXdhaXQtPmZlbmNlID0gZG1hX2ZlbmNlX2dldChzeW5jb2Jq LT5mZW5jZSk7CisJd2FrZV91cF9wcm9jZXNzKHdhaXQtPnRhc2spOworfQorCitzdGF0aWMgc2ln bmVkIGxvbmcgZHJtX3N5bmNvYmpfd2FpdF9hbnlfdGltZW91dChzdHJ1Y3QgZHJtX3N5bmNvYmog KipzeW5jb2JqcywKKwkJCQkJCXVpbnQzMl90IGNvdW50LAorCQkJCQkJdWludDMyX3QgZmxhZ3Ms CisJCQkJCQlzaWduZWQgbG9uZyB0aW1lb3V0LAorCQkJCQkJdWludDMyX3QgKmlkeCkKK3sKKwlz dHJ1Y3Qgc3luY29ial93YWl0X2FueV9lbnRyeSAqZW50cmllczsKKwlzdHJ1Y3QgZG1hX2ZlbmNl ICpmZW5jZTsKKwlzaWduZWQgbG9uZyByZXQ7CisJdWludDMyX3QgaTsKKworCWlmICh0aW1lb3V0 ID09IDApIHsKKwkJZm9yIChpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKwkJCXJldCA9IGRybV9z eW5jb2JqX3NpZ25hbGVkKHN5bmNvYmpzW2ldLCBmbGFncyk7CisJCQlpZiAocmV0IDwgMCkKKwkJ CQlyZXR1cm4gcmV0OworCQkJaWYgKHJldCA9PSAwKQorCQkJCWNvbnRpbnVlOworCQkJaWYgKGlk eCkKKwkJCQkqaWR4ID0gaTsKKwkJCXJldHVybiAxOworCQl9CisKKwkJcmV0dXJuIDA7CisJfQor CisJZW50cmllcyA9IGtjYWxsb2MoY291bnQsIHNpemVvZigqZW50cmllcyksIEdGUF9LRVJORUwp OworCWlmICghZW50cmllcykKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlmb3IgKGkgPSAwOyBpIDwg Y291bnQ7ICsraSkgeworCQllbnRyaWVzW2ldLnRhc2sgPSBjdXJyZW50OworCisJCWlmIChmbGFn cyAmIERSTV9TWU5DT0JKX1dBSVRfRkxBR1NfV0FJVF9GT1JfU1VCTUlUKSB7CisJCQlkcm1fc3lu Y29ial9mZW5jZV9nZXRfb3JfYWRkX2NhbGxiYWNrKHN5bmNvYmpzW2ldLAorCQkJCQkJCSAgICAg ICZlbnRyaWVzW2ldLmZlbmNlLAorCQkJCQkJCSAgICAgICZlbnRyaWVzW2ldLnN5bmNvYmpfY2Is CisJCQkJCQkJICAgICAgc3luY29ial93YWl0X2FueV9zeW5jb2JqX2Z1bmMpOworCQl9IGVsc2Ug eworCQkJZW50cmllc1tpXS5mZW5jZSA9IGRybV9zeW5jb2JqX2ZlbmNlX2dldChzeW5jb2Jqc1tp XSk7CisJCQlpZiAoIWVudHJpZXNbaV0uZmVuY2UpIHsKKwkJCQlyZXQgPSAtRUlOVkFMOworCQkJ CWdvdG8gZXJyX2NsZWFudXBfZW50cmllczsKKwkJCX0KKwkJfQorCX0KKworCXJldCA9IHRpbWVv dXQ7CisJd2hpbGUgKHJldCA+IDApIHsKKwkJZm9yIChpID0gMDsgaSA8IGNvdW50OyArK2kpIHsK KwkJCWZlbmNlID0gZW50cmllc1tpXS5mZW5jZTsKKwkJCWlmICghZmVuY2UpCisJCQkJY29udGlu dWU7CisKKwkJCWlmIChkbWFfZmVuY2VfaXNfc2lnbmFsZWQoZmVuY2UpKSB7CisJCQkJaWYgKGlk eCkKKwkJCQkJKmlkeCA9IGk7CisJCQkJZ290byBkb25lX3dhaXRpbmc7CisJCQl9CisKKwkJCWlm ICghZW50cmllc1tpXS5mZW5jZV9jYi5mdW5jICYmCisJCQkgICAgZG1hX2ZlbmNlX2FkZF9jYWxs YmFjayhmZW5jZSwKKwkJCQkJCSAgICZlbnRyaWVzW2ldLmZlbmNlX2NiLAorCQkJCQkJICAgc3lu Y29ial93YWl0X2FueV9mZW5jZV9mdW5jKSkgeworCQkJCS8qIFRoZSBmZW5jZSBpcyBhbHJlYWR5 IHNpZ25hbGVkICovCisJCQkJaWYgKGlkeCkKKwkJCQkJKmlkeCA9IGk7CisJCQkJZ290byBkb25l X3dhaXRpbmc7CisJCQl9CisJCX0KKworCQlzZXRfY3VycmVudF9zdGF0ZShUQVNLX0lOVEVSUlVQ VElCTEUpOworCisJCXJldCA9IHNjaGVkdWxlX3RpbWVvdXQocmV0KTsKKworCQlpZiAocmV0ID4g MCAmJiBzaWduYWxfcGVuZGluZyhjdXJyZW50KSkKKwkJCXJldCA9IC1FUkVTVEFSVFNZUzsKKwl9 CisKK2RvbmVfd2FpdGluZzoKKwlfX3NldF9jdXJyZW50X3N0YXRlKFRBU0tfUlVOTklORyk7CisK K2Vycl9jbGVhbnVwX2VudHJpZXM6CisJZm9yIChpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKwkJ aWYgKGVudHJpZXNbaV0uc3luY29ial9jYi5mdW5jKQorCQkJZHJtX3N5bmNvYmpfcmVtb3ZlX2Nh bGxiYWNrKHN5bmNvYmpzW2ldLAorCQkJCQkJICAgICZlbnRyaWVzW2ldLnN5bmNvYmpfY2IpOwor CQlpZiAoZW50cmllc1tpXS5mZW5jZV9jYi5mdW5jKQorCQkJZG1hX2ZlbmNlX3JlbW92ZV9jYWxs YmFjayhlbnRyaWVzW2ldLmZlbmNlLAorCQkJCQkJICAmZW50cmllc1tpXS5mZW5jZV9jYik7CisJ CWRtYV9mZW5jZV9wdXQoZW50cmllc1tpXS5mZW5jZSk7CisJfQorCWtmcmVlKGVudHJpZXMpOwor CisJcmV0dXJuIHJldDsKK30KKwogLyoqCiAgKiBkcm1fdGltZW91dF9hYnNfdG9famlmZmllcyAt IGNhbGN1bGF0ZSBqaWZmaWVzIHRpbWVvdXQgZnJvbSBhYnNvbHV0ZSB2YWx1ZQogICoKQEAgLTU2 MSw3ICs4MzIsNyBAQCBzdGF0aWMgc2lnbmVkIGxvbmcgZHJtX3RpbWVvdXRfYWJzX3RvX2ppZmZp ZXMoaW50NjRfdCB0aW1lb3V0X25zZWMpCiBzdGF0aWMgaW50IGRybV9zeW5jb2JqX3dhaXRfZmVu Y2VzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkJICAgc3RydWN0IGRybV9maWxlICpmaWxl X3ByaXZhdGUsCiAJCQkJICAgc3RydWN0IGRybV9zeW5jb2JqX3dhaXQgKndhaXQsCi0JCQkJICAg c3RydWN0IGRtYV9mZW5jZSAqKmZlbmNlcykKKwkJCQkgICBzdHJ1Y3QgZHJtX3N5bmNvYmogKipz eW5jb2JqcykKIHsKIAlzaWduZWQgbG9uZyB0aW1lb3V0ID0gZHJtX3RpbWVvdXRfYWJzX3RvX2pp ZmZpZXMod2FpdC0+dGltZW91dF9uc2VjKTsKIAlzaWduZWQgbG9uZyByZXQgPSAwOwpAQCAtNTcw LDE3ICs4NDEsOSBAQCBzdGF0aWMgaW50IGRybV9zeW5jb2JqX3dhaXRfZmVuY2VzKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCiAJaWYgKHdhaXQtPmZsYWdzICYgRFJNX1NZTkNPQkpfV0FJVF9GTEFH U19XQUlUX0FMTCkgewogCQl1aW50MzJfdCBpOwogCQlmb3IgKGkgPSAwOyBpIDwgd2FpdC0+Y291 bnRfaGFuZGxlczsgaSsrKSB7Ci0JCQlyZXQgPSBkbWFfZmVuY2Vfd2FpdF90aW1lb3V0KGZlbmNl c1tpXSwgdHJ1ZSwgdGltZW91dCk7Ci0KLQkJCS8qIFZhcmlvdXMgZG1hX2ZlbmNlIHdhaXQgY2Fs bGJhY2tzIHdpbGwgcmV0dXJuCi0JCQkgKiBFTk9FTlQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgZmVu Y2UgaGFzIGFscmVhZHkKLQkJCSAqIGJlZW4gc2lnbmFsZWQuICBXZSBuZWVkIHRvIHNhbml0aXpl IHRoaXMgdG8gMCBzbwotCQkJICogd2UgZG9uJ3QgcmV0dXJuIGVhcmx5IGFuZCB0aGUgY2xpZW50 IGRvZXNuJ3Qgc2VlCi0JCQkgKiBhbiB1bmV4cGVjdGVkIGVycm9yLgotCQkJICovCi0JCQlpZiAo cmV0ID09IC1FTk9FTlQpCi0JCQkJcmV0ID0gMDsKLQorCQkJcmV0ID0gZHJtX3N5bmNvYmpfd2Fp dF90aW1lb3V0KHN5bmNvYmpzW2ldLAorCQkJCQkJICAgICAgIHdhaXQtPmZsYWdzLAorCQkJCQkJ ICAgICAgIHRpbWVvdXQpOwogCQkJaWYgKHJldCA8IDApCiAJCQkJcmV0dXJuIHJldDsKIAkJCWlm IChyZXQgPT0gMCkKQEAgLTU4OSwxMCArODUyLDEwIEBAIHN0YXRpYyBpbnQgZHJtX3N5bmNvYmpf d2FpdF9mZW5jZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJfQogCQlmaXJzdCA9IDA7CiAJ fSBlbHNlIHsKLQkJcmV0ID0gZG1hX2ZlbmNlX3dhaXRfYW55X3RpbWVvdXQoZmVuY2VzLAotCQkJ CQkJIHdhaXQtPmNvdW50X2hhbmRsZXMsCi0JCQkJCQkgdHJ1ZSwgdGltZW91dCwKLQkJCQkJCSAm Zmlyc3QpOworCQlyZXQgPSBkcm1fc3luY29ial93YWl0X2FueV90aW1lb3V0KHN5bmNvYmpzLAor CQkJCQkJICAgd2FpdC0+Y291bnRfaGFuZGxlcywKKwkJCQkJCSAgIHdhaXQtPmZsYWdzLAorCQkJ CQkJICAgdGltZW91dCwgJmZpcnN0KTsKIAl9CiAKIAlpZiAocmV0IDwgMCkKQEAgLTYxMCwxNCAr ODczLDE1IEBAIGRybV9zeW5jb2JqX3dhaXRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg dm9pZCAqZGF0YSwKIHsKIAlzdHJ1Y3QgZHJtX3N5bmNvYmpfd2FpdCAqYXJncyA9IGRhdGE7CiAJ dWludDMyX3QgKmhhbmRsZXM7Ci0Jc3RydWN0IGRtYV9mZW5jZSAqKmZlbmNlczsKKwlzdHJ1Y3Qg ZHJtX3N5bmNvYmogKipzeW5jb2JqczsKIAlpbnQgcmV0ID0gMDsKIAl1aW50MzJfdCBpOwogCiAJ aWYgKCFkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX1NZTkNPQkopKQogCQlyZXR1 cm4gLUVOT0RFVjsKIAotCWlmIChhcmdzLT5mbGFncyAhPSAwICYmIGFyZ3MtPmZsYWdzICE9IERS TV9TWU5DT0JKX1dBSVRfRkxBR1NfV0FJVF9BTEwpCisJaWYgKGFyZ3MtPmZsYWdzICYgfihEUk1f U1lOQ09CSl9XQUlUX0ZMQUdTX1dBSVRfQUxMIHwKKwkJCSAgICBEUk1fU1lOQ09CSl9XQUlUX0ZM QUdTX1dBSVRfRk9SX1NVQk1JVCkpCiAJCXJldHVybiAtRUlOVkFMOwogCiAJaWYgKGFyZ3MtPmNv dW50X2hhbmRsZXMgPT0gMCkKQEAgLTYzNiwyNyArOTAwLDI4IEBAIGRybV9zeW5jb2JqX3dhaXRf aW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJZ290byBlcnJfZnJl ZV9oYW5kbGVzOwogCX0KIAotCWZlbmNlcyA9IGtjYWxsb2MoYXJncy0+Y291bnRfaGFuZGxlcywK LQkJCSBzaXplb2Yoc3RydWN0IGRtYV9mZW5jZSAqKSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFmZW5j ZXMpIHsKKwlzeW5jb2JqcyA9IGtjYWxsb2MoYXJncy0+Y291bnRfaGFuZGxlcywKKwkJCSAgIHNp emVvZihzdHJ1Y3QgZHJtX3N5bmNvYmogKiksIEdGUF9LRVJORUwpOworCWlmICghc3luY29ianMp IHsKIAkJcmV0ID0gLUVOT01FTTsKIAkJZ290byBlcnJfZnJlZV9oYW5kbGVzOwogCX0KIAogCWZv ciAoaSA9IDA7IGkgPCBhcmdzLT5jb3VudF9oYW5kbGVzOyBpKyspIHsKLQkJcmV0ID0gZHJtX3N5 bmNvYmpfZmluZF9mZW5jZShmaWxlX3ByaXZhdGUsIGhhbmRsZXNbaV0sCi0JCQkJCSAgICAgJmZl bmNlc1tpXSk7Ci0JCWlmIChyZXQpCisJCXN5bmNvYmpzW2ldID0gZHJtX3N5bmNvYmpfZmluZChm aWxlX3ByaXZhdGUsIGhhbmRsZXNbaV0pOworCQlpZiAoIXN5bmNvYmpzW2ldKSB7CisJCQlyZXQg PSAtRU5PRU5UOwogCQkJZ290byBlcnJfZnJlZV9mZW5jZV9hcnJheTsKKwkJfQogCX0KIAogCXJl dCA9IGRybV9zeW5jb2JqX3dhaXRfZmVuY2VzKGRldiwgZmlsZV9wcml2YXRlLAotCQkJCSAgICAg IGFyZ3MsIGZlbmNlcyk7CisJCQkJICAgICAgYXJncywgc3luY29ianMpOwogCiBlcnJfZnJlZV9m ZW5jZV9hcnJheToKIAlmb3IgKGkgPSAwOyBpIDwgYXJncy0+Y291bnRfaGFuZGxlczsgaSsrKQot CQlkbWFfZmVuY2VfcHV0KGZlbmNlc1tpXSk7Ci0Ja2ZyZWUoZmVuY2VzKTsKKwkJZHJtX3N5bmNv YmpfcHV0KHN5bmNvYmpzW2ldKTsKKwlrZnJlZShzeW5jb2Jqcyk7CiBlcnJfZnJlZV9oYW5kbGVz OgogCWtmcmVlKGhhbmRsZXMpOwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvZHJtL2RybS5o IGIvaW5jbHVkZS91YXBpL2RybS9kcm0uaAppbmRleCA0YjMwMWI0Li5mOGVjOGZlIDEwMDY0NAot LS0gYS9pbmNsdWRlL3VhcGkvZHJtL2RybS5oCisrKyBiL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmgK QEAgLTcxOSw2ICs3MTksNyBAQCBzdHJ1Y3QgZHJtX3N5bmNvYmpfaGFuZGxlIHsKIH07CiAKICNk ZWZpbmUgRFJNX1NZTkNPQkpfV0FJVF9GTEFHU19XQUlUX0FMTCAoMSA8PCAwKQorI2RlZmluZSBE Uk1fU1lOQ09CSl9XQUlUX0ZMQUdTX1dBSVRfRk9SX1NVQk1JVCAoMSA8PCAxKQogc3RydWN0IGRy bV9zeW5jb2JqX3dhaXQgewogCV9fdTY0IGhhbmRsZXM7CiAJLyogYWJzb2x1dGUgdGltZW91dCAq LwotLSAKMi41LjAuNDAwLmdmZjg2ZmFmCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9kcmktZGV2ZWwK