From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Deucher Subject: [PATCH 06/12] drm/amd: add ACP suspend/resume functionality Date: Thu, 6 Aug 2015 10:25:06 -0400 Message-ID: <1438871112-25946-6-git-send-email-alexander.deucher@amd.com> References: <1438871112-25946-1-git-send-email-alexander.deucher@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-yk0-f178.google.com (mail-yk0-f178.google.com [209.85.160.178]) by gabe.freedesktop.org (Postfix) with ESMTPS id 037B56EBD6 for ; Thu, 6 Aug 2015 07:25:25 -0700 (PDT) Received: by ykcq64 with SMTP id q64so58593969ykc.2 for ; Thu, 06 Aug 2015 07:25:24 -0700 (PDT) In-Reply-To: <1438871112-25946-1-git-send-email-alexander.deucher@amd.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: broonie@kernel.org, airlied@gmail.com, dri-devel@lists.freedesktop.org, alsa-devel@alsa-project.org Cc: Alex Deucher , Maruthi Srinivas Bayyavarapu , lgirdwood@gmail.com, perex@perex.cz List-Id: dri-devel@lists.freedesktop.org RnJvbTogTWFydXRoaSBTcmluaXZhcyBCYXl5YXZhcmFwdSA8TWFydXRoaS5CYXl5YXZhcmFwdUBh bWQuY29tPgoKQUNQIElQIGNhbiBiZSBwb3dlcmVkIG9uIGFuZCBvZmYgZHVyaW5nIHN5c3RlbSB3 aWRlIHN1c3BlbmQvcmVzdW1lCnRyYW5zaXRpb24uIEFNRCBBU29DIFBDTSBkZXZpY2Ugd2lsbCB1 c2UgdGhpcyBtb2R1bGUgZHVyaW5nCnN5c3RlbSBzdXNwZW5kL3Jlc3VtZSBhbmQgUENNIGRldmlj ZSdzIHJ1bnRpbWUgcG0uCgpBbHNvLCB1cGRhdGVkIGNvZGUgY29tbWVudHMuCgpTaWduZWQtb2Zm LWJ5OiBNYXJ1dGhpIEJheXlhdmFyYXB1IDxtYXJ1dGhpLmJheXlhdmFyYXB1QGFtZC5jb20+ClJl dmlld2VkLWJ5OiBBbGV4IERldWNoZXIgPGFsZXhhbmRlci5kZXVjaGVyQGFtZC5jb20+ClJldmll d2VkLWJ5OiBNdXJhbGkgS3Jpc2huYSBWZW11cmkgPG11cmFsaS1rcmlzaG5hLnZlbXVyaUBhbWQu Y29tPgpTaWduZWQtb2ZmLWJ5OiBBbGV4IERldWNoZXIgPGFsZXhhbmRlci5kZXVjaGVyQGFtZC5j b20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hY3AvYWNwX2h3LmMgICAgICAgICAgfCAyMjAg KysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FjcC9h Y3BfaHcuaCAgICAgICAgICB8ICAxOSArKysKIGRyaXZlcnMvZ3B1L2RybS9hbWQvYWNwL2luY2x1 ZGUvYW1kX2FjcC5oIHwgIDE4ICsrKwogMyBmaWxlcyBjaGFuZ2VkLCAyMDQgaW5zZXJ0aW9ucygr KSwgNTMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hY3Av YWNwX2h3LmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FjcC9hY3BfaHcuYwppbmRleCAzNGJiMGZl Li44MzBhN2RhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FjcC9hY3BfaHcuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FjcC9hY3BfaHcuYwpAQCAtNDAsMTcgKzQwLDE2IEBA CiAjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KICNpbmNsdWRlIDxsaW51eC9lcnJuby5oPgogCi0j ZGVmaW5lIFZJU0xBTkRTMzBfSVZfU1JDSURfQUNQIDB4MDAwMDAwYTIKLQogI2luY2x1ZGUgImFj cF9nZnhfaWYuaCIKICNpbmNsdWRlICJhY3BfaHcuaCIKIAogI2luY2x1ZGUgImFjcF8yXzJfZC5o IgogI2luY2x1ZGUgImFjcF8yXzJfc2hfbWFzay5oIgogCisjZGVmaW5lIFZJU0xBTkRTMzBfSVZf U1JDSURfQUNQIDB4MDAwMDAwYTIKKwogLyogQ29uZmlndXJlIGEgZ2l2ZW4gZG1hIGNoYW5uZWwg cGFyYW1ldGVycyAtIGVuYWJsZS9kaXNibGUsCiAgKiBudW1iZXIgb2YgZGVzY3JpcHRvcnMsIHBy aW9yaXR5ICovCi0KIHN0YXRpYyB2b2lkIGNvbmZpZ19hY3BfZG1hX2NoYW5uZWwoc3RydWN0IGFt ZF9hY3BfZGV2aWNlICphY3BfZGV2LCB1OCBjaF9udW0sCiAJCQkJICAgdTE2IGRzY3Jfc3RydF9p ZHgsIHUxNiBudW1fZHNjcnMsCiAJCQkJICAgZW51bSBhY3BfZG1hX3ByaW9yaXR5X2xldmVsIHBy aW9yaXR5X2xldmVsKQpAQCAtNTgsMzggKzU3LDMwIEBAIHN0YXRpYyB2b2lkIGNvbmZpZ19hY3Bf ZG1hX2NoYW5uZWwoc3RydWN0IGFtZF9hY3BfZGV2aWNlICphY3BfZGV2LCB1OCBjaF9udW0sCiAJ dTMyIGRtYV9jdHJsOwogCXN0cnVjdCBhbWRfYWNwX3ByaXZhdGUgKmFjcF9wcnYgPSAoc3RydWN0 IGFtZF9hY3BfcHJpdmF0ZSAqKWFjcF9kZXY7CiAKLQkvKiByZWFkIHRoZSBkbWEgY29udHJvbCBy ZWdpc3RlciBhbmQgZGlzYWJsZSB0aGUgY2hhbm5lbCBydW4gZmllbGQgKi8KKwkvKiBkaXNhYmxl IHRoZSBjaGFubmVsIHJ1biBmaWVsZCAqLwogCWRtYV9jdHJsID0gY2dzX3JlYWRfcmVnaXN0ZXIo YWNwX3Bydi0+Y2dzX2RldmljZSwKIAkJCQkgICAgIG1tQUNQX0RNQV9DTlRMXzAgKyBjaF9udW0p OwotCS8qIGNsZWFyIHRoZSBkbWEgY2hhbm5lbCBjb250cm9sIGJpdHMgKi8KIAlkbWFfY3RybCAm PSB+QUNQX0RNQV9DTlRMXzBfX0RNQUNoUnVuX01BU0s7Ci0KIAljZ3Nfd3JpdGVfcmVnaXN0ZXIo YWNwX3Bydi0+Y2dzX2RldmljZSwgKG1tQUNQX0RNQV9DTlRMXzAgKyBjaF9udW0pLAogCQkJICAg ZG1hX2N0cmwpOwogCi0JLyogdGhlcmUgaXMgbm8gdHJhbnNmZXIgaGFwcGVuaW5nIG9uIHRoaXMg Y2hhbm5lbCBzbwotCSAqIHByb2dyYW0gRE1BQ2hEc2NyU3RySWR4IHRvIHRoZSBpbmRleCBudW1i ZXIgb2YgdGhlIGZpcnN0IGRlc2NyaXB0b3IKLQkgKiB0byBiZSBwcm9jZXNzZWQuCi0JICovCisJ LyogcHJvZ3JhbSBhIERNQSBjaGFubmVsIHdpdGggZmlyc3QgZGVzY3JpcHRvciB0byBiZSBwcm9j ZXNzZWQuICovCiAJY2dzX3dyaXRlX3JlZ2lzdGVyKGFjcF9wcnYtPmNnc19kZXZpY2UsCiAJCQkg ICAobW1BQ1BfRE1BX0RTQ1JfU1RSVF9JRFhfMCArIGNoX251bSksCiAJCQkgICAoQUNQX0RNQV9E U0NSX1NUUlRfSURYXzBfX0RNQUNoRHNjclN0cnRJZHhfTUFTSyAmCiAJCQkgICAgZHNjcl9zdHJ0 X2lkeCkpOwogCi0JLyogcHJvZ3JhbSBETUFDaERzY3JEc2NyQ250IHRvIHRoZSBudW1iZXIgb2Yg ZGVzY3JpcHRvcnMgdG8gYmUKLQkgKiBwcm9jZXNzZWQgaW4gdGhlIHRyYW5zZmVyCi0JICovCisJ LyogcHJvZ3JhbSBhIERNQSBjaGFubmVsIHdpdGggdGhlIG51bWJlciBvZiBkZXNjcmlwdG9ycyB0 byBiZQorCSAqIHByb2Nlc3NlZCBpbiB0aGUgdHJhbnNmZXIgKi8KIAljZ3Nfd3JpdGVfcmVnaXN0 ZXIoYWNwX3Bydi0+Y2dzX2RldmljZSwKIAkJCSAgIChtbUFDUF9ETUFfRFNDUl9DTlRfMCArIGNo X251bSksCiAJCQkgICAoQUNQX0RNQV9EU0NSX0NOVF8wX19ETUFDaERzY3JDbnRfTUFTSyAmIG51 bV9kc2NycykpOwogCi0JLyogc2V0IERNQUNoUHJpb0x2bCBhY2NvcmRpbmcgdG8gdGhlIHByaW9y aXR5ICovCisJLyogc2V0IERNQSBjaGFubmVsIHByaW9yaXR5ICovCiAJY2dzX3dyaXRlX3JlZ2lz dGVyKGFjcF9wcnYtPmNnc19kZXZpY2UsCShtbUFDUF9ETUFfUFJJT18wICsgY2hfbnVtKSwKIAkJ CSAgIHByaW9yaXR5X2xldmVsKTsKIH0KIAotCi0KIC8qIEluaXRpYWxpemUgdGhlIGRtYSBkZXNj cmlwdG9ycyBsb2NhdGlvbiBpbiBTUkFNIGFuZCBwYWdlIHNpemUgKi8KIHN0YXRpYyB2b2lkIGFj cF9kbWFfZGVzY3JfaW5pdChzdHJ1Y3QgYW1kX2FjcF9wcml2YXRlICphY3BfcHJ2KQogewpAQCAt MTQzLDcgKzEzNCw5IEBAIHN0YXRpYyB2b2lkIGNvbmZpZ19kbWFfZGVzY3JpcHRvcl9pbl9zcmFt KHN0cnVjdCBhbWRfYWNwX2RldmljZSAqYWNwX2RldiwKIAkJCSAgIGRlc2NyX2luZm8tPnNpemVf eGZlcl9kaXIudmFsKTsKIH0KIAotLyogSW5pdGlhbGl6ZSB0aGUgRE1BIGRlc2NyaXB0b3IgaW5m b3JtYXRpb24gKi8KKy8qIEluaXRpYWxpemUgdGhlIERNQSBkZXNjcmlwdG9yIGluZm9ybWF0aW9u IGZvciB0cmFuc2ZlciBiZXR3ZWVuCisgKiBzeXN0ZW0gbWVtb3J5IDwtPiBBQ1AgU1JBTQorICov CiBzdGF0aWMgdm9pZCBzZXRfYWNwX3N5c21lbV9kbWFfZGVzY3JpcHRvcnMoc3RydWN0IGFtZF9h Y3BfZGV2aWNlICphY3BfZGV2LAogCQkJCQkgICB1MzIgc2l6ZSwgaW50IGRpcmVjdGlvbiwKIAkJ CQkJICAgdTMyIHB0ZV9vZmZzZXQpCkBAIC0yMTUsNyArMjA4LDkgQEAgc3RhdGljIHZvaWQgc2V0 X2FjcF9zeXNtZW1fZG1hX2Rlc2NyaXB0b3JzKHN0cnVjdCBhbWRfYWNwX2RldmljZSAqYWNwX2Rl diwKIAl9CiB9CiAKLS8qIEluaXRpYWxpemUgdGhlIGkycyBkbWEgZGVzY3JpcHRvcnMgaW4gU1JB TSAqLworLyogSW5pdGlhbGl6ZSB0aGUgRE1BIGRlc2NyaXB0b3IgaW5mb3JtYXRpb24gZm9yIHRy YW5zZmVyIGJldHdlZW4KKyAqIEFDUCBTUkFNIDwtPiBJMlMKKyAqLwogc3RhdGljIHZvaWQgc2V0 X2FjcF90b19pMnNfZG1hX2Rlc2NyaXB0b3JzKHN0cnVjdCBhbWRfYWNwX2RldmljZSAqYWNwX2Rl diwKIAkJCQkJICAgdTMyIHNpemUsIGludCBkaXJlY3Rpb24pCiB7CkBAIC0yMjYsOSArMjIxLDYg QEAgc3RhdGljIHZvaWQgc2V0X2FjcF90b19pMnNfZG1hX2Rlc2NyaXB0b3JzKHN0cnVjdCBhbWRf YWNwX2RldmljZSAqYWNwX2RldiwKIAogCW51bV9kZXNjciA9IDI7CiAKLQkvKiBMZXQgSTJzIEtu b3cgdGhlIGRpcmVjdGlvbiBvZiB0cmFuc2ZlciBhbmQgc291cmNlL2Rlc3RpbmF0aW9uCi0JICog IG9mIGRhdGEKLQkgKi8KIAlkbWFkc2NyWzBdLnNpemVfeGZlcl9kaXIudmFsID0gKHUzMikgMHgw OwogCWlmIChkaXJlY3Rpb24gPT0gU1RSRUFNX1BMQVlCQUNLKSB7CiAJCWRtYV9kc2NyX2lkeCA9 IFBMQVlCQUNLX1NUQVJUX0RNQV9ERVNDUl9DSDEzOwpAQCAtMzA0LDcgKzI5Niw3IEBAIHN0YXRp YyB1MTYgZ2V0X2RzY3JfaWR4KHN0cnVjdCBhbWRfYWNwX2RldmljZSAqYWNwX2RldiwgaW50IGRp cmVjdGlvbikKIAogfQogCi0vKglDcmVhdGUgcGFnZSB0YWJsZSBlbnRyaWVzIGluIEFDUCBTUkFN IGZvciB0aGUgYWxsb2NhdGVkIG1lbW9yeSAqLworLyogQ3JlYXRlIHBhZ2UgdGFibGUgZW50cmll cyBpbiBBQ1AgU1JBTSBmb3IgdGhlIGFsbG9jYXRlZCBtZW1vcnkgKi8KIHN0YXRpYyB2b2lkIGFj cF9wdGVfY29uZmlnKHN0cnVjdCBhbWRfYWNwX2RldmljZSAqYWNwX2Rldiwgc3RydWN0IHBhZ2Ug KnBnLAogCQkJICAgdTE2IG51bV9vZl9wYWdlcywgdTMyIHB0ZV9vZmZzZXQpCiB7CkBAIC0zNDQs NyArMzM2LDYgQEAgc3RhdGljIHZvaWQgYWNwX3B0ZV9jb25maWcoc3RydWN0IGFtZF9hY3BfZGV2 aWNlICphY3BfZGV2LCBzdHJ1Y3QgcGFnZSAqcGcsCiAJfQogfQogCi0KIC8qIGVuYWJsZXMvZGlz YWJsZXMgQUNQJ3MgZXh0ZXJuYWwgaW50ZXJydXB0ICovCiBzdGF0aWMgdm9pZCBhY3BfZW5hYmxl X2V4dGVybmFsX2ludGVycnVwdHMoc3RydWN0IGFtZF9hY3BfZGV2aWNlICphY3BfZGV2LAogCQkJ CQkgICBpbnQgZW5hYmxlKQpAQCAtMzYxLDggKzM1Miw4IEBAIHN0YXRpYyB2b2lkIGFjcF9lbmFi bGVfZXh0ZXJuYWxfaW50ZXJydXB0cyhzdHJ1Y3QgYW1kX2FjcF9kZXZpY2UgKmFjcF9kZXYsCiAJ CQkgICBtbUFDUF9FWFRFUk5BTF9JTlRSX0VOQiwgYWNwX2V4dF9pbnRyX2VuYik7CiB9CiAKLS8q CUNsZWFyIChhY2tub3dsZWRnZSkgRE1BICdJbnRlcnJ1cHQgb24gQ29tcGxldGUnIChJT0MpIGlu IEFDUAotICoJZXh0ZXJuYWwgaW50ZXJydXB0IHN0YXR1cyByZWdpc3RlcgorLyogQ2xlYXIgKGFj a25vd2xlZGdlKSBETUEgJ0ludGVycnVwdCBvbiBDb21wbGV0ZScgKElPQykgaW4gQUNQCisgKiBl eHRlcm5hbCBpbnRlcnJ1cHQgc3RhdHVzIHJlZ2lzdGVyCiAgKi8KIHN0YXRpYyB2b2lkIGFjcF9l eHRfc3RhdF9jbGVhcl9kbWFpb2Moc3RydWN0IGFtZF9hY3BfZGV2aWNlICphY3BfZGV2LCB1OCBj aF9udW0pCiB7CkBAIC0zODIsNyArMzczLDcgQEAgc3RhdGljIHZvaWQgYWNwX2V4dF9zdGF0X2Ns ZWFyX2RtYWlvYyhzdHJ1Y3QgYW1kX2FjcF9kZXZpY2UgKmFjcF9kZXYsIHU4IGNoX251bSkKIAl9 CiB9CiAKLS8qCUNoZWNrIHdoZXRoZXIgaW50ZXJydXB0IChJT0MpIGlzIGdlbmVyYXRlZCBvciBu b3QJKi8KKy8qIENoZWNrIHdoZXRoZXIgQUNQIERNQSBpbnRlcnJ1cHQgKElPQykgaXMgZ2VuZXJh dGVkIG9yIG5vdCAqLwogc3RhdGljIHUxNiBhY3BfZ2V0X2ludHJfZmxhZyhzdHJ1Y3QgYW1kX2Fj cF9kZXZpY2UgKmFjcF9kZXYpCiB7CiAJdTMyIGV4dF9pbnRyX3N0YXR1czsKQEAgLTQxMiw3ICs0 MDMsNiBAQCBzdGF0aWMgaW50IGlycV9zZXRfc291cmNlKHZvaWQgKnByaXZhdGVfZGF0YSwgdW5z aWduZWQgc3JjX2lkLCB1bnNpZ25lZCB0eXBlLAogCX0KIH0KIAotCiBzdGF0aWMgaW5saW5lIHZv aWQgaTJzX2NsZWFyX2lycXMoc3RydWN0IGFtZF9hY3BfZGV2aWNlICphY3BfZGV2LAogCQkJCSAg aW50IGRpcmVjdGlvbikKIHsKQEAgLTUxNiwxNyArNTA2LDE3IEBAIHN0YXRpYyB2b2lkIGNvbmZp Z19hY3BfZG1hKHN0cnVjdCBhbWRfYWNwX2RldmljZSAqYWNwX2RldiwKIAlhY3BfcHRlX2NvbmZp ZyhhY3BfZGV2LCBkbWFfY29uZmlnLT5wZywJZG1hX2NvbmZpZy0+bnVtX29mX3BhZ2VzLAogCQkg ICAgICAgcHRlX29mZnNldCk7CiAKLQkvKiBDb25maWd1cmUgU3lzdGVtIG1lbW9yeSB0byBhY3Ag ZG1hIGRlc2NyaXB0b3JzICovCisJLyogQ29uZmlndXJlIFN5c3RlbSBtZW1vcnkgPC0+IEFDUCBT UkFNIERNQSBkZXNjcmlwdG9ycyAqLwogCXNldF9hY3Bfc3lzbWVtX2RtYV9kZXNjcmlwdG9ycyhh Y3BfZGV2LCBkbWFfY29uZmlnLT5zaXplLAogCQkJCSAgICAgICBkbWFfY29uZmlnLT5kaXJlY3Rp b24sCiAJCQkJICAgICAgIHB0ZV9vZmZzZXQpOwogCi0JLyogQ29uZmlndXJlIGFjcCB0byBpMnMg ZG1hIGRlc2NyaXB0b3JzICovCisJLyogQ29uZmlndXJlIEFDUCBTUkFNIDwtPiBJMlMgRE1BIGRl c2NyaXB0b3JzICovCiAJc2V0X2FjcF90b19pMnNfZG1hX2Rlc2NyaXB0b3JzKGFjcF9kZXYsIGRt YV9jb25maWctPnNpemUsCiAJCQkJICAgICAgIGRtYV9jb25maWctPmRpcmVjdGlvbik7CiB9CiAK LS8qIFN0YXJ0IGEgZ2l2ZW4gZG1hIGNoYW5uZWwgKi8KKy8qIFN0YXJ0IGEgZ2l2ZW4gRE1BIGNo YW5uZWwgdHJhbnNmZXIgKi8KIHN0YXRpYyBpbnQgYWNwX2RtYV9zdGFydChzdHJ1Y3QgYW1kX2Fj cF9kZXZpY2UgKmFjcF9kZXYsCiAJCQkgdTE2IGNoX251bSwgYm9vbCBpc19jaXJjdWxhcikKIHsK QEAgLTU3Miw3ICs1NjIsNyBAQCBzdGF0aWMgaW50IGFjcF9kbWFfc3RhcnQoc3RydWN0IGFtZF9h Y3BfZGV2aWNlICphY3BfZGV2LAogCXJldHVybiBzdGF0dXM7CiB9CiAKLS8qIFN0b3AgYSBnaXZl biBkbWEgY2hhbm5lbCBudW1iZXIqLworLyogU3RvcCBhIGdpdmVuIERNQSBjaGFubmVsIHRyYW5z ZmVyICovCiBzdGF0aWMgaW50IGFjcF9kbWFfc3RvcChzdHJ1Y3QgYW1kX2FjcF9kZXZpY2UgKmFj cF9kZXYsIHU4IGNoX251bSkKIHsKIAlpbnQgc3RhdHVzID0gU1RBVFVTX1VOU1VDQ0VTU0ZVTDsK QEAgLTU4NCw3ICs1NzQsNiBAQCBzdGF0aWMgaW50IGFjcF9kbWFfc3RvcChzdHJ1Y3QgYW1kX2Fj cF9kZXZpY2UgKmFjcF9kZXYsIHU4IGNoX251bSkKIAlpZiAoYWNwX2RldiA9PSBOVUxMKQogCQly ZXR1cm4gc3RhdHVzOwogCi0JLyogcmVnaXN0ZXIgbWFzayB2YWx1ZSB0byBjaGVjayB0aGUgY2hh bm5lbCBzdGF0dXMgYml0cyAqLwogCWRtYV9jdHJsID0gY2dzX3JlYWRfcmVnaXN0ZXIoYWNwX3By di0+Y2dzX2RldmljZSwKIAkJCQkgICAgIG1tQUNQX0RNQV9DTlRMXzAgKyBjaF9udW0pOwogCkBA IC02MzYsNiArNjI1LDcgQEAgc3RhdGljIGludCBhY3BfZG1hX3N0b3Aoc3RydWN0IGFtZF9hY3Bf ZGV2aWNlICphY3BfZGV2LCB1OCBjaF9udW0pCiAJcmV0dXJuIHN0YXR1czsKIH0KIAorLyogQUNQ IERNQSBpcnEgaGFuZGxlciByb3V0aW5lIGZvciBwbGF5YmFjaywgY2FwdHVyZSB1c2VjYXNlcyAq Lwogc3RhdGljIGludCBkbWFfaXJxX2hhbmRsZXIodm9pZCAqcHJ2X2RhdGEpCiB7CiAJdTE2IHBs YXlfYWNwX2kyc19pbnRyLCBjYXBfaTJzX2FjcF9pbnRyLCBjYXBfYWNwX3N5c3JhbV9pbnRyOwpA QCAtNjU1LDcgKzY0NSw3IEBAIHN0YXRpYyBpbnQgZG1hX2lycV9oYW5kbGVyKHZvaWQgKnBydl9k YXRhKQogCiAJaWYgKCFwbGF5X2FjcF9pMnNfaW50ciAmJiAhY2FwX2kyc19hY3BfaW50ciAmJiAh Y2FwX2FjcF9zeXNyYW1faW50cikgewogCQkvKiBXZSByZWdpc3RlcmVkIGZvciBETUEgSW50ZXJy dXB0LU9uLUNvbXBsZXRlIGludGVycnVwdHMgb25seS4KLQkJICogSWYgd2UgaGl0IGhlcmUsIGxv ZywgYWNrbm93bGVkZ2UgaXQgYW5kIHJldHVybi4gKi8KKwkJICogSWYgd2UgaGl0IGhlcmUsIGxv ZyBpdCBhbmQgcmV0dXJuLiAqLwogCQlleHRfaW50cl9zdGF0dXMgPSBjZ3NfcmVhZF9yZWdpc3Rl cihhY3BfcHJ2LT5jZ3NfZGV2aWNlLAogCQkJCQkgICAgbW1BQ1BfRVhURVJOQUxfSU5UUl9TVEFU KTsKIAkJcHJfaW5mbygiQUNQOiBOb3QgYSBETUEgSU9DIGlycTogJXhcbiIsIGV4dF9pbnRyX3N0 YXR1cyk7CkBAIC03MDIsMTYgKzY5Miw5MiBAQCBzdGF0aWMgaW50IGlycV9oYW5kbGVyKHZvaWQg KnByaXZhdGVfZGF0YSwgdW5zaWduZWQgc3JjX2lkLAogCQlyZXR1cm4gLTE7CiB9CiAKKy8qIHBv d2VyIG9mZiBhIHRpbGUvYmxvY2sgd2l0aGluIEFDUCAqLworc3RhdGljIHZvaWQgYWNwX3N1c3Bl bmRfdGlsZShzdHJ1Y3QgYW1kX2FjcF9wcml2YXRlICphY3BfcHJ2LCBpbnQgdGlsZSkKK3sKKwl1 MzIgdmFsID0gMDsKKwl1MzIgdGltZW91dCA9IDA7CisKKwlpZiAoKHRpbGUgIDwgQUNQX1RJTEVf UDEpIHx8ICh0aWxlID4gQUNQX1RJTEVfRFNQMikpIHsKKwkJcHJfZXJyKCIgJXMgOiBJbnZhbGlk IEFDUCBwb3dlciB0aWxlIGluZGV4XG4iLCBfX2Z1bmNfXyk7CisJCXJldHVybjsKKwl9CisKKwl2 YWwgPSBjZ3NfcmVhZF9yZWdpc3RlcihhY3BfcHJ2LT5jZ3NfZGV2aWNlLAorCQkJCQltbUFDUF9Q R0ZTTV9SRUFEX1JFR18wICsgdGlsZSk7CisJdmFsICY9IEFDUF9USUxFX09OX01BU0s7CisKKwlp ZiAodmFsID09IDB4MCkgeworCQl2YWwgPSBjZ3NfcmVhZF9yZWdpc3RlcihhY3BfcHJ2LT5jZ3Nf ZGV2aWNlLAorCQkJCQltbUFDUF9QR0ZTTV9SRVRBSU5fUkVHKTsKKwkJdmFsID0gdmFsIHwgKDEg PDwgdGlsZSk7CisJCWNnc193cml0ZV9yZWdpc3RlcihhY3BfcHJ2LT5jZ3NfZGV2aWNlLAltbUFD UF9QR0ZTTV9SRVRBSU5fUkVHLAorCQkJCQkJCXZhbCk7CisJCWNnc193cml0ZV9yZWdpc3Rlcihh Y3BfcHJ2LT5jZ3NfZGV2aWNlLAltbUFDUF9QR0ZTTV9DT05GSUdfUkVHLAorCQkJCQkJCTB4NTAw ICsgdGlsZSk7CisKKwkJdGltZW91dCA9IEFDUF9TT0ZUX1JFU0VUX0RPTkVfVElNRV9PVVRfVkFM VUU7CisJCXdoaWxlICh0aW1lb3V0LS0pIHsKKwkJCXZhbCA9IGNnc19yZWFkX3JlZ2lzdGVyKGFj cF9wcnYtPmNnc19kZXZpY2UsCisJCQkJCW1tQUNQX1BHRlNNX1JFQURfUkVHXzAgKyB0aWxlKTsK KwkJCXZhbCA9IHZhbCAmIEFDUF9USUxFX09OX01BU0s7CisJCQlpZiAodmFsID09IEFDUF9USUxF X09GRl9NQVNLKQorCQkJCWJyZWFrOworCQl9CisKKwkJdmFsID0gY2dzX3JlYWRfcmVnaXN0ZXIo YWNwX3Bydi0+Y2dzX2RldmljZSwKKwkJCQkJbW1BQ1BfUEdGU01fUkVUQUlOX1JFRyk7CisKKwkJ dmFsIHw9IEFDUF9USUxFX09GRl9SRVRBSU5fUkVHX01BU0s7CisJCWNnc193cml0ZV9yZWdpc3Rl cihhY3BfcHJ2LT5jZ3NfZGV2aWNlLAltbUFDUF9QR0ZTTV9SRVRBSU5fUkVHLAorCQkJCQkJCXZh bCk7CisJfQorCit9CisKKy8qIHBvd2VyIG9uIGEgdGlsZS9ibG9jayB3aXRoaW4gQUNQICovCitz dGF0aWMgdm9pZCBhY3BfcmVzdW1lX3RpbGUoc3RydWN0IGFtZF9hY3BfcHJpdmF0ZSAqYWNwX3By diwgaW50IHRpbGUpCit7CisJdTMyIHZhbCA9IDA7CisJdTMyIHRpbWVvdXQgPSAwOworCisJaWYg KCh0aWxlICA8IEFDUF9USUxFX1AxKSB8fCAodGlsZSA+IEFDUF9USUxFX0RTUDIpKSB7CisJCXBy X2VycigiICVzIDogSW52YWxpZCBBQ1AgcG93ZXIgdGlsZSBpbmRleFxuIiwgX19mdW5jX18pOwor CQlyZXR1cm47CisJfQorCisJdmFsID0gY2dzX3JlYWRfcmVnaXN0ZXIoYWNwX3Bydi0+Y2dzX2Rl dmljZSwKKwkJCQkJbW1BQ1BfUEdGU01fUkVBRF9SRUdfMCArIHRpbGUpOworCXZhbCA9IHZhbCAm IEFDUF9USUxFX09OX01BU0s7CisKKwlpZiAodmFsICE9IDB4MCkgeworCQljZ3Nfd3JpdGVfcmVn aXN0ZXIoYWNwX3Bydi0+Y2dzX2RldmljZSwJbW1BQ1BfUEdGU01fQ09ORklHX1JFRywKKwkJCQkJ CQkweDYwMCArIHRpbGUpOworCQl0aW1lb3V0ID0gQUNQX1NPRlRfUkVTRVRfRE9ORV9USU1FX09V VF9WQUxVRTsKKwkJd2hpbGUgKHRpbWVvdXQtLSkgeworCQkJdmFsID0gY2dzX3JlYWRfcmVnaXN0 ZXIoYWNwX3Bydi0+Y2dzX2RldmljZSwKKwkJCQkJbW1BQ1BfUEdGU01fUkVBRF9SRUdfMCArIHRp bGUpOworCQkJdmFsID0gdmFsICYgQUNQX1RJTEVfT05fTUFTSzsKKwkJCWlmICh2YWwgPT0gMHgw KQorCQkJCWJyZWFrOworCQl9CisJCXZhbCA9IGNnc19yZWFkX3JlZ2lzdGVyKGFjcF9wcnYtPmNn c19kZXZpY2UsCisJCQkJCW1tQUNQX1BHRlNNX1JFVEFJTl9SRUcpOworCQlpZiAodGlsZSA9PSBB Q1BfVElMRV9QMSkKKwkJCXZhbCA9IHZhbCAmIChBQ1BfVElMRV9QMV9NQVNLKTsKKwkJZWxzZSBp ZiAodGlsZSA9PSBBQ1BfVElMRV9QMikKKwkJCXZhbCA9IHZhbCAmIChBQ1BfVElMRV9QMl9NQVNL KTsKKworCQljZ3Nfd3JpdGVfcmVnaXN0ZXIoYWNwX3Bydi0+Y2dzX2RldmljZSwJbW1BQ1BfUEdG U01fUkVUQUlOX1JFRywKKwkJCQkJCQl2YWwpOworCX0KK30KKwogLyogSW5pdGlhbGl6ZSBhbmQg YnJpbmcgQUNQIGhhcmR3YXJlIHRvIGRlZmF1bHQgc3RhdGUuICovCi1zdGF0aWMgaW50IGFjcF9o d19pbml0KHN0cnVjdCBhbWRfYWNwX2RldmljZSAqYWNwX2Rldiwgdm9pZCAqaXBydikKK3N0YXRp YyB2b2lkIGFjcF9pbml0KHN0cnVjdCBhbWRfYWNwX3ByaXZhdGUgKmFjcF9wcnYpCiB7CiAJdTMy IHZhbDsKIAl1MzIgdGltZW91dF92YWx1ZTsKLQlpbnQgYWNwX2h3X2luaXRfc3RhdHVzID0gU1RB VFVTX1VOU1VDQ0VTU0ZVTDsKLQlzdHJ1Y3QgYW1kX2FjcF9wcml2YXRlICphY3BfcHJ2ID0gKHN0 cnVjdCBhbWRfYWNwX3ByaXZhdGUgKilhY3BfZGV2OwotCi0JaWYgKGFjcF9kZXYgPT0gTlVMTCkK LQkJcmV0dXJuIGFjcF9od19pbml0X3N0YXR1czsKIAogCS8qIEFzc2VydCBTb2Z0IHJlc2V0IG9m IEFDUCAqLwogCXZhbCA9IGNnc19yZWFkX3JlZ2lzdGVyKGFjcF9wcnYtPmNnc19kZXZpY2UsIG1t QUNQX1NPRlRfUkVTRVQpOwpAQCAtNzI4LDcgKzc5NCw3IEBAIHN0YXRpYyBpbnQgYWNwX2h3X2lu aXQoc3RydWN0IGFtZF9hY3BfZGV2aWNlICphY3BfZGV2LCB2b2lkICppcHJ2KQogCQkJYnJlYWs7 CiAJfQogCi0JLyogRW5hYmxpbmcgY2xvY2sgdG8gQUNQIGFuZCB3YWl0cyB1bnRpbCB0aGUgY2xv Y2sgaXMgZW5hYmxlZCAqLworCS8qIEVuYWJsZSBjbG9jayB0byBBQ1AgYW5kIHdhaXQgdW50aWwg dGhlIGNsb2NrIGlzIGVuYWJsZWQgKi8KIAl2YWwgPSBjZ3NfcmVhZF9yZWdpc3RlcihhY3BfcHJ2 LT5jZ3NfZGV2aWNlLCBtbUFDUF9DT05UUk9MKTsKIAl2YWwgPSB2YWwgfCBBQ1BfQ09OVFJPTF9f Q2xrRW5fTUFTSzsKIAljZ3Nfd3JpdGVfcmVnaXN0ZXIoYWNwX3Bydi0+Y2dzX2RldmljZSwJbW1B Q1BfQ09OVFJPTCwgdmFsKTsKQEAgLTc1Nyw3ICs4MjMsNiBAQCBzdGF0aWMgaW50IGFjcF9od19p bml0KHN0cnVjdCBhbWRfYWNwX2RldmljZSAqYWNwX2Rldiwgdm9pZCAqaXBydikKIAogCWFjcF9k bWFfZGVzY3JfaW5pdChhY3BfcHJ2KTsKIAotCS8qIERNQSBEU0NSIEJBU0UgQUREUkVTUyBJTiBT UkFNICovCiAJY2dzX3dyaXRlX3JlZ2lzdGVyKGFjcF9wcnYtPmNnc19kZXZpY2UsCW1tQUNQX0RN QV9ERVNDX0JBU0VfQUREUiwKIAkJCSAgIEFDUF9TUkFNX0JBU0VfQUREUkVTUyk7CiAKQEAgLTc2 OCwyMCArODMzLDM0IEBAIHN0YXRpYyBpbnQgYWNwX2h3X2luaXQoc3RydWN0IGFtZF9hY3BfZGV2 aWNlICphY3BfZGV2LCB2b2lkICppcHJ2KQogCWNnc193cml0ZV9yZWdpc3RlcihhY3BfcHJ2LT5j Z3NfZGV2aWNlLAltbUFDUF9FWFRFUk5BTF9JTlRSX0NOVEwsCiAJCQkgICBBQ1BfRVhURVJOQUxf SU5UUl9DTlRMX19ETUFJT0NNYXNrX01BU0spOwogCisJcHJfaW5mbygiQUNQOiBJbml0aWFsaXpl ZC5cbiIpOworCit9CisKK3N0YXRpYyBpbnQgYWNwX2h3X2luaXQoc3RydWN0IGFtZF9hY3BfZGV2 aWNlICphY3BfZGV2LCB2b2lkICppcHJ2KQoreworCXN0cnVjdCBhbWRfYWNwX3ByaXZhdGUgKmFj cF9wcnYgPSAoc3RydWN0IGFtZF9hY3BfcHJpdmF0ZSAqKWFjcF9kZXY7CisKKwlhY3BfaW5pdChh Y3BfcHJ2KTsKKwogCWNnc19hZGRfaXJxX3NvdXJjZShhY3BfcHJ2LT5jZ3NfZGV2aWNlLCBWSVNM QU5EUzMwX0lWX1NSQ0lEX0FDUCwgMSwKLQkJCSAgIGlycV9zZXRfc291cmNlLAlpcnFfaGFuZGxl ciwgaXBydik7CisJCQkgICBpcnFfc2V0X3NvdXJjZSwgaXJxX2hhbmRsZXIsIGlwcnYpOworCisJ LyogRGlzYWJsZSBEU1BzIHdoaWNoIGFyZSBub3QgdXNlZCAqLworCWFjcF9zdXNwZW5kX3RpbGUo YWNwX3BydiwgQUNQX1RJTEVfRFNQMCk7CisJYWNwX3N1c3BlbmRfdGlsZShhY3BfcHJ2LCBBQ1Bf VElMRV9EU1AxKTsKKwlhY3Bfc3VzcGVuZF90aWxlKGFjcF9wcnYsIEFDUF9USUxFX0RTUDIpOwog Ci0JcHJfaW5mbygiQUNQOiBJbml0aWFsaXplZC5cbiIpOwogCXJldHVybiBTVEFUVVNfU1VDQ0VT UzsKIH0KIAotc3RhdGljIHZvaWQgYWNwX2h3X2RlaW5pdChzdHJ1Y3QgYW1kX2FjcF9kZXZpY2Ug KmFjcF9kZXYpCisvKiBEZWludGlhbGl6ZSBBQ1AgKi8KK3N0YXRpYyB2b2lkIGFjcF9kZWluaXQo c3RydWN0IGFtZF9hY3BfcHJpdmF0ZSAqYWNwX3BydikKIHsKIAl1MzIgdmFsOwogCXUzMiB0aW1l b3V0X3ZhbHVlOwotCXN0cnVjdCBhbWRfYWNwX3ByaXZhdGUgKmFjcF9wcnYgPSAoc3RydWN0IGFt ZF9hY3BfcHJpdmF0ZSAqKWFjcF9kZXY7CiAKLQkgIC8qIEFzc2VydCBTb2Z0IHJlc2V0IG9mIEFD UCAqLworCS8qIEFzc2VydCBTb2Z0IHJlc2V0IG9mIEFDUCAqLwogCXZhbCA9IGNnc19yZWFkX3Jl Z2lzdGVyKGFjcF9wcnYtPmNnc19kZXZpY2UsIG1tQUNQX1NPRlRfUkVTRVQpOwogCiAJdmFsIHw9 IEFDUF9TT0ZUX1JFU0VUX19Tb2Z0UmVzZXRBdWRfTUFTSzsKQEAgLTc5NSw3ICs4NzQsNyBAQCBz dGF0aWMgdm9pZCBhY3BfaHdfZGVpbml0KHN0cnVjdCBhbWRfYWNwX2RldmljZSAqYWNwX2RldikK IAkJCWJyZWFrOwogCSAgICB9CiAJfQotCSAvKiogRGlzYWJsZSBBQ1AgY2xvY2sgKi8KKwkvKiog RGlzYWJsZSBBQ1AgY2xvY2sgKi8KIAl2YWwgPSBjZ3NfcmVhZF9yZWdpc3RlcihhY3BfcHJ2LT5j Z3NfZGV2aWNlLCBtbUFDUF9DT05UUk9MKTsKIAl2YWwgJj0gfkFDUF9DT05UUk9MX19DbGtFbl9N QVNLOwogCWNnc193cml0ZV9yZWdpc3RlcihhY3BfcHJ2LT5jZ3NfZGV2aWNlLCBtbUFDUF9DT05U Uk9MLCB2YWwpOwpAQCAtODEyLDkgKzg5MSwxNSBAQCBzdGF0aWMgdm9pZCBhY3BfaHdfZGVpbml0 KHN0cnVjdCBhbWRfYWNwX2RldmljZSAqYWNwX2RldikKIAlwcl9pbmZvKCJBQ1A6IERlLUluaXRp YWxpemVkLlxuIik7CiB9CiAKK3N0YXRpYyB2b2lkIGFjcF9od19kZWluaXQoc3RydWN0IGFtZF9h Y3BfZGV2aWNlICphY3BfZGV2KQoreworCXN0cnVjdCBhbWRfYWNwX3ByaXZhdGUgKmFjcF9wcnYg PSAoc3RydWN0IGFtZF9hY3BfcHJpdmF0ZSAqKWFjcF9kZXY7CisKKwlhY3BfZGVpbml0KGFjcF9w cnYpOworfQogCi0vKglHZXQgdGhlIG51bWJlciBvZiBieXRlcyBjb25zdW1lZCBmb3IgU1JBTV9U T19JMlMgRE1BCi0gKgkgY2hhbm5lbCBkdXJpbmcgcmVuZGVyaW5nCisvKiBVcGRhdGUgRE1BIHBv c3Rpb24gaW4gYXVkaW8gcmluZyBidWZmZXIgYXQgcGVyaW9kIGxldmVsIGdyYW51bGFyaXR5Lgor ICogVGhpcyB3aWxsIGJlIHVzZWQgYnkgQUxTQSBQQ00gZHJpdmVyCiAgKi8KIHN0YXRpYyB1MzIg YWNwX3VwZGF0ZV9kbWFfcG9pbnRlcihzdHJ1Y3QgYW1kX2FjcF9kZXZpY2UgKmFjcF9kZXYsIGlu dCBkaXJlY3Rpb24sCiAJCQkJICB1MzIgcGVyaW9kX3NpemUpCkBAIC04MjQsNiArOTA5LDcgQEAg c3RhdGljIHUzMiBhY3BfdXBkYXRlX2RtYV9wb2ludGVyKHN0cnVjdCBhbWRfYWNwX2RldmljZSAq YWNwX2RldiwgaW50IGRpcmVjdGlvbiwKIAl1MzIgbXVsOwogCXUzMiBkbWFfY29uZmlnOwogCXN0 cnVjdCBhbWRfYWNwX3ByaXZhdGUgKmFjcF9wcnYgPSAoc3RydWN0IGFtZF9hY3BfcHJpdmF0ZSAq KWFjcF9kZXY7CisKIAlwb3MgPSAwOwogCiAJaWYgKGRpcmVjdGlvbiA9PSBTVFJFQU1fUExBWUJB Q0spIHsKQEAgLTg1MCw4ICs5MzYsOCBAQCBzdGF0aWMgdTMyIGFjcF91cGRhdGVfZG1hX3BvaW50 ZXIoc3RydWN0IGFtZF9hY3BfZGV2aWNlICphY3BfZGV2LCBpbnQgZGlyZWN0aW9uLAogCXJldHVy biBwb3M7CiB9CiAKLS8qCVdhaXQgZm9yIGNvbXBsZXRlIGJ1ZmZlcmluZyB0byBjb21wbGV0ZSBp biBIT1NUCi0gKgkgdG8gU1JBTSBETUEgY2hhbm5lbAorLyogV2FpdCBmb3IgaW5pdGlhbCBidWZm ZXJpbmcgdG8gY29tcGxldGUgaW4gSE9TVCB0byBTUkFNIERNQSBjaGFubmVsCisgKiBmb3IgcGxh YmFjayB1c2VjYXNlCiAgKi8KIHN0YXRpYyB2b2lkIHdhaXRfZm9yX3ByZWJ1ZmZlcl9maW5pc2go c3RydWN0IGFtZF9hY3BfZGV2aWNlICphY3BfZGV2KQogewpAQCAtOTI3LDYgKzEwMTMsMjIgQEAg c3RhdGljIHZvaWQgY29uZmlndXJlX2kycyhzdHJ1Y3QgYW1kX2FjcF9kZXZpY2UgKmFjcF9kZXYs CiAJY29uZmlndXJlX2kyc19zdHJlYW0oYWNwX2RldiwgaTJzX2NvbmZpZyk7CiB9CiAKK3ZvaWQg YW1kX2FjcF9wY21fc3VzcGVuZChzdHJ1Y3QgYW1kX2FjcF9kZXZpY2UgKmFjcF9kZXYpCit7CisJ c3RydWN0IGFtZF9hY3BfcHJpdmF0ZSAqYWNwX3BydjsKKworCWFjcF9wcnYgPSAoc3RydWN0IGFt ZF9hY3BfcHJpdmF0ZSAqKWFjcF9kZXY7CisJYW1kX2FjcF9zdXNwZW5kKGFjcF9wcnYpOworfQor Cit2b2lkIGFtZF9hY3BfcGNtX3Jlc3VtZShzdHJ1Y3QgYW1kX2FjcF9kZXZpY2UgKmFjcF9kZXYp Cit7CisJc3RydWN0IGFtZF9hY3BfcHJpdmF0ZSAqYWNwX3BydjsKKworCWFjcF9wcnYgPSAoc3Ry dWN0IGFtZF9hY3BfcHJpdmF0ZSAqKWFjcF9kZXY7CisJYW1kX2FjcF9yZXN1bWUoYWNwX3Bydik7 Cit9CisKIGludCBhbWRfYWNwX2h3X2luaXQodm9pZCAqY2dzX2RldmljZSwKIAkJICAgIHVuc2ln bmVkIGFjcF92ZXJzaW9uX21ham9yLCB1bnNpZ25lZCBhY3BfdmVyc2lvbl9taW5vciwKIAkJICAg IHN0cnVjdCBhbWRfYWNwX3ByaXZhdGUgKiphY3BfcHJpdmF0ZSkKQEAgLTk2Miw2ICsxMDY0LDkg QEAgaW50IGFtZF9hY3BfaHdfaW5pdCh2b2lkICpjZ3NfZGV2aWNlLAogCSgqYWNwX3ByaXZhdGUp LT5wdWJsaWMuaTJzX3N0YXJ0ID0gaTJzX3N0YXJ0OwogCSgqYWNwX3ByaXZhdGUpLT5wdWJsaWMu aTJzX3N0b3AgPSBpMnNfc3RvcDsKIAorCSgqYWNwX3ByaXZhdGUpLT5wdWJsaWMuYWNwX3N1c3Bl bmQgPSBhbWRfYWNwX3BjbV9zdXNwZW5kOworCSgqYWNwX3ByaXZhdGUpLT5wdWJsaWMuYWNwX3Jl c3VtZSA9IGFtZF9hY3BfcGNtX3Jlc3VtZTsKKwogCXJldHVybiAwOwogfQogCkBAIC05NzMsMTAg KzEwNzgsMTkgQEAgaW50IGFtZF9hY3BfaHdfZmluaShzdHJ1Y3QgYW1kX2FjcF9wcml2YXRlICph Y3BfcHJpdmF0ZSkKIAogdm9pZCBhbWRfYWNwX3N1c3BlbmQoc3RydWN0IGFtZF9hY3BfcHJpdmF0 ZSAqYWNwX3ByaXZhdGUpCiB7Ci0JLyogVE9ETyAqLworCWFjcF9zdXNwZW5kX3RpbGUoYWNwX3By aXZhdGUsIEFDUF9USUxFX1AyKTsKKwlhY3Bfc3VzcGVuZF90aWxlKGFjcF9wcml2YXRlLCBBQ1Bf VElMRV9QMSk7CiB9CiAKIHZvaWQgYW1kX2FjcF9yZXN1bWUoc3RydWN0IGFtZF9hY3BfcHJpdmF0 ZSAqYWNwX3ByaXZhdGUpCiB7Ci0JLyogVE9ETyAqLworCWFjcF9yZXN1bWVfdGlsZShhY3BfcHJp dmF0ZSwgQUNQX1RJTEVfUDEpOworCWFjcF9yZXN1bWVfdGlsZShhY3BfcHJpdmF0ZSwgQUNQX1RJ TEVfUDIpOworCisJYWNwX2luaXQoYWNwX3ByaXZhdGUpOworCisJLyogRGlzYWJsZSBEU1BzIHdo aWNoIGFyZSBub3QgZ29pbmcgdG8gYmUgdXNlZCAqLworCWFjcF9zdXNwZW5kX3RpbGUoYWNwX3By aXZhdGUsIEFDUF9USUxFX0RTUDApOworCWFjcF9zdXNwZW5kX3RpbGUoYWNwX3ByaXZhdGUsIEFD UF9USUxFX0RTUDEpOworCWFjcF9zdXNwZW5kX3RpbGUoYWNwX3ByaXZhdGUsIEFDUF9USUxFX0RT UDIpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hY3AvYWNwX2h3LmggYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FjcC9hY3BfaHcuaAppbmRleCA1ZTdlMjI1Li40YWE2YjFjIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FjcC9hY3BfaHcuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FjcC9hY3BfaHcuaApAQCAtNDAsNiArNDAsMjUgQEAKICNkZWZpbmUgRlJP TV9BQ1BfSTJTXzEgMHhhCiAjZGVmaW5lIEZST01fQUNQX0kyU18yIDB4YgogCisjZGVmaW5lIEFD UF9USUxFX09OX01BU0sgICAgICAgICAgICAgICAgMHgwMworI2RlZmluZSBBQ1BfVElMRV9PRkZf TUFTSyAgICAgICAgICAgICAgIDB4MDIKKyNkZWZpbmUgQUNQX1RJTEVfT05fUkVUQUlOX1JFR19N QVNLICAgICAweDFmCisjZGVmaW5lIEFDUF9USUxFX09GRl9SRVRBSU5fUkVHX01BU0sgICAgMHgy MAorCisjZGVmaW5lIEFDUF9USUxFX1AxX01BU0sgICAgICAgICAgICAgICAgMHgzZQorI2RlZmlu ZSBBQ1BfVElMRV9QMl9NQVNLICAgICAgICAgICAgICAgIDB4M2QKKyNkZWZpbmUgQUNQX1RJTEVf RFNQMF9NQVNLICAgICAgICAgICAgICAweDNiCisjZGVmaW5lIEFDUF9USUxFX0RTUDFfTUFTSyAg ICAgICAgICAgICAgMHgzNworI2RlZmluZSBBQ1BfVElMRV9EU1AyX01BU0sgICAgICAgICAgICAg IDB4MmYKKworZW51bSB7CisJQUNQX1RJTEVfUDEgPSAwLAorCUFDUF9USUxFX1AyLAorCUFDUF9U SUxFX0RTUDAsCisJQUNQX1RJTEVfRFNQMSwKKwlBQ1BfVElMRV9EU1AyLAorfTsKKwogZW51bSB7 CiAJU1RSRUFNX1BMQVlCQUNLID0gMCwKIAlTVFJFQU1fQ0FQVFVSRSwKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYWNwL2luY2x1ZGUvYW1kX2FjcC5oIGIvZHJpdmVycy9ncHUvZHJt L2FtZC9hY3AvaW5jbHVkZS9hbWRfYWNwLmgKaW5kZXggOTg4ZDcyYS4uOGMxZDMxYSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hY3AvaW5jbHVkZS9hbWRfYWNwLmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9hY3AvaW5jbHVkZS9hbWRfYWNwLmgKQEAgLTE4OSw4ICsxODksMjYg QEAgc3RydWN0IGFtZF9hY3BfZGV2aWNlIHsKIAkgKi8KIAl2b2lkICgqaTJzX3N0b3ApKHN0cnVj dCBhbWRfYWNwX2RldmljZSAqYWNwX2RldiwgaW50IGRpcmVjdGlvbik7CiAKKwkvKioKKwkgKiBh Y3Bfc3VzcGVuZCgpIC0gUG93ZXIgb2ZmIEFDUAorCSAqIEBhY3BfZGV2OglhY3AgZGV2aWNlCisJ ICoKKwkgKiBTd2l0Y2ggb2ZmIHBvd2VyIHRpbGVzIG9mIEFDUAorCSAqLworCXZvaWQgKCphY3Bf c3VzcGVuZCkoc3RydWN0IGFtZF9hY3BfZGV2aWNlICphY3BfZGV2KTsKKworCS8qKgorCSAqIGFj cF9yZXN1bWUoKSAtIFBvd2VyIG9uIEFDUAorCSAqIEBhY3BfZGV2OglhY3AgZGV2aWNlCisJICoK KwkgKiBTd2l0Y2ggb24gcG93ZXIgdGlsZXMgb2YgQUNQCisJICovCisKKwl2b2lkICgqYWNwX3Jl c3VtZSkoc3RydWN0IGFtZF9hY3BfZGV2aWNlICphY3BfZGV2KTsKKwogCS8qIFRPRE86IE5lZWQg Y2FsbGJhY2sgcmVnaXN0cmF0aW9uIGludGVyZmFjZSBmb3IgYXN5bmNocm9ub3VzCiAJICogbm90 aWZpY2F0aW9ucyAqLworCiB9OwogCiAjZW5kaWYgLyogX0FNRF9BQ1BfSCAqLwotLSAKMS44LjMu MQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRl dmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK