From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?utf-8?q?Arve=20Hj=C3=B8nnev=C3=A5g?= Subject: [PATCH 04/11] PM: Implement early suspend api Date: Tue, 13 Jan 2009 17:27:49 -0800 Message-ID: <1231896476-22445-5-git-send-email-arve@android.com> References: <1231896476-22445-1-git-send-email-arve@android.com> <1231896476-22445-2-git-send-email-arve@android.com> <1231896476-22445-3-git-send-email-arve@android.com> <1231896476-22445-4-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: <1231896476-22445-4-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: swetland@google.com List-Id: linux-pm@vger.kernel.org U2lnbmVkLW9mZi1ieTogQXJ2ZSBIasO4bm5ldsOlZyA8YXJ2ZUBhbmRyb2lkLmNvbT4KLS0tCiBr ZXJuZWwvcG93ZXIvS2NvbmZpZyAgICAgICAgfCAgIDEyICsrKwoga2VybmVsL3Bvd2VyL01ha2Vm aWxlICAgICAgIHwgICAgMSArCiBrZXJuZWwvcG93ZXIvZWFybHlzdXNwZW5kLmMgfCAgMTc4ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGtlcm5lbC9wb3dlci9w b3dlci5oICAgICAgICB8ICAgIDYgKysKIDQgZmlsZXMgY2hhbmdlZCwgMTk3IGluc2VydGlvbnMo KyksIDAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQga2VybmVsL3Bvd2VyL2Vhcmx5 c3VzcGVuZC5jCgpkaWZmIC0tZ2l0IGEva2VybmVsL3Bvd2VyL0tjb25maWcgYi9rZXJuZWwvcG93 ZXIvS2NvbmZpZwppbmRleCA2ZTNkYTZlLi41MDY5MGQ4IDEwMDY0NAotLS0gYS9rZXJuZWwvcG93 ZXIvS2NvbmZpZworKysgYi9rZXJuZWwvcG93ZXIvS2NvbmZpZwpAQCAtMTE5LDYgKzExOSw5IEBA IGNvbmZpZyBTVVNQRU5EX0ZSRUVaRVIKIGNvbmZpZyBIQVNfV0FLRUxPQ0sKIAlib29sCiAKK2Nv bmZpZyBIQVNfRUFSTFlTVVNQRU5ECisJYm9vbAorCiBjb25maWcgV0FLRUxPQ0sKIAlib29sICJX YWtlIGxvY2siCiAJZGVwZW5kcyBvbiBQTSAmJiBSVENfQ0xBU1MKQEAgLTEzNSw2ICsxMzgsMTUg QEAgY29uZmlnIFdBS0VMT0NLX1NUQVQKIAktLS1oZWxwLS0tCiAJICBSZXBvcnQgd2FrZSBsb2Nr IHN0YXRzIGluIC9wcm9jL3dha2Vsb2NrcwogCitjb25maWcgRUFSTFlTVVNQRU5ECisJYm9vbCAi RWFybHkgc3VzcGVuZCIKKwlkZXBlbmRzIG9uIFdBS0VMT0NLCisJZGVmYXVsdCB5CisJc2VsZWN0 IEhBU19FQVJMWVNVU1BFTkQKKwktLS1oZWxwLS0tCisJICBDYWxsIGVhcmx5IHN1c3BlbmQgaGFu ZGxlcnMgd2hlbiB0aGUgdXNlciByZXF1ZXN0ZWQgc2xlZXAgc3RhdGUKKwkgIGNoYW5nZXMuCisK IGNvbmZpZyBISUJFUk5BVElPTgogCWJvb2wgIkhpYmVybmF0aW9uIChha2EgJ3N1c3BlbmQgdG8g ZGlzaycpIgogCWRlcGVuZHMgb24gUE0gJiYgU1dBUCAmJiBBUkNIX0hJQkVSTkFUSU9OX1BPU1NJ QkxFCmRpZmYgLS1naXQgYS9rZXJuZWwvcG93ZXIvTWFrZWZpbGUgYi9rZXJuZWwvcG93ZXIvTWFr ZWZpbGUKaW5kZXggNDAxZGRmZS4uZjBmN2IxNSAxMDA2NDQKLS0tIGEva2VybmVsL3Bvd2VyL01h a2VmaWxlCisrKyBiL2tlcm5lbC9wb3dlci9NYWtlZmlsZQpAQCAtNiw2ICs2LDcgQEAgZW5kaWYK IG9iai15CQkJCTo9IG1haW4ubwogb2JqLSQoQ09ORklHX1BNX1NMRUVQKQkJKz0gcHJvY2Vzcy5v IGNvbnNvbGUubwogb2JqLSQoQ09ORklHX1dBS0VMT0NLKQkJKz0gd2FrZWxvY2subworb2JqLSQo Q09ORklHX0VBUkxZU1VTUEVORCkJKz0gZWFybHlzdXNwZW5kLm8KIG9iai0kKENPTkZJR19ISUJF Uk5BVElPTikJKz0gc3dzdXNwLm8gZGlzay5vIHNuYXBzaG90Lm8gc3dhcC5vIHVzZXIubwogCiBv YmotJChDT05GSUdfTUFHSUNfU1lTUlEpCSs9IHBvd2Vyb2ZmLm8KZGlmZiAtLWdpdCBhL2tlcm5l bC9wb3dlci9lYXJseXN1c3BlbmQuYyBiL2tlcm5lbC9wb3dlci9lYXJseXN1c3BlbmQuYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NGJlZDUxCi0tLSAvZGV2L251bGwKKysr IGIva2VybmVsL3Bvd2VyL2Vhcmx5c3VzcGVuZC5jCkBAIC0wLDAgKzEsMTc4IEBACisvKiBrZXJu ZWwvcG93ZXIvZWFybHlzdXNwZW5kLmMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAwOCBH b29nbGUsIEluYy4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIHZlcnNpb24gMiwgYXMg cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGFuZAorICogbWF5IGJl IGNvcGllZCwgZGlzdHJpYnV0ZWQsIGFuZCBtb2RpZmllZCB1bmRlciB0aG9zZSB0ZXJtcy4KKyAq CisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqLworCisjaW5jbHVkZSA8bGludXgvZWFybHlz dXNwZW5kLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvbXV0 ZXguaD4KKyNpbmNsdWRlIDxsaW51eC9ydGMuaD4KKyNpbmNsdWRlIDxsaW51eC9zeXNjYWxscy5o PiAvKiBzeXNfc3luYyAqLworI2luY2x1ZGUgPGxpbnV4L3dha2Vsb2NrLmg+CisjaW5jbHVkZSA8 bGludXgvd29ya3F1ZXVlLmg+CisKKyNpbmNsdWRlICJwb3dlci5oIgorCitlbnVtIHsKKwlERUJV R19VU0VSX1NUQVRFID0gMVUgPDwgMCwKKwlERUJVR19TVVNQRU5EID0gMVUgPDwgMiwKK307Citz dGF0aWMgaW50IGRlYnVnX21hc2sgPSBERUJVR19VU0VSX1NUQVRFOworbW9kdWxlX3BhcmFtX25h bWVkKGRlYnVnX21hc2ssIGRlYnVnX21hc2ssIGludCwgU19JUlVHTyB8IFNfSVdVU1IgfCBTX0lX R1JQKTsKKworc3RhdGljIERFRklORV9NVVRFWChlYXJseV9zdXNwZW5kX2xvY2spOworc3RhdGlj IExJU1RfSEVBRChlYXJseV9zdXNwZW5kX2hhbmRsZXJzKTsKK3N0YXRpYyB2b2lkIGVhcmx5X3N1 c3BlbmQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTsKK3N0YXRpYyB2b2lkIGxhdGVfcmVzdW1l KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7CitzdGF0aWMgREVDTEFSRV9XT1JLKGVhcmx5X3N1 c3BlbmRfd29yaywgZWFybHlfc3VzcGVuZCk7CitzdGF0aWMgREVDTEFSRV9XT1JLKGxhdGVfcmVz dW1lX3dvcmssIGxhdGVfcmVzdW1lKTsKK3N0YXRpYyBERUZJTkVfU1BJTkxPQ0soc3RhdGVfbG9j ayk7CitlbnVtIHsKKwlTVVNQRU5EX1JFUVVFU1RFRCA9IDB4MSwKKwlTVVNQRU5ERUQgPSAweDIs CisJU1VTUEVORF9SRVFVRVNURURfQU5EX1NVU1BFTkRFRCA9IFNVU1BFTkRfUkVRVUVTVEVEIHwg U1VTUEVOREVELAorfTsKK3N0YXRpYyBpbnQgc3RhdGU7CisKK3ZvaWQgcmVnaXN0ZXJfZWFybHlf c3VzcGVuZChzdHJ1Y3QgZWFybHlfc3VzcGVuZCAqaGFuZGxlcikKK3sKKwlzdHJ1Y3QgbGlzdF9o ZWFkICpwb3M7CisKKwltdXRleF9sb2NrKCZlYXJseV9zdXNwZW5kX2xvY2spOworCWxpc3RfZm9y X2VhY2gocG9zLCAmZWFybHlfc3VzcGVuZF9oYW5kbGVycykgeworCQlzdHJ1Y3QgZWFybHlfc3Vz cGVuZCAqZTsKKwkJZSA9IGxpc3RfZW50cnkocG9zLCBzdHJ1Y3QgZWFybHlfc3VzcGVuZCwgbGlu ayk7CisJCWlmIChlLT5sZXZlbCA+IGhhbmRsZXItPmxldmVsKQorCQkJYnJlYWs7CisJfQorCWxp c3RfYWRkX3RhaWwoJmhhbmRsZXItPmxpbmssIHBvcyk7CisJaWYgKChzdGF0ZSAmIFNVU1BFTkRF RCkgJiYgaGFuZGxlci0+c3VzcGVuZCkKKwkJaGFuZGxlci0+c3VzcGVuZChoYW5kbGVyKTsKKwlt dXRleF91bmxvY2soJmVhcmx5X3N1c3BlbmRfbG9jayk7Cit9CitFWFBPUlRfU1lNQk9MKHJlZ2lz dGVyX2Vhcmx5X3N1c3BlbmQpOworCit2b2lkIHVucmVnaXN0ZXJfZWFybHlfc3VzcGVuZChzdHJ1 Y3QgZWFybHlfc3VzcGVuZCAqaGFuZGxlcikKK3sKKwltdXRleF9sb2NrKCZlYXJseV9zdXNwZW5k X2xvY2spOworCWxpc3RfZGVsKCZoYW5kbGVyLT5saW5rKTsKKwltdXRleF91bmxvY2soJmVhcmx5 X3N1c3BlbmRfbG9jayk7Cit9CitFWFBPUlRfU1lNQk9MKHVucmVnaXN0ZXJfZWFybHlfc3VzcGVu ZCk7CisKK3N0YXRpYyB2b2lkIGVhcmx5X3N1c3BlbmQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3Jr KQoreworCXN0cnVjdCBlYXJseV9zdXNwZW5kICpwb3M7CisJdW5zaWduZWQgbG9uZyBpcnFmbGFn czsKKwlpbnQgYWJvcnQgPSAwOworCisJbXV0ZXhfbG9jaygmZWFybHlfc3VzcGVuZF9sb2NrKTsK KwlzcGluX2xvY2tfaXJxc2F2ZSgmc3RhdGVfbG9jaywgaXJxZmxhZ3MpOworCWlmIChzdGF0ZSA9 PSBTVVNQRU5EX1JFUVVFU1RFRCkKKwkJc3RhdGUgfD0gU1VTUEVOREVEOworCWVsc2UKKwkJYWJv cnQgPSAxOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnN0YXRlX2xvY2ssIGlycWZsYWdzKTsK KworCWlmIChhYm9ydCkgeworCQlpZiAoZGVidWdfbWFzayAmIERFQlVHX1NVU1BFTkQpCisJCQlw cl9pbmZvKCJlYXJseV9zdXNwZW5kOiBhYm9ydCwgc3RhdGUgJWRcbiIsIHN0YXRlKTsKKwkJbXV0 ZXhfdW5sb2NrKCZlYXJseV9zdXNwZW5kX2xvY2spOworCQlnb3RvIGFib3J0OworCX0KKworCWlm IChkZWJ1Z19tYXNrICYgREVCVUdfU1VTUEVORCkKKwkJcHJfaW5mbygiZWFybHlfc3VzcGVuZDog Y2FsbCBoYW5kbGVyc1xuIik7CisJbGlzdF9mb3JfZWFjaF9lbnRyeShwb3MsICZlYXJseV9zdXNw ZW5kX2hhbmRsZXJzLCBsaW5rKSB7CisJCWlmIChwb3MtPnN1c3BlbmQgIT0gTlVMTCkKKwkJCXBv cy0+c3VzcGVuZChwb3MpOworCX0KKwltdXRleF91bmxvY2soJmVhcmx5X3N1c3BlbmRfbG9jayk7 CisKKwlpZiAoZGVidWdfbWFzayAmIERFQlVHX1NVU1BFTkQpCisJCXByX2luZm8oImVhcmx5X3N1 c3BlbmQ6IHN5bmNcbiIpOworCisJc3lzX3N5bmMoKTsKK2Fib3J0OgorCXNwaW5fbG9ja19pcnFz YXZlKCZzdGF0ZV9sb2NrLCBpcnFmbGFncyk7CisJaWYgKHN0YXRlID09IFNVU1BFTkRfUkVRVUVT VEVEX0FORF9TVVNQRU5ERUQpCisJCXdha2VfdW5sb2NrKCZtYWluX3dha2VfbG9jayk7CisJc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmc3RhdGVfbG9jaywgaXJxZmxhZ3MpOworfQorCitzdGF0aWMg dm9pZCBsYXRlX3Jlc3VtZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCit7CisJc3RydWN0IGVh cmx5X3N1c3BlbmQgKnBvczsKKwl1bnNpZ25lZCBsb25nIGlycWZsYWdzOworCWludCBhYm9ydCA9 IDA7CisKKwltdXRleF9sb2NrKCZlYXJseV9zdXNwZW5kX2xvY2spOworCXNwaW5fbG9ja19pcnFz YXZlKCZzdGF0ZV9sb2NrLCBpcnFmbGFncyk7CisJaWYgKHN0YXRlID09IFNVU1BFTkRFRCkKKwkJ c3RhdGUgJj0gflNVU1BFTkRFRDsKKwllbHNlCisJCWFib3J0ID0gMTsKKwlzcGluX3VubG9ja19p cnFyZXN0b3JlKCZzdGF0ZV9sb2NrLCBpcnFmbGFncyk7CisKKwlpZiAoYWJvcnQpIHsKKwkJaWYg KGRlYnVnX21hc2sgJiBERUJVR19TVVNQRU5EKQorCQkJcHJfaW5mbygibGF0ZV9yZXN1bWU6IGFi b3J0LCBzdGF0ZSAlZFxuIiwgc3RhdGUpOworCQlnb3RvIGFib3J0OworCX0KKwlpZiAoZGVidWdf bWFzayAmIERFQlVHX1NVU1BFTkQpCisJCXByX2luZm8oImxhdGVfcmVzdW1lOiBjYWxsIGhhbmRs ZXJzXG4iKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3JldmVyc2UocG9zLCAmZWFybHlfc3VzcGVu ZF9oYW5kbGVycywgbGluaykKKwkJaWYgKHBvcy0+cmVzdW1lICE9IE5VTEwpCisJCQlwb3MtPnJl c3VtZShwb3MpOworCWlmIChkZWJ1Z19tYXNrICYgREVCVUdfU1VTUEVORCkKKwkJcHJfaW5mbygi bGF0ZV9yZXN1bWU6IGRvbmVcbiIpOworYWJvcnQ6CisJbXV0ZXhfdW5sb2NrKCZlYXJseV9zdXNw ZW5kX2xvY2spOworfQorCit2b2lkIHJlcXVlc3Rfc3VzcGVuZF9zdGF0ZShzdXNwZW5kX3N0YXRl X3QgbmV3X3N0YXRlKQoreworCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7CisJaW50IG9sZF9zbGVl cDsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZzdGF0ZV9sb2NrLCBpcnFmbGFncyk7CisJb2xkX3Ns ZWVwID0gc3RhdGUgJiBTVVNQRU5EX1JFUVVFU1RFRDsKKwlpZiAoZGVidWdfbWFzayAmIERFQlVH X1VTRVJfU1RBVEUpIHsKKwkJc3RydWN0IHRpbWVzcGVjIHRzOworCQlzdHJ1Y3QgcnRjX3RpbWUg dG07CisJCWdldG5zdGltZW9mZGF5KCZ0cyk7CisJCXJ0Y190aW1lX3RvX3RtKHRzLnR2X3NlYywg JnRtKTsKKwkJcHJfaW5mbygicmVxdWVzdF9zdXNwZW5kX3N0YXRlOiAlcyAoJWQtPiVkKSBhdCAl bGxkICIKKwkJCSIoJWQtJTAyZC0lMDJkICUwMmQ6JTAyZDolMDJkLiUwOWx1IFVUQylcbiIsCisJ CQluZXdfc3RhdGUgIT0gUE1fU1VTUEVORF9PTiA/ICJzbGVlcCIgOiAid2FrZXVwIiwKKwkJCXJl cXVlc3RlZF9zdXNwZW5kX3N0YXRlLCBuZXdfc3RhdGUsCisJCQlrdGltZV90b19ucyhrdGltZV9n ZXQoKSksCisJCQl0bS50bV95ZWFyICsgMTkwMCwgdG0udG1fbW9uICsgMSwgdG0udG1fbWRheSwK KwkJCXRtLnRtX2hvdXIsIHRtLnRtX21pbiwgdG0udG1fc2VjLCB0cy50dl9uc2VjKTsKKwl9CisJ aWYgKCFvbGRfc2xlZXAgJiYgbmV3X3N0YXRlICE9IFBNX1NVU1BFTkRfT04pIHsKKwkJc3RhdGUg fD0gU1VTUEVORF9SRVFVRVNURUQ7CisJCXF1ZXVlX3dvcmsoc3VzcGVuZF93b3JrX3F1ZXVlLCAm ZWFybHlfc3VzcGVuZF93b3JrKTsKKwl9IGVsc2UgaWYgKG9sZF9zbGVlcCAmJiBuZXdfc3RhdGUg PT0gUE1fU1VTUEVORF9PTikgeworCQlzdGF0ZSAmPSB+U1VTUEVORF9SRVFVRVNURUQ7CisJCXdh a2VfbG9jaygmbWFpbl93YWtlX2xvY2spOworCQlxdWV1ZV93b3JrKHN1c3BlbmRfd29ya19xdWV1 ZSwgJmxhdGVfcmVzdW1lX3dvcmspOworCX0KKwlyZXF1ZXN0ZWRfc3VzcGVuZF9zdGF0ZSA9IG5l d19zdGF0ZTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzdGF0ZV9sb2NrLCBpcnFmbGFncyk7 Cit9CisKK3N1c3BlbmRfc3RhdGVfdCBnZXRfc3VzcGVuZF9zdGF0ZSh2b2lkKQoreworCXJldHVy biByZXF1ZXN0ZWRfc3VzcGVuZF9zdGF0ZTsKK30KZGlmZiAtLWdpdCBhL2tlcm5lbC9wb3dlci9w b3dlci5oIGIva2VybmVsL3Bvd2VyL3Bvd2VyLmgKaW5kZXggMTUyNzE3NC4uN2NlOTYzNyAxMDA2 NDQKLS0tIGEva2VybmVsL3Bvd2VyL3Bvd2VyLmgKKysrIGIva2VybmVsL3Bvd2VyL3Bvd2VyLmgK QEAgLTIzMCwzICsyMzAsOSBAQCBleHRlcm4gc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKnN1c3Bl bmRfd29ya19xdWV1ZTsKIGV4dGVybiBzdHJ1Y3Qgd2FrZV9sb2NrIG1haW5fd2FrZV9sb2NrOwog ZXh0ZXJuIHN1c3BlbmRfc3RhdGVfdCByZXF1ZXN0ZWRfc3VzcGVuZF9zdGF0ZTsKICNlbmRpZgor CisjaWZkZWYgQ09ORklHX0VBUkxZU1VTUEVORAorLyoga2VybmVsL3Bvd2VyL2Vhcmx5c3VzcGVu ZC5jICovCit2b2lkIHJlcXVlc3Rfc3VzcGVuZF9zdGF0ZShzdXNwZW5kX3N0YXRlX3Qgc3RhdGUp Oworc3VzcGVuZF9zdGF0ZV90IGdldF9zdXNwZW5kX3N0YXRlKHZvaWQpOworI2VuZGlmCi0tIAox LjYuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGlu dXgtcG0gbWFpbGluZyBsaXN0CmxpbnV4LXBtQGxpc3RzLmxpbnV4LWZvdW5kYXRpb24ub3JnCmh0 dHBzOi8vbGlzdHMubGludXgtZm91bmRhdGlvbi5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1w bQ==