From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chunming Zhou Subject: [PATCH 1/4] [RFC]drm: add syncobj timeline support v6 Date: Wed, 19 Sep 2018 12:26:56 +0800 Message-ID: <20180919042659.3769-1-david1.zhou@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Chunming Zhou , amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Daniel Rakos , Daniel Vetter , Dave Airlie , Christian Konig VGhpcyBwYXRjaCBpcyBmb3IgVktfS0hSX3RpbWVsaW5lX3NlbWFwaG9yZSBleHRlbnNpb24sIHNl bWFwaG9yZSBpcyBjYWxsZWQgc3luY29iaiBpbiBrZXJuZWwgc2lkZToKVGhpcyBleHRlbnNpb24g aW50cm9kdWNlcyBhIG5ldyB0eXBlIG9mIHN5bmNvYmogdGhhdCBoYXMgYW4gaW50ZWdlciBwYXls b2FkCmlkZW50aWZ5aW5nIGEgcG9pbnQgaW4gYSB0aW1lbGluZS4gU3VjaCB0aW1lbGluZSBzeW5j b2JqcyBzdXBwb3J0IHRoZQpmb2xsb3dpbmcgb3BlcmF0aW9uczoKICAgKiBDUFUgcXVlcnkgLSBB IGhvc3Qgb3BlcmF0aW9uIHRoYXQgYWxsb3dzIHF1ZXJ5aW5nIHRoZSBwYXlsb2FkIG9mIHRoZQog ICAgIHRpbWVsaW5lIHN5bmNvYmouCiAgICogQ1BVIHdhaXQgLSBBIGhvc3Qgb3BlcmF0aW9uIHRo YXQgYWxsb3dzIGEgYmxvY2tpbmcgd2FpdCBmb3IgYQogICAgIHRpbWVsaW5lIHN5bmNvYmogdG8g cmVhY2ggYSBzcGVjaWZpZWQgdmFsdWUuCiAgICogRGV2aWNlIHdhaXQgLSBBIGRldmljZSBvcGVy YXRpb24gdGhhdCBhbGxvd3Mgd2FpdGluZyBmb3IgYQogICAgIHRpbWVsaW5lIHN5bmNvYmogdG8g cmVhY2ggYSBzcGVjaWZpZWQgdmFsdWUuCiAgICogRGV2aWNlIHNpZ25hbCAtIEEgZGV2aWNlIG9w ZXJhdGlvbiB0aGF0IGFsbG93cyBhZHZhbmNpbmcgdGhlCiAgICAgdGltZWxpbmUgc3luY29iaiB0 byBhIHNwZWNpZmllZCB2YWx1ZS4KCnYxOgpTaW5jZSBpdCdzIGEgdGltZWxpbmUsIHRoYXQgbWVh bnMgdGhlIGZyb250IHRpbWUgcG9pbnQoUFQpIGFsd2F5cyBpcyBzaWduYWxlZCBiZWZvcmUgdGhl IGxhdGUgUFQuCmEuIHNpZ25hbCBQVCBkZXNpZ246ClNpZ25hbCBQVCBmZW5jZSBOIGRlcGVuZHMg b24gUFRbTi0xXSBmZW5jZSBhbmQgc2lnbmFsIG9wZXJ0aW9uIGZlbmNlLCB3aGVuIFBUW05dIGZl bmNlIGlzIHNpZ25hbGVkLAp0aGUgdGltZWxpbmUgd2lsbCBpbmNyZWFzZSB0byB2YWx1ZSBvZiBQ VFtOXS4KYi4gd2FpdCBQVCBkZXNpZ246CldhaXQgUFQgZmVuY2UgaXMgc2lnbmFsZWQgYnkgcmVh Y2hpbmcgdGltZWxpbmUgcG9pbnQgdmFsdWUsIHdoZW4gdGltZWxpbmUgaXMgaW5jcmVhc2luZywg d2lsbCBjb21wYXJlCndhaXQgUFRzIHZhbHVlIHdpdGggbmV3IHRpbWVsaW5lIHZhbHVlLCBpZiBQ VCB2YWx1ZSBpcyBsb3dlciB0aGFuIHRpbWVsaW5lIHZhbHVlLCB0aGVuIHdhaXQgUFQgd2lsbCBi ZQpzaWduYWxlZCwgb3RoZXJ3aXNlIGtlZXAgaW4gbGlzdC4gc3luY29iaiB3YWl0IG9wZXJhdGlv biBjYW4gd2FpdCBvbiBhbnkgcG9pbnQgb2YgdGltZWxpbmUsCnNvIG5lZWQgYSBSQiB0cmVlIHRv IG9yZGVyIHRoZW0uIEFuZCB3YWl0IFBUIGNvdWxkIGFoZWFkIG9mIHNpZ25hbCBQVCwgd2UgbmVl ZCBhIHN1bWlzc2lvbiBmZW5jZSB0bwpwZXJmb3JtIHRoYXQuCgp2MjoKMS4gcmVtb3ZlIHVudXNl ZCBEUk1fU1lOQ09CSl9DUkVBVEVfVFlQRV9OT1JNQUwuIChDaHJpc3RpYW4pCjIuIG1vdmUgdW5l eHBvc2VkIGRlbml0aW9ucyB0byAuYyBmaWxlLiAoRGFuaWVsIFZldHRlcikKMy4gc3BsaXQgdXAg dGhlIGNoYW5nZSB0byBkcm1fc3luY29ial9maW5kX2ZlbmNlKCkgaW4gYSBzZXBhcmF0ZSBwYXRj aC4gKENocmlzdGlhbikKNC4gc3BsaXQgdXAgdGhlIGNoYW5nZSB0byBkcm1fc3luY29ial9yZXBs YWNlX2ZlbmNlKCkgaW4gYSBzZXBhcmF0ZSBwYXRjaC4KNS4gZHJvcCB0aGUgc3VibWlzc2lvbl9m ZW5jZSBpbXBsZW1lbnRhdGlvbiBhbmQgaW5zdGVhZCB1c2Ugd2FpdF9ldmVudCgpIGZvciB0aGF0 LiAoQ2hyaXN0aWFuKQo2LiBXQVJOX09OKHBvaW50ICE9IDApIGZvciBOT1JNQUwgdHlwZSBzeW5j b2JqIGNhc2UuIChEYW5pZWwgVmV0dGVyKQoKdjM6CjEuIHJlcGxhY2Ugbm9ybWFsIHN5bmNvYmog d2l0aCB0aW1lbGluZSBpbXBsZW1lbmF0aW9uLiAoVmV0dGVyIGFuZCBDaHJpc3RpYW4pCiAgICBh LiBub3JtYWwgc3luY29iaiBzaWduYWwgb3Agd2lsbCBjcmVhdGUgYSBzaWduYWwgUFQgdG8gdGFp bCBvZiBzaWduYWwgcHQgbGlzdC4KICAgIGIuIG5vcm1hbCBzeW5jb2JqIHdhaXQgb3Agd2lsbCBj cmVhdGUgYSB3YWl0IHB0IHdpdGggbGFzdCBzaWduYWwgcG9pbnQsIGFuZCB0aGlzIHdhaXQgUFQg aXMgb25seSBzaWduYWxlZCBieSByZWxhdGVkIHNpZ25hbCBwb2ludCBQVC4KMi4gbWFueSBidWcg Zml4IGFuZCBjbGVhbiB1cAozLiBzdHViIGZlbmNlIG1vdmluZyBpcyBtb3ZlZCB0byBvdGhlciBw YXRjaC4KCnY077yaCjEuIGZpeCBSQiB0cmVlIGxvb3Agd2l0aCB3aGlsZShub2RlPXJiX2ZpcnN0 KC4uLikpLiAoQ2hyaXN0aWFuKQoyLiBmaXggc3luY29iaiBsaWZlY3ljbGUuIChDaHJpc3RpYW4p CjMuIG9ubHkgZW5hYmxlX3NpZ25hbGluZyB3aGVuIHRoZXJlIGlzIHdhaXRfcHQuIChDaHJpc3Rp YW4pCjQuIGZpeCB0aW1lbGluZSBwYXRoIGlzc3Vlcy4KNS4gd3JpdGUgYSB0aW1lbGluZSB0ZXN0 IGluIGxpYmRybQoKdjU6IChDaHJpc3RpYW4pCjEuIHNlbWFwaG9yZSBpcyBjYWxsZWQgc3luY29i aiBpbiBrZXJuZWwgc2lkZS4KMi4gZG9uJ3QgbmVlZCAndGltZWxpbmUnIGNoYXJhY3RlcnMgaW4g c29tZSBmdW5jdGlvbiBuYW1lLgozLiBrZWVwIHN5bmNvYmogY2IKCnY2OiAoQ2hyaXN0aWFuKQox LiBtZXJnZSBzeW5jb2JqX3RpbWVsaW5lIHRvIHN5bmNvYmogc3RydWN0dXJlCjIuIHNpbXBsaWZ5 IHNvbWUgY2hlY2sgc2VudGVuY2VzLgozLiBzb21lIG1pc2MgY2hhbmdlLgo0LiBmaXggQ1RTIGZh aWxlZCBpc3N1ZQoKbm9ybWFsIHN5bmNvYmogaXMgdGVzdGVkIGJ5IC4vZGVxcC12ayAtbiBkRVFQ LVZLKnNlbWFwaG9yZSoKdGltZWxpbmUgc3luY29iaiBpcyB0ZXN0ZWQgYnkgLi9hbWRncHVfdGVz dCAtcyA5CgpTaWduZWQtb2ZmLWJ5OiBDaHVubWluZyBaaG91IDxkYXZpZDEuemhvdUBhbWQuY29t PgpDYzogQ2hyaXN0aWFuIEtvbmlnIDxjaHJpc3RpYW4ua29lbmlnQGFtZC5jb20+CkNjOiBEYXZl IEFpcmxpZSA8YWlybGllZEByZWRoYXQuY29tPgpDYzogRGFuaWVsIFJha29zIDxEYW5pZWwuUmFr b3NAYW1kLmNvbT4KQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbEBmZndsbC5jaD4KLS0tCiBkcml2 ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYyAgICAgICAgICAgICAgfCAzMDcgKysrKysrKysrKysr KysrKysrLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgfCAg IDIgKy0KIGluY2x1ZGUvZHJtL2RybV9zeW5jb2JqLmggICAgICAgICAgICAgICAgICB8ICA2NSAr Ky0tLQogaW5jbHVkZS91YXBpL2RybS9kcm0uaCAgICAgICAgICAgICAgICAgICAgIHwgICAxICsK IDQgZmlsZXMgY2hhbmdlZCwgMjk5IGluc2VydGlvbnMoKyksIDc2IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jIGIvZHJpdmVycy9ncHUvZHJt L2RybV9zeW5jb2JqLmMKaW5kZXggZTljZTYyM2QwNDllLi45ODdiNWExMjBiNjUgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9k cm1fc3luY29iai5jCkBAIC01Niw2ICs1Niw5IEBACiAjaW5jbHVkZSAiZHJtX2ludGVybmFsLmgi CiAjaW5jbHVkZSA8ZHJtL2RybV9zeW5jb2JqLmg+CiAKKy8qIG1lcmdlIG5vcm1hbCBzeW5jb2Jq IHRvIHRpbWVsaW5lIHN5bmNvYmosIHRoZSBwb2ludCBpbnRlcnZhbCBpcyAxICovCisjZGVmaW5l IERSTV9TWU5DT0JKX0lORElWSURVQUxfUE9JTlQgMQorCiBzdHJ1Y3QgZHJtX3N5bmNvYmpfc3R1 Yl9mZW5jZSB7CiAJc3RydWN0IGRtYV9mZW5jZSBiYXNlOwogCXNwaW5sb2NrX3QgbG9jazsKQEAg LTgyLDYgKzg1LDExIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZG1hX2ZlbmNlX29wcyBkcm1fc3lu Y29ial9zdHViX2ZlbmNlX29wcyA9IHsKIAkucmVsZWFzZSA9IGRybV9zeW5jb2JqX3N0dWJfZmVu Y2VfcmVsZWFzZSwKIH07CiAKK3N0cnVjdCBkcm1fc3luY29ial9zaWduYWxfcHQgeworCXN0cnVj dCBkbWFfZmVuY2VfYXJyYXkgKmJhc2U7CisJdTY0ICAgIHZhbHVlOworCXN0cnVjdCBsaXN0X2hl YWQgbGlzdDsKK307CiAKIC8qKgogICogZHJtX3N5bmNvYmpfZmluZCAtIGxvb2t1cCBhbmQgcmVm ZXJlbmNlIGEgc3luYyBvYmplY3QuCkBAIC0xMTcsNiArMTI1LDkgQEAgc3RhdGljIHZvaWQgZHJt X3N5bmNvYmpfYWRkX2NhbGxiYWNrX2xvY2tlZChzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmos CiAJbGlzdF9hZGRfdGFpbCgmY2ItPm5vZGUsICZzeW5jb2JqLT5jYl9saXN0KTsKIH0KIAorc3Rh dGljIGludCBkcm1fc3luY29ial9zZWFyY2hfZmVuY2Uoc3RydWN0IGRybV9zeW5jb2JqICpzeW5j b2JqLCB1NjQgcG9pbnQsCisJCQkJICAgIHU2NCBmbGFncywgc3RydWN0IGRtYV9mZW5jZSAqKmZl bmNlKTsKKwogc3RhdGljIGludCBkcm1fc3luY29ial9mZW5jZV9nZXRfb3JfYWRkX2NhbGxiYWNr KHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwKIAkJCQkJCSBzdHJ1Y3QgZG1hX2ZlbmNlICoq ZmVuY2UsCiAJCQkJCQkgc3RydWN0IGRybV9zeW5jb2JqX2NiICpjYiwKQEAgLTEyNCw4ICsxMzUs OCBAQCBzdGF0aWMgaW50IGRybV9zeW5jb2JqX2ZlbmNlX2dldF9vcl9hZGRfY2FsbGJhY2soc3Ry dWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLAogewogCWludCByZXQ7CiAKLQkqZmVuY2UgPSBkcm1f c3luY29ial9mZW5jZV9nZXQoc3luY29iaik7Ci0JaWYgKCpmZW5jZSkKKwlyZXQgPSBkcm1fc3lu Y29ial9zZWFyY2hfZmVuY2Uoc3luY29iaiwgMCwgMCwgZmVuY2UpOworCWlmICghcmV0KQogCQly ZXR1cm4gMTsKIAogCXNwaW5fbG9jaygmc3luY29iai0+bG9jayk7CkBAIC0xMzMsMTAgKzE0NCwx MiBAQCBzdGF0aWMgaW50IGRybV9zeW5jb2JqX2ZlbmNlX2dldF9vcl9hZGRfY2FsbGJhY2soc3Ry dWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLAogCSAqIGhhdmUgdGhlIGxvY2ssIHRyeSBvbmUgbW9y ZSB0aW1lIGp1c3QgdG8gYmUgc3VyZSB3ZSBkb24ndCBhZGQgYQogCSAqIGNhbGxiYWNrIHdoZW4g YSBmZW5jZSBoYXMgYWxyZWFkeSBiZWVuIHNldC4KIAkgKi8KLQlpZiAoc3luY29iai0+ZmVuY2Up IHsKLQkJKmZlbmNlID0gZG1hX2ZlbmNlX2dldChyY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKHN5 bmNvYmotPmZlbmNlLAotCQkJCQkJCQkgbG9ja2RlcF9pc19oZWxkKCZzeW5jb2JqLT5sb2NrKSkp OwotCQlyZXQgPSAxOworCWlmIChmZW5jZSAmJiAhbGlzdF9lbXB0eSgmc3luY29iai0+c2lnbmFs X3B0X2xpc3QpKSB7CisJCXNwaW5fdW5sb2NrKCZzeW5jb2JqLT5sb2NrKTsKKwkJZHJtX3N5bmNv Ympfc2VhcmNoX2ZlbmNlKHN5bmNvYmosIDAsIDAsIGZlbmNlKTsKKwkJaWYgKCpmZW5jZSkKKwkJ CXJldCA9IDE7CisJCXNwaW5fbG9jaygmc3luY29iai0+bG9jayk7CiAJfSBlbHNlIHsKIAkJKmZl bmNlID0gTlVMTDsKIAkJZHJtX3N5bmNvYmpfYWRkX2NhbGxiYWNrX2xvY2tlZChzeW5jb2JqLCBj YiwgZnVuYyk7CkBAIC0xNjQsNiArMTc3LDE1MyBAQCB2b2lkIGRybV9zeW5jb2JqX3JlbW92ZV9j YWxsYmFjayhzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosCiAJc3Bpbl91bmxvY2soJnN5bmNv YmotPmxvY2spOwogfQogCitzdGF0aWMgdm9pZCBkcm1fc3luY29ial90aW1lbGluZV9pbml0KHN0 cnVjdCBkcm1fc3luY29iaiAqc3luY29iaikKK3sKKwlzcGluX2xvY2soJnN5bmNvYmotPmxvY2sp OworCXN5bmNvYmotPnRpbWVsaW5lX2NvbnRleHQgPSBkbWFfZmVuY2VfY29udGV4dF9hbGxvYygx KTsKKwlzeW5jb2JqLT50aW1lbGluZSA9IDA7CisJc3luY29iai0+c2lnbmFsX3BvaW50ID0gMDsK Kwlpbml0X3dhaXRxdWV1ZV9oZWFkKCZzeW5jb2JqLT53cSk7CisKKwlJTklUX0xJU1RfSEVBRCgm c3luY29iai0+c2lnbmFsX3B0X2xpc3QpOworCXNwaW5fdW5sb2NrKCZzeW5jb2JqLT5sb2NrKTsK K30KKworc3RhdGljIHZvaWQgZHJtX3N5bmNvYmpfdGltZWxpbmVfZmluaShzdHJ1Y3QgZHJtX3N5 bmNvYmogKnN5bmNvYmopCit7CisJc3RydWN0IGRybV9zeW5jb2JqX3NpZ25hbF9wdCAqc2lnbmFs X3B0ID0gTlVMTCwgKnRtcDsKKworCXNwaW5fbG9jaygmc3luY29iai0+bG9jayk7CisJbGlzdF9m b3JfZWFjaF9lbnRyeV9zYWZlKHNpZ25hbF9wdCwgdG1wLAorCQkJCSAmc3luY29iai0+c2lnbmFs X3B0X2xpc3QsIGxpc3QpIHsKKwkJbGlzdF9kZWwoJnNpZ25hbF9wdC0+bGlzdCk7CisJCWRtYV9m ZW5jZV9wdXQoJnNpZ25hbF9wdC0+YmFzZS0+YmFzZSk7CisJCWtmcmVlKHNpZ25hbF9wdCk7CisJ fQorCXNwaW5fdW5sb2NrKCZzeW5jb2JqLT5sb2NrKTsKK30KKworc3RhdGljIHN0cnVjdCBkbWFf ZmVuY2UKKypkcm1fc3luY29ial9maW5kX3NpZ25hbF9wdF9mb3JfcG9pbnQoc3RydWN0IGRybV9z eW5jb2JqICpzeW5jb2JqLAorCQkJCSAgICAgIHVpbnQ2NF90IHBvaW50KQoreworCXN0cnVjdCBk cm1fc3luY29ial9zaWduYWxfcHQgKnNpZ25hbF9wdDsKKworCWlmICgoc3luY29iai0+dHlwZSA9 PSBEUk1fU1lOQ09CSl9UWVBFX1RJTUVMSU5FKSAmJgorCSAgICAocG9pbnQgPD0gc3luY29iai0+ dGltZWxpbmUpKSB7CisJCXN0cnVjdCBkcm1fc3luY29ial9zdHViX2ZlbmNlICpmZW5jZSA9CisJ CQlremFsbG9jKHNpemVvZihzdHJ1Y3QgZHJtX3N5bmNvYmpfc3R1Yl9mZW5jZSksCisJCQkJR0ZQ X0tFUk5FTCk7CisKKwkJaWYgKCFmZW5jZSkKKwkJCXJldHVybiBOVUxMOworCQlzcGluX2xvY2tf aW5pdCgmZmVuY2UtPmxvY2spOworCQlkbWFfZmVuY2VfaW5pdCgmZmVuY2UtPmJhc2UsCisJCQkg ICAgICAgJmRybV9zeW5jb2JqX3N0dWJfZmVuY2Vfb3BzLAorCQkJICAgICAgICZmZW5jZS0+bG9j aywKKwkJCSAgICAgICBzeW5jb2JqLT50aW1lbGluZV9jb250ZXh0LAorCQkJICAgICAgIHBvaW50 KTsKKworCQlkbWFfZmVuY2Vfc2lnbmFsKCZmZW5jZS0+YmFzZSk7CisJCXJldHVybiAmZmVuY2Ut PmJhc2U7CisJfQorCisJbGlzdF9mb3JfZWFjaF9lbnRyeShzaWduYWxfcHQsICZzeW5jb2JqLT5z aWduYWxfcHRfbGlzdCwgbGlzdCkgeworCQlpZiAocG9pbnQgPiBzaWduYWxfcHQtPnZhbHVlKQor CQkJY29udGludWU7CisJCWlmICgoc3luY29iai0+dHlwZSA9PSBEUk1fU1lOQ09CSl9UWVBFX0lO RElWSURVQUwpICYmCisJCSAgICAocG9pbnQgIT0gc2lnbmFsX3B0LT52YWx1ZSkpCisJCQljb250 aW51ZTsKKwkJcmV0dXJuIGRtYV9mZW5jZV9nZXQoJnNpZ25hbF9wdC0+YmFzZS0+YmFzZSk7CisJ fQorCXJldHVybiBOVUxMOworfQorCitzdGF0aWMgaW50IGRybV9zeW5jb2JqX2NyZWF0ZV9zaWdu YWxfcHQoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLAorCQkJCQlzdHJ1Y3QgZG1hX2ZlbmNl ICpmZW5jZSwKKwkJCQkJdTY0IHBvaW50KQoreworCXN0cnVjdCBkcm1fc3luY29ial9zaWduYWxf cHQgKnNpZ25hbF9wdCA9CisJCWt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBkcm1fc3luY29ial9zaWdu YWxfcHQpLCBHRlBfS0VSTkVMKTsKKwlzdHJ1Y3QgZHJtX3N5bmNvYmpfc2lnbmFsX3B0ICp0YWls X3B0OworCXN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZXM7CisJaW50IG51bV9mZW5jZXMgPSAwOwor CWludCByZXQgPSAwLCBpOworCisJaWYgKCFzaWduYWxfcHQpCisJCXJldHVybiAtRU5PTUVNOwor CWlmIChzeW5jb2JqLT5zaWduYWxfcG9pbnQgPj0gcG9pbnQpIHsKKwkJRFJNX1dBUk4oIkEgbGF0 ZXIgc2lnbmFsIGlzIHJlYWR5ISIpOworCQlnb3RvIG91dDsKKwl9CisJaWYgKCFmZW5jZSkKKwkJ Z290byBvdXQ7CisKKwlmZW5jZXMgPSBrbWFsbG9jX2FycmF5KHNpemVvZih2b2lkICopLCAyLCBH RlBfS0VSTkVMKTsKKwlpZiAoIWZlbmNlcykKKwkJZ290byBvdXQ7CisJZmVuY2VzW251bV9mZW5j ZXMrK10gPSBkbWFfZmVuY2VfZ2V0KGZlbmNlKTsKKwkvKiB0aW1lbGluZSBzeW5jb2JqIG11c3Qg dGFrZSB0aGlzIGRlcGVuZGVuY3kgKi8KKwlpZiAoc3luY29iai0+dHlwZSA9PSBEUk1fU1lOQ09C Sl9UWVBFX1RJTUVMSU5FKSB7CisJCXNwaW5fbG9jaygmc3luY29iai0+bG9jayk7CisJCWlmICgh bGlzdF9lbXB0eSgmc3luY29iai0+c2lnbmFsX3B0X2xpc3QpKSB7CisJCQl0YWlsX3B0ID0gbGlz dF9sYXN0X2VudHJ5KCZzeW5jb2JqLT5zaWduYWxfcHRfbGlzdCwKKwkJCQkJCSAgc3RydWN0IGRy bV9zeW5jb2JqX3NpZ25hbF9wdCwgbGlzdCk7CisJCQlmZW5jZXNbbnVtX2ZlbmNlcysrXSA9IGRt YV9mZW5jZV9nZXQoJnRhaWxfcHQtPmJhc2UtPmJhc2UpOworCQl9CisJCXNwaW5fdW5sb2NrKCZz eW5jb2JqLT5sb2NrKTsKKwl9CisJc2lnbmFsX3B0LT5iYXNlID0gZG1hX2ZlbmNlX2FycmF5X2Ny ZWF0ZShudW1fZmVuY2VzLCBmZW5jZXMsCisJCQkJCQkgc3luY29iai0+dGltZWxpbmVfY29udGV4 dCwKKwkJCQkJCSBwb2ludCwgZmFsc2UpOworCWlmICghc2lnbmFsX3B0LT5iYXNlKQorCQlnb3Rv IGZhaWw7CisKKwlzcGluX2xvY2soJnN5bmNvYmotPmxvY2spOworCXNpZ25hbF9wdC0+dmFsdWUg PSBwb2ludDsKKwlJTklUX0xJU1RfSEVBRCgmc2lnbmFsX3B0LT5saXN0KTsKKwlsaXN0X2FkZF90 YWlsKCZzaWduYWxfcHQtPmxpc3QsICZzeW5jb2JqLT5zaWduYWxfcHRfbGlzdCk7CisJc3luY29i ai0+c2lnbmFsX3BvaW50ID0gcG9pbnQ7CisJc3Bpbl91bmxvY2soJnN5bmNvYmotPmxvY2spOwor CXdha2VfdXBfYWxsKCZzeW5jb2JqLT53cSk7CisKKwlyZXR1cm4gMDsKK2ZhaWw6CisJZm9yIChp ID0gMDsgaSA8IG51bV9mZW5jZXM7IGkrKykKKwkJZG1hX2ZlbmNlX3B1dChmZW5jZXNbaV0pOwor CWtmcmVlKGZlbmNlcyk7CitvdXQ6CisJa2ZyZWUoc2lnbmFsX3B0KTsKKwlyZXR1cm4gcmV0Owor fQorCitzdGF0aWMgdm9pZCBkcm1fc3luY29ial9nYXJiYWdlX2NvbGxlY3Rpb24oc3RydWN0IGRy bV9zeW5jb2JqICpzeW5jb2JqKQoreworCXN0cnVjdCBkcm1fc3luY29ial9zaWduYWxfcHQgKnNp Z25hbF9wdCwgKnRtcCwgKnRhaWxfcHQ7CisKKwlzcGluX2xvY2soJnN5bmNvYmotPmxvY2spOwor CXRhaWxfcHQgPSBsaXN0X2xhc3RfZW50cnkoJnN5bmNvYmotPnNpZ25hbF9wdF9saXN0LAorCQkJ CSAgc3RydWN0IGRybV9zeW5jb2JqX3NpZ25hbF9wdCwKKwkJCQkgIGxpc3QpOworCWxpc3RfZm9y X2VhY2hfZW50cnlfc2FmZShzaWduYWxfcHQsIHRtcCwKKwkJCQkgJnN5bmNvYmotPnNpZ25hbF9w dF9saXN0LCBsaXN0KSB7CisJCWlmIChzeW5jb2JqLT50eXBlID09IERSTV9TWU5DT0JKX1RZUEVf SU5ESVZJRFVBTCAmJgorCQkgICAgc2lnbmFsX3B0ID09IHRhaWxfcHQpCisJCQljb250aW51ZTsK KwkJaWYgKGRtYV9mZW5jZV9pc19zaWduYWxlZCgmc2lnbmFsX3B0LT5iYXNlLT5iYXNlKSkgewor CQkJc3luY29iai0+dGltZWxpbmUgPSBzaWduYWxfcHQtPnZhbHVlOworCQkJbGlzdF9kZWwoJnNp Z25hbF9wdC0+bGlzdCk7CisJCQlkbWFfZmVuY2VfcHV0KCZzaWduYWxfcHQtPmJhc2UtPmJhc2Up OworCQkJa2ZyZWUoc2lnbmFsX3B0KTsKKwkJfSBlbHNlIHsKKwkJCS8qc2lnbmFsX3B0IGlzIGlu IG9yZGVyIGluIGxpc3QsIGZyb20gc21hbGwgdG8gYmlnLCBzbworCQkJICogdGhlIGxhdGVyIG11 c3Qgbm90IGJlIHNpZ25hbCBlaXRoZXIgKi8KKwkJCWJyZWFrOworCQl9CisJfQorCisJc3Bpbl91 bmxvY2soJnN5bmNvYmotPmxvY2spOworfQogLyoqCiAgKiBkcm1fc3luY29ial9yZXBsYWNlX2Zl bmNlIC0gcmVwbGFjZSBmZW5jZSBpbiBhIHN5bmMgb2JqZWN0LgogICogQHN5bmNvYmo6IFN5bmMg b2JqZWN0IHRvIHJlcGxhY2UgZmVuY2UgaW4KQEAgLTE3NiwyOCArMzM2LDI5IEBAIHZvaWQgZHJt X3N5bmNvYmpfcmVwbGFjZV9mZW5jZShzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosCiAJCQkg ICAgICAgdTY0IHBvaW50LAogCQkJICAgICAgIHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQogewot CXN0cnVjdCBkbWFfZmVuY2UgKm9sZF9mZW5jZTsKLQlzdHJ1Y3QgZHJtX3N5bmNvYmpfY2IgKmN1 ciwgKnRtcDsKLQotCWlmIChmZW5jZSkKLQkJZG1hX2ZlbmNlX2dldChmZW5jZSk7Ci0KLQlzcGlu X2xvY2soJnN5bmNvYmotPmxvY2spOwotCi0Jb2xkX2ZlbmNlID0gcmN1X2RlcmVmZXJlbmNlX3By b3RlY3RlZChzeW5jb2JqLT5mZW5jZSwKLQkJCQkJICAgICAgbG9ja2RlcF9pc19oZWxkKCZzeW5j b2JqLT5sb2NrKSk7Ci0JcmN1X2Fzc2lnbl9wb2ludGVyKHN5bmNvYmotPmZlbmNlLCBmZW5jZSk7 CisJdTY0IHB0X3ZhbHVlID0gcG9pbnQ7CisKKwlkcm1fc3luY29ial9nYXJiYWdlX2NvbGxlY3Rp b24oc3luY29iaik7CisJaWYgKHN5bmNvYmotPnR5cGUgPT0gRFJNX1NZTkNPQkpfVFlQRV9JTkRJ VklEVUFMKSB7CisJCWlmICghZmVuY2UpIHsKKwkJCWRybV9zeW5jb2JqX3RpbWVsaW5lX2Zpbmko c3luY29iaik7CisJCQlkcm1fc3luY29ial90aW1lbGluZV9pbml0KHN5bmNvYmopOworCQkJcmV0 dXJuOworCQl9CisJCXB0X3ZhbHVlID0gc3luY29iai0+c2lnbmFsX3BvaW50ICsKKwkJCURSTV9T WU5DT0JKX0lORElWSURVQUxfUE9JTlQ7CisJfQorCWRybV9zeW5jb2JqX2NyZWF0ZV9zaWduYWxf cHQoc3luY29iaiwgZmVuY2UsIHB0X3ZhbHVlKTsKKwlpZiAoZmVuY2UpIHsKKwkJc3RydWN0IGRy bV9zeW5jb2JqX2NiICpjdXIsICp0bXA7CiAKLQlpZiAoZmVuY2UgIT0gb2xkX2ZlbmNlKSB7CisJ CXNwaW5fbG9jaygmc3luY29iai0+bG9jayk7CiAJCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShj dXIsIHRtcCwgJnN5bmNvYmotPmNiX2xpc3QsIG5vZGUpIHsKIAkJCWxpc3RfZGVsX2luaXQoJmN1 ci0+bm9kZSk7CiAJCQljdXItPmZ1bmMoc3luY29iaiwgY3VyKTsKIAkJfQorCQlzcGluX3VubG9j aygmc3luY29iai0+bG9jayk7CiAJfQotCi0Jc3Bpbl91bmxvY2soJnN5bmNvYmotPmxvY2spOwot Ci0JZG1hX2ZlbmNlX3B1dChvbGRfZmVuY2UpOwogfQogRVhQT1JUX1NZTUJPTChkcm1fc3luY29i al9yZXBsYWNlX2ZlbmNlKTsKIApAQCAtMjIwLDYgKzM4MSw2MCBAQCBzdGF0aWMgaW50IGRybV9z eW5jb2JqX2Fzc2lnbl9udWxsX2hhbmRsZShzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmopCiAJ cmV0dXJuIDA7CiB9CiAKKyNkZWZpbmUgV0FJVF9GT1JfU1VCTUlUX01TRUNTIDEwMDAwCisKK3N0 YXRpYyBzdHJ1Y3QgZG1hX2ZlbmNlICoKK2RybV9zeW5jb2JqX3BvaW50X2dldChzdHJ1Y3QgZHJt X3N5bmNvYmogKnN5bmNvYmosIHU2NCBwb2ludCwgdTY0IGZsYWdzKQoreworCXN0cnVjdCBkbWFf ZmVuY2UgKmZlbmNlOworCWludCByZXQgPSAwOworCisJaWYgKGZsYWdzICYgRFJNX1NZTkNPQkpf V0FJVF9GTEFHU19XQUlUX0ZPUl9TVUJNSVQpIHsKKwkJcmV0ID0gd2FpdF9ldmVudF90aW1lb3V0 KHN5bmNvYmotPndxLAorCQkJCQkgcG9pbnQgPD0gc3luY29iai0+c2lnbmFsX3BvaW50LAorCQkJ CQkgbXNlY3NfdG9famlmZmllcyhXQUlUX0ZPUl9TVUJNSVRfTVNFQ1MpKTsKKwkJaWYgKHJldCA8 PSAwKQorCQkJcmV0dXJuIE5VTEw7CisJfQorCXNwaW5fbG9jaygmc3luY29iai0+bG9jayk7CisJ ZmVuY2UgPSBkcm1fc3luY29ial9maW5kX3NpZ25hbF9wdF9mb3JfcG9pbnQoc3luY29iaiwgcG9p bnQpOworCXNwaW5fdW5sb2NrKCZzeW5jb2JqLT5sb2NrKTsKKwlyZXR1cm4gZmVuY2U7Cit9CisK K3N0YXRpYyBpbnQgZHJtX3N5bmNvYmpfc2VhcmNoX2ZlbmNlKHN0cnVjdCBkcm1fc3luY29iaiAq c3luY29iaiwgdTY0IHBvaW50LAorCQkJCSAgICB1NjQgZmxhZ3MsIHN0cnVjdCBkbWFfZmVuY2Ug KipmZW5jZSkKK3sKKwl1NjQgcHRfdmFsdWUgPSBwb2ludDsKKwlpbnQgcmV0ID0gMDsKKworCWlm ICghc3luY29iaikKKwkJcmV0dXJuIC1FTk9FTlQ7CisKKwlkcm1fc3luY29ial9nYXJiYWdlX2Nv bGxlY3Rpb24oc3luY29iaik7CisJaWYgKHN5bmNvYmotPnR5cGUgPT0gRFJNX1NZTkNPQkpfVFlQ RV9JTkRJVklEVUFMKSB7CisJCS8qSU5ESVZJRFVBTCBzeW5jb2JqIGFsd2F5cyB3YWl0IG9uIGxh c3QgcHQgKi8KKwkJcHRfdmFsdWUgPSBzeW5jb2JqLT5zaWduYWxfcG9pbnQ7CisKKwkJaWYgKHB0 X3ZhbHVlID09IDApCisJCQlwdF92YWx1ZSArPSBEUk1fU1lOQ09CSl9JTkRJVklEVUFMX1BPSU5U OworCX0KKwkqZmVuY2UgPSBkcm1fc3luY29ial9wb2ludF9nZXQoc3luY29iaiwgcHRfdmFsdWUs IGZsYWdzKTsKKwlpZiAoISpmZW5jZSkgeworCQlyZXQgPSAtRUlOVkFMOworCX0KKwlyZXR1cm4g cmV0OworfQorCitpbnQgZHJtX3N5bmNvYmpfbG9va3VwX2ZlbmNlKHN0cnVjdCBkcm1fc3luY29i aiAqc3luY29iaiwgdTY0IHBvaW50LAorCQkJICAgc3RydWN0IGRtYV9mZW5jZSAqKmZlbmNlKSB7 CisKKwlyZXR1cm4gZHJtX3N5bmNvYmpfc2VhcmNoX2ZlbmNlKHN5bmNvYmosIHBvaW50LAorCQkJ CQlEUk1fU1lOQ09CSl9XQUlUX0ZMQUdTX1dBSVRfRk9SX1NVQk1JVCwKKwkJCQkJZmVuY2UpOwor fQorRVhQT1JUX1NZTUJPTChkcm1fc3luY29ial9sb29rdXBfZmVuY2UpOworCiAvKioKICAqIGRy bV9zeW5jb2JqX2ZpbmRfZmVuY2UgLSBsb29rdXAgYW5kIHJlZmVyZW5jZSB0aGUgZmVuY2UgaW4g YSBzeW5jIG9iamVjdAogICogQGZpbGVfcHJpdmF0ZTogZHJtIGZpbGUgcHJpdmF0ZSBwb2ludGVy CkBAIC0yMjgsNyArNDQzLDcgQEAgc3RhdGljIGludCBkcm1fc3luY29ial9hc3NpZ25fbnVsbF9o YW5kbGUoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqKQogICogQGZlbmNlOiBvdXQgcGFyYW1l dGVyIGZvciB0aGUgZmVuY2UKICAqCiAgKiBUaGlzIGlzIGp1c3QgYSBjb252ZW5pZW5jZSBmdW5j dGlvbiB0aGF0IGNvbWJpbmVzIGRybV9zeW5jb2JqX2ZpbmQoKSBhbmQKLSAqIGRybV9zeW5jb2Jq X2ZlbmNlX2dldCgpLgorICogZHJtX3N5bmNvYmpfbG9va3VwX2ZlbmNlKCkuCiAgKgogICogUmV0 dXJucyAwIG9uIHN1Y2Nlc3Mgb3IgYSBuZWdhdGl2ZSBlcnJvciB2YWx1ZSBvbiBmYWlsdXJlLiBP biBzdWNjZXNzIEBmZW5jZQogICogY29udGFpbnMgYSByZWZlcmVuY2UgdG8gdGhlIGZlbmNlLCB3 aGljaCBtdXN0IGJlIHJlbGVhc2VkIGJ5IGNhbGxpbmcKQEAgLTIzNiwxOCArNDUxLDExIEBAIHN0 YXRpYyBpbnQgZHJtX3N5bmNvYmpfYXNzaWduX251bGxfaGFuZGxlKHN0cnVjdCBkcm1fc3luY29i aiAqc3luY29iaikKICAqLwogaW50IGRybV9zeW5jb2JqX2ZpbmRfZmVuY2Uoc3RydWN0IGRybV9m aWxlICpmaWxlX3ByaXZhdGUsCiAJCQkgICB1MzIgaGFuZGxlLCB1NjQgcG9pbnQsCi0JCQkgICBz dHJ1Y3QgZG1hX2ZlbmNlICoqZmVuY2UpCi17CisJCQkgICBzdHJ1Y3QgZG1hX2ZlbmNlICoqZmVu Y2UpIHsKIAlzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmogPSBkcm1fc3luY29ial9maW5kKGZp bGVfcHJpdmF0ZSwgaGFuZGxlKTsKLQlpbnQgcmV0ID0gMDsKLQotCWlmICghc3luY29iaikKLQkJ cmV0dXJuIC1FTk9FTlQ7CisJaW50IHJldDsKIAotCSpmZW5jZSA9IGRybV9zeW5jb2JqX2ZlbmNl X2dldChzeW5jb2JqKTsKLQlpZiAoISpmZW5jZSkgewotCQlyZXQgPSAtRUlOVkFMOwotCX0KKwly ZXQgPSBkcm1fc3luY29ial9sb29rdXBfZmVuY2Uoc3luY29iaiwgcG9pbnQsIGZlbmNlKTsKIAlk cm1fc3luY29ial9wdXQoc3luY29iaik7CiAJcmV0dXJuIHJldDsKIH0KQEAgLTI2NCw3ICs0NzIs NyBAQCB2b2lkIGRybV9zeW5jb2JqX2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpCiAJc3RydWN0IGRy bV9zeW5jb2JqICpzeW5jb2JqID0gY29udGFpbmVyX29mKGtyZWYsCiAJCQkJCQkgICBzdHJ1Y3Qg ZHJtX3N5bmNvYmosCiAJCQkJCQkgICByZWZjb3VudCk7Ci0JZHJtX3N5bmNvYmpfcmVwbGFjZV9m ZW5jZShzeW5jb2JqLCAwLCBOVUxMKTsKKwlkcm1fc3luY29ial90aW1lbGluZV9maW5pKHN5bmNv YmopOwogCWtmcmVlKHN5bmNvYmopOwogfQogRVhQT1JUX1NZTUJPTChkcm1fc3luY29ial9mcmVl KTsKQEAgLTI5NCw2ICs1MDIsMTEgQEAgaW50IGRybV9zeW5jb2JqX2NyZWF0ZShzdHJ1Y3QgZHJt X3N5bmNvYmogKipvdXRfc3luY29iaiwgdWludDMyX3QgZmxhZ3MsCiAJa3JlZl9pbml0KCZzeW5j b2JqLT5yZWZjb3VudCk7CiAJSU5JVF9MSVNUX0hFQUQoJnN5bmNvYmotPmNiX2xpc3QpOwogCXNw aW5fbG9ja19pbml0KCZzeW5jb2JqLT5sb2NrKTsKKwlpZiAoZmxhZ3MgJiBEUk1fU1lOQ09CSl9D UkVBVEVfVFlQRV9USU1FTElORSkKKwkJc3luY29iai0+dHlwZSA9IERSTV9TWU5DT0JKX1RZUEVf VElNRUxJTkU7CisJZWxzZQorCQlzeW5jb2JqLT50eXBlID0gRFJNX1NZTkNPQkpfVFlQRV9JTkRJ VklEVUFMOworCWRybV9zeW5jb2JqX3RpbWVsaW5lX2luaXQoc3luY29iaik7CiAKIAlpZiAoZmxh Z3MgJiBEUk1fU1lOQ09CSl9DUkVBVEVfU0lHTkFMRUQpIHsKIAkJcmV0ID0gZHJtX3N5bmNvYmpf YXNzaWduX251bGxfaGFuZGxlKHN5bmNvYmopOwpAQCAtNTc2LDcgKzc4OSw4IEBAIGRybV9zeW5j b2JqX2NyZWF0ZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQly ZXR1cm4gLUVOT0RFVjsKIAogCS8qIG5vIHZhbGlkIGZsYWdzIHlldCAqLwotCWlmIChhcmdzLT5m bGFncyAmIH5EUk1fU1lOQ09CSl9DUkVBVEVfU0lHTkFMRUQpCisJaWYgKGFyZ3MtPmZsYWdzICYg fihEUk1fU1lOQ09CSl9DUkVBVEVfU0lHTkFMRUQgfAorCQkJICAgIERSTV9TWU5DT0JKX0NSRUFU RV9UWVBFX1RJTUVMSU5FKSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAlyZXR1cm4gZHJtX3N5bmNv YmpfY3JlYXRlX2FzX2hhbmRsZShmaWxlX3ByaXZhdGUsCkBAIC02NjksOSArODgzLDggQEAgc3Rh dGljIHZvaWQgc3luY29ial93YWl0X3N5bmNvYmpfZnVuYyhzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5 bmNvYmosCiAJc3RydWN0IHN5bmNvYmpfd2FpdF9lbnRyeSAqd2FpdCA9CiAJCWNvbnRhaW5lcl9v ZihjYiwgc3RydWN0IHN5bmNvYmpfd2FpdF9lbnRyeSwgc3luY29ial9jYik7CiAKLQkvKiBUaGlz IGhhcHBlbnMgaW5zaWRlIHRoZSBzeW5jb2JqIGxvY2sgKi8KLQl3YWl0LT5mZW5jZSA9IGRtYV9m ZW5jZV9nZXQocmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChzeW5jb2JqLT5mZW5jZSwKLQkJCQkJ CQkgICAgICBsb2NrZGVwX2lzX2hlbGQoJnN5bmNvYmotPmxvY2spKSk7CisJZHJtX3N5bmNvYmpf c2VhcmNoX2ZlbmNlKHN5bmNvYmosIDAsIDAsICZ3YWl0LT5mZW5jZSk7CisKIAl3YWtlX3VwX3By b2Nlc3Mod2FpdC0+dGFzayk7CiB9CiAKQEAgLTY5OCw3ICs5MTEsOCBAQCBzdGF0aWMgc2lnbmVk IGxvbmcgZHJtX3N5bmNvYmpfYXJyYXlfd2FpdF90aW1lb3V0KHN0cnVjdCBkcm1fc3luY29iaiAq KnN5bmNvYmpzLAogCXNpZ25hbGVkX2NvdW50ID0gMDsKIAlmb3IgKGkgPSAwOyBpIDwgY291bnQ7 ICsraSkgewogCQllbnRyaWVzW2ldLnRhc2sgPSBjdXJyZW50OwotCQllbnRyaWVzW2ldLmZlbmNl ID0gZHJtX3N5bmNvYmpfZmVuY2VfZ2V0KHN5bmNvYmpzW2ldKTsKKwkJcmV0ID0gZHJtX3N5bmNv Ympfc2VhcmNoX2ZlbmNlKHN5bmNvYmpzW2ldLCAwLCAwLAorCQkJCQkgICAgICAgJmVudHJpZXNb aV0uZmVuY2UpOwogCQlpZiAoIWVudHJpZXNbaV0uZmVuY2UpIHsKIAkJCWlmIChmbGFncyAmIERS TV9TWU5DT0JKX1dBSVRfRkxBR1NfV0FJVF9GT1JfU1VCTUlUKSB7CiAJCQkJY29udGludWU7CkBA IC05NzAsMTIgKzExODQsMTkgQEAgZHJtX3N5bmNvYmpfcmVzZXRfaW9jdGwoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlpZiAocmV0IDwgMCkKIAkJcmV0dXJuIHJldDsKIAot CWZvciAoaSA9IDA7IGkgPCBhcmdzLT5jb3VudF9oYW5kbGVzOyBpKyspCi0JCWRybV9zeW5jb2Jq X3JlcGxhY2VfZmVuY2Uoc3luY29ianNbaV0sIDAsIE5VTEwpOwotCisJZm9yIChpID0gMDsgaSA8 IGFyZ3MtPmNvdW50X2hhbmRsZXM7IGkrKykgeworCQlpZiAoc3luY29ianNbaV0tPnR5cGUgPT0g RFJNX1NZTkNPQkpfVFlQRV9USU1FTElORSkgeworCQkJRFJNX0VSUk9SKCJ0aW1lbGluZSBzeW5j b2JqIGNhbm5vdCByZXNldCFcbiIpOworCQkJcmV0ID0gLUVJTlZBTDsKKwkJCWdvdG8gb3V0Owor CQl9CisJCWRybV9zeW5jb2JqX3RpbWVsaW5lX2Zpbmkoc3luY29ianNbaV0pOworCQlkcm1fc3lu Y29ial90aW1lbGluZV9pbml0KHN5bmNvYmpzW2ldKTsKKwl9CitvdXQ6CiAJZHJtX3N5bmNvYmpf YXJyYXlfZnJlZShzeW5jb2JqcywgYXJncy0+Y291bnRfaGFuZGxlcyk7CiAKLQlyZXR1cm4gMDsK KwlyZXR1cm4gcmV0OwogfQogCiBpbnQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4 ZWNidWZmZXIuYwppbmRleCAwYThkMmQ2NGYzODAuLmEwNDBmYTMyODFkZiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwpAQCAtMjEzNyw3ICsyMTM3LDcgQEAg YXdhaXRfZmVuY2VfYXJyYXkoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsCiAJCWlmICghKGZs YWdzICYgSTkxNV9FWEVDX0ZFTkNFX1dBSVQpKQogCQkJY29udGludWU7CiAKLQkJZmVuY2UgPSBk cm1fc3luY29ial9mZW5jZV9nZXQoc3luY29iaik7CisJCWRybV9zeW5jb2JqX2xvb2t1cF9mZW5j ZShzeW5jb2JqLCAwLCAmZmVuY2UpOwogCQlpZiAoIWZlbmNlKQogCQkJcmV0dXJuIC1FSU5WQUw7 CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9zeW5jb2JqLmggYi9pbmNsdWRlL2RybS9k cm1fc3luY29iai5oCmluZGV4IDQyNTQzMmI4NWE4Ny4uNmRhYzQ3OWZlZGZlIDEwMDY0NAotLS0g YS9pbmNsdWRlL2RybS9kcm1fc3luY29iai5oCisrKyBiL2luY2x1ZGUvZHJtL2RybV9zeW5jb2Jq LmgKQEAgLTMwLDYgKzMwLDExIEBACiAKIHN0cnVjdCBkcm1fc3luY29ial9jYjsKIAorZW51bSBk cm1fc3luY29ial90eXBlIHsKKwlEUk1fU1lOQ09CSl9UWVBFX0lORElWSURVQUwsCisJRFJNX1NZ TkNPQkpfVFlQRV9USU1FTElORQorfTsKKwogLyoqCiAgKiBzdHJ1Y3QgZHJtX3N5bmNvYmogLSBz eW5jIG9iamVjdC4KICAqCkBAIC00MSwxOSArNDYsMzYgQEAgc3RydWN0IGRybV9zeW5jb2JqIHsK IAkgKi8KIAlzdHJ1Y3Qga3JlZiByZWZjb3VudDsKIAkvKioKLQkgKiBAZmVuY2U6Ci0JICogTlVM TCBvciBhIHBvaW50ZXIgdG8gdGhlIGZlbmNlIGJvdW5kIHRvIHRoaXMgb2JqZWN0LgotCSAqCi0J ICogVGhpcyBmaWVsZCBzaG91bGQgbm90IGJlIHVzZWQgZGlyZWN0bHkuIFVzZSBkcm1fc3luY29i al9mZW5jZV9nZXQoKQotCSAqIGFuZCBkcm1fc3luY29ial9yZXBsYWNlX2ZlbmNlKCkgaW5zdGVh ZC4KKwkgKiBAdHlwZTogaW5kaWNhdGUgc3luY29iaiB0eXBlCisJICovCisJZW51bSBkcm1fc3lu Y29ial90eXBlIHR5cGU7CisJLyoqCisJICogQHdxOiB3YWl0IHNpZ25hbCBvcGVyYXRpb24gd29y ayBxdWV1ZQorCSAqLworCXdhaXRfcXVldWVfaGVhZF90CXdxOworCS8qKgorCSAqIEB0aW1lbGlu ZV9jb250ZXh0OiBmZW5jZSBjb250ZXh0IHVzZWQgYnkgdGltZWxpbmUKIAkgKi8KLQlzdHJ1Y3Qg ZG1hX2ZlbmNlIF9fcmN1ICpmZW5jZTsKKwl1NjQgdGltZWxpbmVfY29udGV4dDsKIAkvKioKLQkg KiBAY2JfbGlzdDogTGlzdCBvZiBjYWxsYmFja3MgdG8gY2FsbCB3aGVuIHRoZSAmZmVuY2UgZ2V0 cyByZXBsYWNlZC4KKwkgKiBAdGltZWxpbmU6IHN5bmNvYmogdGltZWxpbmUgdmFsdWUsIHdoaWNo IGluZGljYXRlcyBwb2ludCBpcyBzaWduYWxlZC4KIAkgKi8KKwl1NjQgdGltZWxpbmU7CisJLyoq CisJICogQHNpZ25hbF9wb2ludDogd2hpY2ggaW5kaWNhdGVzIHRoZSBsYXRlc3Qgc2lnbmFsZXIg cG9pbnQuCisJICovCisJdTY0IHNpZ25hbF9wb2ludDsKKwkvKioKKwkgKiBAc2lnbmFsX3B0X2xp c3Q6IHNpZ25hbGVyIHBvaW50IGxpc3QuCisJICovCisJc3RydWN0IGxpc3RfaGVhZCBzaWduYWxf cHRfbGlzdDsKKworCS8qKgorICAgICAgICAgKiBAY2JfbGlzdDogTGlzdCBvZiBjYWxsYmFja3Mg dG8gY2FsbCB3aGVuIHRoZSAmZmVuY2UgZ2V0cyByZXBsYWNlZC4KKyAgICAgICAgICovCiAJc3Ry dWN0IGxpc3RfaGVhZCBjYl9saXN0OwogCS8qKgotCSAqIEBsb2NrOiBQcm90ZWN0cyAmY2JfbGlz dCBhbmQgd3JpdGUtbG9ja3MgJmZlbmNlLgorCSAqIEBsb2NrOiBQcm90ZWN0cyBzeW5jb2JqIGxp c3QgYW5kIHdyaXRlLWxvY2tzICZmZW5jZS4KIAkgKi8KIAlzcGlubG9ja190IGxvY2s7CiAJLyoq CkBAIC02OCw3ICs5MCw3IEBAIHR5cGVkZWYgdm9pZCAoKmRybV9zeW5jb2JqX2Z1bmNfdCkoc3Ry dWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLAogLyoqCiAgKiBzdHJ1Y3QgZHJtX3N5bmNvYmpfY2Ig LSBjYWxsYmFjayBmb3IgZHJtX3N5bmNvYmpfYWRkX2NhbGxiYWNrCiAgKiBAbm9kZTogdXNlZCBi eSBkcm1fc3luY29iX2FkZF9jYWxsYmFjayB0byBhcHBlbmQgdGhpcyBzdHJ1Y3QgdG8KLSAqCSAg JmRybV9zeW5jb2JqLmNiX2xpc3QKKyAqICAgICAgICZkcm1fc3luY29iai5jYl9saXN0CiAgKiBA ZnVuYzogZHJtX3N5bmNvYmpfZnVuY190IHRvIGNhbGwKICAqCiAgKiBUaGlzIHN0cnVjdCB3aWxs IGJlIGluaXRpYWxpemVkIGJ5IGRybV9zeW5jb2JqX2FkZF9jYWxsYmFjaywgYWRkaXRpb25hbApA QCAtMTA2LDI5ICsxMjgsNiBAQCBkcm1fc3luY29ial9wdXQoc3RydWN0IGRybV9zeW5jb2JqICpv YmopCiAJa3JlZl9wdXQoJm9iai0+cmVmY291bnQsIGRybV9zeW5jb2JqX2ZyZWUpOwogfQogCi0v KioKLSAqIGRybV9zeW5jb2JqX2ZlbmNlX2dldCAtIGdldCBhIHJlZmVyZW5jZSB0byBhIGZlbmNl IGluIGEgc3luYyBvYmplY3QKLSAqIEBzeW5jb2JqOiBzeW5jIG9iamVjdC4KLSAqCi0gKiBUaGlz IGFjcXVpcmVzIGFkZGl0aW9uYWwgcmVmZXJlbmNlIHRvICZkcm1fc3luY29iai5mZW5jZSBjb250 YWluZWQgaW4gQG9iaiwKLSAqIGlmIG5vdCBOVUxMLiBJdCBpcyBpbGxlZ2FsIHRvIGNhbGwgdGhp cyB3aXRob3V0IGFscmVhZHkgaG9sZGluZyBhIHJlZmVyZW5jZS4KLSAqIE5vIGxvY2tzIHJlcXVp cmVkLgotICoKLSAqIFJldHVybnM6Ci0gKiBFaXRoZXIgdGhlIGZlbmNlIG9mIEBvYmogb3IgTlVM TCBpZiB0aGVyZSdzIG5vbmUuCi0gKi8KLXN0YXRpYyBpbmxpbmUgc3RydWN0IGRtYV9mZW5jZSAq Ci1kcm1fc3luY29ial9mZW5jZV9nZXQoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqKQotewot CXN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlOwotCi0JcmN1X3JlYWRfbG9jaygpOwotCWZlbmNlID0g ZG1hX2ZlbmNlX2dldF9yY3Vfc2FmZSgmc3luY29iai0+ZmVuY2UpOwotCXJjdV9yZWFkX3VubG9j aygpOwotCi0JcmV0dXJuIGZlbmNlOwotfQotCiBzdHJ1Y3QgZHJtX3N5bmNvYmogKmRybV9zeW5j b2JqX2ZpbmQoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUsCiAJCQkJICAgICB1MzIgaGFu ZGxlKTsKIHZvaWQgZHJtX3N5bmNvYmpfcmVwbGFjZV9mZW5jZShzdHJ1Y3QgZHJtX3N5bmNvYmog KnN5bmNvYmosIHU2NCBwb2ludCwKQEAgLTE0Miw1ICsxNDEsNyBAQCBpbnQgZHJtX3N5bmNvYmpf Y3JlYXRlKHN0cnVjdCBkcm1fc3luY29iaiAqKm91dF9zeW5jb2JqLCB1aW50MzJfdCBmbGFncywK IGludCBkcm1fc3luY29ial9nZXRfaGFuZGxlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRl LAogCQkJICAgc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLCB1MzIgKmhhbmRsZSk7CiBpbnQg ZHJtX3N5bmNvYmpfZ2V0X2ZkKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwgaW50ICpwX2Zk KTsKK2ludCBkcm1fc3luY29ial9sb29rdXBfZmVuY2Uoc3RydWN0IGRybV9zeW5jb2JqICpzeW5j b2JqLCB1NjQgcG9pbnQsCisJCQkgICAgIHN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZSk7CiAKICNl bmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2RybS9kcm0uaCBiL2luY2x1ZGUvdWFwaS9k cm0vZHJtLmgKaW5kZXggMzAwZjMzNjYzM2YyLi5jZWJkYjI1NDFlYjcgMTAwNjQ0Ci0tLSBhL2lu Y2x1ZGUvdWFwaS9kcm0vZHJtLmgKKysrIGIvaW5jbHVkZS91YXBpL2RybS9kcm0uaApAQCAtNzE3 LDYgKzcxNyw3IEBAIHN0cnVjdCBkcm1fcHJpbWVfaGFuZGxlIHsKIHN0cnVjdCBkcm1fc3luY29i al9jcmVhdGUgewogCV9fdTMyIGhhbmRsZTsKICNkZWZpbmUgRFJNX1NZTkNPQkpfQ1JFQVRFX1NJ R05BTEVEICgxIDw8IDApCisjZGVmaW5lIERSTV9TWU5DT0JKX0NSRUFURV9UWVBFX1RJTUVMSU5F ICgxIDw8IDEpCiAJX191MzIgZmxhZ3M7CiB9OwogCi0tIAoyLjE3LjEKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFt ZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=