From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Arve=20Hj=C3=B8nnev=C3=A5g?= Subject: [PATCH 2/8] PM: suspend_block: Add driver to access suspend blockers from user-space Date: Thu, 13 May 2010 21:11:07 -0700 Message-ID: <1273810273-3039-3-git-send-email-arve@android.com> References: <1273810273-3039-1-git-send-email-arve@android.com> <1273810273-3039-2-git-send-email-arve@android.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1273810273-3039-2-git-send-email-arve@android.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-pm-bounces@lists.linux-foundation.org Errors-To: linux-pm-bounces@lists.linux-foundation.org To: linux-pm@lists.linux-foundation.org, linux-kernel@vger.kernel.org Cc: Len Brown , Jim Collar , linux-doc@vger.kernel.org, Greg Kroah-Hartman , Avi Kivity , Ryusuke Konishi , Magnus Damm , Andrew Morton List-Id: linux-pm@vger.kernel.org QWRkIGEgbWlzYyBkZXZpY2UsICJzdXNwZW5kX2Jsb2NrZXIiLCB0aGF0IGFsbG93cyB1c2VyLXNw YWNlIHByb2Nlc3Nlcwp0byBibG9jayBhdXRvIHN1c3BlbmQuIFRoZSBkZXZpY2UgaGFzIGlvY3Rs cyB0byBjcmVhdGUgYSBzdXNwZW5kX2Jsb2NrZXIsCmFuZCB0byBibG9jayBhbmQgdW5ibG9jayBz dXNwZW5kLiBUbyBkZWxldGUgdGhlIHN1c3BlbmRfYmxvY2tlciwgY2xvc2UKdGhlIGRldmljZS4K ClNpZ25lZC1vZmYtYnk6IEFydmUgSGrDuG5uZXbDpWcgPGFydmVAYW5kcm9pZC5jb20+Ci0tLQog RG9jdW1lbnRhdGlvbi9pb2N0bC9pb2N0bC1udW1iZXIudHh0ICAgICAgICAgIHwgICAgMyArLQog RG9jdW1lbnRhdGlvbi9wb3dlci9vcHBvcnR1bmlzdGljLXN1c3BlbmQudHh0IHwgICAyNyArKysr KwogaW5jbHVkZS9saW51eC9zdXNwZW5kX2lvY3Rscy5oICAgICAgICAgICAgICAgIHwgICAgNCAr CiBrZXJuZWwvcG93ZXIvS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA3ICsr CiBrZXJuZWwvcG93ZXIvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsK IGtlcm5lbC9wb3dlci91c2VyX3N1c3BlbmRfYmxvY2tlci5jICAgICAgICAgICB8ICAxNDMgKysr KysrKysrKysrKysrKysrKysrKysrKwogNiBmaWxlcyBjaGFuZ2VkLCAxODQgaW5zZXJ0aW9ucygr KSwgMSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBrZXJuZWwvcG93ZXIvdXNlcl9z dXNwZW5kX2Jsb2NrZXIuYwoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaW9jdGwvaW9jdGwt bnVtYmVyLnR4dCBiL0RvY3VtZW50YXRpb24vaW9jdGwvaW9jdGwtbnVtYmVyLnR4dAppbmRleCBk ZDU4MDZmLi5lMjQ1OGY3IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2lvY3RsL2lvY3RsLW51 bWJlci50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9pb2N0bC9pb2N0bC1udW1iZXIudHh0CkBAIC0y NTQsNyArMjU0LDggQEAgQ29kZSAgU2VxIyhoZXgpCUluY2x1ZGUgRmlsZQkJQ29tbWVudHMKICdx Jwk4MC1GRglsaW51eC90ZWxlcGhvbnkuaAlJbnRlcm5ldCBQaG9uZUpBQ0ssIEludGVybmV0IExp bmVKQUNLCiAJCWxpbnV4L2l4anVzZXIuaAkJPGh0dHA6Ly93d3cucXVpY2tuZXQubmV0PgogJ3In CTAwLTFGCWxpbnV4L21zZG9zX2ZzLmggYW5kIGZzL2ZhdC9kaXIuYwotJ3MnCWFsbAlsaW51eC9j ZGsuaAorJ3MnCWFsbAlsaW51eC9jZGsuaAljb25mbGljdCEKKydzJwlhbGwJbGludXgvc3VzcGVu ZF9ibG9ja19kZXYuaAljb25mbGljdCEKICd0JwkwMC03RglsaW51eC9pZl9wcHAuaAogJ3QnCTgw LThGCWxpbnV4L2lzZG5fcHBwLmgKICd0Jwk5MAlsaW51eC90b3NoaWJhLmgKZGlmZiAtLWdpdCBh L0RvY3VtZW50YXRpb24vcG93ZXIvb3Bwb3J0dW5pc3RpYy1zdXNwZW5kLnR4dCBiL0RvY3VtZW50 YXRpb24vcG93ZXIvb3Bwb3J0dW5pc3RpYy1zdXNwZW5kLnR4dAppbmRleCA0YmVlN2JjLi45M2Y0 YzI0IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3Bvd2VyL29wcG9ydHVuaXN0aWMtc3VzcGVu ZC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9wb3dlci9vcHBvcnR1bmlzdGljLXN1c3BlbmQudHh0 CkBAIC0xMjcsMyArMTI3LDMwIEBAIGlmIChsaXN0X2VtcHR5KCZzdGF0ZS0+cGVuZGluZ193b3Jr KSkKIAlzdXNwZW5kX3VuYmxvY2soJnN0YXRlLT5zdXNwZW5kX2Jsb2NrZXIpOwogZWxzZQogCXN1 c3BlbmRfYmxvY2soJnN0YXRlLT5zdXNwZW5kX2Jsb2NrZXIpOworCitVc2VyIHNwYWNlIEFQSQor PT09PT09PT09PT09PT0KKworVG8gY3JlYXRlIGEgc3VzcGVuZCBibG9ja2VyIGZyb20gdXNlciBz cGFjZSwgb3BlbiB0aGUgc3VzcGVuZF9ibG9ja2VyIHNwZWNpYWwKK2RldmljZSBmaWxlOgorCisg ICAgZmQgPSBvcGVuKCIvZGV2L3N1c3BlbmRfYmxvY2tlciIsIE9fUkRXUiB8IE9fQ0xPRVhFQyk7 CisKK3RoZW4gb3B0aW9uYWxseSBjYWxsOgorCisgICAgaW9jdGwoZmQsIFNVU1BFTkRfQkxPQ0tF Ul9JT0NUTF9TRVRfTkFNRShzdHJsZW4obmFtZSkpLCBuYW1lKTsKKworVG8gYWN0aXZhdGUgdGhl IHN1c3BlbmQgYmxvY2tlciBjYWxsOgorCisgICAgaW9jdGwoZmQsIFNVU1BFTkRfQkxPQ0tFUl9J T0NUTF9CTE9DSyk7CisKK1RvIGRlYWN0aXZhdGUgaXQgY2FsbDoKKworICAgIGlvY3RsKGZkLCBT VVNQRU5EX0JMT0NLRVJfSU9DVExfVU5CTE9DSyk7CisKK1RvIGRlc3Ryb3kgdGhlIHN1c3BlbmQg YmxvY2tlciwgY2xvc2UgdGhlIGRldmljZToKKworICAgIGNsb3NlKGZkKTsKKworSWYgdGhlIGZp cnN0IGlvY3RsIGNhbGxlZCBpcyBub3QgU1VTUEVORF9CTE9DS0VSX0lPQ1RMX1NFVF9OQU1FIHRo ZSBzdXNwZW5kCitibG9ja2VyIHdpbGwgZ2V0IHRoZSBkZWZhdWx0IG5hbWUgIih1c2Vyc3BhY2Up Ii4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc3VzcGVuZF9pb2N0bHMuaCBiL2luY2x1ZGUv bGludXgvc3VzcGVuZF9pb2N0bHMuaAppbmRleCAwYjMwMzgyLi5iOTVhNmIyIDEwMDY0NAotLS0g YS9pbmNsdWRlL2xpbnV4L3N1c3BlbmRfaW9jdGxzLmgKKysrIGIvaW5jbHVkZS9saW51eC9zdXNw ZW5kX2lvY3Rscy5oCkBAIC0zMCw0ICszMCw4IEBAIHN0cnVjdCByZXN1bWVfc3dhcF9hcmVhIHsK ICNkZWZpbmUgU05BUFNIT1RfQUxMT0NfU1dBUF9QQUdFCV9JT1IoU05BUFNIT1RfSU9DX01BR0lD LCAyMCwgX19rZXJuZWxfbG9mZl90KQogI2RlZmluZSBTTkFQU0hPVF9JT0NfTUFYTlIJMjAKIAor I2RlZmluZSBTVVNQRU5EX0JMT0NLRVJfSU9DVExfU0VUX05BTUUobGVuKQlfSU9DKF9JT0NfV1JJ VEUsICdzJywgMCwgbGVuKQorI2RlZmluZSBTVVNQRU5EX0JMT0NLRVJfSU9DVExfQkxPQ0sJCV9J TygncycsIDEpCisjZGVmaW5lIFNVU1BFTkRfQkxPQ0tFUl9JT0NUTF9VTkJMT0NLCQlfSU8oJ3Mn LCAyKQorCiAjZW5kaWYgLyogX0xJTlVYX1NVU1BFTkRfSU9DVExTX0ggKi8KZGlmZiAtLWdpdCBh L2tlcm5lbC9wb3dlci9LY29uZmlnIGIva2VybmVsL3Bvd2VyL0tjb25maWcKaW5kZXggNmQxMWE0 NS4uMmU2NjVjZCAxMDA2NDQKLS0tIGEva2VybmVsL3Bvd2VyL0tjb25maWcKKysrIGIva2VybmVs L3Bvd2VyL0tjb25maWcKQEAgLTE0Niw2ICsxNDYsMTMgQEAgY29uZmlnIE9QUE9SVFVOSVNUSUNf U1VTUEVORAogCSAgZGV0ZXJtaW5lcyB0aGUgc2xlZXAgc3RhdGUgdGhlIHN5c3RlbSB3aWxsIGJl IHB1dCBpbnRvIHdoZW4gdGhlcmUgYXJlCiAJICBubyBhY3RpdmUgc3VzcGVuZCBibG9ja2Vycy4K IAorY29uZmlnIFVTRVJfU1VTUEVORF9CTE9DS0VSUworCWJvb2wgIlVzZXIgc3BhY2Ugc3VzcGVu ZCBibG9ja2VycyIKKwlkZXBlbmRzIG9uIE9QUE9SVFVOSVNUSUNfU1VTUEVORAorCS0tLWhlbHAt LS0KKwkgIFVzZXIgc3BhY2Ugc3VzcGVuZCBibG9ja2VycyBBUEkuICBDcmVhdGVzIGEgbWlzYyBk ZXZpY2UgYWxsb3dpbmcgdXNlcgorCSAgc3BhY2UgdG8gY3JlYXRlLCB1c2UgYW5kIGRlc3Ryb3kg c3VzcGVuZCBibG9ja2Vycy4KKwogY29uZmlnIEhJQkVSTkFUSU9OX05WUwogCWJvb2wKIApkaWZm IC0tZ2l0IGEva2VybmVsL3Bvd2VyL01ha2VmaWxlIGIva2VybmVsL3Bvd2VyL01ha2VmaWxlCmlu ZGV4IDk1ZDhlNmQuLjIwMTU1OTQgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9wb3dlci9NYWtlZmlsZQor KysgYi9rZXJuZWwvcG93ZXIvTWFrZWZpbGUKQEAgLTgsNiArOCw3IEBAIG9iai0kKENPTkZJR19Q TV9TTEVFUCkJCSs9IGNvbnNvbGUubwogb2JqLSQoQ09ORklHX0ZSRUVaRVIpCQkrPSBwcm9jZXNz Lm8KIG9iai0kKENPTkZJR19TVVNQRU5EKQkJKz0gc3VzcGVuZC5vCiBvYmotJChDT05GSUdfT1BQ T1JUVU5JU1RJQ19TVVNQRU5EKQkrPSBvcHBvcnR1bmlzdGljX3N1c3BlbmQubworb2JqLSQoQ09O RklHX1VTRVJfU1VTUEVORF9CTE9DS0VSUykJKz0gdXNlcl9zdXNwZW5kX2Jsb2NrZXIubwogb2Jq LSQoQ09ORklHX1BNX1RFU1RfU1VTUEVORCkJKz0gc3VzcGVuZF90ZXN0Lm8KIG9iai0kKENPTkZJ R19ISUJFUk5BVElPTikJKz0gaGliZXJuYXRlLm8gc25hcHNob3QubyBzd2FwLm8gdXNlci5vCiBv YmotJChDT05GSUdfSElCRVJOQVRJT05fTlZTKQkrPSBoaWJlcm5hdGVfbnZzLm8KZGlmZiAtLWdp dCBhL2tlcm5lbC9wb3dlci91c2VyX3N1c3BlbmRfYmxvY2tlci5jIGIva2VybmVsL3Bvd2VyL3Vz ZXJfc3VzcGVuZF9ibG9ja2VyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u ZDUzZjkzOQotLS0gL2Rldi9udWxsCisrKyBiL2tlcm5lbC9wb3dlci91c2VyX3N1c3BlbmRfYmxv Y2tlci5jCkBAIC0wLDAgKzEsMTQzIEBACisvKgorICoga2VybmVsL3Bvd2VyL3VzZXJfc3VzcGVu ZF9ibG9ja2VyLmMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBHb29nbGUsIEluYy4K KyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIHZlcnNpb24gMiwgYXMgcHVibGlzaGVkIGJ5 IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGFuZAorICogbWF5IGJlIGNvcGllZCwgZGlz dHJpYnV0ZWQsIGFuZCBtb2RpZmllZCB1bmRlciB0aG9zZSB0ZXJtcy4KKyAqCisgKiBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgorICoKKyAqLworCisjaW5jbHVkZSA8bGludXgvZnMuaD4KKyNpbmNsdWRlIDxs aW51eC9taXNjZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8 bGludXgvdWFjY2Vzcy5oPgorI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KKyNpbmNsdWRlIDxsaW51 eC9zdXNwZW5kLmg+CisjaW5jbHVkZSA8bGludXgvc3VzcGVuZF9pb2N0bHMuaD4KKworZW51bSB7 CisJREVCVUdfRkFJTFVSRQk9IEJJVCgwKSwKK307CitzdGF0aWMgaW50IGRlYnVnX21hc2sgPSBE RUJVR19GQUlMVVJFOworbW9kdWxlX3BhcmFtX25hbWVkKGRlYnVnX21hc2ssIGRlYnVnX21hc2ss IGludCwgU19JUlVHTyB8IFNfSVdVU1IgfCBTX0lXR1JQKTsKKworc3RhdGljIERFRklORV9NVVRF WChpb2N0bF9sb2NrKTsKKworI2RlZmluZSBVU0VSX1NVU1BFTkRfQkxPQ0tFUl9OQU1FX0xFTiAz MQorCitzdHJ1Y3QgdXNlcl9zdXNwZW5kX2Jsb2NrZXIgeworCXN0cnVjdCBzdXNwZW5kX2Jsb2Nr ZXIJYmxvY2tlcjsKKwljaGFyCQkJbmFtZVtVU0VSX1NVU1BFTkRfQkxPQ0tFUl9OQU1FX0xFTiAr IDFdOworCWJvb2wJCQlyZWdpc3RlcmVkOworfTsKKworc3RhdGljIGludCB1c2VyX3N1c3BlbmRf YmxvY2tlcl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKQorewor CXN0cnVjdCB1c2VyX3N1c3BlbmRfYmxvY2tlciAqYmxvY2tlcjsKKworCWJsb2NrZXIgPSBremFs bG9jKHNpemVvZigqYmxvY2tlciksIEdGUF9LRVJORUwpOworCWlmICghYmxvY2tlcikKKwkJcmV0 dXJuIC1FTk9NRU07CisKKwlub25zZWVrYWJsZV9vcGVuKGlub2RlLCBmaWxwKTsKKwlzdHJjcHko YmxvY2tlci0+bmFtZSwgIih1c2Vyc3BhY2UpIik7CisJYmxvY2tlci0+YmxvY2tlci5uYW1lID0g YmxvY2tlci0+bmFtZTsKKwlmaWxwLT5wcml2YXRlX2RhdGEgPSBibG9ja2VyOworCisJcmV0dXJu IDA7Cit9CisKK3N0YXRpYyBpbnQgc3VzcGVuZF9ibG9ja2VyX3NldF9uYW1lKHN0cnVjdCB1c2Vy X3N1c3BlbmRfYmxvY2tlciAqYmxvY2tlciwKKwkJCQkgICAgdm9pZCBfX3VzZXIgKm5hbWUsIHNp emVfdCBuYW1lX2xlbikKK3sKKwlpZiAoYmxvY2tlci0+cmVnaXN0ZXJlZCkKKwkJcmV0dXJuIC1F QlVTWTsKKworCWlmIChuYW1lX2xlbiA+IFVTRVJfU1VTUEVORF9CTE9DS0VSX05BTUVfTEVOKQor CQluYW1lX2xlbiA9IFVTRVJfU1VTUEVORF9CTE9DS0VSX05BTUVfTEVOOworCisJaWYgKGNvcHlf ZnJvbV91c2VyKGJsb2NrZXItPm5hbWUsIG5hbWUsIG5hbWVfbGVuKSkKKwkJcmV0dXJuIC1FRkFV TFQ7CisJYmxvY2tlci0+bmFtZVtuYW1lX2xlbl0gPSAnXDAnOworCisJcmV0dXJuIDA7Cit9CisK K3N0YXRpYyBsb25nIHVzZXJfc3VzcGVuZF9ibG9ja2VyX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxw LCB1bnNpZ25lZCBpbnQgY21kLAorCQkJCQl1bnNpZ25lZCBsb25nIF9hcmcpCit7CisJdm9pZCBf X3VzZXIgKmFyZyA9ICh2b2lkIF9fdXNlciAqKV9hcmc7CisJc3RydWN0IHVzZXJfc3VzcGVuZF9i bG9ja2VyICpibG9ja2VyID0gZmlscC0+cHJpdmF0ZV9kYXRhOworCWxvbmcgcmV0ID0gMDsKKwor CW11dGV4X2xvY2soJmlvY3RsX2xvY2spOworCWlmICgoY21kICYgfklPQ1NJWkVfTUFTSykgPT0g U1VTUEVORF9CTE9DS0VSX0lPQ1RMX1NFVF9OQU1FKDApKSB7CisJCXJldCA9IHN1c3BlbmRfYmxv Y2tlcl9zZXRfbmFtZShibG9ja2VyLCBhcmcsIF9JT0NfU0laRShjbWQpKTsKKwkJZ290byBkb25l OworCX0KKwlpZiAoIWJsb2NrZXItPnJlZ2lzdGVyZWQpIHsKKwkJc3VzcGVuZF9ibG9ja2VyX3Jl Z2lzdGVyKCZibG9ja2VyLT5ibG9ja2VyKTsKKwkJYmxvY2tlci0+cmVnaXN0ZXJlZCA9IHRydWU7 CisJfQorCXN3aXRjaCAoY21kKSB7CisJY2FzZSBTVVNQRU5EX0JMT0NLRVJfSU9DVExfQkxPQ0s6 CisJCXN1c3BlbmRfYmxvY2soJmJsb2NrZXItPmJsb2NrZXIpOworCQlicmVhazsKKworCWNhc2Ug U1VTUEVORF9CTE9DS0VSX0lPQ1RMX1VOQkxPQ0s6CisJCXN1c3BlbmRfdW5ibG9jaygmYmxvY2tl ci0+YmxvY2tlcik7CisJCWJyZWFrOworCisJZGVmYXVsdDoKKwkJcmV0ID0gLUVOT1RUWTsKKwl9 Citkb25lOgorCWlmIChyZXQgJiYgKGRlYnVnX21hc2sgJiBERUJVR19GQUlMVVJFKSkKKwkJcHJf ZXJyKCJ1c2VyX3N1c3BlbmRfYmxvY2tlcl9pb2N0bDogY21kICV4IGZhaWxlZCwgJWxkXG4iLAor CQkJY21kLCByZXQpOworCW11dGV4X3VubG9jaygmaW9jdGxfbG9jayk7CisJcmV0dXJuIHJldDsK K30KKworc3RhdGljIGludCB1c2VyX3N1c3BlbmRfYmxvY2tlcl9yZWxlYXNlKHN0cnVjdCBpbm9k ZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKQoreworCXN0cnVjdCB1c2VyX3N1c3BlbmRfYmxv Y2tlciAqYmxvY2tlciA9IGZpbHAtPnByaXZhdGVfZGF0YTsKKworCWlmIChibG9ja2VyLT5yZWdp c3RlcmVkKQorCQlzdXNwZW5kX2Jsb2NrZXJfdW5yZWdpc3RlcigmYmxvY2tlci0+YmxvY2tlcik7 CisJa2ZyZWUoYmxvY2tlcik7CisKKwlyZXR1cm4gMDsKK30KKworY29uc3Qgc3RydWN0IGZpbGVf b3BlcmF0aW9ucyB1c2VyX3N1c3BlbmRfYmxvY2tlcl9mb3BzID0geworCS5vcGVuID0gdXNlcl9z dXNwZW5kX2Jsb2NrZXJfb3BlbiwKKwkucmVsZWFzZSA9IHVzZXJfc3VzcGVuZF9ibG9ja2VyX3Jl bGVhc2UsCisJLnVubG9ja2VkX2lvY3RsID0gdXNlcl9zdXNwZW5kX2Jsb2NrZXJfaW9jdGwsCit9 OworCitzdHJ1Y3QgbWlzY2RldmljZSB1c2VyX3N1c3BlbmRfYmxvY2tlcl9kZXZpY2UgPSB7CisJ Lm1pbm9yID0gTUlTQ19EWU5BTUlDX01JTk9SLAorCS5uYW1lID0gInN1c3BlbmRfYmxvY2tlciIs CisJLmZvcHMgPSAmdXNlcl9zdXNwZW5kX2Jsb2NrZXJfZm9wcywKK307CisKK3N0YXRpYyBpbnQg X19pbml0IHVzZXJfc3VzcGVuZF9ibG9ja2VyX2luaXQodm9pZCkKK3sKKwlyZXR1cm4gbWlzY19y ZWdpc3RlcigmdXNlcl9zdXNwZW5kX2Jsb2NrZXJfZGV2aWNlKTsKK30KKworc3RhdGljIHZvaWQg X19leGl0IHVzZXJfc3VzcGVuZF9ibG9ja2VyX2V4aXQodm9pZCkKK3sKKwltaXNjX2RlcmVnaXN0 ZXIoJnVzZXJfc3VzcGVuZF9ibG9ja2VyX2RldmljZSk7Cit9CisKK21vZHVsZV9pbml0KHVzZXJf c3VzcGVuZF9ibG9ja2VyX2luaXQpOworbW9kdWxlX2V4aXQodXNlcl9zdXNwZW5kX2Jsb2NrZXJf ZXhpdCk7Ci0tIAoxLjYuNS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpsaW51eC1wbSBtYWlsaW5nIGxpc3QKbGludXgtcG1AbGlzdHMubGludXgtZm91 bmRhdGlvbi5vcmcKaHR0cHM6Ly9saXN0cy5saW51eC1mb3VuZGF0aW9uLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2xpbnV4LXBt