From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tom St Denis Subject: [PATCH 4/7] drm/amd/amdgpu: Correct whitespace in SI DPM code Date: Tue, 6 Sep 2016 12:18:41 -0400 Message-ID: <20160906161844.21370-5-tom.stdenis@amd.com> References: <20160906161844.21370-1-tom.stdenis@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20160906161844.21370-1-tom.stdenis-5C7GfCeVMHo@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Tom St Denis UmVwbGFjZSA4IHNwYWNlcyB3aXRoIHRhYnMsIGNvcnJlY3Qge30gYnJhY2VzLCBldGMuCgpTaWdu ZWQtb2ZmLWJ5OiBUb20gU3QgRGVuaXMgPHRvbS5zdGRlbmlzQGFtZC5jb20+Ci0tLQogZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvc2lfZHBtLmMgfCA0NDEgKysrKysrKysrKysrKysrKystLS0t LS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMjA5IGluc2VydGlvbnMoKyksIDIzMiBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zaV9k cG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpX2RwbS5jCmluZGV4IDhkNjIzOTEy ODkxYy4uOGU2YmJhZjM4MGQwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9zaV9kcG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zaV9kcG0uYwpAQCAt ODQsMTEgKzg0LDExIEBAIHVuaW9uIGZhbl9pbmZvIHsKIH07CiAKIHVuaW9uIHBwbGliX2Nsb2Nr X2luZm8gewotICAgICAgICBzdHJ1Y3QgX0FUT01fUFBMSUJfUjYwMF9DTE9DS19JTkZPIHI2MDA7 Ci0gICAgICAgIHN0cnVjdCBfQVRPTV9QUExJQl9SUzc4MF9DTE9DS19JTkZPIHJzNzgwOwotICAg ICAgICBzdHJ1Y3QgX0FUT01fUFBMSUJfRVZFUkdSRUVOX0NMT0NLX0lORk8gZXZlcmdyZWVuOwot ICAgICAgICBzdHJ1Y3QgX0FUT01fUFBMSUJfU1VNT19DTE9DS19JTkZPIHN1bW87Ci0gICAgICAg IHN0cnVjdCBfQVRPTV9QUExJQl9TSV9DTE9DS19JTkZPIHNpOworCXN0cnVjdCBfQVRPTV9QUExJ Ql9SNjAwX0NMT0NLX0lORk8gcjYwMDsKKwlzdHJ1Y3QgX0FUT01fUFBMSUJfUlM3ODBfQ0xPQ0tf SU5GTyByczc4MDsKKwlzdHJ1Y3QgX0FUT01fUFBMSUJfRVZFUkdSRUVOX0NMT0NLX0lORk8gZXZl cmdyZWVuOworCXN0cnVjdCBfQVRPTV9QUExJQl9TVU1PX0NMT0NLX0lORk8gc3VtbzsKKwlzdHJ1 Y3QgX0FUT01fUFBMSUJfU0lfQ0xPQ0tfSU5GTyBzaTsKIH07CiAKIGNvbnN0IHUzMiByNjAwX3V0 Y1tSNjAwX1BNX05VTUJFUl9PRl9UQ10gPQpAQCAtMTg1Miw4ICsxODUyLDggQEAgZXh0ZXJuIHUz MiBzaV9wY2llcF9ycmVnKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1MzIgcmVnKTsKIAog c3RhdGljIHN0cnVjdCBzaV9wb3dlcl9pbmZvICpzaV9nZXRfcGkoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYpCiB7Ci0gICAgICAgIHN0cnVjdCBzaV9wb3dlcl9pbmZvICpwaSA9IGFkZXYtPnBt LmRwbS5wcml2OwotICAgICAgICByZXR1cm4gcGk7CisJc3RydWN0IHNpX3Bvd2VyX2luZm8gKnBp ID0gYWRldi0+cG0uZHBtLnByaXY7CisJcmV0dXJuIHBpOwogfQogCiBzdGF0aWMgdm9pZCBzaV9j YWxjdWxhdGVfbGVha2FnZV9mb3Jfdl9hbmRfdF9mb3JtdWxhKGNvbnN0IHN0cnVjdCBuaV9sZWFr YWdlX2NvZWZmaWVudHMgKmNvZWZmLApAQCAtMTk1NCwyMyArMTk1NCwyMyBAQCBzdGF0aWMgdm9p ZCBzaV91cGRhdGVfZHRlX2Zyb21fcGwyKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCiBz dHJ1Y3QgcnY3eHhfcG93ZXJfaW5mbyAqcnY3NzBfZ2V0X3BpKHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2KQogewotICAgICAgICBzdHJ1Y3QgcnY3eHhfcG93ZXJfaW5mbyAqcGkgPSBhZGV2LT5w bS5kcG0ucHJpdjsKKwlzdHJ1Y3QgcnY3eHhfcG93ZXJfaW5mbyAqcGkgPSBhZGV2LT5wbS5kcG0u cHJpdjsKIAotICAgICAgICByZXR1cm4gcGk7CisJcmV0dXJuIHBpOwogfQogCiBzdHJ1Y3Qgbmlf cG93ZXJfaW5mbyAqbmlfZ2V0X3BpKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogewotICAg ICAgICBzdHJ1Y3QgbmlfcG93ZXJfaW5mbyAqcGkgPSBhZGV2LT5wbS5kcG0ucHJpdjsKKwlzdHJ1 Y3QgbmlfcG93ZXJfaW5mbyAqcGkgPSBhZGV2LT5wbS5kcG0ucHJpdjsKIAotICAgICAgICByZXR1 cm4gcGk7CisJcmV0dXJuIHBpOwogfQogCiBzdHJ1Y3QgIHNpX3BzICpzaV9nZXRfcHMoc3RydWN0 IGFtZGdwdV9wcyAqYXBzKQogewotICAgICAgICBzdHJ1Y3QgIHNpX3BzICpwcyA9IGFwcy0+cHNf cHJpdjsKKwlzdHJ1Y3QgIHNpX3BzICpwcyA9IGFwcy0+cHNfcHJpdjsKIAotICAgICAgICByZXR1 cm4gcHM7CisJcmV0dXJuIHBzOwogfQogCiBzdGF0aWMgdm9pZCBzaV9pbml0aWFsaXplX3Bvd2Vy dHVuZV9kZWZhdWx0cyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKQEAgLTIxNDcsNyArMjE0 Nyw3IEBAIHN0YXRpYyB2b2lkIHNpX2luaXRpYWxpemVfcG93ZXJ0dW5lX2RlZmF1bHRzKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2KQogCXNpX3BpLT5lbmFibGVfZHRlID0gZmFsc2U7CiAKIAlp ZiAoc2lfcGktPnBvd2VydHVuZV9kYXRhLT5lbmFibGVfcG93ZXJ0dW5lX2J5X2RlZmF1bHQpIHsK LQkJbmlfcGktPmVuYWJsZV9wb3dlcl9jb250YWlubWVudD0gdHJ1ZTsKKwkJbmlfcGktPmVuYWJs ZV9wb3dlcl9jb250YWlubWVudCA9IHRydWU7CiAJCW5pX3BpLT5lbmFibGVfY2FjID0gdHJ1ZTsK IAkJaWYgKHNpX3BpLT5kdGVfZGF0YS5lbmFibGVfZHRlX2J5X2RlZmF1bHQpIHsKIAkJCXNpX3Bp LT5lbmFibGVfZHRlID0gdHJ1ZTsKQEAgLTI0MjYsMTMgKzI0MjYsMTIgQEAgc3RhdGljIGludCBz aV9wb3B1bGF0ZV9wb3dlcl9jb250YWlubWVudF92YWx1ZXMoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYsCiAKIAkJaWYgKChtYXhfcHNfcGVyY2VudCA9PSAwKSB8fAogCQkgICAgKHByZXZfc2Ns ayA9PSBtYXhfc2NsaykgfHwKLQkJICAgIGRpc2FibGVfdXZkX3Bvd2VyX3R1bmUpIHsKKwkJICAg IGRpc2FibGVfdXZkX3Bvd2VyX3R1bmUpCiAJCQltaW5fc2NsayA9IG1heF9zY2xrOwotCQl9IGVs c2UgaWYgKGkgPT0gMSkgeworCQllbHNlIGlmIChpID09IDEpCiAJCQltaW5fc2NsayA9IHByZXZf c2NsazsKLQkJfSBlbHNlIHsKKwkJZWxzZQogCQkJbWluX3NjbGsgPSAocHJldl9zY2xrICogKHUz MiltYXhfcHNfcGVyY2VudCkgLyAxMDA7Ci0JCX0KIAogCQlpZiAobWluX3NjbGsgPCBzdGF0ZS0+ cGVyZm9ybWFuY2VfbGV2ZWxzWzBdLnNjbGspCiAJCQltaW5fc2NsayA9IHN0YXRlLT5wZXJmb3Jt YW5jZV9sZXZlbHNbMF0uc2NsazsKQEAgLTI2MzIsNyArMjYzMSw2IEBAIHN0YXRpYyBpbnQgc2lf Z2V0X2NhY19zdGRfdm9sdGFnZV9tYXhfbWluKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAog CXUzMiBpOwogCXUzMiB2MF9sb2FkbGluZTsKIAotCiAJaWYgKHRhYmxlID09IE5VTEwpCiAJCXJl dHVybiAtRUlOVkFMOwogCkBAIC0zMDc5LDE0ICszMDc3LDE0IEBAIHN0YXRpYyBpbnQgc2lfZ2V0 X3ZjZV9jbG9ja192b2x0YWdlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogc3RhdGljIGJv b2wgc2lfZHBtX3ZibGFua190b29fc2hvcnQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB7 CiAKLSAgICAgICAgdTMyIHZibGFua190aW1lID0gYW1kZ3B1X2RwbV9nZXRfdmJsYW5rX3RpbWUo YWRldik7Ci0gICAgICAgIC8qIHdlIG5ldmVyIGhpdCB0aGUgbm9uLWdkZHI1IGxpbWl0IHNvIGRp c2FibGUgaXQgKi8KLSAgICAgICAgdTMyIHN3aXRjaF9saW1pdCA9IGFkZXYtPm1jLnZyYW1fdHlw ZSA9PSBBTURHUFVfVlJBTV9UWVBFX0dERFI1ID8gNDUwIDogMDsKKwl1MzIgdmJsYW5rX3RpbWUg PSBhbWRncHVfZHBtX2dldF92YmxhbmtfdGltZShhZGV2KTsKKwkvKiB3ZSBuZXZlciBoaXQgdGhl IG5vbi1nZGRyNSBsaW1pdCBzbyBkaXNhYmxlIGl0ICovCisJdTMyIHN3aXRjaF9saW1pdCA9IGFk ZXYtPm1jLnZyYW1fdHlwZSA9PSBBTURHUFVfVlJBTV9UWVBFX0dERFI1ID8gNDUwIDogMDsKIAot ICAgICAgICBpZiAodmJsYW5rX3RpbWUgPCBzd2l0Y2hfbGltaXQpCi0gICAgICAgICAgICAgICAg cmV0dXJuIHRydWU7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7 CisJaWYgKHZibGFua190aW1lIDwgc3dpdGNoX2xpbWl0KQorCQlyZXR1cm4gdHJ1ZTsKKwllbHNl CisJCXJldHVybiBmYWxzZTsKIAogfQogCkBAIC0zMDk5LDQ3ICszMDk3LDQ3IEBAIHN0YXRpYyBp bnQgbmlfY29weV9hbmRfc3dpdGNoX2FyYl9zZXRzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 LAogCXUzMiBtY19jZ19jb25maWc7CiAKIAlzd2l0Y2ggKGFyYl9mcmVxX3NyYykgewotICAgICAg ICBjYXNlIE1DX0NHX0FSQl9GUkVRX0YwOgorCWNhc2UgTUNfQ0dfQVJCX0ZSRVFfRjA6CiAJCW1j X2FyYl9kcmFtX3RpbWluZyAgPSBSUkVHMzIoTUNfQVJCX0RSQU1fVElNSU5HKTsKIAkJbWNfYXJi X2RyYW1fdGltaW5nMiA9IFJSRUczMihNQ19BUkJfRFJBTV9USU1JTkcyKTsKIAkJYnVyc3RfdGlt ZSA9IChSUkVHMzIoTUNfQVJCX0JVUlNUX1RJTUUpICYgU1RBVEUwX01BU0spID4+IFNUQVRFMF9T SElGVDsKIAkJYnJlYWs7Ci0gICAgICAgIGNhc2UgTUNfQ0dfQVJCX0ZSRVFfRjE6CisJY2FzZSBN Q19DR19BUkJfRlJFUV9GMToKIAkJbWNfYXJiX2RyYW1fdGltaW5nICA9IFJSRUczMihNQ19BUkJf RFJBTV9USU1JTkdfMSk7CiAJCW1jX2FyYl9kcmFtX3RpbWluZzIgPSBSUkVHMzIoTUNfQVJCX0RS QU1fVElNSU5HMl8xKTsKIAkJYnVyc3RfdGltZSA9IChSUkVHMzIoTUNfQVJCX0JVUlNUX1RJTUUp ICYgU1RBVEUxX01BU0spID4+IFNUQVRFMV9TSElGVDsKIAkJYnJlYWs7Ci0gICAgICAgIGNhc2Ug TUNfQ0dfQVJCX0ZSRVFfRjI6CisJY2FzZSBNQ19DR19BUkJfRlJFUV9GMjoKIAkJbWNfYXJiX2Ry YW1fdGltaW5nICA9IFJSRUczMihNQ19BUkJfRFJBTV9USU1JTkdfMik7CiAJCW1jX2FyYl9kcmFt X3RpbWluZzIgPSBSUkVHMzIoTUNfQVJCX0RSQU1fVElNSU5HMl8yKTsKIAkJYnVyc3RfdGltZSA9 IChSUkVHMzIoTUNfQVJCX0JVUlNUX1RJTUUpICYgU1RBVEUyX01BU0spID4+IFNUQVRFMl9TSElG VDsKIAkJYnJlYWs7Ci0gICAgICAgIGNhc2UgTUNfQ0dfQVJCX0ZSRVFfRjM6CisJY2FzZSBNQ19D R19BUkJfRlJFUV9GMzoKIAkJbWNfYXJiX2RyYW1fdGltaW5nICA9IFJSRUczMihNQ19BUkJfRFJB TV9USU1JTkdfMyk7CiAJCW1jX2FyYl9kcmFtX3RpbWluZzIgPSBSUkVHMzIoTUNfQVJCX0RSQU1f VElNSU5HMl8zKTsKIAkJYnVyc3RfdGltZSA9IChSUkVHMzIoTUNfQVJCX0JVUlNUX1RJTUUpICYg U1RBVEUzX01BU0spID4+IFNUQVRFM19TSElGVDsKIAkJYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6 CisJZGVmYXVsdDoKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCiAJc3dpdGNoIChhcmJfZnJlcV9k ZXN0KSB7Ci0gICAgICAgIGNhc2UgTUNfQ0dfQVJCX0ZSRVFfRjA6CisJY2FzZSBNQ19DR19BUkJf RlJFUV9GMDoKIAkJV1JFRzMyKE1DX0FSQl9EUkFNX1RJTUlORywgbWNfYXJiX2RyYW1fdGltaW5n KTsKIAkJV1JFRzMyKE1DX0FSQl9EUkFNX1RJTUlORzIsIG1jX2FyYl9kcmFtX3RpbWluZzIpOwog CQlXUkVHMzJfUChNQ19BUkJfQlVSU1RfVElNRSwgU1RBVEUwKGJ1cnN0X3RpbWUpLCB+U1RBVEUw X01BU0spOwogCQlicmVhazsKLSAgICAgICAgY2FzZSBNQ19DR19BUkJfRlJFUV9GMToKKwljYXNl IE1DX0NHX0FSQl9GUkVRX0YxOgogCQlXUkVHMzIoTUNfQVJCX0RSQU1fVElNSU5HXzEsIG1jX2Fy Yl9kcmFtX3RpbWluZyk7CiAJCVdSRUczMihNQ19BUkJfRFJBTV9USU1JTkcyXzEsIG1jX2FyYl9k cmFtX3RpbWluZzIpOwogCQlXUkVHMzJfUChNQ19BUkJfQlVSU1RfVElNRSwgU1RBVEUxKGJ1cnN0 X3RpbWUpLCB+U1RBVEUxX01BU0spOwogCQlicmVhazsKLSAgICAgICAgY2FzZSBNQ19DR19BUkJf RlJFUV9GMjoKKwljYXNlIE1DX0NHX0FSQl9GUkVRX0YyOgogCQlXUkVHMzIoTUNfQVJCX0RSQU1f VElNSU5HXzIsIG1jX2FyYl9kcmFtX3RpbWluZyk7CiAJCVdSRUczMihNQ19BUkJfRFJBTV9USU1J TkcyXzIsIG1jX2FyYl9kcmFtX3RpbWluZzIpOwogCQlXUkVHMzJfUChNQ19BUkJfQlVSU1RfVElN RSwgU1RBVEUyKGJ1cnN0X3RpbWUpLCB+U1RBVEUyX01BU0spOwogCQlicmVhazsKLSAgICAgICAg Y2FzZSBNQ19DR19BUkJfRlJFUV9GMzoKKwljYXNlIE1DX0NHX0FSQl9GUkVRX0YzOgogCQlXUkVH MzIoTUNfQVJCX0RSQU1fVElNSU5HXzMsIG1jX2FyYl9kcmFtX3RpbWluZyk7CiAJCVdSRUczMihN Q19BUkJfRFJBTV9USU1JTkcyXzMsIG1jX2FyYl9kcmFtX3RpbWluZzIpOwogCQlXUkVHMzJfUChN Q19BUkJfQlVSU1RfVElNRSwgU1RBVEUzKGJ1cnN0X3RpbWUpLCB+U1RBVEUzX01BU0spOwpAQCAt MzE1OCw5ICszMTU2LDkgQEAgc3RhdGljIGludCBuaV9jb3B5X2FuZF9zd2l0Y2hfYXJiX3NldHMo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiBzdGF0aWMgdm9pZCBuaV91cGRhdGVfY3VycmVu dF9wcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCSAgc3RydWN0IGFtZGdwdV9wcyAq cnBzKQogewotCXN0cnVjdCAgc2lfcHMgKm5ld19wcyA9IHNpX2dldF9wcyhycHMpOworCXN0cnVj dCBzaV9wcyAqbmV3X3BzID0gc2lfZ2V0X3BzKHJwcyk7CiAJc3RydWN0IGV2ZXJncmVlbl9wb3dl cl9pbmZvICplZ19waSA9IGV2ZXJncmVlbl9nZXRfcGkoYWRldik7Ci0gICAgICAgIHN0cnVjdCBu aV9wb3dlcl9pbmZvICpuaV9waSA9IG5pX2dldF9waShhZGV2KTsKKwlzdHJ1Y3QgbmlfcG93ZXJf aW5mbyAqbmlfcGkgPSBuaV9nZXRfcGkoYWRldik7CiAKIAllZ19waS0+Y3VycmVudF9ycHMgPSAq cnBzOwogCW5pX3BpLT5jdXJyZW50X3BzID0gKm5ld19wczsKQEAgLTMxNzAsOSArMzE2OCw5IEBA IHN0YXRpYyB2b2lkIG5pX3VwZGF0ZV9jdXJyZW50X3BzKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2LAogc3RhdGljIHZvaWQgbmlfdXBkYXRlX3JlcXVlc3RlZF9wcyhzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiwKIAkJCSAgICBzdHJ1Y3QgYW1kZ3B1X3BzICpycHMpCiB7Ci0Jc3RydWN0ICBz aV9wcyAqbmV3X3BzID0gc2lfZ2V0X3BzKHJwcyk7CisJc3RydWN0IHNpX3BzICpuZXdfcHMgPSBz aV9nZXRfcHMocnBzKTsKIAlzdHJ1Y3QgZXZlcmdyZWVuX3Bvd2VyX2luZm8gKmVnX3BpID0gZXZl cmdyZWVuX2dldF9waShhZGV2KTsKLSAgICAgICAgc3RydWN0IG5pX3Bvd2VyX2luZm8gKm5pX3Bp ID0gbmlfZ2V0X3BpKGFkZXYpOworCXN0cnVjdCBuaV9wb3dlcl9pbmZvICpuaV9waSA9IG5pX2dl dF9waShhZGV2KTsKIAogCWVnX3BpLT5yZXF1ZXN0ZWRfcnBzID0gKnJwczsKIAluaV9waS0+cmVx dWVzdGVkX3BzID0gKm5ld19wczsKQEAgLTMxODMsOCArMzE4MSw4IEBAIHN0YXRpYyB2b2lkIG5p X3NldF91dmRfY2xvY2tfYmVmb3JlX3NldF9lbmdfY2xvY2soc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYsCiAJCQkJCSAgIHN0cnVjdCBhbWRncHVfcHMgKm5ld19wcywKIAkJCQkJICAgc3RydWN0 IGFtZGdwdV9wcyAqb2xkX3BzKQogewotCXN0cnVjdCAgc2lfcHMgKm5ld19zdGF0ZSA9IHNpX2dl dF9wcyhuZXdfcHMpOwotCXN0cnVjdCAgc2lfcHMgKmN1cnJlbnRfc3RhdGUgPSBzaV9nZXRfcHMo b2xkX3BzKTsKKwlzdHJ1Y3Qgc2lfcHMgKm5ld19zdGF0ZSA9IHNpX2dldF9wcyhuZXdfcHMpOwor CXN0cnVjdCBzaV9wcyAqY3VycmVudF9zdGF0ZSA9IHNpX2dldF9wcyhvbGRfcHMpOwogCiAJaWYg KChuZXdfcHMtPnZjbGsgPT0gb2xkX3BzLT52Y2xrKSAmJgogCSAgICAobmV3X3BzLT5kY2xrID09 IG9sZF9wcy0+ZGNsaykpCkBAIC0zMjAxLDggKzMxOTksOCBAQCBzdGF0aWMgdm9pZCBuaV9zZXRf dXZkX2Nsb2NrX2FmdGVyX3NldF9lbmdfY2xvY2soc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYs CiAJCQkJCSAgc3RydWN0IGFtZGdwdV9wcyAqbmV3X3BzLAogCQkJCQkgIHN0cnVjdCBhbWRncHVf cHMgKm9sZF9wcykKIHsKLQlzdHJ1Y3QgIHNpX3BzICpuZXdfc3RhdGUgPSBzaV9nZXRfcHMobmV3 X3BzKTsKLQlzdHJ1Y3QgIHNpX3BzICpjdXJyZW50X3N0YXRlID0gc2lfZ2V0X3BzKG9sZF9wcyk7 CisJc3RydWN0IHNpX3BzICpuZXdfc3RhdGUgPSBzaV9nZXRfcHMobmV3X3BzKTsKKwlzdHJ1Y3Qg c2lfcHMgKmN1cnJlbnRfc3RhdGUgPSBzaV9nZXRfcHMob2xkX3BzKTsKIAogCWlmICgobmV3X3Bz LT52Y2xrID09IG9sZF9wcy0+dmNsaykgJiYKIAkgICAgKG5ld19wcy0+ZGNsayA9PSBvbGRfcHMt PmRjbGspKQpAQCAtMzIxNywxMzQgKzMyMTUsMTMzIEBAIHN0YXRpYyB2b2lkIG5pX3NldF91dmRf Y2xvY2tfYWZ0ZXJfc2V0X2VuZ19jbG9jayhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAog c3RhdGljIHUxNiBidGNfZmluZF92b2x0YWdlKHN0cnVjdCBhdG9tX3ZvbHRhZ2VfdGFibGUgKnRh YmxlLCB1MTYgdm9sdGFnZSkKIHsKLSAgICAgICAgdW5zaWduZWQgaW50IGk7CisJdW5zaWduZWQg aW50IGk7CiAKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHRhYmxlLT5jb3VudDsgaSsrKSB7Ci0g ICAgICAgICAgICAgICAgaWYgKHZvbHRhZ2UgPD0gdGFibGUtPmVudHJpZXNbaV0udmFsdWUpCi0g ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGFibGUtPmVudHJpZXNbaV0udmFsdWU7Ci0g ICAgICAgIH0KKwlmb3IgKGkgPSAwOyBpIDwgdGFibGUtPmNvdW50OyBpKyspCisJCWlmICh2b2x0 YWdlIDw9IHRhYmxlLT5lbnRyaWVzW2ldLnZhbHVlKQorCQkJcmV0dXJuIHRhYmxlLT5lbnRyaWVz W2ldLnZhbHVlOwogCi0gICAgICAgIHJldHVybiB0YWJsZS0+ZW50cmllc1t0YWJsZS0+Y291bnQg LSAxXS52YWx1ZTsKKwlyZXR1cm4gdGFibGUtPmVudHJpZXNbdGFibGUtPmNvdW50IC0gMV0udmFs dWU7CiB9CiAKIHN0YXRpYyB1MzIgYnRjX2ZpbmRfdmFsaWRfY2xvY2soc3RydWN0IGFtZGdwdV9j bG9ja19hcnJheSAqY2xvY2tzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1MzIg bWF4X2Nsb2NrLCB1MzIgcmVxdWVzdGVkX2Nsb2NrKQorCQkgICAgICAgICAgICAgICAgdTMyIG1h eF9jbG9jaywgdTMyIHJlcXVlc3RlZF9jbG9jaykKIHsKLSAgICAgICAgdW5zaWduZWQgaW50IGk7 CisJdW5zaWduZWQgaW50IGk7CiAKLSAgICAgICAgaWYgKChjbG9ja3MgPT0gTlVMTCkgfHwgKGNs b2Nrcy0+Y291bnQgPT0gMCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIChyZXF1ZXN0ZWRfY2xv Y2sgPCBtYXhfY2xvY2spID8gcmVxdWVzdGVkX2Nsb2NrIDogbWF4X2Nsb2NrOworCWlmICgoY2xv Y2tzID09IE5VTEwpIHx8IChjbG9ja3MtPmNvdW50ID09IDApKQorCQlyZXR1cm4gKHJlcXVlc3Rl ZF9jbG9jayA8IG1heF9jbG9jaykgPyByZXF1ZXN0ZWRfY2xvY2sgOiBtYXhfY2xvY2s7CiAKLSAg ICAgICAgZm9yIChpID0gMDsgaSA8IGNsb2Nrcy0+Y291bnQ7IGkrKykgewotICAgICAgICAgICAg ICAgIGlmIChjbG9ja3MtPnZhbHVlc1tpXSA+PSByZXF1ZXN0ZWRfY2xvY2spCi0gICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gKGNsb2Nrcy0+dmFsdWVzW2ldIDwgbWF4X2Nsb2NrKSA/IGNs b2Nrcy0+dmFsdWVzW2ldIDogbWF4X2Nsb2NrOwotICAgICAgICB9CisJZm9yIChpID0gMDsgaSA8 IGNsb2Nrcy0+Y291bnQ7IGkrKykgeworCQlpZiAoY2xvY2tzLT52YWx1ZXNbaV0gPj0gcmVxdWVz dGVkX2Nsb2NrKQorCQkJcmV0dXJuIChjbG9ja3MtPnZhbHVlc1tpXSA8IG1heF9jbG9jaykgPyBj bG9ja3MtPnZhbHVlc1tpXSA6IG1heF9jbG9jazsKKwl9CiAKLSAgICAgICAgcmV0dXJuIChjbG9j a3MtPnZhbHVlc1tjbG9ja3MtPmNvdW50IC0gMV0gPCBtYXhfY2xvY2spID8KLSAgICAgICAgICAg ICAgICBjbG9ja3MtPnZhbHVlc1tjbG9ja3MtPmNvdW50IC0gMV0gOiBtYXhfY2xvY2s7CisJcmV0 dXJuIChjbG9ja3MtPnZhbHVlc1tjbG9ja3MtPmNvdW50IC0gMV0gPCBtYXhfY2xvY2spID8KKwkJ Y2xvY2tzLT52YWx1ZXNbY2xvY2tzLT5jb3VudCAtIDFdIDogbWF4X2Nsb2NrOwogfQogCiBzdGF0 aWMgdTMyIGJ0Y19nZXRfdmFsaWRfbWNsayhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiBtYXhfbWNsaywgdTMyIHJlcXVlc3RlZF9t Y2xrKQorCQkJICAgICAgdTMyIG1heF9tY2xrLCB1MzIgcmVxdWVzdGVkX21jbGspCiB7Ci0gICAg ICAgIHJldHVybiBidGNfZmluZF92YWxpZF9jbG9jaygmYWRldi0+cG0uZHBtLmR5bl9zdGF0ZS52 YWxpZF9tY2xrX3ZhbHVlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1h eF9tY2xrLCByZXF1ZXN0ZWRfbWNsayk7CisJcmV0dXJuIGJ0Y19maW5kX3ZhbGlkX2Nsb2NrKCZh ZGV2LT5wbS5kcG0uZHluX3N0YXRlLnZhbGlkX21jbGtfdmFsdWVzLAorCQkJCSAgICBtYXhfbWNs aywgcmVxdWVzdGVkX21jbGspOwogfQogCiBzdGF0aWMgdTMyIGJ0Y19nZXRfdmFsaWRfc2Nsayhz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHUzMiBtYXhfc2NsaywgdTMyIHJlcXVlc3RlZF9zY2xrKQorCQkgICAgICAgICAgICAgIHUzMiBt YXhfc2NsaywgdTMyIHJlcXVlc3RlZF9zY2xrKQogewotICAgICAgICByZXR1cm4gYnRjX2ZpbmRf dmFsaWRfY2xvY2soJmFkZXYtPnBtLmRwbS5keW5fc3RhdGUudmFsaWRfc2Nsa192YWx1ZXMsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfc2NsaywgcmVxdWVzdGVkX3Nj bGspOworCXJldHVybiBidGNfZmluZF92YWxpZF9jbG9jaygmYWRldi0+cG0uZHBtLmR5bl9zdGF0 ZS52YWxpZF9zY2xrX3ZhbHVlcywKKwkJCQkgICAgbWF4X3NjbGssIHJlcXVlc3RlZF9zY2xrKTsK IH0KIAogdm9pZCBidGNfZ2V0X21heF9jbG9ja19mcm9tX3ZvbHRhZ2VfZGVwZW5kZW5jeV90YWJs ZShzdHJ1Y3QgYW1kZ3B1X2Nsb2NrX3ZvbHRhZ2VfZGVwZW5kZW5jeV90YWJsZSAqdGFibGUsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiAq bWF4X2Nsb2NrKQorCQkJCQkJICAgICB1MzIgKm1heF9jbG9jaykKIHsKLSAgICAgICAgdTMyIGks IGNsb2NrID0gMDsKKwl1MzIgaSwgY2xvY2sgPSAwOwogCi0gICAgICAgIGlmICgodGFibGUgPT0g TlVMTCkgfHwgKHRhYmxlLT5jb3VudCA9PSAwKSkgewotICAgICAgICAgICAgICAgICptYXhfY2xv Y2sgPSBjbG9jazsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKwlpZiAoKHRh YmxlID09IE5VTEwpIHx8ICh0YWJsZS0+Y291bnQgPT0gMCkpIHsKKwkJKm1heF9jbG9jayA9IGNs b2NrOworCQlyZXR1cm47CisJfQogCi0gICAgICAgIGZvciAoaSA9IDA7IGkgPCB0YWJsZS0+Y291 bnQ7IGkrKykgewotICAgICAgICAgICAgICAgIGlmIChjbG9jayA8IHRhYmxlLT5lbnRyaWVzW2ld LmNsaykKLSAgICAgICAgICAgICAgICAgICAgICAgIGNsb2NrID0gdGFibGUtPmVudHJpZXNbaV0u Y2xrOwotICAgICAgICB9Ci0gICAgICAgICptYXhfY2xvY2sgPSBjbG9jazsKKwlmb3IgKGkgPSAw OyBpIDwgdGFibGUtPmNvdW50OyBpKyspIHsKKwkJaWYgKGNsb2NrIDwgdGFibGUtPmVudHJpZXNb aV0uY2xrKQorCQkJY2xvY2sgPSB0YWJsZS0+ZW50cmllc1tpXS5jbGs7CisJfQorCSptYXhfY2xv Y2sgPSBjbG9jazsKIH0KIAogc3RhdGljIHZvaWQgYnRjX2FwcGx5X3ZvbHRhZ2VfZGVwZW5kZW5j eV9ydWxlcyhzdHJ1Y3QgYW1kZ3B1X2Nsb2NrX3ZvbHRhZ2VfZGVwZW5kZW5jeV90YWJsZSAqdGFi bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTMyIGNsb2NrLCB1 MTYgbWF4X3ZvbHRhZ2UsIHUxNiAqdm9sdGFnZSkKKwkJCQkJICAgICAgIHUzMiBjbG9jaywgdTE2 IG1heF92b2x0YWdlLCB1MTYgKnZvbHRhZ2UpCiB7Ci0gICAgICAgIHUzMiBpOworCXUzMiBpOwog Ci0gICAgICAgIGlmICgodGFibGUgPT0gTlVMTCkgfHwgKHRhYmxlLT5jb3VudCA9PSAwKSkKLSAg ICAgICAgICAgICAgICByZXR1cm47CisJaWYgKCh0YWJsZSA9PSBOVUxMKSB8fCAodGFibGUtPmNv dW50ID09IDApKQorCQlyZXR1cm47CiAKLSAgICAgICAgZm9yIChpPSAwOyBpIDwgdGFibGUtPmNv dW50OyBpKyspIHsKLSAgICAgICAgICAgICAgICBpZiAoY2xvY2sgPD0gdGFibGUtPmVudHJpZXNb aV0uY2xrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKnZvbHRhZ2UgPCB0YWJsZS0+ ZW50cmllc1tpXS52KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdm9sdGFnZSA9 ICh1MTYpKCh0YWJsZS0+ZW50cmllc1tpXS52IDwgbWF4X3ZvbHRhZ2UpID8KLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUtPmVudHJpZXNbaV0u diA6IG1heF92b2x0YWdlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg ICAgICAgICAgICB9Ci0gICAgICAgIH0KKwlmb3IgKGk9IDA7IGkgPCB0YWJsZS0+Y291bnQ7IGkr KykgeworCQlpZiAoY2xvY2sgPD0gdGFibGUtPmVudHJpZXNbaV0uY2xrKSB7CisJCQlpZiAoKnZv bHRhZ2UgPCB0YWJsZS0+ZW50cmllc1tpXS52KQorCQkJCSp2b2x0YWdlID0gKHUxNikoKHRhYmxl LT5lbnRyaWVzW2ldLnYgPCBtYXhfdm9sdGFnZSkgPworCQkJCQkgICB0YWJsZS0+ZW50cmllc1tp XS52IDogbWF4X3ZvbHRhZ2UpOworCQkJcmV0dXJuOworCQl9CisJfQogCi0gICAgICAgICp2b2x0 YWdlID0gKCp2b2x0YWdlID4gbWF4X3ZvbHRhZ2UpID8gKnZvbHRhZ2UgOiBtYXhfdm9sdGFnZTsK Kwkqdm9sdGFnZSA9ICgqdm9sdGFnZSA+IG1heF92b2x0YWdlKSA/ICp2b2x0YWdlIDogbWF4X3Zv bHRhZ2U7CiB9CiAKIHN0YXRpYyB2b2lkIGJ0Y19hZGp1c3RfY2xvY2tfY29tYmluYXRpb25zKHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBzdHJ1Y3QgYW1kZ3B1X2Nsb2NrX2FuZF92b2x0YWdlX2xpbWl0cyAqbWF4X2xp bWl0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJ2N3h4X3Bs ICpwbCkKKwkJCQkJICBjb25zdCBzdHJ1Y3QgYW1kZ3B1X2Nsb2NrX2FuZF92b2x0YWdlX2xpbWl0 cyAqbWF4X2xpbWl0cywKKwkJCQkJICBzdHJ1Y3QgcnY3eHhfcGwgKnBsKQogewogCi0gICAgICAg IGlmICgocGwtPm1jbGsgPT0gMCkgfHwgKHBsLT5zY2xrID09IDApKQotICAgICAgICAgICAgICAg IHJldHVybjsKKwlpZiAoKHBsLT5tY2xrID09IDApIHx8IChwbC0+c2NsayA9PSAwKSkKKwkJcmV0 dXJuOwogCi0gICAgICAgIGlmIChwbC0+bWNsayA9PSBwbC0+c2NsaykKLSAgICAgICAgICAgICAg ICByZXR1cm47CisJaWYgKHBsLT5tY2xrID09IHBsLT5zY2xrKQorCQlyZXR1cm47CiAKLSAgICAg ICAgaWYgKHBsLT5tY2xrID4gcGwtPnNjbGspIHsKLSAgICAgICAgICAgICAgICBpZiAoKChwbC0+ bWNsayArIChwbC0+c2NsayAtIDEpKSAvIHBsLT5zY2xrKSA+IGFkZXYtPnBtLmRwbS5keW5fc3Rh dGUubWNsa19zY2xrX3JhdGlvKQotICAgICAgICAgICAgICAgICAgICAgICAgcGwtPnNjbGsgPSBi dGNfZ2V0X3ZhbGlkX3NjbGsoYWRldiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG1heF9saW1pdHMtPnNjbGssCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGwtPm1jbGsgKwotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZGV2LT5w bS5kcG0uZHluX3N0YXRlLm1jbGtfc2Nsa19yYXRpbyAtIDEpKSAvCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGV2LT5wbS5kcG0uZHluX3N0 YXRlLm1jbGtfc2Nsa19yYXRpbyk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg aWYgKChwbC0+c2NsayAtIHBsLT5tY2xrKSA+IGFkZXYtPnBtLmRwbS5keW5fc3RhdGUuc2Nsa19t Y2xrX2RlbHRhKQotICAgICAgICAgICAgICAgICAgICAgICAgcGwtPm1jbGsgPSBidGNfZ2V0X3Zh bGlkX21jbGsoYWRldiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG1heF9saW1pdHMtPm1jbGssCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbC0+c2NsayAtCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGV2LT5wbS5kcG0uZHluX3N0 YXRlLnNjbGtfbWNsa19kZWx0YSk7Ci0gICAgICAgIH0KKwlpZiAocGwtPm1jbGsgPiBwbC0+c2Ns aykgeworCQlpZiAoKChwbC0+bWNsayArIChwbC0+c2NsayAtIDEpKSAvIHBsLT5zY2xrKSA+IGFk ZXYtPnBtLmRwbS5keW5fc3RhdGUubWNsa19zY2xrX3JhdGlvKQorCQkJcGwtPnNjbGsgPSBidGNf Z2V0X3ZhbGlkX3NjbGsoYWRldiwKKwkJCQkJCSAgICAgIG1heF9saW1pdHMtPnNjbGssCisJCQkJ CQkgICAgICAocGwtPm1jbGsgKworCQkJCQkJICAgICAgKGFkZXYtPnBtLmRwbS5keW5fc3RhdGUu bWNsa19zY2xrX3JhdGlvIC0gMSkpIC8KKwkJCQkJCSAgICAgIGFkZXYtPnBtLmRwbS5keW5fc3Rh dGUubWNsa19zY2xrX3JhdGlvKTsKKwl9IGVsc2UgeworCQlpZiAoKHBsLT5zY2xrIC0gcGwtPm1j bGspID4gYWRldi0+cG0uZHBtLmR5bl9zdGF0ZS5zY2xrX21jbGtfZGVsdGEpCisJCQlwbC0+bWNs ayA9IGJ0Y19nZXRfdmFsaWRfbWNsayhhZGV2LAorCQkJCQkJICAgICAgbWF4X2xpbWl0cy0+bWNs aywKKwkJCQkJCSAgICAgIHBsLT5zY2xrIC0KKwkJCQkJCSAgICAgIGFkZXYtPnBtLmRwbS5keW5f c3RhdGUuc2Nsa19tY2xrX2RlbHRhKTsKKwl9CiB9CiAKIHN0YXRpYyB2b2lkIGJ0Y19hcHBseV92 b2x0YWdlX2RlbHRhX3J1bGVzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1MTYgbWF4X3ZkZGMsIHUxNiBtYXhfdmRkY2ksCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUxNiAqdmRkYywgdTE2ICp2ZGRjaSkK LXsKLSAgICAgICAgc3RydWN0IGV2ZXJncmVlbl9wb3dlcl9pbmZvICplZ19waSA9IGV2ZXJncmVl bl9nZXRfcGkoYWRldik7Ci0gICAgICAgIHUxNiBuZXdfdm9sdGFnZTsKLQotICAgICAgICBpZiAo KDAgPT0gKnZkZGMpIHx8ICgwID09ICp2ZGRjaSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot Ci0gICAgICAgIGlmICgqdmRkYyA+ICp2ZGRjaSkgewotICAgICAgICAgICAgICAgIGlmICgoKnZk ZGMgLSAqdmRkY2kpID4gYWRldi0+cG0uZHBtLmR5bl9zdGF0ZS52ZGRjX3ZkZGNpX2RlbHRhKSB7 Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXdfdm9sdGFnZSA9IGJ0Y19maW5kX3ZvbHRhZ2Uo JmVnX3BpLT52ZGRjaV92b2x0YWdlX3RhYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqdmRkYyAtIGFkZXYtPnBtLmRwbS5keW5fc3Rh dGUudmRkY192ZGRjaV9kZWx0YSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgKnZkZGNpID0g KG5ld192b2x0YWdlIDwgbWF4X3ZkZGNpKSA/IG5ld192b2x0YWdlIDogbWF4X3ZkZGNpOwotICAg ICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoKCp2 ZGRjaSAtICp2ZGRjKSA+IGFkZXYtPnBtLmRwbS5keW5fc3RhdGUudmRkY192ZGRjaV9kZWx0YSkg ewotICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3ZvbHRhZ2UgPSBidGNfZmluZF92b2x0YWdl KCZlZ19waS0+dmRkY192b2x0YWdlX3RhYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqdmRkY2kgLSBhZGV2LT5wbS5kcG0uZHluX3N0 YXRlLnZkZGNfdmRkY2lfZGVsdGEpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICp2ZGRjID0g KG5ld192b2x0YWdlIDwgbWF4X3ZkZGMpID8gbmV3X3ZvbHRhZ2UgOiBtYXhfdmRkYzsKLSAgICAg ICAgICAgICAgICB9Ci0gICAgICAgIH0KKwkJCQkJICB1MTYgbWF4X3ZkZGMsIHUxNiBtYXhfdmRk Y2ksCisJCQkJCSAgdTE2ICp2ZGRjLCB1MTYgKnZkZGNpKQoreworCXN0cnVjdCBldmVyZ3JlZW5f cG93ZXJfaW5mbyAqZWdfcGkgPSBldmVyZ3JlZW5fZ2V0X3BpKGFkZXYpOworCXUxNiBuZXdfdm9s dGFnZTsKKworCWlmICgoMCA9PSAqdmRkYykgfHwgKDAgPT0gKnZkZGNpKSkKKwkJcmV0dXJuOwor CisJaWYgKCp2ZGRjID4gKnZkZGNpKSB7CisJCWlmICgoKnZkZGMgLSAqdmRkY2kpID4gYWRldi0+ cG0uZHBtLmR5bl9zdGF0ZS52ZGRjX3ZkZGNpX2RlbHRhKSB7CisJCQluZXdfdm9sdGFnZSA9IGJ0 Y19maW5kX3ZvbHRhZ2UoJmVnX3BpLT52ZGRjaV92b2x0YWdlX3RhYmxlLAorCQkJCQkJICAgICAg ICgqdmRkYyAtIGFkZXYtPnBtLmRwbS5keW5fc3RhdGUudmRkY192ZGRjaV9kZWx0YSkpOworCQkJ KnZkZGNpID0gKG5ld192b2x0YWdlIDwgbWF4X3ZkZGNpKSA/IG5ld192b2x0YWdlIDogbWF4X3Zk ZGNpOworCQl9CisJfSBlbHNlIHsKKwkJaWYgKCgqdmRkY2kgLSAqdmRkYykgPiBhZGV2LT5wbS5k cG0uZHluX3N0YXRlLnZkZGNfdmRkY2lfZGVsdGEpIHsKKwkJCW5ld192b2x0YWdlID0gYnRjX2Zp bmRfdm9sdGFnZSgmZWdfcGktPnZkZGNfdm9sdGFnZV90YWJsZSwKKwkJCQkJCSAgICAgICAoKnZk ZGNpIC0gYWRldi0+cG0uZHBtLmR5bl9zdGF0ZS52ZGRjX3ZkZGNpX2RlbHRhKSk7CisJCQkqdmRk YyA9IChuZXdfdm9sdGFnZSA8IG1heF92ZGRjKSA/IG5ld192b2x0YWdlIDogbWF4X3ZkZGM7CisJ CX0KKwl9CiB9CiAKIHN0YXRpYyBlbnVtIGFtZGdwdV9wY2llX2dlbiByNjAwX2dldF9wY2llX2dl bl9zdXBwb3J0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LApAQCAtMzYyNiw5ICszNjIzLDkg QEAgc3RhdGljIHZvaWQgc2lfYXBwbHlfc3RhdGVfYWRqdXN0X3J1bGVzKHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2LAogCQl9CiAJfQogCi0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBwcy0+cGVy Zm9ybWFuY2VfbGV2ZWxfY291bnQ7IGkrKykKLSAgICAgICAgICAgICAgICBidGNfYWRqdXN0X2Ns b2NrX2NvbWJpbmF0aW9ucyhhZGV2LCBtYXhfbGltaXRzLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZwcy0+cGVyZm9ybWFuY2VfbGV2ZWxzW2ldKTsKKwlm b3IgKGkgPSAwOyBpIDwgcHMtPnBlcmZvcm1hbmNlX2xldmVsX2NvdW50OyBpKyspCisJCWJ0Y19h ZGp1c3RfY2xvY2tfY29tYmluYXRpb25zKGFkZXYsIG1heF9saW1pdHMsCisJCQkJCSAgICAgICZw cy0+cGVyZm9ybWFuY2VfbGV2ZWxzW2ldKTsKIAogCWZvciAoaSA9IDA7IGkgPCBwcy0+cGVyZm9y bWFuY2VfbGV2ZWxfY291bnQ7IGkrKykgewogCQlpZiAocHMtPnBlcmZvcm1hbmNlX2xldmVsc1tp XS52ZGRjIDwgbWluX3ZjZV92b2x0YWdlKQpAQCAtMzc2Nyw3ICszNzY0LDcgQEAgc3RhdGljIHZv aWQgc2lfc2V0X2RwbV9ldmVudF9zb3VyY2VzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1 MzIgc291cmNlcykKIAljYXNlIDA6CiAJZGVmYXVsdDoKIAkJd2FudF90aGVybWFsX3Byb3RlY3Rp b24gPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBicmVhazsKKwkJYnJlYWs7CiAJY2FzZSAoMSA8 PCBBTURHUFVfRFBNX0FVVE9fVEhST1RUTEVfU1JDX1RIRVJNQUwpOgogCQl3YW50X3RoZXJtYWxf cHJvdGVjdGlvbiA9IHRydWU7CiAJCWRwbV9ldmVudF9zcmMgPSBBTURHUFVfRFBNX0VWRU5UX1NS Q19ESUdJVEFMOwpAQCAtMzk2OSw3ICszOTY2LDcgQEAgc3RhdGljIGludCBzaV9wcm9jZXNzX2Zp cm13YXJlX2hlYWRlcihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAlpZiAocmV0KQogCQly ZXR1cm4gcmV0OwogCi0gICAgICAgIHNpX3BpLT5zdGF0ZV90YWJsZV9zdGFydCA9IHRtcDsKKwlz aV9waS0+c3RhdGVfdGFibGVfc3RhcnQgPSB0bXA7CiAKIAlyZXQgPSBzaV9yZWFkX3NtY19zcmFt X2R3b3JkKGFkZXYsCiAJCQkJICAgICBTSVNMQU5EU19TTUNfRklSTVdBUkVfSEVBREVSX0xPQ0FU SU9OICsKQEAgLTQxMjgsNyArNDEyNSw3IEBAIHN0YXRpYyB2b2lkIHNpX3Byb2dyYW1fcmVzcG9u c2VfdGltZXMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJc2lfd3JpdGVfc21jX3NvZnRf cmVnaXN0ZXIoYWRldiwgU0lfU01DX1NPRlRfUkVHSVNURVJfbXZkZF9jaGdfdGltZSwgMSk7CiAK IAl2b2x0YWdlX3Jlc3BvbnNlX3RpbWUgPSAodTMyKWFkZXYtPnBtLmRwbS52b2x0YWdlX3Jlc3Bv bnNlX3RpbWU7Ci0gICAgICAgIGJhY2tiaWFzX3Jlc3BvbnNlX3RpbWUgPSAodTMyKWFkZXYtPnBt LmRwbS5iYWNrYmlhc19yZXNwb25zZV90aW1lOworCWJhY2tiaWFzX3Jlc3BvbnNlX3RpbWUgPSAo dTMyKWFkZXYtPnBtLmRwbS5iYWNrYmlhc19yZXNwb25zZV90aW1lOwogCiAJaWYgKHZvbHRhZ2Vf cmVzcG9uc2VfdGltZSA9PSAwKQogCQl2b2x0YWdlX3Jlc3BvbnNlX3RpbWUgPSAxMDAwOwpAQCAt NDM2NywxNCArNDM2NCwxMSBAQCBzdGF0aWMgdTggc2lfZ2V0X3N0cm9iZV9tb2RlX3NldHRpbmdz KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1MzIgbWNsaykKIHN0YXRpYyBpbnQgc2lfdXBs b2FkX2Zpcm13YXJlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogewogCXN0cnVjdCBzaV9w b3dlcl9pbmZvICpzaV9waSA9IHNpX2dldF9waShhZGV2KTsKLQlpbnQgcmV0OwogCiAJc2lfcmVz ZXRfc21jKGFkZXYpOwogCXNpX3N0b3Bfc21jX2Nsb2NrKGFkZXYpOwogCi0JcmV0ID0gc2lfbG9h ZF9zbWNfdWNvZGUoYWRldiwgc2lfcGktPnNyYW1fZW5kKTsKLQotCXJldHVybiByZXQ7CisJcmV0 dXJuIHNpX2xvYWRfc21jX3Vjb2RlKGFkZXYsIHNpX3BpLT5zcmFtX2VuZCk7CiB9CiAKIHN0YXRp YyBib29sIHNpX3ZhbGlkYXRlX3BoYXNlX3NoZWRkaW5nX3RhYmxlcyhzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiwKQEAgLTQ3OTAsNyArNDc4NCw3IEBAIHN0YXRpYyBpbnQgc2lfcG9wdWxhdGVf bWVtb3J5X3RpbWluZ19wYXJhbWV0ZXJzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCiAJ YW1kZ3B1X2F0b21iaW9zX3NldF9lbmdpbmVfZHJhbV90aW1pbmdzKGFkZXYsCiAJCQkJCSAgICBw bC0+c2NsaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGwt Pm1jbGspOworCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGwtPm1jbGspOwogCiAJZHJh bV90aW1pbmcgID0gUlJFRzMyKE1DX0FSQl9EUkFNX1RJTUlORyk7CiAJZHJhbV90aW1pbmcyID0g UlJFRzMyKE1DX0FSQl9EUkFNX1RJTUlORzIpOwpAQCAtNDgyNSw3ICs0ODE5LDcgQEAgc3RhdGlj IGludCBzaV9kb19wcm9ncmFtX21lbW9yeV90aW1pbmdfcGFyYW1ldGVycyhzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiwKIAkJCQkJICAgc2lfcGktPnNyYW1fZW5kKTsKIAkJaWYgKHJldCkKIAkJ CWJyZWFrOwotICAgICAgICB9CisJfQogCiAJcmV0dXJuIHJldDsKIH0KQEAgLTQ5MzgsOSArNDkz Miw3IEBAIHN0YXRpYyBpbnQgc2lfcG9wdWxhdGVfc21jX2luaXRpYWxfc3RhdGUoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYsCiAKIAlyZWcgPSBDR19SKDB4ZmZmZikgfCBDR19MKDApOwogCXRh YmxlLT5pbml0aWFsU3RhdGUubGV2ZWxzWzBdLmFUID0gY3B1X3RvX2JlMzIocmVnKTsKLQogCXRh YmxlLT5pbml0aWFsU3RhdGUubGV2ZWxzWzBdLmJTUCA9IGNwdV90b19iZTMyKHBpLT5kc3ApOwot CiAJdGFibGUtPmluaXRpYWxTdGF0ZS5sZXZlbHNbMF0uZ2VuMlBDSUUgPSAodTgpc2lfcGktPmJv b3RfcGNpZV9nZW47CiAKIAlpZiAoYWRldi0+bWMudnJhbV90eXBlID09IEFNREdQVV9WUkFNX1RZ UEVfR0REUjUpIHsKQEAgLTUzMDIsOSArNTI5NCw5IEBAIHN0YXRpYyBpbnQgc2lfY2FsY3VsYXRl X3NjbGtfcGFyYW1zKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCXNwbGxfZnVuY19jbnRs XzIgJj0gflNDTEtfTVVYX1NFTF9NQVNLOwogCXNwbGxfZnVuY19jbnRsXzIgfD0gU0NMS19NVVhf U0VMKDIpOwogCi0gICAgICAgIHNwbGxfZnVuY19jbnRsXzMgJj0gflNQTExfRkJfRElWX01BU0s7 Ci0gICAgICAgIHNwbGxfZnVuY19jbnRsXzMgfD0gU1BMTF9GQl9ESVYoZmJkaXYpOwotICAgICAg ICBzcGxsX2Z1bmNfY250bF8zIHw9IFNQTExfRElUSEVOOworCXNwbGxfZnVuY19jbnRsXzMgJj0g flNQTExfRkJfRElWX01BU0s7CisJc3BsbF9mdW5jX2NudGxfMyB8PSBTUExMX0ZCX0RJVihmYmRp dik7CisJc3BsbF9mdW5jX2NudGxfMyB8PSBTUExMX0RJVEhFTjsKIAogCWlmIChwaS0+c2Nsa19z cykgewogCQlzdHJ1Y3QgYW1kZ3B1X2F0b21fc3Mgc3M7CkBAIC01NDExLDE1ICs1NDAzLDE1IEBA IHN0YXRpYyBpbnQgc2lfcG9wdWxhdGVfbWNsa192YWx1ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldiwKIAkJdG1wID0gZnJlcV9ub20gLyByZWZlcmVuY2VfY2xvY2s7CiAJCXRtcCA9IHRtcCAq IHRtcDsKIAkJaWYgKGFtZGdwdV9hdG9tYmlvc19nZXRfYXNpY19zc19pbmZvKGFkZXYsICZzcywK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNJ Q19JTlRFUk5BTF9NRU1PUllfU1MsIGZyZXFfbm9tKSkgeworCQkgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgQVNJQ19JTlRFUk5BTF9NRU1PUllfU1MsIGZyZXFfbm9tKSkgewog CQkJdTMyIGNsa3MgPSByZWZlcmVuY2VfY2xvY2sgKiA1IC8gc3MucmF0ZTsKIAkJCXUzMiBjbGt2 ID0gKHUzMikoKCgoMTMxICogc3MucGVyY2VudGFnZSAqIHNzLnJhdGUpIC8gMTAwKSAqIHRtcCkg LyBmcmVxX25vbSk7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1wbGxfc3MxICY9IH5DTEtW X01BU0s7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtcGxsX3NzMSB8PSBDTEtWKGNsa3YpOwor CQkgICAgICAgIG1wbGxfc3MxICY9IH5DTEtWX01BU0s7CisJCSAgICAgICAgbXBsbF9zczEgfD0g Q0xLVihjbGt2KTsKIAotICAgICAgICAgICAgICAgICAgICAgICAgbXBsbF9zczIgJj0gfkNMS1Nf TUFTSzsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1wbGxfc3MyIHw9IENMS1MoY2xrcyk7CisJ CSAgICAgICAgbXBsbF9zczIgJj0gfkNMS1NfTUFTSzsKKwkJICAgICAgICBtcGxsX3NzMiB8PSBD TEtTKGNsa3MpOwogCQl9CiAJfQogCkBAIC01NzQ2LDcgKzU3MzgsNyBAQCBzdGF0aWMgaW50IHNp X2NvbnZlcnRfcG93ZXJfc3RhdGVfdG9fc21jKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAog CQluaV9waS0+ZW5hYmxlX3Bvd2VyX2NvbnRhaW5tZW50ID0gZmFsc2U7CiAKIAlyZXQgPSBzaV9w b3B1bGF0ZV9zcV9yYW1waW5nX3ZhbHVlcyhhZGV2LCBhbWRncHVfc3RhdGUsIHNtY19zdGF0ZSk7 Ci0gICAgICAgIGlmIChyZXQpCisJaWYgKHJldCkKIAkJbmlfcGktPmVuYWJsZV9zcV9yYW1waW5n ID0gZmFsc2U7CiAKIAlyZXR1cm4gc2lfcG9wdWxhdGVfc21jX3QoYWRldiwgYW1kZ3B1X3N0YXRl LCBzbWNfc3RhdGUpOwpAQCAtNTc3MSwxMCArNTc2Myw4IEBAIHN0YXRpYyBpbnQgc2lfdXBsb2Fk X3N3X3N0YXRlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCWlmIChyZXQpCiAJCXJldHVy biByZXQ7CiAKLQlyZXQgPSBzaV9jb3B5X2J5dGVzX3RvX3NtYyhhZGV2LCBhZGRyZXNzLCAodTgg KilzbWNfc3RhdGUsCi0JCQkJICAgc3RhdGVfc2l6ZSwgc2lfcGktPnNyYW1fZW5kKTsKLQotCXJl dHVybiByZXQ7CisJcmV0dXJuIHNpX2NvcHlfYnl0ZXNfdG9fc21jKGFkZXYsIGFkZHJlc3MsICh1 OCAqKXNtY19zdGF0ZSwKKwkJCQkgICAgc3RhdGVfc2l6ZSwgc2lfcGktPnNyYW1fZW5kKTsKIH0K IAogc3RhdGljIGludCBzaV91cGxvYWRfdWx2X3N0YXRlKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2KQpAQCAtNTkxNSw0NiArNTkwNSw0NiBAQCBzdGF0aWMgYm9vbCBzaV9jaGVja19zMF9tY19y ZWdfaW5kZXgodTE2IGluX3JlZywgdTE2ICpvdXRfcmVnKQogCWNhc2UgIE1DX1NFUV9SQVNfVElN SU5HOgogCQkqb3V0X3JlZyA9IE1DX1NFUV9SQVNfVElNSU5HX0xQOwogCQlicmVhazsKLSAgICAg ICAgY2FzZSBNQ19TRVFfQ0FTX1RJTUlORzoKKwljYXNlIE1DX1NFUV9DQVNfVElNSU5HOgogCQkq b3V0X3JlZyA9IE1DX1NFUV9DQVNfVElNSU5HX0xQOwogCQlicmVhazsKLSAgICAgICAgY2FzZSBN Q19TRVFfTUlTQ19USU1JTkc6CisJY2FzZSBNQ19TRVFfTUlTQ19USU1JTkc6CiAJCSpvdXRfcmVn ID0gTUNfU0VRX01JU0NfVElNSU5HX0xQOwogCQlicmVhazsKLSAgICAgICAgY2FzZSBNQ19TRVFf TUlTQ19USU1JTkcyOgorCWNhc2UgTUNfU0VRX01JU0NfVElNSU5HMjoKIAkJKm91dF9yZWcgPSBN Q19TRVFfTUlTQ19USU1JTkcyX0xQOwogCQlicmVhazsKLSAgICAgICAgY2FzZSBNQ19TRVFfUkRf Q1RMX0QwOgorCWNhc2UgTUNfU0VRX1JEX0NUTF9EMDoKIAkJKm91dF9yZWcgPSBNQ19TRVFfUkRf Q1RMX0QwX0xQOwogCQlicmVhazsKLSAgICAgICAgY2FzZSBNQ19TRVFfUkRfQ1RMX0QxOgorCWNh c2UgTUNfU0VRX1JEX0NUTF9EMToKIAkJKm91dF9yZWcgPSBNQ19TRVFfUkRfQ1RMX0QxX0xQOwog CQlicmVhazsKLSAgICAgICAgY2FzZSBNQ19TRVFfV1JfQ1RMX0QwOgorCWNhc2UgTUNfU0VRX1dS X0NUTF9EMDoKIAkJKm91dF9yZWcgPSBNQ19TRVFfV1JfQ1RMX0QwX0xQOwogCQlicmVhazsKLSAg ICAgICAgY2FzZSBNQ19TRVFfV1JfQ1RMX0QxOgorCWNhc2UgTUNfU0VRX1dSX0NUTF9EMToKIAkJ Km91dF9yZWcgPSBNQ19TRVFfV1JfQ1RMX0QxX0xQOwogCQlicmVhazsKLSAgICAgICAgY2FzZSBN Q19QTUdfQ01EX0VNUlM6CisJY2FzZSBNQ19QTUdfQ01EX0VNUlM6CiAJCSpvdXRfcmVnID0gTUNf U0VRX1BNR19DTURfRU1SU19MUDsKIAkJYnJlYWs7Ci0gICAgICAgIGNhc2UgTUNfUE1HX0NNRF9N UlM6CisJY2FzZSBNQ19QTUdfQ01EX01SUzoKIAkJKm91dF9yZWcgPSBNQ19TRVFfUE1HX0NNRF9N UlNfTFA7CiAJCWJyZWFrOwotICAgICAgICBjYXNlIE1DX1BNR19DTURfTVJTMToKKwljYXNlIE1D X1BNR19DTURfTVJTMToKIAkJKm91dF9yZWcgPSBNQ19TRVFfUE1HX0NNRF9NUlMxX0xQOwogCQli cmVhazsKLSAgICAgICAgY2FzZSBNQ19TRVFfUE1HX1RJTUlORzoKKwljYXNlIE1DX1NFUV9QTUdf VElNSU5HOgogCQkqb3V0X3JlZyA9IE1DX1NFUV9QTUdfVElNSU5HX0xQOwogCQlicmVhazsKLSAg ICAgICAgY2FzZSBNQ19QTUdfQ01EX01SUzI6CisJY2FzZSBNQ19QTUdfQ01EX01SUzI6CiAJCSpv dXRfcmVnID0gTUNfU0VRX1BNR19DTURfTVJTMl9MUDsKIAkJYnJlYWs7Ci0gICAgICAgIGNhc2Ug TUNfU0VRX1dSX0NUTF8yOgorCWNhc2UgTUNfU0VRX1dSX0NUTF8yOgogCQkqb3V0X3JlZyA9IE1D X1NFUV9XUl9DVExfMl9MUDsKIAkJYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6CisJZGVmYXVsdDoK IAkJcmVzdWx0ID0gZmFsc2U7CiAJCWJyZWFrOwogCX0KQEAgLTYwNDEsMTkgKzYwMzEsMTkgQEAg c3RhdGljIGludCBzaV9pbml0aWFsaXplX21jX3JlZ190YWJsZShzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldikKIAlXUkVHMzIoTUNfU0VRX1BNR19DTURfTVJTMl9MUCwgUlJFRzMyKE1DX1BNR19D TURfTVJTMikpOwogCVdSRUczMihNQ19TRVFfV1JfQ1RMXzJfTFAsIFJSRUczMihNQ19TRVFfV1Jf Q1RMXzIpKTsKIAotICAgICAgICByZXQgPSBhbWRncHVfYXRvbWJpb3NfaW5pdF9tY19yZWdfdGFi bGUoYWRldiwgbW9kdWxlX2luZGV4LCB0YWJsZSk7Ci0gICAgICAgIGlmIChyZXQpCi0gICAgICAg ICAgICAgICAgZ290byBpbml0X21jX2RvbmU7CisJcmV0ID0gYW1kZ3B1X2F0b21iaW9zX2luaXRf bWNfcmVnX3RhYmxlKGFkZXYsIG1vZHVsZV9pbmRleCwgdGFibGUpOworCWlmIChyZXQpCisJCWdv dG8gaW5pdF9tY19kb25lOwogCi0gICAgICAgIHJldCA9IHNpX2NvcHlfdmJpb3NfbWNfcmVnX3Rh YmxlKHRhYmxlLCBzaV90YWJsZSk7Ci0gICAgICAgIGlmIChyZXQpCi0gICAgICAgICAgICAgICAg Z290byBpbml0X21jX2RvbmU7CisJcmV0ID0gc2lfY29weV92Ymlvc19tY19yZWdfdGFibGUodGFi bGUsIHNpX3RhYmxlKTsKKwlpZiAocmV0KQorCQlnb3RvIGluaXRfbWNfZG9uZTsKIAogCXNpX3Nl dF9zMF9tY19yZWdfaW5kZXgoc2lfdGFibGUpOwogCiAJcmV0ID0gc2lfc2V0X21jX3NwZWNpYWxf cmVnaXN0ZXJzKGFkZXYsIHNpX3RhYmxlKTsKLSAgICAgICAgaWYgKHJldCkKLSAgICAgICAgICAg ICAgICBnb3RvIGluaXRfbWNfZG9uZTsKKwlpZiAocmV0KQorCQlnb3RvIGluaXRfbWNfZG9uZTsK IAogCXNpX3NldF92YWxpZF9mbGFnKHNpX3RhYmxlKTsKIApAQCAtNjEyMiw3ICs2MTEyLDcgQEAg c3RhdGljIHZvaWQgc2lfY29udmVydF9tY19yZWdfdGFibGVfdG9fc21jKHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2LAogCQkJCQkgICBzdHJ1Y3QgYW1kZ3B1X3BzICphbWRncHVfc3RhdGUsCiAJ CQkJCSAgIFNNQ19TSXNsYW5kc19NQ1JlZ2lzdGVycyAqbWNfcmVnX3RhYmxlKQogewotCXN0cnVj dCAgc2lfcHMgKnN0YXRlID0gc2lfZ2V0X3BzKGFtZGdwdV9zdGF0ZSk7CisJc3RydWN0IHNpX3Bz ICpzdGF0ZSA9IHNpX2dldF9wcyhhbWRncHVfc3RhdGUpOwogCWludCBpOwogCiAJZm9yIChpID0g MDsgaSA8IHN0YXRlLT5wZXJmb3JtYW5jZV9sZXZlbF9jb3VudDsgaSsrKSB7CkBAIC02MTczLDcg KzYxNjMsNyBAQCBzdGF0aWMgaW50IHNpX3BvcHVsYXRlX21jX3JlZ190YWJsZShzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiwKIHN0YXRpYyBpbnQgc2lfdXBsb2FkX21jX3JlZ190YWJsZShzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkgIHN0cnVjdCBhbWRncHVfcHMgKmFtZGdwdV9u ZXdfc3RhdGUpCiB7Ci0Jc3RydWN0ICBzaV9wcyAqbmV3X3N0YXRlID0gc2lfZ2V0X3BzKGFtZGdw dV9uZXdfc3RhdGUpOworCXN0cnVjdCBzaV9wcyAqbmV3X3N0YXRlID0gc2lfZ2V0X3BzKGFtZGdw dV9uZXdfc3RhdGUpOwogCXN0cnVjdCBzaV9wb3dlcl9pbmZvICpzaV9waSA9IHNpX2dldF9waShh ZGV2KTsKIAl1MzIgYWRkcmVzcyA9IHNpX3BpLT5tY19yZWdfdGFibGVfc3RhcnQgKwogCQlvZmZz ZXRvZihTTUNfU0lzbGFuZHNfTUNSZWdpc3RlcnMsCkBAIC02MTg0LDI2ICs2MTc0LDI0IEBAIHN0 YXRpYyBpbnQgc2lfdXBsb2FkX21jX3JlZ190YWJsZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diwKIAogCXNpX2NvbnZlcnRfbWNfcmVnX3RhYmxlX3RvX3NtYyhhZGV2LCBhbWRncHVfbmV3X3N0 YXRlLCBzbWNfbWNfcmVnX3RhYmxlKTsKIAotCiAJcmV0dXJuIHNpX2NvcHlfYnl0ZXNfdG9fc21j KGFkZXYsIGFkZHJlc3MsCiAJCQkJICAgICh1OCAqKSZzbWNfbWNfcmVnX3RhYmxlLT5kYXRhW1NJ U0xBTkRTX01DUkVHSVNURVJUQUJMRV9GSVJTVF9EUklWRVJTVEFURV9TTE9UXSwKIAkJCQkgICAg c2l6ZW9mKFNNQ19TSXNsYW5kc19NQ1JlZ2lzdGVyU2V0KSAqIG5ld19zdGF0ZS0+cGVyZm9ybWFu Y2VfbGV2ZWxfY291bnQsCiAJCQkJICAgIHNpX3BpLT5zcmFtX2VuZCk7Ci0KIH0KIAogc3RhdGlj IHZvaWQgc2lfZW5hYmxlX3ZvbHRhZ2VfY29udHJvbChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diwgYm9vbCBlbmFibGUpCiB7Ci0gICAgICAgIGlmIChlbmFibGUpCi0gICAgICAgICAgICAgICAg V1JFRzMyX1AoR0VORVJBTF9QV1JNR1QsIFZPTFRfUFdSTUdUX0VOLCB+Vk9MVF9QV1JNR1RfRU4p OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgV1JFRzMyX1AoR0VORVJBTF9QV1JNR1Qs IDAsIH5WT0xUX1BXUk1HVF9FTik7CisJaWYgKGVuYWJsZSkKKwkJV1JFRzMyX1AoR0VORVJBTF9Q V1JNR1QsIFZPTFRfUFdSTUdUX0VOLCB+Vk9MVF9QV1JNR1RfRU4pOworCWVsc2UKKwkJV1JFRzMy X1AoR0VORVJBTF9QV1JNR1QsIDAsIH5WT0xUX1BXUk1HVF9FTik7CiB9CiAKIHN0YXRpYyBlbnVt IGFtZGdwdV9wY2llX2dlbiBzaV9nZXRfbWF4aW11bV9saW5rX3NwZWVkKHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2LAogCQkJCQkJICAgICAgc3RydWN0IGFtZGdwdV9wcyAqYW1kZ3B1X3N0YXRl KQogewotCXN0cnVjdCAgc2lfcHMgKnN0YXRlID0gc2lfZ2V0X3BzKGFtZGdwdV9zdGF0ZSk7CisJ c3RydWN0IHNpX3BzICpzdGF0ZSA9IHNpX2dldF9wcyhhbWRncHVfc3RhdGUpOwogCWludCBpOwog CXUxNiBwY2llX3NwZWVkLCBtYXhfc3BlZWQgPSAwOwogCkBAIC02NTI1LDI1ICs2NTEzLDE3IEBA IHN0YXRpYyBpbnQgc2lfdGhlcm1hbF9zZXR1cF9mYW5fdGFibGUoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYpCiAJZmFuX3RhYmxlLnRlbXBfbWluID0gY3B1X3RvX2JlMTYoKDUwICsgYWRldi0+ cG0uZHBtLmZhbi50X21pbikgLyAxMDApOwogCWZhbl90YWJsZS50ZW1wX21lZCA9IGNwdV90b19i ZTE2KCg1MCArIGFkZXYtPnBtLmRwbS5mYW4udF9tZWQpIC8gMTAwKTsKIAlmYW5fdGFibGUudGVt cF9tYXggPSBjcHVfdG9fYmUxNigoNTAgKyBhZGV2LT5wbS5kcG0uZmFuLnRfbWF4KSAvIDEwMCk7 Ci0KIAlmYW5fdGFibGUuc2xvcGUxID0gY3B1X3RvX2JlMTYoc2xvcGUxKTsKIAlmYW5fdGFibGUu c2xvcGUyID0gY3B1X3RvX2JlMTYoc2xvcGUyKTsKLQogCWZhbl90YWJsZS5mZG9fbWluID0gY3B1 X3RvX2JlMTYoZmRvX21pbik7Ci0KIAlmYW5fdGFibGUuaHlzX2Rvd24gPSBjcHVfdG9fYmUxNihh ZGV2LT5wbS5kcG0uZmFuLnRfaHlzdCk7Ci0KIAlmYW5fdGFibGUuaHlzX3VwID0gY3B1X3RvX2Jl MTYoMSk7Ci0KIAlmYW5fdGFibGUuaHlzX3Nsb3BlID0gY3B1X3RvX2JlMTYoMSk7Ci0KIAlmYW5f dGFibGUudGVtcF9yZXNwX2xpbSA9IGNwdV90b19iZTE2KDUpOwotCiAJcmVmZXJlbmNlX2Nsb2Nr ID0gYW1kZ3B1X2FzaWNfZ2V0X3hjbGsoYWRldik7CiAKIAlmYW5fdGFibGUucmVmcmVzaF9wZXJp b2QgPSBjcHVfdG9fYmUzMigoYWRldi0+cG0uZHBtLmZhbi5jeWNsZV9kZWxheSAqCiAJCQkJCQly ZWZlcmVuY2VfY2xvY2spIC8gMTYwMCk7Ci0KIAlmYW5fdGFibGUuZmRvX21heCA9IGNwdV90b19i ZTE2KCh1MTYpZHV0eTEwMCk7CiAKIAl0bXAgPSAoUlJFRzMyKENHX01VTFRfVEhFUk1BTF9DVFJM KSAmIFRFTVBfU0VMX01BU0spID4+IFRFTVBfU0VMX1NISUZUOwpAQCAtNjkxNiw5ICs2ODk2LDcg QEAgc3RhdGljIGludCBzaV9kcG1fZW5hYmxlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQog CXNpX3N0YXJ0X2RwbShhZGV2KTsKIAogCXNpX2VuYWJsZV9hdXRvX3Rocm90dGxlX3NvdXJjZShh ZGV2LCBBTURHUFVfRFBNX0FVVE9fVEhST1RUTEVfU1JDX1RIRVJNQUwsIHRydWUpOwotCiAJc2lf dGhlcm1hbF9zdGFydF90aGVybWFsX2NvbnRyb2xsZXIoYWRldik7Ci0KIAluaV91cGRhdGVfY3Vy cmVudF9wcyhhZGV2LCBib290X3BzKTsKIAogCXJldHVybiAwOwpAQCAtNjk3Miw3ICs2OTUwLDYg QEAgc3RhdGljIGludCBzaV9kcG1fcHJlX3NldF9wb3dlcl9zdGF0ZShzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldikKIAlzdHJ1Y3QgYW1kZ3B1X3BzICpuZXdfcHMgPSAmcmVxdWVzdGVkX3BzOwog CiAJbmlfdXBkYXRlX3JlcXVlc3RlZF9wcyhhZGV2LCBuZXdfcHMpOwotCiAJc2lfYXBwbHlfc3Rh dGVfYWRqdXN0X3J1bGVzKGFkZXYsICZlZ19waS0+cmVxdWVzdGVkX3Jwcyk7CiAKIAlyZXR1cm4g MDsKQEAgLTcyMzIsOCArNzIwOSw4IEBAIHN0YXRpYyB2b2lkIHNpX3BhcnNlX3BwbGliX2Nsb2Nr X2luZm8oc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiB9CiAKIHVuaW9uIHBwbGliX3Bvd2Vy X3N0YXRlIHsKLSAgICAgICAgc3RydWN0IF9BVE9NX1BQTElCX1NUQVRFIHYxOwotICAgICAgICBz dHJ1Y3QgX0FUT01fUFBMSUJfU1RBVEVfVjIgdjI7CisJc3RydWN0IF9BVE9NX1BQTElCX1NUQVRF IHYxOworCXN0cnVjdCBfQVRPTV9QUExJQl9TVEFURV9WMiB2MjsKIH07CiAKIHN0YXRpYyBpbnQg c2lfcGFyc2VfcG93ZXJfdGFibGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCkBAIC03MjQ4 LDcgKzcyMjUsNyBAQCBzdGF0aWMgaW50IHNpX3BhcnNlX3Bvd2VyX3RhYmxlKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2KQogCXN0cnVjdCBfTm9uQ2xvY2tJbmZvQXJyYXkgKm5vbl9jbG9ja19p bmZvX2FycmF5OwogCXVuaW9uIHBvd2VyX2luZm8gKnBvd2VyX2luZm87CiAJaW50IGluZGV4ID0g R2V0SW5kZXhJbnRvTWFzdGVyVGFibGUoREFUQSwgUG93ZXJQbGF5SW5mbyk7Ci0gICAgICAgIHUx NiBkYXRhX29mZnNldDsKKwl1MTYgZGF0YV9vZmZzZXQ7CiAJdTggZnJldiwgY3JldjsKIAl1OCAq cG93ZXJfc3RhdGVfb2Zmc2V0OwogCXN0cnVjdCAgc2lfcHMgKnBzOwpAQCAtNzg5Niw0NiArNzg3 Myw0NiBAQCBzdGF0aWMgaW50IHNpX2RwbV9nZXRfdGVtcChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldikKIAogc3RhdGljIHUzMiBzaV9kcG1fZ2V0X3NjbGsoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYsIGJvb2wgbG93KQogewotICAgICAgICBzdHJ1Y3QgZXZlcmdyZWVuX3Bvd2VyX2luZm8g KmVnX3BpID0gZXZlcmdyZWVuX2dldF9waShhZGV2KTsKLSAgICAgICAgc3RydWN0ICBzaV9wcyAq cmVxdWVzdGVkX3N0YXRlID0gc2lfZ2V0X3BzKCZlZ19waS0+cmVxdWVzdGVkX3Jwcyk7CisJc3Ry dWN0IGV2ZXJncmVlbl9wb3dlcl9pbmZvICplZ19waSA9IGV2ZXJncmVlbl9nZXRfcGkoYWRldik7 CisJc3RydWN0ICBzaV9wcyAqcmVxdWVzdGVkX3N0YXRlID0gc2lfZ2V0X3BzKCZlZ19waS0+cmVx dWVzdGVkX3Jwcyk7CiAKLSAgICAgICAgaWYgKGxvdykKLSAgICAgICAgICAgICAgICByZXR1cm4g cmVxdWVzdGVkX3N0YXRlLT5wZXJmb3JtYW5jZV9sZXZlbHNbMF0uc2NsazsKLSAgICAgICAgZWxz ZQotICAgICAgICAgICAgICAgIHJldHVybiByZXF1ZXN0ZWRfc3RhdGUtPnBlcmZvcm1hbmNlX2xl dmVsc1tyZXF1ZXN0ZWRfc3RhdGUtPnBlcmZvcm1hbmNlX2xldmVsX2NvdW50IC0gMV0uc2NsazsK KwlpZiAobG93KQorCQlyZXR1cm4gcmVxdWVzdGVkX3N0YXRlLT5wZXJmb3JtYW5jZV9sZXZlbHNb MF0uc2NsazsKKwllbHNlCisJCXJldHVybiByZXF1ZXN0ZWRfc3RhdGUtPnBlcmZvcm1hbmNlX2xl dmVsc1tyZXF1ZXN0ZWRfc3RhdGUtPnBlcmZvcm1hbmNlX2xldmVsX2NvdW50IC0gMV0uc2NsazsK IH0KIAogc3RhdGljIHUzMiBzaV9kcG1fZ2V0X21jbGsoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYsIGJvb2wgbG93KQogewotICAgICAgICBzdHJ1Y3QgZXZlcmdyZWVuX3Bvd2VyX2luZm8gKmVn X3BpID0gZXZlcmdyZWVuX2dldF9waShhZGV2KTsKLSAgICAgICAgc3RydWN0ICBzaV9wcyAqcmVx dWVzdGVkX3N0YXRlID0gc2lfZ2V0X3BzKCZlZ19waS0+cmVxdWVzdGVkX3Jwcyk7CisJc3RydWN0 IGV2ZXJncmVlbl9wb3dlcl9pbmZvICplZ19waSA9IGV2ZXJncmVlbl9nZXRfcGkoYWRldik7CisJ c3RydWN0ICBzaV9wcyAqcmVxdWVzdGVkX3N0YXRlID0gc2lfZ2V0X3BzKCZlZ19waS0+cmVxdWVz dGVkX3Jwcyk7CiAKLSAgICAgICAgaWYgKGxvdykKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVx dWVzdGVkX3N0YXRlLT5wZXJmb3JtYW5jZV9sZXZlbHNbMF0ubWNsazsKLSAgICAgICAgZWxzZQot ICAgICAgICAgICAgICAgIHJldHVybiByZXF1ZXN0ZWRfc3RhdGUtPnBlcmZvcm1hbmNlX2xldmVs c1tyZXF1ZXN0ZWRfc3RhdGUtPnBlcmZvcm1hbmNlX2xldmVsX2NvdW50IC0gMV0ubWNsazsKKwlp ZiAobG93KQorCQlyZXR1cm4gcmVxdWVzdGVkX3N0YXRlLT5wZXJmb3JtYW5jZV9sZXZlbHNbMF0u bWNsazsKKwllbHNlCisJCXJldHVybiByZXF1ZXN0ZWRfc3RhdGUtPnBlcmZvcm1hbmNlX2xldmVs c1tyZXF1ZXN0ZWRfc3RhdGUtPnBlcmZvcm1hbmNlX2xldmVsX2NvdW50IC0gMV0ubWNsazsKIH0K IAogc3RhdGljIHZvaWQgc2lfZHBtX3ByaW50X3Bvd2VyX3N0YXRlKHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGFtZGdwdV9w cyAqcnBzKQotewotICAgICAgICBzdHJ1Y3QgIHNpX3BzICpwcyA9IHNpX2dldF9wcyhycHMpOwot ICAgICAgICBzdHJ1Y3QgcnY3eHhfcGwgKnBsOwotICAgICAgICBpbnQgaTsgICAgICAgICAgCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgIGFtZGdwdV9kcG1fcHJpbnRf Y2xhc3NfaW5mbyhycHMtPmNsYXNzLCBycHMtPmNsYXNzMik7Ci0gICAgICAgIGFtZGdwdV9kcG1f cHJpbnRfY2FwX2luZm8ocnBzLT5jYXBzKTsKLSAgICAgICAgRFJNX0lORk8oIlx0dXZkICAgIHZj bGs6ICVkIGRjbGs6ICVkXG4iLCBycHMtPnZjbGssIHJwcy0+ZGNsayk7Ci0gICAgICAgIGZvciAo aSA9IDA7IGkgPCBwcy0+cGVyZm9ybWFuY2VfbGV2ZWxfY291bnQ7IGkrKykgewotICAgICAgICAg ICAgICAgIHBsID0gJnBzLT5wZXJmb3JtYW5jZV9sZXZlbHNbaV07Ci0gICAgICAgICAgICAgICAg aWYgKGFkZXYtPmFzaWNfdHlwZSA+PSBDSElQX1RBSElUSSkKLSAgICAgICAgICAgICAgICAgICAg ICAgIERSTV9JTkZPKCJcdFx0cG93ZXIgbGV2ZWwgJWQgICAgc2NsazogJXUgbWNsazogJXUgdmRk YzogJXUgdmRkY2k6ICV1IHBjaWUgZ2VuOiAldVxuIiwKKwkJCQkgICAgIHN0cnVjdCBhbWRncHVf cHMgKnJwcykKK3sKKwlzdHJ1Y3QgIHNpX3BzICpwcyA9IHNpX2dldF9wcyhycHMpOworCXN0cnVj dCBydjd4eF9wbCAqcGw7CisJaW50IGk7CisKKwlhbWRncHVfZHBtX3ByaW50X2NsYXNzX2luZm8o cnBzLT5jbGFzcywgcnBzLT5jbGFzczIpOworCWFtZGdwdV9kcG1fcHJpbnRfY2FwX2luZm8ocnBz LT5jYXBzKTsKKwlEUk1fSU5GTygiXHR1dmQgICAgdmNsazogJWQgZGNsazogJWRcbiIsIHJwcy0+ dmNsaywgcnBzLT5kY2xrKTsKKwlmb3IgKGkgPSAwOyBpIDwgcHMtPnBlcmZvcm1hbmNlX2xldmVs X2NvdW50OyBpKyspIHsKKwkJcGwgPSAmcHMtPnBlcmZvcm1hbmNlX2xldmVsc1tpXTsKKwkJaWYg KGFkZXYtPmFzaWNfdHlwZSA+PSBDSElQX1RBSElUSSkKKwkJCURSTV9JTkZPKCJcdFx0cG93ZXIg bGV2ZWwgJWQgICAgc2NsazogJXUgbWNsazogJXUgdmRkYzogJXUgdmRkY2k6ICV1IHBjaWUgZ2Vu OiAldVxuIiwKIAkJCQkgaSwgcGwtPnNjbGssIHBsLT5tY2xrLCBwbC0+dmRkYywgcGwtPnZkZGNp LCBwbC0+cGNpZV9nZW4gKyAxKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg ICAgICAgICAgICBEUk1fSU5GTygiXHRcdHBvd2VyIGxldmVsICVkICAgIHNjbGs6ICV1IG1jbGs6 ICV1IHZkZGM6ICV1IHZkZGNpOiAldVxuIiwKKwkJZWxzZQorCQkJRFJNX0lORk8oIlx0XHRwb3dl ciBsZXZlbCAlZCAgICBzY2xrOiAldSBtY2xrOiAldSB2ZGRjOiAldSB2ZGRjaTogJXVcbiIsCiAJ CQkJIGksIHBsLT5zY2xrLCBwbC0+bWNsaywgcGwtPnZkZGMsIHBsLT52ZGRjaSk7Ci0gICAgICAg IH0KLSAgICAgICAgYW1kZ3B1X2RwbV9wcmludF9wc19zdGF0dXMoYWRldiwgcnBzKTsKKwl9CisJ YW1kZ3B1X2RwbV9wcmludF9wc19zdGF0dXMoYWRldiwgcnBzKTsKIH0KIAogc3RhdGljIGludCBz aV9kcG1fZWFybHlfaW5pdCh2b2lkICpoYW5kbGUpCi0tIAoyLjkuMwoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1k LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==