From mboxrd@z Thu Jan 1 00:00:00 1970 From: Fernando Pacheco Subject: [PATCH v2 3/5] drm/i915/uc: Place uC firmware in upper range of GGTT Date: Thu, 18 Apr 2019 16:31:49 -0700 Message-ID: <20190418233151.17510-4-fernando.pacheco@intel.com> References: <20190418233151.17510-1-fernando.pacheco@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 74A0989083 for ; Thu, 18 Apr 2019 23:34:22 +0000 (UTC) In-Reply-To: <20190418233151.17510-1-fernando.pacheco@intel.com> 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 Q3VycmVudGx5IHdlIHBpbiB0aGUgR3VDIG9yIEh1QyBmaXJtd2FyZSBpbWFnZSBqdXN0CmJlZm9y ZSB1cGxvYWRpbmcuIFBlcm1hLXBpbiBkdXJpbmcgdUMgaW5pdGlhbGl6YXRpb24KaW5zdGVhZCBh bmQgdXNlIHRoZSByYW5nZSByZXNlcnZlZCBhdCB0aGUgdG9wIG9mIHRoZQphZGRyZXNzIHNwYWNl LgoKTW92aW5nIHRoZSBmaXJtd2FyZSByZXN1bHRlZCBpbiBuZWVkaW5nIHRvOgotIHJlc3RvcmUg dGhlIGdndHQgbWFwcGluZyBkdXJpbmcgdGhlIHN1c3BlbmQvcmVzdW1lIHBhdGguCi0gdXNlIGFu IGFkZGl0aW9uYWwgcGlubmluZyBmb3IgdGhlIHJzYSBzaWduYXR1cmUgd2hpY2ggd2lsbAogIGJl IHVzZWQgZHVyaW5nIEh1QyBhdXRoIGFzIGFkZHJlc3NlcyBhYm92ZSBHVUNfR0dUVF9UT1AKICBk byBub3QgbWFwIHRocm91Z2ggR1RULgoKdjI6IFJlbW92ZSBjYWxsIHRvIHNldCB0byBndHQgZG9t YWluCiAgICBEbyBub3QgcmVzdG9yZSBmdyBndHQgbWFwcGluZyB1bmNvbmRpdGlvbmFsbHkKICAg IFNlcGFyYXRlIG91dCBwaW4vdW5waW4gZnVuY3Rpb25zIGFuZCBkcm9wIHVzYWdlIG9mIHBpbi91 bnBpbgogICAgVXNlIHVjX2Z3IGluaXQvZmluaSBmdW5jdGlvbnMgdG8gYmluZC91bmJpbmQgZncg b2JqZWN0CgpTaWduZWQtb2ZmLWJ5OiBGZXJuYW5kbyBQYWNoZWNvIDxmZXJuYW5kby5wYWNoZWNv QGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICB8ICAg MiArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuYyAgICB8ICAgOSArKy0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19mdy5jIHwgIDE4ICsrKy0tCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9odWMuYyAgICB8ICA3NCArKysrKysrKysrKysrLS0tLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfaHVjLmggICAgfCAgIDQgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfaHVjX2Z3LmMgfCAgNDcgKysrKysrKystLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3VjLmMgICAgIHwgIDM5ICsrKysrKysrLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf dWMuaCAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWNfZncuYyAgfCAx MTggKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfdWNfZncuaCAgfCAgIDkgKystCiAxMCBmaWxlcyBjaGFuZ2VkLCAyNDcgaW5zZXJ0aW9ucygr KSwgNzQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKaW5kZXggZTU0NjI2Mzlk ZTBiLi4wZTA2YTJjN2Q2NWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwpAQCAtNDUwOCw2ICs0 NTA4LDggQEAgdm9pZCBpOTE1X2dlbV9yZXN1bWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUpCiAJaTkxNV9nZW1fcmVzdG9yZV9ndHRfbWFwcGluZ3MoaTkxNSk7CiAJaTkxNV9nZW1fcmVz dG9yZV9mZW5jZXMoaTkxNSk7CiAKKwlpbnRlbF91Y19yZXN0b3JlX2dndHRfbWFwcGluZyhpOTE1 KTsKKwogCS8qCiAJICogQXMgd2UgZGlkbid0IGZsdXNoIHRoZSBrZXJuZWwgY29udGV4dCBiZWZv cmUgc3VzcGVuZCwgd2UgY2Fubm90CiAJICogZ3VhcmFudGVlIHRoYXQgdGhlIGNvbnRleHQgaW1h Z2UgaXMgY29tcGxldGUuIFNvIGxldCdzIGp1c3QgcmVzZXQKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2d1Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3Vj LmMKaW5kZXggZGRkMjQ2ZGMzZjE0Li41ZjNkYjEwMmM5MTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2d1Yy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2d1Yy5jCkBAIC0xODksOSArMTg5LDEzIEBAIGludCBpbnRlbF9ndWNfaW5pdChzdHJ1Y3QgaW50 ZWxfZ3VjICpndWMpCiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZ3VjX3Rv X2k5MTUoZ3VjKTsKIAlpbnQgcmV0OwogCi0JcmV0ID0gZ3VjX3NoYXJlZF9kYXRhX2NyZWF0ZShn dWMpOworCXJldCA9IGludGVsX3VjX2Z3X2luaXQoJmd1Yy0+ZncpOwogCWlmIChyZXQpCiAJCWdv dG8gZXJyX2ZldGNoOworCisJcmV0ID0gZ3VjX3NoYXJlZF9kYXRhX2NyZWF0ZShndWMpOworCWlm IChyZXQpCisJCWdvdG8gZXJyX2Z3OwogCUdFTV9CVUdfT04oIWd1Yy0+c2hhcmVkX2RhdGEpOwog CiAJcmV0ID0gaW50ZWxfZ3VjX2xvZ19jcmVhdGUoJmd1Yy0+bG9nKTsKQEAgLTIyMCw2ICsyMjQs OCBAQCBpbnQgaW50ZWxfZ3VjX2luaXQoc3RydWN0IGludGVsX2d1YyAqZ3VjKQogCWludGVsX2d1 Y19sb2dfZGVzdHJveSgmZ3VjLT5sb2cpOwogZXJyX3NoYXJlZDoKIAlndWNfc2hhcmVkX2RhdGFf ZGVzdHJveShndWMpOworZXJyX2Z3OgorCWludGVsX3VjX2Z3X2ZpbmkoJmd1Yy0+ZncpOwogZXJy X2ZldGNoOgogCWludGVsX3VjX2Z3X2NsZWFudXBfZmV0Y2goJmd1Yy0+ZncpOwogCXJldHVybiBy ZXQ7CkBAIC0yMzcsNiArMjQzLDcgQEAgdm9pZCBpbnRlbF9ndWNfZmluaShzdHJ1Y3QgaW50ZWxf Z3VjICpndWMpCiAJaW50ZWxfZ3VjX2Fkc19kZXN0cm95KGd1Yyk7CiAJaW50ZWxfZ3VjX2xvZ19k ZXN0cm95KCZndWMtPmxvZyk7CiAJZ3VjX3NoYXJlZF9kYXRhX2Rlc3Ryb3koZ3VjKTsKKwlpbnRl bF91Y19md19maW5pKCZndWMtPmZ3KTsKIAlpbnRlbF91Y19md19jbGVhbnVwX2ZldGNoKCZndWMt PmZ3KTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2Z3 LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfZncuYwppbmRleCA0Mzg1ZDllZjAy YmIuLjhiMmRjYzcwYjk1NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf Z3VjX2Z3LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2Z3LmMKQEAgLTEy MiwxNCArMTIyLDE2IEBAIHN0YXRpYyB2b2lkIGd1Y19wcmVwYXJlX3hmZXIoc3RydWN0IGludGVs X2d1YyAqZ3VjKQogfQogCiAvKiBDb3B5IFJTQSBzaWduYXR1cmUgZnJvbSB0aGUgZncgaW1hZ2Ug dG8gSFcgZm9yIHZlcmlmaWNhdGlvbiAqLwotc3RhdGljIHZvaWQgZ3VjX3hmZXJfcnNhKHN0cnVj dCBpbnRlbF9ndWMgKmd1Yywgc3RydWN0IGk5MTVfdm1hICp2bWEpCitzdGF0aWMgdm9pZCBndWNf eGZlcl9yc2Eoc3RydWN0IGludGVsX2d1YyAqZ3VjKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGd1Y190b19pOTE1KGd1Yyk7CisJc3RydWN0IGludGVsX3VjX2Z3ICpm dyA9ICZndWMtPmZ3OworCXN0cnVjdCBzZ190YWJsZSAqcGFnZXMgPSBmdy0+b2JqLT5tbS5wYWdl czsKIAl1MzIgcnNhW1VPU19SU0FfU0NSQVRDSF9DT1VOVF07CiAJaW50IGk7CiAKLQlzZ19wY29w eV90b19idWZmZXIodm1hLT5wYWdlcy0+c2dsLCB2bWEtPnBhZ2VzLT5uZW50cywKLQkJCSAgIHJz YSwgc2l6ZW9mKHJzYSksIGd1Yy0+ZncucnNhX29mZnNldCk7CisJc2dfcGNvcHlfdG9fYnVmZmVy KHBhZ2VzLT5zZ2wsIHBhZ2VzLT5uZW50cywKKwkJCSAgIHJzYSwgc2l6ZW9mKHJzYSksIGZ3LT5y c2Ffb2Zmc2V0KTsKIAogCWZvciAoaSA9IDA7IGkgPCBVT1NfUlNBX1NDUkFUQ0hfQ09VTlQ7IGkr KykKIAkJSTkxNV9XUklURShVT1NfUlNBX1NDUkFUQ0goaSksIHJzYVtpXSk7CkBAIC0yMDEsNyAr MjAzLDcgQEAgc3RhdGljIGludCBndWNfd2FpdF91Y29kZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMp CiAgKiB0cmFuc2ZlciBiZXR3ZWVuIEdUVCBsb2NhdGlvbnMuIFRoaXMgZnVuY3Rpb25hbGl0eSBp cyBsZWZ0IG91dCBvZiB0aGUgQVBJCiAgKiBmb3Igbm93IGFzIHRoZXJlIGlzIG5vIG5lZWQgZm9y IGl0LgogICovCi1zdGF0aWMgaW50IGd1Y194ZmVyX3Vjb2RlKHN0cnVjdCBpbnRlbF9ndWMgKmd1 Yywgc3RydWN0IGk5MTVfdm1hICp2bWEpCitzdGF0aWMgaW50IGd1Y194ZmVyX3Vjb2RlKHN0cnVj dCBpbnRlbF9ndWMgKmd1YykKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBndWNfdG9faTkxNShndWMpOwogCXN0cnVjdCBpbnRlbF91Y19mdyAqZ3VjX2Z3ID0gJmd1Yy0+ Znc7CkBAIC0yMTQsNyArMjE2LDcgQEAgc3RhdGljIGludCBndWNfeGZlcl91Y29kZShzdHJ1Y3Qg aW50ZWxfZ3VjICpndWMsIHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQogCUk5MTVfV1JJVEUoRE1BX0NP UFlfU0laRSwgZ3VjX2Z3LT5oZWFkZXJfc2l6ZSArIGd1Y19mdy0+dWNvZGVfc2l6ZSk7CiAKIAkv KiBTZXQgdGhlIHNvdXJjZSBhZGRyZXNzIGZvciB0aGUgbmV3IGJsb2IgKi8KLQlvZmZzZXQgPSBp bnRlbF9ndWNfZ2d0dF9vZmZzZXQoZ3VjLCB2bWEpICsgZ3VjX2Z3LT5oZWFkZXJfb2Zmc2V0Owor CW9mZnNldCA9IGludGVsX3VjX2Z3X2dndHRfb2Zmc2V0KGd1Y19mdykgKyBndWNfZnctPmhlYWRl cl9vZmZzZXQ7CiAJSTkxNV9XUklURShETUFfQUREUl8wX0xPVywgbG93ZXJfMzJfYml0cyhvZmZz ZXQpKTsKIAlJOTE1X1dSSVRFKERNQV9BRERSXzBfSElHSCwgdXBwZXJfMzJfYml0cyhvZmZzZXQp ICYgMHhGRkZGKTsKIApAQCAtMjMzLDcgKzIzNSw3IEBAIHN0YXRpYyBpbnQgZ3VjX3hmZXJfdWNv ZGUoc3RydWN0IGludGVsX2d1YyAqZ3VjLCBzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKIC8qCiAgKiBM b2FkIHRoZSBHdUMgZmlybXdhcmUgYmxvYiBpbnRvIHRoZSBNaW51dGVJQS4KICAqLwotc3RhdGlj IGludCBndWNfZndfeGZlcihzdHJ1Y3QgaW50ZWxfdWNfZncgKmd1Y19mdywgc3RydWN0IGk5MTVf dm1hICp2bWEpCitzdGF0aWMgaW50IGd1Y19md194ZmVyKHN0cnVjdCBpbnRlbF91Y19mdyAqZ3Vj X2Z3KQogewogCXN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9IGNvbnRhaW5lcl9vZihndWNfZncsIHN0 cnVjdCBpbnRlbF9ndWMsIGZ3KTsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBndWNfdG9faTkxNShndWMpOwpAQCAtMjUwLDkgKzI1Miw5IEBAIHN0YXRpYyBpbnQgZ3VjX2Z3 X3hmZXIoc3RydWN0IGludGVsX3VjX2Z3ICpndWNfZncsIHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQog CSAqIGJ5IHRoZSBETUEgZW5naW5lIGluIG9uZSBvcGVyYXRpb24sIHdoZXJlYXMgdGhlIFJTQSBz aWduYXR1cmUgaXMKIAkgKiBsb2FkZWQgdmlhIE1NSU8uCiAJICovCi0JZ3VjX3hmZXJfcnNhKGd1 Yywgdm1hKTsKKwlndWNfeGZlcl9yc2EoZ3VjKTsKIAotCXJldCA9IGd1Y194ZmVyX3Vjb2RlKGd1 Yywgdm1hKTsKKwlyZXQgPSBndWNfeGZlcl91Y29kZShndWMpOwogCiAJaW50ZWxfdW5jb3JlX2Zv cmNld2FrZV9wdXQoJmRldl9wcml2LT51bmNvcmUsIEZPUkNFV0FLRV9BTEwpOwogCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2h1Yy5jCmluZGV4IDk0YzA0ZjE2YTJhZC4uMWZmMWZiMDE1ZTU4IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9odWMuYwpAQCAtNDAsNiArNDAsNjEgQEAgaW50IGludGVsX2h1Y19pbml0 X21pc2Moc3RydWN0IGludGVsX2h1YyAqaHVjKQogCXJldHVybiAwOwogfQogCitzdGF0aWMgaW50 IGludGVsX2h1Y19yc2FfZGF0YV9jcmVhdGUoc3RydWN0IGludGVsX2h1YyAqaHVjKQoreworCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gaHVjX3RvX2k5MTUoaHVjKTsKKwlzdHJ1Y3Qg aW50ZWxfZ3VjICpndWMgPSAmaTkxNS0+Z3VjOworCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOworCXZv aWQgKnZhZGRyOworCisJLyoKKwkgKiBIdUMgZmlybXdhcmUgd2lsbCBzaXQgYWJvdmUgR1VDX0dH VFRfVE9QIGFuZCB3aWxsIG5vdCBtYXAKKwkgKiB0aHJvdWdoIEdUVC4gVW5mb3J0dW5hdGVseSwg dGhpcyBtZWFucyBHdUMgY2Fubm90IHBlcmZvcm0KKwkgKiB0aGUgSHVDIGF1dGguIGFzIHRoZSBy c2Egb2Zmc2V0IG5vdyBmYWxscyB3aXRoaW4gdGhlIEd1QworCSAqIGluYWNjZXNzaWJsZSByYW5n ZS4gV2UgcmVzb3J0IHRvIHBlcm1hLXBpbm5pbmcgYW4gYWRkaXRpb25hbAorCSAqIHZtYSB3aXRo aW4gdGhlIGFjY2Vzc2libGUgcmFuZ2UgdGhhdCBvbmx5IGNvbnRhaW5zIHRoZSByc2EKKwkgKiBz aWduYXR1cmUuIFRoZSBHdUMgY2FuIHVzZSB0aGlzIGV4dHJhIHBpbm5pbmcgdG8gcGVyZm9ybQor CSAqIHRoZSBhdXRoZW50aWNhdGlvbiBzaW5jZSBpdHMgR0dUVCBvZmZzZXQgd2lsbCBiZSBHdUMK KwkgKiBhY2Nlc3NpYmxlLgorCSAqLworCXZtYSA9IGludGVsX2d1Y19hbGxvY2F0ZV92bWEoZ3Vj LCBQQUdFX1NJWkUpOworCWlmIChJU19FUlIodm1hKSkKKwkJcmV0dXJuIFBUUl9FUlIodm1hKTsK KworCXZhZGRyID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXAodm1hLT5vYmosIEk5MTVfTUFQX1dC KTsKKwlpZiAoSVNfRVJSKHZhZGRyKSkgeworCQlpOTE1X3ZtYV91bnBpbl9hbmRfcmVsZWFzZSgm dm1hLCAwKTsKKwkJcmV0dXJuIFBUUl9FUlIodmFkZHIpOworCX0KKworCWh1Yy0+cnNhX2RhdGEg PSB2bWE7CisJaHVjLT5yc2FfZGF0YV92YWRkciA9IHZhZGRyOworCisJcmV0dXJuIDA7Cit9CisK K3N0YXRpYyB2b2lkIGludGVsX2h1Y19yc2FfZGF0YV9kZXN0cm95KHN0cnVjdCBpbnRlbF9odWMg Kmh1YykKK3sKKwlpOTE1X3ZtYV91bnBpbl9hbmRfcmVsZWFzZSgmaHVjLT5yc2FfZGF0YSwgSTkx NV9WTUFfUkVMRUFTRV9NQVApOworfQorCitpbnQgaW50ZWxfaHVjX2luaXQoc3RydWN0IGludGVs X2h1YyAqaHVjKQoreworCWludCBlcnI7CisKKwllcnIgPSBpbnRlbF9odWNfcnNhX2RhdGFfY3Jl YXRlKGh1Yyk7CisJaWYgKGVycikKKwkJcmV0dXJuIGVycjsKKworCXJldHVybiBpbnRlbF91Y19m d19pbml0KCZodWMtPmZ3KTsKK30KKwordm9pZCBpbnRlbF9odWNfZmluaShzdHJ1Y3QgaW50ZWxf aHVjICpodWMpCit7CisJaW50ZWxfdWNfZndfZmluaSgmaHVjLT5mdyk7CisJaW50ZWxfaHVjX3Jz YV9kYXRhX2Rlc3Ryb3koaHVjKTsKK30KKwogLyoqCiAgKiBpbnRlbF9odWNfYXV0aCgpIC0gQXV0 aGVudGljYXRlIEh1QyB1Q29kZQogICogQGh1YzogaW50ZWxfaHVjIHN0cnVjdHVyZQpAQCAtNTUs MjcgKzExMCwxNyBAQCBpbnQgaW50ZWxfaHVjX2F1dGgoc3RydWN0IGludGVsX2h1YyAqaHVjKQog ewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gaHVjX3RvX2k5MTUoaHVjKTsKIAlz dHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAmaTkxNS0+Z3VjOwotCXN0cnVjdCBpOTE1X3ZtYSAqdm1h OwogCXUzMiBzdGF0dXM7CiAJaW50IHJldDsKIAogCWlmIChodWMtPmZ3LmxvYWRfc3RhdHVzICE9 IElOVEVMX1VDX0ZJUk1XQVJFX1NVQ0NFU1MpCiAJCXJldHVybiAtRU5PRVhFQzsKIAotCXZtYSA9 IGk5MTVfZ2VtX29iamVjdF9nZ3R0X3BpbihodWMtPmZ3Lm9iaiwgTlVMTCwgMCwgMCwKLQkJCQkg ICAgICAgUElOX09GRlNFVF9CSUFTIHwgaTkxNS0+Z2d0dC5waW5fYmlhcyk7Ci0JaWYgKElTX0VS Uih2bWEpKSB7Ci0JCXJldCA9IFBUUl9FUlIodm1hKTsKLQkJRFJNX0VSUk9SKCJIdUM6IEZhaWxl ZCB0byBwaW4gaHVjIGZ3IG9iamVjdCAlZFxuIiwgcmV0KTsKLQkJZ290byBmYWlsOwotCX0KLQog CXJldCA9IGludGVsX2d1Y19hdXRoX2h1YyhndWMsCi0JCQkJIGludGVsX2d1Y19nZ3R0X29mZnNl dChndWMsIHZtYSkgKwotCQkJCSBodWMtPmZ3LnJzYV9vZmZzZXQpOworCQkJCSBpbnRlbF9ndWNf Z2d0dF9vZmZzZXQoZ3VjLCBodWMtPnJzYV9kYXRhKSk7CiAJaWYgKHJldCkgewogCQlEUk1fRVJS T1IoIkh1QzogR3VDIGRpZCBub3QgYWNrIEF1dGggcmVxdWVzdCAlZFxuIiwgcmV0KTsKLQkJZ290 byBmYWlsX3VucGluOworCQlnb3RvIGZhaWw7CiAJfQogCiAJLyogQ2hlY2sgYXV0aGVudGljYXRp b24gc3RhdHVzLCBpdCBzaG91bGQgYmUgZG9uZSBieSBub3cgKi8KQEAgLTg2LDE0ICsxMzEsMTEg QEAgaW50IGludGVsX2h1Y19hdXRoKHN0cnVjdCBpbnRlbF9odWMgKmh1YykKIAkJCQkJMiwgNTAs ICZzdGF0dXMpOwogCWlmIChyZXQpIHsKIAkJRFJNX0VSUk9SKCJIdUM6IEZpcm13YXJlIG5vdCB2 ZXJpZmllZCAlI3hcbiIsIHN0YXR1cyk7Ci0JCWdvdG8gZmFpbF91bnBpbjsKKwkJZ290byBmYWls OwogCX0KIAotCWk5MTVfdm1hX3VucGluKHZtYSk7CiAJcmV0dXJuIDA7CiAKLWZhaWxfdW5waW46 Ci0JaTkxNV92bWFfdW5waW4odm1hKTsKIGZhaWw6CiAJaHVjLT5mdy5sb2FkX3N0YXR1cyA9IElO VEVMX1VDX0ZJUk1XQVJFX0ZBSUw7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2h1Yy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjLmgKaW5kZXggY2Ux MjllMzAxOTYxLi5hMGMyMWFlMDJhOTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2h1Yy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Yy5oCkBAIC0z MywxMCArMzMsMTQgQEAgc3RydWN0IGludGVsX2h1YyB7CiAJc3RydWN0IGludGVsX3VjX2Z3IGZ3 OwogCiAJLyogSHVDLXNwZWNpZmljIGFkZGl0aW9ucyAqLworCXN0cnVjdCBpOTE1X3ZtYSAqcnNh X2RhdGE7CisJdm9pZCAqcnNhX2RhdGFfdmFkZHI7CiB9OwogCiB2b2lkIGludGVsX2h1Y19pbml0 X2Vhcmx5KHN0cnVjdCBpbnRlbF9odWMgKmh1Yyk7CiBpbnQgaW50ZWxfaHVjX2luaXRfbWlzYyhz dHJ1Y3QgaW50ZWxfaHVjICpodWMpOworaW50IGludGVsX2h1Y19pbml0KHN0cnVjdCBpbnRlbF9o dWMgKmh1Yyk7Cit2b2lkIGludGVsX2h1Y19maW5pKHN0cnVjdCBpbnRlbF9odWMgKmh1Yyk7CiBp bnQgaW50ZWxfaHVjX2F1dGgoc3RydWN0IGludGVsX2h1YyAqaHVjKTsKIGludCBpbnRlbF9odWNf Y2hlY2tfc3RhdHVzKHN0cnVjdCBpbnRlbF9odWMgKmh1Yyk7CiAKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Y19mdy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfaHVjX2Z3LmMKaW5kZXggODBhMTc2ZDkxZWRjLi40NGM1NTk1MjYwNzIgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Y19mdy5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2h1Y19mdy5jCkBAIC05MywxOCArOTMsMjQgQEAgdm9pZCBpbnRlbF9odWNf ZndfaW5pdF9lYXJseShzdHJ1Y3QgaW50ZWxfaHVjICpodWMpCiAJaHVjX2Z3X3NlbGVjdChodWNf ZncpOwogfQogCi0vKioKLSAqIGh1Y19md194ZmVyKCkgLSBETUEncyB0aGUgZmlybXdhcmUKLSAq IEBodWNfZnc6IHRoZSBmaXJtd2FyZSBkZXNjcmlwdG9yCi0gKiBAdm1hOiB0aGUgZmlybXdhcmUg aW1hZ2UgKGJvdW5kIGludG8gdGhlIEdHVFQpCi0gKgotICogVHJhbnNmZXIgdGhlIGZpcm13YXJl IGltYWdlIHRvIFJBTSBmb3IgZXhlY3V0aW9uIGJ5IHRoZSBtaWNyb2NvbnRyb2xsZXIuCi0gKgot ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5vbi16ZXJvIG9uIGZhaWx1cmUKLSAqLwotc3RhdGlj IGludCBodWNfZndfeGZlcihzdHJ1Y3QgaW50ZWxfdWNfZncgKmh1Y19mdywgc3RydWN0IGk5MTVf dm1hICp2bWEpCitzdGF0aWMgdm9pZCBodWNfeGZlcl9yc2Eoc3RydWN0IGludGVsX2h1YyAqaHVj KQogewotCXN0cnVjdCBpbnRlbF9odWMgKmh1YyA9IGNvbnRhaW5lcl9vZihodWNfZncsIHN0cnVj dCBpbnRlbF9odWMsIGZ3KTsKKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmZ3ID0gJmh1Yy0+Znc7CisJ c3RydWN0IHNnX3RhYmxlICpwYWdlcyA9IGZ3LT5vYmotPm1tLnBhZ2VzOworCisJLyoKKwkgKiBI dUMgZmlybXdhcmUgaW1hZ2UgaXMgb3V0c2lkZSBHdUMgYWNjZXNzaWJsZSByYW5nZS4KKwkgKiBD b3B5IHRoZSBSU0Egc2lnbmF0dXJlIG91dCBvZiB0aGUgaW1hZ2UgaW50bworCSAqIHRoZSBwZXJt YS1waW5uZWQgcmVnaW9uIHNldCBhc2lkZSBmb3IgaXQKKwkgKi8KKwlzZ19wY29weV90b19idWZm ZXIocGFnZXMtPnNnbCwgcGFnZXMtPm5lbnRzLAorCQkJICAgaHVjLT5yc2FfZGF0YV92YWRkciwg ZnctPnJzYV9zaXplLAorCQkJICAgZnctPnJzYV9vZmZzZXQpOworfQorCitzdGF0aWMgaW50IGh1 Y194ZmVyX3Vjb2RlKHN0cnVjdCBpbnRlbF9odWMgKmh1YykKK3sKKwlzdHJ1Y3QgaW50ZWxfdWNf ZncgKmh1Y19mdyA9ICZodWMtPmZ3OwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGh1Y190b19pOTE1KGh1Yyk7CiAJc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0gJmRl dl9wcml2LT51bmNvcmU7CiAJdW5zaWduZWQgbG9uZyBvZmZzZXQgPSAwOwpAQCAtMTE2LDcgKzEy Miw3IEBAIHN0YXRpYyBpbnQgaHVjX2Z3X3hmZXIoc3RydWN0IGludGVsX3VjX2Z3ICpodWNfZncs IHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQogCWludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KHVuY29y ZSwgRk9SQ0VXQUtFX0FMTCk7CiAKIAkvKiBTZXQgdGhlIHNvdXJjZSBhZGRyZXNzIGZvciB0aGUg dUNvZGUgKi8KLQlvZmZzZXQgPSBpbnRlbF9ndWNfZ2d0dF9vZmZzZXQoJmRldl9wcml2LT5ndWMs IHZtYSkgKworCW9mZnNldCA9IGludGVsX3VjX2Z3X2dndHRfb2Zmc2V0KGh1Y19mdykgKwogCQkg aHVjX2Z3LT5oZWFkZXJfb2Zmc2V0OwogCWludGVsX3VuY29yZV93cml0ZSh1bmNvcmUsIERNQV9B RERSXzBfTE9XLAogCQkJICAgbG93ZXJfMzJfYml0cyhvZmZzZXQpKTsKQEAgLTE1MCw2ICsxNTYs MjMgQEAgc3RhdGljIGludCBodWNfZndfeGZlcihzdHJ1Y3QgaW50ZWxfdWNfZncgKmh1Y19mdywg c3RydWN0IGk5MTVfdm1hICp2bWEpCiAJcmV0dXJuIHJldDsKIH0KIAorLyoqCisgKiBodWNfZndf eGZlcigpIC0gRE1BJ3MgdGhlIGZpcm13YXJlCisgKiBAaHVjX2Z3OiB0aGUgZmlybXdhcmUgZGVz Y3JpcHRvcgorICoKKyAqIFRyYW5zZmVyIHRoZSBmaXJtd2FyZSBpbWFnZSB0byBSQU0gZm9yIGV4 ZWN1dGlvbiBieSB0aGUgbWljcm9jb250cm9sbGVyLgorICoKKyAqIFJldHVybjogMCBvbiBzdWNj ZXNzLCBub24temVybyBvbiBmYWlsdXJlCisgKi8KK3N0YXRpYyBpbnQgaHVjX2Z3X3hmZXIoc3Ry dWN0IGludGVsX3VjX2Z3ICpodWNfZncpCit7CisJc3RydWN0IGludGVsX2h1YyAqaHVjID0gY29u dGFpbmVyX29mKGh1Y19mdywgc3RydWN0IGludGVsX2h1YywgZncpOworCisJaHVjX3hmZXJfcnNh KGh1Yyk7CisKKwlyZXR1cm4gaHVjX3hmZXJfdWNvZGUoaHVjKTsKK30KKwogLyoqCiAgKiBpbnRl bF9odWNfZndfdXBsb2FkKCkgLSBsb2FkIEh1QyB1Q29kZSB0byBkZXZpY2UKICAqIEBodWM6IGlu dGVsX2h1YyBzdHJ1Y3R1cmUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3VjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5jCmluZGV4IDI1YjgwZmZlNzFh ZC4uZmY0NDUyZGVkNDFlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91 Yy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmMKQEAgLTI4MCw2ICsyODAs NyBAQCB2b2lkIGludGVsX3VjX2ZpbmlfbWlzYyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSkKIGludCBpbnRlbF91Y19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogewog CXN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9ICZpOTE1LT5ndWM7CisJc3RydWN0IGludGVsX2h1YyAq aHVjID0gJmk5MTUtPmh1YzsKIAlpbnQgcmV0OwogCiAJaWYgKCFVU0VTX0dVQyhpOTE1KSkKQEAg LTI5MiwxOSArMjkzLDMwIEBAIGludCBpbnRlbF91Y19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1KQogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKKwlpZiAoVVNFU19IVUMoaTkx NSkpIHsKKwkJcmV0ID0gaW50ZWxfaHVjX2luaXQoaHVjKTsKKwkJaWYgKHJldCkKKwkJCWdvdG8g ZXJyX2d1YzsKKwl9CisKIAlpZiAoVVNFU19HVUNfU1VCTUlTU0lPTihpOTE1KSkgewogCQkvKgog CQkgKiBUaGlzIGlzIHN0dWZmIHdlIG5lZWQgdG8gaGF2ZSBhdmFpbGFibGUgYXQgZncgbG9hZCB0 aW1lCiAJCSAqIGlmIHdlIGFyZSBwbGFubmluZyB0byBlbmFibGUgc3VibWlzc2lvbiBsYXRlcgog CQkgKi8KIAkJcmV0ID0gaW50ZWxfZ3VjX3N1Ym1pc3Npb25faW5pdChndWMpOwotCQlpZiAocmV0 KSB7Ci0JCQlpbnRlbF9ndWNfZmluaShndWMpOwotCQkJcmV0dXJuIHJldDsKLQkJfQorCQlpZiAo cmV0KQorCQkJZ290byBlcnJfaHVjOwogCX0KIAogCXJldHVybiAwOworCitlcnJfaHVjOgorCWlm IChVU0VTX0hVQyhpOTE1KSkKKwkJaW50ZWxfaHVjX2ZpbmkoaHVjKTsKK2Vycl9ndWM6CisJaW50 ZWxfZ3VjX2ZpbmkoZ3VjKTsKKwlyZXR1cm4gcmV0OwogfQogCiB2b2lkIGludGVsX3VjX2Zpbmko c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCkBAIC0zMTksNiArMzMxLDkgQEAgdm9pZCBp bnRlbF91Y19maW5pKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCWlmIChVU0VTX0dV Q19TVUJNSVNTSU9OKGk5MTUpKQogCQlpbnRlbF9ndWNfc3VibWlzc2lvbl9maW5pKGd1Yyk7CiAK KwlpZiAoVVNFU19IVUMoaTkxNSkpCisJCWludGVsX2h1Y19maW5pKCZpOTE1LT5odWMpOworCiAJ aW50ZWxfZ3VjX2ZpbmkoZ3VjKTsKIH0KIApAQCAtNDg4LDYgKzUwMywyMiBAQCBpbnQgaW50ZWxf dWNfc3VzcGVuZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAlyZXR1cm4gMDsKIH0K IAordm9pZCBpbnRlbF91Y19yZXN0b3JlX2dndHRfbWFwcGluZyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSkKK3sKKwlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAmaTkxNS0+Z3VjOworCisJ aWYgKCFVU0VTX0dVQyhpOTE1KSkKKwkJcmV0dXJuOworCisJaW50ZWxfdWNfZndfZ2d0dF9iaW5k KCZndWMtPmZ3KTsKKworCWlmIChVU0VTX0hVQyhpOTE1KSkgeworCQlzdHJ1Y3QgaW50ZWxfaHVj ICpodWMgPSAmaTkxNS0+aHVjOworCisJCWludGVsX3VjX2Z3X2dndHRfYmluZCgmaHVjLT5mdyk7 CisJfQorfQorCiBpbnQgaW50ZWxfdWNfcmVzdW1lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1KQogewogCXN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9ICZpOTE1LT5ndWM7CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfdWMuaAppbmRleCBjMTQ3Mjk3ODY2NTIuLmU3ZTJlODcxNzAwZSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF91Yy5oCkBAIC00MCw2ICs0MCw3IEBAIGludCBpbnRlbF91Y19pbml0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiB2b2lkIGludGVsX3VjX2Zpbmkoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIHZvaWQgaW50ZWxfdWNfcmVzZXRfcHJlcGFyZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7CiBpbnQgaW50ZWxfdWNfc3VzcGVuZChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwordm9pZCBpbnRlbF91Y19yZXN0b3JlX2dn dHRfbWFwcGluZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7CiBpbnQgaW50ZWxfdWNf cmVzdW1lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiAKIHN0YXRpYyBpbmxp bmUgYm9vbCBpbnRlbF91Y19pc191c2luZ19ndWMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Y19mdy5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWNfZncuYwppbmRleCBlM2U3NDIwN2ExMDIuLjAyYTQ1 NWNhNTk4NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWNfZncuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Y19mdy5jCkBAIC0yMDEsMTEgKzIwMSw4 IEBAIHZvaWQgaW50ZWxfdWNfZndfZmV0Y2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAogICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5vbi16ZXJvIG9uIGZhaWx1cmUuCiAgKi8K IGludCBpbnRlbF91Y19md191cGxvYWQoc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdywKLQkJICAg ICAgIGludCAoKnhmZXIpKHN0cnVjdCBpbnRlbF91Y19mdyAqdWNfZncsCi0JCQkJICAgc3RydWN0 IGk5MTVfdm1hICp2bWEpKQorCQkgICAgICAgaW50ICgqeGZlcikoc3RydWN0IGludGVsX3VjX2Z3 ICp1Y19mdykpCiB7Ci0Jc3RydWN0IGk5MTVfdm1hICp2bWE7Ci0JdTMyIGdndHRfcGluX2JpYXM7 CiAJaW50IGVycjsKIAogCURSTV9ERUJVR19EUklWRVIoIiVzIGZ3IGxvYWQgJXNcbiIsCkBAIC0y MTksMzMgKzIxNiw4IEBAIGludCBpbnRlbF91Y19md191cGxvYWQoc3RydWN0IGludGVsX3VjX2Z3 ICp1Y19mdywKIAkJCSBpbnRlbF91Y19md190eXBlX3JlcHIodWNfZnctPnR5cGUpLAogCQkJIGlu dGVsX3VjX2Z3X3N0YXR1c19yZXByKHVjX2Z3LT5sb2FkX3N0YXR1cykpOwogCi0JLyogUGluIG9i amVjdCB3aXRoIGZpcm13YXJlICovCi0JZXJyID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRf ZG9tYWluKHVjX2Z3LT5vYmosIGZhbHNlKTsKLQlpZiAoZXJyKSB7Ci0JCURSTV9ERUJVR19EUklW RVIoIiVzIGZ3IHNldC1kb21haW4gZXJyPSVkXG4iLAotCQkJCSBpbnRlbF91Y19md190eXBlX3Jl cHIodWNfZnctPnR5cGUpLCBlcnIpOwotCQlnb3RvIGZhaWw7Ci0JfQotCi0JZ2d0dF9waW5fYmlh cyA9IHRvX2k5MTUodWNfZnctPm9iai0+YmFzZS5kZXYpLT5nZ3R0LnBpbl9iaWFzOwotCXZtYSA9 IGk5MTVfZ2VtX29iamVjdF9nZ3R0X3Bpbih1Y19mdy0+b2JqLCBOVUxMLCAwLCAwLAotCQkJCSAg ICAgICBQSU5fT0ZGU0VUX0JJQVMgfCBnZ3R0X3Bpbl9iaWFzKTsKLQlpZiAoSVNfRVJSKHZtYSkp IHsKLQkJZXJyID0gUFRSX0VSUih2bWEpOwotCQlEUk1fREVCVUdfRFJJVkVSKCIlcyBmdyBnZ3R0 LXBpbiBlcnI9JWRcbiIsCi0JCQkJIGludGVsX3VjX2Z3X3R5cGVfcmVwcih1Y19mdy0+dHlwZSks IGVycik7Ci0JCWdvdG8gZmFpbDsKLQl9Ci0KIAkvKiBDYWxsIGN1c3RvbSBsb2FkZXIgKi8KLQll cnIgPSB4ZmVyKHVjX2Z3LCB2bWEpOwotCi0JLyoKLQkgKiBXZSBrZWVwIHRoZSBvYmplY3QgcGFn ZXMgZm9yIHJldXNlIGR1cmluZyByZXN1bWUuIEJ1dCB3ZSBjYW4gdW5waW4gaXQKLQkgKiBub3cg dGhhdCBETUEgaGFzIGNvbXBsZXRlZCwgc28gaXQgZG9lc24ndCBjb250aW51ZSB0byB0YWtlIHVw IHNwYWNlLgotCSAqLwotCWk5MTVfdm1hX3VucGluKHZtYSk7Ci0KKwllcnIgPSB4ZmVyKHVjX2Z3 KTsKIAlpZiAoZXJyKQogCQlnb3RvIGZhaWw7CiAKQEAgLTI3Myw2ICsyNDUsOTIgQEAgaW50IGlu dGVsX3VjX2Z3X3VwbG9hZChzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3LAogCXJldHVybiBlcnI7 CiB9CiAKK2ludCBpbnRlbF91Y19md19pbml0KHN0cnVjdCBpbnRlbF91Y19mdyAqdWNfZncpCit7 CisJaW50IGVycjsKKworCWlmICh1Y19mdy0+ZmV0Y2hfc3RhdHVzICE9IElOVEVMX1VDX0ZJUk1X QVJFX1NVQ0NFU1MpCisJCXJldHVybiAtRU5PRVhFQzsKKworCWVyciA9IGk5MTVfZ2VtX29iamVj dF9waW5fcGFnZXModWNfZnctPm9iaik7CisJaWYgKGVycikgeworCQlEUk1fREVCVUdfRFJJVkVS KCIlcyBmdyBwaW4tcGFnZXMgZXJyPSVkXG4iLAorCQkJCSBpbnRlbF91Y19md190eXBlX3JlcHIo dWNfZnctPnR5cGUpLCBlcnIpOworCQlyZXR1cm4gZXJyOworCX0KKworCWludGVsX3VjX2Z3X2dn dHRfYmluZCh1Y19mdyk7CisJcmV0dXJuIDA7Cit9CisKK3ZvaWQgaW50ZWxfdWNfZndfZmluaShz dHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3KQoreworCWlmICh1Y19mdy0+ZmV0Y2hfc3RhdHVzICE9 IElOVEVMX1VDX0ZJUk1XQVJFX1NVQ0NFU1MpCisJCXJldHVybjsKKworCWludGVsX3VjX2Z3X2dn dHRfdW5iaW5kKHVjX2Z3KTsKKwlpOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXModWNfZnctPm9i aik7Cit9CisKK3UzMiBpbnRlbF91Y19md19nZ3R0X29mZnNldChzdHJ1Y3QgaW50ZWxfdWNfZncg KnVjX2Z3KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkxNSh1Y19m dy0+b2JqLT5iYXNlLmRldik7CisJc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCA9ICZpOTE1LT5nZ3R0 OworCXN0cnVjdCBkcm1fbW1fbm9kZSAqbm9kZSA9ICZnZ3R0LT51Y19mdzsKKwl1NjQgb2Zmc2V0 OworCisJR0VNX0JVR19PTighbm9kZS0+YWxsb2NhdGVkKTsKKwlHRU1fQlVHX09OKHVwcGVyXzMy X2JpdHMobm9kZS0+c3RhcnQpKTsKKwlHRU1fQlVHX09OKHVwcGVyXzMyX2JpdHMobm9kZS0+c3Rh cnQgKyBub2RlLT5zaXplIC0gMSkpOworCisJb2Zmc2V0ID0gbm9kZS0+c3RhcnQ7CisKKwlpZiAo dWNfZnctPnR5cGUgPT0gSU5URUxfVUNfRldfVFlQRV9IVUMpIHsKKwkJLyoKKwkJICogTk9URTog R3VDIGFuZCBIdUMgZncgd2lsbCBzaGFyZSB0aGUgbW0gYWxsb2NhdGlvbiByYW5nZSwKKwkJICog d2l0aCBHdUMgZmlsbGluZyBbcmFuZ2Vfc3RhcnQsIHJhbmdlX3N0YXJ0ICsgZ3VjX2Z3X3NpemUp LgorCQkgKiBIdUMgZncgaXMgcGxhY2VkIGF0IHRoZSBuZXh0IHBhZ2UtYWxpZ25lZCBzbG90Lgor CQkgKi8KKwkJb2Zmc2V0ICs9IHJvdW5kX3VwKGk5MTUtPmd1Yy5mdy5zaXplLCBQQUdFX1NJWkUp OworCQlHRU1fQlVHX09OKHVwcGVyXzMyX2JpdHMob2Zmc2V0KSk7CisJfQorCisJcmV0dXJuIGxv d2VyXzMyX2JpdHMob2Zmc2V0KTsKK30KKwordm9pZCBpbnRlbF91Y19md19nZ3R0X2JpbmQoc3Ry dWN0IGludGVsX3VjX2Z3ICp1Y19mdykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqID0gdWNfZnctPm9iajsKKwlzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0OworCXN0cnVjdCBpOTE1 X3ZtYSBkdW1teTsKKworCUdFTV9CVUdfT04oIW9iaik7CisKKwlnZ3R0ID0gJnRvX2k5MTUob2Jq LT5iYXNlLmRldiktPmdndHQ7CisKKwlkdW1teS5ub2RlLnN0YXJ0ID0gaW50ZWxfdWNfZndfZ2d0 dF9vZmZzZXQodWNfZncpOworCWR1bW15Lm5vZGUuc2l6ZSA9IG9iai0+YmFzZS5zaXplOworCWR1 bW15LnBhZ2VzID0gb2JqLT5tbS5wYWdlczsKKwlkdW1teS52bSA9ICZnZ3R0LT52bTsKKworCUdF TV9CVUdfT04oIWk5MTVfZ2VtX29iamVjdF9oYXNfcGlubmVkX3BhZ2VzKG9iaikpOworCWdndHQt PnZtLmluc2VydF9lbnRyaWVzKCZnZ3R0LT52bSwgJmR1bW15LCBvYmotPmNhY2hlX2xldmVsLCAw KTsKK30KKwordm9pZCBpbnRlbF91Y19md19nZ3R0X3VuYmluZChzdHJ1Y3QgaW50ZWxfdWNfZncg KnVjX2Z3KQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSB1Y19mdy0+b2Jq OworCXN0cnVjdCBpOTE1X2dndHQgKmdndHQ7CisJdTY0IHN0YXJ0OworCisJR0VNX0JVR19PTigh b2JqKTsKKworCWdndHQgPSAmdG9faTkxNShvYmotPmJhc2UuZGV2KS0+Z2d0dDsKKwlzdGFydCA9 IGludGVsX3VjX2Z3X2dndHRfb2Zmc2V0KHVjX2Z3KTsKKworCWdndHQtPnZtLmNsZWFyX3Jhbmdl KCZnZ3R0LT52bSwgc3RhcnQsIG9iai0+YmFzZS5zaXplKTsKK30KKwogLyoqCiAgKiBpbnRlbF91 Y19md19jbGVhbnVwX2ZldGNoIC0gY2xlYW51cCB1QyBmaXJtd2FyZQogICoKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjX2Z3LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF91Y19mdy5oCmluZGV4IGU2ZmE4NTk5NzU3Yy4uODY3OGMzM2VjOGNkIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Y19mdy5oCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3VjX2Z3LmgKQEAgLTI3LDcgKzI3LDYgQEAKIAogc3RydWN0IGRybV9w cmludGVyOwogc3RydWN0IGRybV9pOTE1X3ByaXZhdGU7Ci1zdHJ1Y3QgaTkxNV92bWE7CiAKIC8q IEhvbWUgb2YgR3VDLCBIdUMgYW5kIERNQyBmaXJtd2FyZXMgKi8KICNkZWZpbmUgSU5URUxfVUNf RklSTVdBUkVfVVJMICJodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVs L2dpdC9maXJtd2FyZS9saW51eC1maXJtd2FyZS5naXQvdHJlZS9pOTE1IgpAQCAtMTQ3LDggKzE0 NiwxMiBAQCB2b2lkIGludGVsX3VjX2Z3X2ZldGNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKIAkJICAgICAgIHN0cnVjdCBpbnRlbF91Y19mdyAqdWNfZncpOwogdm9pZCBpbnRl bF91Y19md19jbGVhbnVwX2ZldGNoKHN0cnVjdCBpbnRlbF91Y19mdyAqdWNfZncpOwogaW50IGlu dGVsX3VjX2Z3X3VwbG9hZChzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3LAotCQkgICAgICAgaW50 ICgqeGZlcikoc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdywKLQkJCQkgICBzdHJ1Y3QgaTkxNV92 bWEgKnZtYSkpOworCQkgICAgICAgaW50ICgqeGZlcikoc3RydWN0IGludGVsX3VjX2Z3ICp1Y19m dykpOworaW50IGludGVsX3VjX2Z3X2luaXQoc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdyk7Cit2 b2lkIGludGVsX3VjX2Z3X2Zpbmkoc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdyk7Cit1MzIgaW50 ZWxfdWNfZndfZ2d0dF9vZmZzZXQoc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdyk7Cit2b2lkIGlu dGVsX3VjX2Z3X2dndHRfYmluZChzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3KTsKK3ZvaWQgaW50 ZWxfdWNfZndfZ2d0dF91bmJpbmQoc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdyk7CiB2b2lkIGlu dGVsX3VjX2Z3X2R1bXAoY29uc3Qgc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdywgc3RydWN0IGRy bV9wcmludGVyICpwKTsKIAogI2VuZGlmCi0tIAoyLjIxLjAKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==