From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jason Ekstrand Subject: [PATCH] drm/syncobj: Allow wait for submit and signal behavior (v2) Date: Wed, 9 Aug 2017 10:00:54 -0700 Message-ID: <1502298054-12260-1-git-send-email-jason.ekstrand@intel.com> References: <1502232369-19753-10-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-pf0-x241.google.com (mail-pf0-x241.google.com [IPv6:2607:f8b0:400e:c00::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id 467656E372 for ; Wed, 9 Aug 2017 17:01:05 +0000 (UTC) Received: by mail-pf0-x241.google.com with SMTP id t83so6665113pfj.3 for ; Wed, 09 Aug 2017 10:01:05 -0700 (PDT) In-Reply-To: <1502232369-19753-10-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 YW5kIHdhaXQtYW55IGNhc2VzCgpTaWduZWQtb2ZmLWJ5OiBKYXNvbiBFa3N0cmFuZCA8amFzb25A amxla3N0cmFuZC5uZXQ+CkNjOiBEYXZlIEFpcmxpZSA8YWlybGllZEByZWRoYXQuY29tPgotLS0K CkkgcmVhbGl6ZWQgdG9kYXkgKHRoaXMgaXMgd2hhdCBoYXBwZW5zIHdoZW4geW91IHNsZWVwKSB0 aGF0IGl0IHRha2VzIGFsbW9zdApubyB3b3JrIHRvIG1ha2UgdGhlIHdhaXQtYW55IHBhdGggYWxz byBoYW5kbGUgd2FpdC1hbGwuICBCeSB1bmlmeWluZyB0aGUKdHdvLCBJIGRlbGV0ZWQgb3ZlciBh IGh1bmRyZWQgbGluZXMgb2YgY29kZSBmcm9tIHRoZSBpbXBsZW1lbnRhdGlvbi4KCiBkcml2ZXJz L2dwdS9kcm0vZHJtX3N5bmNvYmouYyB8IDI0MyArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0tLS0tLS0KIGluY2x1ZGUvdWFwaS9kcm0vZHJtLmggICAgICAgIHwgICAxICsKIDIg ZmlsZXMgY2hhbmdlZCwgMTk5IGluc2VydGlvbnMoKyksIDQ1IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jIGIvZHJpdmVycy9ncHUvZHJtL2Ry bV9zeW5jb2JqLmMKaW5kZXggNTEwZGZjMi4uNWU3ZjY1NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2RybV9zeW5jb2JqLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMK QEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlIDxsaW51eC9mcy5oPgogI2luY2x1ZGUgPGxpbnV4 L2Fub25faW5vZGVzLmg+CiAjaW5jbHVkZSA8bGludXgvc3luY19maWxlLmg+CisjaW5jbHVkZSA8 bGludXgvc2NoZWQvc2lnbmFsLmg+CiAKICNpbmNsdWRlICJkcm1faW50ZXJuYWwuaCIKICNpbmNs dWRlIDxkcm0vZHJtX3N5bmNvYmouaD4KQEAgLTEwNCw2ICsxMDUsMjcgQEAgc3RhdGljIHZvaWQg ZHJtX3N5bmNvYmpfYWRkX2NhbGxiYWNrX2xvY2tlZChzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNv YmosCiAJbGlzdF9hZGRfdGFpbCgmY2ItPm5vZGUsICZzeW5jb2JqLT5jYl9saXN0KTsKIH0KIAor c3RhdGljIGludCBkcm1fc3luY29ial9mZW5jZV9nZXRfb3JfYWRkX2NhbGxiYWNrKHN0cnVjdCBk cm1fc3luY29iaiAqc3luY29iaiwKKwkJCQkJCSBzdHJ1Y3QgZG1hX2ZlbmNlICoqZmVuY2UsCisJ CQkJCQkgc3RydWN0IGRybV9zeW5jb2JqX2NiICpjYiwKKwkJCQkJCSBkcm1fc3luY29ial9mdW5j X3QgZnVuYykKK3sKKwlpbnQgcmV0OworCisJc3Bpbl9sb2NrKCZzeW5jb2JqLT5sb2NrKTsKKwlp ZiAoc3luY29iai0+ZmVuY2UpIHsKKwkJKmZlbmNlID0gZG1hX2ZlbmNlX2dldChzeW5jb2JqLT5m ZW5jZSk7CisJCXJldCA9IDE7CisJfSBlbHNlIHsKKwkJKmZlbmNlID0gTlVMTDsKKwkJZHJtX3N5 bmNvYmpfYWRkX2NhbGxiYWNrX2xvY2tlZChzeW5jb2JqLCBjYiwgZnVuYyk7CisJCXJldCA9IDA7 CisJfQorCXNwaW5fdW5sb2NrKCZzeW5jb2JqLT5sb2NrKTsKKworCXJldHVybiByZXQ7Cit9CisK IC8qKgogICogZHJtX3N5bmNvYmpfYWRkX2NhbGxiYWNrIC0gYWRkcyBhIGNhbGxiYWNrIHRvIHN5 bmNvYmo6OmNiX2xpc3QKICAqIEBzeW5jb2JqOiBTeW5jIG9iamVjdCB0byB3aGljaCB0byBhZGQg dGhlIGNhbGxiYWNrCkBAIC01MjYsNiArNTQ4LDE1OSBAQCBkcm1fc3luY29ial9mZF90b19oYW5k bGVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJCQkJJmFyZ3Mt PmhhbmRsZSk7CiB9CiAKK3N0YXRpYyBpbnQgZHJtX3N5bmNvYmpfc2lnbmFsZWQoc3RydWN0IGRy bV9zeW5jb2JqICpzeW5jb2JqLAorCQkJCXVpbnQzMl90IHdhaXRfZmxhZ3MpCit7CisJc3RydWN0 IGRtYV9mZW5jZSAqZmVuY2U7CisJaW50IHJldDsKKworCWZlbmNlID0gZHJtX3N5bmNvYmpfZmVu Y2VfZ2V0KHN5bmNvYmopOworCWlmICghZmVuY2UpIHsKKwkJaWYgKHdhaXRfZmxhZ3MgJiBEUk1f U1lOQ09CSl9XQUlUX0ZMQUdTX1dBSVRfRk9SX1NVQk1JVCkKKwkJCXJldHVybiAwOworCQllbHNl CisJCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlyZXQgPSBkbWFfZmVuY2VfaXNfc2lnbmFsZWQo ZmVuY2UpID8gMSA6IDA7CisKKwlkbWFfZmVuY2VfcHV0KGZlbmNlKTsKKworCXJldHVybiByZXQ7 Cit9CisKK3N0cnVjdCBzeW5jb2JqX3dhaXRfZW50cnkgeworCXN0cnVjdCB0YXNrX3N0cnVjdCAq dGFzazsKKwlzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZTsKKwlzdHJ1Y3QgZG1hX2ZlbmNlX2NiIGZl bmNlX2NiOworCXN0cnVjdCBkcm1fc3luY29ial9jYiBzeW5jb2JqX2NiOworfTsKKworc3RhdGlj IHZvaWQgc3luY29ial93YWl0X2ZlbmNlX2Z1bmMoc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UsCisJ CQkJICAgIHN0cnVjdCBkbWFfZmVuY2VfY2IgKmNiKQoreworCXN0cnVjdCBzeW5jb2JqX3dhaXRf ZW50cnkgKndhaXQgPQorCQljb250YWluZXJfb2YoY2IsIHN0cnVjdCBzeW5jb2JqX3dhaXRfZW50 cnksIGZlbmNlX2NiKTsKKworCXdha2VfdXBfcHJvY2Vzcyh3YWl0LT50YXNrKTsKK30KKworc3Rh dGljIHZvaWQgc3luY29ial93YWl0X3N5bmNvYmpfZnVuYyhzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5 bmNvYmosCisJCQkJICAgICAgc3RydWN0IGRybV9zeW5jb2JqX2NiICpjYikKK3sKKwlzdHJ1Y3Qg c3luY29ial93YWl0X2VudHJ5ICp3YWl0ID0KKwkJY29udGFpbmVyX29mKGNiLCBzdHJ1Y3Qgc3lu Y29ial93YWl0X2VudHJ5LCBzeW5jb2JqX2NiKTsKKworCS8qIFRoaXMgaGFwcGVucyBpbnNpZGUg dGhlIHN5bmNvYmogbG9jayAqLworCXdhaXQtPmZlbmNlID0gZG1hX2ZlbmNlX2dldChzeW5jb2Jq LT5mZW5jZSk7CisJd2FrZV91cF9wcm9jZXNzKHdhaXQtPnRhc2spOworfQorCitzdGF0aWMgc2ln bmVkIGxvbmcgZHJtX3N5bmNvYmpfYXJyYXlfd2FpdF90aW1lb3V0KHN0cnVjdCBkcm1fc3luY29i aiAqKnN5bmNvYmpzLAorCQkJCQkJICB1aW50MzJfdCBjb3VudCwKKwkJCQkJCSAgdWludDMyX3Qg ZmxhZ3MsCisJCQkJCQkgIHNpZ25lZCBsb25nIHRpbWVvdXQsCisJCQkJCQkgIHVpbnQzMl90ICpp ZHgpCit7CisJc3RydWN0IHN5bmNvYmpfd2FpdF9lbnRyeSAqZW50cmllczsKKwlzdHJ1Y3QgZG1h X2ZlbmNlICpmZW5jZTsKKwlzaWduZWQgbG9uZyByZXQ7CisJdWludDMyX3Qgc2lnbmFsZWRfY291 bnQsIGk7CisKKwlpZiAodGltZW91dCA9PSAwKSB7CisJCXNpZ25hbGVkX2NvdW50ID0gMDsKKwkJ Zm9yIChpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKwkJCXJldCA9IGRybV9zeW5jb2JqX3NpZ25h bGVkKHN5bmNvYmpzW2ldLCBmbGFncyk7CisJCQlpZiAocmV0IDwgMCkKKwkJCQlyZXR1cm4gcmV0 OworCQkJaWYgKHJldCA9PSAwKQorCQkJCWNvbnRpbnVlOworCQkJaWYgKHNpZ25hbGVkX2NvdW50 ID09IDAgJiYgaWR4KQorCQkJCSppZHggPSBpOworCQkJc2lnbmFsZWRfY291bnQrKzsKKwkJfQor CisJCWlmIChmbGFncyAmIERSTV9TWU5DT0JKX1dBSVRfRkxBR1NfV0FJVF9BTEwpCisJCQlyZXR1 cm4gc2lnbmFsZWRfY291bnQgPT0gY291bnQgPyAxIDogMDsKKwkJZWxzZQorCQkJcmV0dXJuIHNp Z25hbGVkX2NvdW50ID4gMCA/IDEgOiAwOworCX0KKworCWVudHJpZXMgPSBrY2FsbG9jKGNvdW50 LCBzaXplb2YoKmVudHJpZXMpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWVudHJpZXMpCisJCXJldHVy biAtRU5PTUVNOworCisJZm9yIChpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKwkJZW50cmllc1tp XS50YXNrID0gY3VycmVudDsKKworCQlpZiAoZmxhZ3MgJiBEUk1fU1lOQ09CSl9XQUlUX0ZMQUdT X1dBSVRfRk9SX1NVQk1JVCkgeworCQkJZHJtX3N5bmNvYmpfZmVuY2VfZ2V0X29yX2FkZF9jYWxs YmFjayhzeW5jb2Jqc1tpXSwKKwkJCQkJCQkgICAgICAmZW50cmllc1tpXS5mZW5jZSwKKwkJCQkJ CQkgICAgICAmZW50cmllc1tpXS5zeW5jb2JqX2NiLAorCQkJCQkJCSAgICAgIHN5bmNvYmpfd2Fp dF9zeW5jb2JqX2Z1bmMpOworCQl9IGVsc2UgeworCQkJZW50cmllc1tpXS5mZW5jZSA9IGRybV9z eW5jb2JqX2ZlbmNlX2dldChzeW5jb2Jqc1tpXSk7CisJCQlpZiAoIWVudHJpZXNbaV0uZmVuY2Up IHsKKwkJCQlyZXQgPSAtRUlOVkFMOworCQkJCWdvdG8gZXJyX2NsZWFudXBfZW50cmllczsKKwkJ CX0KKwkJfQorCX0KKworCXJldCA9IHRpbWVvdXQ7CisJd2hpbGUgKHJldCA+IDApIHsKKwkJc2ln bmFsZWRfY291bnQgPSAwOworCQlmb3IgKGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworCQkJZmVu Y2UgPSBlbnRyaWVzW2ldLmZlbmNlOworCQkJaWYgKCFmZW5jZSkKKwkJCQljb250aW51ZTsKKwor CQkJaWYgKGRtYV9mZW5jZV9pc19zaWduYWxlZChmZW5jZSkgfHwKKwkJCSAgICAoIWVudHJpZXNb aV0uZmVuY2VfY2IuZnVuYyAmJgorCQkJICAgICBkbWFfZmVuY2VfYWRkX2NhbGxiYWNrKGZlbmNl LAorCQkJCQkJICAgICZlbnRyaWVzW2ldLmZlbmNlX2NiLAorCQkJCQkJICAgIHN5bmNvYmpfd2Fp dF9mZW5jZV9mdW5jKSkpIHsKKwkJCQkvKiBUaGUgZmVuY2UgaGFzIGJlZW4gc2lnbmFsZWQgKi8K KwkJCQlpZiAoZmxhZ3MgJiBEUk1fU1lOQ09CSl9XQUlUX0ZMQUdTX1dBSVRfQUxMKSB7CisJCQkJ CXNpZ25hbGVkX2NvdW50Kys7CisJCQkJfSBlbHNlIHsKKwkJCQkJaWYgKGlkeCkKKwkJCQkJCSpp ZHggPSBpOworCQkJCQlnb3RvIGRvbmVfd2FpdGluZzsKKwkJCQl9CisJCQl9CisJCX0KKworCQlp ZiAoKGZsYWdzICYgRFJNX1NZTkNPQkpfV0FJVF9GTEFHU19XQUlUX0FMTCkgJiYKKwkJICAgIHNp Z25hbGVkX2NvdW50ID09IGNvdW50KQorCQkJZ290byBkb25lX3dhaXRpbmc7CisKKwkJc2V0X2N1 cnJlbnRfc3RhdGUoVEFTS19JTlRFUlJVUFRJQkxFKTsKKworCQlyZXQgPSBzY2hlZHVsZV90aW1l b3V0KHJldCk7CisKKwkJaWYgKHJldCA+IDAgJiYgc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpCisJ CQlyZXQgPSAtRVJFU1RBUlRTWVM7CisJfQorCitkb25lX3dhaXRpbmc6CisJX19zZXRfY3VycmVu dF9zdGF0ZShUQVNLX1JVTk5JTkcpOworCitlcnJfY2xlYW51cF9lbnRyaWVzOgorCWZvciAoaSA9 IDA7IGkgPCBjb3VudDsgKytpKSB7CisJCWlmIChlbnRyaWVzW2ldLnN5bmNvYmpfY2IuZnVuYykK KwkJCWRybV9zeW5jb2JqX3JlbW92ZV9jYWxsYmFjayhzeW5jb2Jqc1tpXSwKKwkJCQkJCSAgICAm ZW50cmllc1tpXS5zeW5jb2JqX2NiKTsKKwkJaWYgKGVudHJpZXNbaV0uZmVuY2VfY2IuZnVuYykK KwkJCWRtYV9mZW5jZV9yZW1vdmVfY2FsbGJhY2soZW50cmllc1tpXS5mZW5jZSwKKwkJCQkJCSAg JmVudHJpZXNbaV0uZmVuY2VfY2IpOworCQlkbWFfZmVuY2VfcHV0KGVudHJpZXNbaV0uZmVuY2Up OworCX0KKwlrZnJlZShlbnRyaWVzKTsKKworCXJldHVybiByZXQ7Cit9CisKIC8qKgogICogZHJt X3RpbWVvdXRfYWJzX3RvX2ppZmZpZXMgLSBjYWxjdWxhdGUgamlmZmllcyB0aW1lb3V0IGZyb20g YWJzb2x1dGUgdmFsdWUKICAqCkBAIC01NTgsNDMgKzczMywxOSBAQCBzdGF0aWMgc2lnbmVkIGxv bmcgZHJtX3RpbWVvdXRfYWJzX3RvX2ppZmZpZXMoaW50NjRfdCB0aW1lb3V0X25zZWMpCiAJcmV0 dXJuIHRpbWVvdXRfamlmZmllczY0ICsgMTsKIH0KIAotc3RhdGljIGludCBkcm1fc3luY29ial93 YWl0X2ZlbmNlcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAotCQkJCSAgIHN0cnVjdCBkcm1fZmls ZSAqZmlsZV9wcml2YXRlLAotCQkJCSAgIHN0cnVjdCBkcm1fc3luY29ial93YWl0ICp3YWl0LAot CQkJCSAgIHN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZXMpCitzdGF0aWMgaW50IGRybV9zeW5jb2Jq X2FycmF5X3dhaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCQkgIHN0cnVjdCBkcm1fZmls ZSAqZmlsZV9wcml2YXRlLAorCQkJCSAgc3RydWN0IGRybV9zeW5jb2JqX3dhaXQgKndhaXQsCisJ CQkJICBzdHJ1Y3QgZHJtX3N5bmNvYmogKipzeW5jb2JqcykKIHsKIAlzaWduZWQgbG9uZyB0aW1l b3V0ID0gZHJtX3RpbWVvdXRfYWJzX3RvX2ppZmZpZXMod2FpdC0+dGltZW91dF9uc2VjKTsKIAlz aWduZWQgbG9uZyByZXQgPSAwOwogCXVpbnQzMl90IGZpcnN0ID0gfjA7CiAKLQlpZiAod2FpdC0+ ZmxhZ3MgJiBEUk1fU1lOQ09CSl9XQUlUX0ZMQUdTX1dBSVRfQUxMKSB7Ci0JCXVpbnQzMl90IGk7 Ci0JCWZvciAoaSA9IDA7IGkgPCB3YWl0LT5jb3VudF9oYW5kbGVzOyBpKyspIHsKLQkJCXJldCA9 IGRtYV9mZW5jZV93YWl0X3RpbWVvdXQoZmVuY2VzW2ldLCB0cnVlLCB0aW1lb3V0KTsKLQotCQkJ LyogVmFyaW91cyBkbWFfZmVuY2Ugd2FpdCBjYWxsYmFja3Mgd2lsbCByZXR1cm4KLQkJCSAqIEVO T0VOVCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBmZW5jZSBoYXMgYWxyZWFkeQotCQkJICogYmVlbiBz aWduYWxlZC4gIFdlIG5lZWQgdG8gc2FuaXRpemUgdGhpcyB0byAwIHNvCi0JCQkgKiB3ZSBkb24n dCByZXR1cm4gZWFybHkgYW5kIHRoZSBjbGllbnQgZG9lc24ndCBzZWUKLQkJCSAqIGFuIHVuZXhw ZWN0ZWQgZXJyb3IuCi0JCQkgKi8KLQkJCWlmIChyZXQgPT0gLUVOT0VOVCkKLQkJCQlyZXQgPSAw OwotCi0JCQlpZiAocmV0IDwgMCkKLQkJCQlyZXR1cm4gcmV0OwotCQkJaWYgKHJldCA9PSAwKQot CQkJCWJyZWFrOwotCQkJdGltZW91dCA9IHJldDsKLQkJfQotCQlmaXJzdCA9IDA7Ci0JfSBlbHNl IHsKLQkJcmV0ID0gZG1hX2ZlbmNlX3dhaXRfYW55X3RpbWVvdXQoZmVuY2VzLAotCQkJCQkJIHdh aXQtPmNvdW50X2hhbmRsZXMsCi0JCQkJCQkgdHJ1ZSwgdGltZW91dCwKLQkJCQkJCSAmZmlyc3Qp OwotCX0KLQorCXJldCA9IGRybV9zeW5jb2JqX2FycmF5X3dhaXRfdGltZW91dChzeW5jb2JqcywK KwkJCQkJICAgICB3YWl0LT5jb3VudF9oYW5kbGVzLAorCQkJCQkgICAgIHdhaXQtPmZsYWdzLAor CQkJCQkgICAgIHRpbWVvdXQsICZmaXJzdCk7CiAJaWYgKHJldCA8IDApCiAJCXJldHVybiByZXQ7 CiAKQEAgLTYxMCwxNCArNzYxLDE1IEBAIGRybV9zeW5jb2JqX3dhaXRfaW9jdGwoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIHsKIAlzdHJ1Y3QgZHJtX3N5bmNvYmpfd2FpdCAq YXJncyA9IGRhdGE7CiAJdWludDMyX3QgKmhhbmRsZXM7Ci0Jc3RydWN0IGRtYV9mZW5jZSAqKmZl bmNlczsKKwlzdHJ1Y3QgZHJtX3N5bmNvYmogKipzeW5jb2JqczsKIAlpbnQgcmV0ID0gMDsKIAl1 aW50MzJfdCBpOwogCiAJaWYgKCFkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX1NZ TkNPQkopKQogCQlyZXR1cm4gLUVOT0RFVjsKIAotCWlmIChhcmdzLT5mbGFncyAhPSAwICYmIGFy Z3MtPmZsYWdzICE9IERSTV9TWU5DT0JKX1dBSVRfRkxBR1NfV0FJVF9BTEwpCisJaWYgKGFyZ3Mt PmZsYWdzICYgfihEUk1fU1lOQ09CSl9XQUlUX0ZMQUdTX1dBSVRfQUxMIHwKKwkJCSAgICBEUk1f U1lOQ09CSl9XQUlUX0ZMQUdTX1dBSVRfRk9SX1NVQk1JVCkpCiAJCXJldHVybiAtRUlOVkFMOwog CiAJaWYgKGFyZ3MtPmNvdW50X2hhbmRsZXMgPT0gMCkKQEAgLTYzNiwyNyArNzg4LDI4IEBAIGRy bV9zeW5jb2JqX3dhaXRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwK IAkJZ290byBlcnJfZnJlZV9oYW5kbGVzOwogCX0KIAotCWZlbmNlcyA9IGtjYWxsb2MoYXJncy0+ Y291bnRfaGFuZGxlcywKLQkJCSBzaXplb2Yoc3RydWN0IGRtYV9mZW5jZSAqKSwgR0ZQX0tFUk5F TCk7Ci0JaWYgKCFmZW5jZXMpIHsKKwlzeW5jb2JqcyA9IGtjYWxsb2MoYXJncy0+Y291bnRfaGFu ZGxlcywKKwkJCSAgIHNpemVvZihzdHJ1Y3QgZHJtX3N5bmNvYmogKiksIEdGUF9LRVJORUwpOwor CWlmICghc3luY29ianMpIHsKIAkJcmV0ID0gLUVOT01FTTsKIAkJZ290byBlcnJfZnJlZV9oYW5k bGVzOwogCX0KIAogCWZvciAoaSA9IDA7IGkgPCBhcmdzLT5jb3VudF9oYW5kbGVzOyBpKyspIHsK LQkJcmV0ID0gZHJtX3N5bmNvYmpfZmluZF9mZW5jZShmaWxlX3ByaXZhdGUsIGhhbmRsZXNbaV0s Ci0JCQkJCSAgICAgJmZlbmNlc1tpXSk7Ci0JCWlmIChyZXQpCisJCXN5bmNvYmpzW2ldID0gZHJt X3N5bmNvYmpfZmluZChmaWxlX3ByaXZhdGUsIGhhbmRsZXNbaV0pOworCQlpZiAoIXN5bmNvYmpz W2ldKSB7CisJCQlyZXQgPSAtRU5PRU5UOwogCQkJZ290byBlcnJfZnJlZV9mZW5jZV9hcnJheTsK KwkJfQogCX0KIAotCXJldCA9IGRybV9zeW5jb2JqX3dhaXRfZmVuY2VzKGRldiwgZmlsZV9wcml2 YXRlLAotCQkJCSAgICAgIGFyZ3MsIGZlbmNlcyk7CisJcmV0ID0gZHJtX3N5bmNvYmpfYXJyYXlf d2FpdChkZXYsIGZpbGVfcHJpdmF0ZSwKKwkJCQkgICAgIGFyZ3MsIHN5bmNvYmpzKTsKIAogZXJy X2ZyZWVfZmVuY2VfYXJyYXk6Ci0JZm9yIChpID0gMDsgaSA8IGFyZ3MtPmNvdW50X2hhbmRsZXM7 IGkrKykKLQkJZG1hX2ZlbmNlX3B1dChmZW5jZXNbaV0pOwotCWtmcmVlKGZlbmNlcyk7CisJd2hp bGUgKGktLSA+IDApCisJCWRybV9zeW5jb2JqX3B1dChzeW5jb2Jqc1tpXSk7CisJa2ZyZWUoc3lu Y29ianMpOwogZXJyX2ZyZWVfaGFuZGxlczoKIAlrZnJlZShoYW5kbGVzKTsKIApkaWZmIC0tZ2l0 IGEvaW5jbHVkZS91YXBpL2RybS9kcm0uaCBiL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmgKaW5kZXgg NGIzMDFiNC4uZjhlYzhmZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2RybS9kcm0uaAorKysg Yi9pbmNsdWRlL3VhcGkvZHJtL2RybS5oCkBAIC03MTksNiArNzE5LDcgQEAgc3RydWN0IGRybV9z eW5jb2JqX2hhbmRsZSB7CiB9OwogCiAjZGVmaW5lIERSTV9TWU5DT0JKX1dBSVRfRkxBR1NfV0FJ VF9BTEwgKDEgPDwgMCkKKyNkZWZpbmUgRFJNX1NZTkNPQkpfV0FJVF9GTEFHU19XQUlUX0ZPUl9T VUJNSVQgKDEgPDwgMSkKIHN0cnVjdCBkcm1fc3luY29ial93YWl0IHsKIAlfX3U2NCBoYW5kbGVz OwogCS8qIGFic29sdXRlIHRpbWVvdXQgKi8KLS0gCjIuNS4wLjQwMC5nZmY4NmZhZgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxp bmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==