From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Paul Subject: [RFC v5 1/5] drm/nouveau: Add support for basic clockgating on Kepler1 Date: Tue, 30 Jan 2018 14:49:21 -0500 Message-ID: <20180130195024.18172-2-lyude@redhat.com> References: <20180130195024.18172-1-lyude@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180130195024.18172-1-lyude@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: nouveau@lists.freedesktop.org Cc: Kate Stewart , David Airlie , Greg Kroah-Hartman , Karol Herbst , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Alexandre Courbot , Ben Skeggs , Rhys Kidd List-Id: dri-devel@lists.freedesktop.org VGhpcyBhZGRzIHN1cHBvcnQgZm9yIGVuYWJsaW5nIGF1dG9tYXRpYyBjbG9ja2dhdGluZyBvbiBu dmlkaWEgR1BVcyBmb3IKS2VwbGVyMS4gV2hpbGUgdGhpcyBpcyBub3QgdGVjaG5pY2FsbHkgYSBj bG9ja2dhdGluZyBsZXZlbCwgaXQgZG9lcwplbmFibGUgY2xvY2tnYXRpbmcgdXNpbmcgdGhlIGNs b2NrZ2F0aW5nIHZhbHVlcyBpbml0aWFsbHkgc2V0IGJ5IHRoZQp2YmlvcyAod2hpY2ggc2hvdWxk IGJlIHNhZmUgdG8gdXNlKS4KClRoaXMgaW50cm9kdWNlcyB0d28gdGhlcm0gaGVscGVycyBmb3Ig Y29udHJvbGxpbmcgYmFzaWMgY2xvY2tnYXRpbmc6CgludmttX3RoZXJtX2Nsa2dhdGVfZW5hYmxl KCkgLSBlbmFibGVzIGNsb2NrZ2F0aW5nIHRocm91Z2gKCUNHX0NUUkwsIGRvbmUgYWZ0ZXIgaW5p dGlhbGl6aW5nIHRoZSBHUFUgZnVsbHkKCW52a21fdGhlcm1fY2xrZ2F0ZV9maW5pKCkgLSBwcmVw YXJlcyBjbG9ja2dhdGluZyBmb3Igc3VzcGVuZCBvcgoJZHJpdmVyIHVubG9hZAoKQSBsb3Qgb2Yg dGhpcyBjb2RlIHdhcyBvcmlnaW5hbGx5IGdvaW5nIHRvIGJlIGJhc2VkIG9mZiBvZiBmZXJtaTsK aG93ZXZlciBpdCB0dXJucyBvdXQgdGhhdCB3aGlsZSBGZXJtaSdzIHRoZSBmaXJzdCBsaW5lIG9m IEdQVXMgdGhhdAppbnRyb2R1Y2VkIHRoaXMga2luZCBvZiBwb3dlciBzYXZpbmcsIEZlcm1pIHJl cXVpcmVzIG1vcmUgZmluZSB0dW5lZApjb250cm9sIG9mIHRoZSBDR19DVFJMIHJlZ2lzdGVycyBm cm9tIHRoZSBkcml2ZXIgd2hpbGUgcmVjbG9ja2luZyB0aGF0CndlIGRvbid0IGVudGlyZWx5IHVu ZGVyc3RhbmQgeWV0LgoKRm9yIHRoZSBzaW1wbGUgcGFydHMgd2Ugd2lsbCBiZSBzaGFyaW5nIHdp dGggRmVybWkgZm9yIGNlcnRhaW4gaG93ZXZlciwKd2UgYXQgbGVhc3QgYWRkIHRob3NlIGludG8g YSBuZXcgc3ViZGV2L3RoZXJtL2dmMTAwLmggaGVhZGVyLgoKU2lnbmVkLW9mZi1ieTogTHl1ZGUg UGF1bCA8bHl1ZGVAcmVkaGF0LmNvbT4KUmV2aWV3ZWQtYnk6IE1hcnRpbiBQZXJlcyA8bWFydGlu LnBlcmVzQGZyZWUuZnI+Ci0tLQogLi4uL2dwdS9kcm0vbm91dmVhdS9pbmNsdWRlL252a20vc3Vi ZGV2L3RoZXJtLmggICAgfCAgIDUgKwogZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9lbmdp bmUvZGV2aWNlL2Jhc2UuYyAgfCAgMTcgKy0tCiBkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmtt L3N1YmRldi90aGVybS9LYnVpbGQgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9u dmttL3N1YmRldi90aGVybS9iYXNlLmMgICB8ICA1OCArKysrKysrLS0KIGRyaXZlcnMvZ3B1L2Ry bS9ub3V2ZWF1L252a20vc3ViZGV2L3RoZXJtL2dmMTAwLmggIHwgIDM1ICsrKysrKwogZHJpdmVy cy9ncHUvZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYvdGhlcm0vZ2YxMTkuYyAgfCAgIDggKy0KIGRy aXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vc3ViZGV2L3RoZXJtL2drMTA0LmMgIHwgMTM1ICsr KysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYv dGhlcm0vZ2sxMDQuaCAgfCAgNDggKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252 a20vc3ViZGV2L3RoZXJtL3ByaXYuaCAgIHwgIDE1ICsrLQogOSBmaWxlcyBjaGFuZ2VkLCAzMDEg aW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9ncHUvZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYvdGhlcm0vZ2YxMDAuaAogY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vc3ViZGV2L3RoZXJtL2drMTA0LmMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL3N1YmRldi90 aGVybS9nazEwNC5oCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvaW5jbHVk ZS9udmttL3N1YmRldi90aGVybS5oIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvaW5jbHVkZS9u dmttL3N1YmRldi90aGVybS5oCmluZGV4IGIxYWM0N2ViNzg2ZS4uMjQwYjE5YmI0NjY3IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9pbmNsdWRlL252a20vc3ViZGV2L3RoZXJt LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvaW5jbHVkZS9udmttL3N1YmRldi90aGVy bS5oCkBAIC04NSwxNyArODUsMjIgQEAgc3RydWN0IG52a21fdGhlcm0gewogCiAJaW50ICgqYXR0 cl9nZXQpKHN0cnVjdCBudmttX3RoZXJtICosIGVudW0gbnZrbV90aGVybV9hdHRyX3R5cGUpOwog CWludCAoKmF0dHJfc2V0KShzdHJ1Y3QgbnZrbV90aGVybSAqLCBlbnVtIG52a21fdGhlcm1fYXR0 cl90eXBlLCBpbnQpOworCisJYm9vbCBjbGtnYXRpbmdfZW5hYmxlZDsKIH07CiAKIGludCBudmtt X3RoZXJtX3RlbXBfZ2V0KHN0cnVjdCBudmttX3RoZXJtICopOwogaW50IG52a21fdGhlcm1fZmFu X3NlbnNlKHN0cnVjdCBudmttX3RoZXJtICopOwogaW50IG52a21fdGhlcm1fY3N0YXRlKHN0cnVj dCBudmttX3RoZXJtICosIGludCwgaW50KTsKK3ZvaWQgbnZrbV90aGVybV9jbGtnYXRlX2VuYWJs ZShzdHJ1Y3QgbnZrbV90aGVybSAqKTsKK3ZvaWQgbnZrbV90aGVybV9jbGtnYXRlX2Zpbmkoc3Ry dWN0IG52a21fdGhlcm0gKiwgYm9vbCk7CiAKIGludCBudjQwX3RoZXJtX25ldyhzdHJ1Y3QgbnZr bV9kZXZpY2UgKiwgaW50LCBzdHJ1Y3QgbnZrbV90aGVybSAqKik7CiBpbnQgbnY1MF90aGVybV9u ZXcoc3RydWN0IG52a21fZGV2aWNlICosIGludCwgc3RydWN0IG52a21fdGhlcm0gKiopOwogaW50 IGc4NF90aGVybV9uZXcoc3RydWN0IG52a21fZGV2aWNlICosIGludCwgc3RydWN0IG52a21fdGhl cm0gKiopOwogaW50IGd0MjE1X3RoZXJtX25ldyhzdHJ1Y3QgbnZrbV9kZXZpY2UgKiwgaW50LCBz dHJ1Y3QgbnZrbV90aGVybSAqKik7CiBpbnQgZ2YxMTlfdGhlcm1fbmV3KHN0cnVjdCBudmttX2Rl dmljZSAqLCBpbnQsIHN0cnVjdCBudmttX3RoZXJtICoqKTsKK2ludCBnazEwNF90aGVybV9uZXco c3RydWN0IG52a21fZGV2aWNlICosIGludCwgc3RydWN0IG52a21fdGhlcm0gKiopOwogaW50IGdt MTA3X3RoZXJtX25ldyhzdHJ1Y3QgbnZrbV9kZXZpY2UgKiwgaW50LCBzdHJ1Y3QgbnZrbV90aGVy bSAqKik7CiBpbnQgZ20yMDBfdGhlcm1fbmV3KHN0cnVjdCBudmttX2RldmljZSAqLCBpbnQsIHN0 cnVjdCBudmttX3RoZXJtICoqKTsKIGludCBncDEwMF90aGVybV9uZXcoc3RydWN0IG52a21fZGV2 aWNlICosIGludCwgc3RydWN0IG52a21fdGhlcm0gKiopOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL25vdXZlYXUvbnZrbS9lbmdpbmUvZGV2aWNlL2Jhc2UuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9ub3V2ZWF1L252a20vZW5naW5lL2RldmljZS9iYXNlLmMKaW5kZXggMDhlNzdjZDU1ZTZlLi43 NGJkMDliMWM4OTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vZW5n aW5lL2RldmljZS9iYXNlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9lbmdp bmUvZGV2aWNlL2Jhc2UuYwpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgPGNvcmUvb3B0aW9u Lmg+CiAKICNpbmNsdWRlIDxzdWJkZXYvYmlvcy5oPgorI2luY2x1ZGUgPHN1YmRldi90aGVybS5o PgogCiBzdGF0aWMgREVGSU5FX01VVEVYKG52X2RldmljZXNfbXV0ZXgpOwogc3RhdGljIExJU1Rf SEVBRChudl9kZXZpY2VzKTsKQEAgLTE2ODIsNyArMTY4Myw3IEBAIG52ZTRfY2hpcHNldCA9IHsK IAkubXhtID0gbnY1MF9teG1fbmV3LAogCS5wY2kgPSBnazEwNF9wY2lfbmV3LAogCS5wbXUgPSBn azEwNF9wbXVfbmV3LAotCS50aGVybSA9IGdmMTE5X3RoZXJtX25ldywKKwkudGhlcm0gPSBnazEw NF90aGVybV9uZXcsCiAJLnRpbWVyID0gbnY0MV90aW1lcl9uZXcsCiAJLnRvcCA9IGdrMTA0X3Rv cF9uZXcsCiAJLnZvbHQgPSBnazEwNF92b2x0X25ldywKQEAgLTE3MjEsNyArMTcyMiw3IEBAIG52 ZTZfY2hpcHNldCA9IHsKIAkubXhtID0gbnY1MF9teG1fbmV3LAogCS5wY2kgPSBnazEwNF9wY2lf bmV3LAogCS5wbXUgPSBnazEwNF9wbXVfbmV3LAotCS50aGVybSA9IGdmMTE5X3RoZXJtX25ldywK KwkudGhlcm0gPSBnazEwNF90aGVybV9uZXcsCiAJLnRpbWVyID0gbnY0MV90aW1lcl9uZXcsCiAJ LnRvcCA9IGdrMTA0X3RvcF9uZXcsCiAJLnZvbHQgPSBnazEwNF92b2x0X25ldywKQEAgLTE3NjAs NyArMTc2MSw3IEBAIG52ZTdfY2hpcHNldCA9IHsKIAkubXhtID0gbnY1MF9teG1fbmV3LAogCS5w Y2kgPSBnazEwNF9wY2lfbmV3LAogCS5wbXUgPSBnazEwNF9wbXVfbmV3LAotCS50aGVybSA9IGdm MTE5X3RoZXJtX25ldywKKwkudGhlcm0gPSBnazEwNF90aGVybV9uZXcsCiAJLnRpbWVyID0gbnY0 MV90aW1lcl9uZXcsCiAJLnRvcCA9IGdrMTA0X3RvcF9uZXcsCiAJLnZvbHQgPSBnazEwNF92b2x0 X25ldywKQEAgLTE4MjQsNyArMTgyNSw3IEBAIG52ZjBfY2hpcHNldCA9IHsKIAkubXhtID0gbnY1 MF9teG1fbmV3LAogCS5wY2kgPSBnazEwNF9wY2lfbmV3LAogCS5wbXUgPSBnazExMF9wbXVfbmV3 LAotCS50aGVybSA9IGdmMTE5X3RoZXJtX25ldywKKwkudGhlcm0gPSBnazEwNF90aGVybV9uZXcs CiAJLnRpbWVyID0gbnY0MV90aW1lcl9uZXcsCiAJLnRvcCA9IGdrMTA0X3RvcF9uZXcsCiAJLnZv bHQgPSBnazEwNF92b2x0X25ldywKQEAgLTE4NjIsNyArMTg2Myw3IEBAIG52ZjFfY2hpcHNldCA9 IHsKIAkubXhtID0gbnY1MF9teG1fbmV3LAogCS5wY2kgPSBnazEwNF9wY2lfbmV3LAogCS5wbXUg PSBnazExMF9wbXVfbmV3LAotCS50aGVybSA9IGdmMTE5X3RoZXJtX25ldywKKwkudGhlcm0gPSBn azEwNF90aGVybV9uZXcsCiAJLnRpbWVyID0gbnY0MV90aW1lcl9uZXcsCiAJLnRvcCA9IGdrMTA0 X3RvcF9uZXcsCiAJLnZvbHQgPSBnazEwNF92b2x0X25ldywKQEAgLTE5MDAsNyArMTkwMSw3IEBA IG52MTA2X2NoaXBzZXQgPSB7CiAJLm14bSA9IG52NTBfbXhtX25ldywKIAkucGNpID0gZ2sxMDRf cGNpX25ldywKIAkucG11ID0gZ2syMDhfcG11X25ldywKLQkudGhlcm0gPSBnZjExOV90aGVybV9u ZXcsCisJLnRoZXJtID0gZ2sxMDRfdGhlcm1fbmV3LAogCS50aW1lciA9IG52NDFfdGltZXJfbmV3 LAogCS50b3AgPSBnazEwNF90b3BfbmV3LAogCS52b2x0ID0gZ2sxMDRfdm9sdF9uZXcsCkBAIC0x OTM4LDcgKzE5MzksNyBAQCBudjEwOF9jaGlwc2V0ID0gewogCS5teG0gPSBudjUwX214bV9uZXcs CiAJLnBjaSA9IGdrMTA0X3BjaV9uZXcsCiAJLnBtdSA9IGdrMjA4X3BtdV9uZXcsCi0JLnRoZXJt ID0gZ2YxMTlfdGhlcm1fbmV3LAorCS50aGVybSA9IGdrMTA0X3RoZXJtX25ldywKIAkudGltZXIg PSBudjQxX3RpbWVyX25ldywKIAkudG9wID0gZ2sxMDRfdG9wX25ldywKIAkudm9sdCA9IGdrMTA0 X3ZvbHRfbmV3LApAQCAtMjUwOCw2ICsyNTA5LDcgQEAgbnZrbV9kZXZpY2VfZmluaShzdHJ1Y3Qg bnZrbV9kZXZpY2UgKmRldmljZSwgYm9vbCBzdXNwZW5kKQogCQl9CiAJfQogCisJbnZrbV90aGVy bV9jbGtnYXRlX2ZpbmkoZGV2aWNlLT50aGVybSwgc3VzcGVuZCk7CiAKIAlpZiAoZGV2aWNlLT5m dW5jLT5maW5pKQogCQlkZXZpY2UtPmZ1bmMtPmZpbmkoZGV2aWNlLCBzdXNwZW5kKTsKQEAgLTI1 OTcsNiArMjU5OSw3IEBAIG52a21fZGV2aWNlX2luaXQoc3RydWN0IG52a21fZGV2aWNlICpkZXZp Y2UpCiAJfQogCiAJbnZrbV9hY3BpX2luaXQoZGV2aWNlKTsKKwludmttX3RoZXJtX2Nsa2dhdGVf ZW5hYmxlKGRldmljZS0+dGhlcm0pOwogCiAJdGltZSA9IGt0aW1lX3RvX3VzKGt0aW1lX2dldCgp KSAtIHRpbWU7CiAJbnZkZXZfdHJhY2UoZGV2aWNlLCAiaW5pdCBjb21wbGV0ZWQgaW4gJWxsZHVz XG4iLCB0aW1lKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vc3Vi ZGV2L3RoZXJtL0tidWlsZCBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vc3ViZGV2L3Ro ZXJtL0tidWlsZAppbmRleCA3YmE1NmIxMmJhZGQuLjRiYWM0NzcyZDhlZCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYvdGhlcm0vS2J1aWxkCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vc3ViZGV2L3RoZXJtL0tidWlsZApAQCAtMTAsNiAr MTAsNyBAQCBudmttLXkgKz0gbnZrbS9zdWJkZXYvdGhlcm0vbnY1MC5vCiBudmttLXkgKz0gbnZr bS9zdWJkZXYvdGhlcm0vZzg0Lm8KIG52a20teSArPSBudmttL3N1YmRldi90aGVybS9ndDIxNS5v CiBudmttLXkgKz0gbnZrbS9zdWJkZXYvdGhlcm0vZ2YxMTkubworbnZrbS15ICs9IG52a20vc3Vi ZGV2L3RoZXJtL2drMTA0Lm8KIG52a20teSArPSBudmttL3N1YmRldi90aGVybS9nbTEwNy5vCiBu dmttLXkgKz0gbnZrbS9zdWJkZXYvdGhlcm0vZ20yMDAubwogbnZrbS15ICs9IG52a20vc3ViZGV2 L3RoZXJtL2dwMTAwLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20v c3ViZGV2L3RoZXJtL2Jhc2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vc3ViZGV2 L3RoZXJtL2Jhc2UuYwppbmRleCBmMjdmYzZkMGQ0YzYuLmNmMWQ1YWYzMGY1ZiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYvdGhlcm0vYmFzZS5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vc3ViZGV2L3RoZXJtL2Jhc2UuYwpAQCAtMjEs NiArMjEsNyBAQAogICoKICAqIEF1dGhvcnM6IE1hcnRpbiBQZXJlcwogICovCisjaW5jbHVkZSA8 bnZrbS9jb3JlL29wdGlvbi5oPgogI2luY2x1ZGUgInByaXYuaCIKIAogaW50CkBAIC0yOTcsNiAr Mjk4LDM4IEBAIG52a21fdGhlcm1fYXR0cl9zZXQoc3RydWN0IG52a21fdGhlcm0gKnRoZXJtLAog CXJldHVybiAtRUlOVkFMOwogfQogCit2b2lkCitudmttX3RoZXJtX2Nsa2dhdGVfZW5hYmxlKHN0 cnVjdCBudmttX3RoZXJtICp0aGVybSkKK3sKKwlpZiAoIXRoZXJtLT5mdW5jLT5jbGtnYXRlX2Vu YWJsZSB8fCAhdGhlcm0tPmNsa2dhdGluZ19lbmFibGVkKQorCQlyZXR1cm47CisKKwludmttX2Rl YnVnKCZ0aGVybS0+c3ViZGV2LAorCQkgICAiRW5hYmxpbmcgY2xvY2tnYXRpbmdcbiIpOworCXRo ZXJtLT5mdW5jLT5jbGtnYXRlX2VuYWJsZSh0aGVybSk7Cit9CisKK3ZvaWQKK252a21fdGhlcm1f Y2xrZ2F0ZV9maW5pKHN0cnVjdCBudmttX3RoZXJtICp0aGVybSwgYm9vbCBzdXNwZW5kKQorewor CWlmICghdGhlcm0tPmZ1bmMtPmNsa2dhdGVfZmluaSB8fCAhdGhlcm0tPmNsa2dhdGluZ19lbmFi bGVkKQorCQlyZXR1cm47CisKKwludmttX2RlYnVnKCZ0aGVybS0+c3ViZGV2LAorCQkgICAiUHJl cGFyaW5nIGNsb2NrZ2F0aW5nIGZvciAlc1xuIiwKKwkJICAgc3VzcGVuZCA/ICJzdXNwZW5kIiA6 ICJmaW5pIik7CisJdGhlcm0tPmZ1bmMtPmNsa2dhdGVfZmluaSh0aGVybSwgc3VzcGVuZCk7Cit9 CisKK3N0YXRpYyB2b2lkCitudmttX3RoZXJtX2Nsa2dhdGVfb25laW5pdChzdHJ1Y3QgbnZrbV90 aGVybSAqdGhlcm0pCit7CisJaWYgKCF0aGVybS0+ZnVuYy0+Y2xrZ2F0ZV9lbmFibGUgfHwgIXRo ZXJtLT5jbGtnYXRpbmdfZW5hYmxlZCkKKwkJcmV0dXJuOworCisJbnZrbV9pbmZvKCZ0aGVybS0+ c3ViZGV2LCAiQ2xvY2tnYXRpbmcgZW5hYmxlZFxuIik7Cit9CisKIHN0YXRpYyB2b2lkCiBudmtt X3RoZXJtX2ludHIoc3RydWN0IG52a21fc3ViZGV2ICpzdWJkZXYpCiB7CkBAIC0zMzMsNiArMzY2 LDcgQEAgbnZrbV90aGVybV9vbmVpbml0KHN0cnVjdCBudmttX3N1YmRldiAqc3ViZGV2KQogCW52 a21fdGhlcm1fZmFuX2N0b3IodGhlcm0pOwogCW52a21fdGhlcm1fZmFuX21vZGUodGhlcm0sIE5W S01fVEhFUk1fQ1RSTF9BVVRPKTsKIAludmttX3RoZXJtX3NlbnNvcl9wcmVpbml0KHRoZXJtKTsK KwludmttX3RoZXJtX2Nsa2dhdGVfb25laW5pdCh0aGVybSk7CiAJcmV0dXJuIDA7CiB9CiAKQEAg LTM3NCwxNSArNDA4LDEwIEBAIG52a21fdGhlcm0gPSB7CiAJLmludHIgPSBudmttX3RoZXJtX2lu dHIsCiB9OwogCi1pbnQKLW52a21fdGhlcm1fbmV3Xyhjb25zdCBzdHJ1Y3QgbnZrbV90aGVybV9m dW5jICpmdW5jLCBzdHJ1Y3QgbnZrbV9kZXZpY2UgKmRldmljZSwKLQkJaW50IGluZGV4LCBzdHJ1 Y3QgbnZrbV90aGVybSAqKnB0aGVybSkKK3ZvaWQKK252a21fdGhlcm1fY3RvcihzdHJ1Y3QgbnZr bV90aGVybSAqdGhlcm0sIHN0cnVjdCBudmttX2RldmljZSAqZGV2aWNlLAorCQlpbnQgaW5kZXgs IGNvbnN0IHN0cnVjdCBudmttX3RoZXJtX2Z1bmMgKmZ1bmMpCiB7Ci0Jc3RydWN0IG52a21fdGhl cm0gKnRoZXJtOwotCi0JaWYgKCEodGhlcm0gPSAqcHRoZXJtID0ga3phbGxvYyhzaXplb2YoKnRo ZXJtKSwgR0ZQX0tFUk5FTCkpKQotCQlyZXR1cm4gLUVOT01FTTsKLQogCW52a21fc3ViZGV2X2N0 b3IoJm52a21fdGhlcm0sIGRldmljZSwgaW5kZXgsICZ0aGVybS0+c3ViZGV2KTsKIAl0aGVybS0+ ZnVuYyA9IGZ1bmM7CiAKQEAgLTM5NSw1ICs0MjQsMTggQEAgbnZrbV90aGVybV9uZXdfKGNvbnN0 IHN0cnVjdCBudmttX3RoZXJtX2Z1bmMgKmZ1bmMsIHN0cnVjdCBudmttX2RldmljZSAqZGV2aWNl LAogCXRoZXJtLT5hdHRyX2dldCA9IG52a21fdGhlcm1fYXR0cl9nZXQ7CiAJdGhlcm0tPmF0dHJf c2V0ID0gbnZrbV90aGVybV9hdHRyX3NldDsKIAl0aGVybS0+bW9kZSA9IHRoZXJtLT5zdXNwZW5k ID0gLTE7IC8qIHVuZGVmaW5lZCAqLworCXRoZXJtLT5jbGtnYXRpbmdfZW5hYmxlZCA9IGZhbHNl OworfQorCitpbnQKK252a21fdGhlcm1fbmV3Xyhjb25zdCBzdHJ1Y3QgbnZrbV90aGVybV9mdW5j ICpmdW5jLCBzdHJ1Y3QgbnZrbV9kZXZpY2UgKmRldmljZSwKKwkJaW50IGluZGV4LCBzdHJ1Y3Qg bnZrbV90aGVybSAqKnB0aGVybSkKK3sKKwlzdHJ1Y3QgbnZrbV90aGVybSAqdGhlcm07CisKKwlp ZiAoISh0aGVybSA9ICpwdGhlcm0gPSBremFsbG9jKHNpemVvZigqdGhlcm0pLCBHRlBfS0VSTkVM KSkpCisJCXJldHVybiAtRU5PTUVNOworCisJbnZrbV90aGVybV9jdG9yKHRoZXJtLCBkZXZpY2Us IGluZGV4LCBmdW5jKTsKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9ub3V2ZWF1L252a20vc3ViZGV2L3RoZXJtL2dmMTAwLmggYi9kcml2ZXJzL2dwdS9kcm0vbm91 dmVhdS9udmttL3N1YmRldi90aGVybS9nZjEwMC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMC4uY2ZiMjVhZjc3YzYwCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9n cHUvZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYvdGhlcm0vZ2YxMDAuaApAQCAtMCwwICsxLDM1IEBA CisvKgorICogQ29weXJpZ2h0IDIwMTggUmVkIEhhdCBJbmMuCisgKgorICogUGVybWlzc2lvbiBp cyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5n IGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9u IGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRo b3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmln aHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3Vi bGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBw ZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRv IHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJv dmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBp bmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUg U29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElO RyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAor ICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4g IElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQ09QWVJJR0hUIEhPTERFUihTKSBPUiBBVVRIT1Io UykgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKKyAqIE9USEVSIExJQUJJTElU WSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAor ICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FS RSBPUiBUSEUgVVNFIE9SCisgKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgor ICogQXV0aG9yczogTHl1ZGUgUGF1bAorICovCisKKyNpZm5kZWYgX19HRjEwMF9USEVSTV9IX18K KyNkZWZpbmUgX19HRjEwMF9USEVSTV9IX18KKworI2luY2x1ZGUgPGNvcmUvZGV2aWNlLmg+CisK K3N0cnVjdCBnZjEwMF9pZGxlX2ZpbHRlciB7CisJdTMyIGZlY3M7CisJdTMyIGh1Ym1tdTsKK307 CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9zdWJk ZXYvdGhlcm0vZ2YxMTkuYyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vc3ViZGV2L3Ro ZXJtL2dmMTE5LmMKaW5kZXggMDZkY2ZkNmVlOTY2Li4wOTgxYjAyNzkwZTIgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vc3ViZGV2L3RoZXJtL2dmMTE5LmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYvdGhlcm0vZ2YxMTkuYwpAQCAtNDks NyArNDksNyBAQCBwd21faW5mbyhzdHJ1Y3QgbnZrbV90aGVybSAqdGhlcm0sIGludCBsaW5lKQog CXJldHVybiAtRU5PREVWOwogfQogCi1zdGF0aWMgaW50CitpbnQKIGdmMTE5X2Zhbl9wd21fY3Ry bChzdHJ1Y3QgbnZrbV90aGVybSAqdGhlcm0sIGludCBsaW5lLCBib29sIGVuYWJsZSkKIHsKIAlz dHJ1Y3QgbnZrbV9kZXZpY2UgKmRldmljZSA9IHRoZXJtLT5zdWJkZXYuZGV2aWNlOwpAQCAtNjMs NyArNjMsNyBAQCBnZjExOV9mYW5fcHdtX2N0cmwoc3RydWN0IG52a21fdGhlcm0gKnRoZXJtLCBp bnQgbGluZSwgYm9vbCBlbmFibGUpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQKK2ludAog Z2YxMTlfZmFuX3B3bV9nZXQoc3RydWN0IG52a21fdGhlcm0gKnRoZXJtLCBpbnQgbGluZSwgdTMy ICpkaXZzLCB1MzIgKmR1dHkpCiB7CiAJc3RydWN0IG52a21fZGV2aWNlICpkZXZpY2UgPSB0aGVy bS0+c3ViZGV2LmRldmljZTsKQEAgLTg1LDcgKzg1LDcgQEAgZ2YxMTlfZmFuX3B3bV9nZXQoc3Ry dWN0IG52a21fdGhlcm0gKnRoZXJtLCBpbnQgbGluZSwgdTMyICpkaXZzLCB1MzIgKmR1dHkpCiAJ cmV0dXJuIC1FSU5WQUw7CiB9CiAKLXN0YXRpYyBpbnQKK2ludAogZ2YxMTlfZmFuX3B3bV9zZXQo c3RydWN0IG52a21fdGhlcm0gKnRoZXJtLCBpbnQgbGluZSwgdTMyIGRpdnMsIHUzMiBkdXR5KQog ewogCXN0cnVjdCBudmttX2RldmljZSAqZGV2aWNlID0gdGhlcm0tPnN1YmRldi5kZXZpY2U7CkBA IC0xMDIsNyArMTAyLDcgQEAgZ2YxMTlfZmFuX3B3bV9zZXQoc3RydWN0IG52a21fdGhlcm0gKnRo ZXJtLCBpbnQgbGluZSwgdTMyIGRpdnMsIHUzMiBkdXR5KQogCXJldHVybiAwOwogfQogCi1zdGF0 aWMgaW50CitpbnQKIGdmMTE5X2Zhbl9wd21fY2xvY2soc3RydWN0IG52a21fdGhlcm0gKnRoZXJt LCBpbnQgbGluZSkKIHsKIAlzdHJ1Y3QgbnZrbV9kZXZpY2UgKmRldmljZSA9IHRoZXJtLT5zdWJk ZXYuZGV2aWNlOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9zdWJk ZXYvdGhlcm0vZ2sxMDQuYyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vc3ViZGV2L3Ro ZXJtL2drMTA0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43OTgw NmE3NTc4OTMKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmtt L3N1YmRldi90aGVybS9nazEwNC5jCkBAIC0wLDAgKzEsMTM1IEBACisvKgorICogQ29weXJpZ2h0 IDIwMTggUmVkIEhhdCBJbmMuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwg ZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhp cyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3 YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBp bmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwg bW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9v ciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3 aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRo ZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGlj ZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxs IGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICog VEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5Z IEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQg VE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxM CisgKiBUSEUgQ09QWVJJR0hUIEhPTERFUihTKSBPUiBBVVRIT1IoUykgQkUgTElBQkxFIEZPUiBB TlkgQ0xBSU0sIERBTUFHRVMgT1IKKyAqIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBB Q1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAorICogQVJJU0lORyBGUk9NLCBP VVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCisg KiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgorICogQXV0aG9yczogTHl1ZGUg UGF1bAorICovCisjaW5jbHVkZSA8Y29yZS9kZXZpY2UuaD4KKworI2luY2x1ZGUgInByaXYuaCIK KyNpbmNsdWRlICJnazEwNC5oIgorCit2b2lkCitnazEwNF9jbGtnYXRlX2VuYWJsZShzdHJ1Y3Qg bnZrbV90aGVybSAqYmFzZSkKK3sKKwlzdHJ1Y3QgZ2sxMDRfdGhlcm0gKnRoZXJtID0gZ2sxMDRf dGhlcm0oYmFzZSk7CisJc3RydWN0IG52a21fZGV2aWNlICpkZXYgPSB0aGVybS0+YmFzZS5zdWJk ZXYuZGV2aWNlOworCWNvbnN0IHN0cnVjdCBnazEwNF9jbGtnYXRlX2VuZ2luZV9pbmZvICpvcmRl ciA9IHRoZXJtLT5jbGtnYXRlX29yZGVyOworCWludCBpOworCisJLyogUHJvZ3JhbSBFTkdfTUFO VCwgRU5HX0ZJTFRFUiAqLworCWZvciAoaSA9IDA7IG9yZGVyW2ldLmVuZ2luZSAhPSBOVktNX1NV QkRFVl9OUjsgaSsrKSB7CisJCWlmICghbnZrbV9kZXZpY2Vfc3ViZGV2KGRldiwgb3JkZXJbaV0u ZW5naW5lKSkKKwkJCWNvbnRpbnVlOworCisJCW52a21fbWFzayhkZXYsIDB4MjAyMDAgKyBvcmRl cltpXS5vZmZzZXQsIDB4ZmYwMCwgMHg0NTAwKTsKKwl9CisKKwkvKiBtYWdpYyAqLworCW52a21f d3IzMihkZXYsIDB4MDIwMjg4LCB0aGVybS0+aWRsZV9maWx0ZXItPmZlY3MpOworCW52a21fd3Iz MihkZXYsIDB4MDIwMjhjLCB0aGVybS0+aWRsZV9maWx0ZXItPmh1Ym1tdSk7CisKKwkvKiBFbmFi bGUgY2xvY2tnYXRpbmcgKEVOR19DTEsgPSBSVU4tPkFVVE8pICovCisJZm9yIChpID0gMDsgb3Jk ZXJbaV0uZW5naW5lICE9IE5WS01fU1VCREVWX05SOyBpKyspIHsKKwkJaWYgKCFudmttX2Rldmlj ZV9zdWJkZXYoZGV2LCBvcmRlcltpXS5lbmdpbmUpKQorCQkJY29udGludWU7CisKKwkJbnZrbV9t YXNrKGRldiwgMHgyMDIwMCArIG9yZGVyW2ldLm9mZnNldCwgMHgwMGZmLCAweDAwNDUpOworCX0K K30KKwordm9pZAorZ2sxMDRfY2xrZ2F0ZV9maW5pKHN0cnVjdCBudmttX3RoZXJtICpiYXNlLCBi b29sIHN1c3BlbmQpCit7CisJc3RydWN0IGdrMTA0X3RoZXJtICp0aGVybSA9IGdrMTA0X3RoZXJt KGJhc2UpOworCXN0cnVjdCBudmttX2RldmljZSAqZGV2ID0gdGhlcm0tPmJhc2Uuc3ViZGV2LmRl dmljZTsKKwljb25zdCBzdHJ1Y3QgZ2sxMDRfY2xrZ2F0ZV9lbmdpbmVfaW5mbyAqb3JkZXIgPSB0 aGVybS0+Y2xrZ2F0ZV9vcmRlcjsKKwlpbnQgaTsKKworCS8qIEVOR19DTEsgPSBBVVRPLT5SVU4s IEVOR19QV1IgPSBSVU4tPkFVVE8gKi8KKwlmb3IgKGkgPSAwOyBvcmRlcltpXS5lbmdpbmUgIT0g TlZLTV9TVUJERVZfTlI7IGkrKykgeworCQlpZiAoIW52a21fZGV2aWNlX3N1YmRldihkZXYsIG9y ZGVyW2ldLmVuZ2luZSkpCisJCQljb250aW51ZTsKKworCQludmttX21hc2soZGV2LCAweDIwMjAw ICsgb3JkZXJbaV0ub2Zmc2V0LCAweGZmLCAweDU0KTsKKwl9Cit9CisKK2NvbnN0IHN0cnVjdCBn azEwNF9jbGtnYXRlX2VuZ2luZV9pbmZvIGdrMTA0X2Nsa2dhdGVfZW5naW5lX2luZm9bXSA9IHsK Kwl7IE5WS01fRU5HSU5FX0dSLCAgICAgMHgwMCB9LAorCXsgTlZLTV9FTkdJTkVfTVNQREVDLCAw eDA0IH0sCisJeyBOVktNX0VOR0lORV9NU1BQUCwgIDB4MDggfSwKKwl7IE5WS01fRU5HSU5FX01T VkxELCAgMHgwYyB9LAorCXsgTlZLTV9FTkdJTkVfQ0UwLCAgICAweDEwIH0sCisJeyBOVktNX0VO R0lORV9DRTEsICAgIDB4MTQgfSwKKwl7IE5WS01fRU5HSU5FX01TRU5DLCAgMHgxOCB9LAorCXsg TlZLTV9FTkdJTkVfQ0UyLCAgICAweDFjIH0sCisJeyBOVktNX1NVQkRFVl9OUiwgMCB9LAorfTsK KworY29uc3Qgc3RydWN0IGdmMTAwX2lkbGVfZmlsdGVyIGdrMTA0X2lkbGVfZmlsdGVyID0gewor CS5mZWNzID0gMHgwMDAwMTAwMCwKKwkuaHVibW11ID0gMHgwMDAwMTAwMCwKK307CisKK3N0YXRp YyBjb25zdCBzdHJ1Y3QgbnZrbV90aGVybV9mdW5jCitnazEwNF90aGVybV9mdW5jID0geworCS5p bml0ID0gZ2YxMTlfdGhlcm1faW5pdCwKKwkuZmluaSA9IGc4NF90aGVybV9maW5pLAorCS5wd21f Y3RybCA9IGdmMTE5X2Zhbl9wd21fY3RybCwKKwkucHdtX2dldCA9IGdmMTE5X2Zhbl9wd21fZ2V0 LAorCS5wd21fc2V0ID0gZ2YxMTlfZmFuX3B3bV9zZXQsCisJLnB3bV9jbG9jayA9IGdmMTE5X2Zh bl9wd21fY2xvY2ssCisJLnRlbXBfZ2V0ID0gZzg0X3RlbXBfZ2V0LAorCS5mYW5fc2Vuc2UgPSBn dDIxNV90aGVybV9mYW5fc2Vuc2UsCisJLnByb2dyYW1fYWxhcm1zID0gbnZrbV90aGVybV9wcm9n cmFtX2FsYXJtc19wb2xsaW5nLAorCS5jbGtnYXRlX2VuYWJsZSA9IGdrMTA0X2Nsa2dhdGVfZW5h YmxlLAorCS5jbGtnYXRlX2ZpbmkgPSBnazEwNF9jbGtnYXRlX2ZpbmksCit9OworCitzdGF0aWMg aW50CitnazEwNF90aGVybV9uZXdfKGNvbnN0IHN0cnVjdCBudmttX3RoZXJtX2Z1bmMgKmZ1bmMs CisJCSBzdHJ1Y3QgbnZrbV9kZXZpY2UgKmRldmljZSwKKwkJIGludCBpbmRleCwKKwkJIGNvbnN0 IHN0cnVjdCBnazEwNF9jbGtnYXRlX2VuZ2luZV9pbmZvICpjbGtnYXRlX29yZGVyLAorCQkgY29u c3Qgc3RydWN0IGdmMTAwX2lkbGVfZmlsdGVyICppZGxlX2ZpbHRlciwKKwkJIHN0cnVjdCBudmtt X3RoZXJtICoqcHRoZXJtKQoreworCXN0cnVjdCBnazEwNF90aGVybSAqdGhlcm0gPSBremFsbG9j KHNpemVvZigqdGhlcm0pLCBHRlBfS0VSTkVMKTsKKworCWlmICghdGhlcm0pCisJCXJldHVybiAt RU5PTUVNOworCisJbnZrbV90aGVybV9jdG9yKCZ0aGVybS0+YmFzZSwgZGV2aWNlLCBpbmRleCwg ZnVuYyk7CisJKnB0aGVybSA9ICZ0aGVybS0+YmFzZTsKKwl0aGVybS0+Y2xrZ2F0ZV9vcmRlciA9 IGNsa2dhdGVfb3JkZXI7CisJdGhlcm0tPmlkbGVfZmlsdGVyID0gaWRsZV9maWx0ZXI7CisKKwly ZXR1cm4gMDsKK30KKworaW50CitnazEwNF90aGVybV9uZXcoc3RydWN0IG52a21fZGV2aWNlICpk ZXZpY2UsCisJCWludCBpbmRleCwgc3RydWN0IG52a21fdGhlcm0gKipwdGhlcm0pCit7CisJcmV0 dXJuIGdrMTA0X3RoZXJtX25ld18oJmdrMTA0X3RoZXJtX2Z1bmMsIGRldmljZSwgaW5kZXgsCisJ CQkJZ2sxMDRfY2xrZ2F0ZV9lbmdpbmVfaW5mbywgJmdrMTA0X2lkbGVfZmlsdGVyLAorCQkJCXB0 aGVybSk7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL3N1YmRl di90aGVybS9nazEwNC5oIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYvdGhl cm0vZ2sxMDQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjI5M2U3 NzQzYjE5YgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20v c3ViZGV2L3RoZXJtL2drMTA0LmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAy MDE4IFJlZCBIYXQgSW5jLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZy ZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMg c29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2Fy ZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5j bHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1v ZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Ig c2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hv bSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUg Zm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Ug YW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBj b3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRI RSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBL SU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRP IFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAor ICogVEhFIENPUFlSSUdIVCBIT0xERVIoUykgT1IgQVVUSE9SKFMpIEJFIExJQUJMRSBGT1IgQU5Z IENMQUlNLCBEQU1BR0VTIE9SCisgKiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNU SU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKKyAqIEFSSVNJTkcgRlJPTSwgT1VU IE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgorICog T1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIEF1dGhvcnM6IEx5dWRlIFBh dWwKKyAqLworCisjaWZuZGVmIF9fR0sxMDRfVEhFUk1fSF9fCisjZGVmaW5lIF9fR0sxMDRfVEhF Uk1fSF9fCisjZGVmaW5lIGdrMTA0X3RoZXJtKHApIChjb250YWluZXJfb2YoKHApLCBzdHJ1Y3Qg Z2sxMDRfdGhlcm0sIGJhc2UpKQorCisjaW5jbHVkZSA8c3ViZGV2L3RoZXJtLmg+CisjaW5jbHVk ZSAicHJpdi5oIgorI2luY2x1ZGUgImdmMTAwLmgiCisKK3N0cnVjdCBnazEwNF9jbGtnYXRlX2Vu Z2luZV9pbmZvIHsKKwllbnVtIG52a21fZGV2aWR4IGVuZ2luZTsKKwl1OCBvZmZzZXQ7Cit9Owor CitzdHJ1Y3QgZ2sxMDRfdGhlcm0geworCXN0cnVjdCBudmttX3RoZXJtIGJhc2U7CisKKwljb25z dCBzdHJ1Y3QgZ2sxMDRfY2xrZ2F0ZV9lbmdpbmVfaW5mbyAqY2xrZ2F0ZV9vcmRlcjsKKwljb25z dCBzdHJ1Y3QgZ2YxMDBfaWRsZV9maWx0ZXIgKmlkbGVfZmlsdGVyOworfTsKKworZXh0ZXJuIGNv bnN0IHN0cnVjdCBnazEwNF9jbGtnYXRlX2VuZ2luZV9pbmZvIGdrMTA0X2Nsa2dhdGVfZW5naW5l X2luZm9bXTsKK2V4dGVybiBjb25zdCBzdHJ1Y3QgZ2YxMDBfaWRsZV9maWx0ZXIgZ2sxMDRfaWRs ZV9maWx0ZXI7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUv bnZrbS9zdWJkZXYvdGhlcm0vcHJpdi5oIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9z dWJkZXYvdGhlcm0vcHJpdi5oCmluZGV4IDFmNDZlMzcxZDdjNC4uZjMwMjAyZGQ4OGU3IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL3N1YmRldi90aGVybS9wcml2LmgK KysrIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYvdGhlcm0vcHJpdi5oCkBA IC0zMiw2ICszMiw4IEBACiAKIGludCBudmttX3RoZXJtX25ld18oY29uc3Qgc3RydWN0IG52a21f dGhlcm1fZnVuYyAqLCBzdHJ1Y3QgbnZrbV9kZXZpY2UgKiwKIAkJICAgIGludCBpbmRleCwgc3Ry dWN0IG52a21fdGhlcm0gKiopOwordm9pZCBudmttX3RoZXJtX2N0b3Ioc3RydWN0IG52a21fdGhl cm0gKnRoZXJtLCBzdHJ1Y3QgbnZrbV9kZXZpY2UgKmRldmljZSwKKwkJICAgICBpbnQgaW5kZXgs IGNvbnN0IHN0cnVjdCBudmttX3RoZXJtX2Z1bmMgKmZ1bmMpOwogCiBzdHJ1Y3QgbnZrbV9mYW4g ewogCXN0cnVjdCBudmttX3RoZXJtICpwYXJlbnQ7CkBAIC02Niw4ICs2OCw2IEBAIGludCBudmtt X3RoZXJtX2Zhbl9zZXQoc3RydWN0IG52a21fdGhlcm0gKiwgYm9vbCBub3csIGludCBwZXJjZW50 KTsKIGludCBudmttX3RoZXJtX2Zhbl91c2VyX2dldChzdHJ1Y3QgbnZrbV90aGVybSAqKTsKIGlu dCBudmttX3RoZXJtX2Zhbl91c2VyX3NldChzdHJ1Y3QgbnZrbV90aGVybSAqLCBpbnQgcGVyY2Vu dCk7CiAKLWludCBudmttX3RoZXJtX3ByZWluaXQoc3RydWN0IG52a21fdGhlcm0gKik7Ci0KIGlu dCAgbnZrbV90aGVybV9zZW5zb3JfaW5pdChzdHJ1Y3QgbnZrbV90aGVybSAqKTsKIGludCAgbnZr bV90aGVybV9zZW5zb3JfZmluaShzdHJ1Y3QgbnZrbV90aGVybSAqLCBib29sIHN1c3BlbmQpOwog dm9pZCBudmttX3RoZXJtX3NlbnNvcl9wcmVpbml0KHN0cnVjdCBudmttX3RoZXJtICopOwpAQCAt OTYsNiArOTYsOSBAQCBzdHJ1Y3QgbnZrbV90aGVybV9mdW5jIHsKIAlpbnQgKCpmYW5fc2Vuc2Up KHN0cnVjdCBudmttX3RoZXJtICopOwogCiAJdm9pZCAoKnByb2dyYW1fYWxhcm1zKShzdHJ1Y3Qg bnZrbV90aGVybSAqKTsKKworCXZvaWQgKCpjbGtnYXRlX2VuYWJsZSkoc3RydWN0IG52a21fdGhl cm0gKik7CisJdm9pZCAoKmNsa2dhdGVfZmluaSkoc3RydWN0IG52a21fdGhlcm0gKiwgYm9vbCk7 CiB9OwogCiB2b2lkIG52NDBfdGhlcm1faW50cihzdHJ1Y3QgbnZrbV90aGVybSAqKTsKQEAgLTEx Miw4ICsxMTUsMTYgQEAgdm9pZCBnODRfdGhlcm1fZmluaShzdHJ1Y3QgbnZrbV90aGVybSAqKTsK IGludCBndDIxNV90aGVybV9mYW5fc2Vuc2Uoc3RydWN0IG52a21fdGhlcm0gKik7CiAKIHZvaWQg Zzg0X3RoZXJtX2luaXQoc3RydWN0IG52a21fdGhlcm0gKik7CisKK2ludCBnZjExOV9mYW5fcHdt X2N0cmwoc3RydWN0IG52a21fdGhlcm0gKiwgaW50LCBib29sKTsKK2ludCBnZjExOV9mYW5fcHdt X2dldChzdHJ1Y3QgbnZrbV90aGVybSAqLCBpbnQsIHUzMiAqLCB1MzIgKik7CitpbnQgZ2YxMTlf ZmFuX3B3bV9zZXQoc3RydWN0IG52a21fdGhlcm0gKiwgaW50LCB1MzIsIHUzMik7CitpbnQgZ2Yx MTlfZmFuX3B3bV9jbG9jayhzdHJ1Y3QgbnZrbV90aGVybSAqLCBpbnQpOwogdm9pZCBnZjExOV90 aGVybV9pbml0KHN0cnVjdCBudmttX3RoZXJtICopOwogCit2b2lkIGdrMTA0X2Nsa2dhdGVfZW5h YmxlKHN0cnVjdCBudmttX3RoZXJtICopOwordm9pZCBnazEwNF9jbGtnYXRlX2Zpbmkoc3RydWN0 IG52a21fdGhlcm0gKiwgYm9vbCk7CisKIGludCBudmttX2ZhbnB3bV9jcmVhdGUoc3RydWN0IG52 a21fdGhlcm0gKiwgc3RydWN0IGRjYl9ncGlvX2Z1bmMgKik7CiBpbnQgbnZrbV9mYW50b2dfY3Jl YXRlKHN0cnVjdCBudmttX3RoZXJtICosIHN0cnVjdCBkY2JfZ3Bpb19mdW5jICopOwogaW50IG52 a21fZmFubmlsX2NyZWF0ZShzdHJ1Y3QgbnZrbV90aGVybSAqKTsKLS0gCjIuMTQuMwoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxp bmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==