From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?utf-8?q?Arve=20Hj=C3=B8nnev=C3=A5g?= Subject: [PATCH 06/13] PM: Implement early suspend api Date: Wed, 4 Feb 2009 18:50:19 -0800 Message-ID: <1233802226-23386-7-git-send-email-arve@android.com> References: <1233802226-23386-1-git-send-email-arve@android.com> <1233802226-23386-2-git-send-email-arve@android.com> <1233802226-23386-3-git-send-email-arve@android.com> <1233802226-23386-4-git-send-email-arve@android.com> <1233802226-23386-5-git-send-email-arve@android.com> <1233802226-23386-6-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: <1233802226-23386-6-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 U2lnbmVkLW9mZi1ieTogQXJ2ZSBIasO4bm5ldsOlZyA8YXJ2ZUBhbmRyb2lkLmNvbT4KLS0tCiBr ZXJuZWwvcG93ZXIvS2NvbmZpZyAgICAgICAgfCAgIDEyICsrKwoga2VybmVsL3Bvd2VyL01ha2Vm aWxlICAgICAgIHwgICAgMSArCiBrZXJuZWwvcG93ZXIvZWFybHlzdXNwZW5kLmMgfCAgMTc4ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGtlcm5lbC9wb3dlci9w b3dlci5oICAgICAgICB8ICAgIDYgKysKIDQgZmlsZXMgY2hhbmdlZCwgMTk3IGluc2VydGlvbnMo KyksIDAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQga2VybmVsL3Bvd2VyL2Vhcmx5 c3VzcGVuZC5jCgpkaWZmIC0tZ2l0IGEva2VybmVsL3Bvd2VyL0tjb25maWcgYi9rZXJuZWwvcG93 ZXIvS2NvbmZpZwppbmRleCBkZDc2NDY3Li42ODlhYmZlIDEwMDY0NAotLS0gYS9rZXJuZWwvcG93 ZXIvS2NvbmZpZworKysgYi9rZXJuZWwvcG93ZXIvS2NvbmZpZwpAQCAtMTE5LDYgKzExOSw5IEBA IGNvbmZpZyBTVVNQRU5EX0ZSRUVaRVIKIGNvbmZpZyBIQVNfV0FLRUxPQ0sKIAlib29sCiAKK2Nv bmZpZyBIQVNfRUFSTFlTVVNQRU5ECisJYm9vbAorCiBjb25maWcgV0FLRUxPQ0sKIAlib29sICJX YWtlIGxvY2siCiAJZGVwZW5kcyBvbiBQTSAmJiBSVENfQ0xBU1MKQEAgLTE0NCw2ICsxNDcsMTUg QEAgY29uZmlnIERJU0FCTEVfU1lTX1BPV0VSX1NUQVRFCiAJICB3YW50IHRvIHJ1biB1c2VyLXNw YWNlIGNvZGUgdGhhdCBkb2VzIG5vdCBzdXBwb3J0IHdha2Vsb2NrcywgZG8gbm90CiAJICBlbmFi bGUgdGhpcyBvcHRpb24gc2luY2UgaXQgcmVtb3ZlcyB0aGUgaW50ZXJmYWNlLgogCitjb25maWcg RUFSTFlTVVNQRU5ECisJYm9vbCAiRWFybHkgc3VzcGVuZCIKKwlkZXBlbmRzIG9uIFdBS0VMT0NL CisJZGVmYXVsdCB5CisJc2VsZWN0IEhBU19FQVJMWVNVU1BFTkQKKwktLS1oZWxwLS0tCisJICBD YWxsIGVhcmx5IHN1c3BlbmQgaGFuZGxlcnMgd2hlbiB0aGUgdXNlciByZXF1ZXN0ZWQgc2xlZXAg c3RhdGUKKwkgIGNoYW5nZXMuCisKIGNvbmZpZyBISUJFUk5BVElPTgogCWJvb2wgIkhpYmVybmF0 aW9uIChha2EgJ3N1c3BlbmQgdG8gZGlzaycpIgogCWRlcGVuZHMgb24gUE0gJiYgU1dBUCAmJiBB UkNIX0hJQkVSTkFUSU9OX1BPU1NJQkxFCmRpZmYgLS1naXQgYS9rZXJuZWwvcG93ZXIvTWFrZWZp bGUgYi9rZXJuZWwvcG93ZXIvTWFrZWZpbGUKaW5kZXggOGQ4NjcyYi4uMmYxN2UxZCAxMDA2NDQK LS0tIGEva2VybmVsL3Bvd2VyL01ha2VmaWxlCisrKyBiL2tlcm5lbC9wb3dlci9NYWtlZmlsZQpA QCAtNyw2ICs3LDcgQEAgb2JqLXkJCQkJOj0gbWFpbi5vCiBvYmotJChDT05GSUdfUE1fU0xFRVAp CQkrPSBjb25zb2xlLm8KIG9iai0kKENPTkZJR19GUkVFWkVSKQkJKz0gcHJvY2Vzcy5vCiBvYmot JChDT05GSUdfV0FLRUxPQ0spCQkrPSB3YWtlbG9jay5vCitvYmotJChDT05GSUdfRUFSTFlTVVNQ RU5EKQkrPSBlYXJseXN1c3BlbmQubwogb2JqLSQoQ09ORklHX0hJQkVSTkFUSU9OKQkrPSBzd3N1 c3AubyBkaXNrLm8gc25hcHNob3QubyBzd2FwLm8gdXNlci5vCiAKIG9iai0kKENPTkZJR19NQUdJ Q19TWVNSUSkJKz0gcG93ZXJvZmYubwpkaWZmIC0tZ2l0IGEva2VybmVsL3Bvd2VyL2Vhcmx5c3Vz cGVuZC5jIGIva2VybmVsL3Bvd2VyL2Vhcmx5c3VzcGVuZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjRkNzBhN2UKLS0tIC9kZXYvbnVsbAorKysgYi9rZXJuZWwvcG93ZXIv ZWFybHlzdXNwZW5kLmMKQEAgLTAsMCArMSwxNzggQEAKKy8qIGtlcm5lbC9wb3dlci9lYXJseXN1 c3BlbmQuYworICoKKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDA4IEdvb2dsZSwgSW5jLgorICoK KyAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgdmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgYW5kCisgKiBtYXkgYmUgY29waWVkLCBkaXN0cmli dXRlZCwgYW5kIG1vZGlmaWVkIHVuZGVyIHRob3NlIHRlcm1zLgorICoKKyAqIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCisgKgorICovCisKKyNpbmNsdWRlIDxsaW51eC9lYXJseXN1c3BlbmQuaD4KKyNpbmNs dWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9tdXRleC5oPgorI2luY2x1ZGUg PGxpbnV4L3J0Yy5oPgorI2luY2x1ZGUgPGxpbnV4L3N5c2NhbGxzLmg+IC8qIHN5c19zeW5jICov CisjaW5jbHVkZSA8bGludXgvd2FrZWxvY2suaD4KKyNpbmNsdWRlIDxsaW51eC93b3JrcXVldWUu aD4KKworI2luY2x1ZGUgInBvd2VyLmgiCisKK2VudW0geworCURFQlVHX1VTRVJfU1RBVEUgPSAx VSA8PCAwLAorCURFQlVHX1NVU1BFTkQgPSAxVSA8PCAxLAorfTsKK3N0YXRpYyBpbnQgZGVidWdf bWFzayA9IERFQlVHX1VTRVJfU1RBVEU7Cittb2R1bGVfcGFyYW1fbmFtZWQoZGVidWdfbWFzaywg ZGVidWdfbWFzaywgaW50LCBTX0lSVUdPIHwgU19JV1VTUiB8IFNfSVdHUlApOworCitzdGF0aWMg REVGSU5FX01VVEVYKGVhcmx5X3N1c3BlbmRfbG9jayk7CitzdGF0aWMgTElTVF9IRUFEKGVhcmx5 X3N1c3BlbmRfaGFuZGxlcnMpOworc3RhdGljIHZvaWQgZWFybHlfc3VzcGVuZChzdHJ1Y3Qgd29y a19zdHJ1Y3QgKndvcmspOworc3RhdGljIHZvaWQgbGF0ZV9yZXN1bWUoc3RydWN0IHdvcmtfc3Ry dWN0ICp3b3JrKTsKK3N0YXRpYyBERUNMQVJFX1dPUksoZWFybHlfc3VzcGVuZF93b3JrLCBlYXJs eV9zdXNwZW5kKTsKK3N0YXRpYyBERUNMQVJFX1dPUksobGF0ZV9yZXN1bWVfd29yaywgbGF0ZV9y ZXN1bWUpOworc3RhdGljIERFRklORV9TUElOTE9DSyhzdGF0ZV9sb2NrKTsKK2VudW0geworCVNV U1BFTkRfUkVRVUVTVEVEID0gMHgxLAorCVNVU1BFTkRFRCA9IDB4MiwKKwlTVVNQRU5EX1JFUVVF U1RFRF9BTkRfU1VTUEVOREVEID0gU1VTUEVORF9SRVFVRVNURUQgfCBTVVNQRU5ERUQsCit9Owor c3RhdGljIGludCBzdGF0ZTsKKwordm9pZCByZWdpc3Rlcl9lYXJseV9zdXNwZW5kKHN0cnVjdCBl YXJseV9zdXNwZW5kICpoYW5kbGVyKQoreworCXN0cnVjdCBsaXN0X2hlYWQgKnBvczsKKworCW11 dGV4X2xvY2soJmVhcmx5X3N1c3BlbmRfbG9jayk7CisJbGlzdF9mb3JfZWFjaChwb3MsICZlYXJs eV9zdXNwZW5kX2hhbmRsZXJzKSB7CisJCXN0cnVjdCBlYXJseV9zdXNwZW5kICplOworCQllID0g bGlzdF9lbnRyeShwb3MsIHN0cnVjdCBlYXJseV9zdXNwZW5kLCBsaW5rKTsKKwkJaWYgKGUtPmxl dmVsID4gaGFuZGxlci0+bGV2ZWwpCisJCQlicmVhazsKKwl9CisJbGlzdF9hZGRfdGFpbCgmaGFu ZGxlci0+bGluaywgcG9zKTsKKwlpZiAoKHN0YXRlICYgU1VTUEVOREVEKSAmJiBoYW5kbGVyLT5z dXNwZW5kKQorCQloYW5kbGVyLT5zdXNwZW5kKGhhbmRsZXIpOworCW11dGV4X3VubG9jaygmZWFy bHlfc3VzcGVuZF9sb2NrKTsKK30KK0VYUE9SVF9TWU1CT0wocmVnaXN0ZXJfZWFybHlfc3VzcGVu ZCk7CisKK3ZvaWQgdW5yZWdpc3Rlcl9lYXJseV9zdXNwZW5kKHN0cnVjdCBlYXJseV9zdXNwZW5k ICpoYW5kbGVyKQoreworCW11dGV4X2xvY2soJmVhcmx5X3N1c3BlbmRfbG9jayk7CisJbGlzdF9k ZWwoJmhhbmRsZXItPmxpbmspOworCW11dGV4X3VubG9jaygmZWFybHlfc3VzcGVuZF9sb2NrKTsK K30KK0VYUE9SVF9TWU1CT0wodW5yZWdpc3Rlcl9lYXJseV9zdXNwZW5kKTsKKworc3RhdGljIHZv aWQgZWFybHlfc3VzcGVuZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCit7CisJc3RydWN0IGVh cmx5X3N1c3BlbmQgKnBvczsKKwl1bnNpZ25lZCBsb25nIGlycWZsYWdzOworCWludCBhYm9ydCA9 IDA7CisKKwltdXRleF9sb2NrKCZlYXJseV9zdXNwZW5kX2xvY2spOworCXNwaW5fbG9ja19pcnFz YXZlKCZzdGF0ZV9sb2NrLCBpcnFmbGFncyk7CisJaWYgKHN0YXRlID09IFNVU1BFTkRfUkVRVUVT VEVEKQorCQlzdGF0ZSB8PSBTVVNQRU5ERUQ7CisJZWxzZQorCQlhYm9ydCA9IDE7CisJc3Bpbl91 bmxvY2tfaXJxcmVzdG9yZSgmc3RhdGVfbG9jaywgaXJxZmxhZ3MpOworCisJaWYgKGFib3J0KSB7 CisJCWlmIChkZWJ1Z19tYXNrICYgREVCVUdfU1VTUEVORCkKKwkJCXByX2luZm8oImVhcmx5X3N1 c3BlbmQ6IGFib3J0LCBzdGF0ZSAlZFxuIiwgc3RhdGUpOworCQltdXRleF91bmxvY2soJmVhcmx5 X3N1c3BlbmRfbG9jayk7CisJCWdvdG8gYWJvcnQ7CisJfQorCisJaWYgKGRlYnVnX21hc2sgJiBE RUJVR19TVVNQRU5EKQorCQlwcl9pbmZvKCJlYXJseV9zdXNwZW5kOiBjYWxsIGhhbmRsZXJzXG4i KTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHBvcywgJmVhcmx5X3N1c3BlbmRfaGFuZGxlcnMsIGxp bmspIHsKKwkJaWYgKHBvcy0+c3VzcGVuZCkKKwkJCXBvcy0+c3VzcGVuZChwb3MpOworCX0KKwlt dXRleF91bmxvY2soJmVhcmx5X3N1c3BlbmRfbG9jayk7CisKKwlpZiAoZGVidWdfbWFzayAmIERF QlVHX1NVU1BFTkQpCisJCXByX2luZm8oImVhcmx5X3N1c3BlbmQ6IHN5bmNcbiIpOworCisJc3lz X3N5bmMoKTsKK2Fib3J0OgorCXNwaW5fbG9ja19pcnFzYXZlKCZzdGF0ZV9sb2NrLCBpcnFmbGFn cyk7CisJaWYgKHN0YXRlID09IFNVU1BFTkRfUkVRVUVTVEVEX0FORF9TVVNQRU5ERUQpCisJCXdh a2VfdW5sb2NrKCZtYWluX3dha2VfbG9jayk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmc3Rh dGVfbG9jaywgaXJxZmxhZ3MpOworfQorCitzdGF0aWMgdm9pZCBsYXRlX3Jlc3VtZShzdHJ1Y3Qg d29ya19zdHJ1Y3QgKndvcmspCit7CisJc3RydWN0IGVhcmx5X3N1c3BlbmQgKnBvczsKKwl1bnNp Z25lZCBsb25nIGlycWZsYWdzOworCWludCBhYm9ydCA9IDA7CisKKwltdXRleF9sb2NrKCZlYXJs eV9zdXNwZW5kX2xvY2spOworCXNwaW5fbG9ja19pcnFzYXZlKCZzdGF0ZV9sb2NrLCBpcnFmbGFn cyk7CisJaWYgKHN0YXRlID09IFNVU1BFTkRFRCkKKwkJc3RhdGUgPSAwOyAvKiBjbGVhciBTVVNQ RU5ERUQgKi8KKwllbHNlCisJCWFib3J0ID0gMTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZz dGF0ZV9sb2NrLCBpcnFmbGFncyk7CisKKwlpZiAoYWJvcnQpIHsKKwkJaWYgKGRlYnVnX21hc2sg JiBERUJVR19TVVNQRU5EKQorCQkJcHJfaW5mbygibGF0ZV9yZXN1bWU6IGFib3J0LCBzdGF0ZSAl ZFxuIiwgc3RhdGUpOworCQlnb3RvIGFib3J0OworCX0KKwlpZiAoZGVidWdfbWFzayAmIERFQlVH X1NVU1BFTkQpCisJCXByX2luZm8oImxhdGVfcmVzdW1lOiBjYWxsIGhhbmRsZXJzXG4iKTsKKwls aXN0X2Zvcl9lYWNoX2VudHJ5X3JldmVyc2UocG9zLCAmZWFybHlfc3VzcGVuZF9oYW5kbGVycywg bGluaykKKwkJaWYgKHBvcy0+cmVzdW1lKQorCQkJcG9zLT5yZXN1bWUocG9zKTsKKwlpZiAoZGVi dWdfbWFzayAmIERFQlVHX1NVU1BFTkQpCisJCXByX2luZm8oImxhdGVfcmVzdW1lOiBkb25lXG4i KTsKK2Fib3J0OgorCW11dGV4X3VubG9jaygmZWFybHlfc3VzcGVuZF9sb2NrKTsKK30KKwordm9p ZCByZXF1ZXN0X3N1c3BlbmRfc3RhdGUoc3VzcGVuZF9zdGF0ZV90IG5ld19zdGF0ZSkKK3sKKwl1 bnNpZ25lZCBsb25nIGlycWZsYWdzOworCWludCBvbGRfc2xlZXA7CisKKwlzcGluX2xvY2tfaXJx c2F2ZSgmc3RhdGVfbG9jaywgaXJxZmxhZ3MpOworCW9sZF9zbGVlcCA9IHN0YXRlICYgU1VTUEVO RF9SRVFVRVNURUQ7CisJaWYgKGRlYnVnX21hc2sgJiBERUJVR19VU0VSX1NUQVRFKSB7CisJCXN0 cnVjdCB0aW1lc3BlYyB0czsKKwkJc3RydWN0IHJ0Y190aW1lIHRtOworCQlnZXRuc3RpbWVvZmRh eSgmdHMpOworCQlydGNfdGltZV90b190bSh0cy50dl9zZWMsICZ0bSk7CisJCXByX2luZm8oInJl cXVlc3Rfc3VzcGVuZF9zdGF0ZTogJXMgKCVkLT4lZCkgYXQgJWxsZCAiCisJCQkiKCVkLSUwMmQt JTAyZCAlMDJkOiUwMmQ6JTAyZC4lMDlsdSBVVEMpXG4iLAorCQkJbmV3X3N0YXRlICE9IFBNX1NV U1BFTkRfT04gPyAic2xlZXAiIDogIndha2V1cCIsCisJCQlyZXF1ZXN0ZWRfc3VzcGVuZF9zdGF0 ZSwgbmV3X3N0YXRlLAorCQkJa3RpbWVfdG9fbnMoa3RpbWVfZ2V0KCkpLAorCQkJdG0udG1feWVh ciArIDE5MDAsIHRtLnRtX21vbiArIDEsIHRtLnRtX21kYXksCisJCQl0bS50bV9ob3VyLCB0bS50 bV9taW4sIHRtLnRtX3NlYywgdHMudHZfbnNlYyk7CisJfQorCWlmICghb2xkX3NsZWVwICYmIG5l d19zdGF0ZSAhPSBQTV9TVVNQRU5EX09OKSB7CisJCXN0YXRlIHw9IFNVU1BFTkRfUkVRVUVTVEVE OworCQlxdWV1ZV93b3JrKHN1c3BlbmRfd29ya19xdWV1ZSwgJmVhcmx5X3N1c3BlbmRfd29yayk7 CisJfSBlbHNlIGlmIChvbGRfc2xlZXAgJiYgbmV3X3N0YXRlID09IFBNX1NVU1BFTkRfT04pIHsK KwkJc3RhdGUgJj0gflNVU1BFTkRfUkVRVUVTVEVEOworCQl3YWtlX2xvY2soJm1haW5fd2FrZV9s b2NrKTsKKwkJcXVldWVfd29yayhzdXNwZW5kX3dvcmtfcXVldWUsICZsYXRlX3Jlc3VtZV93b3Jr KTsKKwl9CisJcmVxdWVzdGVkX3N1c3BlbmRfc3RhdGUgPSBuZXdfc3RhdGU7CisJc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmc3RhdGVfbG9jaywgaXJxZmxhZ3MpOworfQorCitzdXNwZW5kX3N0YXRl X3QgZ2V0X3N1c3BlbmRfc3RhdGUodm9pZCkKK3sKKwlyZXR1cm4gcmVxdWVzdGVkX3N1c3BlbmRf c3RhdGU7Cit9CmRpZmYgLS1naXQgYS9rZXJuZWwvcG93ZXIvcG93ZXIuaCBiL2tlcm5lbC9wb3dl ci9wb3dlci5oCmluZGV4IGVkMWI3ZjQuLmFjYmIxM2EgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9wb3dl ci9wb3dlci5oCisrKyBiL2tlcm5lbC9wb3dlci9wb3dlci5oCkBAIC0yMzEsMyArMjMxLDkgQEAg ZXh0ZXJuIHN0cnVjdCB3YWtlX2xvY2sgbWFpbl93YWtlX2xvY2s7CiBleHRlcm4gc3VzcGVuZF9z dGF0ZV90IHJlcXVlc3RlZF9zdXNwZW5kX3N0YXRlOwogZXh0ZXJuIGJvb2wgaWdub3JlX3N1c3Bl bmRfd2FrZWxvY2tzOwogI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfRUFSTFlTVVNQRU5ECisvKiBr ZXJuZWwvcG93ZXIvZWFybHlzdXNwZW5kLmMgKi8KK3ZvaWQgcmVxdWVzdF9zdXNwZW5kX3N0YXRl KHN1c3BlbmRfc3RhdGVfdCBzdGF0ZSk7CitzdXNwZW5kX3N0YXRlX3QgZ2V0X3N1c3BlbmRfc3Rh dGUodm9pZCk7CisjZW5kaWYKLS0gCjEuNi4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpsaW51eC1wbSBtYWlsaW5nIGxpc3QKbGludXgtcG1AbGlzdHMu bGludXgtZm91bmRhdGlvbi5vcmcKaHR0cHM6Ly9saXN0cy5saW51eC1mb3VuZGF0aW9uLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2xpbnV4LXBt