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: Fri, 30 Apr 2010 15:36:55 -0700 Message-ID: <1272667021-21312-3-git-send-email-arve@android.com> References: <1272667021-21312-1-git-send-email-arve@android.com> <1272667021-21312-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: <1272667021-21312-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 , Oleg Nesterov , Avi Kivity , Ryusuke Konishi , Tejun Heo , Magnus Damm , Andrew Morton List-Id: linux-pm@vger.kernel.org QWRkIGEgbWlzYyBkZXZpY2UsICJzdXNwZW5kX2Jsb2NrZXIiLCB0aGF0IGFsbG93cyB1c2VyLXNw YWNlIHByb2Nlc3Nlcwp0byBibG9jayBhdXRvIHN1c3BlbmQuIFRoZSBkZXZpY2UgaGFzIGlvY3Rs cyB0byBjcmVhdGUgYSBzdXNwZW5kX2Jsb2NrZXIsCmFuZCB0byBibG9jayBhbmQgdW5ibG9jayBz dXNwZW5kLiBUbyBkZWxldGUgdGhlIHN1c3BlbmRfYmxvY2tlciwgY2xvc2UKdGhlIGRldmljZS4K ClNpZ25lZC1vZmYtYnk6IEFydmUgSGrDuG5uZXbDpWcgPGFydmVAYW5kcm9pZC5jb20+Ci0tLQog RG9jdW1lbnRhdGlvbi9pb2N0bC9pb2N0bC1udW1iZXIudHh0ICAgICAgICAgIHwgICAgMyArLQog RG9jdW1lbnRhdGlvbi9wb3dlci9vcHBvcnR1bmlzdGljLXN1c3BlbmQudHh0IHwgICAxNyArKysr CiBpbmNsdWRlL2xpbnV4L3N1c3BlbmRfYmxvY2tfZGV2LmggICAgICAgICAgICAgfCAgIDI1ICsr KysrCiBrZXJuZWwvcG93ZXIvS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA5 ICsrCiBrZXJuZWwvcG93ZXIvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAx ICsKIGtlcm5lbC9wb3dlci91c2VyX3N1c3BlbmRfYmxvY2tlci5jICAgICAgICAgICB8ICAxMjgg KysrKysrKysrKysrKysrKysrKysrKysrKwogNiBmaWxlcyBjaGFuZ2VkLCAxODIgaW5zZXJ0aW9u cygrKSwgMSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2xpbnV4L3N1 c3BlbmRfYmxvY2tfZGV2LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBrZXJuZWwvcG93ZXIvdXNlcl9z dXNwZW5kX2Jsb2NrZXIuYwoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaW9jdGwvaW9jdGwt bnVtYmVyLnR4dCBiL0RvY3VtZW50YXRpb24vaW9jdGwvaW9jdGwtbnVtYmVyLnR4dAppbmRleCBk ZDU4MDZmLi5lMjQ1OGY3IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2lvY3RsL2lvY3RsLW51 bWJlci50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9pb2N0bC9pb2N0bC1udW1iZXIudHh0CkBAIC0y NTQsNyArMjU0LDggQEAgQ29kZSAgU2VxIyhoZXgpCUluY2x1ZGUgRmlsZQkJQ29tbWVudHMKICdx Jwk4MC1GRglsaW51eC90ZWxlcGhvbnkuaAlJbnRlcm5ldCBQaG9uZUpBQ0ssIEludGVybmV0IExp bmVKQUNLCiAJCWxpbnV4L2l4anVzZXIuaAkJPGh0dHA6Ly93d3cucXVpY2tuZXQubmV0PgogJ3In CTAwLTFGCWxpbnV4L21zZG9zX2ZzLmggYW5kIGZzL2ZhdC9kaXIuYwotJ3MnCWFsbAlsaW51eC9j ZGsuaAorJ3MnCWFsbAlsaW51eC9jZGsuaAljb25mbGljdCEKKydzJwlhbGwJbGludXgvc3VzcGVu ZF9ibG9ja19kZXYuaAljb25mbGljdCEKICd0JwkwMC03RglsaW51eC9pZl9wcHAuaAogJ3QnCTgw LThGCWxpbnV4L2lzZG5fcHBwLmgKICd0Jwk5MAlsaW51eC90b3NoaWJhLmgKZGlmZiAtLWdpdCBh L0RvY3VtZW50YXRpb24vcG93ZXIvb3Bwb3J0dW5pc3RpYy1zdXNwZW5kLnR4dCBiL0RvY3VtZW50 YXRpb24vcG93ZXIvb3Bwb3J0dW5pc3RpYy1zdXNwZW5kLnR4dAppbmRleCAzZDA2MGU4Li5mMmIx NDVlIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3Bvd2VyL29wcG9ydHVuaXN0aWMtc3VzcGVu ZC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9wb3dlci9vcHBvcnR1bmlzdGljLXN1c3BlbmQudHh0 CkBAIC0xMTcsMyArMTE3LDIwIEBAIGlmIChsaXN0X2VtcHR5KCZzdGF0ZS0+cGVuZGluZ193b3Jr KSkKIGVsc2UKIAlzdXNwZW5kX2Jsb2NrKCZzdGF0ZS0+c3VzcGVuZF9ibG9ja2VyKTsKIAorVXNl ci1zcGFjZSBBUEkKKz09PT09PT09PT09PT09CisKK1RvIGNyZWF0ZSBhIHN1c3BlbmRfYmxvY2tl ciBmcm9tIHVzZXItc3BhY2UsIG9wZW4gdGhlIHN1c3BlbmRfYmxvY2tlciBkZXZpY2U6CisgICAg ZmQgPSBvcGVuKCIvZGV2L3N1c3BlbmRfYmxvY2tlciIsIE9fUkRXUiB8IE9fQ0xPRVhFQyk7Cit0 aGVuIGNhbGw6CisgICAgaW9jdGwoZmQsIFNVU1BFTkRfQkxPQ0tFUl9JT0NUTF9JTklUKHN0cmxl bihuYW1lKSksIG5hbWUpOworCitUbyBhY3RpdmF0ZSBhIHN1c3BlbmRfYmxvY2tlciBjYWxsOgor ICAgIGlvY3RsKGZkLCBTVVNQRU5EX0JMT0NLRVJfSU9DVExfQkxPQ0spOworCitUbyB1bmJsb2Nr IGNhbGw6CisgICAgaW9jdGwoZmQsIFNVU1BFTkRfQkxPQ0tFUl9JT0NUTF9VTkJMT0NLKTsKKwor VG8gZGVzdHJveSB0aGUgc3VzcGVuZF9ibG9ja2VyLCBjbG9zZSB0aGUgZGV2aWNlOgorICAgIGNs b3NlKGZkKTsKKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zdXNwZW5kX2Jsb2NrX2Rldi5o IGIvaW5jbHVkZS9saW51eC9zdXNwZW5kX2Jsb2NrX2Rldi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjI0YmM1YzcKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2xpbnV4 L3N1c3BlbmRfYmxvY2tfZGV2LmgKQEAgLTAsMCArMSwyNSBAQAorLyogaW5jbHVkZS9saW51eC9z dXNwZW5kX2Jsb2NrX2Rldi5oCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSwgSW5j LgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgdmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQg YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgYW5kCisgKiBtYXkgYmUgY29waWVkLCBk aXN0cmlidXRlZCwgYW5kIG1vZGlmaWVkIHVuZGVyIHRob3NlIHRlcm1zLgorICoKKyAqIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisgKgorICovCisKKyNpZm5kZWYgX0xJTlVYX1NVU1BFTkRfQkxPQ0tfREVW X0gKKyNkZWZpbmUgX0xJTlVYX1NVU1BFTkRfQkxPQ0tfREVWX0gKKworI2luY2x1ZGUgPGxpbnV4 L2lvY3RsLmg+CisKKyNkZWZpbmUgU1VTUEVORF9CTE9DS0VSX0lPQ1RMX0lOSVQobGVuKQkJX0lP QyhfSU9DX1dSSVRFLCAncycsIDAsIGxlbikKKyNkZWZpbmUgU1VTUEVORF9CTE9DS0VSX0lPQ1RM X0JMT0NLCQlfSU8oJ3MnLCAxKQorI2RlZmluZSBTVVNQRU5EX0JMT0NLRVJfSU9DVExfVU5CTE9D SwkJX0lPKCdzJywgMikKKworI2VuZGlmCmRpZmYgLS1naXQgYS9rZXJuZWwvcG93ZXIvS2NvbmZp ZyBiL2tlcm5lbC9wb3dlci9LY29uZmlnCmluZGV4IDU1YTA2YTEuLmZlNWEyZjIgMTAwNjQ0Ci0t LSBhL2tlcm5lbC9wb3dlci9LY29uZmlnCisrKyBiL2tlcm5lbC9wb3dlci9LY29uZmlnCkBAIC0x NDYsNiArMTQ2LDE1IEBAIGNvbmZpZyBPUFBPUlRVTklTVElDX1NVU1BFTkQKIAkgIGRldGVybWlu ZXMgdGhlIHNsZWVwIHN0YXRlIHRoZSBzeXN0ZW0gd2lsbCBiZSBwdXQgaW50byB3aGVuIHRoZXJl IGFyZQogCSAgbm8gYWN0aXZlIHN1c3BlbmQgYmxvY2tlcnMuCiAKK2NvbmZpZyBVU0VSX1NVU1BF TkRfQkxPQ0tFUlMKKwlib29sICJVc2Vyc3BhY2Ugc3VzcGVuZCBibG9ja2VycyIKKwlkZXBlbmRz IG9uIE9QUE9SVFVOSVNUSUNfU1VTUEVORAorCWRlZmF1bHQgeQorCS0tLWhlbHAtLS0KKwkgIFVz ZXItc3BhY2Ugc3VzcGVuZCBibG9jayBhcGkuIENyZWF0ZXMgYSBtaXNjIGRldmljZSB3aXRoIGlv Y3RscworCSAgdG8gY3JlYXRlLCBibG9jayBhbmQgdW5ibG9jayBhIHN1c3BlbmRfYmxvY2tlci4g VGhlIHN1c3BlbmRfYmxvY2tlcgorCSAgd2lsbCBiZSBkZWxldGVkIHdoZW4gdGhlIGRldmljZSBp cyBjbG9zZWQuCisKIGNvbmZpZyBISUJFUk5BVElPTl9OVlMKIAlib29sCiAKZGlmZiAtLWdpdCBh L2tlcm5lbC9wb3dlci9NYWtlZmlsZSBiL2tlcm5lbC9wb3dlci9NYWtlZmlsZQppbmRleCBlZTUy NzZkLi43OGY3MDNiIDEwMDY0NAotLS0gYS9rZXJuZWwvcG93ZXIvTWFrZWZpbGUKKysrIGIva2Vy bmVsL3Bvd2VyL01ha2VmaWxlCkBAIC04LDYgKzgsNyBAQCBvYmotJChDT05GSUdfUE1fU0xFRVAp CQkrPSBjb25zb2xlLm8KIG9iai0kKENPTkZJR19GUkVFWkVSKQkJKz0gcHJvY2Vzcy5vCiBvYmot JChDT05GSUdfU1VTUEVORCkJCSs9IHN1c3BlbmQubwogb2JqLSQoQ09ORklHX09QUE9SVFVOSVNU SUNfU1VTUEVORCkJKz0gc3VzcGVuZF9ibG9ja2VyLm8KK29iai0kKENPTkZJR19VU0VSX1NVU1BF TkRfQkxPQ0tFUlMpCSs9IHVzZXJfc3VzcGVuZF9ibG9ja2VyLm8KIG9iai0kKENPTkZJR19QTV9U RVNUX1NVU1BFTkQpCSs9IHN1c3BlbmRfdGVzdC5vCiBvYmotJChDT05GSUdfSElCRVJOQVRJT04p CSs9IGhpYmVybmF0ZS5vIHNuYXBzaG90Lm8gc3dhcC5vIHVzZXIubwogb2JqLSQoQ09ORklHX0hJ QkVSTkFUSU9OX05WUykJKz0gaGliZXJuYXRlX252cy5vCmRpZmYgLS1naXQgYS9rZXJuZWwvcG93 ZXIvdXNlcl9zdXNwZW5kX2Jsb2NrZXIuYyBiL2tlcm5lbC9wb3dlci91c2VyX3N1c3BlbmRfYmxv Y2tlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjMWQwNmYKLS0tIC9k ZXYvbnVsbAorKysgYi9rZXJuZWwvcG93ZXIvdXNlcl9zdXNwZW5kX2Jsb2NrZXIuYwpAQCAtMCww ICsxLDEyOCBAQAorLyoga2VybmVsL3Bvd2VyL3VzZXJfc3VzcGVuZF9ibG9jay5jCisgKgorICog Q29weXJpZ2h0IChDKSAyMDA5LTIwMTAgR29vZ2xlLCBJbmMuCisgKgorICogVGhpcyBzb2Z0d2Fy ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwor ICogTGljZW5zZSB2ZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBhbmQKKyAqIG1heSBiZSBjb3BpZWQsIGRpc3RyaWJ1dGVkLCBhbmQgbW9kaWZp ZWQgdW5kZXIgdGhvc2UgdGVybXMuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQor ICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKi8K KworI2luY2x1ZGUgPGxpbnV4L2ZzLmg+CisjaW5jbHVkZSA8bGludXgvbWlzY2RldmljZS5oPgor I2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L3VhY2Nlc3MuaD4KKyNp bmNsdWRlIDxsaW51eC9zbGFiLmg+CisjaW5jbHVkZSA8bGludXgvc3VzcGVuZF9ibG9ja2VyLmg+ CisjaW5jbHVkZSA8bGludXgvc3VzcGVuZF9ibG9ja19kZXYuaD4KKworZW51bSB7CisJREVCVUdf RkFJTFVSRQk9IEJJVCgwKSwKK307CitzdGF0aWMgaW50IGRlYnVnX21hc2sgPSBERUJVR19GQUlM VVJFOworbW9kdWxlX3BhcmFtX25hbWVkKGRlYnVnX21hc2ssIGRlYnVnX21hc2ssIGludCwgU19J UlVHTyB8IFNfSVdVU1IgfCBTX0lXR1JQKTsKKworc3RhdGljIERFRklORV9NVVRFWChpb2N0bF9s b2NrKTsKKworc3RydWN0IHVzZXJfc3VzcGVuZF9ibG9ja2VyIHsKKwlzdHJ1Y3Qgc3VzcGVuZF9i bG9ja2VyCWJsb2NrZXI7CisJY2hhcgkJCW5hbWVbMF07Cit9OworCitzdGF0aWMgaW50IGNyZWF0 ZV91c2VyX3N1c3BlbmRfYmxvY2tlcihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCBfX3VzZXIgKm5h bWUsCisJCQkJIHNpemVfdCBuYW1lX2xlbikKK3sKKwlzdHJ1Y3QgdXNlcl9zdXNwZW5kX2Jsb2Nr ZXIgKmJsOworCWlmIChmaWxlLT5wcml2YXRlX2RhdGEpCisJCXJldHVybiAtRUJVU1k7CisJaWYg KG5hbWVfbGVuID4gTkFNRV9NQVgpCisJCXJldHVybiAtRU5BTUVUT09MT05HOworCWJsID0ga3ph bGxvYyhzaXplb2YoKmJsKSArIG5hbWVfbGVuICsgMSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFibCkK KwkJcmV0dXJuIC1FTk9NRU07CisJaWYgKGNvcHlfZnJvbV91c2VyKGJsLT5uYW1lLCBuYW1lLCBu YW1lX2xlbikpCisJCWdvdG8gZXJyX2ZhdWx0OworCXN1c3BlbmRfYmxvY2tlcl9pbml0KCZibC0+ YmxvY2tlciwgYmwtPm5hbWUpOworCWZpbGUtPnByaXZhdGVfZGF0YSA9IGJsOworCXJldHVybiAw OworCitlcnJfZmF1bHQ6CisJa2ZyZWUoYmwpOworCXJldHVybiAtRUZBVUxUOworfQorCitzdGF0 aWMgbG9uZyB1c2VyX3N1c3BlbmRfYmxvY2tlcl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5z aWduZWQgaW50IGNtZCwKKwkJCQl1bnNpZ25lZCBsb25nIF9hcmcpCit7CisJdm9pZCBfX3VzZXIg KmFyZyA9ICh2b2lkIF9fdXNlciAqKV9hcmc7CisJc3RydWN0IHVzZXJfc3VzcGVuZF9ibG9ja2Vy ICpibDsKKwlsb25nIHJldDsKKworCW11dGV4X2xvY2soJmlvY3RsX2xvY2spOworCWlmICgoY21k ICYgfklPQ1NJWkVfTUFTSykgPT0gU1VTUEVORF9CTE9DS0VSX0lPQ1RMX0lOSVQoMCkpIHsKKwkJ cmV0ID0gY3JlYXRlX3VzZXJfc3VzcGVuZF9ibG9ja2VyKGZpbGUsIGFyZywgX0lPQ19TSVpFKGNt ZCkpOworCQlnb3RvIGRvbmU7CisJfQorCWJsID0gZmlsZS0+cHJpdmF0ZV9kYXRhOworCWlmICgh YmwpIHsKKwkJcmV0ID0gLUVOT0VOVDsKKwkJZ290byBkb25lOworCX0KKwlzd2l0Y2ggKGNtZCkg eworCWNhc2UgU1VTUEVORF9CTE9DS0VSX0lPQ1RMX0JMT0NLOgorCQlzdXNwZW5kX2Jsb2NrKCZi bC0+YmxvY2tlcik7CisJCXJldCA9IDA7CisJCWJyZWFrOworCWNhc2UgU1VTUEVORF9CTE9DS0VS X0lPQ1RMX1VOQkxPQ0s6CisJCXN1c3BlbmRfdW5ibG9jaygmYmwtPmJsb2NrZXIpOworCQlyZXQg PSAwOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXQgPSAtRU5PVFNVUFA7CisJfQorZG9uZToK KwlpZiAocmV0ICYmIChkZWJ1Z19tYXNrICYgREVCVUdfRkFJTFVSRSkpCisJCXByX2VycigidXNl cl9zdXNwZW5kX2Jsb2NrZXJfaW9jdGw6IGNtZCAleCBmYWlsZWQsICVsZFxuIiwKKwkJCWNtZCwg cmV0KTsKKwltdXRleF91bmxvY2soJmlvY3RsX2xvY2spOworCXJldHVybiByZXQ7Cit9CisKK3N0 YXRpYyBpbnQgdXNlcl9zdXNwZW5kX2Jsb2NrZXJfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2Rl LCBzdHJ1Y3QgZmlsZSAqZmlsZSkKK3sKKwlzdHJ1Y3QgdXNlcl9zdXNwZW5kX2Jsb2NrZXIgKmJs ID0gZmlsZS0+cHJpdmF0ZV9kYXRhOworCWlmICghYmwpCisJCXJldHVybiAwOworCXN1c3BlbmRf YmxvY2tlcl9kZXN0cm95KCZibC0+YmxvY2tlcik7CisJa2ZyZWUoYmwpOworCXJldHVybiAwOwor fQorCitjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHVzZXJfc3VzcGVuZF9ibG9ja2VyX2Zv cHMgPSB7CisJLnJlbGVhc2UgPSB1c2VyX3N1c3BlbmRfYmxvY2tlcl9yZWxlYXNlLAorCS51bmxv Y2tlZF9pb2N0bCA9IHVzZXJfc3VzcGVuZF9ibG9ja2VyX2lvY3RsLAorfTsKKworc3RydWN0IG1p c2NkZXZpY2UgdXNlcl9zdXNwZW5kX2Jsb2NrZXJfZGV2aWNlID0geworCS5taW5vciA9IE1JU0Nf RFlOQU1JQ19NSU5PUiwKKwkubmFtZSA9ICJzdXNwZW5kX2Jsb2NrZXIiLAorCS5mb3BzID0gJnVz ZXJfc3VzcGVuZF9ibG9ja2VyX2ZvcHMsCit9OworCitzdGF0aWMgaW50IF9faW5pdCB1c2VyX3N1 c3BlbmRfYmxvY2tlcl9pbml0KHZvaWQpCit7CisJcmV0dXJuIG1pc2NfcmVnaXN0ZXIoJnVzZXJf c3VzcGVuZF9ibG9ja2VyX2RldmljZSk7Cit9CisKK3N0YXRpYyB2b2lkIF9fZXhpdCB1c2VyX3N1 c3BlbmRfYmxvY2tlcl9leGl0KHZvaWQpCit7CisJbWlzY19kZXJlZ2lzdGVyKCZ1c2VyX3N1c3Bl bmRfYmxvY2tlcl9kZXZpY2UpOworfQorCittb2R1bGVfaW5pdCh1c2VyX3N1c3BlbmRfYmxvY2tl cl9pbml0KTsKK21vZHVsZV9leGl0KHVzZXJfc3VzcGVuZF9ibG9ja2VyX2V4aXQpOwotLSAKMS42 LjUuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGlu dXgtcG0gbWFpbGluZyBsaXN0CmxpbnV4LXBtQGxpc3RzLmxpbnV4LWZvdW5kYXRpb24ub3JnCmh0 dHBzOi8vbGlzdHMubGludXgtZm91bmRhdGlvbi5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1w bQ==