From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chunming Zhou Subject: [PATCH 2/6] [RFC]drm: add syncobj timeline support v7 Date: Wed, 19 Sep 2018 17:04:03 +0800 Message-ID: <20180919090407.24111-2-david1.zhou@amd.com> References: <20180919090407.24111-1-david1.zhou@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180919090407.24111-1-david1.zhou-5C7GfCeVMHo@public.gmane.org> 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 c29tZSBmdW5jdGlvbiBuYW1lLgozLiBrZWVwIHN5bmNvYmogY2IuCgp2NjogKENocmlzdGlhbikK MS4gbWVyZ2Ugc3luY29ial90aW1lbGluZSB0byBzeW5jb2JqIHN0cnVjdHVyZS4KMi4gc2ltcGxp Znkgc29tZSBjaGVjayBzZW50ZW5jZXMuCjMuIHNvbWUgbWlzYyBjaGFuZ2UuCjQuIGZpeCBDVFMg ZmFpbGVkIGlzc3VlLgoKdjc6IChDaHJpc3RpYW4pCjEuIGVycm9yIGhhbmRsaW5nIHdoZW4gY3Jl YXRpbmcgc2lnbmFsIHB0LgoyLiByZW1vdmUgdGltZWxpbmUgbmFtaW5nIGluIGZ1bmMuCjMuIGV4 cG9ydCBmbGFncyBpbiBmaW5kX2ZlbmNlLgo0LiBhbGxvdyByZXNldCB0aW1lbGluZS4KCm5vcm1h bCBzeW5jb2JqIGlzIHRlc3RlZCBieSAuL2RlcXAtdmsgLW4gZEVRUC1WSypzZW1hcGhvcmUqCnRp bWVsaW5lIHN5bmNvYmogaXMgdGVzdGVkIGJ5IC4vYW1kZ3B1X3Rlc3QgLXMgOQoKU2lnbmVkLW9m Zi1ieTogQ2h1bm1pbmcgWmhvdSA8ZGF2aWQxLnpob3VAYW1kLmNvbT4KQ2M6IENocmlzdGlhbiBL b25pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgpDYzogRGF2ZSBBaXJsaWUgPGFpcmxpZWRA cmVkaGF0LmNvbT4KQ2M6IERhbmllbCBSYWtvcyA8RGFuaWVsLlJha29zQGFtZC5jb20+CkNjOiBE YW5pZWwgVmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2RybV9z eW5jb2JqLmMgICAgICAgICAgICAgIHwgMjkxICsrKysrKysrKysrKysrKysrKy0tLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIHwgICAyICstCiBpbmNsdWRlL2Ry bS9kcm1fc3luY29iai5oICAgICAgICAgICAgICAgICAgfCAgNjUgKystLS0KIGluY2x1ZGUvdWFw aS9kcm0vZHJtLmggICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiA0IGZpbGVzIGNoYW5nZWQs IDI4NSBpbnNlcnRpb25zKCspLCA3NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vZHJtX3N5bmNvYmouYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jCmlu ZGV4IGY3OTZjOWZjMzg1OC4uZDY5MTI2YjY5MGMyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vZHJtX3N5bmNvYmouYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYwpAQCAt NTYsNiArNTYsOSBAQAogI2luY2x1ZGUgImRybV9pbnRlcm5hbC5oIgogI2luY2x1ZGUgPGRybS9k cm1fc3luY29iai5oPgogCisvKiBtZXJnZSBub3JtYWwgc3luY29iaiB0byB0aW1lbGluZSBzeW5j b2JqLCB0aGUgcG9pbnQgaW50ZXJ2YWwgaXMgMSAqLworI2RlZmluZSBEUk1fU1lOQ09CSl9JTkRJ VklEVUFMX1BPSU5UIDEKKwogc3RydWN0IGRybV9zeW5jb2JqX3N0dWJfZmVuY2UgewogCXN0cnVj dCBkbWFfZmVuY2UgYmFzZTsKIAlzcGlubG9ja190IGxvY2s7CkBAIC04Miw2ICs4NSwxMSBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IGRtYV9mZW5jZV9vcHMgZHJtX3N5bmNvYmpfc3R1Yl9mZW5jZV9v cHMgPSB7CiAJLnJlbGVhc2UgPSBkcm1fc3luY29ial9zdHViX2ZlbmNlX3JlbGVhc2UsCiB9Owog CitzdHJ1Y3QgZHJtX3N5bmNvYmpfc2lnbmFsX3B0IHsKKwlzdHJ1Y3QgZG1hX2ZlbmNlX2FycmF5 ICpiYXNlOworCXU2NCAgICB2YWx1ZTsKKwlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7Cit9OwogCiAv KioKICAqIGRybV9zeW5jb2JqX2ZpbmQgLSBsb29rdXAgYW5kIHJlZmVyZW5jZSBhIHN5bmMgb2Jq ZWN0LgpAQCAtMTI0LDggKzEzMiw4IEBAIHN0YXRpYyBpbnQgZHJtX3N5bmNvYmpfZmVuY2VfZ2V0 X29yX2FkZF9jYWxsYmFjayhzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosCiB7CiAJaW50IHJl dDsKIAotCSpmZW5jZSA9IGRybV9zeW5jb2JqX2ZlbmNlX2dldChzeW5jb2JqKTsKLQlpZiAoKmZl bmNlKQorCXJldCA9IGRybV9zeW5jb2JqX3NlYXJjaF9mZW5jZShzeW5jb2JqLCAwLCAwLCBmZW5j ZSk7CisJaWYgKCFyZXQpCiAJCXJldHVybiAxOwogCiAJc3Bpbl9sb2NrKCZzeW5jb2JqLT5sb2Nr KTsKQEAgLTEzMywxMCArMTQxLDEyIEBAIHN0YXRpYyBpbnQgZHJtX3N5bmNvYmpfZmVuY2VfZ2V0 X29yX2FkZF9jYWxsYmFjayhzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosCiAJICogaGF2ZSB0 aGUgbG9jaywgdHJ5IG9uZSBtb3JlIHRpbWUganVzdCB0byBiZSBzdXJlIHdlIGRvbid0IGFkZCBh CiAJICogY2FsbGJhY2sgd2hlbiBhIGZlbmNlIGhhcyBhbHJlYWR5IGJlZW4gc2V0LgogCSAqLwot CWlmIChzeW5jb2JqLT5mZW5jZSkgewotCQkqZmVuY2UgPSBkbWFfZmVuY2VfZ2V0KHJjdV9kZXJl ZmVyZW5jZV9wcm90ZWN0ZWQoc3luY29iai0+ZmVuY2UsCi0JCQkJCQkJCSBsb2NrZGVwX2lzX2hl bGQoJnN5bmNvYmotPmxvY2spKSk7Ci0JCXJldCA9IDE7CisJaWYgKCFsaXN0X2VtcHR5KCZzeW5j b2JqLT5zaWduYWxfcHRfbGlzdCkpIHsKKwkJc3Bpbl91bmxvY2soJnN5bmNvYmotPmxvY2spOwor CQlkcm1fc3luY29ial9zZWFyY2hfZmVuY2Uoc3luY29iaiwgMCwgMCwgZmVuY2UpOworCQlpZiAo KmZlbmNlKQorCQkJcmV0dXJuIDE7CisJCXNwaW5fbG9jaygmc3luY29iai0+bG9jayk7CiAJfSBl bHNlIHsKIAkJKmZlbmNlID0gTlVMTDsKIAkJZHJtX3N5bmNvYmpfYWRkX2NhbGxiYWNrX2xvY2tl ZChzeW5jb2JqLCBjYiwgZnVuYyk7CkBAIC0xNjQsNiArMTc0LDE1NyBAQCB2b2lkIGRybV9zeW5j b2JqX3JlbW92ZV9jYWxsYmFjayhzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosCiAJc3Bpbl91 bmxvY2soJnN5bmNvYmotPmxvY2spOwogfQogCitzdGF0aWMgdm9pZCBkcm1fc3luY29ial9pbml0 KHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaikKK3sKKwlzcGluX2xvY2soJnN5bmNvYmotPmxv Y2spOworCXN5bmNvYmotPnRpbWVsaW5lX2NvbnRleHQgPSBkbWFfZmVuY2VfY29udGV4dF9hbGxv YygxKTsKKwlzeW5jb2JqLT50aW1lbGluZSA9IDA7CisJc3luY29iai0+c2lnbmFsX3BvaW50ID0g MDsKKwlpbml0X3dhaXRxdWV1ZV9oZWFkKCZzeW5jb2JqLT53cSk7CisKKwlJTklUX0xJU1RfSEVB RCgmc3luY29iai0+c2lnbmFsX3B0X2xpc3QpOworCXNwaW5fdW5sb2NrKCZzeW5jb2JqLT5sb2Nr KTsKK30KKworc3RhdGljIHZvaWQgZHJtX3N5bmNvYmpfZmluaShzdHJ1Y3QgZHJtX3N5bmNvYmog KnN5bmNvYmopCit7CisJc3RydWN0IGRybV9zeW5jb2JqX3NpZ25hbF9wdCAqc2lnbmFsX3B0ID0g TlVMTCwgKnRtcDsKKworCXNwaW5fbG9jaygmc3luY29iai0+bG9jayk7CisJbGlzdF9mb3JfZWFj aF9lbnRyeV9zYWZlKHNpZ25hbF9wdCwgdG1wLAorCQkJCSAmc3luY29iai0+c2lnbmFsX3B0X2xp c3QsIGxpc3QpIHsKKwkJbGlzdF9kZWwoJnNpZ25hbF9wdC0+bGlzdCk7CisJCWRtYV9mZW5jZV9w dXQoJnNpZ25hbF9wdC0+YmFzZS0+YmFzZSk7CisJCWtmcmVlKHNpZ25hbF9wdCk7CisJfQorCXNw aW5fdW5sb2NrKCZzeW5jb2JqLT5sb2NrKTsKK30KKworc3RhdGljIHN0cnVjdCBkbWFfZmVuY2UK Kypkcm1fc3luY29ial9maW5kX3NpZ25hbF9wdF9mb3JfcG9pbnQoc3RydWN0IGRybV9zeW5jb2Jq ICpzeW5jb2JqLAorCQkJCSAgICAgIHVpbnQ2NF90IHBvaW50KQoreworCXN0cnVjdCBkcm1fc3lu Y29ial9zaWduYWxfcHQgKnNpZ25hbF9wdDsKKworCWlmICgoc3luY29iai0+dHlwZSA9PSBEUk1f U1lOQ09CSl9UWVBFX1RJTUVMSU5FKSAmJgorCSAgICAocG9pbnQgPD0gc3luY29iai0+dGltZWxp bmUpKSB7CisJCXN0cnVjdCBkcm1fc3luY29ial9zdHViX2ZlbmNlICpmZW5jZSA9CisJCQlremFs bG9jKHNpemVvZihzdHJ1Y3QgZHJtX3N5bmNvYmpfc3R1Yl9mZW5jZSksCisJCQkJR0ZQX0tFUk5F TCk7CisKKwkJaWYgKCFmZW5jZSkKKwkJCXJldHVybiBOVUxMOworCQlzcGluX2xvY2tfaW5pdCgm ZmVuY2UtPmxvY2spOworCQlkbWFfZmVuY2VfaW5pdCgmZmVuY2UtPmJhc2UsCisJCQkgICAgICAg JmRybV9zeW5jb2JqX3N0dWJfZmVuY2Vfb3BzLAorCQkJICAgICAgICZmZW5jZS0+bG9jaywKKwkJ CSAgICAgICBzeW5jb2JqLT50aW1lbGluZV9jb250ZXh0LAorCQkJICAgICAgIHBvaW50KTsKKwor CQlkbWFfZmVuY2Vfc2lnbmFsKCZmZW5jZS0+YmFzZSk7CisJCXJldHVybiAmZmVuY2UtPmJhc2U7 CisJfQorCisJbGlzdF9mb3JfZWFjaF9lbnRyeShzaWduYWxfcHQsICZzeW5jb2JqLT5zaWduYWxf cHRfbGlzdCwgbGlzdCkgeworCQlpZiAocG9pbnQgPiBzaWduYWxfcHQtPnZhbHVlKQorCQkJY29u dGludWU7CisJCWlmICgoc3luY29iai0+dHlwZSA9PSBEUk1fU1lOQ09CSl9UWVBFX0lORElWSURV QUwpICYmCisJCSAgICAocG9pbnQgIT0gc2lnbmFsX3B0LT52YWx1ZSkpCisJCQljb250aW51ZTsK KwkJcmV0dXJuIGRtYV9mZW5jZV9nZXQoJnNpZ25hbF9wdC0+YmFzZS0+YmFzZSk7CisJfQorCXJl dHVybiBOVUxMOworfQorCitzdGF0aWMgaW50IGRybV9zeW5jb2JqX2NyZWF0ZV9zaWduYWxfcHQo c3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLAorCQkJCQlzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5j ZSwKKwkJCQkJdTY0IHBvaW50KQoreworCXN0cnVjdCBkcm1fc3luY29ial9zaWduYWxfcHQgKnNp Z25hbF9wdCA9CisJCWt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBkcm1fc3luY29ial9zaWduYWxfcHQp LCBHRlBfS0VSTkVMKTsKKwlzdHJ1Y3QgZHJtX3N5bmNvYmpfc2lnbmFsX3B0ICp0YWlsX3B0Owor CXN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZXM7CisJaW50IG51bV9mZW5jZXMgPSAwOworCWludCBy ZXQgPSAwLCBpOworCisJaWYgKCFzaWduYWxfcHQpCisJCXJldHVybiAtRU5PTUVNOworCWlmICgh ZmVuY2UpCisJCWdvdG8gb3V0OworCisJZmVuY2VzID0ga21hbGxvY19hcnJheShzaXplb2Yodm9p ZCAqKSwgMiwgR0ZQX0tFUk5FTCk7CisJaWYgKCFmZW5jZXMpIHsKKwkJcmV0ID0gLUVOT01FTTsK KwkJZ290byBvdXQ7CisJfQorCWZlbmNlc1tudW1fZmVuY2VzKytdID0gZG1hX2ZlbmNlX2dldChm ZW5jZSk7CisJLyogdGltZWxpbmUgc3luY29iaiBtdXN0IHRha2UgdGhpcyBkZXBlbmRlbmN5ICov CisJaWYgKHN5bmNvYmotPnR5cGUgPT0gRFJNX1NZTkNPQkpfVFlQRV9USU1FTElORSkgeworCQlz cGluX2xvY2soJnN5bmNvYmotPmxvY2spOworCQlpZiAoIWxpc3RfZW1wdHkoJnN5bmNvYmotPnNp Z25hbF9wdF9saXN0KSkgeworCQkJdGFpbF9wdCA9IGxpc3RfbGFzdF9lbnRyeSgmc3luY29iai0+ c2lnbmFsX3B0X2xpc3QsCisJCQkJCQkgIHN0cnVjdCBkcm1fc3luY29ial9zaWduYWxfcHQsIGxp c3QpOworCQkJZmVuY2VzW251bV9mZW5jZXMrK10gPSBkbWFfZmVuY2VfZ2V0KCZ0YWlsX3B0LT5i YXNlLT5iYXNlKTsKKwkJfQorCQlzcGluX3VubG9jaygmc3luY29iai0+bG9jayk7CisJfQorCXNp Z25hbF9wdC0+YmFzZSA9IGRtYV9mZW5jZV9hcnJheV9jcmVhdGUobnVtX2ZlbmNlcywgZmVuY2Vz LAorCQkJCQkJIHN5bmNvYmotPnRpbWVsaW5lX2NvbnRleHQsCisJCQkJCQkgcG9pbnQsIGZhbHNl KTsKKwlpZiAoIXNpZ25hbF9wdC0+YmFzZSkgeworCQlyZXQgPSAtRU5PTUVNOworCQlnb3RvIGZh aWw7CisJfQorCisJc3Bpbl9sb2NrKCZzeW5jb2JqLT5sb2NrKTsKKwlpZiAoc3luY29iai0+c2ln bmFsX3BvaW50ID49IHBvaW50KSB7CisJCURSTV9XQVJOKCJBIGxhdGVyIHNpZ25hbCBpcyByZWFk eSEiKTsKKwkJc3Bpbl91bmxvY2soJnN5bmNvYmotPmxvY2spOworCQlnb3RvIG91dDsKKwl9CisJ c2lnbmFsX3B0LT52YWx1ZSA9IHBvaW50OworCWxpc3RfYWRkX3RhaWwoJnNpZ25hbF9wdC0+bGlz dCwgJnN5bmNvYmotPnNpZ25hbF9wdF9saXN0KTsKKwlzeW5jb2JqLT5zaWduYWxfcG9pbnQgPSBw b2ludDsKKwlzcGluX3VubG9jaygmc3luY29iai0+bG9jayk7CisJd2FrZV91cF9hbGwoJnN5bmNv YmotPndxKTsKKworCXJldHVybiAwOworZmFpbDoKKwlmb3IgKGkgPSAwOyBpIDwgbnVtX2ZlbmNl czsgaSsrKQorCQlkbWFfZmVuY2VfcHV0KGZlbmNlc1tpXSk7CisJa2ZyZWUoZmVuY2VzKTsKK291 dDoKKwlrZnJlZShzaWduYWxfcHQpOworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIGRy bV9zeW5jb2JqX2dhcmJhZ2VfY29sbGVjdGlvbihzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmop Cit7CisJc3RydWN0IGRybV9zeW5jb2JqX3NpZ25hbF9wdCAqc2lnbmFsX3B0LCAqdG1wLCAqdGFp bF9wdDsKKworCXNwaW5fbG9jaygmc3luY29iai0+bG9jayk7CisJdGFpbF9wdCA9IGxpc3RfbGFz dF9lbnRyeSgmc3luY29iai0+c2lnbmFsX3B0X2xpc3QsCisJCQkJICBzdHJ1Y3QgZHJtX3N5bmNv Ympfc2lnbmFsX3B0LAorCQkJCSAgbGlzdCk7CisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHNp Z25hbF9wdCwgdG1wLAorCQkJCSAmc3luY29iai0+c2lnbmFsX3B0X2xpc3QsIGxpc3QpIHsKKwkJ aWYgKHN5bmNvYmotPnR5cGUgPT0gRFJNX1NZTkNPQkpfVFlQRV9JTkRJVklEVUFMICYmCisJCSAg ICBzaWduYWxfcHQgPT0gdGFpbF9wdCkKKwkJCWNvbnRpbnVlOworCQlpZiAoZG1hX2ZlbmNlX2lz X3NpZ25hbGVkKCZzaWduYWxfcHQtPmJhc2UtPmJhc2UpKSB7CisJCQlzeW5jb2JqLT50aW1lbGlu ZSA9IHNpZ25hbF9wdC0+dmFsdWU7CisJCQlsaXN0X2RlbCgmc2lnbmFsX3B0LT5saXN0KTsKKwkJ CWRtYV9mZW5jZV9wdXQoJnNpZ25hbF9wdC0+YmFzZS0+YmFzZSk7CisJCQlrZnJlZShzaWduYWxf cHQpOworCQl9IGVsc2UgeworCQkJLypzaWduYWxfcHQgaXMgaW4gb3JkZXIgaW4gbGlzdCwgZnJv bSBzbWFsbCB0byBiaWcsIHNvCisJCQkgKiB0aGUgbGF0ZXIgbXVzdCBub3QgYmUgc2lnbmFsIGVp dGhlciAqLworCQkJYnJlYWs7CisJCX0KKwl9CisKKwlzcGluX3VubG9jaygmc3luY29iai0+bG9j ayk7Cit9CiAvKioKICAqIGRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2UgLSByZXBsYWNlIGZlbmNl IGluIGEgc3luYyBvYmplY3QuCiAgKiBAc3luY29iajogU3luYyBvYmplY3QgdG8gcmVwbGFjZSBm ZW5jZSBpbgpAQCAtMTc2LDI4ICszMzcsMjkgQEAgdm9pZCBkcm1fc3luY29ial9yZXBsYWNlX2Zl bmNlKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwKIAkJCSAgICAgICB1NjQgcG9pbnQsCiAJ CQkgICAgICAgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpCiB7Ci0Jc3RydWN0IGRtYV9mZW5jZSAq b2xkX2ZlbmNlOwotCXN0cnVjdCBkcm1fc3luY29ial9jYiAqY3VyLCAqdG1wOwotCi0JaWYgKGZl bmNlKQotCQlkbWFfZmVuY2VfZ2V0KGZlbmNlKTsKLQotCXNwaW5fbG9jaygmc3luY29iai0+bG9j ayk7Ci0KLQlvbGRfZmVuY2UgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKHN5bmNvYmotPmZl bmNlLAotCQkJCQkgICAgICBsb2NrZGVwX2lzX2hlbGQoJnN5bmNvYmotPmxvY2spKTsKLQlyY3Vf YXNzaWduX3BvaW50ZXIoc3luY29iai0+ZmVuY2UsIGZlbmNlKTsKKwl1NjQgcHRfdmFsdWUgPSBw b2ludDsKKworCWRybV9zeW5jb2JqX2dhcmJhZ2VfY29sbGVjdGlvbihzeW5jb2JqKTsKKwlpZiAo c3luY29iai0+dHlwZSA9PSBEUk1fU1lOQ09CSl9UWVBFX0lORElWSURVQUwpIHsKKwkJaWYgKCFm ZW5jZSkgeworCQkJZHJtX3N5bmNvYmpfZmluaShzeW5jb2JqKTsKKwkJCWRybV9zeW5jb2JqX2lu aXQoc3luY29iaik7CisJCQlyZXR1cm47CisJCX0KKwkJcHRfdmFsdWUgPSBzeW5jb2JqLT5zaWdu YWxfcG9pbnQgKworCQkJRFJNX1NZTkNPQkpfSU5ESVZJRFVBTF9QT0lOVDsKKwl9CisJZHJtX3N5 bmNvYmpfY3JlYXRlX3NpZ25hbF9wdChzeW5jb2JqLCBmZW5jZSwgcHRfdmFsdWUpOworCWlmIChm ZW5jZSkgeworCQlzdHJ1Y3QgZHJtX3N5bmNvYmpfY2IgKmN1ciwgKnRtcDsKIAotCWlmIChmZW5j ZSAhPSBvbGRfZmVuY2UpIHsKKwkJc3Bpbl9sb2NrKCZzeW5jb2JqLT5sb2NrKTsKIAkJbGlzdF9m b3JfZWFjaF9lbnRyeV9zYWZlKGN1ciwgdG1wLCAmc3luY29iai0+Y2JfbGlzdCwgbm9kZSkgewog CQkJbGlzdF9kZWxfaW5pdCgmY3VyLT5ub2RlKTsKIAkJCWN1ci0+ZnVuYyhzeW5jb2JqLCBjdXIp OwogCQl9CisJCXNwaW5fdW5sb2NrKCZzeW5jb2JqLT5sb2NrKTsKIAl9Ci0KLQlzcGluX3VubG9j aygmc3luY29iai0+bG9jayk7Ci0KLQlkbWFfZmVuY2VfcHV0KG9sZF9mZW5jZSk7CiB9CiBFWFBP UlRfU1lNQk9MKGRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2UpOwogCkBAIC0yMjAsNiArMzgyLDUy IEBAIHN0YXRpYyBpbnQgZHJtX3N5bmNvYmpfYXNzaWduX251bGxfaGFuZGxlKHN0cnVjdCBkcm1f c3luY29iaiAqc3luY29iaikKIAlyZXR1cm4gMDsKIH0KIAorI2RlZmluZSBXQUlUX0ZPUl9TVUJN SVRfTVNFQ1MgMTAwMDAKKworc3RhdGljIHN0cnVjdCBkbWFfZmVuY2UgKgorZHJtX3N5bmNvYmpf cG9pbnRfZ2V0KHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwgdTY0IHBvaW50LCB1NjQgZmxh Z3MpCit7CisJc3RydWN0IGRtYV9mZW5jZSAqZmVuY2U7CisJaW50IHJldCA9IDA7CisKKwlpZiAo ZmxhZ3MgJiBEUk1fU1lOQ09CSl9XQUlUX0ZMQUdTX1dBSVRfRk9SX1NVQk1JVCkgeworCQlyZXQg PSB3YWl0X2V2ZW50X3RpbWVvdXQoc3luY29iai0+d3EsCisJCQkJCSBwb2ludCA8PSBzeW5jb2Jq LT5zaWduYWxfcG9pbnQsCisJCQkJCSBtc2Vjc190b19qaWZmaWVzKFdBSVRfRk9SX1NVQk1JVF9N U0VDUykpOworCQlpZiAocmV0IDw9IDApCisJCQlyZXR1cm4gTlVMTDsKKwl9CisJc3Bpbl9sb2Nr KCZzeW5jb2JqLT5sb2NrKTsKKwlmZW5jZSA9IGRybV9zeW5jb2JqX2ZpbmRfc2lnbmFsX3B0X2Zv cl9wb2ludChzeW5jb2JqLCBwb2ludCk7CisJc3Bpbl91bmxvY2soJnN5bmNvYmotPmxvY2spOwor CXJldHVybiBmZW5jZTsKK30KKworaW50IGRybV9zeW5jb2JqX3NlYXJjaF9mZW5jZShzdHJ1Y3Qg ZHJtX3N5bmNvYmogKnN5bmNvYmosIHU2NCBwb2ludCwKKwkJCSAgICAgdTY0IGZsYWdzLCBzdHJ1 Y3QgZG1hX2ZlbmNlICoqZmVuY2UpCit7CisJdTY0IHB0X3ZhbHVlID0gcG9pbnQ7CisJaW50IHJl dCA9IDA7CisKKwlpZiAoIXN5bmNvYmopCisJCXJldHVybiAtRU5PRU5UOworCisJZHJtX3N5bmNv YmpfZ2FyYmFnZV9jb2xsZWN0aW9uKHN5bmNvYmopOworCWlmIChzeW5jb2JqLT50eXBlID09IERS TV9TWU5DT0JKX1RZUEVfSU5ESVZJRFVBTCkgeworCQkvKklORElWSURVQUwgc3luY29iaiBhbHdh eXMgd2FpdCBvbiBsYXN0IHB0ICovCisJCXB0X3ZhbHVlID0gc3luY29iai0+c2lnbmFsX3BvaW50 OworCisJCWlmIChwdF92YWx1ZSA9PSAwKQorCQkJcHRfdmFsdWUgKz0gRFJNX1NZTkNPQkpfSU5E SVZJRFVBTF9QT0lOVDsKKwl9CisJKmZlbmNlID0gZHJtX3N5bmNvYmpfcG9pbnRfZ2V0KHN5bmNv YmosIHB0X3ZhbHVlLCBmbGFncyk7CisJaWYgKCEqZmVuY2UpIHsKKwkJcmV0ID0gLUVJTlZBTDsK Kwl9CisJcmV0dXJuIHJldDsKK30KK0VYUE9SVF9TWU1CT0woZHJtX3N5bmNvYmpfc2VhcmNoX2Zl bmNlKTsKKwogLyoqCiAgKiBkcm1fc3luY29ial9maW5kX2ZlbmNlIC0gbG9va3VwIGFuZCByZWZl cmVuY2UgdGhlIGZlbmNlIGluIGEgc3luYyBvYmplY3QKICAqIEBmaWxlX3ByaXZhdGU6IGRybSBm aWxlIHByaXZhdGUgcG9pbnRlcgpAQCAtMjI4LDcgKzQzNiw3IEBAIHN0YXRpYyBpbnQgZHJtX3N5 bmNvYmpfYXNzaWduX251bGxfaGFuZGxlKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaikKICAq IEBmZW5jZTogb3V0IHBhcmFtZXRlciBmb3IgdGhlIGZlbmNlCiAgKgogICogVGhpcyBpcyBqdXN0 IGEgY29udmVuaWVuY2UgZnVuY3Rpb24gdGhhdCBjb21iaW5lcyBkcm1fc3luY29ial9maW5kKCkg YW5kCi0gKiBkcm1fc3luY29ial9mZW5jZV9nZXQoKS4KKyAqIGRybV9zeW5jb2JqX2xvb2t1cF9m ZW5jZSgpLgogICoKICAqIFJldHVybnMgMCBvbiBzdWNjZXNzIG9yIGEgbmVnYXRpdmUgZXJyb3Ig dmFsdWUgb24gZmFpbHVyZS4gT24gc3VjY2VzcyBAZmVuY2UKICAqIGNvbnRhaW5zIGEgcmVmZXJl bmNlIHRvIHRoZSBmZW5jZSwgd2hpY2ggbXVzdCBiZSByZWxlYXNlZCBieSBjYWxsaW5nCkBAIC0y MzksMTUgKzQ0Nyw5IEBAIGludCBkcm1fc3luY29ial9maW5kX2ZlbmNlKHN0cnVjdCBkcm1fZmls ZSAqZmlsZV9wcml2YXRlLAogCQkJICAgc3RydWN0IGRtYV9mZW5jZSAqKmZlbmNlKQogewogCXN0 cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiA9IGRybV9zeW5jb2JqX2ZpbmQoZmlsZV9wcml2YXRl LCBoYW5kbGUpOwotCWludCByZXQgPSAwOwotCi0JaWYgKCFzeW5jb2JqKQotCQlyZXR1cm4gLUVO T0VOVDsKKwlpbnQgcmV0OwogCi0JKmZlbmNlID0gZHJtX3N5bmNvYmpfZmVuY2VfZ2V0KHN5bmNv YmopOwotCWlmICghKmZlbmNlKSB7Ci0JCXJldCA9IC1FSU5WQUw7Ci0JfQorCXJldCA9IGRybV9z eW5jb2JqX3NlYXJjaF9mZW5jZShzeW5jb2JqLCBwb2ludCwgZmxhZ3MsIGZlbmNlKTsKIAlkcm1f c3luY29ial9wdXQoc3luY29iaik7CiAJcmV0dXJuIHJldDsKIH0KQEAgLTI2NCw3ICs0NjYsNyBA QCB2b2lkIGRybV9zeW5jb2JqX2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpCiAJc3RydWN0IGRybV9z eW5jb2JqICpzeW5jb2JqID0gY29udGFpbmVyX29mKGtyZWYsCiAJCQkJCQkgICBzdHJ1Y3QgZHJt X3N5bmNvYmosCiAJCQkJCQkgICByZWZjb3VudCk7Ci0JZHJtX3N5bmNvYmpfcmVwbGFjZV9mZW5j ZShzeW5jb2JqLCAwLCBOVUxMKTsKKwlkcm1fc3luY29ial9maW5pKHN5bmNvYmopOwogCWtmcmVl KHN5bmNvYmopOwogfQogRVhQT1JUX1NZTUJPTChkcm1fc3luY29ial9mcmVlKTsKQEAgLTI5NCw2 ICs0OTYsMTEgQEAgaW50IGRybV9zeW5jb2JqX2NyZWF0ZShzdHJ1Y3QgZHJtX3N5bmNvYmogKipv dXRfc3luY29iaiwgdWludDMyX3QgZmxhZ3MsCiAJa3JlZl9pbml0KCZzeW5jb2JqLT5yZWZjb3Vu dCk7CiAJSU5JVF9MSVNUX0hFQUQoJnN5bmNvYmotPmNiX2xpc3QpOwogCXNwaW5fbG9ja19pbml0 KCZzeW5jb2JqLT5sb2NrKTsKKwlpZiAoZmxhZ3MgJiBEUk1fU1lOQ09CSl9DUkVBVEVfVFlQRV9U SU1FTElORSkKKwkJc3luY29iai0+dHlwZSA9IERSTV9TWU5DT0JKX1RZUEVfVElNRUxJTkU7CisJ ZWxzZQorCQlzeW5jb2JqLT50eXBlID0gRFJNX1NZTkNPQkpfVFlQRV9JTkRJVklEVUFMOworCWRy bV9zeW5jb2JqX2luaXQoc3luY29iaik7CiAKIAlpZiAoZmxhZ3MgJiBEUk1fU1lOQ09CSl9DUkVB VEVfU0lHTkFMRUQpIHsKIAkJcmV0ID0gZHJtX3N5bmNvYmpfYXNzaWduX251bGxfaGFuZGxlKHN5 bmNvYmopOwpAQCAtNTc2LDcgKzc4Myw4IEBAIGRybV9zeW5jb2JqX2NyZWF0ZV9pb2N0bChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQlyZXR1cm4gLUVOT0RFVjsKIAogCS8q IG5vIHZhbGlkIGZsYWdzIHlldCAqLwotCWlmIChhcmdzLT5mbGFncyAmIH5EUk1fU1lOQ09CSl9D UkVBVEVfU0lHTkFMRUQpCisJaWYgKGFyZ3MtPmZsYWdzICYgfihEUk1fU1lOQ09CSl9DUkVBVEVf U0lHTkFMRUQgfAorCQkJICAgIERSTV9TWU5DT0JKX0NSRUFURV9UWVBFX1RJTUVMSU5FKSkKIAkJ cmV0dXJuIC1FSU5WQUw7CiAKIAlyZXR1cm4gZHJtX3N5bmNvYmpfY3JlYXRlX2FzX2hhbmRsZShm aWxlX3ByaXZhdGUsCkBAIC02NjksOSArODc3LDggQEAgc3RhdGljIHZvaWQgc3luY29ial93YWl0 X3N5bmNvYmpfZnVuYyhzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosCiAJc3RydWN0IHN5bmNv Ympfd2FpdF9lbnRyeSAqd2FpdCA9CiAJCWNvbnRhaW5lcl9vZihjYiwgc3RydWN0IHN5bmNvYmpf d2FpdF9lbnRyeSwgc3luY29ial9jYik7CiAKLQkvKiBUaGlzIGhhcHBlbnMgaW5zaWRlIHRoZSBz eW5jb2JqIGxvY2sgKi8KLQl3YWl0LT5mZW5jZSA9IGRtYV9mZW5jZV9nZXQocmN1X2RlcmVmZXJl bmNlX3Byb3RlY3RlZChzeW5jb2JqLT5mZW5jZSwKLQkJCQkJCQkgICAgICBsb2NrZGVwX2lzX2hl bGQoJnN5bmNvYmotPmxvY2spKSk7CisJZHJtX3N5bmNvYmpfc2VhcmNoX2ZlbmNlKHN5bmNvYmos IDAsIDAsICZ3YWl0LT5mZW5jZSk7CisKIAl3YWtlX3VwX3Byb2Nlc3Mod2FpdC0+dGFzayk7CiB9 CiAKQEAgLTY5OCw3ICs5MDUsOCBAQCBzdGF0aWMgc2lnbmVkIGxvbmcgZHJtX3N5bmNvYmpfYXJy YXlfd2FpdF90aW1lb3V0KHN0cnVjdCBkcm1fc3luY29iaiAqKnN5bmNvYmpzLAogCXNpZ25hbGVk X2NvdW50ID0gMDsKIAlmb3IgKGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogCQllbnRyaWVzW2ld LnRhc2sgPSBjdXJyZW50OwotCQllbnRyaWVzW2ldLmZlbmNlID0gZHJtX3N5bmNvYmpfZmVuY2Vf Z2V0KHN5bmNvYmpzW2ldKTsKKwkJcmV0ID0gZHJtX3N5bmNvYmpfc2VhcmNoX2ZlbmNlKHN5bmNv YmpzW2ldLCAwLCAwLAorCQkJCQkgICAgICAgJmVudHJpZXNbaV0uZmVuY2UpOwogCQlpZiAoIWVu dHJpZXNbaV0uZmVuY2UpIHsKIAkJCWlmIChmbGFncyAmIERSTV9TWU5DT0JKX1dBSVRfRkxBR1Nf V0FJVF9GT1JfU1VCTUlUKSB7CiAJCQkJY29udGludWU7CkBAIC05NzAsMTIgKzExNzgsMTMgQEAg ZHJtX3N5bmNvYmpfcmVzZXRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0 YSwKIAlpZiAocmV0IDwgMCkKIAkJcmV0dXJuIHJldDsKIAotCWZvciAoaSA9IDA7IGkgPCBhcmdz LT5jb3VudF9oYW5kbGVzOyBpKyspCi0JCWRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2Uoc3luY29i anNbaV0sIDAsIE5VTEwpOwotCisJZm9yIChpID0gMDsgaSA8IGFyZ3MtPmNvdW50X2hhbmRsZXM7 IGkrKykgeworCQlkcm1fc3luY29ial9maW5pKHN5bmNvYmpzW2ldKTsKKwkJZHJtX3N5bmNvYmpf aW5pdChzeW5jb2Jqc1tpXSk7CisJfQogCWRybV9zeW5jb2JqX2FycmF5X2ZyZWUoc3luY29ianMs IGFyZ3MtPmNvdW50X2hhbmRsZXMpOwogCi0JcmV0dXJuIDA7CisJcmV0dXJuIHJldDsKIH0KIAog aW50CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVy LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKaW5kZXggMGE4 ZDJkNjRmMzgwLi44YThkMjFiMjQxMTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9leGVjYnVmZmVyLmMKQEAgLTIxMzcsNyArMjEzNyw3IEBAIGF3YWl0X2ZlbmNlX2FycmF5KHN0 cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViLAogCQlpZiAoIShmbGFncyAmIEk5MTVfRVhFQ19GRU5D RV9XQUlUKSkKIAkJCWNvbnRpbnVlOwogCi0JCWZlbmNlID0gZHJtX3N5bmNvYmpfZmVuY2VfZ2V0 KHN5bmNvYmopOworCQlkcm1fc3luY29ial9zZWFyY2hfZmVuY2Uoc3luY29iaiwgMCwgMCwgJmZl bmNlKTsKIAkJaWYgKCFmZW5jZSkKIAkJCXJldHVybiAtRUlOVkFMOwogCmRpZmYgLS1naXQgYS9p bmNsdWRlL2RybS9kcm1fc3luY29iai5oIGIvaW5jbHVkZS9kcm0vZHJtX3N5bmNvYmouaAppbmRl eCAyZWRhNDRkZWY2MzkuLmFjZjFjM2E0NmQ5NSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vZHJt X3N5bmNvYmouaAorKysgYi9pbmNsdWRlL2RybS9kcm1fc3luY29iai5oCkBAIC0zMCw2ICszMCwx MSBAQAogCiBzdHJ1Y3QgZHJtX3N5bmNvYmpfY2I7CiAKK2VudW0gZHJtX3N5bmNvYmpfdHlwZSB7 CisJRFJNX1NZTkNPQkpfVFlQRV9JTkRJVklEVUFMLAorCURSTV9TWU5DT0JKX1RZUEVfVElNRUxJ TkUKK307CisKIC8qKgogICogc3RydWN0IGRybV9zeW5jb2JqIC0gc3luYyBvYmplY3QuCiAgKgpA QCAtNDEsMTkgKzQ2LDM2IEBAIHN0cnVjdCBkcm1fc3luY29iaiB7CiAJICovCiAJc3RydWN0IGty ZWYgcmVmY291bnQ7CiAJLyoqCi0JICogQGZlbmNlOgotCSAqIE5VTEwgb3IgYSBwb2ludGVyIHRv IHRoZSBmZW5jZSBib3VuZCB0byB0aGlzIG9iamVjdC4KLQkgKgotCSAqIFRoaXMgZmllbGQgc2hv dWxkIG5vdCBiZSB1c2VkIGRpcmVjdGx5LiBVc2UgZHJtX3N5bmNvYmpfZmVuY2VfZ2V0KCkKLQkg KiBhbmQgZHJtX3N5bmNvYmpfcmVwbGFjZV9mZW5jZSgpIGluc3RlYWQuCisJICogQHR5cGU6IGlu ZGljYXRlIHN5bmNvYmogdHlwZQorCSAqLworCWVudW0gZHJtX3N5bmNvYmpfdHlwZSB0eXBlOwor CS8qKgorCSAqIEB3cTogd2FpdCBzaWduYWwgb3BlcmF0aW9uIHdvcmsgcXVldWUKKwkgKi8KKwl3 YWl0X3F1ZXVlX2hlYWRfdAl3cTsKKwkvKioKKwkgKiBAdGltZWxpbmVfY29udGV4dDogZmVuY2Ug Y29udGV4dCB1c2VkIGJ5IHRpbWVsaW5lCiAJICovCi0Jc3RydWN0IGRtYV9mZW5jZSBfX3JjdSAq ZmVuY2U7CisJdTY0IHRpbWVsaW5lX2NvbnRleHQ7CiAJLyoqCi0JICogQGNiX2xpc3Q6IExpc3Qg b2YgY2FsbGJhY2tzIHRvIGNhbGwgd2hlbiB0aGUgJmZlbmNlIGdldHMgcmVwbGFjZWQuCisJICog QHRpbWVsaW5lOiBzeW5jb2JqIHRpbWVsaW5lIHZhbHVlLCB3aGljaCBpbmRpY2F0ZXMgcG9pbnQg aXMgc2lnbmFsZWQuCiAJICovCisJdTY0IHRpbWVsaW5lOworCS8qKgorCSAqIEBzaWduYWxfcG9p bnQ6IHdoaWNoIGluZGljYXRlcyB0aGUgbGF0ZXN0IHNpZ25hbGVyIHBvaW50LgorCSAqLworCXU2 NCBzaWduYWxfcG9pbnQ7CisJLyoqCisJICogQHNpZ25hbF9wdF9saXN0OiBzaWduYWxlciBwb2lu dCBsaXN0LgorCSAqLworCXN0cnVjdCBsaXN0X2hlYWQgc2lnbmFsX3B0X2xpc3Q7CisKKwkvKioK KyAgICAgICAgICogQGNiX2xpc3Q6IExpc3Qgb2YgY2FsbGJhY2tzIHRvIGNhbGwgd2hlbiB0aGUg JmZlbmNlIGdldHMgcmVwbGFjZWQuCisgICAgICAgICAqLwogCXN0cnVjdCBsaXN0X2hlYWQgY2Jf bGlzdDsKIAkvKioKLQkgKiBAbG9jazogUHJvdGVjdHMgJmNiX2xpc3QgYW5kIHdyaXRlLWxvY2tz ICZmZW5jZS4KKwkgKiBAbG9jazogUHJvdGVjdHMgc3luY29iaiBsaXN0IGFuZCB3cml0ZS1sb2Nr cyAmZmVuY2UuCiAJICovCiAJc3BpbmxvY2tfdCBsb2NrOwogCS8qKgpAQCAtNjgsNyArOTAsNyBA QCB0eXBlZGVmIHZvaWQgKCpkcm1fc3luY29ial9mdW5jX3QpKHN0cnVjdCBkcm1fc3luY29iaiAq c3luY29iaiwKIC8qKgogICogc3RydWN0IGRybV9zeW5jb2JqX2NiIC0gY2FsbGJhY2sgZm9yIGRy bV9zeW5jb2JqX2FkZF9jYWxsYmFjawogICogQG5vZGU6IHVzZWQgYnkgZHJtX3N5bmNvYl9hZGRf Y2FsbGJhY2sgdG8gYXBwZW5kIHRoaXMgc3RydWN0IHRvCi0gKgkgICZkcm1fc3luY29iai5jYl9s aXN0CisgKiAgICAgICAmZHJtX3N5bmNvYmouY2JfbGlzdAogICogQGZ1bmM6IGRybV9zeW5jb2Jq X2Z1bmNfdCB0byBjYWxsCiAgKgogICogVGhpcyBzdHJ1Y3Qgd2lsbCBiZSBpbml0aWFsaXplZCBi eSBkcm1fc3luY29ial9hZGRfY2FsbGJhY2ssIGFkZGl0aW9uYWwKQEAgLTEwNiwyOSArMTI4LDYg QEAgZHJtX3N5bmNvYmpfcHV0KHN0cnVjdCBkcm1fc3luY29iaiAqb2JqKQogCWtyZWZfcHV0KCZv YmotPnJlZmNvdW50LCBkcm1fc3luY29ial9mcmVlKTsKIH0KIAotLyoqCi0gKiBkcm1fc3luY29i al9mZW5jZV9nZXQgLSBnZXQgYSByZWZlcmVuY2UgdG8gYSBmZW5jZSBpbiBhIHN5bmMgb2JqZWN0 Ci0gKiBAc3luY29iajogc3luYyBvYmplY3QuCi0gKgotICogVGhpcyBhY3F1aXJlcyBhZGRpdGlv bmFsIHJlZmVyZW5jZSB0byAmZHJtX3N5bmNvYmouZmVuY2UgY29udGFpbmVkIGluIEBvYmosCi0g KiBpZiBub3QgTlVMTC4gSXQgaXMgaWxsZWdhbCB0byBjYWxsIHRoaXMgd2l0aG91dCBhbHJlYWR5 IGhvbGRpbmcgYSByZWZlcmVuY2UuCi0gKiBObyBsb2NrcyByZXF1aXJlZC4KLSAqCi0gKiBSZXR1 cm5zOgotICogRWl0aGVyIHRoZSBmZW5jZSBvZiBAb2JqIG9yIE5VTEwgaWYgdGhlcmUncyBub25l LgotICovCi1zdGF0aWMgaW5saW5lIHN0cnVjdCBkbWFfZmVuY2UgKgotZHJtX3N5bmNvYmpfZmVu Y2VfZ2V0KHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaikKLXsKLQlzdHJ1Y3QgZG1hX2ZlbmNl ICpmZW5jZTsKLQotCXJjdV9yZWFkX2xvY2soKTsKLQlmZW5jZSA9IGRtYV9mZW5jZV9nZXRfcmN1 X3NhZmUoJnN5bmNvYmotPmZlbmNlKTsKLQlyY3VfcmVhZF91bmxvY2soKTsKLQotCXJldHVybiBm ZW5jZTsKLX0KLQogc3RydWN0IGRybV9zeW5jb2JqICpkcm1fc3luY29ial9maW5kKHN0cnVjdCBk cm1fZmlsZSAqZmlsZV9wcml2YXRlLAogCQkJCSAgICAgdTMyIGhhbmRsZSk7CiB2b2lkIGRybV9z eW5jb2JqX3JlcGxhY2VfZmVuY2Uoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLCB1NjQgcG9p bnQsCkBAIC0xNDIsNSArMTQxLDcgQEAgaW50IGRybV9zeW5jb2JqX2NyZWF0ZShzdHJ1Y3QgZHJt X3N5bmNvYmogKipvdXRfc3luY29iaiwgdWludDMyX3QgZmxhZ3MsCiBpbnQgZHJtX3N5bmNvYmpf Z2V0X2hhbmRsZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSwKIAkJCSAgIHN0cnVjdCBk cm1fc3luY29iaiAqc3luY29iaiwgdTMyICpoYW5kbGUpOwogaW50IGRybV9zeW5jb2JqX2dldF9m ZChzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosIGludCAqcF9mZCk7CitpbnQgZHJtX3N5bmNv Ympfc2VhcmNoX2ZlbmNlKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwgdTY0IHBvaW50LCB1 NjQgZmxhZ3MsCisJCQkgICAgIHN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZSk7CiAKICNlbmRpZgpk aWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2RybS9kcm0uaCBiL2luY2x1ZGUvdWFwaS9kcm0vZHJt LmgKaW5kZXggMzAwZjMzNjYzM2YyLi5jZWJkYjI1NDFlYjcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUv dWFwaS9kcm0vZHJtLmgKKysrIGIvaW5jbHVkZS91YXBpL2RybS9kcm0uaApAQCAtNzE3LDYgKzcx Nyw3IEBAIHN0cnVjdCBkcm1fcHJpbWVfaGFuZGxlIHsKIHN0cnVjdCBkcm1fc3luY29ial9jcmVh dGUgewogCV9fdTMyIGhhbmRsZTsKICNkZWZpbmUgRFJNX1NZTkNPQkpfQ1JFQVRFX1NJR05BTEVE ICgxIDw8IDApCisjZGVmaW5lIERSTV9TWU5DT0JKX0NSRUFURV9UWVBFX1RJTUVMSU5FICgxIDw8 IDEpCiAJX191MzIgZmxhZ3M7CiB9OwogCi0tIAoyLjE3LjEKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vYW1kLWdmeAo=