From mboxrd@z Thu Jan 1 00:00:00 1970 From: Fernando Pacheco Subject: [PATCH v3 3/5] drm/i915/uc: Place uC firmware in upper range of GGTT Date: Fri, 19 Apr 2019 16:00:13 -0700 Message-ID: <20190419230015.18121-4-fernando.pacheco@intel.com> References: <20190419230015.18121-1-fernando.pacheco@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id EF407892C1 for ; Fri, 19 Apr 2019 23:02:44 +0000 (UTC) In-Reply-To: <20190419230015.18121-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 LgoKTW92aW5nIHRoZSBmaXJtd2FyZSByZXN1bHRlZCBpbiBuZWVkaW5nIHRvOgotIHVzZSBhbiBh ZGRpdGlvbmFsIHBpbm5pbmcgZm9yIHRoZSByc2Egc2lnbmF0dXJlIHdoaWNoIHdpbGwKICBiZSB1 c2VkIGR1cmluZyBIdUMgYXV0aCBhcyBhZGRyZXNzZXMgYWJvdmUgR1VDX0dHVFRfVE9QCiAgZG8g bm90IG1hcCB0aHJvdWdoIEdUVC4KCnYyOiBSZW1vdmUgY2FsbCB0byBzZXQgdG8gZ3R0IGRvbWFp bgogICAgRG8gbm90IHJlc3RvcmUgZncgZ3R0IG1hcHBpbmcgdW5jb25kaXRpb25hbGx5CiAgICBT ZXBhcmF0ZSBvdXQgcGluL3VucGluIGZ1bmN0aW9ucyBhbmQgZHJvcCB1c2FnZSBvZiBwaW4vdW5w aW4KICAgIFVzZSB1Y19mdyBpbml0L2ZpbmkgZnVuY3Rpb25zIHRvIGJpbmQvdW5iaW5kIGZ3IG9i amVjdAoKdjM6IEJpbmQgaXMgb25seSBuZWVkZWQgZHVyaW5nIHhmZXIgKENocmlzKQogICAgUmVt b3ZlIGF0dGVtcHRzIHRvIGJpbmQgb3V0c2lkZSBvZiB4ZmVyIChDaHJpcykKICAgIE1hcmsgZncg YmluZC91bmJpbmQgc3RhdGljCgpTaWduZWQtb2ZmLWJ5OiBGZXJuYW5kbyBQYWNoZWNvIDxmZXJu YW5kby5wYWNoZWNvQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9n dWMuYyAgICB8ICAgOSArKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19mdy5jIHwg IDE4ICsrLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuYyAgICB8ICA3NCArKysr KysrKysrKysrKystLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjLmggICAgfCAg IDQgKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Y19mdy5jIHwgIDQ3ICsrKysrKysr Ky0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmMgICAgIHwgIDIzICsrKysrLS0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjX2Z3LmMgIHwgMTAzICsrKysrKysrKysrKysr KysrKysrLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjX2Z3LmggIHwgICA3 ICstCiA4IGZpbGVzIGNoYW5nZWQsIDIxMiBpbnNlcnRpb25zKCspLCA3MyBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2d1Yy5jCmluZGV4IDI5OWI2YWE0ZmUyOC4uM2JiZjQ1YTNiZjc4 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuYwpAQCAtMTg5LDkgKzE4OSwxMyBAQCBpbnQgaW50 ZWxfZ3VjX2luaXQoc3RydWN0IGludGVsX2d1YyAqZ3VjKQogCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGd1Y190b19pOTE1KGd1Yyk7CiAJaW50IHJldDsKIAotCXJldCA9IGd1 Y19zaGFyZWRfZGF0YV9jcmVhdGUoZ3VjKTsKKwlyZXQgPSBpbnRlbF91Y19md19pbml0KCZndWMt PmZ3KTsKIAlpZiAocmV0KQogCQlnb3RvIGVycl9mZXRjaDsKKworCXJldCA9IGd1Y19zaGFyZWRf ZGF0YV9jcmVhdGUoZ3VjKTsKKwlpZiAocmV0KQorCQlnb3RvIGVycl9mdzsKIAlHRU1fQlVHX09O KCFndWMtPnNoYXJlZF9kYXRhKTsKIAogCXJldCA9IGludGVsX2d1Y19sb2dfY3JlYXRlKCZndWMt PmxvZyk7CkBAIC0yMjAsNiArMjI0LDggQEAgaW50IGludGVsX2d1Y19pbml0KHN0cnVjdCBpbnRl bF9ndWMgKmd1YykKIAlpbnRlbF9ndWNfbG9nX2Rlc3Ryb3koJmd1Yy0+bG9nKTsKIGVycl9zaGFy ZWQ6CiAJZ3VjX3NoYXJlZF9kYXRhX2Rlc3Ryb3koZ3VjKTsKK2Vycl9mdzoKKwlpbnRlbF91Y19m d19maW5pKCZndWMtPmZ3KTsKIGVycl9mZXRjaDoKIAlpbnRlbF91Y19md19jbGVhbnVwX2ZldGNo KCZndWMtPmZ3KTsKIAlyZXR1cm4gcmV0OwpAQCAtMjM3LDYgKzI0Myw3IEBAIHZvaWQgaW50ZWxf Z3VjX2Zpbmkoc3RydWN0IGludGVsX2d1YyAqZ3VjKQogCWludGVsX2d1Y19hZHNfZGVzdHJveShn dWMpOwogCWludGVsX2d1Y19sb2dfZGVzdHJveSgmZ3VjLT5sb2cpOwogCWd1Y19zaGFyZWRfZGF0 YV9kZXN0cm95KGd1Yyk7CisJaW50ZWxfdWNfZndfZmluaSgmZ3VjLT5mdyk7CiAJaW50ZWxfdWNf ZndfY2xlYW51cF9mZXRjaCgmZ3VjLT5mdyk7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2d1Y19mdy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3Vj X2Z3LmMKaW5kZXggNDM4NWQ5ZWYwMmJiLi44YjJkY2M3MGI5NTYgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19mdy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2d1Y19mdy5jCkBAIC0xMjIsMTQgKzEyMiwxNiBAQCBzdGF0aWMgdm9pZCBndWNfcHJl cGFyZV94ZmVyKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKIH0KIAogLyogQ29weSBSU0Egc2lnbmF0 dXJlIGZyb20gdGhlIGZ3IGltYWdlIHRvIEhXIGZvciB2ZXJpZmljYXRpb24gKi8KLXN0YXRpYyB2 b2lkIGd1Y194ZmVyX3JzYShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIHN0cnVjdCBpOTE1X3ZtYSAq dm1hKQorc3RhdGljIHZvaWQgZ3VjX3hmZXJfcnNhKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKIHsK IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBndWNfdG9faTkxNShndWMpOwor CXN0cnVjdCBpbnRlbF91Y19mdyAqZncgPSAmZ3VjLT5mdzsKKwlzdHJ1Y3Qgc2dfdGFibGUgKnBh Z2VzID0gZnctPm9iai0+bW0ucGFnZXM7CiAJdTMyIHJzYVtVT1NfUlNBX1NDUkFUQ0hfQ09VTlRd OwogCWludCBpOwogCi0Jc2dfcGNvcHlfdG9fYnVmZmVyKHZtYS0+cGFnZXMtPnNnbCwgdm1hLT5w YWdlcy0+bmVudHMsCi0JCQkgICByc2EsIHNpemVvZihyc2EpLCBndWMtPmZ3LnJzYV9vZmZzZXQp OworCXNnX3Bjb3B5X3RvX2J1ZmZlcihwYWdlcy0+c2dsLCBwYWdlcy0+bmVudHMsCisJCQkgICBy c2EsIHNpemVvZihyc2EpLCBmdy0+cnNhX29mZnNldCk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgVU9T X1JTQV9TQ1JBVENIX0NPVU5UOyBpKyspCiAJCUk5MTVfV1JJVEUoVU9TX1JTQV9TQ1JBVENIKGkp LCByc2FbaV0pOwpAQCAtMjAxLDcgKzIwMyw3IEBAIHN0YXRpYyBpbnQgZ3VjX3dhaXRfdWNvZGUo c3RydWN0IGludGVsX2d1YyAqZ3VjKQogICogdHJhbnNmZXIgYmV0d2VlbiBHVFQgbG9jYXRpb25z LiBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgbGVmdCBvdXQgb2YgdGhlIEFQSQogICogZm9yIG5vdyBh cyB0aGVyZSBpcyBubyBuZWVkIGZvciBpdC4KICAqLwotc3RhdGljIGludCBndWNfeGZlcl91Y29k ZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQorc3RhdGljIGlu dCBndWNfeGZlcl91Y29kZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiB7CiAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZ3VjX3RvX2k5MTUoZ3VjKTsKIAlzdHJ1Y3QgaW50ZWxf dWNfZncgKmd1Y19mdyA9ICZndWMtPmZ3OwpAQCAtMjE0LDcgKzIxNiw3IEBAIHN0YXRpYyBpbnQg Z3VjX3hmZXJfdWNvZGUoc3RydWN0IGludGVsX2d1YyAqZ3VjLCBzdHJ1Y3QgaTkxNV92bWEgKnZt YSkKIAlJOTE1X1dSSVRFKERNQV9DT1BZX1NJWkUsIGd1Y19mdy0+aGVhZGVyX3NpemUgKyBndWNf ZnctPnVjb2RlX3NpemUpOwogCiAJLyogU2V0IHRoZSBzb3VyY2UgYWRkcmVzcyBmb3IgdGhlIG5l dyBibG9iICovCi0Jb2Zmc2V0ID0gaW50ZWxfZ3VjX2dndHRfb2Zmc2V0KGd1Yywgdm1hKSArIGd1 Y19mdy0+aGVhZGVyX29mZnNldDsKKwlvZmZzZXQgPSBpbnRlbF91Y19md19nZ3R0X29mZnNldChn dWNfZncpICsgZ3VjX2Z3LT5oZWFkZXJfb2Zmc2V0OwogCUk5MTVfV1JJVEUoRE1BX0FERFJfMF9M T1csIGxvd2VyXzMyX2JpdHMob2Zmc2V0KSk7CiAJSTkxNV9XUklURShETUFfQUREUl8wX0hJR0gs IHVwcGVyXzMyX2JpdHMob2Zmc2V0KSAmIDB4RkZGRik7CiAKQEAgLTIzMyw3ICsyMzUsNyBAQCBz dGF0aWMgaW50IGd1Y194ZmVyX3Vjb2RlKHN0cnVjdCBpbnRlbF9ndWMgKmd1Yywgc3RydWN0IGk5 MTVfdm1hICp2bWEpCiAvKgogICogTG9hZCB0aGUgR3VDIGZpcm13YXJlIGJsb2IgaW50byB0aGUg TWludXRlSUEuCiAgKi8KLXN0YXRpYyBpbnQgZ3VjX2Z3X3hmZXIoc3RydWN0IGludGVsX3VjX2Z3 ICpndWNfZncsIHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQorc3RhdGljIGludCBndWNfZndfeGZlcihz dHJ1Y3QgaW50ZWxfdWNfZncgKmd1Y19mdykKIHsKIAlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSBj b250YWluZXJfb2YoZ3VjX2Z3LCBzdHJ1Y3QgaW50ZWxfZ3VjLCBmdyk7CiAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZ3VjX3RvX2k5MTUoZ3VjKTsKQEAgLTI1MCw5ICsyNTIs OSBAQCBzdGF0aWMgaW50IGd1Y19md194ZmVyKHN0cnVjdCBpbnRlbF91Y19mdyAqZ3VjX2Z3LCBz dHJ1Y3QgaTkxNV92bWEgKnZtYSkKIAkgKiBieSB0aGUgRE1BIGVuZ2luZSBpbiBvbmUgb3BlcmF0 aW9uLCB3aGVyZWFzIHRoZSBSU0Egc2lnbmF0dXJlIGlzCiAJICogbG9hZGVkIHZpYSBNTUlPLgog CSAqLwotCWd1Y194ZmVyX3JzYShndWMsIHZtYSk7CisJZ3VjX3hmZXJfcnNhKGd1Yyk7CiAKLQly ZXQgPSBndWNfeGZlcl91Y29kZShndWMsIHZtYSk7CisJcmV0ID0gZ3VjX3hmZXJfdWNvZGUoZ3Vj KTsKIAogCWludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0KCZkZXZfcHJpdi0+dW5jb3JlLCBGT1JD RVdBS0VfQUxMKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVj LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuYwppbmRleCA5NGMwNGYxNmEyYWQu LjFmZjFmYjAxNWU1OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVj LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjLmMKQEAgLTQwLDYgKzQwLDYx IEBAIGludCBpbnRlbF9odWNfaW5pdF9taXNjKHN0cnVjdCBpbnRlbF9odWMgKmh1YykKIAlyZXR1 cm4gMDsKIH0KIAorc3RhdGljIGludCBpbnRlbF9odWNfcnNhX2RhdGFfY3JlYXRlKHN0cnVjdCBp bnRlbF9odWMgKmh1YykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGh1Y190 b19pOTE1KGh1Yyk7CisJc3RydWN0IGludGVsX2d1YyAqZ3VjID0gJmk5MTUtPmd1YzsKKwlzdHJ1 Y3QgaTkxNV92bWEgKnZtYTsKKwl2b2lkICp2YWRkcjsKKworCS8qCisJICogSHVDIGZpcm13YXJl IHdpbGwgc2l0IGFib3ZlIEdVQ19HR1RUX1RPUCBhbmQgd2lsbCBub3QgbWFwCisJICogdGhyb3Vn aCBHVFQuIFVuZm9ydHVuYXRlbHksIHRoaXMgbWVhbnMgR3VDIGNhbm5vdCBwZXJmb3JtCisJICog dGhlIEh1QyBhdXRoLiBhcyB0aGUgcnNhIG9mZnNldCBub3cgZmFsbHMgd2l0aGluIHRoZSBHdUMK KwkgKiBpbmFjY2Vzc2libGUgcmFuZ2UuIFdlIHJlc29ydCB0byBwZXJtYS1waW5uaW5nIGFuIGFk ZGl0aW9uYWwKKwkgKiB2bWEgd2l0aGluIHRoZSBhY2Nlc3NpYmxlIHJhbmdlIHRoYXQgb25seSBj b250YWlucyB0aGUgcnNhCisJICogc2lnbmF0dXJlLiBUaGUgR3VDIGNhbiB1c2UgdGhpcyBleHRy YSBwaW5uaW5nIHRvIHBlcmZvcm0KKwkgKiB0aGUgYXV0aGVudGljYXRpb24gc2luY2UgaXRzIEdH VFQgb2Zmc2V0IHdpbGwgYmUgR3VDCisJICogYWNjZXNzaWJsZS4KKwkgKi8KKwl2bWEgPSBpbnRl bF9ndWNfYWxsb2NhdGVfdm1hKGd1YywgUEFHRV9TSVpFKTsKKwlpZiAoSVNfRVJSKHZtYSkpCisJ CXJldHVybiBQVFJfRVJSKHZtYSk7CisKKwl2YWRkciA9IGk5MTVfZ2VtX29iamVjdF9waW5fbWFw KHZtYS0+b2JqLCBJOTE1X01BUF9XQik7CisJaWYgKElTX0VSUih2YWRkcikpIHsKKwkJaTkxNV92 bWFfdW5waW5fYW5kX3JlbGVhc2UoJnZtYSwgMCk7CisJCXJldHVybiBQVFJfRVJSKHZhZGRyKTsK Kwl9CisKKwlodWMtPnJzYV9kYXRhID0gdm1hOworCWh1Yy0+cnNhX2RhdGFfdmFkZHIgPSB2YWRk cjsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBpbnRlbF9odWNfcnNhX2RhdGFfZGVz dHJveShzdHJ1Y3QgaW50ZWxfaHVjICpodWMpCit7CisJaTkxNV92bWFfdW5waW5fYW5kX3JlbGVh c2UoJmh1Yy0+cnNhX2RhdGEsIEk5MTVfVk1BX1JFTEVBU0VfTUFQKTsKK30KKworaW50IGludGVs X2h1Y19pbml0KHN0cnVjdCBpbnRlbF9odWMgKmh1YykKK3sKKwlpbnQgZXJyOworCisJZXJyID0g aW50ZWxfaHVjX3JzYV9kYXRhX2NyZWF0ZShodWMpOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7 CisKKwlyZXR1cm4gaW50ZWxfdWNfZndfaW5pdCgmaHVjLT5mdyk7Cit9CisKK3ZvaWQgaW50ZWxf aHVjX2Zpbmkoc3RydWN0IGludGVsX2h1YyAqaHVjKQoreworCWludGVsX3VjX2Z3X2ZpbmkoJmh1 Yy0+ZncpOworCWludGVsX2h1Y19yc2FfZGF0YV9kZXN0cm95KGh1Yyk7Cit9CisKIC8qKgogICog aW50ZWxfaHVjX2F1dGgoKSAtIEF1dGhlbnRpY2F0ZSBIdUMgdUNvZGUKICAqIEBodWM6IGludGVs X2h1YyBzdHJ1Y3R1cmUKQEAgLTU1LDI3ICsxMTAsMTcgQEAgaW50IGludGVsX2h1Y19hdXRoKHN0 cnVjdCBpbnRlbF9odWMgKmh1YykKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9 IGh1Y190b19pOTE1KGh1Yyk7CiAJc3RydWN0IGludGVsX2d1YyAqZ3VjID0gJmk5MTUtPmd1YzsK LQlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKIAl1MzIgc3RhdHVzOwogCWludCByZXQ7CiAKIAlpZiAo aHVjLT5mdy5sb2FkX3N0YXR1cyAhPSBJTlRFTF9VQ19GSVJNV0FSRV9TVUNDRVNTKQogCQlyZXR1 cm4gLUVOT0VYRUM7CiAKLQl2bWEgPSBpOTE1X2dlbV9vYmplY3RfZ2d0dF9waW4oaHVjLT5mdy5v YmosIE5VTEwsIDAsIDAsCi0JCQkJICAgICAgIFBJTl9PRkZTRVRfQklBUyB8IGk5MTUtPmdndHQu cGluX2JpYXMpOwotCWlmIChJU19FUlIodm1hKSkgewotCQlyZXQgPSBQVFJfRVJSKHZtYSk7Ci0J CURSTV9FUlJPUigiSHVDOiBGYWlsZWQgdG8gcGluIGh1YyBmdyBvYmplY3QgJWRcbiIsIHJldCk7 Ci0JCWdvdG8gZmFpbDsKLQl9Ci0KIAlyZXQgPSBpbnRlbF9ndWNfYXV0aF9odWMoZ3VjLAotCQkJ CSBpbnRlbF9ndWNfZ2d0dF9vZmZzZXQoZ3VjLCB2bWEpICsKLQkJCQkgaHVjLT5mdy5yc2Ffb2Zm c2V0KTsKKwkJCQkgaW50ZWxfZ3VjX2dndHRfb2Zmc2V0KGd1YywgaHVjLT5yc2FfZGF0YSkpOwog CWlmIChyZXQpIHsKIAkJRFJNX0VSUk9SKCJIdUM6IEd1QyBkaWQgbm90IGFjayBBdXRoIHJlcXVl c3QgJWRcbiIsIHJldCk7Ci0JCWdvdG8gZmFpbF91bnBpbjsKKwkJZ290byBmYWlsOwogCX0KIAog CS8qIENoZWNrIGF1dGhlbnRpY2F0aW9uIHN0YXR1cywgaXQgc2hvdWxkIGJlIGRvbmUgYnkgbm93 ICovCkBAIC04NiwxNCArMTMxLDExIEBAIGludCBpbnRlbF9odWNfYXV0aChzdHJ1Y3QgaW50ZWxf aHVjICpodWMpCiAJCQkJCTIsIDUwLCAmc3RhdHVzKTsKIAlpZiAocmV0KSB7CiAJCURSTV9FUlJP UigiSHVDOiBGaXJtd2FyZSBub3QgdmVyaWZpZWQgJSN4XG4iLCBzdGF0dXMpOwotCQlnb3RvIGZh aWxfdW5waW47CisJCWdvdG8gZmFpbDsKIAl9CiAKLQlpOTE1X3ZtYV91bnBpbih2bWEpOwogCXJl dHVybiAwOwogCi1mYWlsX3VucGluOgotCWk5MTVfdm1hX3VucGluKHZtYSk7CiBmYWlsOgogCWh1 Yy0+ZncubG9hZF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9GQUlMOwogCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2h1Yy5oCmluZGV4IGNlMTI5ZTMwMTk2MS4uYTBjMjFhZTAyYTk5IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9odWMuaApAQCAtMzMsMTAgKzMzLDE0IEBAIHN0cnVjdCBpbnRlbF9odWMgewog CXN0cnVjdCBpbnRlbF91Y19mdyBmdzsKIAogCS8qIEh1Qy1zcGVjaWZpYyBhZGRpdGlvbnMgKi8K KwlzdHJ1Y3QgaTkxNV92bWEgKnJzYV9kYXRhOworCXZvaWQgKnJzYV9kYXRhX3ZhZGRyOwogfTsK IAogdm9pZCBpbnRlbF9odWNfaW5pdF9lYXJseShzdHJ1Y3QgaW50ZWxfaHVjICpodWMpOwogaW50 IGludGVsX2h1Y19pbml0X21pc2Moc3RydWN0IGludGVsX2h1YyAqaHVjKTsKK2ludCBpbnRlbF9o dWNfaW5pdChzdHJ1Y3QgaW50ZWxfaHVjICpodWMpOwordm9pZCBpbnRlbF9odWNfZmluaShzdHJ1 Y3QgaW50ZWxfaHVjICpodWMpOwogaW50IGludGVsX2h1Y19hdXRoKHN0cnVjdCBpbnRlbF9odWMg Kmh1Yyk7CiBpbnQgaW50ZWxfaHVjX2NoZWNrX3N0YXR1cyhzdHJ1Y3QgaW50ZWxfaHVjICpodWMp OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWNfZncuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Y19mdy5jCmluZGV4IDgwYTE3NmQ5MWVkYy4uNDRj NTU5NTI2MDcyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWNfZncu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWNfZncuYwpAQCAtOTMsMTggKzkz LDI0IEBAIHZvaWQgaW50ZWxfaHVjX2Z3X2luaXRfZWFybHkoc3RydWN0IGludGVsX2h1YyAqaHVj KQogCWh1Y19md19zZWxlY3QoaHVjX2Z3KTsKIH0KIAotLyoqCi0gKiBodWNfZndfeGZlcigpIC0g RE1BJ3MgdGhlIGZpcm13YXJlCi0gKiBAaHVjX2Z3OiB0aGUgZmlybXdhcmUgZGVzY3JpcHRvcgot ICogQHZtYTogdGhlIGZpcm13YXJlIGltYWdlIChib3VuZCBpbnRvIHRoZSBHR1RUKQotICoKLSAq IFRyYW5zZmVyIHRoZSBmaXJtd2FyZSBpbWFnZSB0byBSQU0gZm9yIGV4ZWN1dGlvbiBieSB0aGUg bWljcm9jb250cm9sbGVyLgotICoKLSAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBub24temVybyBv biBmYWlsdXJlCi0gKi8KLXN0YXRpYyBpbnQgaHVjX2Z3X3hmZXIoc3RydWN0IGludGVsX3VjX2Z3 ICpodWNfZncsIHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQorc3RhdGljIHZvaWQgaHVjX3hmZXJfcnNh KHN0cnVjdCBpbnRlbF9odWMgKmh1YykKIHsKLQlzdHJ1Y3QgaW50ZWxfaHVjICpodWMgPSBjb250 YWluZXJfb2YoaHVjX2Z3LCBzdHJ1Y3QgaW50ZWxfaHVjLCBmdyk7CisJc3RydWN0IGludGVsX3Vj X2Z3ICpmdyA9ICZodWMtPmZ3OworCXN0cnVjdCBzZ190YWJsZSAqcGFnZXMgPSBmdy0+b2JqLT5t bS5wYWdlczsKKworCS8qCisJICogSHVDIGZpcm13YXJlIGltYWdlIGlzIG91dHNpZGUgR3VDIGFj Y2Vzc2libGUgcmFuZ2UuCisJICogQ29weSB0aGUgUlNBIHNpZ25hdHVyZSBvdXQgb2YgdGhlIGlt YWdlIGludG8KKwkgKiB0aGUgcGVybWEtcGlubmVkIHJlZ2lvbiBzZXQgYXNpZGUgZm9yIGl0CisJ ICovCisJc2dfcGNvcHlfdG9fYnVmZmVyKHBhZ2VzLT5zZ2wsIHBhZ2VzLT5uZW50cywKKwkJCSAg IGh1Yy0+cnNhX2RhdGFfdmFkZHIsIGZ3LT5yc2Ffc2l6ZSwKKwkJCSAgIGZ3LT5yc2Ffb2Zmc2V0 KTsKK30KKworc3RhdGljIGludCBodWNfeGZlcl91Y29kZShzdHJ1Y3QgaW50ZWxfaHVjICpodWMp Cit7CisJc3RydWN0IGludGVsX3VjX2Z3ICpodWNfZncgPSAmaHVjLT5mdzsKIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBodWNfdG9faTkxNShodWMpOwogCXN0cnVjdCBpbnRl bF91bmNvcmUgKnVuY29yZSA9ICZkZXZfcHJpdi0+dW5jb3JlOwogCXVuc2lnbmVkIGxvbmcgb2Zm c2V0ID0gMDsKQEAgLTExNiw3ICsxMjIsNyBAQCBzdGF0aWMgaW50IGh1Y19md194ZmVyKHN0cnVj dCBpbnRlbF91Y19mdyAqaHVjX2Z3LCBzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKIAlpbnRlbF91bmNv cmVfZm9yY2V3YWtlX2dldCh1bmNvcmUsIEZPUkNFV0FLRV9BTEwpOwogCiAJLyogU2V0IHRoZSBz b3VyY2UgYWRkcmVzcyBmb3IgdGhlIHVDb2RlICovCi0Jb2Zmc2V0ID0gaW50ZWxfZ3VjX2dndHRf b2Zmc2V0KCZkZXZfcHJpdi0+Z3VjLCB2bWEpICsKKwlvZmZzZXQgPSBpbnRlbF91Y19md19nZ3R0 X29mZnNldChodWNfZncpICsKIAkJIGh1Y19mdy0+aGVhZGVyX29mZnNldDsKIAlpbnRlbF91bmNv cmVfd3JpdGUodW5jb3JlLCBETUFfQUREUl8wX0xPVywKIAkJCSAgIGxvd2VyXzMyX2JpdHMob2Zm c2V0KSk7CkBAIC0xNTAsNiArMTU2LDIzIEBAIHN0YXRpYyBpbnQgaHVjX2Z3X3hmZXIoc3RydWN0 IGludGVsX3VjX2Z3ICpodWNfZncsIHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQogCXJldHVybiByZXQ7 CiB9CiAKKy8qKgorICogaHVjX2Z3X3hmZXIoKSAtIERNQSdzIHRoZSBmaXJtd2FyZQorICogQGh1 Y19mdzogdGhlIGZpcm13YXJlIGRlc2NyaXB0b3IKKyAqCisgKiBUcmFuc2ZlciB0aGUgZmlybXdh cmUgaW1hZ2UgdG8gUkFNIGZvciBleGVjdXRpb24gYnkgdGhlIG1pY3JvY29udHJvbGxlci4KKyAq CisgKiBSZXR1cm46IDAgb24gc3VjY2Vzcywgbm9uLXplcm8gb24gZmFpbHVyZQorICovCitzdGF0 aWMgaW50IGh1Y19md194ZmVyKHN0cnVjdCBpbnRlbF91Y19mdyAqaHVjX2Z3KQoreworCXN0cnVj dCBpbnRlbF9odWMgKmh1YyA9IGNvbnRhaW5lcl9vZihodWNfZncsIHN0cnVjdCBpbnRlbF9odWMs IGZ3KTsKKworCWh1Y194ZmVyX3JzYShodWMpOworCisJcmV0dXJuIGh1Y194ZmVyX3Vjb2RlKGh1 Yyk7Cit9CisKIC8qKgogICogaW50ZWxfaHVjX2Z3X3VwbG9hZCgpIC0gbG9hZCBIdUMgdUNvZGUg dG8gZGV2aWNlCiAgKiBAaHVjOiBpbnRlbF9odWMgc3RydWN0dXJlCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf dWMuYwppbmRleCAyNWI4MGZmZTcxYWQuLjQ4OGRmZmJhMDRkMiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF91Yy5jCkBAIC0yODAsNiArMjgwLDcgQEAgdm9pZCBpbnRlbF91Y19maW5pX21pc2Moc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiBpbnQgaW50ZWxfdWNfaW5pdChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSkKIHsKIAlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAmaTkxNS0+Z3Vj OworCXN0cnVjdCBpbnRlbF9odWMgKmh1YyA9ICZpOTE1LT5odWM7CiAJaW50IHJldDsKIAogCWlm ICghVVNFU19HVUMoaTkxNSkpCkBAIC0yOTIsMTkgKzI5MywzMCBAQCBpbnQgaW50ZWxfdWNfaW5p dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0 OwogCisJaWYgKFVTRVNfSFVDKGk5MTUpKSB7CisJCXJldCA9IGludGVsX2h1Y19pbml0KGh1Yyk7 CisJCWlmIChyZXQpCisJCQlnb3RvIGVycl9ndWM7CisJfQorCiAJaWYgKFVTRVNfR1VDX1NVQk1J U1NJT04oaTkxNSkpIHsKIAkJLyoKIAkJICogVGhpcyBpcyBzdHVmZiB3ZSBuZWVkIHRvIGhhdmUg YXZhaWxhYmxlIGF0IGZ3IGxvYWQgdGltZQogCQkgKiBpZiB3ZSBhcmUgcGxhbm5pbmcgdG8gZW5h YmxlIHN1Ym1pc3Npb24gbGF0ZXIKIAkJICovCiAJCXJldCA9IGludGVsX2d1Y19zdWJtaXNzaW9u X2luaXQoZ3VjKTsKLQkJaWYgKHJldCkgewotCQkJaW50ZWxfZ3VjX2ZpbmkoZ3VjKTsKLQkJCXJl dHVybiByZXQ7Ci0JCX0KKwkJaWYgKHJldCkKKwkJCWdvdG8gZXJyX2h1YzsKIAl9CiAKIAlyZXR1 cm4gMDsKKworZXJyX2h1YzoKKwlpZiAoVVNFU19IVUMoaTkxNSkpCisJCWludGVsX2h1Y19maW5p KGh1Yyk7CitlcnJfZ3VjOgorCWludGVsX2d1Y19maW5pKGd1Yyk7CisJcmV0dXJuIHJldDsKIH0K IAogdm9pZCBpbnRlbF91Y19maW5pKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQpAQCAt MzE5LDYgKzMzMSw5IEBAIHZvaWQgaW50ZWxfdWNfZmluaShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSkKIAlpZiAoVVNFU19HVUNfU1VCTUlTU0lPTihpOTE1KSkKIAkJaW50ZWxfZ3VjX3N1 Ym1pc3Npb25fZmluaShndWMpOwogCisJaWYgKFVTRVNfSFVDKGk5MTUpKQorCQlpbnRlbF9odWNf ZmluaSgmaTkxNS0+aHVjKTsKKwogCWludGVsX2d1Y19maW5pKGd1Yyk7CiB9CiAKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjX2Z3LmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF91Y19mdy5jCmluZGV4IGUzZTc0MjA3YTEwMi4uZDExOTE2ODJkMjg1IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Y19mdy5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3VjX2Z3LmMKQEAgLTE5MSw2ICsxOTEsMzkgQEAgdm9pZCBpbnRl bF91Y19md19mZXRjaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJcmVsZWFz ZV9maXJtd2FyZShmdyk7CQkvKiBPSyBldmVuIGlmIGZ3IGlzIE5VTEwgKi8KIH0KIAorc3RhdGlj IHZvaWQgaW50ZWxfdWNfZndfZ2d0dF9iaW5kKHN0cnVjdCBpbnRlbF91Y19mdyAqdWNfZncpCit7 CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IHVjX2Z3LT5vYmo7CisJc3RydWN0 IGk5MTVfZ2d0dCAqZ2d0dDsKKwlzdHJ1Y3QgaTkxNV92bWEgZHVtbXk7CisKKwlHRU1fQlVHX09O KCFvYmopOworCisJZ2d0dCA9ICZ0b19pOTE1KG9iai0+YmFzZS5kZXYpLT5nZ3R0OworCisJZHVt bXkubm9kZS5zdGFydCA9IGludGVsX3VjX2Z3X2dndHRfb2Zmc2V0KHVjX2Z3KTsKKwlkdW1teS5u b2RlLnNpemUgPSBvYmotPmJhc2Uuc2l6ZTsKKwlkdW1teS5wYWdlcyA9IG9iai0+bW0ucGFnZXM7 CisJZHVtbXkudm0gPSAmZ2d0dC0+dm07CisKKwlHRU1fQlVHX09OKCFpOTE1X2dlbV9vYmplY3Rf aGFzX3Bpbm5lZF9wYWdlcyhvYmopKTsKKwlnZ3R0LT52bS5pbnNlcnRfZW50cmllcygmZ2d0dC0+ dm0sICZkdW1teSwgb2JqLT5jYWNoZV9sZXZlbCwgMCk7Cit9CisKK3N0YXRpYyB2b2lkIGludGVs X3VjX2Z3X2dndHRfdW5iaW5kKHN0cnVjdCBpbnRlbF91Y19mdyAqdWNfZncpCit7CisJc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IHVjX2Z3LT5vYmo7CisJc3RydWN0IGk5MTVfZ2d0 dCAqZ2d0dDsKKwl1NjQgc3RhcnQ7CisKKwlHRU1fQlVHX09OKCFvYmopOworCisJZ2d0dCA9ICZ0 b19pOTE1KG9iai0+YmFzZS5kZXYpLT5nZ3R0OworCXN0YXJ0ID0gaW50ZWxfdWNfZndfZ2d0dF9v ZmZzZXQodWNfZncpOworCisJZ2d0dC0+dm0uY2xlYXJfcmFuZ2UoJmdndHQtPnZtLCBzdGFydCwg b2JqLT5iYXNlLnNpemUpOworfQorCiAvKioKICAqIGludGVsX3VjX2Z3X3VwbG9hZCAtIGxvYWQg dUMgZmlybXdhcmUgdXNpbmcgY3VzdG9tIGxvYWRlcgogICogQHVjX2Z3OiB1QyBmaXJtd2FyZQpA QCAtMjAxLDExICsyMzQsOCBAQCB2b2lkIGludGVsX3VjX2Z3X2ZldGNoKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKICAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBub24temVybyBv biBmYWlsdXJlLgogICovCiBpbnQgaW50ZWxfdWNfZndfdXBsb2FkKHN0cnVjdCBpbnRlbF91Y19m dyAqdWNfZncsCi0JCSAgICAgICBpbnQgKCp4ZmVyKShzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3 LAotCQkJCSAgIHN0cnVjdCBpOTE1X3ZtYSAqdm1hKSkKKwkJICAgICAgIGludCAoKnhmZXIpKHN0 cnVjdCBpbnRlbF91Y19mdyAqdWNfZncpKQogewotCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwotCXUz MiBnZ3R0X3Bpbl9iaWFzOwogCWludCBlcnI7CiAKIAlEUk1fREVCVUdfRFJJVkVSKCIlcyBmdyBs b2FkICVzXG4iLApAQCAtMjE5LDM2ICsyNDksMTUgQEAgaW50IGludGVsX3VjX2Z3X3VwbG9hZChz dHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3LAogCQkJIGludGVsX3VjX2Z3X3R5cGVfcmVwcih1Y19m dy0+dHlwZSksCiAJCQkgaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIodWNfZnctPmxvYWRfc3RhdHVz KSk7CiAKLQkvKiBQaW4gb2JqZWN0IHdpdGggZmlybXdhcmUgKi8KLQllcnIgPSBpOTE1X2dlbV9v YmplY3Rfc2V0X3RvX2d0dF9kb21haW4odWNfZnctPm9iaiwgZmFsc2UpOwotCWlmIChlcnIpIHsK LQkJRFJNX0RFQlVHX0RSSVZFUigiJXMgZncgc2V0LWRvbWFpbiBlcnI9JWRcbiIsCi0JCQkJIGlu dGVsX3VjX2Z3X3R5cGVfcmVwcih1Y19mdy0+dHlwZSksIGVycik7Ci0JCWdvdG8gZmFpbDsKLQl9 Ci0KLQlnZ3R0X3Bpbl9iaWFzID0gdG9faTkxNSh1Y19mdy0+b2JqLT5iYXNlLmRldiktPmdndHQu cGluX2JpYXM7Ci0Jdm1hID0gaTkxNV9nZW1fb2JqZWN0X2dndHRfcGluKHVjX2Z3LT5vYmosIE5V TEwsIDAsIDAsCi0JCQkJICAgICAgIFBJTl9PRkZTRVRfQklBUyB8IGdndHRfcGluX2JpYXMpOwot CWlmIChJU19FUlIodm1hKSkgewotCQllcnIgPSBQVFJfRVJSKHZtYSk7Ci0JCURSTV9ERUJVR19E UklWRVIoIiVzIGZ3IGdndHQtcGluIGVycj0lZFxuIiwKLQkJCQkgaW50ZWxfdWNfZndfdHlwZV9y ZXByKHVjX2Z3LT50eXBlKSwgZXJyKTsKLQkJZ290byBmYWlsOwotCX0KKwlpbnRlbF91Y19md19n Z3R0X2JpbmQodWNfZncpOwogCiAJLyogQ2FsbCBjdXN0b20gbG9hZGVyICovCi0JZXJyID0geGZl cih1Y19mdywgdm1hKTsKLQotCS8qCi0JICogV2Uga2VlcCB0aGUgb2JqZWN0IHBhZ2VzIGZvciBy ZXVzZSBkdXJpbmcgcmVzdW1lLiBCdXQgd2UgY2FuIHVucGluIGl0Ci0JICogbm93IHRoYXQgRE1B IGhhcyBjb21wbGV0ZWQsIHNvIGl0IGRvZXNuJ3QgY29udGludWUgdG8gdGFrZSB1cCBzcGFjZS4K LQkgKi8KLQlpOTE1X3ZtYV91bnBpbih2bWEpOwotCisJZXJyID0geGZlcih1Y19mdyk7CiAJaWYg KGVycikKIAkJZ290byBmYWlsOwogCisJaW50ZWxfdWNfZndfZ2d0dF91bmJpbmQodWNfZncpOwor CiAJdWNfZnctPmxvYWRfc3RhdHVzID0gSU5URUxfVUNfRklSTVdBUkVfU1VDQ0VTUzsKIAlEUk1f REVCVUdfRFJJVkVSKCIlcyBmdyBsb2FkICVzXG4iLAogCQkJIGludGVsX3VjX2Z3X3R5cGVfcmVw cih1Y19mdy0+dHlwZSksCkBAIC0yNzMsNiArMjgyLDQyIEBAIGludCBpbnRlbF91Y19md191cGxv YWQoc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdywKIAlyZXR1cm4gZXJyOwogfQogCitpbnQgaW50 ZWxfdWNfZndfaW5pdChzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3KQoreworCWludCBlcnI7CisK KwlpZiAodWNfZnctPmZldGNoX3N0YXR1cyAhPSBJTlRFTF9VQ19GSVJNV0FSRV9TVUNDRVNTKQor CQlyZXR1cm4gLUVOT0VYRUM7CisKKwllcnIgPSBpOTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKHVj X2Z3LT5vYmopOworCWlmIChlcnIpCisJCURSTV9ERUJVR19EUklWRVIoIiVzIGZ3IHBpbi1wYWdl cyBlcnI9JWRcbiIsCisJCQkJIGludGVsX3VjX2Z3X3R5cGVfcmVwcih1Y19mdy0+dHlwZSksIGVy cik7CisKKwlyZXR1cm4gZXJyOworfQorCit2b2lkIGludGVsX3VjX2Z3X2Zpbmkoc3RydWN0IGlu dGVsX3VjX2Z3ICp1Y19mdykKK3sKKwlpZiAodWNfZnctPmZldGNoX3N0YXR1cyAhPSBJTlRFTF9V Q19GSVJNV0FSRV9TVUNDRVNTKQorCQlyZXR1cm47CisKKwlpOTE1X2dlbV9vYmplY3RfdW5waW5f cGFnZXModWNfZnctPm9iaik7Cit9CisKK3UzMiBpbnRlbF91Y19md19nZ3R0X29mZnNldChzdHJ1 Y3QgaW50ZWxfdWNfZncgKnVjX2Z3KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 ID0gdG9faTkxNSh1Y19mdy0+b2JqLT5iYXNlLmRldik7CisJc3RydWN0IGk5MTVfZ2d0dCAqZ2d0 dCA9ICZpOTE1LT5nZ3R0OworCXN0cnVjdCBkcm1fbW1fbm9kZSAqbm9kZSA9ICZnZ3R0LT51Y19m dzsKKworCUdFTV9CVUdfT04oIW5vZGUtPmFsbG9jYXRlZCk7CisJR0VNX0JVR19PTih1cHBlcl8z Ml9iaXRzKG5vZGUtPnN0YXJ0KSk7CisJR0VNX0JVR19PTih1cHBlcl8zMl9iaXRzKG5vZGUtPnN0 YXJ0ICsgbm9kZS0+c2l6ZSAtIDEpKTsKKworCXJldHVybiBsb3dlcl8zMl9iaXRzKG5vZGUtPnN0 YXJ0KTsKK30KKwogLyoqCiAgKiBpbnRlbF91Y19md19jbGVhbnVwX2ZldGNoIC0gY2xlYW51cCB1 QyBmaXJtd2FyZQogICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Vj X2Z3LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Y19mdy5oCmluZGV4IGU2ZmE4NTk5 NzU3Yy4uZmY5OGY4NjYxZDcyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF91Y19mdy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjX2Z3LmgKQEAgLTI3 LDcgKzI3LDYgQEAKIAogc3RydWN0IGRybV9wcmludGVyOwogc3RydWN0IGRybV9pOTE1X3ByaXZh dGU7Ci1zdHJ1Y3QgaTkxNV92bWE7CiAKIC8qIEhvbWUgb2YgR3VDLCBIdUMgYW5kIERNQyBmaXJt d2FyZXMgKi8KICNkZWZpbmUgSU5URUxfVUNfRklSTVdBUkVfVVJMICJodHRwczovL2dpdC5rZXJu ZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9maXJtd2FyZS9saW51eC1maXJtd2FyZS5n aXQvdHJlZS9pOTE1IgpAQCAtMTQ3LDggKzE0NiwxMCBAQCB2b2lkIGludGVsX3VjX2Z3X2ZldGNo KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJICAgICAgIHN0cnVjdCBpbnRl bF91Y19mdyAqdWNfZncpOwogdm9pZCBpbnRlbF91Y19md19jbGVhbnVwX2ZldGNoKHN0cnVjdCBp bnRlbF91Y19mdyAqdWNfZncpOwogaW50IGludGVsX3VjX2Z3X3VwbG9hZChzdHJ1Y3QgaW50ZWxf dWNfZncgKnVjX2Z3LAotCQkgICAgICAgaW50ICgqeGZlcikoc3RydWN0IGludGVsX3VjX2Z3ICp1 Y19mdywKLQkJCQkgICBzdHJ1Y3QgaTkxNV92bWEgKnZtYSkpOworCQkgICAgICAgaW50ICgqeGZl cikoc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdykpOworaW50IGludGVsX3VjX2Z3X2luaXQoc3Ry dWN0IGludGVsX3VjX2Z3ICp1Y19mdyk7Cit2b2lkIGludGVsX3VjX2Z3X2Zpbmkoc3RydWN0IGlu dGVsX3VjX2Z3ICp1Y19mdyk7Cit1MzIgaW50ZWxfdWNfZndfZ2d0dF9vZmZzZXQoc3RydWN0IGlu dGVsX3VjX2Z3ICp1Y19mdyk7CiB2b2lkIGludGVsX3VjX2Z3X2R1bXAoY29uc3Qgc3RydWN0IGlu dGVsX3VjX2Z3ICp1Y19mdywgc3RydWN0IGRybV9wcmludGVyICpwKTsKIAogI2VuZGlmCi0tIAoy LjIxLjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==