From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 16/39] drm/i915/execlists: Virtual engine bonding Date: Wed, 13 Mar 2019 14:43:38 +0000 Message-ID: <20190313144401.17735-16-chris@chris-wilson.co.uk> References: <20190313144401.17735-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id 818D86E0F2 for ; Wed, 13 Mar 2019 14:45:07 +0000 (UTC) In-Reply-To: <20190313144401.17735-1-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org U29tZSB1c2VycyByZXF1aXJlIHRoYXQgd2hlbiBhIG1hc3RlciBiYXRjaCBpcyBleGVjdXRlZCBv biBvbmUgcGFydGljdWxhcgplbmdpbmUsIGEgY29tcGFuaW9uIGJhdGNoIGlzIHJ1biBzaW11bHRh bmVvdXNseSBvbiBhIHNwZWNpZmljIHNsYXZlCmVuZ2luZS4gRm9yIHRoaXMgcHVycG9zZSwgd2Ug aW50cm9kdWNlIHZpcnR1YWwgZW5naW5lIGJvbmRpbmcsIGFsbG93aW5nCm1hcHMgb2YgbWFzdGVy OnNsYXZlcyB0byBiZSBjb25zdHJ1Y3RlZCB0byBjb25zdHJhaW4gd2hpY2ggcGh5c2ljYWwKZW5n aW5lcyBhIHZpcnR1YWwgZW5naW5lIG1heSBzZWxlY3QgZ2l2ZW4gYSBmZW5jZSBvbiBhIG1hc3Rl ciBlbmdpbmUuCgpGb3IgdGhlIG1vbWVudCwgd2UgY29udGludWUgdG8gaWdub3JlIHRoZSBpc3N1 ZSBvZiBwcmVlbXB0aW9uIGRlZmVycmluZwp0aGUgbWFzdGVyIHJlcXVlc3QgZm9yIGxhdGVyLiBJ ZGVhbGx5LCB3ZSB3b3VsZCBsaWtlIHRvIHRoZW4gYWxzbyByZW1vdmUKdGhlIHNsYXZlIGFuZCBy dW4gc29tZXRoaW5nIGVsc2UgcmF0aGVyIHRoYW4gaGF2ZSBpdCBzdGFsbCB0aGUgcGlwZWxpbmUu CldpdGggbG9hZCBiYWxhbmNpbmcsIHdlIHNob3VsZCBiZSBhYmxlIHRvIG1vdmUgd29ya2xvYWQg YXJvdW5kIGl0LCBidXQKdGhlcmUgaXMgYSBzaW1pbGFyIHN0YWxsIG9uIHRoZSBtYXN0ZXIgcGlw ZWxpbmUgd2hpbGUgaXQgbWF5IHdhaXQgZm9yCnRoZSBzbGF2ZSB0byBiZSBleGVjdXRlZC4gQXQg dGhlIGNvc3Qgb2YgbW9yZSBsYXRlbmN5IGZvciB0aGUgYm9uZGVkCnJlcXVlc3QsIGl0IG1heSBi ZSBpbnRlcmVzdGluZyB0byBsYXVuY2ggYm90aCBvbiB0aGVpciBlbmdpbmVzIGluCmxvY2tzdGVw LiAoQnViYmxlcyBhYm91bmQuKQoKT3BlbnM6IEFsc28gd2hhdCBhYm91dCBib25kaW5nIGFuIGVu Z2luZSBhcyBpdHMgb3duIG1hc3Rlcj8gSXQgZG9lc24ndApicmVhayBhbnl0aGluZyBpbnRlcm5h bGx5LCBzbyBhbGxvdyB0aGUgc2lsbGluZXNzLgoKdjI6IEVtYW5jaXBhdGUgdGhlIGJvbmRzCnYz OiBDb3VwbGUgaW4gZGVsYXllZCBzY2hlZHVsaW5nIGZvciB0aGUgc2VsZnRlc3RzCnY0OiBIYW5k bGUgaW52YWxpZCBtdXR1YWxseSBleGNsdXNpdmUgYm9uZGluZwp2NTogTWVudGlvbiB3aGF0IHRo ZSB1YXBpIGRvZXMKClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2ls c29uLmNvLnVrPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyAg ICAgICB8ICA1MCArKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMgICAg ICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oICAgICAg ICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfdHlwZXMuaCAg ICAgfCAgIDcgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAgICAgICAg IHwgMTQzICsrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaCAg ICAgICAgICAgICAgfCAgIDQgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVs X2xyYy5jICAgIHwgMTg1ICsrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUv c2VsZnRlc3RzL2xpYl9zd19mZW5jZS5jIHwgICAzICsKIGluY2x1ZGUvdWFwaS9kcm0vaTkxNV9k cm0uaCAgICAgICAgICAgICAgICAgICB8ICAzMyArKysrCiA5IGZpbGVzIGNoYW5nZWQsIDQyNyBp bnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Y29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCmluZGV4 IDk4NzYzZDNmMWIxMi4uMGVjNzhjMzg2NDczIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fY29udGV4dC5jCkBAIC0xNTEzLDggKzE1MTMsNTggQEAgc2V0X2VuZ2luZXNfX2xvYWRfYmFs YW5jZShzdHJ1Y3QgaTkxNV91c2VyX2V4dGVuc2lvbiBfX3VzZXIgKmJhc2UsIHZvaWQgKmRhdGEp CiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQKK3NldF9lbmdpbmVzX19ib25kKHN0cnVjdCBp OTE1X3VzZXJfZXh0ZW5zaW9uIF9fdXNlciAqYmFzZSwgdm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3Qg aTkxNV9jb250ZXh0X2VuZ2luZXNfYm9uZCBfX3VzZXIgKmV4dCA9CisJCWNvbnRhaW5lcl9vZl91 c2VyKGJhc2UsIHR5cGVvZigqZXh0KSwgYmFzZSk7CisJY29uc3Qgc3RydWN0IHNldF9lbmdpbmVz ICpzZXQgPSBkYXRhOworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKm1hc3RlcjsKKwl1MzIgY2xh c3MsIGluc3RhbmNlLCBzaWJsaW5nczsKKwl1MTYgaWR4OworCWludCBlcnI7CisKKwlpZiAoZ2V0 X3VzZXIoaWR4LCAmZXh0LT52aXJ0dWFsX2luZGV4KSkKKwkJcmV0dXJuIC1FRkFVTFQ7CisKKwlp ZiAoaWR4ID49IHNldC0+bmVuZ2luZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZHggPSBhcnJh eV9pbmRleF9ub3NwZWMoaWR4LCBzZXQtPm5lbmdpbmUpOworCWlmICghc2V0LT5lbmdpbmVzW2lk eF0pCisJCXJldHVybiAtRUlOVkFMOworCisJLyoKKwkgKiBBIG5vbi12aXJ0dWFsIGVuZ2luZSBo YXMgMCBzaWJsaW5ncyB0byBjaG9vc2UgYmV0d2VlbjsgYW5kIHN1Ym1pdAorCSAqIGZlbmNlIHdp bGwgYWx3YXlzIGJlIGRpcmVjdGVkIHRvIHRoZSBvbmUgZW5naW5lLgorCSAqLworCWlmICghaW50 ZWxfZW5naW5lX2lzX3ZpcnR1YWwoc2V0LT5lbmdpbmVzW2lkeF0pKQorCQlyZXR1cm4gMDsKKwor CWVyciA9IGNoZWNrX3VzZXJfbWJ6KCZleHQtPm1ieik7CisJaWYgKGVycikKKwkJcmV0dXJuIGVy cjsKKworCWlmIChnZXRfdXNlcihjbGFzcywgJmV4dC0+bWFzdGVyX2NsYXNzKSkKKwkJcmV0dXJu IC1FRkFVTFQ7CisKKwlpZiAoZ2V0X3VzZXIoaW5zdGFuY2UsICZleHQtPm1hc3Rlcl9pbnN0YW5j ZSkpCisJCXJldHVybiAtRUZBVUxUOworCisJbWFzdGVyID0gaW50ZWxfZW5naW5lX2xvb2t1cF91 c2VyKHNldC0+Y3R4LT5pOTE1LCBjbGFzcywgaW5zdGFuY2UpOworCWlmICghbWFzdGVyKQorCQly ZXR1cm4gLUVJTlZBTDsKKworCWlmIChnZXRfdXNlcihzaWJsaW5ncywgJmV4dC0+c2libGluZ19t YXNrKSkKKwkJcmV0dXJuIC1FRkFVTFQ7CisKKwlyZXR1cm4gaW50ZWxfdmlydHVhbF9lbmdpbmVf YXR0YWNoX2JvbmQoc2V0LT5lbmdpbmVzW2lkeF0sCisJCQkJCQltYXN0ZXIsIHNpYmxpbmdzKTsK K30KKwogc3RhdGljIGNvbnN0IGk5MTVfdXNlcl9leHRlbnNpb25fZm4gc2V0X2VuZ2luZXNfX2V4 dGVuc2lvbnNbXSA9IHsKIAlbSTkxNV9DT05URVhUX0VOR0lORVNfRVhUX0xPQURfQkFMQU5DRV0g PSBzZXRfZW5naW5lc19fbG9hZF9iYWxhbmNlLAorCVtJOTE1X0NPTlRFWFRfRU5HSU5FU19FWFRf Qk9ORF0gPSBzZXRfZW5naW5lc19fYm9uZCwKIH07CiAKIHN0YXRpYyBpbnQKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9yZXF1ZXN0LmMKaW5kZXggMGE0NmY4MTEzZjVjLi45Y2U3MTBiYWE0NTIgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jCkBAIC03NDMsNiArNzQzLDcgQEAgaTkxNV9yZXF1 ZXN0X2FsbG9jKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgc3RydWN0IGk5MTVfZ2Vt X2NvbnRleHQgKmN0eCkKIAlycS0+YmF0Y2ggPSBOVUxMOwogCXJxLT5jYXB0dXJlX2xpc3QgPSBO VUxMOwogCXJxLT53YWl0Ym9vc3QgPSBmYWxzZTsKKwlycS0+ZXhlY3V0aW9uX21hc2sgPSB+MHU7 CiAKIAkvKgogCSAqIFJlc2VydmUgc3BhY2UgaW4gdGhlIHJpbmcgYnVmZmVyIGZvciBhbGwgdGhl IGNvbW1hbmRzIHJlcXVpcmVkIHRvCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3JlcXVlc3QuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oCmluZGV4 IGQ0ZjZiMjk0MDEzMC4uODYyYjI1OTMwZGUwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3JlcXVlc3QuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVl c3QuaApAQCAtMTQ1LDYgKzE0NSw3IEBAIHN0cnVjdCBpOTE1X3JlcXVlc3QgewogCSAqLwogCXN0 cnVjdCBpOTE1X3NjaGVkX25vZGUgc2NoZWQ7CiAJc3RydWN0IGk5MTVfZGVwZW5kZW5jeSBkZXA7 CisJdW5zaWduZWQgaW50IGV4ZWN1dGlvbl9tYXNrOwogCiAJLyoKIAkgKiBBIGNvbnZlbmllbmNl IHBvaW50ZXIgdG8gdGhlIGN1cnJlbnQgYnJlYWRjcnVtYiB2YWx1ZSBzdG9yZWQgaW4KZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV90eXBlcy5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX3R5cGVzLmgKaW5kZXggMzIyZmJkYTY1MTkwLi4x ZGEzNTUwOWQ4MTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2lu ZV90eXBlcy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV90eXBlcy5o CkBAIC0zODQsNiArMzg0LDEzIEBAIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgewogCSAqLwogCXZv aWQJCSgqc3VibWl0X3JlcXVlc3QpKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKTsKIAorCS8qCisJ ICogQ2FsbGVkIG9uIHNpZ25hbGluZyBvZiBhIFNVQk1JVF9GRU5DRSwgcGFzc2luZyBhbG9uZyB0 aGUgc2lnbmFsaW5nCisJICogcmVxdWVzdCBkb3duIHRvIHRoZSBib25kZWQgcGFpcnMuCisJICov CisJdm9pZCAgICAgICAgICAgICgqYm9uZF9leGVjdXRlKShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpy cSwKKwkJCQkJc3RydWN0IGRtYV9mZW5jZSAqc2lnbmFsKTsKKwogCS8qCiAJICogQ2FsbCB3aGVu IHRoZSBwcmlvcml0eSBvbiBhIHJlcXVlc3QgaGFzIGNoYW5nZWQgYW5kIGl0IGFuZCBpdHMKIAkg KiBkZXBlbmRlbmNpZXMgbWF5IG5lZWQgcmVzY2hlZHVsaW5nLiBOb3RlIHRoZSByZXF1ZXN0IGl0 c2VsZiBtYXkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKaW5kZXggZDU0YjdjYzQzNjMzLi43OWFi NGJjNTQzZmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCkBAIC0xOTEsNiArMTkxLDE4IEBA IHN0cnVjdCB2aXJ0dWFsX2VuZ2luZSB7CiAJCWludCBwcmlvOwogCX0gbm9kZXNbSTkxNV9OVU1f RU5HSU5FU107CiAKKwkvKgorCSAqIEtlZXAgdHJhY2sgb2YgYm9uZGVkIHBhaXJzIC0tIHJlc3Ry aWN0aW9ucyB1cG9uIG9uIG91ciBzZWxlY3Rpb24KKwkgKiBvZiBwaHlzaWNhbCBlbmdpbmVzIGFu eSBwYXJ0aWN1bGFyIHJlcXVlc3QgbWF5IGJlIHN1Ym1pdHRlZCB0by4KKwkgKiBJZiB3ZSByZWNl aXZlIGEgc3VibWl0LWZlbmNlIGZyb20gYSBtYXN0ZXIgZW5naW5lLCB3ZSB3aWxsIG9ubHkKKwkg KiB1c2Ugb25lIG9mIHNpYmxpbmdfbWFzayBwaHlzaWNhbCBlbmdpbmVzLgorCSAqLworCXN0cnVj dCB2ZV9ib25kIHsKKwkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqbWFzdGVyOworCQl1bnNpZ25l ZCBpbnQgc2libGluZ19tYXNrOworCX0gKmJvbmRzOworCXVuc2lnbmVkIGludCBuYm9uZDsKKwog CS8qIEFuZCBmaW5hbGx5LCB3aGljaCBwaHlzaWNhbCBlbmdpbmVzIHRoaXMgdmlydHVhbCBlbmdp bmUgbWFwcyBvbnRvLiAqLwogCXVuc2lnbmVkIGludCBjb3VudDsKIAlzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICpzaWJsaW5nc1swXTsKQEAgLTMxNTYsNiArMzE2OCw4IEBAIHN0YXRpYyB2b2lkIHZp cnR1YWxfY29udGV4dF9kZXN0cm95KHN0cnVjdCBrcmVmICprcmVmKQogCWlmICh2ZS0+Y29udGV4 dC5zdGF0ZSkKIAkJX19leGVjbGlzdHNfY29udGV4dF9maW5pKCZ2ZS0+Y29udGV4dCk7CiAKKwlr ZnJlZSh2ZS0+Ym9uZHMpOworCiAJaTkxNV90aW1lbGluZV9maW5pKCZ2ZS0+YmFzZS50aW1lbGlu ZSk7CiAJa2ZyZWUodmUpOwogfQpAQCAtMzIwNyw5ICszMjIxLDI4IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgaW50ZWxfY29udGV4dF9vcHMgdmlydHVhbF9jb250ZXh0X29wcyA9IHsKIAkuZGVzdHJv eSA9IHZpcnR1YWxfY29udGV4dF9kZXN0cm95LAogfTsKIAorc3RhdGljIHZvaWQgdmlydHVhbF9z dWJtaXRfZXJyb3Ioc3RydWN0IHZpcnR1YWxfZW5naW5lICp2ZSkKK3sKKwlzdHJ1Y3QgaTkxNV9y ZXF1ZXN0ICpycSA9IGZldGNoX2FuZF96ZXJvKCZ2ZS0+cmVxdWVzdCk7CisJc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lID0gdmUtPnNpYmxpbmdzWzBdOyAvKiBhbnkgdmljdGltICovCisK KwlkbWFfZmVuY2Vfc2V0X2Vycm9yKCZycS0+ZmVuY2UsIC1FTk9ERVYpOworCWk5MTVfcmVxdWVz dF9tYXJrX2NvbXBsZXRlKHJxKTsKKworCXNwaW5fbG9jaygmZW5naW5lLT50aW1lbGluZS5sb2Nr KTsKKwlycS0+ZW5naW5lID0gZW5naW5lOworCisJX19pOTE1X3JlcXVlc3Rfc3VibWl0KHJxKTsK KwkvKiBtb3ZlIHRvIHN0YXJ0IG9mIGxpc3QgdG8gYXZvaWQgdW53aW5kIGNvbXBsaWNhdGlvbnMg Ki8KKwlsaXN0X21vdmUoJnJxLT5saW5rLCAmZW5naW5lLT50aW1lbGluZS5yZXF1ZXN0cyk7CisK KwlzcGluX3VubG9jaygmZW5naW5lLT50aW1lbGluZS5sb2NrKTsKK30KKwogc3RhdGljIHZvaWQg dmlydHVhbF9zdWJtaXNzaW9uX3Rhc2tsZXQodW5zaWduZWQgbG9uZyBkYXRhKQogewogCXN0cnVj dCB2aXJ0dWFsX2VuZ2luZSAqIGNvbnN0IHZlID0gKHN0cnVjdCB2aXJ0dWFsX2VuZ2luZSAqKWRh dGE7CisJdW5zaWduZWQgaW50IG1hc2s7CiAJdW5zaWduZWQgaW50IG47CiAJaW50IHByaW87CiAK QEAgLTMyMTgsMTIgKzMyNTEsMzUgQEAgc3RhdGljIHZvaWQgdmlydHVhbF9zdWJtaXNzaW9uX3Rh c2tsZXQodW5zaWduZWQgbG9uZyBkYXRhKQogCQlyZXR1cm47CiAKIAlsb2NhbF9pcnFfZGlzYWJs ZSgpOworCisJbWFzayA9IDA7CisJc3Bpbl9sb2NrKCZ2ZS0+YmFzZS50aW1lbGluZS5sb2NrKTsK KwlpZiAodmUtPnJlcXVlc3QpIHsKKwkJbWFzayA9IHZlLT5yZXF1ZXN0LT5leGVjdXRpb25fbWFz azsKKwkJaWYgKHVubGlrZWx5KCFtYXNrKSkKKwkJCXZpcnR1YWxfc3VibWl0X2Vycm9yKHZlKTsK Kwl9CisJc3Bpbl91bmxvY2soJnZlLT5iYXNlLnRpbWVsaW5lLmxvY2spOworCWlmICghbWFzaykK KwkJZ290byBvdXRfaXJxOworCiAJZm9yIChuID0gMDsgUkVBRF9PTkNFKHZlLT5yZXF1ZXN0KSAm JiBuIDwgdmUtPmNvdW50OyBuKyspIHsKIAkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqc2libGlu ZyA9IHZlLT5zaWJsaW5nc1tuXTsKIAkJc3RydWN0IHZlX25vZGUgKiBjb25zdCBub2RlID0gJnZl LT5ub2Rlc1tzaWJsaW5nLT5pZF07CiAJCXN0cnVjdCByYl9ub2RlICoqcGFyZW50LCAqcmI7CiAJ CWJvb2wgZmlyc3Q7CiAKKwkJaWYgKHVubGlrZWx5KCEobWFzayAmIHNpYmxpbmctPm1hc2spKSkg eworCQkJaWYgKCFSQl9FTVBUWV9OT0RFKCZub2RlLT5yYikpIHsKKwkJCQlzcGluX2xvY2soJnNp YmxpbmctPnRpbWVsaW5lLmxvY2spOworCQkJCXJiX2VyYXNlX2NhY2hlZCgmbm9kZS0+cmIsCisJ CQkJCQkmc2libGluZy0+ZXhlY2xpc3RzLnZpcnR1YWwpOworCQkJCVJCX0NMRUFSX05PREUoJm5v ZGUtPnJiKTsKKwkJCQlzcGluX3VubG9jaygmc2libGluZy0+dGltZWxpbmUubG9jayk7CisJCQl9 CisJCQljb250aW51ZTsKKwkJfQorCiAJCXNwaW5fbG9jaygmc2libGluZy0+dGltZWxpbmUubG9j ayk7CiAKIAkJaWYgKCFSQl9FTVBUWV9OT0RFKCZub2RlLT5yYikpIHsKQEAgLTMyNzAsNiArMzMy Niw3IEBAIHN0YXRpYyB2b2lkIHZpcnR1YWxfc3VibWlzc2lvbl90YXNrbGV0KHVuc2lnbmVkIGxv bmcgZGF0YSkKIAogCQlzcGluX3VubG9jaygmc2libGluZy0+dGltZWxpbmUubG9jayk7CiAJfQor b3V0X2lycToKIAlsb2NhbF9pcnFfZW5hYmxlKCk7CiB9CiAKQEAgLTMyODYsNiArMzM0MywzMCBA QCBzdGF0aWMgdm9pZCB2aXJ0dWFsX3N1Ym1pdF9yZXF1ZXN0KHN0cnVjdCBpOTE1X3JlcXVlc3Qg KnJlcXVlc3QpCiAJdGFza2xldF9zY2hlZHVsZSgmdmUtPmJhc2UuZXhlY2xpc3RzLnRhc2tsZXQp OwogfQogCitzdGF0aWMgc3RydWN0IHZlX2JvbmQgKgordmlydHVhbF9maW5kX2JvbmQoc3RydWN0 IHZpcnR1YWxfZW5naW5lICp2ZSwgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqbWFzdGVyKQorewor CWludCBpOworCisJZm9yIChpID0gMDsgaSA8IHZlLT5uYm9uZDsgaSsrKSB7CisJCWlmICh2ZS0+ Ym9uZHNbaV0ubWFzdGVyID09IG1hc3RlcikKKwkJCXJldHVybiAmdmUtPmJvbmRzW2ldOworCX0K KworCXJldHVybiBOVUxMOworfQorCitzdGF0aWMgdm9pZAordmlydHVhbF9ib25kX2V4ZWN1dGUo c3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIHN0cnVjdCBkbWFfZmVuY2UgKnNpZ25hbCkKK3sKKwlz dHJ1Y3QgdmlydHVhbF9lbmdpbmUgKnZlID0gdG9fdmlydHVhbF9lbmdpbmUocnEtPmVuZ2luZSk7 CisJc3RydWN0IHZlX2JvbmQgKmJvbmQ7CisKKwlib25kID0gdmlydHVhbF9maW5kX2JvbmQodmUs IHRvX3JlcXVlc3Qoc2lnbmFsKS0+ZW5naW5lKTsKKwlpZiAoYm9uZCkgLyogWFhYIHNlcmlhbGlz ZSB3aXRoIHJxLT5sb2NrPyAqLworCQlycS0+ZXhlY3V0aW9uX21hc2sgJj0gYm9uZC0+c2libGlu Z19tYXNrOworfQorCiBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICoKIGludGVsX2V4ZWNsaXN0c19j cmVhdGVfdmlydHVhbChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAogCQkJICAgICAgIHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKipzaWJsaW5ncywKQEAgLTMzMjQsNiArMzQwNSw3IEBAIGlu dGVsX2V4ZWNsaXN0c19jcmVhdGVfdmlydHVhbChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4 LAogCiAJdmUtPmJhc2Uuc2NoZWR1bGUgPSBpOTE1X3NjaGVkdWxlOwogCXZlLT5iYXNlLnN1Ym1p dF9yZXF1ZXN0ID0gdmlydHVhbF9zdWJtaXRfcmVxdWVzdDsKKwl2ZS0+YmFzZS5ib25kX2V4ZWN1 dGUgPSB2aXJ0dWFsX2JvbmRfZXhlY3V0ZTsKIAogCXZlLT5iYXNlLmV4ZWNsaXN0cy5xdWV1ZV9w cmlvcml0eV9oaW50ID0gSU5UX01JTjsKIAl0YXNrbGV0X2luaXQoJnZlLT5iYXNlLmV4ZWNsaXN0 cy50YXNrbGV0LApAQCAtMzQxNCw5ICszNDk2LDcwIEBAIGludGVsX2V4ZWNsaXN0c19jbG9uZV92 aXJ0dWFsKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCiAJaWYgKElTX0VSUihkc3QpKQog CQlyZXR1cm4gZHN0OwogCisJaWYgKHNlLT5uYm9uZCkgeworCQlzdHJ1Y3QgdmlydHVhbF9lbmdp bmUgKmRlID0gdG9fdmlydHVhbF9lbmdpbmUoZHN0KTsKKworCQlkZS0+Ym9uZHMgPSBrbWVtZHVw KHNlLT5ib25kcywKKwkJCQkgICAgc2l6ZW9mKCpzZS0+Ym9uZHMpICogc2UtPm5ib25kLAorCQkJ CSAgICBHRlBfS0VSTkVMKTsKKwkJaWYgKCFkZS0+Ym9uZHMpIHsKKwkJCWludGVsX3ZpcnR1YWxf ZW5naW5lX2Rlc3Ryb3koZHN0KTsKKwkJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOworCQl9CisK KwkJZGUtPm5ib25kID0gc2UtPm5ib25kOworCX0KKwogCXJldHVybiBkc3Q7CiB9CiAKK3N0YXRp YyB1bnNpZ25lZCBsb25nCit2aXJ0dWFsX2V4ZWN1dGlvbl9tYXNrKHN0cnVjdCB2aXJ0dWFsX2Vu Z2luZSAqdmUsIHVuc2lnbmVkIGxvbmcgbWFzaykKK3sKKwl1bnNpZ25lZCBsb25nIGVtYXNrID0g MDsKKwlpbnQgYml0OworCisJZm9yX2VhY2hfc2V0X2JpdChiaXQsICZtYXNrLCB2ZS0+Y291bnQp CisJCWVtYXNrIHw9IHZlLT5zaWJsaW5nc1tiaXRdLT5tYXNrOworCisJcmV0dXJuIGVtYXNrOwor fQorCitpbnQgaW50ZWxfdmlydHVhbF9lbmdpbmVfYXR0YWNoX2JvbmQoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lLAorCQkJCSAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqbWFzdGVy LAorCQkJCSAgICAgdW5zaWduZWQgbG9uZyBtYXNrKQoreworCXN0cnVjdCB2aXJ0dWFsX2VuZ2lu ZSAqdmUgPSB0b192aXJ0dWFsX2VuZ2luZShlbmdpbmUpOworCXN0cnVjdCB2ZV9ib25kICpib25k OworCisJaWYgKG1hc2sgPj4gdmUtPmNvdW50KQorCQlyZXR1cm4gLUVJTlZBTDsKKworCW1hc2sg PSB2aXJ0dWFsX2V4ZWN1dGlvbl9tYXNrKHZlLCBtYXNrKTsKKwlpZiAoIW1hc2spCisJCXJldHVy biAtRUlOVkFMOworCisJYm9uZCA9IHZpcnR1YWxfZmluZF9ib25kKHZlLCBtYXN0ZXIpOworCWlm IChib25kKSB7CisJCWJvbmQtPnNpYmxpbmdfbWFzayB8PSBtYXNrOworCQlyZXR1cm4gMDsKKwl9 CisKKwlib25kID0ga3JlYWxsb2ModmUtPmJvbmRzLAorCQkJc2l6ZW9mKCpib25kKSAqICh2ZS0+ bmJvbmQgKyAxKSwKKwkJCUdGUF9LRVJORUwpOworCWlmICghYm9uZCkKKwkJcmV0dXJuIC1FTk9N RU07CisKKwlib25kW3ZlLT5uYm9uZF0ubWFzdGVyID0gbWFzdGVyOworCWJvbmRbdmUtPm5ib25k XS5zaWJsaW5nX21hc2sgPSBtYXNrOworCisJdmUtPmJvbmRzID0gYm9uZDsKKwl2ZS0+bmJvbmQr KzsKKworCXJldHVybiAwOworfQorCiB2b2lkIGludGVsX3ZpcnR1YWxfZW5naW5lX2Rlc3Ryb3ko c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewogCXN0cnVjdCB2aXJ0dWFsX2VuZ2lu ZSAqdmUgPSB0b192aXJ0dWFsX2VuZ2luZShlbmdpbmUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHJjLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMu aAppbmRleCA5ZDkwZGM2OGUwMmIuLjc3Yjg1NjQ4MDQ1YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHJjLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf bHJjLmgKQEAgLTEyMSw2ICsxMjEsMTAgQEAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqCiBpbnRl bF9leGVjbGlzdHNfY2xvbmVfdmlydHVhbChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAog CQkJICAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqc3JjKTsKIAoraW50IGludGVsX3ZpcnR1 YWxfZW5naW5lX2F0dGFjaF9ib25kKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKKwkJ CQkgICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKm1hc3RlciwKKwkJCQkgICAgIHVuc2lnbmVk IGxvbmcgbWFzayk7CisKIHZvaWQgaW50ZWxfdmlydHVhbF9lbmdpbmVfZGVzdHJveShzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwogCiB1MzIgZ2VuOF9tYWtlX3JwY3Moc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUsIHN0cnVjdCBpbnRlbF9zc2V1ICpjdHhfc3NldSk7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfbHJjLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfbHJjLmMKaW5kZXggNGI4YTMzOTUyOWQx Li5kMmUwMDE3NWM0MTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0 cy9pbnRlbF9scmMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxf bHJjLmMKQEAgLTEzLDYgKzEzLDcgQEAKICNpbmNsdWRlICJpZ3RfbGl2ZV90ZXN0LmgiCiAjaW5j bHVkZSAiaWd0X3NwaW5uZXIuaCIKICNpbmNsdWRlICJpOTE1X3JhbmRvbS5oIgorI2luY2x1ZGUg ImxpYl9zd19mZW5jZS5oIgogCiAjaW5jbHVkZSAibW9ja19jb250ZXh0LmgiCiAKQEAgLTEyMjQs NiArMTIyNSwxODkgQEAgc3RhdGljIGludCBsaXZlX3ZpcnR1YWxfZW5naW5lKHZvaWQgKmFyZykK IAlyZXR1cm4gZXJyOwogfQogCitzdGF0aWMgaW50IGJvbmRfdmlydHVhbF9lbmdpbmUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCisJCQkgICAgICAgdW5zaWduZWQgaW50IGNsYXNzLAor CQkJICAgICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKipzaWJsaW5ncywKKwkJCSAgICAgICB1 bnNpZ25lZCBpbnQgbnNpYmxpbmcsCisJCQkgICAgICAgdW5zaWduZWQgaW50IGZsYWdzKQorI2Rl ZmluZSBCT05EX1NDSEVEVUxFIEJJVCgwKQoreworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKm1h c3RlcjsKKwlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4OworCXN0cnVjdCBpOTE1X3JlcXVl c3QgKnJxWzE2XTsKKwllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKKwl1bnNpZ25lZCBsb25nIG47 CisJaW50IGVycjsKKworCUdFTV9CVUdfT04obnNpYmxpbmcgPj0gQVJSQVlfU0laRShycSkgLSAx KTsKKworCWN0eCA9IGtlcm5lbF9jb250ZXh0KGk5MTUpOworCWlmICghY3R4KQorCQlyZXR1cm4g LUVOT01FTTsKKworCWVyciA9IDA7CisJcnFbMF0gPSBFUlJfUFRSKC1FTk9NRU0pOworCWZvcl9l YWNoX2VuZ2luZShtYXN0ZXIsIGk5MTUsIGlkKSB7CisJCXN0cnVjdCBpOTE1X3N3X2ZlbmNlIGZl bmNlID0ge307CisKKwkJaWYgKG1hc3Rlci0+Y2xhc3MgPT0gY2xhc3MpCisJCQljb250aW51ZTsK KworCQltZW1zZXRfcCgodm9pZCAqKXJxLCBFUlJfUFRSKC1FSU5WQUwpLCBBUlJBWV9TSVpFKHJx KSk7CisKKwkJcnFbMF0gPSBpOTE1X3JlcXVlc3RfYWxsb2MobWFzdGVyLCBjdHgpOworCQlpZiAo SVNfRVJSKHJxWzBdKSkgeworCQkJZXJyID0gUFRSX0VSUihycVswXSk7CisJCQlnb3RvIG91dDsK KwkJfQorCQlpOTE1X3JlcXVlc3RfZ2V0KHJxWzBdKTsKKworCQlpZiAoZmxhZ3MgJiBCT05EX1ND SEVEVUxFKSB7CisJCQlvbnN0YWNrX2ZlbmNlX2luaXQoJmZlbmNlKTsKKwkJCWVyciA9IGk5MTVf c3dfZmVuY2VfYXdhaXRfc3dfZmVuY2VfZ2ZwKCZycVswXS0+c3VibWl0LAorCQkJCQkJCSAgICAg ICAmZmVuY2UsCisJCQkJCQkJICAgICAgIEdGUF9LRVJORUwpOworCQl9CisJCWk5MTVfcmVxdWVz dF9hZGQocnFbMF0pOworCQlpZiAoZXJyIDwgMCkKKwkJCWdvdG8gb3V0OworCisJCWZvciAobiA9 IDA7IG4gPCBuc2libGluZzsgbisrKSB7CisJCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmU7CisKKwkJCWVuZ2luZSA9IGludGVsX2V4ZWNsaXN0c19jcmVhdGVfdmlydHVhbChjdHgsCisJ CQkJCQkJCXNpYmxpbmdzLAorCQkJCQkJCQluc2libGluZyk7CisJCQlpZiAoSVNfRVJSKGVuZ2lu ZSkpIHsKKwkJCQllcnIgPSBQVFJfRVJSKGVuZ2luZSk7CisJCQkJb25zdGFja19mZW5jZV9maW5p KCZmZW5jZSk7CisJCQkJZ290byBvdXQ7CisJCQl9CisKKwkJCWVyciA9IGludGVsX3ZpcnR1YWxf ZW5naW5lX2F0dGFjaF9ib25kKGVuZ2luZSwKKwkJCQkJCQkgICAgICAgbWFzdGVyLAorCQkJCQkJ CSAgICAgICBCSVQobikpOworCQkJaWYgKGVycikgeworCQkJCWludGVsX3ZpcnR1YWxfZW5naW5l X2Rlc3Ryb3koZW5naW5lKTsKKwkJCQlvbnN0YWNrX2ZlbmNlX2ZpbmkoJmZlbmNlKTsKKwkJCQln b3RvIG91dDsKKwkJCX0KKworCQkJcnFbbiArIDFdID0gaTkxNV9yZXF1ZXN0X2FsbG9jKGVuZ2lu ZSwgY3R4KTsKKwkJCWlmIChJU19FUlIocnFbbiArIDFdKSkgeworCQkJCWVyciA9IFBUUl9FUlIo cnFbbiArIDFdKTsKKwkJCQlpbnRlbF92aXJ0dWFsX2VuZ2luZV9kZXN0cm95KGVuZ2luZSk7CisJ CQkJb25zdGFja19mZW5jZV9maW5pKCZmZW5jZSk7CisJCQkJZ290byBvdXQ7CisJCQl9CisJCQlp OTE1X3JlcXVlc3RfZ2V0KHJxW24gKyAxXSk7CisKKwkJCWVyciA9IGk5MTVfcmVxdWVzdF9hd2Fp dF9leGVjdXRpb24ocnFbbiArIDFdLAorCQkJCQkJCSAgICZycVswXS0+ZmVuY2UsCisJCQkJCQkJ ICAgZW5naW5lLT5ib25kX2V4ZWN1dGUpOworCQkJaTkxNV9yZXF1ZXN0X2FkZChycVtuICsgMV0p OworCQkJaW50ZWxfdmlydHVhbF9lbmdpbmVfZGVzdHJveShlbmdpbmUpOworCQkJaWYgKGVyciA8 IDApIHsKKwkJCQlvbnN0YWNrX2ZlbmNlX2ZpbmkoJmZlbmNlKTsKKwkJCQlnb3RvIG91dDsKKwkJ CX0KKwkJfQorCQlvbnN0YWNrX2ZlbmNlX2ZpbmkoJmZlbmNlKTsKKworCQlpZiAoaTkxNV9yZXF1 ZXN0X3dhaXQocnFbMF0sCisJCQkJCUk5MTVfV0FJVF9MT0NLRUQsCisJCQkJCUhaIC8gMTApIDwg MCkgeworCQkJcHJfZXJyKCJNYXN0ZXIgcmVxdWVzdCBkaWQgbm90IGV4ZWN1dGUgKG9uICVzKSFc biIsCisJCQkgICAgICAgcnFbMF0tPmVuZ2luZS0+bmFtZSk7CisJCQllcnIgPSAtRUlPOworCQkJ Z290byBvdXQ7CisJCX0KKworCQlmb3IgKG4gPSAwOyBuIDwgbnNpYmxpbmc7IG4rKykgeworCQkJ aWYgKGk5MTVfcmVxdWVzdF93YWl0KHJxW24gKyAxXSwKKwkJCQkJICAgICAgSTkxNV9XQUlUX0xP Q0tFRCwKKwkJCQkJICAgICAgTUFYX1NDSEVEVUxFX1RJTUVPVVQpIDwgMCkgeworCQkJCWVyciA9 IC1FSU87CisJCQkJZ290byBvdXQ7CisJCQl9CisKKwkJCWlmIChycVtuICsgMV0tPmVuZ2luZSAh PSBzaWJsaW5nc1tuXSkgeworCQkJCXByX2VycigiQm9uZGVkIHJlcXVlc3QgZGlkIG5vdCBleGVj dXRlIG9uIHRhcmdldCBlbmdpbmU6IGV4cGVjdGVkICVzLCB1c2VkICVzOyBtYXN0ZXIgd2FzICVz XG4iLAorCQkJCSAgICAgICBzaWJsaW5nc1tuXS0+bmFtZSwKKwkJCQkgICAgICAgcnFbbiArIDFd LT5lbmdpbmUtPm5hbWUsCisJCQkJICAgICAgIHJxWzBdLT5lbmdpbmUtPm5hbWUpOworCQkJCWVy ciA9IC1FSU5WQUw7CisJCQkJZ290byBvdXQ7CisJCQl9CisJCX0KKworCQlmb3IgKG4gPSAwOyAh SVNfRVJSKHJxW25dKTsgbisrKQorCQkJaTkxNV9yZXF1ZXN0X3B1dChycVtuXSk7CisJCXJxWzBd ID0gRVJSX1BUUigtRU5PTUVNKTsKKwl9CisKK291dDoKKwlmb3IgKG4gPSAwOyAhSVNfRVJSKHJx W25dKTsgbisrKQorCQlpOTE1X3JlcXVlc3RfcHV0KHJxW25dKTsKKwlpZiAoaWd0X2ZsdXNoX3Rl c3QoaTkxNSwgSTkxNV9XQUlUX0xPQ0tFRCkpCisJCWVyciA9IC1FSU87CisKKwlrZXJuZWxfY29u dGV4dF9jbG9zZShjdHgpOworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQgbGl2ZV92aXJ0 dWFsX2JvbmQodm9pZCAqYXJnKQoreworCXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGhhc2UgeworCQlj b25zdCBjaGFyICpuYW1lOworCQl1bnNpZ25lZCBpbnQgZmxhZ3M7CisJfSBwaGFzZXNbXSA9IHsK KwkJeyAiIiwgMCB9LAorCQl7ICJzY2hlZHVsZSIsIEJPTkRfU0NIRURVTEUgfSwKKwkJeyB9LAor CX07CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBhcmc7CisJc3RydWN0IGludGVs X2VuZ2luZV9jcyAqc2libGluZ3NbTUFYX0VOR0lORV9JTlNUQU5DRSArIDFdOworCXVuc2lnbmVk IGludCBjbGFzcywgaW5zdDsKKwlpbnQgZXJyID0gMDsKKworCWlmIChVU0VTX0dVQ19TVUJNSVNT SU9OKGk5MTUpKQorCQlyZXR1cm4gMDsKKworCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3Rf bXV0ZXgpOworCisJZm9yIChjbGFzcyA9IDA7IGNsYXNzIDw9IE1BWF9FTkdJTkVfQ0xBU1M7IGNs YXNzKyspIHsKKwkJY29uc3Qgc3RydWN0IHBoYXNlICpwOworCQlpbnQgbnNpYmxpbmc7CisKKwkJ bnNpYmxpbmcgPSAwOworCQlmb3IgKGluc3QgPSAwOyBpbnN0IDw9IE1BWF9FTkdJTkVfSU5TVEFO Q0U7IGluc3QrKykgeworCQkJaWYgKCFpOTE1LT5lbmdpbmVfY2xhc3NbY2xhc3NdW2luc3RdKQor CQkJCWJyZWFrOworCisJCQlHRU1fQlVHX09OKG5zaWJsaW5nID09IEFSUkFZX1NJWkUoc2libGlu Z3MpKTsKKwkJCXNpYmxpbmdzW25zaWJsaW5nKytdID0gaTkxNS0+ZW5naW5lX2NsYXNzW2NsYXNz XVtpbnN0XTsKKwkJfQorCQlpZiAobnNpYmxpbmcgPCAyKQorCQkJY29udGludWU7CisKKwkJZm9y IChwID0gcGhhc2VzOyBwLT5uYW1lOyBwKyspIHsKKwkJCWVyciA9IGJvbmRfdmlydHVhbF9lbmdp bmUoaTkxNSwKKwkJCQkJCSAgY2xhc3MsIHNpYmxpbmdzLCBuc2libGluZywKKwkJCQkJCSAgcC0+ ZmxhZ3MpOworCQkJaWYgKGVycikgeworCQkJCXByX2VycigiJXMoJXMpOiBmYWlsZWQgY2xhc3M9 JWQsIG5zaWJsaW5nPSVkLCBlcnI9JWRcbiIsCisJCQkJICAgICAgIF9fZnVuY19fLCBwLT5uYW1l LCBjbGFzcywgbnNpYmxpbmcsIGVycik7CisJCQkJZ290byBvdXRfdW5sb2NrOworCQkJfQorCQl9 CisJfQorCitvdXRfdW5sb2NrOgorCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRl eCk7CisJcmV0dXJuIGVycjsKK30KKwogaW50IGludGVsX2V4ZWNsaXN0c19saXZlX3NlbGZ0ZXN0 cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIHsKIAlzdGF0aWMgY29uc3Qgc3RydWN0 IGk5MTVfc3VidGVzdCB0ZXN0c1tdID0gewpAQCAtMTIzNiw2ICsxNDIwLDcgQEAgaW50IGludGVs X2V4ZWNsaXN0c19saXZlX3NlbGZ0ZXN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkK IAkJU1VCVEVTVChsaXZlX3ByZWVtcHRfaGFuZyksCiAJCVNVQlRFU1QobGl2ZV9wcmVlbXB0X3Nt b2tlKSwKIAkJU1VCVEVTVChsaXZlX3ZpcnR1YWxfZW5naW5lKSwKKwkJU1VCVEVTVChsaXZlX3Zp cnR1YWxfYm9uZCksCiAJfTsKIAogCWlmICghSEFTX0VYRUNMSVNUUyhpOTE1KSkKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9saWJfc3dfZmVuY2UuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9saWJfc3dfZmVuY2UuYwppbmRleCAyYmZhNzJjMTY1 NGIuLmI5NzZjMTI4MTdjNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRl c3RzL2xpYl9zd19mZW5jZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9s aWJfc3dfZmVuY2UuYwpAQCAtNDUsNiArNDUsOSBAQCB2b2lkIF9fb25zdGFja19mZW5jZV9pbml0 KHN0cnVjdCBpOTE1X3N3X2ZlbmNlICpmZW5jZSwKIAogdm9pZCBvbnN0YWNrX2ZlbmNlX2Zpbmko c3RydWN0IGk5MTVfc3dfZmVuY2UgKmZlbmNlKQogeworCWlmICghZmVuY2UtPmZsYWdzKQorCQly ZXR1cm47CisKIAlpOTE1X3N3X2ZlbmNlX2NvbW1pdChmZW5jZSk7CiAJaTkxNV9zd19mZW5jZV9m aW5pKGZlbmNlKTsKIH0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCBi L2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAppbmRleCBjMDU3NTM2ZGY1Y2QuLmVkMzNiOGFm ODY5MiAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCisrKyBiL2luY2x1 ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaApAQCAtMTUzMiw2ICsxNTMyLDEwIEBAIHN0cnVjdCBkcm1f aTkxNV9nZW1fY29udGV4dF9wYXJhbSB7CiAgKiBzaXplZCBhcmd1bWVudCwgd2lsbCByZXZlcnQg YmFjayB0byBkZWZhdWx0IHNldHRpbmdzLgogICoKICAqIFNlZSBzdHJ1Y3QgaTkxNV9jb250ZXh0 X3BhcmFtX2VuZ2luZXMuCisgKgorICogRXh0ZW5zaW9uczoKKyAqICAgaTkxNV9jb250ZXh0X2Vu Z2luZXNfbG9hZF9iYWxhbmNlIChJOTE1X0NPTlRFWFRfRU5HSU5FU19FWFRfTE9BRF9CQUxBTkNF KQorICogICBpOTE1X2NvbnRleHRfZW5naW5lc19ib25kIChJOTE1X0NPTlRFWFRfRU5HSU5FU19F WFRfQk9ORCkKICAqLwogI2RlZmluZSBJOTE1X0NPTlRFWFRfUEFSQU1fRU5HSU5FUwkweGEKIC8q IE11c3QgYmUga2VwdCBjb21wYWN0IC0tIG5vIGhvbGVzIGFuZCB3ZWxsIGRvY3VtZW50ZWQgKi8K QEAgLTE2MjcsOSArMTYzMSwzOCBAQCBzdHJ1Y3QgaTkxNV9jb250ZXh0X2VuZ2luZXNfbG9hZF9i YWxhbmNlIHsKIAlfX3U2NCBtYno2NFs0XTsgLyogcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2U7IG11 c3QgYmUgemVybyAqLwogfTsKIAorLyoKKyAqIGk5MTVfY29udGV4dF9lbmdpbmVzX2JvbmQ6Cisg KgorICogQ29uc3RydWN0ZWQgYm9uZGVkIHBhaXJzIGZvciBleGVjdXRpb24gd2l0aGluIGEgdmly dHVhbCBlbmdpbmUuCisgKgorICogQWxsIGVuZ2luZXMgYXJlIGVxdWFsLCBidXQgc29tZSBhcmUg bW9yZSBlcXVhbCB0aGFuIG90aGVycy4gR2l2ZW4KKyAqIHRoZSBkaXN0cmlidXRpb24gb2YgcmVz b3VyY2VzIGluIHRoZSBIVywgaXQgbWF5IGJlIHByZWZlcmFibGUgdG8gcnVuCisgKiBhIHJlcXVl c3Qgb24gYSBnaXZlbiBzdWJzZXQgb2YgZW5naW5lcyBpbiBwYXJhbGxlbCB0byBhIHJlcXVlc3Qg b24gYQorICogc3BlY2lmaWMgZW5naW5lLiBXZSBlbmFibGUgdGhpcyBzZWxlY3Rpb24gb2YgZW5n aW5lcyB3aXRoaW4gYSB2aXJ0dWFsCisgKiBlbmdpbmUgYnkgc3BlY2lmeWluZyBib25kaW5nIHBh aXJzLCBmb3IgYW55IGdpdmVuIG1hc3RlciBlbmdpbmUgd2Ugd2lsbAorICogb25seSBleGVjdXRl IG9uIG9uZSBvZiB0aGUgY29ycmVzcG9uZGluZyBzaWJsaW5ncyB3aXRoaW4gdGhlIHZpcnR1YWwg ZW5naW5lLgorICoKKyAqIFRvIGV4ZWN1dGUgYSByZXF1ZXN0IGluIHBhcmFsbGVsIG9uIHRoZSBt YXN0ZXIgZW5naW5lIGFuZCBhIHNpYmxpbmcgcmVxdWlyZXMKKyAqIGNvb3JkaW5hdGlvbiB3aXRo IGEgSTkxNV9FWEVDX0ZFTkNFX1NVQk1JVC4KKyAqLworc3RydWN0IGk5MTVfY29udGV4dF9lbmdp bmVzX2JvbmQgeworCXN0cnVjdCBpOTE1X3VzZXJfZXh0ZW5zaW9uIGJhc2U7CisKKwlfX3UxNiB2 aXJ0dWFsX2luZGV4OyAvKiBpbmRleCBvZiB2aXJ0dWFsIGVuZ2luZSBpbiBjdHgtPmVuZ2luZXNb XSAqLworCV9fdTE2IG1iejsKKworCV9fdTE2IG1hc3Rlcl9jbGFzczsKKwlfX3UxNiBtYXN0ZXJf aW5zdGFuY2U7CisKKwlfX3U2NCBzaWJsaW5nX21hc2s7IC8qIGJpdG1hc2sgb2YgQklUKHNpYmxp bmdfaW5kZXgpIHdydCB0aGUgdi5lbmdpbmUgKi8KKwlfX3U2NCBmbGFnczsgLyogYWxsIHVuZGVm aW5lZCBmbGFncyBtdXN0IGJlIHplcm8gKi8KK307CisKIHN0cnVjdCBpOTE1X2NvbnRleHRfcGFy YW1fZW5naW5lcyB7CiAJX191NjQgZXh0ZW5zaW9uczsgLyogbGlua2VkIGNoYWluIG9mIGV4dGVu c2lvbiBibG9ja3MsIDAgdGVybWluYXRlcyAqLwogI2RlZmluZSBJOTE1X0NPTlRFWFRfRU5HSU5F U19FWFRfTE9BRF9CQUxBTkNFIDAKKyNkZWZpbmUgSTkxNV9DT05URVhUX0VOR0lORVNfRVhUX0JP TkQgMQogCiAJc3RydWN0IHsKIAkJX191MTYgZW5naW5lX2NsYXNzOyAvKiBzZWUgZW51bSBkcm1f aTkxNV9nZW1fZW5naW5lX2NsYXNzICovCi0tIAoyLjIwLjEKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==