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: Tue, 14 Apr 2009 18:41:26 -0700 Message-ID: <1239759692-28617-3-git-send-email-arve@android.com> References: <1239759692-28617-1-git-send-email-arve@android.com> <1239759692-28617-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: <1239759692-28617-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 Cc: ncunningham@crca.org.au, u.luckas@road.de, swetland@google.com, r-woodruff2@ti.comrjw, @sisk.pl List-Id: linux-pm@vger.kernel.org QWRkcyBpb2N0bHMgdG8gY3JlYXRlIGEgc3VzcGVuZF9ibG9ja2VyLCBhbmQgdG8gYmxvY2sgYW5k IHVuYmxvY2sgc3VzcGVuZC4KVG8gZGVsZXRlIHRoZSBzdXNwZW5kX2Jsb2NrZXIsIGNsb3NlIHRo ZSBkZXZpY2UuCgpTaWduZWQtb2ZmLWJ5OiBBcnZlIEhqw7hubmV2w6VnIDxhcnZlQGFuZHJvaWQu Y29tPgotLS0KIERvY3VtZW50YXRpb24vcG93ZXIvc3VzcGVuZC1ibG9ja2Vycy50eHQgfCAgIDE3 ICsrKysKIGluY2x1ZGUvbGludXgvc3VzcGVuZF9ibG9ja19kZXYuaCAgICAgICAgfCAgIDI1ICsr KysrKwoga2VybmVsL3Bvd2VyL0tjb25maWcgICAgICAgICAgICAgICAgICAgICB8ICAgIDkgKysK IGtlcm5lbC9wb3dlci9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIGtlcm5l bC9wb3dlci91c2VyX3N1c3BlbmRfYmxvY2suYyAgICAgICAgfCAgMTI1ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCAxNzcgaW5zZXJ0aW9ucygrKSwgMCBk ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2xpbnV4L3N1c3BlbmRfYmxv Y2tfZGV2LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBrZXJuZWwvcG93ZXIvdXNlcl9zdXNwZW5kX2Js b2NrLmMKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Bvd2VyL3N1c3BlbmQtYmxvY2tlcnMu dHh0IGIvRG9jdW1lbnRhdGlvbi9wb3dlci9zdXNwZW5kLWJsb2NrZXJzLnR4dAppbmRleCA3NDNi ODcwLi4zNWJjNzEzIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3Bvd2VyL3N1c3BlbmQtYmxv Y2tlcnMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vcG93ZXIvc3VzcGVuZC1ibG9ja2Vycy50eHQK QEAgLTc0LDMgKzc0LDIwIEBAIGlmIChsaXN0X2VtcHR5KCZzdGF0ZS0+cGVuZGluZ193b3JrKSkK IGVsc2UKIAlzdXNwZW5kX2Jsb2NrKCZzdGF0ZS0+c3VzcGVuZF9ibG9ja2VyKTsKIAorVXNlci1z cGFjZSBBUEkKKz09PT09PT09PT09PT09CisKK1RvIGNyZWF0ZSBhIHN1c3BlbmRfYmxvY2tlciBm cm9tIHVzZXItc3BhY2UsIG9wZW4gdGhlIHN1c3BlbmRfYmxvY2tlciBkZXZpY2U6CisgICAgZmQg PSBvcGVuKCIvZGV2L3N1c3BlbmRfYmxvY2tlciIsIE9fUkRXUiB8IE9fQ0xPRVhFQyk7Cit0aGVu IGNhbGw6CisgICAgaW9jdGwoZmQsIFNVU1BFTkRfQkxPQ0tFUl9JT0NUTF9JTklUKHN0cmxlbihu YW1lKSksIG5hbWUpOworCitUbyBhY3RpdmF0ZSBhIHN1c3BlbmRfYmxvY2tlciBjYWxsOgorICAg IGlvY3RsKGZkLCBTVVNQRU5EX0JMT0NLRVJfSU9DVExfQkxPQ0spOworCitUbyB1bmJsb2NrIGNh bGw6CisgICAgaW9jdGwoZmQsIFNVU1BFTkRfQkxPQ0tFUl9JT0NUTF9VTkJMT0NLKTsKKworVG8g ZGVzdHJveSB0aGUgc3VzcGVuZF9ibG9ja2VyLCBjbG9zZSB0aGUgZGV2aWNlOgorICAgIGNsb3Nl KGZkKTsKKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zdXNwZW5kX2Jsb2NrX2Rldi5oIGIv aW5jbHVkZS9saW51eC9zdXNwZW5kX2Jsb2NrX2Rldi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmE3YzBiZjkKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2xpbnV4L3N1 c3BlbmRfYmxvY2tfZGV2LmgKQEAgLTAsMCArMSwyNSBAQAorLyogaW5jbHVkZS9saW51eC9zdXNw ZW5kX2Jsb2NrX2Rldi5oCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSwgSW5jLgor ICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgdmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgYW5kCisgKiBtYXkgYmUgY29waWVkLCBkaXN0 cmlidXRlZCwgYW5kIG1vZGlmaWVkIHVuZGVyIHRob3NlIHRlcm1zLgorICoKKyAqIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCisgKgorICovCisKKyNpZm5kZWYgX0xJTlVYX1NVU1BFTkRfQkxPQ0tfREVWX0gK KyNkZWZpbmUgX0xJTlVYX1NVU1BFTkRfQkxPQ0tfREVWX0gKKworI2luY2x1ZGUgPGxpbnV4L2lv Y3RsLmg+CisKKyNkZWZpbmUgU1VTUEVORF9CTE9DS0VSX0lPQ1RMX0lOSVQobGVuKQkJX0lPQyhf SU9DX1dSSVRFLCAncycsIDAsIGxlbikKKyNkZWZpbmUgU1VTUEVORF9CTE9DS0VSX0lPQ1RMX0JM T0NLCQlfSU8oJ3MnLCAxKQorI2RlZmluZSBTVVNQRU5EX0JMT0NLRVJfSU9DVExfVU5CTE9DSwkJ X0lPKCdzJywgMykKKworI2VuZGlmCmRpZmYgLS1naXQgYS9rZXJuZWwvcG93ZXIvS2NvbmZpZyBi L2tlcm5lbC9wb3dlci9LY29uZmlnCmluZGV4IDlkMWRmMTMuLjJjZjRjNGQgMTAwNjQ0Ci0tLSBh L2tlcm5lbC9wb3dlci9LY29uZmlnCisrKyBiL2tlcm5lbC9wb3dlci9LY29uZmlnCkBAIC0xMjYs NiArMTI2LDE1IEBAIGNvbmZpZyBTVVNQRU5EX0JMT0NLCiAJICAvc3lzL3Bvd2VyL3JlcXVlc3Rf c3RhdGUsIHRoZSByZXF1ZXN0ZWQgc2xlZXAgc3RhdGUgd2lsbCBiZSBlbnRlcmVkCiAJICB3aGVu IG5vIHN1c3BlbmRfYmxvY2tlcnMgYXJlIGFjdGl2ZS4KIAorY29uZmlnIFVTRVJfU1VTUEVORF9C TE9DSworCWJvb2wgIlVzZXJzcGFjZSBzdXNwZW5kIGJsb2NrZXJzIgorCWRlcGVuZHMgb24gU1VT UEVORF9CTE9DSworCWRlZmF1bHQgeQorCS0tLWhlbHAtLS0KKwkgIFVzZXItc3BhY2Ugc3VzcGVu ZCBibG9jayBhcGkuIENyZWF0ZXMgYSBtaXNjIGRldmljZSB3aXRoIGlvY3RscworCSAgdG8gY3Jl YXRlLCBibG9jayBhbmQgdW5ibG9jayBhIHN1c3BlbmRfYmxvY2tlci4gVGhlIHN1c3BlbmRfYmxv Y2tlcgorCSAgd2lsbCBiZSBkZWxldGVkIHdoZW4gdGhlIGRldmljZSBpcyBjbG9zZWQuCisKIGNv bmZpZyBISUJFUk5BVElPTgogCWJvb2wgIkhpYmVybmF0aW9uIChha2EgJ3N1c3BlbmQgdG8gZGlz aycpIgogCWRlcGVuZHMgb24gUE0gJiYgU1dBUCAmJiBBUkNIX0hJQkVSTkFUSU9OX1BPU1NJQkxF CmRpZmYgLS1naXQgYS9rZXJuZWwvcG93ZXIvTWFrZWZpbGUgYi9rZXJuZWwvcG93ZXIvTWFrZWZp bGUKaW5kZXggMjljZGM5ZS4uNWM1MjRmMSAxMDA2NDQKLS0tIGEva2VybmVsL3Bvd2VyL01ha2Vm aWxlCisrKyBiL2tlcm5lbC9wb3dlci9NYWtlZmlsZQpAQCAtNyw2ICs3LDcgQEAgb2JqLSQoQ09O RklHX1BNKQkJKz0gbWFpbi5vCiBvYmotJChDT05GSUdfUE1fU0xFRVApCQkrPSBjb25zb2xlLm8K IG9iai0kKENPTkZJR19GUkVFWkVSKQkJKz0gcHJvY2Vzcy5vCiBvYmotJChDT05GSUdfU1VTUEVO RF9CTE9DSykJKz0gc3VzcGVuZF9ibG9jay5vCitvYmotJChDT05GSUdfVVNFUl9TVVNQRU5EX0JM T0NLKQkrPSB1c2VyX3N1c3BlbmRfYmxvY2subwogb2JqLSQoQ09ORklHX0hJQkVSTkFUSU9OKQkr PSBzd3N1c3AubyBkaXNrLm8gc25hcHNob3QubyBzd2FwLm8gdXNlci5vCiAKIG9iai0kKENPTkZJ R19NQUdJQ19TWVNSUSkJKz0gcG93ZXJvZmYubwpkaWZmIC0tZ2l0IGEva2VybmVsL3Bvd2VyL3Vz ZXJfc3VzcGVuZF9ibG9jay5jIGIva2VybmVsL3Bvd2VyL3VzZXJfc3VzcGVuZF9ibG9jay5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4MjQwN2MKLS0tIC9kZXYvbnVsbAor KysgYi9rZXJuZWwvcG93ZXIvdXNlcl9zdXNwZW5kX2Jsb2NrLmMKQEAgLTAsMCArMSwxMjUgQEAK Ky8qIGtlcm5lbC9wb3dlci91c2VyX3N1c3BlbmRfYmxvY2suYworICoKKyAqIENvcHlyaWdodCAo QykgMjAwOSBHb29nbGUsIEluYy4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIHZlcnNp b24gMiwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGFuZAor ICogbWF5IGJlIGNvcGllZCwgZGlzdHJpYnV0ZWQsIGFuZCBtb2RpZmllZCB1bmRlciB0aG9zZSB0 ZXJtcy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqLworCisjaW5jbHVkZSA8bGlu dXgvZnMuaD4KKyNpbmNsdWRlIDxsaW51eC9taXNjZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgv bW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvdWFjY2Vzcy5oPgorI2luY2x1ZGUgPGxpbnV4L3N1 c3BlbmRfYmxvY2suaD4KKyNpbmNsdWRlIDxsaW51eC9zdXNwZW5kX2Jsb2NrX2Rldi5oPgorCitl bnVtIHsKKwlERUJVR19GQUlMVVJFCT0gQklUKDApLAorfTsKK3N0YXRpYyBpbnQgZGVidWdfbWFz ayA9IERFQlVHX0ZBSUxVUkU7Cittb2R1bGVfcGFyYW1fbmFtZWQoZGVidWdfbWFzaywgZGVidWdf bWFzaywgaW50LCBTX0lSVUdPIHwgU19JV1VTUiB8IFNfSVdHUlApOworCitzdGF0aWMgREVGSU5F X01VVEVYKGlvY3RsX2xvY2spOworCitzdHJ1Y3QgdXNlcl9zdXNwZW5kX2Jsb2NrZXIgeworCXN0 cnVjdCBzdXNwZW5kX2Jsb2NrZXIJYmxvY2tlcjsKKwljaGFyCQkJbmFtZVswXTsKK307CisKK3N0 YXRpYyBpbnQgY3JlYXRlX3VzZXJfc3VzcGVuZF9ibG9ja2VyKHN0cnVjdCBmaWxlICpmaWxlLCB2 b2lkIF9fdXNlciAqbmFtZSwKKwkJCQkgc2l6ZV90IG5hbWVfbGVuKQoreworCXN0cnVjdCB1c2Vy X3N1c3BlbmRfYmxvY2tlciAqYmw7CisJaWYgKGZpbGUtPnByaXZhdGVfZGF0YSkKKwkJcmV0dXJu IC1FQlVTWTsKKwlibCA9IGt6YWxsb2Moc2l6ZW9mKCpibCkgKyBuYW1lX2xlbiArIDEsIEdGUF9L RVJORUwpOworCWlmICghYmwpCisJCXJldHVybiAtRU5PTUVNOworCWlmIChjb3B5X2Zyb21fdXNl cihibC0+bmFtZSwgbmFtZSwgbmFtZV9sZW4pKQorCQlnb3RvIGVycl9mYXVsdDsKKwlzdXNwZW5k X2Jsb2NrZXJfaW5pdCgmYmwtPmJsb2NrZXIsIGJsLT5uYW1lKTsKKwlmaWxlLT5wcml2YXRlX2Rh dGEgPSBibDsKKwlyZXR1cm4gMDsKKworZXJyX2ZhdWx0OgorCWtmcmVlKGJsKTsKKwlyZXR1cm4g LUVGQVVMVDsKK30KKworc3RhdGljIGxvbmcgdXNlcl9zdXNwZW5kX2Jsb2NrZXJfaW9jdGwoc3Ry dWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsCisJCQkJdW5zaWduZWQgbG9uZyBfYXJn KQoreworCXZvaWQgX191c2VyICphcmcgPSAodm9pZCBfX3VzZXIgKilfYXJnOworCXN0cnVjdCB1 c2VyX3N1c3BlbmRfYmxvY2tlciAqYmw7CisJbG9uZyByZXQ7CisKKwltdXRleF9sb2NrKCZpb2N0 bF9sb2NrKTsKKwlpZiAoKGNtZCAmIH5JT0NTSVpFX01BU0spID09IFNVU1BFTkRfQkxPQ0tFUl9J T0NUTF9JTklUKDApKSB7CisJCXJldCA9IGNyZWF0ZV91c2VyX3N1c3BlbmRfYmxvY2tlcihmaWxl LCBhcmcsIF9JT0NfU0laRShjbWQpKTsKKwkJZ290byBkb25lOworCX0KKwlibCA9IGZpbGUtPnBy aXZhdGVfZGF0YTsKKwlpZiAoIWJsKSB7CisJCXJldCA9IC1FTk9FTlQ7CisJCWdvdG8gZG9uZTsK Kwl9CisJc3dpdGNoIChjbWQpIHsKKwljYXNlIFNVU1BFTkRfQkxPQ0tFUl9JT0NUTF9CTE9DSzoK KwkJc3VzcGVuZF9ibG9jaygmYmwtPmJsb2NrZXIpOworCQlyZXQgPSAwOworCQlicmVhazsKKwlj YXNlIFNVU1BFTkRfQkxPQ0tFUl9JT0NUTF9VTkJMT0NLOgorCQlzdXNwZW5kX3VuYmxvY2soJmJs LT5ibG9ja2VyKTsKKwkJcmV0ID0gMDsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0ID0gLUVO T1RTVVBQOworCX0KK2RvbmU6CisJaWYgKHJldCAmJiBkZWJ1Z19tYXNrICYgREVCVUdfRkFJTFVS RSkKKwkJcHJfZXJyKCJ1c2VyX3N1c3BlbmRfYmxvY2tlcl9pb2N0bDogY21kICV4IGZhaWxlZCwg JWxkXG4iLAorCQkJY21kLCByZXQpOworCW11dGV4X3VubG9jaygmaW9jdGxfbG9jayk7CisJcmV0 dXJuIHJldDsKK30KKworc3RhdGljIGludCB1c2VyX3N1c3BlbmRfYmxvY2tlcl9yZWxlYXNlKHN0 cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKQoreworCXN0cnVjdCB1c2VyX3N1 c3BlbmRfYmxvY2tlciAqYmwgPSBmaWxlLT5wcml2YXRlX2RhdGE7CisJaWYgKCFibCkKKwkJcmV0 dXJuIDA7CisJc3VzcGVuZF9ibG9ja2VyX2Rlc3Ryb3koJmJsLT5ibG9ja2VyKTsKKwlrZnJlZShi bCk7CisJcmV0dXJuIDA7Cit9CisKK2NvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgdXNlcl9z dXNwZW5kX2Jsb2NrZXJfZm9wcyA9IHsKKwkucmVsZWFzZSA9IHVzZXJfc3VzcGVuZF9ibG9ja2Vy X3JlbGVhc2UsCisJLnVubG9ja2VkX2lvY3RsID0gdXNlcl9zdXNwZW5kX2Jsb2NrZXJfaW9jdGws Cit9OworCitzdHJ1Y3QgbWlzY2RldmljZSB1c2VyX3N1c3BlbmRfYmxvY2tlcl9kZXZpY2UgPSB7 CisJLm1pbm9yID0gTUlTQ19EWU5BTUlDX01JTk9SLAorCS5uYW1lID0gInN1c3BlbmRfYmxvY2tl ciIsCisJLmZvcHMgPSAmdXNlcl9zdXNwZW5kX2Jsb2NrZXJfZm9wcywKK307CisKK3N0YXRpYyBp bnQgX19pbml0IHVzZXJfc3VzcGVuZF9ibG9ja2VyX2luaXQodm9pZCkKK3sKKwlyZXR1cm4gbWlz Y19yZWdpc3RlcigmdXNlcl9zdXNwZW5kX2Jsb2NrZXJfZGV2aWNlKTsKK30KKworc3RhdGljIHZv aWQgX19leGl0IHVzZXJfc3VzcGVuZF9ibG9ja2VyX2V4aXQodm9pZCkKK3sKKwltaXNjX2RlcmVn aXN0ZXIoJnVzZXJfc3VzcGVuZF9ibG9ja2VyX2RldmljZSk7Cit9CisKK21vZHVsZV9pbml0KHVz ZXJfc3VzcGVuZF9ibG9ja2VyX2luaXQpOworbW9kdWxlX2V4aXQodXNlcl9zdXNwZW5kX2Jsb2Nr ZXJfZXhpdCk7Ci0tIAoxLjYuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KbGludXgtcG0gbWFpbGluZyBsaXN0CmxpbnV4LXBtQGxpc3RzLmxpbnV4LWZv dW5kYXRpb24ub3JnCmh0dHBzOi8vbGlzdHMubGludXgtZm91bmRhdGlvbi5vcmcvbWFpbG1hbi9s aXN0aW5mby9saW51eC1wbQ==