From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lionel Landwerlin Subject: [PATCH v10 1/6] drm/i915: store all subslice masks Date: Fri, 19 Jan 2018 13:22:16 +0000 Message-ID: <20180119132221.1496-2-lionel.g.landwerlin@intel.com> References: <20180119132221.1496-1-lionel.g.landwerlin@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 33E196E003 for ; Fri, 19 Jan 2018 13:22:26 +0000 (UTC) In-Reply-To: <20180119132221.1496-1-lionel.g.landwerlin@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 VXAgdG8gbm93LCBzdWJzbGljZSBtYXNrIHdhcyBhc3N1bWVkIHRvIGJlIHVuaWZvcm0gYWNyb3Nz IHNsaWNlcy4gQnV0CnN0YXJ0aW5nIHdpdGggQ2Fubm9ubGFrZSwgc2xpY2VzIGNhbiBiZSBhc3lt bWV0cmljIChmb3IgZXhhbXBsZSBzbGljZTAKaGFzIGRpZmZlcmVudCBudW1iZXIgb2Ygc3Vic2xp Y2VzIGFzIHNsaWNlMSspLiBUaGlzIGNoYW5nZSBzdG9yZXMgYWxsCnN1YnNsaWNlcyBtYXNrcyBm b3IgYWxsIHNsaWNlcyByYXRoZXIgdGhhbiBoYXZpbmcgYSBzaW5nbGUgbWFzayB0aGF0CmFwcGxp ZXMgdG8gYWxsIHNsaWNlcy4KCnYyOiBSZXdvcmsgaG93IHdlIHN0b3JlIHRvdGFsIG51bWJlcnMg aW4gc3NldV9kZXZfaW5mbyAoVHZydGtvKQogICAgRml4IENIViBldSBtYXNrcywgd2FzIHJlYWRp bmcgZGlzYWJsZWQgYXMgZW5hYmxlZCAoVHZydGtvKQogICAgUmVhZGFiaWxpdHkgY2hhbmdlcyAo VHZydGtvKQogICAgQWRkIEVVIGluZGV4IGhlbHBlciAoVHZydGtvKQoKdjM6IFR1cm4gQUxJR04o diwgOCkgLyA4IGludG8gRElWX1JPVU5EX1VQKHYsIEJJVFNfUEVSX0JZVEUpIChUdnJ0a28pCiAg ICBSZXVzZSBzc2V1X2V1X2lkeCgpIGZvciBzZXR0aW5nIGV1X21hc2sgb24gQ0hWIChUdnJ0a28p CiAgICBSZWZvcm1hdCBkZWJ1ZyBwcmludHMgZm9yIHN1YnNsaWNlcyAoVHZydGtvKQoKdjQ6IENo YW5nZSBldV9tYXNrIGhlbHBlciBpbnRvIHNzZXVfc2V0X2V1cygpIChUdnJ0a28pCgpTaWduZWQt b2ZmLWJ5OiBMaW9uZWwgTGFuZHdlcmxpbiA8bGlvbmVsLmcubGFuZHdlcmxpbkBpbnRlbC5jb20+ ClJldmlld2VkLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgot LS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICAgfCAgMjUgKystLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgICAgICB8ICAgMiArLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uYyB8IDIwMSArKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5o IHwgIDQ3ICsrKysrKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAg IHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggIHwgICAy ICstCiA2IGZpbGVzIGNoYW5nZWQsIDIxNiBpbnNlcnRpb25zKCspLCA2MyBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCmluZGV4IGNjNjU5YjRiMmE0NS4uNjg0NTUx MTE0OTY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwpAQCAtNDI4OSw3ICs0Mjg5 LDcgQEAgc3RhdGljIHZvaWQgY2hlcnJ5dmlld19zc2V1X2RldmljZV9zdGF0dXMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJY29udGludWU7CiAKIAkJc3NldS0+c2xpY2Vf bWFzayA9IEJJVCgwKTsKLQkJc3NldS0+c3Vic2xpY2VfbWFzayB8PSBCSVQoc3MpOworCQlzc2V1 LT5zdWJzbGljZV9tYXNrWzBdIHw9IEJJVChzcyk7CiAJCWV1X2NudCA9ICgoc2lnMVtzc10gJiBD SFZfRVUwOF9QR19FTkFCTEUpID8gMCA6IDIpICsKIAkJCSAoKHNpZzFbc3NdICYgQ0hWX0VVMTlf UEdfRU5BQkxFKSA/IDAgOiAyKSArCiAJCQkgKChzaWcxW3NzXSAmIENIVl9FVTIxMF9QR19FTkFC TEUpID8gMCA6IDIpICsKQEAgLTQzMzYsNyArNDMzNiw3IEBAIHN0YXRpYyB2b2lkIGdlbjEwX3Nz ZXVfZGV2aWNlX3N0YXR1cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQlj b250aW51ZTsKIAogCQlzc2V1LT5zbGljZV9tYXNrIHw9IEJJVChzKTsKLQkJc3NldS0+c3Vic2xp Y2VfbWFzayA9IGluZm8tPnNzZXUuc3Vic2xpY2VfbWFzazsKKwkJc3NldS0+c3Vic2xpY2VfbWFz a1tzXSA9IGluZm8tPnNzZXUuc3Vic2xpY2VfbWFza1tzXTsKIAogCQlmb3IgKHNzID0gMDsgc3Mg PCBzc19tYXg7IHNzKyspIHsKIAkJCXVuc2lnbmVkIGludCBldV9jbnQ7CkBAIC00MzkxLDggKzQz OTEsOCBAQCBzdGF0aWMgdm9pZCBnZW45X3NzZXVfZGV2aWNlX3N0YXR1cyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCXNzZXUtPnNsaWNlX21hc2sgfD0gQklUKHMpOwogCiAJ CWlmIChJU19HRU45X0JDKGRldl9wcml2KSkKLQkJCXNzZXUtPnN1YnNsaWNlX21hc2sgPQotCQkJ CUlOVEVMX0lORk8oZGV2X3ByaXYpLT5zc2V1LnN1YnNsaWNlX21hc2s7CisJCQlzc2V1LT5zdWJz bGljZV9tYXNrW3NdID0KKwkJCQlJTlRFTF9JTkZPKGRldl9wcml2KS0+c3NldS5zdWJzbGljZV9t YXNrW3NdOwogCiAJCWZvciAoc3MgPSAwOyBzcyA8IHNzX21heDsgc3MrKykgewogCQkJdW5zaWdu ZWQgaW50IGV1X2NudDsKQEAgLTQ0MDIsNyArNDQwMiw3IEBAIHN0YXRpYyB2b2lkIGdlbjlfc3Nl dV9kZXZpY2Vfc3RhdHVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkJ Lyogc2tpcCBkaXNhYmxlZCBzdWJzbGljZSAqLwogCQkJCQljb250aW51ZTsKIAotCQkJCXNzZXUt PnN1YnNsaWNlX21hc2sgfD0gQklUKHNzKTsKKwkJCQlzc2V1LT5zdWJzbGljZV9tYXNrW3NdIHw9 IEJJVChzcyk7CiAJCQl9CiAKIAkJCWV1X2NudCA9IDIgKiBod2VpZ2h0MzIoZXVfcmVnWzIqcyAr IHNzLzJdICYKQEAgLTQ0MjQsOSArNDQyNCwxMiBAQCBzdGF0aWMgdm9pZCBicm9hZHdlbGxfc3Nl dV9kZXZpY2Vfc3RhdHVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAlzc2V1 LT5zbGljZV9tYXNrID0gc2xpY2VfaW5mbyAmIEdFTjhfTFNMSUNFU1RBVF9NQVNLOwogCiAJaWYg KHNzZXUtPnNsaWNlX21hc2spIHsKLQkJc3NldS0+c3Vic2xpY2VfbWFzayA9IElOVEVMX0lORk8o ZGV2X3ByaXYpLT5zc2V1LnN1YnNsaWNlX21hc2s7CiAJCXNzZXUtPmV1X3Blcl9zdWJzbGljZSA9 CiAJCQkJSU5URUxfSU5GTyhkZXZfcHJpdiktPnNzZXUuZXVfcGVyX3N1YnNsaWNlOworCQlmb3Ig KHMgPSAwOyBzIDwgZmxzKHNzZXUtPnNsaWNlX21hc2spOyBzKyspIHsKKwkJCXNzZXUtPnN1YnNs aWNlX21hc2tbc10gPQorCQkJCUlOVEVMX0lORk8oZGV2X3ByaXYpLT5zc2V1LnN1YnNsaWNlX21h c2tbc107CisJCX0KIAkJc3NldS0+ZXVfdG90YWwgPSBzc2V1LT5ldV9wZXJfc3Vic2xpY2UgKgog CQkJCSBzc2V1X3N1YnNsaWNlX3RvdGFsKHNzZXUpOwogCkBAIC00NDQ1LDYgKzQ0NDgsNyBAQCBz dGF0aWMgdm9pZCBpOTE1X3ByaW50X3NzZXVfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIGJvb2wg aXNfYXZhaWxhYmxlX2luZm8sCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gbm9kZV90b19pOTE1KG0tPnByaXZhdGUpOwogCWNvbnN0IGNoYXIgKnR5cGUgPSBpc19hdmFp bGFibGVfaW5mbyA/ICJBdmFpbGFibGUiIDogIkVuYWJsZWQiOworCWludCBzOwogCiAJc2VxX3By aW50ZihtLCAiICAlcyBTbGljZSBNYXNrOiAlMDR4XG4iLCB0eXBlLAogCQkgICBzc2V1LT5zbGlj ZV9tYXNrKTsKQEAgLTQ0NTIsMTAgKzQ0NTYsMTEgQEAgc3RhdGljIHZvaWQgaTkxNV9wcmludF9z c2V1X2luZm8oc3RydWN0IHNlcV9maWxlICptLCBib29sIGlzX2F2YWlsYWJsZV9pbmZvLAogCQkg ICBod2VpZ2h0OChzc2V1LT5zbGljZV9tYXNrKSk7CiAJc2VxX3ByaW50ZihtLCAiICAlcyBTdWJz bGljZSBUb3RhbDogJXVcbiIsIHR5cGUsCiAJCSAgIHNzZXVfc3Vic2xpY2VfdG90YWwoc3NldSkp OwotCXNlcV9wcmludGYobSwgIiAgJXMgU3Vic2xpY2UgTWFzazogJTA0eFxuIiwgdHlwZSwKLQkJ ICAgc3NldS0+c3Vic2xpY2VfbWFzayk7Ci0Jc2VxX3ByaW50ZihtLCAiICAlcyBTdWJzbGljZSBQ ZXIgU2xpY2U6ICV1XG4iLCB0eXBlLAotCQkgICBod2VpZ2h0OChzc2V1LT5zdWJzbGljZV9tYXNr KSk7CisJZm9yIChzID0gMDsgcyA8IGZscyhzc2V1LT5zbGljZV9tYXNrKTsgcysrKSB7CisJCXNl cV9wcmludGYobSwgIiAgJXMgU2xpY2UlaSAldSBzdWJzbGljZXMsIG1hc2s9JTA0eFxuIiwgdHlw ZSwKKwkJCSAgIHMsIGh3ZWlnaHQ4KHNzZXUtPnN1YnNsaWNlX21hc2tbc10pLAorCQkJICAgc3Nl dS0+c3Vic2xpY2VfbWFza1tzXSk7CisJfQogCXNlcV9wcmludGYobSwgIiAgJXMgRVUgVG90YWw6 ICV1XG4iLCB0eXBlLAogCQkgICBzc2V1LT5ldV90b3RhbCk7CiAJc2VxX3ByaW50ZihtLCAiICAl cyBFVSBQZXIgU3Vic2xpY2U6ICV1XG4iLCB0eXBlLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKaW5k ZXggMTczZDAwOTVlM2IyLi5hNGNmNjg1OGUzOWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwpA QCAtNDE0LDcgKzQxNCw3IEBAIHN0YXRpYyBpbnQgaTkxNV9nZXRwYXJhbShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkJcmV0dXJuIC1FTk9ERVY7CiAJCWJyZWFrOwogCWNh c2UgSTkxNV9QQVJBTV9TVUJTTElDRV9NQVNLOgotCQl2YWx1ZSA9IElOVEVMX0lORk8oZGV2X3By aXYpLT5zc2V1LnN1YnNsaWNlX21hc2s7CisJCXZhbHVlID0gSU5URUxfSU5GTyhkZXZfcHJpdikt PnNzZXUuc3Vic2xpY2VfbWFza1swXTsKIAkJaWYgKCF2YWx1ZSkKIAkJCXJldHVybiAtRU5PREVW OwogCQlicmVhazsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rldmlj ZV9pbmZvLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5jCmluZGV4 IGQyODU5MmU0MzUxMi4uZWQxNDk5NDUyN2ZjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kZXZpY2VfaW5mby5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RldmljZV9pbmZvLmMKQEAgLTgwLDEyICs4MCwxNiBAQCB2b2lkIGludGVsX2RldmljZV9pbmZv X2R1bXBfZmxhZ3MoY29uc3Qgc3RydWN0IGludGVsX2RldmljZV9pbmZvICppbmZvLAogCiBzdGF0 aWMgdm9pZCBzc2V1X2R1bXAoY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUsIHN0cnVj dCBkcm1fcHJpbnRlciAqcCkKIHsKKwlpbnQgczsKKwogCWRybV9wcmludGYocCwgInNsaWNlIG1h c2s6ICUwNHhcbiIsIHNzZXUtPnNsaWNlX21hc2spOwogCWRybV9wcmludGYocCwgInNsaWNlIHRv dGFsOiAldVxuIiwgaHdlaWdodDgoc3NldS0+c2xpY2VfbWFzaykpOwogCWRybV9wcmludGYocCwg InN1YnNsaWNlIHRvdGFsOiAldVxuIiwgc3NldV9zdWJzbGljZV90b3RhbChzc2V1KSk7Ci0JZHJt X3ByaW50ZihwLCAic3Vic2xpY2UgbWFzayAlMDR4XG4iLCBzc2V1LT5zdWJzbGljZV9tYXNrKTsK LQlkcm1fcHJpbnRmKHAsICJzdWJzbGljZSBwZXIgc2xpY2U6ICV1XG4iLAotCQkgICBod2VpZ2h0 OChzc2V1LT5zdWJzbGljZV9tYXNrKSk7CisJZm9yIChzID0gMDsgcyA8IEFSUkFZX1NJWkUoc3Nl dS0+c3Vic2xpY2VfbWFzayk7IHMrKykgeworCQlkcm1fcHJpbnRmKHAsICJzbGljZSVkICV1IHN1 YnNsaWNlcyBtYXNrPSUwNHhcbiIsCisJCQkgICBzLCBod2VpZ2h0OChzc2V1LT5zdWJzbGljZV9t YXNrW3NdKSwKKwkJCSAgIHNzZXUtPnN1YnNsaWNlX21hc2tbc10pOworCX0KIAlkcm1fcHJpbnRm KHAsICJFVSB0b3RhbDogJXVcbiIsIHNzZXUtPmV1X3RvdGFsKTsKIAlkcm1fcHJpbnRmKHAsICJF VSBwZXIgc3Vic2xpY2U6ICV1XG4iLCBzc2V1LT5ldV9wZXJfc3Vic2xpY2UpOwogCWRybV9wcmlu dGYocCwgImhhcyBzbGljZSBwb3dlciBnYXRpbmc6ICVzXG4iLApAQCAtMTE5LDIyICsxMjMsODcg QEAgdm9pZCBpbnRlbF9kZXZpY2VfaW5mb19kdW1wKGNvbnN0IHN0cnVjdCBpbnRlbF9kZXZpY2Vf aW5mbyAqaW5mbywKIAlpbnRlbF9kZXZpY2VfaW5mb19kdW1wX2ZsYWdzKGluZm8sIHApOwogfQog CitzdGF0aWMgdTE2IGNvbXB1dGVfZXVfdG90YWwoY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8g KnNzZXUpCit7CisJdTE2IGksIHRvdGFsID0gMDsKKworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9T SVpFKHNzZXUtPmV1X21hc2spOyBpKyspCisJCXRvdGFsICs9IGh3ZWlnaHQ4KHNzZXUtPmV1X21h c2tbaV0pOworCisJcmV0dXJuIHRvdGFsOworfQorCitzdGF0aWMgdTE2IGNvbXB1dGVfc3Vic2xp Y2VfdG90YWwoY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUpCit7CisJdTE2IGksIHRv dGFsID0gMDsKKworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHNzZXUtPnN1YnNsaWNlX21h c2spOyBpKyspCisJCXRvdGFsICs9IGh3ZWlnaHQ4KHNzZXUtPnN1YnNsaWNlX21hc2tbaV0pOwor CisJcmV0dXJuIHRvdGFsOworfQorCiBzdGF0aWMgdm9pZCBnZW4xMF9zc2V1X2luZm9faW5pdChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7CiAJc3RydWN0IHNzZXVfZGV2X2lu Zm8gKnNzZXUgPSAmbWt3cml0ZV9kZXZpY2VfaW5mbyhkZXZfcHJpdiktPnNzZXU7CiAJY29uc3Qg dTMyIGZ1c2UyID0gSTkxNV9SRUFEKEdFTjhfRlVTRTIpOworCWludCBzLCBzczsKKwljb25zdCBp bnQgZXVfbWFzayA9IDB4ZmY7CisJdTMyIHN1YnNsaWNlX21hc2ssIGV1X2VuOwogCiAJc3NldS0+ c2xpY2VfbWFzayA9IChmdXNlMiAmIEdFTjEwX0YyX1NfRU5BX01BU0spID4+CiAJCQkgICAgR0VO MTBfRjJfU19FTkFfU0hJRlQ7Ci0Jc3NldS0+c3Vic2xpY2VfbWFzayA9ICgxIDw8IDQpIC0gMTsK LQlzc2V1LT5zdWJzbGljZV9tYXNrICY9IH4oKGZ1c2UyICYgR0VOMTBfRjJfU1NfRElTX01BU0sp ID4+Ci0JCQkJIEdFTjEwX0YyX1NTX0RJU19TSElGVCk7CisJc3NldS0+bWF4X3NsaWNlcyA9IDY7 CisJc3NldS0+bWF4X3N1YnNsaWNlcyA9IDQ7CisJc3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2Ug PSA4OwogCi0Jc3NldS0+ZXVfdG90YWwgPSBod2VpZ2h0MzIofkk5MTVfUkVBRChHRU44X0VVX0RJ U0FCTEUwKSk7Ci0Jc3NldS0+ZXVfdG90YWwgKz0gaHdlaWdodDMyKH5JOTE1X1JFQUQoR0VOOF9F VV9ESVNBQkxFMSkpOwotCXNzZXUtPmV1X3RvdGFsICs9IGh3ZWlnaHQzMih+STkxNV9SRUFEKEdF TjhfRVVfRElTQUJMRTIpKTsKLQlzc2V1LT5ldV90b3RhbCArPSBod2VpZ2h0OCh+KEk5MTVfUkVB RChHRU4xMF9FVV9ESVNBQkxFMykgJgotCQkJCSAgICAgR0VOMTBfRVVfRElTX1NTX01BU0spKTsK KwlzdWJzbGljZV9tYXNrID0gKDEgPDwgNCkgLSAxOworCXN1YnNsaWNlX21hc2sgJj0gfigoZnVz ZTIgJiBHRU4xMF9GMl9TU19ESVNfTUFTSykgPj4KKwkJCSAgIEdFTjEwX0YyX1NTX0RJU19TSElG VCk7CisKKwkvKgorCSAqIFNsaWNlMCBjYW4gaGF2ZSB1cCB0byAzIHN1YnNsaWNlcywgYnV0IHRo ZXJlIGFyZSBvbmx5IDIgaW4KKwkgKiBzbGljZTEvMi4KKwkgKi8KKwlzc2V1LT5zdWJzbGljZV9t YXNrWzBdID0gc3Vic2xpY2VfbWFzazsKKwlmb3IgKHMgPSAxOyBzIDwgc3NldS0+bWF4X3NsaWNl czsgcysrKQorCQlzc2V1LT5zdWJzbGljZV9tYXNrW3NdID0gc3Vic2xpY2VfbWFzayAmIDB4MzsK KworCS8qIFNsaWNlMCAqLworCWV1X2VuID0gfkk5MTVfUkVBRChHRU44X0VVX0RJU0FCTEUwKTsK Kwlmb3IgKHNzID0gMDsgc3MgPCBzc2V1LT5tYXhfc3Vic2xpY2VzOyBzcysrKQorCQlzc2V1X3Nl dF9ldXMoc3NldSwgMCwgc3MsIChldV9lbiA+PiAoOCAqIHNzKSkgJiBldV9tYXNrKTsKKwkvKiBT bGljZTEgKi8KKwlzc2V1X3NldF9ldXMoc3NldSwgMSwgMCwgKGV1X2VuID4+IDI0KSAmIGV1X21h c2spOworCWV1X2VuID0gfkk5MTVfUkVBRChHRU44X0VVX0RJU0FCTEUxKTsKKwlzc2V1X3NldF9l dXMoc3NldSwgMSwgMSwgZXVfZW4gJiBldV9tYXNrKTsKKwkvKiBTbGljZTIgKi8KKwlzc2V1X3Nl dF9ldXMoc3NldSwgMiwgMCwgKGV1X2VuID4+IDgpICYgZXVfbWFzayk7CisJc3NldV9zZXRfZXVz KHNzZXUsIDIsIDEsIChldV9lbiA+PiAxNikgJiBldV9tYXNrKTsKKwkvKiBTbGljZTMgKi8KKwlz c2V1X3NldF9ldXMoc3NldSwgMywgMCwgKGV1X2VuID4+IDI0KSAmIGV1X21hc2spOworCWV1X2Vu ID0gfkk5MTVfUkVBRChHRU44X0VVX0RJU0FCTEUyKTsKKwlzc2V1X3NldF9ldXMoc3NldSwgMywg MSwgZXVfZW4gJiBldV9tYXNrKTsKKwkvKiBTbGljZTQgKi8KKwlzc2V1X3NldF9ldXMoc3NldSwg NCwgMCwgKGV1X2VuID4+IDgpICYgZXVfbWFzayk7CisJc3NldV9zZXRfZXVzKHNzZXUsIDQsIDEs IChldV9lbiA+PiAxNikgJiBldV9tYXNrKTsKKwkvKiBTbGljZTUgKi8KKwlzc2V1X3NldF9ldXMo c3NldSwgNSwgMCwgKGV1X2VuID4+IDI0KSAmIGV1X21hc2spOworCWV1X2VuID0gfkk5MTVfUkVB RChHRU4xMF9FVV9ESVNBQkxFMyk7CisJc3NldV9zZXRfZXVzKHNzZXUsIDUsIDEsIGV1X2VuICYg ZXVfbWFzayk7CisKKwkvKiBEbyBhIHNlY29uZCBwYXNzIHdoZXJlIHdlIG1hcmsgdGhlIHN1YnNs aWNlcyBkaXNhYmxlZCBpZiBhbGwgdGhlaXIKKwkgKiBldXMgYXJlIG9mZi4KKwkgKi8KKwlmb3Ig KHMgPSAwOyBzIDwgc3NldS0+bWF4X3NsaWNlczsgcysrKSB7CisJCWZvciAoc3MgPSAwOyBzcyA8 IHNzZXUtPm1heF9zdWJzbGljZXM7IHNzKyspIHsKKwkJCWlmIChzc2V1X2dldF9ldXMoc3NldSwg cywgc3MpID09IDApCisJCQkJc3NldS0+c3Vic2xpY2VfbWFza1tzXSAmPSB+QklUKHNzKTsKKwkJ fQorCX0KKworCXNzZXUtPnN1YnNsaWNlX3RvdGFsID0gY29tcHV0ZV9zdWJzbGljZV90b3RhbChz c2V1KTsKKwlzc2V1LT5ldV90b3RhbCA9IGNvbXB1dGVfZXVfdG90YWwoc3NldSk7CiAKIAkvKgog CSAqIENOTCBpcyBleHBlY3RlZCB0byBhbHdheXMgaGF2ZSBhIHVuaWZvcm0gZGlzdHJpYnV0aW9u CkBAIC0xNTUsMjYgKzIyNCw0MCBAQCBzdGF0aWMgdm9pZCBnZW4xMF9zc2V1X2luZm9faW5pdChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiBzdGF0aWMgdm9pZCBjaGVycnl2aWV3 X3NzZXVfaW5mb19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKIAlz dHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSA9ICZta3dyaXRlX2RldmljZV9pbmZvKGRldl9wcml2 KS0+c3NldTsKLQl1MzIgZnVzZSwgZXVfZGlzOworCXUzMiBmdXNlOwogCiAJZnVzZSA9IEk5MTVf UkVBRChDSFZfRlVTRV9HVCk7CiAKIAlzc2V1LT5zbGljZV9tYXNrID0gQklUKDApOworCXNzZXUt Pm1heF9zbGljZXMgPSAxOworCXNzZXUtPm1heF9zdWJzbGljZXMgPSAyOworCXNzZXUtPm1heF9l dXNfcGVyX3N1YnNsaWNlID0gODsKIAogCWlmICghKGZ1c2UgJiBDSFZfRkdUX0RJU0FCTEVfU1Mw KSkgewotCQlzc2V1LT5zdWJzbGljZV9tYXNrIHw9IEJJVCgwKTsKLQkJZXVfZGlzID0gZnVzZSAm IChDSFZfRkdUX0VVX0RJU19TUzBfUjBfTUFTSyB8Ci0JCQkJIENIVl9GR1RfRVVfRElTX1NTMF9S MV9NQVNLKTsKLQkJc3NldS0+ZXVfdG90YWwgKz0gOCAtIGh3ZWlnaHQzMihldV9kaXMpOworCQl1 OCBkaXNhYmxlZF9tYXNrID0KKwkJCSgoZnVzZSAmIENIVl9GR1RfRVVfRElTX1NTMF9SMF9NQVNL KSA+PgorCQkJIENIVl9GR1RfRVVfRElTX1NTMF9SMF9TSElGVCkgfAorCQkJKCgoZnVzZSAmIENI Vl9GR1RfRVVfRElTX1NTMF9SMV9NQVNLKSA+PgorCQkJICBDSFZfRkdUX0VVX0RJU19TUzBfUjFf U0hJRlQpIDw8IDQpOworCisJCXNzZXUtPnN1YnNsaWNlX21hc2tbMF0gfD0gQklUKDApOworCQlz c2V1X3NldF9ldXMoc3NldSwgMCwgMCwgfmRpc2FibGVkX21hc2spOwogCX0KIAogCWlmICghKGZ1 c2UgJiBDSFZfRkdUX0RJU0FCTEVfU1MxKSkgewotCQlzc2V1LT5zdWJzbGljZV9tYXNrIHw9IEJJ VCgxKTsKLQkJZXVfZGlzID0gZnVzZSAmIChDSFZfRkdUX0VVX0RJU19TUzFfUjBfTUFTSyB8Ci0J CQkJIENIVl9GR1RfRVVfRElTX1NTMV9SMV9NQVNLKTsKLQkJc3NldS0+ZXVfdG90YWwgKz0gOCAt IGh3ZWlnaHQzMihldV9kaXMpOworCQl1OCBkaXNhYmxlZF9tYXNrID0KKwkJCSgoZnVzZSAmIENI Vl9GR1RfRVVfRElTX1NTMV9SMF9NQVNLKSA+PgorCQkJIENIVl9GR1RfRVVfRElTX1NTMV9SMF9T SElGVCkgfAorCQkJKCgoZnVzZSAmIENIVl9GR1RfRVVfRElTX1NTMV9SMV9NQVNLKSA+PgorCQkJ ICBDSFZfRkdUX0VVX0RJU19TUzFfUjFfU0hJRlQpIDw8IDQpOworCisJCXNzZXUtPnN1YnNsaWNl X21hc2tbMF0gfD0gQklUKDEpOworCQlzc2V1X3NldF9ldXMoc3NldSwgMCwgMSwgfmRpc2FibGVk X21hc2spOwogCX0KIAorCXNzZXUtPnN1YnNsaWNlX3RvdGFsID0gY29tcHV0ZV9zdWJzbGljZV90 b3RhbChzc2V1KTsKKwlzc2V1LT5ldV90b3RhbCA9IGNvbXB1dGVfZXVfdG90YWwoc3NldSk7CisK IAkvKgogCSAqIENIViBleHBlY3RlZCB0byBhbHdheXMgaGF2ZSBhIHVuaWZvcm0gZGlzdHJpYnV0 aW9uIG9mIEVVCiAJICogYWNyb3NzIHN1YnNsaWNlcy4KQEAgLTE5Niw0MSArMjc5LDUyIEBAIHN0 YXRpYyB2b2lkIGdlbjlfc3NldV9pbmZvX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQogewogCXN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyAqaW5mbyA9IG1rd3JpdGVfZGV2 aWNlX2luZm8oZGV2X3ByaXYpOwogCXN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1ID0gJmluZm8t PnNzZXU7Ci0JaW50IHNfbWF4ID0gMywgc3NfbWF4ID0gNCwgZXVfbWF4ID0gODsKIAlpbnQgcywg c3M7Ci0JdTMyIGZ1c2UyLCBldV9kaXNhYmxlOwotCXU4IGV1X21hc2sgPSAweGZmOworCXUzMiBm dXNlMiwgZXVfZGlzYWJsZSwgc3Vic2xpY2VfbWFzazsKKwljb25zdCB1OCBldV9tYXNrID0gMHhm ZjsKIAogCWZ1c2UyID0gSTkxNV9SRUFEKEdFTjhfRlVTRTIpOwogCXNzZXUtPnNsaWNlX21hc2sg PSAoZnVzZTIgJiBHRU44X0YyX1NfRU5BX01BU0spID4+IEdFTjhfRjJfU19FTkFfU0hJRlQ7CiAK KwkvKiBCWFQgaGFzIGEgc2luZ2xlIHNsaWNlIGFuZCBhdCBtb3N0IDMgc3Vic2xpY2VzLiAqLwor CXNzZXUtPm1heF9zbGljZXMgPSBJU19HRU45X0xQKGRldl9wcml2KSA/IDEgOiAzOworCXNzZXUt Pm1heF9zdWJzbGljZXMgPSBJU19HRU45X0xQKGRldl9wcml2KSA/IDMgOiA0OworCXNzZXUtPm1h eF9ldXNfcGVyX3N1YnNsaWNlID0gODsKKwogCS8qCiAJICogVGhlIHN1YnNsaWNlIGRpc2FibGUg ZmllbGQgaXMgZ2xvYmFsLCBpLmUuIGl0IGFwcGxpZXMKIAkgKiB0byBlYWNoIG9mIHRoZSBlbmFi bGVkIHNsaWNlcy4KIAkqLwotCXNzZXUtPnN1YnNsaWNlX21hc2sgPSAoMSA8PCBzc19tYXgpIC0g MTsKLQlzc2V1LT5zdWJzbGljZV9tYXNrICY9IH4oKGZ1c2UyICYgR0VOOV9GMl9TU19ESVNfTUFT SykgPj4KLQkJCQkgR0VOOV9GMl9TU19ESVNfU0hJRlQpOworCXN1YnNsaWNlX21hc2sgPSAoMSA8 PCBzc2V1LT5tYXhfc3Vic2xpY2VzKSAtIDE7CisJc3Vic2xpY2VfbWFzayAmPSB+KChmdXNlMiAm IEdFTjlfRjJfU1NfRElTX01BU0spID4+CisJCQkgICBHRU45X0YyX1NTX0RJU19TSElGVCk7CiAK IAkvKgogCSAqIEl0ZXJhdGUgdGhyb3VnaCBlbmFibGVkIHNsaWNlcyBhbmQgc3Vic2xpY2VzIHRv CiAJICogY291bnQgdGhlIHRvdGFsIGVuYWJsZWQgRVUuCiAJKi8KLQlmb3IgKHMgPSAwOyBzIDwg c19tYXg7IHMrKykgeworCWZvciAocyA9IDA7IHMgPCBzc2V1LT5tYXhfc2xpY2VzOyBzKyspIHsK IAkJaWYgKCEoc3NldS0+c2xpY2VfbWFzayAmIEJJVChzKSkpCiAJCQkvKiBza2lwIGRpc2FibGVk IHNsaWNlICovCiAJCQljb250aW51ZTsKIAorCQlzc2V1LT5zdWJzbGljZV9tYXNrW3NdID0gc3Vi c2xpY2VfbWFzazsKKwogCQlldV9kaXNhYmxlID0gSTkxNV9SRUFEKEdFTjlfRVVfRElTQUJMRShz KSk7Ci0JCWZvciAoc3MgPSAwOyBzcyA8IHNzX21heDsgc3MrKykgeworCQlmb3IgKHNzID0gMDsg c3MgPCBzc2V1LT5tYXhfc3Vic2xpY2VzOyBzcysrKSB7CiAJCQlpbnQgZXVfcGVyX3NzOworCQkJ dTggZXVfZGlzYWJsZWRfbWFzazsKIAotCQkJaWYgKCEoc3NldS0+c3Vic2xpY2VfbWFzayAmIEJJ VChzcykpKQorCQkJaWYgKCEoc3NldS0+c3Vic2xpY2VfbWFza1tzXSAmIEJJVChzcykpKQogCQkJ CS8qIHNraXAgZGlzYWJsZWQgc3Vic2xpY2UgKi8KIAkJCQljb250aW51ZTsKIAotCQkJZXVfcGVy X3NzID0gZXVfbWF4IC0gaHdlaWdodDgoKGV1X2Rpc2FibGUgPj4gKHNzKjgpKSAmCi0JCQkJCQkg ICAgICBldV9tYXNrKTsKKwkJCWV1X2Rpc2FibGVkX21hc2sgPSAoZXVfZGlzYWJsZSA+PiAoc3Mq OCkpICYgZXVfbWFzazsKKworCQkJc3NldV9zZXRfZXVzKHNzZXUsIHMsIHNzLCB+ZXVfZGlzYWJs ZWRfbWFzayk7CisKKwkJCWV1X3Blcl9zcyA9IHNzZXUtPm1heF9ldXNfcGVyX3N1YnNsaWNlIC0K KwkJCQlod2VpZ2h0OChldV9kaXNhYmxlZF9tYXNrKTsKIAogCQkJLyoKIAkJCSAqIFJlY29yZCB3 aGljaCBzdWJzbGljZShzKSBoYXMoaGF2ZSkgNyBFVXMuIHdlCkBAIC0yMzksMTEgKzMzMywxMiBA QCBzdGF0aWMgdm9pZCBnZW45X3NzZXVfaW5mb19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKIAkJCSAqLwogCQkJaWYgKGV1X3Blcl9zcyA9PSA3KQogCQkJCXNzZXUtPnN1 YnNsaWNlXzdldVtzXSB8PSBCSVQoc3MpOwotCi0JCQlzc2V1LT5ldV90b3RhbCArPSBldV9wZXJf c3M7CiAJCX0KIAl9CiAKKwlzc2V1LT5zdWJzbGljZV90b3RhbCA9IGNvbXB1dGVfc3Vic2xpY2Vf dG90YWwoc3NldSk7CisJc3NldS0+ZXVfdG90YWwgPSBjb21wdXRlX2V1X3RvdGFsKHNzZXUpOwor CiAJLyoKIAkgKiBTS0wgaXMgZXhwZWN0ZWQgdG8gYWx3YXlzIGhhdmUgYSB1bmlmb3JtIGRpc3Ry aWJ1dGlvbgogCSAqIG9mIEVVIGFjcm9zcyBzdWJzbGljZXMgd2l0aCB0aGUgZXhjZXB0aW9uIHRo YXQgYW55IG9uZQpAQCAtMjY5LDggKzM2NCw4IEBAIHN0YXRpYyB2b2lkIGdlbjlfc3NldV9pbmZv X2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCXNzZXUtPmhhc19ldV9w ZyA9IHNzZXUtPmV1X3Blcl9zdWJzbGljZSA+IDI7CiAKIAlpZiAoSVNfR0VOOV9MUChkZXZfcHJp dikpIHsKLSNkZWZpbmUgSVNfU1NfRElTQUJMRUQoc3MpCSghKHNzZXUtPnN1YnNsaWNlX21hc2sg JiBCSVQoc3MpKSkKLQkJaW5mby0+aGFzX3Bvb2xlZF9ldSA9IGh3ZWlnaHQ4KHNzZXUtPnN1YnNs aWNlX21hc2spID09IDM7CisjZGVmaW5lIElTX1NTX0RJU0FCTEVEKHNzKQkoIShzc2V1LT5zdWJz bGljZV9tYXNrWzBdICYgQklUKHNzKSkpCisJCWluZm8tPmhhc19wb29sZWRfZXUgPSBod2VpZ2h0 OChzc2V1LT5zdWJzbGljZV9tYXNrWzBdKSA9PSAzOwogCiAJCXNzZXUtPm1pbl9ldV9pbl9wb29s ID0gMDsKIAkJaWYgKGluZm8tPmhhc19wb29sZWRfZXUpIHsKQEAgLTI4OCwxOSArMzgzLDIyIEBA IHN0YXRpYyB2b2lkIGdlbjlfc3NldV9pbmZvX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQogc3RhdGljIHZvaWQgYnJvYWR3ZWxsX3NzZXVfaW5mb19pbml0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKIAlzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3Nl dSA9ICZta3dyaXRlX2RldmljZV9pbmZvKGRldl9wcml2KS0+c3NldTsKLQljb25zdCBpbnQgc19t YXggPSAzLCBzc19tYXggPSAzLCBldV9tYXggPSA4OwogCWludCBzLCBzczsKLQl1MzIgZnVzZTIs IGV1X2Rpc2FibGVbM107IC8qIHNfbWF4ICovCisJdTMyIGZ1c2UyLCBzdWJzbGljZV9tYXNrLCBl dV9kaXNhYmxlWzNdOyAvKiBzX21heCAqLwogCiAJZnVzZTIgPSBJOTE1X1JFQUQoR0VOOF9GVVNF Mik7CiAJc3NldS0+c2xpY2VfbWFzayA9IChmdXNlMiAmIEdFTjhfRjJfU19FTkFfTUFTSykgPj4g R0VOOF9GMl9TX0VOQV9TSElGVDsKKwlzc2V1LT5tYXhfc2xpY2VzID0gMzsKKwlzc2V1LT5tYXhf c3Vic2xpY2VzID0gMzsKKwlzc2V1LT5tYXhfZXVzX3Blcl9zdWJzbGljZSA9IDg7CisKIAkvKgog CSAqIFRoZSBzdWJzbGljZSBkaXNhYmxlIGZpZWxkIGlzIGdsb2JhbCwgaS5lLiBpdCBhcHBsaWVz CiAJICogdG8gZWFjaCBvZiB0aGUgZW5hYmxlZCBzbGljZXMuCiAJICovCi0Jc3NldS0+c3Vic2xp Y2VfbWFzayA9IEdFTk1BU0soc3NfbWF4IC0gMSwgMCk7Ci0Jc3NldS0+c3Vic2xpY2VfbWFzayAm PSB+KChmdXNlMiAmIEdFTjhfRjJfU1NfRElTX01BU0spID4+Ci0JCQkJIEdFTjhfRjJfU1NfRElT X1NISUZUKTsKKwlzdWJzbGljZV9tYXNrID0gR0VOTUFTSyhzc2V1LT5tYXhfc3Vic2xpY2VzIC0g MSwgMCk7CisJc3Vic2xpY2VfbWFzayAmPSB+KChmdXNlMiAmIEdFTjhfRjJfU1NfRElTX01BU0sp ID4+CisJCQkgICBHRU44X0YyX1NTX0RJU19TSElGVCk7CiAKIAlldV9kaXNhYmxlWzBdID0gSTkx NV9SRUFEKEdFTjhfRVVfRElTQUJMRTApICYgR0VOOF9FVV9ESVMwX1MwX01BU0s7CiAJZXVfZGlz YWJsZVsxXSA9IChJOTE1X1JFQUQoR0VOOF9FVV9ESVNBQkxFMCkgPj4gR0VOOF9FVV9ESVMwX1Mx X1NISUZUKSB8CkBAIC0zMTQsMzAgKzQxMiwzOSBAQCBzdGF0aWMgdm9pZCBicm9hZHdlbGxfc3Nl dV9pbmZvX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCSAqIEl0ZXJh dGUgdGhyb3VnaCBlbmFibGVkIHNsaWNlcyBhbmQgc3Vic2xpY2VzIHRvCiAJICogY291bnQgdGhl IHRvdGFsIGVuYWJsZWQgRVUuCiAJICovCi0JZm9yIChzID0gMDsgcyA8IHNfbWF4OyBzKyspIHsK Kwlmb3IgKHMgPSAwOyBzIDwgc3NldS0+bWF4X3NsaWNlczsgcysrKSB7CiAJCWlmICghKHNzZXUt PnNsaWNlX21hc2sgJiBCSVQocykpKQogCQkJLyogc2tpcCBkaXNhYmxlZCBzbGljZSAqLwogCQkJ Y29udGludWU7CiAKLQkJZm9yIChzcyA9IDA7IHNzIDwgc3NfbWF4OyBzcysrKSB7CisJCXNzZXUt PnN1YnNsaWNlX21hc2tbc10gPSBzdWJzbGljZV9tYXNrOworCisJCWZvciAoc3MgPSAwOyBzcyA8 IHNzZXUtPm1heF9zdWJzbGljZXM7IHNzKyspIHsKKwkJCXU4IGV1X2Rpc2FibGVkX21hc2s7CiAJ CQl1MzIgbl9kaXNhYmxlZDsKIAotCQkJaWYgKCEoc3NldS0+c3Vic2xpY2VfbWFzayAmIEJJVChz cykpKQorCQkJaWYgKCEoc3NldS0+c3Vic2xpY2VfbWFza1tzc10gJiBCSVQoc3MpKSkKIAkJCQkv KiBza2lwIGRpc2FibGVkIHN1YnNsaWNlICovCiAJCQkJY29udGludWU7CiAKLQkJCW5fZGlzYWJs ZWQgPSBod2VpZ2h0OChldV9kaXNhYmxlW3NdID4+IChzcyAqIGV1X21heCkpOworCQkJZXVfZGlz YWJsZWRfbWFzayA9CisJCQkJZXVfZGlzYWJsZVtzXSA+PiAoc3MgKiBzc2V1LT5tYXhfZXVzX3Bl cl9zdWJzbGljZSk7CisKKwkJCXNzZXVfc2V0X2V1cyhzc2V1LCBzLCBzcywgfmV1X2Rpc2FibGVk X21hc2spOworCisJCQluX2Rpc2FibGVkID0gaHdlaWdodDgoZXVfZGlzYWJsZWRfbWFzayk7CiAK IAkJCS8qCiAJCQkgKiBSZWNvcmQgd2hpY2ggc3Vic2xpY2VzIGhhdmUgNyBFVXMuCiAJCQkgKi8K LQkJCWlmIChldV9tYXggLSBuX2Rpc2FibGVkID09IDcpCisJCQlpZiAoc3NldS0+bWF4X2V1c19w ZXJfc3Vic2xpY2UgLSBuX2Rpc2FibGVkID09IDcpCiAJCQkJc3NldS0+c3Vic2xpY2VfN2V1W3Nd IHw9IDEgPDwgc3M7Ci0KLQkJCXNzZXUtPmV1X3RvdGFsICs9IGV1X21heCAtIG5fZGlzYWJsZWQ7 CiAJCX0KIAl9CiAKKwlzc2V1LT5zdWJzbGljZV90b3RhbCA9IGNvbXB1dGVfc3Vic2xpY2VfdG90 YWwoc3NldSk7CisJc3NldS0+ZXVfdG90YWwgPSBjb21wdXRlX2V1X3RvdGFsKHNzZXUpOworCiAJ LyoKIAkgKiBCRFcgaXMgZXhwZWN0ZWQgdG8gYWx3YXlzIGhhdmUgYSB1bmlmb3JtIGRpc3RyaWJ1 dGlvbiBvZiBFVSBhY3Jvc3MKIAkgKiBzdWJzbGljZXMgd2l0aCB0aGUgZXhjZXB0aW9uIHRoYXQg YW55IG9uZSBFVSBpbiBhbnkgb25lIHN1YnNsaWNlIG1heQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RldmljZV9pbmZvLmgKaW5kZXggNDljYjI3YmQwNGMxLi4zNmUwZGY4Nzg2MmQgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9pbmZvLmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uaApAQCAtMTEwLDEwICsxMTAsMTQg QEAgZW51bSBpbnRlbF9wbGF0Zm9ybSB7CiAJZnVuYyhzdXBwb3J0c190dik7IFwKIAlmdW5jKGhh c19pcGMpOwogCisjZGVmaW5lIEdFTl9NQVhfU0xJQ0VTCQkoNikgLyogQ05MIHVwcGVyIGJvdW5k ICovCisjZGVmaW5lIEdFTl9NQVhfU1VCU0xJQ0VTCSg3KQorCiBzdHJ1Y3Qgc3NldV9kZXZfaW5m byB7CiAJdTggc2xpY2VfbWFzazsKLQl1OCBzdWJzbGljZV9tYXNrOwotCXU4IGV1X3RvdGFsOwor CXU4IHN1YnNsaWNlX21hc2tbR0VOX01BWF9TVUJTTElDRVNdOworCXUxNiBzdWJzbGljZV90b3Rh bDsKKwl1MTYgZXVfdG90YWw7CiAJdTggZXVfcGVyX3N1YnNsaWNlOwogCXU4IG1pbl9ldV9pbl9w b29sOwogCS8qIEZvciBlYWNoIHNsaWNlLCB3aGljaCBzdWJzbGljZShzKSBoYXMoaGF2ZSkgNyBF VXMgKGJpdGZpZWxkKT8gKi8KQEAgLTEyMSw2ICsxMjUsMTcgQEAgc3RydWN0IHNzZXVfZGV2X2lu Zm8gewogCXU4IGhhc19zbGljZV9wZzoxOwogCXU4IGhhc19zdWJzbGljZV9wZzoxOwogCXU4IGhh c19ldV9wZzoxOworCisJLyogVG9wb2xvZ3kgZmllbGRzICovCisJdTggbWF4X3NsaWNlczsKKwl1 OCBtYXhfc3Vic2xpY2VzOworCXU4IG1heF9ldXNfcGVyX3N1YnNsaWNlOworCisJLyogV2UgZG9u J3QgaGF2ZSBtb3JlIHRoYW4gOCBldXMgcGVyIHN1YnNsaWNlIGF0IHRoZSBtb21lbnQgYW5kIGFz IHdlCisJICogc3RvcmUgZXVzIGVuYWJsZWQgdXNpbmcgYml0cywgbm8gbmVlZCB0byBtdWx0aXBs eSBieSBldXMgcGVyCisJICogc3Vic2xpY2UuCisJICovCisJdTggZXVfbWFza1tHRU5fTUFYX1NM SUNFUyAqIEdFTl9NQVhfU1VCU0xJQ0VTXTsKIH07CiAKIHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5m byB7CkBAIC0xNjcsNyArMTgyLDMzIEBAIHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyB7CiAKIHN0 YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHNzZXVfc3Vic2xpY2VfdG90YWwoY29uc3Qgc3RydWN0 IHNzZXVfZGV2X2luZm8gKnNzZXUpCiB7Ci0JcmV0dXJuIGh3ZWlnaHQ4KHNzZXUtPnNsaWNlX21h c2spICogaHdlaWdodDgoc3NldS0+c3Vic2xpY2VfbWFzayk7CisJcmV0dXJuIHNzZXUtPnN1YnNs aWNlX3RvdGFsOworfQorCitzdGF0aWMgaW5saW5lIGludCBzc2V1X2V1X2lkeChjb25zdCBzdHJ1 Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSwKKwkJCSAgICAgIGludCBzbGljZSwgaW50IHN1YnNsaWNl KQoreworCWludCBzdWJzbGljZV9zdHJpZGUgPSBESVZfUk9VTkRfVVAoc3NldS0+bWF4X2V1c19w ZXJfc3Vic2xpY2UsCisJCQkJCSAgIEJJVFNfUEVSX0JZVEUpOworCWludCBzbGljZV9zdHJpZGUg PSBzc2V1LT5tYXhfc3Vic2xpY2VzICogc3Vic2xpY2Vfc3RyaWRlOworCisJcmV0dXJuIHNsaWNl ICogc2xpY2Vfc3RyaWRlICsgc3Vic2xpY2UgKiBzdWJzbGljZV9zdHJpZGU7Cit9CisKKy8qCisg KiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBwcm90b3R5cGVzIHNob3VsZCBiZSB1cGRhdGVkIHdp dGggYSBsYXJnZXIgdHlwZQorICogdGhhbiB1OCBpZiB3ZSBldmVyIGhhdmUgbW9yZSB0aGFuIDgg RVVzIHBlciBzdWJzbGljZS4KKyAqLworc3RhdGljIGlubGluZSB1OCBzc2V1X2dldF9ldXMoY29u c3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUsCisJCQkgICAgICBpbnQgc2xpY2UsIGludCBz dWJzbGljZSkKK3sKKwlyZXR1cm4gc3NldS0+ZXVfbWFza1tzc2V1X2V1X2lkeChzc2V1LCBzbGlj ZSwgc3Vic2xpY2UpXTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHNzZXVfc2V0X2V1cyhzdHJ1 Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSwKKwkJCQlpbnQgc2xpY2UsIGludCBzdWJzbGljZSwgdTgg ZXVfbWFzaykKK3sKKwlzc2V1LT5ldV9tYXNrW3NzZXVfZXVfaWR4KHNzZXUsIHNsaWNlLCBzdWJz bGljZSldID0gZXVfbWFzazsKIH0KIAogY29uc3QgY2hhciAqaW50ZWxfcGxhdGZvcm1fbmFtZShl bnVtIGludGVsX3BsYXRmb3JtIHBsYXRmb3JtKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKaW5k ZXggZmYyNWYyMDlkMGE1Li5hYzc4OTYwMzFiOGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2xyYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5j CkBAIC0yMDk4LDcgKzIwOTgsNyBAQCBtYWtlX3JwY3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQogCiAJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5zc2V1Lmhhc19zdWJzbGlj ZV9wZykgewogCQlycGNzIHw9IEdFTjhfUlBDU19TU19DTlRfRU5BQkxFOwotCQlycGNzIHw9IGh3 ZWlnaHQ4KElOVEVMX0lORk8oZGV2X3ByaXYpLT5zc2V1LnN1YnNsaWNlX21hc2spIDw8CisJCXJw Y3MgfD0gaHdlaWdodDgoSU5URUxfSU5GTyhkZXZfcHJpdiktPnNzZXUuc3Vic2xpY2VfbWFza1sw XSkgPDwKIAkJCUdFTjhfUlBDU19TU19DTlRfU0hJRlQ7CiAJCXJwY3MgfD0gR0VOOF9SUENTX0VO QUJMRTsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVm ZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKaW5kZXggYzVm ZjIwM2U0MmQ2Li4yM2FlOWE5NTdmYWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3JpbmdidWZmZXIuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5n YnVmZmVyLmgKQEAgLTkwLDcgKzkwLDcgQEAgaGFuZ2NoZWNrX2FjdGlvbl90b19zdHIoY29uc3Qg ZW51bSBpbnRlbF9lbmdpbmVfaGFuZ2NoZWNrX2FjdGlvbiBhKQogCiAjZGVmaW5lIGluc3Rkb25l X3N1YnNsaWNlX21hc2soZGV2X3ByaXZfXykgXAogCShJTlRFTF9HRU4oZGV2X3ByaXZfXykgPT0g NyA/IFwKLQkgMSA6IElOVEVMX0lORk8oZGV2X3ByaXZfXyktPnNzZXUuc3Vic2xpY2VfbWFzaykK KwkgMSA6IElOVEVMX0lORk8oZGV2X3ByaXZfXyktPnNzZXUuc3Vic2xpY2VfbWFza1swXSkKIAog I2RlZmluZSBmb3JfZWFjaF9pbnN0ZG9uZV9zbGljZV9zdWJzbGljZShkZXZfcHJpdl9fLCBzbGlj ZV9fLCBzdWJzbGljZV9fKSBcCiAJZm9yICgoc2xpY2VfXykgPSAwLCAoc3Vic2xpY2VfXykgPSAw OyBcCi0tIAoyLjE1LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAo=