From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 01/22] drm/i915: Flush pages on acquisition Date: Mon, 18 Mar 2019 09:51:43 +0000 Message-ID: <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 A089A898E4 for ; Mon, 18 Mar 2019 09:53:56 +0000 (UTC) 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 V2hlbiB3ZSByZXR1cm4gcGFnZXMgdG8gdGhlIHN5c3RlbSwgd2UgZW5zdXJlIHRoYXQgdGhleSBh cmUgbWFya2VkIGFzCmJlaW5nIGluIHRoZSBDUFUgZG9tYWluIHNpbmNlIGFueSBleHRlcm5hbCBh Y2Nlc3MgaXMgdW5jb250cm9sbGVkIGFuZCB3ZQptdXN0IGFzc3VtZSB0aGUgd29yc3QuIFRoaXMg bWVhbnMgdGhhdCB3ZSBuZWVkIHRvIGFsd2F5cyBmbHVzaCB0aGUgcGFnZXMKb24gYWNxdWlzaXRp b24gaWYgd2UgbmVlZCB0byB1c2UgdGhlbSBvbiB0aGUgR1BVLCBhbmQgZnJvbSB0aGUgYmVnaW5u aW5nCmhhdmUgdXNlZCBzZXQtZG9tYWluLiBTZXQtZG9tYWluIGlzIG92ZXJraWxsIGZvciB0aGUg cHVycG9zZSBhcyBpdCBpcyBhCmdlbmVyYWwgc3luY2hyb25pc2F0aW9uIGJhcnJpZXIsIGJ1dCBv dXIgaW50ZW50IGlzIHRvIG9ubHkgZmx1c2ggdGhlCnBhZ2VzIGJlaW5nIHN3YXBwZWQgaW4uIElm IHdlIG1vdmUgdGhhdCBmbHVzaCBpbnRvIHRoZSBwYWdlcyBhY3F1aXNpdGlvbgpwaGFzZSwgd2Ug a25vdyB0aGVuIHRoYXQgd2hlbiB3ZSBoYXZlIG9iai0+bW0ucGFnZXMsIHRoZXkgYXJlIGNvaGVy ZW50CndpdGggdGhlIEdQVSBhbmQgbmVlZCBvbmx5IG1haW50YWluIHRoYXQgc3RhdHVzIHdpdGhv dXQgcmVzb3J0aW5nIHRvCmhlYXZ5IGhhbmRlZCB1c2Ugb2Ygc2V0LWRvbWFpbi4KClRoZSBwcmlu Y2lwbGUga25vY2stb24gZWZmZWN0IGZvciB1c2Vyc3BhY2UgaXMgdGhyb3VnaCBtbWFwLWd0dApw YWdlZmF1bHRpbmcuIE91ciB1QVBJIGhhcyBhbHdheXMgaW1wbGllZCB0aGF0IHRoZSBHVFQgbW1h cCB3YXMgYXN5bmMKKGVzcGVjaWFsbHkgYXMgd2hlbiBhbnkgcGFnZWZhdWx0IG9jY3VycyBpcyB1 bnByZWRpY2F0YWJsZSB0byB1c2Vyc3BhY2UpCmFuZCBzbyB1c2Vyc3BhY2UgaGFkIHRvIGFwcGx5 IGV4cGxpY2l0IGRvbWFpbiBjb250cm9sIGl0c2VsZgooc2V0LWRvbWFpbikuIEhvd2V2ZXIsIHN3 YXBwaW5nIGlzIHRyYW5zcGFyZW50IHRvIHRoZSBrZXJuZWwsIGFuZCBzbyBvbgpmaXJzdCBmYXVs dCB3ZSBuZWVkIHRvIGFjcXVpcmUgdGhlIHBhZ2VzIGFuZCBtYWtlIHRoZW0gY29oZXJlbnQgZm9y CmFjY2VzcyB0aHJvdWdoIHRoZSBHVFQuIE91ciB1c2Ugb2Ygc2V0LWRvbWFpbiBoZXJlIGxlYWtz IGludG8gdGhlIHVBQkkKdGhhdCB0aGUgZmlyc3QgcGFnZWZhdWx0IHdhcyBzeW5jaHJvbm91cy4g VGhpcyBpcyB1bmludGVudGlvbmFsIGFuZApiYXJpbmcgYSBmZXcgaWd0IHNob3VsZCBiZSB1bm90 aWNlZCwgbmV2ZXJ0aGVsZXNzIHdlIGJ1bXAgdGhlIHVBQkkKdmVyc2lvbiBmb3IgbW1hcC1ndHQg dG8gcmVmbGVjdCB0aGUgY2hhbmdlIGluIGJlaGF2aW91ci4KCkFub3RoZXIgaW1wbGljYXRpb24g b2YgdGhlIGNoYW5nZSBpcyB0aGF0IGdlbV9jcmVhdGUoKSBpcyBwcmVzdW1lZCB0bwpjcmVhdGUg YW4gb2JqZWN0IHRoYXQgaXMgY29oZXJlbnQgd2l0aCB0aGUgQ1BVIGFuZCBpcyBpbiB0aGUgQ1BV IHdyaXRlCmRvbWFpbiwgc28gYSBzZXQtZG9tYWluKENQVSkgZm9sbG93aW5nIGEgZ2VtX2NyZWF0 ZSgpIHdvdWxkIGJlIGEgbWlub3IKb3BlcmF0aW9uIHRoYXQgbWVyZWx5IGNoZWNrZWQgd2hldGhl ciB3ZSBjb3VsZCBhbGxvY2F0ZSBhbGwgcGFnZXMgZm9yCnRoZSBvYmplY3QuIE9uIGFwcGx5aW5n IHRoaXMgY2hhbmdlLCBhIHNldC1kb21haW4oQ1BVKSBjYXVzZXMgYSBjbGZsdXNoCmFzIHdlIGFj cXVpcmUgdGhlIHBhZ2VzLiBUaGlzIHdpbGwgaGF2ZSBhIHNtYWxsIGltcGFjdCBvbiBtZXNhIGFz IHdlIG1vdmUKdGhlIGNsZmx1c2ggaGVyZSBvbiAhbGxjIGZyb20gZXhlY2J1ZiB0aW1lIHRvIGNy ZWF0ZSwgYnV0IHRoYXQgc2hvdWxkCmhhdmUgbWluaW1hbCBwZXJmb3JtYW5jZSBpbXBhY3QgYXMg dGhlIHNhbWUgY2xmbHVzaCBleGlzdHMgYnV0IGlzIG5vdwpkb25lIGVhcmx5IGFuZCBiZWNhdXNl IG9mIHRoZSBjbGZsdXNoIGlzc3VlLCB1c2Vyc3BhY2UgcmVjeWNsZXMgYm8gYW5kCnNvIHNob3Vs ZCByZXNpc3QgYWxsb2NhdGluZyBmcmVzaCBvYmplY3RzLgoKSW50ZXJuYWxseSwgdGhlIHByZXN1 bXB0aW9uIHRoYXQgb2JqZWN0cyBhcmUgY3JlYXRlZCBpbiB0aGUgQ1BVCndyaXRlLWRvbWFpbiBh bmQgcmVtYWluIHNvIHRocm91Z2ggd3JpdGVzIHRvIG9iai0+bW0ubWFwcGluZyBpcyBtb3JlCnBy ZXZhbGVudCB0aGFuIEkgZXhwZWN0OyBidXQgZWFzeSBlbm91Z2ggdG8gY2F0Y2ggYW5kIGFwcGx5 IGEgbWFudWFsCmZsdXNoLgoKU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJp cy13aWxzb24uY28udWs+CkNjOiBNYXR0aGV3IEF1bGQgPG1hdHRoZXcud2lsbGlhbS5hdWxkQGdt YWlsLmNvbT4KQ2M6IERhbmllbGUgQ2VyYW9sbyBTcHVyaW8gPGRhbmllbGUuY2VyYW9sb3NwdXJp b0BpbnRlbC5jb20+CkNjOiBBbnRvbmlvIEFyZ2Vuemlhbm8gPGFudG9uaW8uYXJnZW56aWFub0Bp bnRlbC5jb20+CkNjOiBKb29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRl bC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgICAg IHwgIDggKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgICAgICAg fCA1NyArKysrKysrKysrKystLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZG1h YnVmLmMgICAgICAgIHwgIDEgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1 ZmZlci5jICAgIHwgIDcgKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZW5kZXJf c3RhdGUuYyAgfCAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMgICAgICAg ICAgICAgIHwgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jICAg ICAgICB8ICA0ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgICAg ICAgfCA2MyArKysrKysrKystLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9y aW5nYnVmZmVyLmMgICAgICAgfCA2MiArKysrKysrLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9odWdlX3BhZ2VzLmMgICB8ICA1ICstCiAuLi4vZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMgfCAxNyArKy0tLQogLi4uL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvaTkxNV9nZW1fZG1hYnVmLmMgIHwgIDEgKwogLi4uL2dwdS9kcm0vaTkxNS9z ZWxmdGVzdHMvaTkxNV9nZW1fZXZpY3QuYyAgIHwgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYyB8IDE0ICsrLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvaWd0X3NwaW5uZXIuYyAgfCAgMiArLQogLi4uL2dwdS9kcm0vaTkxNS9zZWxm dGVzdHMvaW50ZWxfaGFuZ2NoZWNrLmMgIHwgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3Nl bGZ0ZXN0cy9pbnRlbF9scmMuYyAgICB8ICA1ICstCiAuLi4vZHJtL2k5MTUvc2VsZnRlc3RzL2lu dGVsX3dvcmthcm91bmRzLmMgICAgfCAgMyArCiAxOCBmaWxlcyBjaGFuZ2VkLCAxMjcgaW5zZXJ0 aW9ucygrKSwgMTM0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IGM2 NWMyZTY2NDlkZi4uMzk1YWE5ZDViYTAyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTI5 NTksNiArMjk1OSwxNCBAQCBpOTE1X2NvaGVyZW50X21hcF90eXBlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1KQogdm9pZCAqX19tdXN0X2NoZWNrIGk5MTVfZ2VtX29iamVjdF9waW5fbWFw KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJCQkJCSAgIGVudW0gaTkxNV9tYXBf dHlwZSB0eXBlKTsKIAordm9pZCBfX2k5MTVfZ2VtX29iamVjdF9mbHVzaF9tYXAoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKKwkJCQkgdW5zaWduZWQgbG9uZyBvZmZzZXQsCisJCQkJ IHVuc2lnbmVkIGxvbmcgc2l6ZSk7CitzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV9nZW1fb2JqZWN0 X2ZsdXNoX21hcChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQoreworCV9faTkxNV9n ZW1fb2JqZWN0X2ZsdXNoX21hcChvYmosIDAsIG9iai0+YmFzZS5zaXplKTsKK30KKwogLyoqCiAg KiBpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwIC0gcmVsZWFzZXMgYW4gZWFybGllciBtYXBwaW5n CiAgKiBAb2JqOiB0aGUgb2JqZWN0IHRvIHVubWFwCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwppbmRl eCBiMzhjOTUzMWI1ZTguLmY0NTkxYTE0M2M4NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCkBA IC0xNzEwLDYgKzE3MTAsOSBAQCBzdGF0aWMgdW5zaWduZWQgaW50IHRpbGVfcm93X3BhZ2VzKGNv bnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAgKiAyIC0gUmVjb2duaXNlIFdD IGFzIGEgc2VwYXJhdGUgY2FjaGUgZG9tYWluIHNvIHRoYXQgd2UgY2FuIGZsdXNoIHRoZQogICog ICAgIGRlbGF5ZWQgd3JpdGVzIHZpYSBHVFQgYmVmb3JlIHBlcmZvcm1pbmcgZGlyZWN0IGFjY2Vz cyB2aWEgV0MuCiAgKgorICogMyAtIFJlbW92ZSBpbXBsaWNpdCBzZXQtZG9tYWluKEdUVCkgYW5k IHN5bmNocm9uaXNhdGlvbiBvbiBpbml0aWFsCisgKiAgICAgcGFnZWZhdWx0OyBzd2FwaW4gcmVt YWlucyB0cmFuc3BhcmVudC4KKyAqCiAgKiBSZXN0cmljdGlvbnM6CiAgKgogICogICogc25vb3Bh YmxlIG9iamVjdHMgY2Fubm90IGJlIGFjY2Vzc2VkIHZpYSB0aGUgR1RULiBJdCBjYW4gY2F1c2Ug bWFjaGluZQpAQCAtMTczNyw3ICsxNzQwLDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCB0aWxlX3Jv d19wYWdlcyhjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogICovCiBpbnQg aTkxNV9nZW1fbW1hcF9ndHRfdmVyc2lvbih2b2lkKQogewotCXJldHVybiAyOworCXJldHVybiAz OwogfQogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBpOTE1X2dndHRfdmlldwpAQCAtMTgwNSwxNyAr MTgwOCw2IEBAIHZtX2ZhdWx0X3QgaTkxNV9nZW1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYp CiAKIAl0cmFjZV9pOTE1X2dlbV9vYmplY3RfZmF1bHQob2JqLCBwYWdlX29mZnNldCwgdHJ1ZSwg d3JpdGUpOwogCi0JLyogVHJ5IHRvIGZsdXNoIHRoZSBvYmplY3Qgb2ZmIHRoZSBHUFUgZmlyc3Qg d2l0aG91dCBob2xkaW5nIHRoZSBsb2NrLgotCSAqIFVwb24gYWNxdWlyaW5nIHRoZSBsb2NrLCB3 ZSB3aWxsIHBlcmZvcm0gb3VyIHNhbml0eSBjaGVja3MgYW5kIHRoZW4KLQkgKiByZXBlYXQgdGhl IGZsdXNoIGhvbGRpbmcgdGhlIGxvY2sgaW4gdGhlIG5vcm1hbCBtYW5uZXIgdG8gY2F0Y2ggY2Fz ZXMKLQkgKiB3aGVyZSB3ZSBhcmUgZ2F6dW1wZWQuCi0JICovCi0JcmV0ID0gaTkxNV9nZW1fb2Jq ZWN0X3dhaXQob2JqLAotCQkJCSAgIEk5MTVfV0FJVF9JTlRFUlJVUFRJQkxFLAotCQkJCSAgIE1B WF9TQ0hFRFVMRV9USU1FT1VUKTsKLQlpZiAocmV0KQotCQlnb3RvIGVycjsKLQogCXJldCA9IGk5 MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsKIAlpZiAocmV0KQogCQlnb3RvIGVycjsKQEAg LTE4NzEsMTAgKzE4NjMsNiBAQCB2bV9mYXVsdF90IGk5MTVfZ2VtX2ZhdWx0KHN0cnVjdCB2bV9m YXVsdCAqdm1mKQogCQlnb3RvIGVycl91bmxvY2s7CiAJfQogCi0JcmV0ID0gaTkxNV9nZW1fb2Jq ZWN0X3NldF90b19ndHRfZG9tYWluKG9iaiwgd3JpdGUpOwotCWlmIChyZXQpCi0JCWdvdG8gZXJy X3VucGluOwotCiAJcmV0ID0gaTkxNV92bWFfcGluX2ZlbmNlKHZtYSk7CiAJaWYgKHJldCkKIAkJ Z290byBlcnJfdW5waW47CkBAIC0yNTMxLDYgKzI1MTksMTQgQEAgdm9pZCBfX2k5MTVfZ2VtX29i amVjdF9zZXRfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAogCWxvY2tk ZXBfYXNzZXJ0X2hlbGQoJm9iai0+bW0ubG9jayk7CiAKKwkvKiBNYWtlIHRoZSBwYWdlcyBjb2hl cmVudCB3aXRoIHRoZSBHUFUgKGZsdXNoaW5nIGFueSBzd2FwaW4pLiAqLworCWlmIChvYmotPmNh Y2hlX2RpcnR5KSB7CisJCW9iai0+d3JpdGVfZG9tYWluID0gMDsKKwkJaWYgKGk5MTVfZ2VtX29i amVjdF9oYXNfc3RydWN0X3BhZ2Uob2JqKSkKKwkJCWRybV9jbGZsdXNoX3NnKHBhZ2VzKTsKKwkJ b2JqLT5jYWNoZV9kaXJ0eSA9IGZhbHNlOworCX0KKwogCW9iai0+bW0uZ2V0X3BhZ2Uuc2dfcG9z ID0gcGFnZXMtPnNnbDsKIAlvYmotPm1tLmdldF9wYWdlLnNnX2lkeCA9IDA7CiAKQEAgLTI3MzIs NiArMjcyOCwzMyBAQCB2b2lkICppOTE1X2dlbV9vYmplY3RfcGluX21hcChzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqLAogCWdvdG8gb3V0X3VubG9jazsKIH0KIAordm9pZCBfX2k5MTVf Z2VtX29iamVjdF9mbHVzaF9tYXAoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKKwkJ CQkgdW5zaWduZWQgbG9uZyBvZmZzZXQsCisJCQkJIHVuc2lnbmVkIGxvbmcgc2l6ZSkKK3sKKwll bnVtIGk5MTVfbWFwX3R5cGUgaGFzX3R5cGU7CisJdm9pZCAqcHRyOworCisJR0VNX0JVR19PTigh aTkxNV9nZW1fb2JqZWN0X2hhc19waW5uZWRfcGFnZXMob2JqKSk7CisJR0VNX0JVR19PTihyYW5n ZV9vdmVyZmxvd3NfdCh0eXBlb2Yob2JqLT5iYXNlLnNpemUpLAorCQkJCSAgICAgb2Zmc2V0LCBz aXplLCBvYmotPmJhc2Uuc2l6ZSkpOworCisJb2JqLT5tbS5kaXJ0eSA9IHRydWU7CisKKwlpZiAo b2JqLT5jYWNoZV9jb2hlcmVudCAmIEk5MTVfQk9fQ0FDSEVfQ09IRVJFTlRfRk9SX1dSSVRFKQor CQlyZXR1cm47CisKKwlwdHIgPSBwYWdlX3VucGFja19iaXRzKG9iai0+bW0ubWFwcGluZywgJmhh c190eXBlKTsKKwlpZiAoaGFzX3R5cGUgPT0gSTkxNV9NQVBfV0MpCisJCXJldHVybjsKKworCWRy bV9jbGZsdXNoX3ZpcnRfcmFuZ2UocHRyICsgb2Zmc2V0LCBzaXplKTsKKwlpZiAoc2l6ZSA9PSBv YmotPmJhc2Uuc2l6ZSkgeworCQlvYmotPndyaXRlX2RvbWFpbiAmPSB+STkxNV9HRU1fRE9NQUlO X0NQVTsKKwkJb2JqLT5jYWNoZV9kaXJ0eSA9IGZhbHNlOworCX0KK30KKwogc3RhdGljIGludAog aTkxNV9nZW1fb2JqZWN0X3B3cml0ZV9ndHQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aiwKIAkJCSAgIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fcHdyaXRlICphcmcpCkBAIC00Njg5 LDYgKzQ3MTIsOCBAQCBzdGF0aWMgaW50IF9faW50ZWxfZW5naW5lc19yZWNvcmRfZGVmYXVsdHMo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAJCQlnb3RvIGVycl9hY3RpdmU7CiAKIAkJ ZW5naW5lLT5kZWZhdWx0X3N0YXRlID0gaTkxNV9nZW1fb2JqZWN0X2dldChzdGF0ZS0+b2JqKTsK KwkJaTkxNV9nZW1fb2JqZWN0X3NldF9jYWNoZV9jb2hlcmVuY3koZW5naW5lLT5kZWZhdWx0X3N0 YXRlLAorCQkJCQkJICAgIEk5MTVfQ0FDSEVfTExDKTsKIAogCQkvKiBDaGVjayB3ZSBjYW4gYWNx dWlyZSB0aGUgaW1hZ2Ugb2YgdGhlIGNvbnRleHQgc3RhdGUgKi8KIAkJdmFkZHIgPSBpOTE1X2dl bV9vYmplY3RfcGluX21hcChlbmdpbmUtPmRlZmF1bHRfc3RhdGUsCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9kbWFidWYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2RtYWJ1Zi5jCmluZGV4IDMzMTgxNjc4OTkwZS4uNWExMDFhOTQ2MmQ4IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9kbWFidWYuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9kbWFidWYuYwpAQCAtMTA3LDYgKzEwNyw3IEBAIHN0 YXRpYyB2b2lkIGk5MTVfZ2VtX2RtYWJ1Zl92dW5tYXAoc3RydWN0IGRtYV9idWYgKmRtYV9idWYs IHZvaWQgKnZhZGRyKQogewogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBkbWFf YnVmX3RvX29iaihkbWFfYnVmKTsKIAorCWk5MTVfZ2VtX29iamVjdF9mbHVzaF9tYXAob2JqKTsK IAlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKG9iaik7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwppbmRleCBlZTZkMzAxYTk2MjcuLjNkNjcyYzllZGI5 NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwpAQCAtMTAw MSw3ICsxMDAxLDEwIEBAIHN0YXRpYyB2b2lkIHJlbG9jX2dwdV9mbHVzaChzdHJ1Y3QgcmVsb2Nf Y2FjaGUgKmNhY2hlKQogewogCUdFTV9CVUdfT04oY2FjaGUtPnJxX3NpemUgPj0gY2FjaGUtPnJx LT5iYXRjaC0+b2JqLT5iYXNlLnNpemUgLyBzaXplb2YodTMyKSk7CiAJY2FjaGUtPnJxX2NtZFtj YWNoZS0+cnFfc2l6ZV0gPSBNSV9CQVRDSF9CVUZGRVJfRU5EOworCisJX19pOTE1X2dlbV9vYmpl Y3RfZmx1c2hfbWFwKGNhY2hlLT5ycS0+YmF0Y2gtPm9iaiwgMCwgY2FjaGUtPnJxX3NpemUpOwog CWk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAoY2FjaGUtPnJxLT5iYXRjaC0+b2JqKTsKKwogCWk5 MTVfZ2VtX2NoaXBzZXRfZmx1c2goY2FjaGUtPnJxLT5pOTE1KTsKIAogCWk5MTVfcmVxdWVzdF9h ZGQoY2FjaGUtPnJxKTsKQEAgLTEyMTQsMTAgKzEyMTcsNiBAQCBzdGF0aWMgaW50IF9fcmVsb2Nf Z3B1X2FsbG9jKHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViLAogCWlmIChJU19FUlIoY21kKSkK IAkJcmV0dXJuIFBUUl9FUlIoY21kKTsKIAotCWVyciA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9f d2NfZG9tYWluKG9iaiwgZmFsc2UpOwotCWlmIChlcnIpCi0JCWdvdG8gZXJyX3VubWFwOwotCiAJ YmF0Y2ggPSBpOTE1X3ZtYV9pbnN0YW5jZShvYmosIHZtYS0+dm0sIE5VTEwpOwogCWlmIChJU19F UlIoYmF0Y2gpKSB7CiAJCWVyciA9IFBUUl9FUlIoYmF0Y2gpOwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVuZGVyX3N0YXRlLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9yZW5kZXJfc3RhdGUuYwppbmRleCA5MTE5NjM0OGM2OGMuLjk0NDAwMjRj NzYzZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVuZGVyX3N0 YXRlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVuZGVyX3N0YXRlLmMK QEAgLTE2NCw3ICsxNjQsNyBAQCBzdGF0aWMgaW50IHJlbmRlcl9zdGF0ZV9zZXR1cChzdHJ1Y3Qg aW50ZWxfcmVuZGVyX3N0YXRlICpzbywKIAkJZHJtX2NsZmx1c2hfdmlydF9yYW5nZShkLCBpICog c2l6ZW9mKHUzMikpOwogCWt1bm1hcF9hdG9taWMoZCk7CiAKLQlyZXQgPSBpOTE1X2dlbV9vYmpl Y3Rfc2V0X3RvX2d0dF9kb21haW4oc28tPm9iaiwgZmFsc2UpOworCXJldCA9IDA7CiBvdXQ6CiAJ aTkxNV9nZW1fb2JqX2ZpbmlzaF9zaG1lbV9hY2Nlc3Moc28tPm9iaik7CiAJcmV0dXJuIHJldDsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMKaW5kZXggOWIwMjkyYTM4ODY1Li43ZjkyZDUyNTc5YmQg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jCkBAIC0xNTA5LDkgKzE1MDksNyBAQCBzdGF0aWMg aW50IGFsbG9jX29hX2J1ZmZlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJ CWdvdG8gdW5sb2NrOwogCX0KIAotCXJldCA9IGk5MTVfZ2VtX29iamVjdF9zZXRfY2FjaGVfbGV2 ZWwoYm8sIEk5MTVfQ0FDSEVfTExDKTsKLQlpZiAocmV0KQotCQlnb3RvIGVycl91bnJlZjsKKwlp OTE1X2dlbV9vYmplY3Rfc2V0X2NhY2hlX2NvaGVyZW5jeShibywgSTkxNV9DQUNIRV9MTEMpOwog CiAJLyogUHJlSFNXIHJlcXVpcmVkIDUxMksgYWxpZ25tZW50LCBIU1cgcmVxdWlyZXMgMTZNICov CiAJdm1hID0gaTkxNV9nZW1fb2JqZWN0X2dndHRfcGluKGJvLCBOVUxMLCAwLCBTWl8xNk0sIDAp OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwppbmRleCA2NTJjMWIzYmExOTAu LjMxNGI4NmI2Zjg4ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5n aW5lX2NzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKQEAg LTUyOCw5ICs1MjgsNyBAQCBzdGF0aWMgaW50IGluaXRfc3RhdHVzX3BhZ2Uoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQogCQlyZXR1cm4gUFRSX0VSUihvYmopOwogCX0KIAotCXJldCA9 IGk5MTVfZ2VtX29iamVjdF9zZXRfY2FjaGVfbGV2ZWwob2JqLCBJOTE1X0NBQ0hFX0xMQyk7Ci0J aWYgKHJldCkKLQkJZ290byBlcnI7CisJaTkxNV9nZW1fb2JqZWN0X3NldF9jYWNoZV9jb2hlcmVu Y3kob2JqLCBJOTE1X0NBQ0hFX0xMQyk7CiAKIAl2bWEgPSBpOTE1X3ZtYV9pbnN0YW5jZShvYmos ICZlbmdpbmUtPmk5MTUtPmdndHQudm0sIE5VTEwpOwogCWlmIChJU19FUlIodm1hKSkgewpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9scmMuYwppbmRleCBlNTRlMDA2NGIyZDYuLmFhNTBmMDNiYTgxMiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKQEAgLTEyNTIsNiArMTI1MiwzMCBAQCBzdGF0aWMgdm9p ZCBleGVjbGlzdHNfY29udGV4dF9kZXN0cm95KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKIAlp bnRlbF9jb250ZXh0X2ZyZWUoY2UpOwogfQogCitzdGF0aWMgaW50IF9fY29udGV4dF9waW4oc3Ry dWN0IGk5MTVfdm1hICp2bWEpCit7CisJdW5zaWduZWQgaW50IGZsYWdzOworCWludCBlcnI7CisK KwlmbGFncyA9IFBJTl9HTE9CQUwgfCBQSU5fSElHSDsKKwlmbGFncyB8PSBQSU5fT0ZGU0VUX0JJ QVMgfCBpOTE1X2dndHRfcGluX2JpYXModm1hKTsKKworCWVyciA9IGk5MTVfdm1hX3Bpbih2bWEs IDAsIDAsIGZsYWdzKTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gZXJyOworCisJdm1hLT5vYmotPnBp bl9nbG9iYWwrKzsKKwl2bWEtPm9iai0+bW0uZGlydHkgPSB0cnVlOworCisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyB2b2lkIF9fY29udGV4dF91bnBpbihzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKK3sK Kwl2bWEtPm9iai0+cGluX2dsb2JhbC0tOworCV9faTkxNV92bWFfdW5waW4odm1hKTsKK30KKwog c3RhdGljIHZvaWQgZXhlY2xpc3RzX2NvbnRleHRfdW5waW4oc3RydWN0IGludGVsX2NvbnRleHQg KmNlKQogewogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKQEAgLTEyODAsMzYgKzEz MDQsMTMgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX2NvbnRleHRfdW5waW4oc3RydWN0IGludGVs X2NvbnRleHQgKmNlKQogCiAJaW50ZWxfcmluZ191bnBpbihjZS0+cmluZyk7CiAKLQljZS0+c3Rh dGUtPm9iai0+cGluX2dsb2JhbC0tOwogCWk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAoY2UtPnN0 YXRlLT5vYmopOwotCWk5MTVfdm1hX3VucGluKGNlLT5zdGF0ZSk7CisJX19jb250ZXh0X3VucGlu KGNlLT5zdGF0ZSk7CiAKIAlsaXN0X2RlbCgmY2UtPmFjdGl2ZV9saW5rKTsKIAlpOTE1X2dlbV9j b250ZXh0X3B1dChjZS0+Z2VtX2NvbnRleHQpOwogfQogCi1zdGF0aWMgaW50IF9fY29udGV4dF9w aW4oc3RydWN0IGk5MTVfdm1hICp2bWEpCi17Ci0JdW5zaWduZWQgaW50IGZsYWdzOwotCWludCBl cnI7Ci0KLQkvKgotCSAqIENsZWFyIHRoaXMgcGFnZSBvdXQgb2YgYW55IENQVSBjYWNoZXMgZm9y IGNvaGVyZW50IHN3YXAtaW4vb3V0LgotCSAqIFdlIG9ubHkgd2FudCB0byBkbyB0aGlzIG9uIHRo ZSBmaXJzdCBiaW5kIHNvIHRoYXQgd2UgZG8gbm90IHN0YWxsCi0JICogb24gYW4gYWN0aXZlIGNv bnRleHQgKHdoaWNoIGJ5IG5hdHVyZSBpcyBhbHJlYWR5IG9uIHRoZSBHUFUpLgotCSAqLwotCWlm ICghKHZtYS0+ZmxhZ3MgJiBJOTE1X1ZNQV9HTE9CQUxfQklORCkpIHsKLQkJZXJyID0gaTkxNV9n ZW1fb2JqZWN0X3NldF90b193Y19kb21haW4odm1hLT5vYmosIHRydWUpOwotCQlpZiAoZXJyKQot CQkJcmV0dXJuIGVycjsKLQl9Ci0KLQlmbGFncyA9IFBJTl9HTE9CQUwgfCBQSU5fSElHSDsKLQlm bGFncyB8PSBQSU5fT0ZGU0VUX0JJQVMgfCBpOTE1X2dndHRfcGluX2JpYXModm1hKTsKLQotCXJl dHVybiBpOTE1X3ZtYV9waW4odm1hLCAwLCAwLCBmbGFncyk7Ci19Ci0KIHN0YXRpYyB2b2lkCiBf X2V4ZWNsaXN0c191cGRhdGVfcmVnX3N0YXRlKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKIAkJ CSAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQpAQCAtMTM2OCw3ICsxMzY5LDYg QEAgX19leGVjbGlzdHNfY29udGV4dF9waW4oc3RydWN0IGludGVsX2NvbnRleHQgKmNlLAogCWNl LT5scmNfcmVnX3N0YXRlID0gdmFkZHIgKyBMUkNfU1RBVEVfUE4gKiBQQUdFX1NJWkU7CiAJX19l eGVjbGlzdHNfdXBkYXRlX3JlZ19zdGF0ZShjZSwgZW5naW5lKTsKIAotCWNlLT5zdGF0ZS0+b2Jq LT5waW5fZ2xvYmFsKys7CiAJcmV0dXJuIDA7CiAKIHVucGluX3Jpbmc6CkBAIC0xMzc2LDcgKzEz NzYsNyBAQCBfX2V4ZWNsaXN0c19jb250ZXh0X3BpbihzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2Us CiB1bnBpbl9tYXA6CiAJaTkxNV9nZW1fb2JqZWN0X3VucGluX21hcChjZS0+c3RhdGUtPm9iaik7 CiB1bnBpbl92bWE6Ci0JX19pOTE1X3ZtYV91bnBpbihjZS0+c3RhdGUpOworCV9fY29udGV4dF91 bnBpbihjZS0+c3RhdGUpOwogZXJyOgogCXJldHVybiByZXQ7CiB9CkBAIC0yNzU1LDE5ICsyNzU1 LDEyIEBAIHBvcHVsYXRlX2xyX2NvbnRleHQoc3RydWN0IGludGVsX2NvbnRleHQgKmNlLAogCXUz MiAqcmVnczsKIAlpbnQgcmV0OwogCi0JcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19jcHVf ZG9tYWluKGN0eF9vYmosIHRydWUpOwotCWlmIChyZXQpIHsKLQkJRFJNX0RFQlVHX0RSSVZFUigi Q291bGQgbm90IHNldCB0byBDUFUgZG9tYWluXG4iKTsKLQkJcmV0dXJuIHJldDsKLQl9Ci0KIAl2 YWRkciA9IGk5MTVfZ2VtX29iamVjdF9waW5fbWFwKGN0eF9vYmosIEk5MTVfTUFQX1dCKTsKIAlp ZiAoSVNfRVJSKHZhZGRyKSkgewogCQlyZXQgPSBQVFJfRVJSKHZhZGRyKTsKIAkJRFJNX0RFQlVH X0RSSVZFUigiQ291bGQgbm90IG1hcCBvYmplY3QgcGFnZXMhICglZClcbiIsIHJldCk7CiAJCXJl dHVybiByZXQ7CiAJfQotCWN0eF9vYmotPm1tLmRpcnR5ID0gdHJ1ZTsKIAogCWlmIChlbmdpbmUt PmRlZmF1bHRfc3RhdGUpIHsKIAkJLyoKQEAgLTI4MDIsNyArMjc5NSwxMSBAQCBwb3B1bGF0ZV9s cl9jb250ZXh0KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKIAkJCV9NQVNLRURfQklUX0VOQUJM RShDVFhfQ1RSTF9FTkdJTkVfQ1RYX1JFU1RPUkVfSU5ISUJJVCB8CiAJCQkJCSAgIENUWF9DVFJM X0VOR0lORV9DVFhfU0FWRV9JTkhJQklUKTsKIAorCXJldCA9IDA7CiBlcnJfdW5waW5fY3R4Ogor CV9faTkxNV9nZW1fb2JqZWN0X2ZsdXNoX21hcChjdHhfb2JqLAorCQkJCSAgICBMUkNfSEVBREVS X1BBR0VTICogUEFHRV9TSVpFLAorCQkJCSAgICBlbmdpbmUtPmNvbnRleHRfc2l6ZSk7CiAJaTkx NV9nZW1fb2JqZWN0X3VucGluX21hcChjdHhfb2JqKTsKIAlyZXR1cm4gcmV0OwogfQpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCmluZGV4IGYyNmY1Y2MxNTg0Yy4uNzQ2ZmU1 NzA0NjZjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCkBAIC0xMTk5 LDE1ICsxMTk5LDYgQEAgaW50IGludGVsX3JpbmdfcGluKHN0cnVjdCBpbnRlbF9yaW5nICpyaW5n KQogCWVsc2UKIAkJZmxhZ3MgfD0gUElOX0hJR0g7CiAKLQlpZiAoISh2bWEtPmZsYWdzICYgSTkx NV9WTUFfR0xPQkFMX0JJTkQpKSB7Ci0JCWlmIChmbGFncyAmIFBJTl9NQVBQQUJMRSB8fCBtYXAg PT0gSTkxNV9NQVBfV0MpCi0JCQlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21h aW4odm1hLT5vYmosIHRydWUpOwotCQllbHNlCi0JCQlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0 X3RvX2NwdV9kb21haW4odm1hLT5vYmosIHRydWUpOwotCQlpZiAodW5saWtlbHkocmV0KSkKLQkJ CWdvdG8gdW5waW5fdGltZWxpbmU7Ci0JfQotCiAJcmV0ID0gaTkxNV92bWFfcGluKHZtYSwgMCwg MCwgZmxhZ3MpOwogCWlmICh1bmxpa2VseShyZXQpKQogCQlnb3RvIHVucGluX3RpbWVsaW5lOwpA QCAtMTM5MywxNyArMTM4NCw2IEBAIHN0YXRpYyBpbnQgX19jb250ZXh0X3BpbihzdHJ1Y3QgaW50 ZWxfY29udGV4dCAqY2UpCiAJaWYgKCF2bWEpCiAJCXJldHVybiAwOwogCi0JLyoKLQkgKiBDbGVh ciB0aGlzIHBhZ2Ugb3V0IG9mIGFueSBDUFUgY2FjaGVzIGZvciBjb2hlcmVudCBzd2FwLWluL291 dC4KLQkgKiBXZSBvbmx5IHdhbnQgdG8gZG8gdGhpcyBvbiB0aGUgZmlyc3QgYmluZCBzbyB0aGF0 IHdlIGRvIG5vdCBzdGFsbAotCSAqIG9uIGFuIGFjdGl2ZSBjb250ZXh0ICh3aGljaCBieSBuYXR1 cmUgaXMgYWxyZWFkeSBvbiB0aGUgR1BVKS4KLQkgKi8KLQlpZiAoISh2bWEtPmZsYWdzICYgSTkx NV9WTUFfR0xPQkFMX0JJTkQpKSB7Ci0JCWVyciA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fZ3R0 X2RvbWFpbih2bWEtPm9iaiwgdHJ1ZSk7Ci0JCWlmIChlcnIpCi0JCQlyZXR1cm4gZXJyOwotCX0K LQogCWVyciA9IGk5MTVfdm1hX3Bpbih2bWEsIDAsIDAsIFBJTl9HTE9CQUwgfCBQSU5fSElHSCk7 CiAJaWYgKGVycikKIAkJcmV0dXJuIGVycjsKQEAgLTE0MTMsNiArMTM5Myw3IEBAIHN0YXRpYyBp bnQgX19jb250ZXh0X3BpbihzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCiAJICogaXQgY2Fubm90 IHJlY2xhaW0gdGhlIG9iamVjdCB1bnRpbCB3ZSByZWxlYXNlIGl0LgogCSAqLwogCXZtYS0+b2Jq LT5waW5fZ2xvYmFsKys7CisJdm1hLT5vYmotPm1tLmRpcnR5ID0gdHJ1ZTsKIAogCXJldHVybiAw OwogfQpAQCAtMTQ1MCw2ICsxNDMxLDI0IEBAIGFsbG9jX2NvbnRleHRfdm1hKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlpZiAoSVNfRVJSKG9iaikpCiAJCXJldHVybiBFUlJfQ0FT VChvYmopOwogCisJLyoKKwkgKiBUcnkgdG8gbWFrZSB0aGUgY29udGV4dCB1dGlsaXplIEwzIGFz IHdlbGwgYXMgTExDLgorCSAqCisJICogT24gVkxWIHdlIGRvbid0IGhhdmUgTDMgY29udHJvbHMg aW4gdGhlIFBURXMgc28gd2UKKwkgKiBzaG91bGRuJ3QgdG91Y2ggdGhlIGNhY2hlIGxldmVsLCBl c3BlY2lhbGx5IGFzIHRoYXQKKwkgKiB3b3VsZCBtYWtlIHRoZSBvYmplY3Qgc25vb3BlZCB3aGlj aCBtaWdodCBoYXZlIGEKKwkgKiBuZWdhdGl2ZSBwZXJmb3JtYW5jZSBpbXBhY3QuCisJICoKKwkg KiBTbm9vcGluZyBpcyByZXF1aXJlZCBvbiBub24tbGxjIHBsYXRmb3JtcyBpbiBleGVjbGlzdAor CSAqIG1vZGUsIGJ1dCBzaW5jZSBhbGwgR0dUVCBhY2Nlc3NlcyB1c2UgUEFUIGVudHJ5IDAgd2UK KwkgKiBnZXQgc25vb3BpbmcgYW55d2F5IHJlZ2FyZGxlc3Mgb2YgY2FjaGVfbGV2ZWwuCisJICoK KwkgKiBUaGlzIGlzIG9ubHkgYXBwbGljYWJsZSBmb3IgSXZ5IEJyaWRnZSBkZXZpY2VzIHNpbmNl CisJICogbGF0ZXIgcGxhdGZvcm1zIGRvbid0IGhhdmUgTDMgY29udHJvbCBiaXRzIGluIHRoZSBQ VEUuCisJICovCisJaWYgKElTX0lWWUJSSURHRShpOTE1KSkKKwkJaTkxNV9nZW1fb2JqZWN0X3Nl dF9jYWNoZV9jb2hlcmVuY3kob2JqLCBJOTE1X0NBQ0hFX0wzX0xMQyk7CisKIAlpZiAoZW5naW5l LT5kZWZhdWx0X3N0YXRlKSB7CiAJCXZvaWQgKmRlZmF1bHRzLCAqdmFkZHI7CiAKQEAgLTE0Njcs MjkgKzE0NjYsMTAgQEAgYWxsb2NfY29udGV4dF92bWEoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQogCQl9CiAKIAkJbWVtY3B5KHZhZGRyLCBkZWZhdWx0cywgZW5naW5lLT5jb250ZXh0 X3NpemUpOwotCiAJCWk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAoZW5naW5lLT5kZWZhdWx0X3N0 YXRlKTsKLQkJaTkxNV9nZW1fb2JqZWN0X3VucGluX21hcChvYmopOwotCX0KIAotCS8qCi0JICog VHJ5IHRvIG1ha2UgdGhlIGNvbnRleHQgdXRpbGl6ZSBMMyBhcyB3ZWxsIGFzIExMQy4KLQkgKgot CSAqIE9uIFZMViB3ZSBkb24ndCBoYXZlIEwzIGNvbnRyb2xzIGluIHRoZSBQVEVzIHNvIHdlCi0J ICogc2hvdWxkbid0IHRvdWNoIHRoZSBjYWNoZSBsZXZlbCwgZXNwZWNpYWxseSBhcyB0aGF0Ci0J ICogd291bGQgbWFrZSB0aGUgb2JqZWN0IHNub29wZWQgd2hpY2ggbWlnaHQgaGF2ZSBhCi0JICog bmVnYXRpdmUgcGVyZm9ybWFuY2UgaW1wYWN0LgotCSAqCi0JICogU25vb3BpbmcgaXMgcmVxdWly ZWQgb24gbm9uLWxsYyBwbGF0Zm9ybXMgaW4gZXhlY2xpc3QKLQkgKiBtb2RlLCBidXQgc2luY2Ug YWxsIEdHVFQgYWNjZXNzZXMgdXNlIFBBVCBlbnRyeSAwIHdlCi0JICogZ2V0IHNub29waW5nIGFu eXdheSByZWdhcmRsZXNzIG9mIGNhY2hlX2xldmVsLgotCSAqCi0JICogVGhpcyBpcyBvbmx5IGFw cGxpY2FibGUgZm9yIEl2eSBCcmlkZ2UgZGV2aWNlcyBzaW5jZQotCSAqIGxhdGVyIHBsYXRmb3Jt cyBkb24ndCBoYXZlIEwzIGNvbnRyb2wgYml0cyBpbiB0aGUgUFRFLgotCSAqLwotCWlmIChJU19J VllCUklER0UoaTkxNSkpIHsKLQkJLyogSWdub3JlIGFueSBlcnJvciwgcmVnYXJkIGl0IGFzIGEg c2ltcGxlIG9wdGltaXNhdGlvbiAqLwotCQlpOTE1X2dlbV9vYmplY3Rfc2V0X2NhY2hlX2xldmVs KG9iaiwgSTkxNV9DQUNIRV9MM19MTEMpOworCQlpOTE1X2dlbV9vYmplY3RfZmx1c2hfbWFwKG9i aik7CisJCWk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAob2JqKTsKIAl9CiAKIAl2bWEgPSBpOTE1 X3ZtYV9pbnN0YW5jZShvYmosICZpOTE1LT5nZ3R0LnZtLCBOVUxMKTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9odWdlX3BhZ2VzLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvaHVnZV9wYWdlcy5jCmluZGV4IDJlMWRiMzBhZjQ3Ny4uMjE4Y2Zj MzYxZGUzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaHVnZV9w YWdlcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9odWdlX3BhZ2VzLmMK QEAgLTkwOCwxMCArOTA4LDYgQEAgZ3B1X3dyaXRlX2R3KHN0cnVjdCBpOTE1X3ZtYSAqdm1hLCB1 NjQgb2Zmc2V0LCB1MzIgdmFsKQogCWlmIChJU19FUlIob2JqKSkKIAkJcmV0dXJuIEVSUl9DQVNU KG9iaik7CiAKLQllcnIgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX3djX2RvbWFpbihvYmosIHRy dWUpOwotCWlmIChlcnIpCi0JCWdvdG8gZXJyOwotCiAJY21kID0gaTkxNV9nZW1fb2JqZWN0X3Bp bl9tYXAob2JqLCBJOTE1X01BUF9XQyk7CiAJaWYgKElTX0VSUihjbWQpKSB7CiAJCWVyciA9IFBU Ul9FUlIoY21kKTsKQEAgLTE1ODQsNiArMTU4MCw3IEBAIHN0YXRpYyBpbnQgaWd0X3RtcGZzX2Zh bGxiYWNrKHZvaWQgKmFyZykKIAl9CiAJKnZhZGRyID0gMHhkZWFkYmVhZjsKIAorCV9faTkxNV9n ZW1fb2JqZWN0X2ZsdXNoX21hcChvYmosIDAsIDY0KTsKIAlpOTE1X2dlbV9vYmplY3RfdW5waW5f bWFwKG9iaik7CiAKIAl2bWEgPSBpOTE1X3ZtYV9pbnN0YW5jZShvYmosIHZtLCBOVUxMKTsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0 LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jCmlu ZGV4IDQzOTllZjllYmYxNS4uMDc1OWE5MGMwZDVhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMKQEAgLTIyMCw2ICsyMjAsNyBAQCBn cHVfZmlsbF9kdyhzdHJ1Y3QgaTkxNV92bWEgKnZtYSwgdTY0IG9mZnNldCwgdW5zaWduZWQgbG9u ZyBjb3VudCwgdTMyIHZhbHVlKQogCQlvZmZzZXQgKz0gUEFHRV9TSVpFOwogCX0KIAkqY21kID0g TUlfQkFUQ0hfQlVGRkVSX0VORDsKKwlpOTE1X2dlbV9vYmplY3RfZmx1c2hfbWFwKG9iaik7CiAJ aTkxNV9nZW1fb2JqZWN0X3VucGluX21hcChvYmopOwogCiAJZXJyID0gaTkxNV9nZW1fb2JqZWN0 X3NldF90b19ndHRfZG9tYWluKG9iaiwgZmFsc2UpOwpAQCAtNjA0LDEyICs2MDUsOSBAQCBzdGF0 aWMgc3RydWN0IGk5MTVfdm1hICpycGNzX3F1ZXJ5X2JhdGNoKHN0cnVjdCBpOTE1X3ZtYSAqdm1h KQogCSpjbWQrKyA9IHVwcGVyXzMyX2JpdHModm1hLT5ub2RlLnN0YXJ0KTsKIAkqY21kID0gTUlf QkFUQ0hfQlVGRkVSX0VORDsKIAorCV9faTkxNV9nZW1fb2JqZWN0X2ZsdXNoX21hcChvYmosIDAs IDY0KTsKIAlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKG9iaik7CiAKLQllcnIgPSBpOTE1X2dl bV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4ob2JqLCBmYWxzZSk7Ci0JaWYgKGVycikKLQkJZ290 byBlcnI7Ci0KIAl2bWEgPSBpOTE1X3ZtYV9pbnN0YW5jZShvYmosIHZtYS0+dm0sIE5VTEwpOwog CWlmIChJU19FUlIodm1hKSkgewogCQllcnIgPSBQVFJfRVJSKHZtYSk7CkBAIC0xMjAyLDEyICsx MjAwLDkgQEAgc3RhdGljIGludCB3cml0ZV90b19zY3JhdGNoKHN0cnVjdCBpOTE1X2dlbV9jb250 ZXh0ICpjdHgsCiAJfQogCSpjbWQrKyA9IHZhbHVlOwogCSpjbWQgPSBNSV9CQVRDSF9CVUZGRVJf RU5EOworCV9faTkxNV9nZW1fb2JqZWN0X2ZsdXNoX21hcChvYmosIDAsIDY0KTsKIAlpOTE1X2dl bV9vYmplY3RfdW5waW5fbWFwKG9iaik7CiAKLQllcnIgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3Rv X2d0dF9kb21haW4ob2JqLCBmYWxzZSk7Ci0JaWYgKGVycikKLQkJZ290byBlcnI7Ci0KIAl2bWEg PSBpOTE1X3ZtYV9pbnN0YW5jZShvYmosICZjdHgtPnBwZ3R0LT52bSwgTlVMTCk7CiAJaWYgKElT X0VSUih2bWEpKSB7CiAJCWVyciA9IFBUUl9FUlIodm1hKTsKQEAgLTEyOTksMTEgKzEyOTQsOSBA QCBzdGF0aWMgaW50IHJlYWRfZnJvbV9zY3JhdGNoKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpj dHgsCiAJCSpjbWQrKyA9IHJlc3VsdDsKIAl9CiAJKmNtZCA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7 Ci0JaTkxNV9nZW1fb2JqZWN0X3VucGluX21hcChvYmopOwogCi0JZXJyID0gaTkxNV9nZW1fb2Jq ZWN0X3NldF90b19ndHRfZG9tYWluKG9iaiwgZmFsc2UpOwotCWlmIChlcnIpCi0JCWdvdG8gZXJy OworCWk5MTVfZ2VtX29iamVjdF9mbHVzaF9tYXAob2JqKTsKKwlpOTE1X2dlbV9vYmplY3RfdW5w aW5fbWFwKG9iaik7CiAKIAl2bWEgPSBpOTE1X3ZtYV9pbnN0YW5jZShvYmosICZjdHgtPnBwZ3R0 LT52bSwgTlVMTCk7CiAJaWYgKElTX0VSUih2bWEpKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fZG1hYnVmLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fZG1hYnVmLmMKaW5kZXggYTcwNTViMTJlNTNjLi4yYjk0 M2VlMjQ2YzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1 X2dlbV9kbWFidWYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9n ZW1fZG1hYnVmLmMKQEAgLTMxNSw2ICszMTUsNyBAQCBzdGF0aWMgaW50IGlndF9kbWFidWZfZXhw b3J0X2ttYXAodm9pZCAqYXJnKQogCQlnb3RvIGVycjsKIAl9CiAJbWVtc2V0KHB0ciArIFBBR0Vf U0laRSwgMHhhYSwgUEFHRV9TSVpFKTsKKwlpOTE1X2dlbV9vYmplY3RfZmx1c2hfbWFwKG9iaik7 CiAJaTkxNV9nZW1fb2JqZWN0X3VucGluX21hcChvYmopOwogCiAJcHRyID0gZG1hX2J1Zl9rbWFw KGRtYWJ1ZiwgMSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMv aTkxNV9nZW1fZXZpY3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dl bV9ldmljdC5jCmluZGV4IGIyNzBlYWIxY2FkMS4uOWE5NDUxODQ2YjMzIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fZXZpY3QuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fZXZpY3QuYwpAQCAtMjc0LDcgKzI3 NCw3IEBAIHN0YXRpYyBpbnQgaWd0X2V2aWN0X2Zvcl9jYWNoZV9jb2xvcih2b2lkICphcmcpCiAJ CWVyciA9IFBUUl9FUlIob2JqKTsKIAkJZ290byBjbGVhbnVwOwogCX0KLQlpOTE1X2dlbV9vYmpl Y3Rfc2V0X2NhY2hlX2xldmVsKG9iaiwgSTkxNV9DQUNIRV9MTEMpOworCWk5MTVfZ2VtX29iamVj dF9zZXRfY2FjaGVfY29oZXJlbmN5KG9iaiwgSTkxNV9DQUNIRV9MTEMpOwogCXF1aXJrX2FkZChv YmosICZvYmplY3RzKTsKIAogCXZtYSA9IGk5MTVfZ2VtX29iamVjdF9nZ3R0X3BpbihvYmosIE5V TEwsIDAsIDAsCkBAIC0yOTAsNyArMjkwLDcgQEAgc3RhdGljIGludCBpZ3RfZXZpY3RfZm9yX2Nh Y2hlX2NvbG9yKHZvaWQgKmFyZykKIAkJZXJyID0gUFRSX0VSUihvYmopOwogCQlnb3RvIGNsZWFu dXA7CiAJfQotCWk5MTVfZ2VtX29iamVjdF9zZXRfY2FjaGVfbGV2ZWwob2JqLCBJOTE1X0NBQ0hF X0xMQyk7CisJaTkxNV9nZW1fb2JqZWN0X3NldF9jYWNoZV9jb2hlcmVuY3kob2JqLCBJOTE1X0NB Q0hFX0xMQyk7CiAJcXVpcmtfYWRkKG9iaiwgJm9iamVjdHMpOwogCiAJLyogTmVpZ2hib3VyaW5n OyBzYW1lIGNvbG91ciAtIHNob3VsZCBmaXQgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Nl bGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYwppbmRleCAzZWI2YTZiMDc1YWIuLmU2ZmZlMjI0MDEyNiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmVxdWVzdC5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYwpAQCAt NjE5LDEzICs2MTksMTEgQEAgc3RhdGljIHN0cnVjdCBpOTE1X3ZtYSAqZW1wdHlfYmF0Y2goc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAJfQogCiAJKmNtZCA9IE1JX0JBVENIX0JVRkZF Ul9FTkQ7Ci0JaTkxNV9nZW1fY2hpcHNldF9mbHVzaChpOTE1KTsKIAorCV9faTkxNV9nZW1fb2Jq ZWN0X2ZsdXNoX21hcChvYmosIDAsIDY0KTsKIAlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKG9i aik7CiAKLQllcnIgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4ob2JqLCBmYWxz ZSk7Ci0JaWYgKGVycikKLQkJZ290byBlcnI7CisJaTkxNV9nZW1fY2hpcHNldF9mbHVzaChpOTE1 KTsKIAogCXZtYSA9IGk5MTVfdm1hX2luc3RhbmNlKG9iaiwgJmk5MTUtPmdndHQudm0sIE5VTEwp OwogCWlmIChJU19FUlIodm1hKSkgewpAQCAtNzc3LDEwICs3NzUsNiBAQCBzdGF0aWMgc3RydWN0 IGk5MTVfdm1hICpyZWN1cnNpdmVfYmF0Y2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUp CiAJaWYgKGVycikKIAkJZ290byBlcnI7CiAKLQllcnIgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3Rv X3djX2RvbWFpbihvYmosIHRydWUpOwotCWlmIChlcnIpCi0JCWdvdG8gZXJyOwotCiAJY21kID0g aTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXAob2JqLCBJOTE1X01BUF9XQyk7CiAJaWYgKElTX0VSUihj bWQpKSB7CiAJCWVyciA9IFBUUl9FUlIoY21kKTsKQEAgLTc5OSwxMCArNzkzLDEyIEBAIHN0YXRp YyBzdHJ1Y3QgaTkxNV92bWEgKnJlY3Vyc2l2ZV9iYXRjaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSkKIAkJKmNtZCsrID0gbG93ZXJfMzJfYml0cyh2bWEtPm5vZGUuc3RhcnQpOwogCX0K IAkqY21kKysgPSBNSV9CQVRDSF9CVUZGRVJfRU5EOyAvKiB0ZXJtaW5hdGUgZWFybHkgaW4gY2Fz ZSBvZiBlcnJvciAqLwotCWk5MTVfZ2VtX2NoaXBzZXRfZmx1c2goaTkxNSk7CiAKKwlfX2k5MTVf Z2VtX29iamVjdF9mbHVzaF9tYXAob2JqLCAwLCA2NCk7CiAJaTkxNV9nZW1fb2JqZWN0X3VucGlu X21hcChvYmopOwogCisJaTkxNV9nZW1fY2hpcHNldF9mbHVzaChpOTE1KTsKKwogCXJldHVybiB2 bWE7CiAKIGVycjoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9p Z3Rfc3Bpbm5lci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2lndF9zcGlubmVy LmMKaW5kZXggZDBiOTNhM2ZiYzU0Li4xNjg5MGRmZTc0YzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pZ3Rfc3Bpbm5lci5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9pZ3Rfc3Bpbm5lci5jCkBAIC0yOSw3ICsyOSw3IEBAIGludCBpZ3Rf c3Bpbm5lcl9pbml0KHN0cnVjdCBpZ3Rfc3Bpbm5lciAqc3Bpbiwgc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUpCiAJCWdvdG8gZXJyX2h3czsKIAl9CiAKLQlpOTE1X2dlbV9vYmplY3Rfc2V0 X2NhY2hlX2xldmVsKHNwaW4tPmh3cywgSTkxNV9DQUNIRV9MTEMpOworCWk5MTVfZ2VtX29iamVj dF9zZXRfY2FjaGVfY29oZXJlbmN5KHNwaW4tPmh3cywgSTkxNV9DQUNIRV9MTEMpOwogCXZhZGRy ID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXAoc3Bpbi0+aHdzLCBJOTE1X01BUF9XQik7CiAJaWYg KElTX0VSUih2YWRkcikpIHsKIAkJZXJyID0gUFRSX0VSUih2YWRkcik7CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfaGFuZ2NoZWNrLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfaGFuZ2NoZWNrLmMKaW5kZXggYjVlMzViMmE5 MjVmLi43NmI0ZmExNTBmMmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0 ZXN0cy9pbnRlbF9oYW5nY2hlY2suYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVz dHMvaW50ZWxfaGFuZ2NoZWNrLmMKQEAgLTcwLDcgKzcwLDcgQEAgc3RhdGljIGludCBoYW5nX2lu aXQoc3RydWN0IGhhbmcgKmgsIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCQlnb3Rv IGVycl9od3M7CiAJfQogCi0JaTkxNV9nZW1fb2JqZWN0X3NldF9jYWNoZV9sZXZlbChoLT5od3Ms IEk5MTVfQ0FDSEVfTExDKTsKKwlpOTE1X2dlbV9vYmplY3Rfc2V0X2NhY2hlX2NvaGVyZW5jeSho LT5od3MsIEk5MTVfQ0FDSEVfTExDKTsKIAl2YWRkciA9IGk5MTVfZ2VtX29iamVjdF9waW5fbWFw KGgtPmh3cywgSTkxNV9NQVBfV0IpOwogCWlmIChJU19FUlIodmFkZHIpKSB7CiAJCWVyciA9IFBU Ul9FUlIodmFkZHIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3Rz L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX2xyYy5j CmluZGV4IGQ2MTUyMGVhMDNjMS4uOWU4NzFlYjBiZmIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfbHJjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL2ludGVsX2xyYy5jCkBAIC0xMDE4LDEyICsxMDE4LDkgQEAgc3RhdGljIGlu dCBsaXZlX3ByZWVtcHRfc21va2Uodm9pZCAqYXJnKQogCWZvciAobiA9IDA7IG4gPCBQQUdFX1NJ WkUgLyBzaXplb2YoKmNzKSAtIDE7IG4rKykKIAkJY3Nbbl0gPSBNSV9BUkJfQ0hFQ0s7CiAJY3Nb bl0gPSBNSV9CQVRDSF9CVUZGRVJfRU5EOworCWk5MTVfZ2VtX29iamVjdF9mbHVzaF9tYXAoc21v a2UuYmF0Y2gpOwogCWk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAoc21va2UuYmF0Y2gpOwogCi0J ZXJyID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKHNtb2tlLmJhdGNoLCBmYWxz ZSk7Ci0JaWYgKGVycikKLQkJZ290byBlcnJfYmF0Y2g7Ci0KIAlmb3IgKG4gPSAwOyBuIDwgc21v a2UubmNvbnRleHQ7IG4rKykgewogCQlzbW9rZS5jb250ZXh0c1tuXSA9IGtlcm5lbF9jb250ZXh0 KHNtb2tlLmk5MTUpOwogCQlpZiAoIXNtb2tlLmNvbnRleHRzW25dKQpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX3dvcmthcm91bmRzLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfd29ya2Fyb3VuZHMuYwppbmRleCBmMmEyYjUx YTQ2NjIuLjNiYWVkNTkwMDhkNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2Vs ZnRlc3RzL2ludGVsX3dvcmthcm91bmRzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2Vs ZnRlc3RzL2ludGVsX3dvcmthcm91bmRzLmMKQEAgLTkwLDYgKzkwLDcgQEAgcmVhZF9ub25wcml2 cyhzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCiAJCWdvdG8gZXJyX29iajsKIAl9CiAJbWVtc2V0KGNzLCAweGM1LCBQQUdFX1NJWkUp OworCWk5MTVfZ2VtX29iamVjdF9mbHVzaF9tYXAocmVzdWx0KTsKIAlpOTE1X2dlbV9vYmplY3Rf dW5waW5fbWFwKHJlc3VsdCk7CiAKIAl2bWEgPSBpOTE1X3ZtYV9pbnN0YW5jZShyZXN1bHQsICZl bmdpbmUtPmk5MTUtPmdndHQudm0sIE5VTEwpOwpAQCAtMzU4LDYgKzM1OSw3IEBAIHN0YXRpYyBz dHJ1Y3QgaTkxNV92bWEgKmNyZWF0ZV9zY3JhdGNoKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpj dHgpCiAJCWdvdG8gZXJyX29iajsKIAl9CiAJbWVtc2V0KHB0ciwgMHhjNSwgUEFHRV9TSVpFKTsK KwlpOTE1X2dlbV9vYmplY3RfZmx1c2hfbWFwKG9iaik7CiAJaTkxNV9nZW1fb2JqZWN0X3VucGlu X21hcChvYmopOwogCiAJdm1hID0gaTkxNV92bWFfaW5zdGFuY2Uob2JqLCAmY3R4LT5wcGd0dC0+ dm0sIE5VTEwpOwpAQCAtNTUxLDYgKzU1Myw3IEBAIHN0YXRpYyBpbnQgY2hlY2tfZGlydHlfd2hp dGVsaXN0KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCiAKIAkJKmNzKysgPSBNSV9CQVRD SF9CVUZGRVJfRU5EOwogCisJCWk5MTVfZ2VtX29iamVjdF9mbHVzaF9tYXAoYmF0Y2gtPm9iaik7 CiAJCWk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAoYmF0Y2gtPm9iaik7CiAJCWk5MTVfZ2VtX2No aXBzZXRfZmx1c2goY3R4LT5pOTE1KTsKIAotLSAKMi4yMC4xCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=