From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 21/22] drm/i915/execlists: Virtual engine bonding Date: Mon, 18 Mar 2019 09:52:03 +0000 Message-ID: <20190318095204.9913-21-chris@chris-wilson.co.uk> References: <20190318095204.9913-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 1C7A3896A5 for ; Mon, 18 Mar 2019 09:52:23 +0000 (UTC) In-Reply-To: <20190318095204.9913-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 ZSB1YXBpIGRvZXMKdjY6IHMvbmJvbmQvbnVtX2JvbmRzLwoKU2lnbmVkLW9mZi1ieTogQ2hyaXMg V2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CkNjOiBUdnJ0a28gVXJzdWxpbiA8dHZy dGtvLnVyc3VsaW5AaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2NvbnRleHQuYyAgICAgICB8ICA1MCArKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9y ZXF1ZXN0LmMgICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVx dWVzdC5oICAgICAgICAgICB8ICAgMyArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdp bmVfdHlwZXMuaCAgICAgfCAgIDcgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMg ICAgICAgICAgICAgIHwgMTUyICsrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9scmMuaCAgICAgICAgICAgICAgfCAgIDQgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvc2Vs ZnRlc3RzL2ludGVsX2xyYy5jICAgIHwgMTg1ICsrKysrKysrKysrKysrKysrKwogZHJpdmVycy9n cHUvZHJtL2k5MTUvc2VsZnRlc3RzL2xpYl9zd19mZW5jZS5jIHwgICAzICsKIGluY2x1ZGUvdWFw aS9kcm0vaTkxNV9kcm0uaCAgICAgICAgICAgICAgICAgICB8ICAzMyArKysrCiA5IGZpbGVzIGNo YW5nZWQsIDQzOCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29u dGV4dC5jCmluZGV4IGIzODdiNzFlMmNiNS4uOGUzYjE2NDYyOTU2IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCkBAIC0xNTMyLDggKzE1MzIsNTggQEAgc2V0X2VuZ2lu ZXNfX2xvYWRfYmFsYW5jZShzdHJ1Y3QgaTkxNV91c2VyX2V4dGVuc2lvbiBfX3VzZXIgKmJhc2Us IHZvaWQgKmRhdGEpCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQKK3NldF9lbmdpbmVzX19i b25kKHN0cnVjdCBpOTE1X3VzZXJfZXh0ZW5zaW9uIF9fdXNlciAqYmFzZSwgdm9pZCAqZGF0YSkK K3sKKwlzdHJ1Y3QgaTkxNV9jb250ZXh0X2VuZ2luZXNfYm9uZCBfX3VzZXIgKmV4dCA9CisJCWNv bnRhaW5lcl9vZl91c2VyKGJhc2UsIHR5cGVvZigqZXh0KSwgYmFzZSk7CisJY29uc3Qgc3RydWN0 IHNldF9lbmdpbmVzICpzZXQgPSBkYXRhOworCXVuc2lnbmVkIGludCBpZHgsIGNsYXNzLCBpbnN0 YW5jZTsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICptYXN0ZXI7CisJdTY0IHNpYmxpbmdzOwor CWludCBlcnI7CisKKwlpZiAoZ2V0X3VzZXIoaWR4LCAmZXh0LT52aXJ0dWFsX2luZGV4KSkKKwkJ cmV0dXJuIC1FRkFVTFQ7CisKKwlpZiAoaWR4ID49IHNldC0+bnVtX2VuZ2luZXMpCisJCXJldHVy biAtRUlOVkFMOworCisJaWR4ID0gYXJyYXlfaW5kZXhfbm9zcGVjKGlkeCwgc2V0LT5udW1fZW5n aW5lcyk7CisJaWYgKCFzZXQtPmVuZ2luZXNbaWR4XSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkv KgorCSAqIEEgbm9uLXZpcnR1YWwgZW5naW5lIGhhcyAwIHNpYmxpbmdzIHRvIGNob29zZSBiZXR3 ZWVuOyBhbmQgc3VibWl0CisJICogZmVuY2Ugd2lsbCBhbHdheXMgYmUgZGlyZWN0ZWQgdG8gdGhl IG9uZSBlbmdpbmUuCisJICovCisJaWYgKCFpbnRlbF9lbmdpbmVfaXNfdmlydHVhbChzZXQtPmVu Z2luZXNbaWR4XSkpCisJCXJldHVybiAwOworCisJZXJyID0gY2hlY2tfdXNlcl9tYnooJmV4dC0+ bWJ6KTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gZXJyOworCisJaWYgKGdldF91c2VyKGNsYXNzLCAm ZXh0LT5tYXN0ZXJfY2xhc3MpKQorCQlyZXR1cm4gLUVGQVVMVDsKKworCWlmIChnZXRfdXNlcihp bnN0YW5jZSwgJmV4dC0+bWFzdGVyX2luc3RhbmNlKSkKKwkJcmV0dXJuIC1FRkFVTFQ7CisKKwlt YXN0ZXIgPSBpbnRlbF9lbmdpbmVfbG9va3VwX3VzZXIoc2V0LT5jdHgtPmk5MTUsIGNsYXNzLCBp bnN0YW5jZSk7CisJaWYgKCFtYXN0ZXIpCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKGdldF91 c2VyKHNpYmxpbmdzLCAmZXh0LT5zaWJsaW5nX21hc2spKQorCQlyZXR1cm4gLUVGQVVMVDsKKwor CXJldHVybiBpbnRlbF92aXJ0dWFsX2VuZ2luZV9hdHRhY2hfYm9uZChzZXQtPmVuZ2luZXNbaWR4 XSwKKwkJCQkJCW1hc3Rlciwgc2libGluZ3MpOworfQorCiBzdGF0aWMgY29uc3QgaTkxNV91c2Vy X2V4dGVuc2lvbl9mbiBzZXRfZW5naW5lc19fZXh0ZW5zaW9uc1tdID0gewogCVtJOTE1X0NPTlRF WFRfRU5HSU5FU19FWFRfTE9BRF9CQUxBTkNFXSA9IHNldF9lbmdpbmVzX19sb2FkX2JhbGFuY2Us CisJW0k5MTVfQ09OVEVYVF9FTkdJTkVTX0VYVF9CT05EXSA9IHNldF9lbmdpbmVzX19ib25kLAog fTsKIAogc3RhdGljIGludApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9y ZXF1ZXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwppbmRleCAwYTQ2 ZjgxMTNmNWMuLjJkMjA5NTE5YTZkNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9yZXF1ZXN0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMK QEAgLTc0Myw2ICs3NDMsNyBAQCBpOTE1X3JlcXVlc3RfYWxsb2Moc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lLCBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQogCXJxLT5iYXRjaCA9 IE5VTEw7CiAJcnEtPmNhcHR1cmVfbGlzdCA9IE5VTEw7CiAJcnEtPndhaXRib29zdCA9IGZhbHNl OworCUlOSVRfQUxMX0VOR0lORVMocnEtPmV4ZWN1dGlvbl9tYXNrKTsKIAogCS8qCiAJICogUmVz ZXJ2ZSBzcGFjZSBpbiB0aGUgcmluZyBidWZmZXIgZm9yIGFsbCB0aGUgY29tbWFuZHMgcmVxdWly ZWQgdG8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmgKaW5kZXggZDRmNmIyOTQwMTMwLi41 YmRhYjY4ODFiMTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVz dC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oCkBAIC0zMiw2ICsz Miw4IEBACiAjaW5jbHVkZSAiaTkxNV9zZWxmdGVzdC5oIgogI2luY2x1ZGUgImk5MTVfc3dfZmVu Y2UuaCIKIAorI2luY2x1ZGUgImludGVsX2VuZ2luZV90eXBlcy5oIgorCiAjaW5jbHVkZSA8dWFw aS9kcm0vaTkxNV9kcm0uaD4KIAogc3RydWN0IGRybV9maWxlOwpAQCAtMTQ1LDYgKzE0Nyw3IEBA IHN0cnVjdCBpOTE1X3JlcXVlc3QgewogCSAqLwogCXN0cnVjdCBpOTE1X3NjaGVkX25vZGUgc2No ZWQ7CiAJc3RydWN0IGk5MTVfZGVwZW5kZW5jeSBkZXA7CisJaW50ZWxfZW5naW5lX21hc2tfdCBl eGVjdXRpb25fbWFzazsKIAogCS8qCiAJICogQSBjb252ZW5pZW5jZSBwb2ludGVyIHRvIHRoZSBj dXJyZW50IGJyZWFkY3J1bWIgdmFsdWUgc3RvcmVkIGluCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2VuZ2luZV90eXBlcy5oCmluZGV4IDY2YWIxZGVlYjdmNS4uMmYxNDg4MDlmNjNjIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfdHlwZXMuaAorKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfdHlwZXMuaApAQCAtMzkxLDYgKzM5MSwx MyBAQCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzIHsKIAkgKi8KIAl2b2lkCQkoKnN1Ym1pdF9yZXF1 ZXN0KShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSk7CiAKKwkvKgorCSAqIENhbGxlZCBvbiBzaWdu YWxpbmcgb2YgYSBTVUJNSVRfRkVOQ0UsIHBhc3NpbmcgYWxvbmcgdGhlIHNpZ25hbGluZworCSAq IHJlcXVlc3QgZG93biB0byB0aGUgYm9uZGVkIHBhaXJzLgorCSAqLworCXZvaWQgICAgICAgICAg ICAoKmJvbmRfZXhlY3V0ZSkoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCisJCQkJCXN0cnVjdCBk bWFfZmVuY2UgKnNpZ25hbCk7CisKIAkvKgogCSAqIENhbGwgd2hlbiB0aGUgcHJpb3JpdHkgb24g YSByZXF1ZXN0IGhhcyBjaGFuZ2VkIGFuZCBpdCBhbmQgaXRzCiAJICogZGVwZW5kZW5jaWVzIG1h eSBuZWVkIHJlc2NoZWR1bGluZy4gTm90ZSB0aGUgcmVxdWVzdCBpdHNlbGYgbWF5CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2xyYy5jCmluZGV4IDkyNmVmMDdmNWMzOC4uMDI3YzVlZmYyZGNlIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9scmMuYwpAQCAtMTkxLDYgKzE5MSwxOCBAQCBzdHJ1Y3QgdmlydHVhbF9l bmdpbmUgewogCQlpbnQgcHJpbzsKIAl9IG5vZGVzW0k5MTVfTlVNX0VOR0lORVNdOwogCisJLyoK KwkgKiBLZWVwIHRyYWNrIG9mIGJvbmRlZCBwYWlycyAtLSByZXN0cmljdGlvbnMgdXBvbiBvbiBv dXIgc2VsZWN0aW9uCisJICogb2YgcGh5c2ljYWwgZW5naW5lcyBhbnkgcGFydGljdWxhciByZXF1 ZXN0IG1heSBiZSBzdWJtaXR0ZWQgdG8uCisJICogSWYgd2UgcmVjZWl2ZSBhIHN1Ym1pdC1mZW5j ZSBmcm9tIGEgbWFzdGVyIGVuZ2luZSwgd2Ugd2lsbCBvbmx5CisJICogdXNlIG9uZSBvZiBzaWJs aW5nX21hc2sgcGh5c2ljYWwgZW5naW5lcy4KKwkgKi8KKwlzdHJ1Y3QgdmVfYm9uZCB7CisJCXN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKm1hc3RlcjsKKwkJaW50ZWxfZW5naW5lX21hc2tfdCBzaWJs aW5nX21hc2s7CisJfSAqYm9uZHM7CisJdW5zaWduZWQgaW50IG51bV9ib25kczsKKwogCS8qIEFu ZCBmaW5hbGx5LCB3aGljaCBwaHlzaWNhbCBlbmdpbmVzIHRoaXMgdmlydHVhbCBlbmdpbmUgbWFw cyBvbnRvLiAqLwogCXVuc2lnbmVkIGludCBjb3VudDsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICpzaWJsaW5nc1swXTsKQEAgLTgxOCw2ICs4MzAsMTIgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3Rz X2RlcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCQkJY29udGludWU7CiAJ CX0KIAorCQlpZiAoIShycS0+ZXhlY3V0aW9uX21hc2sgJiBlbmdpbmUtPm1hc2spKSB7CisJCQkv KiBXZSBwZWVrZWQgdG9vIHNvb24hICovCisJCQlyYiA9IHJiX25leHQocmIpOworCQkJY29udGlu dWU7CisJCX0KKwogCQkvKgogCQkgKiBXZSB0cmFjayB3aGVuIHRoZSBIVyBoYXMgY29tcGxldGVk IHNhdmluZyB0aGUgY29udGV4dCBpbWFnZQogCQkgKiAoaS5lLiB3aGVuIHdlIGhhdmUgc2VlbiB0 aGUgZmluYWwgQ1MgZXZlbnQgc3dpdGNoaW5nIG91dCBvZgpAQCAtOTEyLDYgKzkzMCw3IEBAIHN0 YXRpYyB2b2lkIGV4ZWNsaXN0c19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKIAkJCXJiID0gcmJfZmlyc3RfY2FjaGVkKCZleGVjbGlzdHMtPnZpcnR1YWwpOwogCQkJY29u dGludWU7CiAJCX0KKwkJR0VNX0JVR19PTighKHJxLT5leGVjdXRpb25fbWFzayAmIGVuZ2luZS0+ bWFzaykpOwogCiAJCWlmIChycV9wcmlvKHJxKSA+PSBxdWV1ZV9wcmlvKGV4ZWNsaXN0cykpIHsK IAkJCWlmIChsYXN0ICYmICFjYW5fbWVyZ2VfcnEobGFzdCwgcnEpKSB7CkBAIC0zMTU0LDYgKzMx NzMsOCBAQCBzdGF0aWMgdm9pZCB2aXJ0dWFsX2NvbnRleHRfZGVzdHJveShzdHJ1Y3Qga3JlZiAq a3JlZikKIAlpZiAodmUtPmNvbnRleHQuc3RhdGUpCiAJCV9fZXhlY2xpc3RzX2NvbnRleHRfZmlu aSgmdmUtPmNvbnRleHQpOwogCisJa2ZyZWUodmUtPmJvbmRzKTsKKwogCWk5MTVfdGltZWxpbmVf ZmluaSgmdmUtPmJhc2UudGltZWxpbmUpOwogCWtmcmVlKHZlKTsKIH0KQEAgLTMyMDUsOSArMzIy NiwzMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2NvbnRleHRfb3BzIHZpcnR1YWxfY29u dGV4dF9vcHMgPSB7CiAJLmRlc3Ryb3kgPSB2aXJ0dWFsX2NvbnRleHRfZGVzdHJveSwKIH07CiAK K3N0YXRpYyB1bnNpZ25lZCBsb25nIHZpcnR1YWxfc3VibWlzc2lvbl9tYXNrKHN0cnVjdCB2aXJ0 dWFsX2VuZ2luZSAqdmUpCit7CisJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7CisJdW5zaWduZWQg bG9uZyBtYXNrOworCisJcnEgPSBSRUFEX09OQ0UodmUtPnJlcXVlc3QpOworCWlmICghcnEpCisJ CXJldHVybiAwOworCisJLyogVGhlIHJxIGlzIHJlYWR5IGZvciBzdWJtaXNzaW9uOyBycS0+ZXhl Y3V0aW9uX21hc2sgaXMgbm93IHN0YWJsZS4gKi8KKwltYXNrID0gcnEtPmV4ZWN1dGlvbl9tYXNr OworCWlmICh1bmxpa2VseSghbWFzaykpIHsKKwkJLyogSW52YWxpZCBzZWxlY3Rpb24sIHN1Ym1p dCB0byBhIHJhbmRvbSBlbmdpbmUgaW4gZXJyb3IgKi8KKwkJaTkxNV9yZXF1ZXN0X3NraXAocnEs IC1FTk9ERVYpOworCQltYXNrID0gdmUtPnNpYmxpbmdzWzBdLT5tYXNrOworCX0KKworCXJldHVy biBtYXNrOworfQorCiBzdGF0aWMgdm9pZCB2aXJ0dWFsX3N1Ym1pc3Npb25fdGFza2xldCh1bnNp Z25lZCBsb25nIGRhdGEpCiB7CiAJc3RydWN0IHZpcnR1YWxfZW5naW5lICogY29uc3QgdmUgPSAo c3RydWN0IHZpcnR1YWxfZW5naW5lICopZGF0YTsKKwl1bnNpZ25lZCBsb25nIG1hc2s7CiAJdW5z aWduZWQgaW50IG47CiAJaW50IHByaW87CiAKQEAgLTMyMTUsNiArMzI1NywxMiBAQCBzdGF0aWMg dm9pZCB2aXJ0dWFsX3N1Ym1pc3Npb25fdGFza2xldCh1bnNpZ25lZCBsb25nIGRhdGEpCiAJaWYg KHByaW8gPT0gSU5UX01JTikKIAkJcmV0dXJuOwogCisJcmN1X3JlYWRfbG9jaygpOworCW1hc2sg PSB2aXJ0dWFsX3N1Ym1pc3Npb25fbWFzayh2ZSk7CisJcmN1X3JlYWRfdW5sb2NrKCk7CisJaWYg KHVubGlrZWx5KCFtYXNrKSkKKwkJcmV0dXJuOworCiAJbG9jYWxfaXJxX2Rpc2FibGUoKTsKIAlm b3IgKG4gPSAwOyBSRUFEX09OQ0UodmUtPnJlcXVlc3QpICYmIG4gPCB2ZS0+Y291bnQ7IG4rKykg ewogCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpzaWJsaW5nID0gdmUtPnNpYmxpbmdzW25dOwpA QCAtMzIyMiw2ICszMjcwLDE3IEBAIHN0YXRpYyB2b2lkIHZpcnR1YWxfc3VibWlzc2lvbl90YXNr bGV0KHVuc2lnbmVkIGxvbmcgZGF0YSkKIAkJc3RydWN0IHJiX25vZGUgKipwYXJlbnQsICpyYjsK IAkJYm9vbCBmaXJzdDsKIAorCQlpZiAodW5saWtlbHkoIShtYXNrICYgc2libGluZy0+bWFzaykp KSB7CisJCQlpZiAoIVJCX0VNUFRZX05PREUoJm5vZGUtPnJiKSkgeworCQkJCXNwaW5fbG9jaygm c2libGluZy0+dGltZWxpbmUubG9jayk7CisJCQkJcmJfZXJhc2VfY2FjaGVkKCZub2RlLT5yYiwK KwkJCQkJCSZzaWJsaW5nLT5leGVjbGlzdHMudmlydHVhbCk7CisJCQkJUkJfQ0xFQVJfTk9ERSgm bm9kZS0+cmIpOworCQkJCXNwaW5fdW5sb2NrKCZzaWJsaW5nLT50aW1lbGluZS5sb2NrKTsKKwkJ CX0KKwkJCWNvbnRpbnVlOworCQl9CisKIAkJc3Bpbl9sb2NrKCZzaWJsaW5nLT50aW1lbGluZS5s b2NrKTsKIAogCQlpZiAoIVJCX0VNUFRZX05PREUoJm5vZGUtPnJiKSkgewpAQCAtMzI4NCw2ICsz MzQzLDM3IEBAIHN0YXRpYyB2b2lkIHZpcnR1YWxfc3VibWl0X3JlcXVlc3Qoc3RydWN0IGk5MTVf cmVxdWVzdCAqcmVxdWVzdCkKIAl0YXNrbGV0X3NjaGVkdWxlKCZ2ZS0+YmFzZS5leGVjbGlzdHMu dGFza2xldCk7CiB9CiAKK3N0YXRpYyBzdHJ1Y3QgdmVfYm9uZCAqCit2aXJ0dWFsX2ZpbmRfYm9u ZChzdHJ1Y3QgdmlydHVhbF9lbmdpbmUgKnZlLCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICptYXN0 ZXIpCit7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgdmUtPm51bV9ib25kczsgaSsrKSB7 CisJCWlmICh2ZS0+Ym9uZHNbaV0ubWFzdGVyID09IG1hc3RlcikKKwkJCXJldHVybiAmdmUtPmJv bmRzW2ldOworCX0KKworCXJldHVybiBOVUxMOworfQorCitzdGF0aWMgdm9pZAordmlydHVhbF9i b25kX2V4ZWN1dGUoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIHN0cnVjdCBkbWFfZmVuY2UgKnNp Z25hbCkKK3sKKwlzdHJ1Y3QgdmlydHVhbF9lbmdpbmUgKnZlID0gdG9fdmlydHVhbF9lbmdpbmUo cnEtPmVuZ2luZSk7CisJc3RydWN0IHZlX2JvbmQgKmJvbmQ7CisKKwlib25kID0gdmlydHVhbF9m aW5kX2JvbmQodmUsIHRvX3JlcXVlc3Qoc2lnbmFsKS0+ZW5naW5lKTsKKwlpZiAoYm9uZCkgewor CQlpbnRlbF9lbmdpbmVfbWFza190IG9sZCwgbmV3LCBjbXA7CisKKwkJY21wID0gUkVBRF9PTkNF KHJxLT5leGVjdXRpb25fbWFzayk7CisJCWRvIHsKKwkJCW9sZCA9IGNtcDsKKwkJCW5ldyA9IGNt cCAmIGJvbmQtPnNpYmxpbmdfbWFzazsKKwkJfSB3aGlsZSAoKGNtcCA9IGNtcHhjaGcoJnJxLT5l eGVjdXRpb25fbWFzaywgb2xkLCBuZXcpKSAhPSBvbGQpOworCX0KK30KKwogc3RydWN0IGludGVs X2VuZ2luZV9jcyAqCiBpbnRlbF9leGVjbGlzdHNfY3JlYXRlX3ZpcnR1YWwoc3RydWN0IGk5MTVf Z2VtX2NvbnRleHQgKmN0eCwKIAkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICoqc2li bGluZ3MsCkBAIC0zMzIyLDYgKzM0MTIsNyBAQCBpbnRlbF9leGVjbGlzdHNfY3JlYXRlX3ZpcnR1 YWwoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKIAogCXZlLT5iYXNlLnNjaGVkdWxlID0g aTkxNV9zY2hlZHVsZTsKIAl2ZS0+YmFzZS5zdWJtaXRfcmVxdWVzdCA9IHZpcnR1YWxfc3VibWl0 X3JlcXVlc3Q7CisJdmUtPmJhc2UuYm9uZF9leGVjdXRlID0gdmlydHVhbF9ib25kX2V4ZWN1dGU7 CiAKIAl2ZS0+YmFzZS5leGVjbGlzdHMucXVldWVfcHJpb3JpdHlfaGludCA9IElOVF9NSU47CiAJ dGFza2xldF9pbml0KCZ2ZS0+YmFzZS5leGVjbGlzdHMudGFza2xldCwKQEAgLTM0MTIsOSArMzUw Myw3MCBAQCBpbnRlbF9leGVjbGlzdHNfY2xvbmVfdmlydHVhbChzdHJ1Y3QgaTkxNV9nZW1fY29u dGV4dCAqY3R4LAogCWlmIChJU19FUlIoZHN0KSkKIAkJcmV0dXJuIGRzdDsKIAorCWlmIChzZS0+ bnVtX2JvbmRzKSB7CisJCXN0cnVjdCB2aXJ0dWFsX2VuZ2luZSAqZGUgPSB0b192aXJ0dWFsX2Vu Z2luZShkc3QpOworCisJCWRlLT5ib25kcyA9IGttZW1kdXAoc2UtPmJvbmRzLAorCQkJCSAgICBz aXplb2YoKnNlLT5ib25kcykgKiBzZS0+bnVtX2JvbmRzLAorCQkJCSAgICBHRlBfS0VSTkVMKTsK KwkJaWYgKCFkZS0+Ym9uZHMpIHsKKwkJCWludGVsX3ZpcnR1YWxfZW5naW5lX2Rlc3Ryb3koZHN0 KTsKKwkJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOworCQl9CisKKwkJZGUtPm51bV9ib25kcyA9 IHNlLT5udW1fYm9uZHM7CisJfQorCiAJcmV0dXJuIGRzdDsKIH0KIAorc3RhdGljIHVuc2lnbmVk IGxvbmcKK3ZpcnR1YWxfc2libGluZ19tYXNrKHN0cnVjdCB2aXJ0dWFsX2VuZ2luZSAqdmUsIHVu c2lnbmVkIGxvbmcgbWFzaykKK3sKKwl1bnNpZ25lZCBsb25nIGVtYXNrID0gMDsKKwlpbnQgYml0 OworCisJZm9yX2VhY2hfc2V0X2JpdChiaXQsICZtYXNrLCB2ZS0+Y291bnQpCisJCWVtYXNrIHw9 IHZlLT5zaWJsaW5nc1tiaXRdLT5tYXNrOworCisJcmV0dXJuIGVtYXNrOworfQorCitpbnQgaW50 ZWxfdmlydHVhbF9lbmdpbmVfYXR0YWNoX2JvbmQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lLAorCQkJCSAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqbWFzdGVyLAorCQkJCSAgICAg dW5zaWduZWQgbG9uZyBtYXNrKQoreworCXN0cnVjdCB2aXJ0dWFsX2VuZ2luZSAqdmUgPSB0b192 aXJ0dWFsX2VuZ2luZShlbmdpbmUpOworCXN0cnVjdCB2ZV9ib25kICpib25kOworCisJaWYgKG1h c2sgPj4gdmUtPmNvdW50KQorCQlyZXR1cm4gLUVJTlZBTDsKKworCW1hc2sgPSB2aXJ0dWFsX3Np YmxpbmdfbWFzayh2ZSwgbWFzayk7CisJaWYgKCFtYXNrKQorCQlyZXR1cm4gLUVJTlZBTDsKKwor CWJvbmQgPSB2aXJ0dWFsX2ZpbmRfYm9uZCh2ZSwgbWFzdGVyKTsKKwlpZiAoYm9uZCkgeworCQli b25kLT5zaWJsaW5nX21hc2sgfD0gbWFzazsKKwkJcmV0dXJuIDA7CisJfQorCisJYm9uZCA9IGty ZWFsbG9jKHZlLT5ib25kcywKKwkJCXNpemVvZigqYm9uZCkgKiAodmUtPm51bV9ib25kcyArIDEp LAorCQkJR0ZQX0tFUk5FTCk7CisJaWYgKCFib25kKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWJv bmRbdmUtPm51bV9ib25kc10ubWFzdGVyID0gbWFzdGVyOworCWJvbmRbdmUtPm51bV9ib25kc10u c2libGluZ19tYXNrID0gbWFzazsKKworCXZlLT5ib25kcyA9IGJvbmQ7CisJdmUtPm51bV9ib25k cysrOworCisJcmV0dXJuIDA7Cit9CisKIHZvaWQgaW50ZWxfdmlydHVhbF9lbmdpbmVfZGVzdHJv eShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CiAJc3RydWN0IHZpcnR1YWxfZW5n aW5lICp2ZSA9IHRvX3ZpcnR1YWxfZW5naW5lKGVuZ2luZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xy Yy5oCmluZGV4IDlkOTBkYzY4ZTAyYi4uNzdiODU2NDgwNDVhIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9scmMuaApAQCAtMTIxLDYgKzEyMSwxMCBAQCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICoKIGlu dGVsX2V4ZWNsaXN0c19jbG9uZV92aXJ0dWFsKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgs CiAJCQkgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpzcmMpOwogCitpbnQgaW50ZWxfdmly dHVhbF9lbmdpbmVfYXR0YWNoX2JvbmQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAor CQkJCSAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqbWFzdGVyLAorCQkJCSAgICAgdW5zaWdu ZWQgbG9uZyBtYXNrKTsKKwogdm9pZCBpbnRlbF92aXJ0dWFsX2VuZ2luZV9kZXN0cm95KHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CiAKIHUzMiBnZW44X21ha2VfcnBjcyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgc3RydWN0IGludGVsX3NzZXUgKmN0eF9zc2V1KTsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9scmMuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9scmMuYwppbmRleCA2ZGYwMzM5NjAz NTAuLmJjOGUxM2Y4MGZiNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRl c3RzL2ludGVsX2xyYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRl bF9scmMuYwpAQCAtMTMsNiArMTMsNyBAQAogI2luY2x1ZGUgImlndF9saXZlX3Rlc3QuaCIKICNp bmNsdWRlICJpZ3Rfc3Bpbm5lci5oIgogI2luY2x1ZGUgImk5MTVfcmFuZG9tLmgiCisjaW5jbHVk ZSAibGliX3N3X2ZlbmNlLmgiCiAKICNpbmNsdWRlICJtb2NrX2NvbnRleHQuaCIKIApAQCAtMTIy MSw2ICsxMjIyLDE4OSBAQCBzdGF0aWMgaW50IGxpdmVfdmlydHVhbF9lbmdpbmUodm9pZCAqYXJn KQogCXJldHVybiBlcnI7CiB9CiAKK3N0YXRpYyBpbnQgYm9uZF92aXJ0dWFsX2VuZ2luZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKKwkJCSAgICAgICB1bnNpZ25lZCBpbnQgY2xhc3Ms CisJCQkgICAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqKnNpYmxpbmdzLAorCQkJICAgICAg IHVuc2lnbmVkIGludCBuc2libGluZywKKwkJCSAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpCisj ZGVmaW5lIEJPTkRfU0NIRURVTEUgQklUKDApCit7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAq bWFzdGVyOworCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7CisJc3RydWN0IGk5MTVfcmVx dWVzdCAqcnFbMTZdOworCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOworCXVuc2lnbmVkIGxvbmcg bjsKKwlpbnQgZXJyOworCisJR0VNX0JVR19PTihuc2libGluZyA+PSBBUlJBWV9TSVpFKHJxKSAt IDEpOworCisJY3R4ID0ga2VybmVsX2NvbnRleHQoaTkxNSk7CisJaWYgKCFjdHgpCisJCXJldHVy biAtRU5PTUVNOworCisJZXJyID0gMDsKKwlycVswXSA9IEVSUl9QVFIoLUVOT01FTSk7CisJZm9y X2VhY2hfZW5naW5lKG1hc3RlciwgaTkxNSwgaWQpIHsKKwkJc3RydWN0IGk5MTVfc3dfZmVuY2Ug ZmVuY2UgPSB7fTsKKworCQlpZiAobWFzdGVyLT5jbGFzcyA9PSBjbGFzcykKKwkJCWNvbnRpbnVl OworCisJCW1lbXNldF9wKCh2b2lkICopcnEsIEVSUl9QVFIoLUVJTlZBTCksIEFSUkFZX1NJWkUo cnEpKTsKKworCQlycVswXSA9IGk5MTVfcmVxdWVzdF9hbGxvYyhtYXN0ZXIsIGN0eCk7CisJCWlm IChJU19FUlIocnFbMF0pKSB7CisJCQllcnIgPSBQVFJfRVJSKHJxWzBdKTsKKwkJCWdvdG8gb3V0 OworCQl9CisJCWk5MTVfcmVxdWVzdF9nZXQocnFbMF0pOworCisJCWlmIChmbGFncyAmIEJPTkRf U0NIRURVTEUpIHsKKwkJCW9uc3RhY2tfZmVuY2VfaW5pdCgmZmVuY2UpOworCQkJZXJyID0gaTkx NV9zd19mZW5jZV9hd2FpdF9zd19mZW5jZV9nZnAoJnJxWzBdLT5zdWJtaXQsCisJCQkJCQkJICAg ICAgICZmZW5jZSwKKwkJCQkJCQkgICAgICAgR0ZQX0tFUk5FTCk7CisJCX0KKwkJaTkxNV9yZXF1 ZXN0X2FkZChycVswXSk7CisJCWlmIChlcnIgPCAwKQorCQkJZ290byBvdXQ7CisKKwkJZm9yIChu ID0gMDsgbiA8IG5zaWJsaW5nOyBuKyspIHsKKwkJCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZTsKKworCQkJZW5naW5lID0gaW50ZWxfZXhlY2xpc3RzX2NyZWF0ZV92aXJ0dWFsKGN0eCwK KwkJCQkJCQkJc2libGluZ3MsCisJCQkJCQkJCW5zaWJsaW5nKTsKKwkJCWlmIChJU19FUlIoZW5n aW5lKSkgeworCQkJCWVyciA9IFBUUl9FUlIoZW5naW5lKTsKKwkJCQlvbnN0YWNrX2ZlbmNlX2Zp bmkoJmZlbmNlKTsKKwkJCQlnb3RvIG91dDsKKwkJCX0KKworCQkJZXJyID0gaW50ZWxfdmlydHVh bF9lbmdpbmVfYXR0YWNoX2JvbmQoZW5naW5lLAorCQkJCQkJCSAgICAgICBtYXN0ZXIsCisJCQkJ CQkJICAgICAgIEJJVChuKSk7CisJCQlpZiAoZXJyKSB7CisJCQkJaW50ZWxfdmlydHVhbF9lbmdp bmVfZGVzdHJveShlbmdpbmUpOworCQkJCW9uc3RhY2tfZmVuY2VfZmluaSgmZmVuY2UpOworCQkJ CWdvdG8gb3V0OworCQkJfQorCisJCQlycVtuICsgMV0gPSBpOTE1X3JlcXVlc3RfYWxsb2MoZW5n aW5lLCBjdHgpOworCQkJaWYgKElTX0VSUihycVtuICsgMV0pKSB7CisJCQkJZXJyID0gUFRSX0VS UihycVtuICsgMV0pOworCQkJCWludGVsX3ZpcnR1YWxfZW5naW5lX2Rlc3Ryb3koZW5naW5lKTsK KwkJCQlvbnN0YWNrX2ZlbmNlX2ZpbmkoJmZlbmNlKTsKKwkJCQlnb3RvIG91dDsKKwkJCX0KKwkJ CWk5MTVfcmVxdWVzdF9nZXQocnFbbiArIDFdKTsKKworCQkJZXJyID0gaTkxNV9yZXF1ZXN0X2F3 YWl0X2V4ZWN1dGlvbihycVtuICsgMV0sCisJCQkJCQkJICAgJnJxWzBdLT5mZW5jZSwKKwkJCQkJ CQkgICBlbmdpbmUtPmJvbmRfZXhlY3V0ZSk7CisJCQlpOTE1X3JlcXVlc3RfYWRkKHJxW24gKyAx XSk7CisJCQlpbnRlbF92aXJ0dWFsX2VuZ2luZV9kZXN0cm95KGVuZ2luZSk7CisJCQlpZiAoZXJy IDwgMCkgeworCQkJCW9uc3RhY2tfZmVuY2VfZmluaSgmZmVuY2UpOworCQkJCWdvdG8gb3V0Owor CQkJfQorCQl9CisJCW9uc3RhY2tfZmVuY2VfZmluaSgmZmVuY2UpOworCisJCWlmIChpOTE1X3Jl cXVlc3Rfd2FpdChycVswXSwKKwkJCQkgICAgICBJOTE1X1dBSVRfTE9DS0VELAorCQkJCSAgICAg IEhaIC8gMTApIDwgMCkgeworCQkJcHJfZXJyKCJNYXN0ZXIgcmVxdWVzdCBkaWQgbm90IGV4ZWN1 dGUgKG9uICVzKSFcbiIsCisJCQkgICAgICAgcnFbMF0tPmVuZ2luZS0+bmFtZSk7CisJCQllcnIg PSAtRUlPOworCQkJZ290byBvdXQ7CisJCX0KKworCQlmb3IgKG4gPSAwOyBuIDwgbnNpYmxpbmc7 IG4rKykgeworCQkJaWYgKGk5MTVfcmVxdWVzdF93YWl0KHJxW24gKyAxXSwKKwkJCQkJICAgICAg STkxNV9XQUlUX0xPQ0tFRCwKKwkJCQkJICAgICAgTUFYX1NDSEVEVUxFX1RJTUVPVVQpIDwgMCkg eworCQkJCWVyciA9IC1FSU87CisJCQkJZ290byBvdXQ7CisJCQl9CisKKwkJCWlmIChycVtuICsg MV0tPmVuZ2luZSAhPSBzaWJsaW5nc1tuXSkgeworCQkJCXByX2VycigiQm9uZGVkIHJlcXVlc3Qg ZGlkIG5vdCBleGVjdXRlIG9uIHRhcmdldCBlbmdpbmU6IGV4cGVjdGVkICVzLCB1c2VkICVzOyBt YXN0ZXIgd2FzICVzXG4iLAorCQkJCSAgICAgICBzaWJsaW5nc1tuXS0+bmFtZSwKKwkJCQkgICAg ICAgcnFbbiArIDFdLT5lbmdpbmUtPm5hbWUsCisJCQkJICAgICAgIHJxWzBdLT5lbmdpbmUtPm5h bWUpOworCQkJCWVyciA9IC1FSU5WQUw7CisJCQkJZ290byBvdXQ7CisJCQl9CisJCX0KKworCQlm b3IgKG4gPSAwOyAhSVNfRVJSKHJxW25dKTsgbisrKQorCQkJaTkxNV9yZXF1ZXN0X3B1dChycVtu XSk7CisJCXJxWzBdID0gRVJSX1BUUigtRU5PTUVNKTsKKwl9CisKK291dDoKKwlmb3IgKG4gPSAw OyAhSVNfRVJSKHJxW25dKTsgbisrKQorCQlpOTE1X3JlcXVlc3RfcHV0KHJxW25dKTsKKwlpZiAo aWd0X2ZsdXNoX3Rlc3QoaTkxNSwgSTkxNV9XQUlUX0xPQ0tFRCkpCisJCWVyciA9IC1FSU87CisK KwlrZXJuZWxfY29udGV4dF9jbG9zZShjdHgpOworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBp bnQgbGl2ZV92aXJ0dWFsX2JvbmQodm9pZCAqYXJnKQoreworCXN0YXRpYyBjb25zdCBzdHJ1Y3Qg cGhhc2UgeworCQljb25zdCBjaGFyICpuYW1lOworCQl1bnNpZ25lZCBpbnQgZmxhZ3M7CisJfSBw aGFzZXNbXSA9IHsKKwkJeyAiIiwgMCB9LAorCQl7ICJzY2hlZHVsZSIsIEJPTkRfU0NIRURVTEUg fSwKKwkJeyB9LAorCX07CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBhcmc7CisJ c3RydWN0IGludGVsX2VuZ2luZV9jcyAqc2libGluZ3NbTUFYX0VOR0lORV9JTlNUQU5DRSArIDFd OworCXVuc2lnbmVkIGludCBjbGFzcywgaW5zdDsKKwlpbnQgZXJyID0gMDsKKworCWlmIChVU0VT X0dVQ19TVUJNSVNTSU9OKGk5MTUpKQorCQlyZXR1cm4gMDsKKworCW11dGV4X2xvY2soJmk5MTUt PmRybS5zdHJ1Y3RfbXV0ZXgpOworCisJZm9yIChjbGFzcyA9IDA7IGNsYXNzIDw9IE1BWF9FTkdJ TkVfQ0xBU1M7IGNsYXNzKyspIHsKKwkJY29uc3Qgc3RydWN0IHBoYXNlICpwOworCQlpbnQgbnNp Ymxpbmc7CisKKwkJbnNpYmxpbmcgPSAwOworCQlmb3IgKGluc3QgPSAwOyBpbnN0IDw9IE1BWF9F TkdJTkVfSU5TVEFOQ0U7IGluc3QrKykgeworCQkJaWYgKCFpOTE1LT5lbmdpbmVfY2xhc3NbY2xh c3NdW2luc3RdKQorCQkJCWJyZWFrOworCisJCQlHRU1fQlVHX09OKG5zaWJsaW5nID09IEFSUkFZ X1NJWkUoc2libGluZ3MpKTsKKwkJCXNpYmxpbmdzW25zaWJsaW5nKytdID0gaTkxNS0+ZW5naW5l X2NsYXNzW2NsYXNzXVtpbnN0XTsKKwkJfQorCQlpZiAobnNpYmxpbmcgPCAyKQorCQkJY29udGlu dWU7CisKKwkJZm9yIChwID0gcGhhc2VzOyBwLT5uYW1lOyBwKyspIHsKKwkJCWVyciA9IGJvbmRf dmlydHVhbF9lbmdpbmUoaTkxNSwKKwkJCQkJCSAgY2xhc3MsIHNpYmxpbmdzLCBuc2libGluZywK KwkJCQkJCSAgcC0+ZmxhZ3MpOworCQkJaWYgKGVycikgeworCQkJCXByX2VycigiJXMoJXMpOiBm YWlsZWQgY2xhc3M9JWQsIG5zaWJsaW5nPSVkLCBlcnI9JWRcbiIsCisJCQkJICAgICAgIF9fZnVu Y19fLCBwLT5uYW1lLCBjbGFzcywgbnNpYmxpbmcsIGVycik7CisJCQkJZ290byBvdXRfdW5sb2Nr OworCQkJfQorCQl9CisJfQorCitvdXRfdW5sb2NrOgorCW11dGV4X3VubG9jaygmaTkxNS0+ZHJt LnN0cnVjdF9tdXRleCk7CisJcmV0dXJuIGVycjsKK30KKwogaW50IGludGVsX2V4ZWNsaXN0c19s aXZlX3NlbGZ0ZXN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIHsKIAlzdGF0aWMg Y29uc3Qgc3RydWN0IGk5MTVfc3VidGVzdCB0ZXN0c1tdID0gewpAQCAtMTIzMyw2ICsxNDE3LDcg QEAgaW50IGludGVsX2V4ZWNsaXN0c19saXZlX3NlbGZ0ZXN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSkKIAkJU1VCVEVTVChsaXZlX3ByZWVtcHRfaGFuZyksCiAJCVNVQlRFU1QobGl2 ZV9wcmVlbXB0X3Ntb2tlKSwKIAkJU1VCVEVTVChsaXZlX3ZpcnR1YWxfZW5naW5lKSwKKwkJU1VC VEVTVChsaXZlX3ZpcnR1YWxfYm9uZCksCiAJfTsKIAogCWlmICghSEFTX0VYRUNMSVNUUyhpOTE1 KSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9saWJfc3dfZmVu Y2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9saWJfc3dfZmVuY2UuYwppbmRl eCAyYmZhNzJjMTY1NGIuLmI5NzZjMTI4MTdjNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL2xpYl9zd19mZW5jZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9saWJfc3dfZmVuY2UuYwpAQCAtNDUsNiArNDUsOSBAQCB2b2lkIF9fb25zdGFj a19mZW5jZV9pbml0KHN0cnVjdCBpOTE1X3N3X2ZlbmNlICpmZW5jZSwKIAogdm9pZCBvbnN0YWNr X2ZlbmNlX2Zpbmkoc3RydWN0IGk5MTVfc3dfZmVuY2UgKmZlbmNlKQogeworCWlmICghZmVuY2Ut PmZsYWdzKQorCQlyZXR1cm47CisKIAlpOTE1X3N3X2ZlbmNlX2NvbW1pdChmZW5jZSk7CiAJaTkx NV9zd19mZW5jZV9maW5pKGZlbmNlKTsKIH0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0v aTkxNV9kcm0uaCBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAppbmRleCA5Yzk0YzAzN2Qx M2IuLjBkOWNhNGZiOWVkYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5o CisrKyBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaApAQCAtMTUzMiw2ICsxNTMyLDEwIEBA IHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSB7CiAgKiBzaXplZCBhcmd1bWVudCwg d2lsbCByZXZlcnQgYmFjayB0byBkZWZhdWx0IHNldHRpbmdzLgogICoKICAqIFNlZSBzdHJ1Y3Qg aTkxNV9jb250ZXh0X3BhcmFtX2VuZ2luZXMuCisgKgorICogRXh0ZW5zaW9uczoKKyAqICAgaTkx NV9jb250ZXh0X2VuZ2luZXNfbG9hZF9iYWxhbmNlIChJOTE1X0NPTlRFWFRfRU5HSU5FU19FWFRf TE9BRF9CQUxBTkNFKQorICogICBpOTE1X2NvbnRleHRfZW5naW5lc19ib25kIChJOTE1X0NPTlRF WFRfRU5HSU5FU19FWFRfQk9ORCkKICAqLwogI2RlZmluZSBJOTE1X0NPTlRFWFRfUEFSQU1fRU5H SU5FUwkweGEKIC8qIE11c3QgYmUga2VwdCBjb21wYWN0IC0tIG5vIGhvbGVzIGFuZCB3ZWxsIGRv Y3VtZW50ZWQgKi8KQEAgLTE2MjcsOSArMTYzMSwzOCBAQCBzdHJ1Y3QgaTkxNV9jb250ZXh0X2Vu Z2luZXNfbG9hZF9iYWxhbmNlIHsKIAlfX3U2NCBtYno2NFs0XTsgLyogcmVzZXJ2ZWQgZm9yIGZ1 dHVyZSB1c2U7IG11c3QgYmUgemVybyAqLwogfTsKIAorLyoKKyAqIGk5MTVfY29udGV4dF9lbmdp bmVzX2JvbmQ6CisgKgorICogQ29uc3RydWN0ZWQgYm9uZGVkIHBhaXJzIGZvciBleGVjdXRpb24g d2l0aGluIGEgdmlydHVhbCBlbmdpbmUuCisgKgorICogQWxsIGVuZ2luZXMgYXJlIGVxdWFsLCBi dXQgc29tZSBhcmUgbW9yZSBlcXVhbCB0aGFuIG90aGVycy4gR2l2ZW4KKyAqIHRoZSBkaXN0cmli dXRpb24gb2YgcmVzb3VyY2VzIGluIHRoZSBIVywgaXQgbWF5IGJlIHByZWZlcmFibGUgdG8gcnVu CisgKiBhIHJlcXVlc3Qgb24gYSBnaXZlbiBzdWJzZXQgb2YgZW5naW5lcyBpbiBwYXJhbGxlbCB0 byBhIHJlcXVlc3Qgb24gYQorICogc3BlY2lmaWMgZW5naW5lLiBXZSBlbmFibGUgdGhpcyBzZWxl Y3Rpb24gb2YgZW5naW5lcyB3aXRoaW4gYSB2aXJ0dWFsCisgKiBlbmdpbmUgYnkgc3BlY2lmeWlu ZyBib25kaW5nIHBhaXJzLCBmb3IgYW55IGdpdmVuIG1hc3RlciBlbmdpbmUgd2Ugd2lsbAorICog b25seSBleGVjdXRlIG9uIG9uZSBvZiB0aGUgY29ycmVzcG9uZGluZyBzaWJsaW5ncyB3aXRoaW4g dGhlIHZpcnR1YWwgZW5naW5lLgorICoKKyAqIFRvIGV4ZWN1dGUgYSByZXF1ZXN0IGluIHBhcmFs bGVsIG9uIHRoZSBtYXN0ZXIgZW5naW5lIGFuZCBhIHNpYmxpbmcgcmVxdWlyZXMKKyAqIGNvb3Jk aW5hdGlvbiB3aXRoIGEgSTkxNV9FWEVDX0ZFTkNFX1NVQk1JVC4KKyAqLworc3RydWN0IGk5MTVf Y29udGV4dF9lbmdpbmVzX2JvbmQgeworCXN0cnVjdCBpOTE1X3VzZXJfZXh0ZW5zaW9uIGJhc2U7 CisKKwlfX3UxNiB2aXJ0dWFsX2luZGV4OyAvKiBpbmRleCBvZiB2aXJ0dWFsIGVuZ2luZSBpbiBj dHgtPmVuZ2luZXNbXSAqLworCV9fdTE2IG1iejsKKworCV9fdTE2IG1hc3Rlcl9jbGFzczsKKwlf X3UxNiBtYXN0ZXJfaW5zdGFuY2U7CisKKwlfX3U2NCBzaWJsaW5nX21hc2s7IC8qIGJpdG1hc2sg b2YgQklUKHNpYmxpbmdfaW5kZXgpIHdydCB0aGUgdi5lbmdpbmUgKi8KKwlfX3U2NCBmbGFnczsg LyogYWxsIHVuZGVmaW5lZCBmbGFncyBtdXN0IGJlIHplcm8gKi8KK307CisKIHN0cnVjdCBpOTE1 X2NvbnRleHRfcGFyYW1fZW5naW5lcyB7CiAJX191NjQgZXh0ZW5zaW9uczsgLyogbGlua2VkIGNo YWluIG9mIGV4dGVuc2lvbiBibG9ja3MsIDAgdGVybWluYXRlcyAqLwogI2RlZmluZSBJOTE1X0NP TlRFWFRfRU5HSU5FU19FWFRfTE9BRF9CQUxBTkNFIDAKKyNkZWZpbmUgSTkxNV9DT05URVhUX0VO R0lORVNfRVhUX0JPTkQgMQogCiAJc3RydWN0IHsKIAkJX191MTYgZW5naW5lX2NsYXNzOyAvKiBz ZWUgZW51bSBkcm1faTkxNV9nZW1fZW5naW5lX2NsYXNzICovCi0tIAoyLjIwLjEKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==