From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?utf-8?q?Arve=20Hj=C3=B8nnev=C3=A5g?= Subject: [PATCH 2/9] PM: suspend_block: Add driver to access suspend blockers from user-space Date: Tue, 5 May 2009 21:18:42 -0700 Message-ID: <1241583529-5092-3-git-send-email-arve@android.com> References: <1241583529-5092-1-git-send-email-arve@android.com> <1241583529-5092-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: <1241583529-5092-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 List-Id: linux-pm@vger.kernel.org QWRkIGEgbWlzYyBkZXZpY2UsICJzdXNwZW5kX2Jsb2NrZXIiLCB0aGF0IGFsbG93cyB1c2VyLXNw YWNlIHByb2Nlc3Nlcwp0byBibG9jayBhdXRvIHN1c3BlbmQuIFRoZSBkZXZpY2UgaGFzIGlvY3Rs cyB0byBjcmVhdGUgYSBzdXNwZW5kX2Jsb2NrZXIsCmFuZCB0byBibG9jayBhbmQgdW5ibG9jayBz dXNwZW5kLiBUbyBkZWxldGUgdGhlIHN1c3BlbmRfYmxvY2tlciwgY2xvc2UKdGhlIGRldmljZS4K ClNpZ25lZC1vZmYtYnk6IEFydmUgSGrDuG5uZXbDpWcgPGFydmVAYW5kcm9pZC5jb20+Ci0tLQog RG9jdW1lbnRhdGlvbi9wb3dlci9zdXNwZW5kLWJsb2NrZXJzLnR4dCB8ICAgMTcgKysrKwogaW5j bHVkZS9saW51eC9zdXNwZW5kX2Jsb2NrX2Rldi5oICAgICAgICB8ICAgMjUgKysrKysrCiBrZXJu ZWwvcG93ZXIvS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgIHwgICAgOSArKwoga2VybmVsL3Bv d2VyL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwoga2VybmVsL3Bvd2VyL3Vz ZXJfc3VzcGVuZF9ibG9ja2VyLmMgICAgICB8ICAxMjUgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCiA1IGZpbGVzIGNoYW5nZWQsIDE3NyBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygt KQogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvbGludXgvc3VzcGVuZF9ibG9ja19kZXYuaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IGtlcm5lbC9wb3dlci91c2VyX3N1c3BlbmRfYmxvY2tlci5jCgpk aWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9wb3dlci9zdXNwZW5kLWJsb2NrZXJzLnR4dCBiL0Rv Y3VtZW50YXRpb24vcG93ZXIvc3VzcGVuZC1ibG9ja2Vycy50eHQKaW5kZXggNWEzM2VkNi4uOWQ3 OGQ0ZSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9wb3dlci9zdXNwZW5kLWJsb2NrZXJzLnR4 dAorKysgYi9Eb2N1bWVudGF0aW9uL3Bvd2VyL3N1c3BlbmQtYmxvY2tlcnMudHh0CkBAIC05Miwz ICs5MiwyMCBAQCBpZiAobGlzdF9lbXB0eSgmc3RhdGUtPnBlbmRpbmdfd29yaykpCiBlbHNlCiAJ c3VzcGVuZF9ibG9jaygmc3RhdGUtPnN1c3BlbmRfYmxvY2tlcik7CiAKK1VzZXItc3BhY2UgQVBJ Cis9PT09PT09PT09PT09PQorCitUbyBjcmVhdGUgYSBzdXNwZW5kX2Jsb2NrZXIgZnJvbSB1c2Vy LXNwYWNlLCBvcGVuIHRoZSBzdXNwZW5kX2Jsb2NrZXIgZGV2aWNlOgorICAgIGZkID0gb3Blbigi L2Rldi9zdXNwZW5kX2Jsb2NrZXIiLCBPX1JEV1IgfCBPX0NMT0VYRUMpOwordGhlbiBjYWxsOgor ICAgIGlvY3RsKGZkLCBTVVNQRU5EX0JMT0NLRVJfSU9DVExfSU5JVChzdHJsZW4obmFtZSkpLCBu YW1lKTsKKworVG8gYWN0aXZhdGUgYSBzdXNwZW5kX2Jsb2NrZXIgY2FsbDoKKyAgICBpb2N0bChm ZCwgU1VTUEVORF9CTE9DS0VSX0lPQ1RMX0JMT0NLKTsKKworVG8gdW5ibG9jayBjYWxsOgorICAg IGlvY3RsKGZkLCBTVVNQRU5EX0JMT0NLRVJfSU9DVExfVU5CTE9DSyk7CisKK1RvIGRlc3Ryb3kg dGhlIHN1c3BlbmRfYmxvY2tlciwgY2xvc2UgdGhlIGRldmljZToKKyAgICBjbG9zZShmZCk7CisK ZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc3VzcGVuZF9ibG9ja19kZXYuaCBiL2luY2x1ZGUv bGludXgvc3VzcGVuZF9ibG9ja19kZXYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi5hN2MwYmY5Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9saW51eC9zdXNwZW5kX2Js b2NrX2Rldi5oCkBAIC0wLDAgKzEsMjUgQEAKKy8qIGluY2x1ZGUvbGludXgvc3VzcGVuZF9ibG9j a19kZXYuaAorICoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUsIEluYy4KKyAqCisgKiBU aGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljCisgKiBMaWNlbnNlIHZlcnNpb24gMiwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIGFuZAorICogbWF5IGJlIGNvcGllZCwgZGlzdHJpYnV0ZWQs IGFuZCBtb2RpZmllZCB1bmRlciB0aG9zZSB0ZXJtcy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgorICoKKyAqLworCisjaWZuZGVmIF9MSU5VWF9TVVNQRU5EX0JMT0NLX0RFVl9ICisjZGVmaW5l IF9MSU5VWF9TVVNQRU5EX0JMT0NLX0RFVl9ICisKKyNpbmNsdWRlIDxsaW51eC9pb2N0bC5oPgor CisjZGVmaW5lIFNVU1BFTkRfQkxPQ0tFUl9JT0NUTF9JTklUKGxlbikJCV9JT0MoX0lPQ19XUklU RSwgJ3MnLCAwLCBsZW4pCisjZGVmaW5lIFNVU1BFTkRfQkxPQ0tFUl9JT0NUTF9CTE9DSwkJX0lP KCdzJywgMSkKKyNkZWZpbmUgU1VTUEVORF9CTE9DS0VSX0lPQ1RMX1VOQkxPQ0sJCV9JTygncycs IDMpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEva2VybmVsL3Bvd2VyL0tjb25maWcgYi9rZXJuZWwv cG93ZXIvS2NvbmZpZwppbmRleCBhMzU4N2QzLi44NGI0MjNmIDEwMDY0NAotLS0gYS9rZXJuZWwv cG93ZXIvS2NvbmZpZworKysgYi9rZXJuZWwvcG93ZXIvS2NvbmZpZwpAQCAtMTI2LDYgKzEyNiwx NSBAQCBjb25maWcgU1VTUEVORF9CTE9DS0VSUwogCSAgdGhyb3VnaCAvc3lzL3Bvd2VyL3JlcXVl c3Rfc3RhdGUsIHRoZSByZXF1ZXN0ZWQgc2xlZXAgc3RhdGUgd2lsbCBiZQogCSAgZW50ZXJlZCB3 aGVuIG5vIHN1c3BlbmQgYmxvY2tlcnMgYXJlIGFjdGl2ZS4KIAorY29uZmlnIFVTRVJfU1VTUEVO RF9CTE9DS0VSUworCWJvb2wgIlVzZXJzcGFjZSBzdXNwZW5kIGJsb2NrZXJzIgorCWRlcGVuZHMg b24gU1VTUEVORF9CTE9DS0VSUworCWRlZmF1bHQgeQorCS0tLWhlbHAtLS0KKwkgIFVzZXItc3Bh Y2Ugc3VzcGVuZCBibG9jayBhcGkuIENyZWF0ZXMgYSBtaXNjIGRldmljZSB3aXRoIGlvY3Rscwor CSAgdG8gY3JlYXRlLCBibG9jayBhbmQgdW5ibG9jayBhIHN1c3BlbmRfYmxvY2tlci4gVGhlIHN1 c3BlbmRfYmxvY2tlcgorCSAgd2lsbCBiZSBkZWxldGVkIHdoZW4gdGhlIGRldmljZSBpcyBjbG9z ZWQuCisKIGNvbmZpZyBISUJFUk5BVElPTgogCWJvb2wgIkhpYmVybmF0aW9uIChha2EgJ3N1c3Bl bmQgdG8gZGlzaycpIgogCWRlcGVuZHMgb24gUE0gJiYgU1dBUCAmJiBBUkNIX0hJQkVSTkFUSU9O X1BPU1NJQkxFCmRpZmYgLS1naXQgYS9rZXJuZWwvcG93ZXIvTWFrZWZpbGUgYi9rZXJuZWwvcG93 ZXIvTWFrZWZpbGUKaW5kZXggZThjN2Y4NS4uMjRhZGU5MSAxMDA2NDQKLS0tIGEva2VybmVsL3Bv d2VyL01ha2VmaWxlCisrKyBiL2tlcm5lbC9wb3dlci9NYWtlZmlsZQpAQCAtNyw2ICs3LDcgQEAg b2JqLSQoQ09ORklHX1BNKQkJKz0gbWFpbi5vCiBvYmotJChDT05GSUdfUE1fU0xFRVApCQkrPSBj b25zb2xlLm8KIG9iai0kKENPTkZJR19GUkVFWkVSKQkJKz0gcHJvY2Vzcy5vCiBvYmotJChDT05G SUdfU1VTUEVORF9CTE9DS0VSUykJKz0gc3VzcGVuZF9ibG9ja2VyLm8KK29iai0kKENPTkZJR19V U0VSX1NVU1BFTkRfQkxPQ0tFUlMpCSs9IHVzZXJfc3VzcGVuZF9ibG9ja2VyLm8KIG9iai0kKENP TkZJR19ISUJFUk5BVElPTikJKz0gc3dzdXNwLm8gZGlzay5vIHNuYXBzaG90Lm8gc3dhcC5vIHVz ZXIubwogCiBvYmotJChDT05GSUdfTUFHSUNfU1lTUlEpCSs9IHBvd2Vyb2ZmLm8KZGlmZiAtLWdp dCBhL2tlcm5lbC9wb3dlci91c2VyX3N1c3BlbmRfYmxvY2tlci5jIGIva2VybmVsL3Bvd2VyL3Vz ZXJfc3VzcGVuZF9ibG9ja2VyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u NjliM2RkYgotLS0gL2Rldi9udWxsCisrKyBiL2tlcm5lbC9wb3dlci91c2VyX3N1c3BlbmRfYmxv Y2tlci5jCkBAIC0wLDAgKzEsMTI1IEBACisvKiBrZXJuZWwvcG93ZXIvdXNlcl9zdXNwZW5kX2Js b2NrLmMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlLCBJbmMuCisgKgorICogVGhp cyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYworICogTGljZW5zZSB2ZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBhbmQKKyAqIG1heSBiZSBjb3BpZWQsIGRpc3RyaWJ1dGVkLCBh bmQgbW9kaWZpZWQgdW5kZXIgdGhvc2UgdGVybXMuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K KyAqCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2ZzLmg+CisjaW5jbHVkZSA8bGludXgvbWlzY2Rl dmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L3VhY2Nl c3MuaD4KKyNpbmNsdWRlIDxsaW51eC9zdXNwZW5kX2Jsb2NrZXIuaD4KKyNpbmNsdWRlIDxsaW51 eC9zdXNwZW5kX2Jsb2NrX2Rldi5oPgorCitlbnVtIHsKKwlERUJVR19GQUlMVVJFCT0gQklUKDAp LAorfTsKK3N0YXRpYyBpbnQgZGVidWdfbWFzayA9IERFQlVHX0ZBSUxVUkU7Cittb2R1bGVfcGFy YW1fbmFtZWQoZGVidWdfbWFzaywgZGVidWdfbWFzaywgaW50LCBTX0lSVUdPIHwgU19JV1VTUiB8 IFNfSVdHUlApOworCitzdGF0aWMgREVGSU5FX01VVEVYKGlvY3RsX2xvY2spOworCitzdHJ1Y3Qg dXNlcl9zdXNwZW5kX2Jsb2NrZXIgeworCXN0cnVjdCBzdXNwZW5kX2Jsb2NrZXIJYmxvY2tlcjsK KwljaGFyCQkJbmFtZVswXTsKK307CisKK3N0YXRpYyBpbnQgY3JlYXRlX3VzZXJfc3VzcGVuZF9i bG9ja2VyKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkIF9fdXNlciAqbmFtZSwKKwkJCQkgc2l6ZV90 IG5hbWVfbGVuKQoreworCXN0cnVjdCB1c2VyX3N1c3BlbmRfYmxvY2tlciAqYmw7CisJaWYgKGZp bGUtPnByaXZhdGVfZGF0YSkKKwkJcmV0dXJuIC1FQlVTWTsKKwlibCA9IGt6YWxsb2Moc2l6ZW9m KCpibCkgKyBuYW1lX2xlbiArIDEsIEdGUF9LRVJORUwpOworCWlmICghYmwpCisJCXJldHVybiAt RU5PTUVNOworCWlmIChjb3B5X2Zyb21fdXNlcihibC0+bmFtZSwgbmFtZSwgbmFtZV9sZW4pKQor CQlnb3RvIGVycl9mYXVsdDsKKwlzdXNwZW5kX2Jsb2NrZXJfaW5pdCgmYmwtPmJsb2NrZXIsIGJs LT5uYW1lKTsKKwlmaWxlLT5wcml2YXRlX2RhdGEgPSBibDsKKwlyZXR1cm4gMDsKKworZXJyX2Zh dWx0OgorCWtmcmVlKGJsKTsKKwlyZXR1cm4gLUVGQVVMVDsKK30KKworc3RhdGljIGxvbmcgdXNl cl9zdXNwZW5kX2Jsb2NrZXJfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBj bWQsCisJCQkJdW5zaWduZWQgbG9uZyBfYXJnKQoreworCXZvaWQgX191c2VyICphcmcgPSAodm9p ZCBfX3VzZXIgKilfYXJnOworCXN0cnVjdCB1c2VyX3N1c3BlbmRfYmxvY2tlciAqYmw7CisJbG9u ZyByZXQ7CisKKwltdXRleF9sb2NrKCZpb2N0bF9sb2NrKTsKKwlpZiAoKGNtZCAmIH5JT0NTSVpF X01BU0spID09IFNVU1BFTkRfQkxPQ0tFUl9JT0NUTF9JTklUKDApKSB7CisJCXJldCA9IGNyZWF0 ZV91c2VyX3N1c3BlbmRfYmxvY2tlcihmaWxlLCBhcmcsIF9JT0NfU0laRShjbWQpKTsKKwkJZ290 byBkb25lOworCX0KKwlibCA9IGZpbGUtPnByaXZhdGVfZGF0YTsKKwlpZiAoIWJsKSB7CisJCXJl dCA9IC1FTk9FTlQ7CisJCWdvdG8gZG9uZTsKKwl9CisJc3dpdGNoIChjbWQpIHsKKwljYXNlIFNV U1BFTkRfQkxPQ0tFUl9JT0NUTF9CTE9DSzoKKwkJc3VzcGVuZF9ibG9jaygmYmwtPmJsb2NrZXIp OworCQlyZXQgPSAwOworCQlicmVhazsKKwljYXNlIFNVU1BFTkRfQkxPQ0tFUl9JT0NUTF9VTkJM T0NLOgorCQlzdXNwZW5kX3VuYmxvY2soJmJsLT5ibG9ja2VyKTsKKwkJcmV0ID0gMDsKKwkJYnJl YWs7CisJZGVmYXVsdDoKKwkJcmV0ID0gLUVOT1RTVVBQOworCX0KK2RvbmU6CisJaWYgKHJldCAm JiBkZWJ1Z19tYXNrICYgREVCVUdfRkFJTFVSRSkKKwkJcHJfZXJyKCJ1c2VyX3N1c3BlbmRfYmxv Y2tlcl9pb2N0bDogY21kICV4IGZhaWxlZCwgJWxkXG4iLAorCQkJY21kLCByZXQpOworCW11dGV4 X3VubG9jaygmaW9jdGxfbG9jayk7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCB1c2Vy X3N1c3BlbmRfYmxvY2tlcl9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxl ICpmaWxlKQoreworCXN0cnVjdCB1c2VyX3N1c3BlbmRfYmxvY2tlciAqYmwgPSBmaWxlLT5wcml2 YXRlX2RhdGE7CisJaWYgKCFibCkKKwkJcmV0dXJuIDA7CisJc3VzcGVuZF9ibG9ja2VyX2Rlc3Ry b3koJmJsLT5ibG9ja2VyKTsKKwlrZnJlZShibCk7CisJcmV0dXJuIDA7Cit9CisKK2NvbnN0IHN0 cnVjdCBmaWxlX29wZXJhdGlvbnMgdXNlcl9zdXNwZW5kX2Jsb2NrZXJfZm9wcyA9IHsKKwkucmVs ZWFzZSA9IHVzZXJfc3VzcGVuZF9ibG9ja2VyX3JlbGVhc2UsCisJLnVubG9ja2VkX2lvY3RsID0g dXNlcl9zdXNwZW5kX2Jsb2NrZXJfaW9jdGwsCit9OworCitzdHJ1Y3QgbWlzY2RldmljZSB1c2Vy X3N1c3BlbmRfYmxvY2tlcl9kZXZpY2UgPSB7CisJLm1pbm9yID0gTUlTQ19EWU5BTUlDX01JTk9S LAorCS5uYW1lID0gInN1c3BlbmRfYmxvY2tlciIsCisJLmZvcHMgPSAmdXNlcl9zdXNwZW5kX2Js b2NrZXJfZm9wcywKK307CisKK3N0YXRpYyBpbnQgX19pbml0IHVzZXJfc3VzcGVuZF9ibG9ja2Vy X2luaXQodm9pZCkKK3sKKwlyZXR1cm4gbWlzY19yZWdpc3RlcigmdXNlcl9zdXNwZW5kX2Jsb2Nr ZXJfZGV2aWNlKTsKK30KKworc3RhdGljIHZvaWQgX19leGl0IHVzZXJfc3VzcGVuZF9ibG9ja2Vy X2V4aXQodm9pZCkKK3sKKwltaXNjX2RlcmVnaXN0ZXIoJnVzZXJfc3VzcGVuZF9ibG9ja2VyX2Rl dmljZSk7Cit9CisKK21vZHVsZV9pbml0KHVzZXJfc3VzcGVuZF9ibG9ja2VyX2luaXQpOworbW9k dWxlX2V4aXQodXNlcl9zdXNwZW5kX2Jsb2NrZXJfZXhpdCk7Ci0tIAoxLjYuMQoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtcG0gbWFpbGluZyBs aXN0CmxpbnV4LXBtQGxpc3RzLmxpbnV4LWZvdW5kYXRpb24ub3JnCmh0dHBzOi8vbGlzdHMubGlu dXgtZm91bmRhdGlvbi5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1wbQ==