From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?utf-8?q?Arve=20Hj=C3=B8nnev=C3=A5g?= Subject: [PATCH 06/10] PM: Add early suspend api. Date: Tue, 10 Feb 2009 17:49:11 -0800 Message-ID: <1234316955-31304-7-git-send-email-arve@android.com> References: <1234316955-31304-1-git-send-email-arve@android.com> <1234316955-31304-2-git-send-email-arve@android.com> <1234316955-31304-3-git-send-email-arve@android.com> <1234316955-31304-4-git-send-email-arve@android.com> <1234316955-31304-5-git-send-email-arve@android.com> <1234316955-31304-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: <1234316955-31304-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 SWYgZWFybHktc3VzcGVuZCBzdXBwb3J0IGlzIGVuYWJsZWQsIGVhcmx5IHN1c3BlbmQgaGFuZGxl cnMgd2lsbCBiZSBjYWxsZWQKd2hlbiBhIHN0YXRlIG90aGVyIHRoYW4gIm9uIiBpcyB3cml0dGVu IHRvIC9zeXMvcG93ZXIvcmVxdWVzdF9zdGF0ZSBiZWZvcmUKdGhlIHVubG9ja2luZyAibWFpbiIg d2FrZWxvY2suIFdyaXRpbmcgIm9uIiwgbG9ja3MgdGhlICJtYWluIiB3YWtlbG9jayBhbmQKY2Fs bHMgdGhlIGVhcmx5LXN1c3BlbmQgcmVzdW1lIGhhbmRsZXJzLgoKU2lnbmVkLW9mZi1ieTogQXJ2 ZSBIasO4bm5ldsOlZyA8YXJ2ZUBhbmRyb2lkLmNvbT4KLS0tCiBEb2N1bWVudGF0aW9uL3Bvd2Vy L2Vhcmx5LXN1c3BlbmQudHh0IHwgICAyNiArKysrKwogaW5jbHVkZS9saW51eC9lYXJseXN1c3Bl bmQuaCAgICAgICAgICB8ICAgNTUgKysrKysrKysrKwoga2VybmVsL3Bvd2VyL0tjb25maWcgICAg ICAgICAgICAgICAgICB8ICAgIDggKysKIGtlcm5lbC9wb3dlci9NYWtlZmlsZSAgICAgICAgICAg ICAgICAgfCAgICAxICsKIGtlcm5lbC9wb3dlci9lYXJseXN1c3BlbmQuYyAgICAgICAgICAgfCAg MTc0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwoga2VybmVsL3Bvd2VyL3Bvd2Vy LmggICAgICAgICAgICAgICAgICB8ICAgIDUgKwoga2VybmVsL3Bvd2VyL3dha2Vsb2NrLmMgICAg ICAgICAgICAgICB8ICAgIDUgKwogNyBmaWxlcyBjaGFuZ2VkLCAyNzQgaW5zZXJ0aW9ucygrKSwg MCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL3Bvd2VyL2Vh cmx5LXN1c3BlbmQudHh0CiBjcmVhdGUgbW9kZSAxMDA3NTUgaW5jbHVkZS9saW51eC9lYXJseXN1 c3BlbmQuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGtlcm5lbC9wb3dlci9lYXJseXN1c3BlbmQuYwoK ZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcG93ZXIvZWFybHktc3VzcGVuZC50eHQgYi9Eb2N1 bWVudGF0aW9uL3Bvd2VyL2Vhcmx5LXN1c3BlbmQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLjgyODZkM2EKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Bv d2VyL2Vhcmx5LXN1c3BlbmQudHh0CkBAIC0wLDAgKzEsMjYgQEAKK0Vhcmx5LXN1c3BlbmQKKz09 PT09PT09PT09PT0KKworVGhlIGVhcmx5LXN1c3BlbmQgYXBpIGFsbG93cyBkcml2ZXJzIHRvIGdl dCBub3RpZmllZCB3aGVuIHVzZXItc3BhY2Ugd3JpdGVzIHRvIAorL3N5cy9wb3dlci9yZXF1ZXN0 X3N0YXRlIHRvIGluZGljYXRlIHRoYXQgdGhlIHVzZXIgdmlzaWJsZSBzbGVlcCBzdGF0ZSBzaG91 bGQgCitjaGFuZ2UuIEEgbGV2ZWwgY29udHJvbHMgd2hhdCBvcmRlciB0aGUgaGFuZGxlcnMgYXJl IGNhbGxlZCBpbi4gU3VzcGVuZCAKK2hhbmRsZXJzIGFyZSBjYWxsZWQgaW4gbG93IHRvIGhpZ2gg bGV2ZWwgb3JkZXIsIHJlc3VtZSBoYW5kbGVycyBhcmUgY2FsbGVkIGluIAordGhlIG9wcG9zaXRl IG9yZGVyLiAKKworRm91ciBsZXZlbHMgYXJlIGRlZmluZWQ6CitFQVJMWV9TVVNQRU5EX0xFVkVM X0JMQU5LX1NDUkVFTjoKKyAgT24gc3VzcGVuZCB0aGUgc2NyZWVuIHNob3VsZCBiZSB0dXJuZWQg b2ZmIGJ1dCB0aGUgZnJhbWVidWZmZXIgbXVzdCBzdGlsbCBiZQorICBhY2Nlc3NpYmxlLiBPbiBy ZXN1bWUgdGhlIHNjcmVlbiBjYW4gYmUgdHVybmVkIGJhY2sgb24uCisKK0VBUkxZX1NVU1BFTkRf TEVWRUxfU1RPUF9EUkFXSU5HOgorICBPbiBzdXNwZW5kIHRoaXMgbGV2ZWwgbm90aWZpZXMgdXNl ci1zcGFjZSB0aGF0IGl0IHNob3VsZCBzdG9wIGFjY2Vzc2luZyB0aGUgCisgIGZyYW1lYnVmZmVy IGFuZCBpdCB3YWl0cyBmb3IgaXQgdG8gY29tcGxldGUuIE9uIHJlc3VtZSBpdCBub3RpZmllcyB1 c2VyLXNwYWNlIAorICB0aGF0IGl0IHNob3VsZCByZXN1bWUgc2NyZWVuIGFjY2Vzcy4KKyAgVHdv IG1ldGhvZHMgYXJlIHByb3ZpZGVkLCBjb25zb2xlIHN3aXRjaCBvciBhIHN5c2ZzIGludGVyZmFj ZS4KKworRUFSTFlfU1VTUEVORF9MRVZFTF9ESVNBQkxFX0ZCOgorICBUdXJuIG9mZiB0aGUgZnJh bWVidWZmZXIgb24gc3VzcGVuZCBhbmQgYmFjayBvbiBvbiByZXN1bWUuCisKK0VBUkxZX1NVU1BF TkRfTEVWRUxfU1RPUF9JTlBVVDoKKyAgT24gc3VzcGVuZCB0dXJuIG9mZiBpbnB1dCBkZXZpY2Vz IHRoYXQgYXJlIG5vdCBjYXBhYmxlIG9mIHdha2V1cCBvciB3aGVyZQorICB3YWtldXAgaXMgZGlz YWJsZWQuIE9uIHJlc3VtZSB0dXJuIHRoZSBzYW1lIGRldmljZXMgYmFjayBvbi4KZGlmZiAtLWdp dCBhL2luY2x1ZGUvbGludXgvZWFybHlzdXNwZW5kLmggYi9pbmNsdWRlL2xpbnV4L2Vhcmx5c3Vz cGVuZC5oCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmUzZDAzZmIKLS0tIC9k ZXYvbnVsbAorKysgYi9pbmNsdWRlL2xpbnV4L2Vhcmx5c3VzcGVuZC5oCkBAIC0wLDAgKzEsNTUg QEAKKy8qIGluY2x1ZGUvbGludXgvZWFybHlzdXNwZW5kLmgKKyAqCisgKiBDb3B5cmlnaHQgKEMp IDIwMDctMjAwOCBHb29nbGUsIEluYy4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2Vk IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIHZl cnNpb24gMiwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGFu ZAorICogbWF5IGJlIGNvcGllZCwgZGlzdHJpYnV0ZWQsIGFuZCBtb2RpZmllZCB1bmRlciB0aG9z ZSB0ZXJtcy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqLworCisjaWZuZGVmIF9M SU5VWF9FQVJMWVNVU1BFTkRfSAorI2RlZmluZSBfTElOVVhfRUFSTFlTVVNQRU5EX0gKKworI2lu Y2x1ZGUgPGxpbnV4L2xpc3QuaD4KKworLyogVGhlIGVhcmx5X3N1c3BlbmQgc3RydWN0dXJlIGRl ZmluZXMgc3VzcGVuZCBhbmQgcmVzdW1lIGhvb2tzIHRvIGJlIGNhbGxlZAorICogd2hlbiB0aGUg dXNlciB2aXNpYmxlIHNsZWVwIHN0YXRlIG9mIHRoZSBzeXN0ZW0gY2hhbmdlcywgYW5kIGEgbGV2 ZWwgdG8KKyAqIGNvbnRyb2wgdGhlIG9yZGVyLiBUaGV5IGNhbiBiZSB1c2VkIHRvIHR1cm4gb2Zm IHRoZSBzY3JlZW4gYW5kIGlucHV0CisgKiBkZXZpY2VzIHRoYXQgYXJlIG5vdCB1c2VkIGZvciB3 YWtldXAuCisgKiBTdXNwZW5kIGhhbmRsZXJzIGFyZSBjYWxsZWQgaW4gbG93IHRvIGhpZ2ggbGV2 ZWwgb3JkZXIsIHJlc3VtZSBoYW5kbGVycyBhcmUKKyAqIGNhbGxlZCBpbiB0aGUgb3Bwb3NpdGUg b3JkZXIuIElmLCB3aGVuIGNhbGxpbmcgcmVnaXN0ZXJfZWFybHlfc3VzcGVuZCwKKyAqIHRoZSBz dXNwZW5kIGhhbmRsZXJzIGhhdmUgYWxyZWFkeSBiZWVuIGNhbGxlZCB3aXRob3V0IGEgbWF0Y2hp bmcgY2FsbCB0byB0aGUKKyAqIHJlc3VtZSBoYW5kbGVycywgdGhlIHN1c3BlbmQgaGFuZGxlciB3 aWxsIGJlIGNhbGxlZCBkaXJlY3RseSBmcm9tCisgKiByZWdpc3Rlcl9lYXJseV9zdXNwZW5kLiBU aGlzIGRpcmVjdCBjYWxsIGNhbiB2aW9sYXRlIHRoZSBub3JtYWwgbGV2ZWwgb3JkZXIuCisgKi8K K2VudW0geworCUVBUkxZX1NVU1BFTkRfTEVWRUxfQkxBTktfU0NSRUVOID0gNTAsCisJRUFSTFlf U1VTUEVORF9MRVZFTF9TVE9QX0lOUFVUID0gNzUsCisJRUFSTFlfU1VTUEVORF9MRVZFTF9TVE9Q X0RSQVdJTkcgPSAxMDAsCisJRUFSTFlfU1VTUEVORF9MRVZFTF9ESVNBQkxFX0ZCID0gMTUwLAor fTsKK3N0cnVjdCBlYXJseV9zdXNwZW5kIHsKKyNpZmRlZiBDT05GSUdfRUFSTFlTVVNQRU5ECisJ c3RydWN0IGxpc3RfaGVhZCBsaW5rOworCWludCBsZXZlbDsKKwl2b2lkICgqc3VzcGVuZCkoc3Ry dWN0IGVhcmx5X3N1c3BlbmQgKmgpOworCXZvaWQgKCpyZXN1bWUpKHN0cnVjdCBlYXJseV9zdXNw ZW5kICpoKTsKKyNlbmRpZgorfTsKKworI2lmZGVmIENPTkZJR19FQVJMWVNVU1BFTkQKK3ZvaWQg cmVnaXN0ZXJfZWFybHlfc3VzcGVuZChzdHJ1Y3QgZWFybHlfc3VzcGVuZCAqaGFuZGxlcik7Cit2 b2lkIHVucmVnaXN0ZXJfZWFybHlfc3VzcGVuZChzdHJ1Y3QgZWFybHlfc3VzcGVuZCAqaGFuZGxl cik7CisjZWxzZQorI2RlZmluZSByZWdpc3Rlcl9lYXJseV9zdXNwZW5kKGhhbmRsZXIpIGRvIHsg fSB3aGlsZSAoMCkKKyNkZWZpbmUgdW5yZWdpc3Rlcl9lYXJseV9zdXNwZW5kKGhhbmRsZXIpIGRv IHsgfSB3aGlsZSAoMCkKKyNlbmRpZgorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEva2VybmVsL3Bv d2VyL0tjb25maWcgYi9rZXJuZWwvcG93ZXIvS2NvbmZpZwppbmRleCBlNzg0MDE0Li5jY2M1NWJl IDEwMDY0NAotLS0gYS9rZXJuZWwvcG93ZXIvS2NvbmZpZworKysgYi9rZXJuZWwvcG93ZXIvS2Nv bmZpZwpAQCAtMTUxLDYgKzE1MSwxNCBAQCBjb25maWcgVVNFUl9XQUtFTE9DSwogCSAgdG8gY3Jl YXRlLCBsb2NrIGFuZCB1bmxvY2sgYSB3YWtlbG9jay4gVGhlIHdha2Vsb2NrIHdpbGwgYmUKIAkg IGRlbGV0ZWQgd2hlbiB0aGUgZGV2aWNlIGlzIGNsb3NlZC4KIAorY29uZmlnIEVBUkxZU1VTUEVO RAorCWJvb2wgIkVhcmx5IHN1c3BlbmQiCisJZGVwZW5kcyBvbiBXQUtFTE9DSworCWRlZmF1bHQg eQorCS0tLWhlbHAtLS0KKwkgIENhbGwgZWFybHkgc3VzcGVuZCBoYW5kbGVycyB3aGVuIHRoZSB1 c2VyIHJlcXVlc3RlZCBzbGVlcCBzdGF0ZQorCSAgY2hhbmdlcy4KKwogY29uZmlnIEhJQkVSTkFU SU9OCiAJYm9vbCAiSGliZXJuYXRpb24gKGFrYSAnc3VzcGVuZCB0byBkaXNrJykiCiAJZGVwZW5k cyBvbiBQTSAmJiBTV0FQICYmIEFSQ0hfSElCRVJOQVRJT05fUE9TU0lCTEUKZGlmZiAtLWdpdCBh L2tlcm5lbC9wb3dlci9NYWtlZmlsZSBiL2tlcm5lbC9wb3dlci9NYWtlZmlsZQppbmRleCA2M2Qz MGRiLi5kMzQ2N2IzIDEwMDY0NAotLS0gYS9rZXJuZWwvcG93ZXIvTWFrZWZpbGUKKysrIGIva2Vy bmVsL3Bvd2VyL01ha2VmaWxlCkBAIC04LDYgKzgsNyBAQCBvYmotJChDT05GSUdfUE1fU0xFRVAp CQkrPSBjb25zb2xlLm8KIG9iai0kKENPTkZJR19GUkVFWkVSKQkJKz0gcHJvY2Vzcy5vCiBvYmot JChDT05GSUdfV0FLRUxPQ0spCQkrPSB3YWtlbG9jay5vCiBvYmotJChDT05GSUdfVVNFUl9XQUtF TE9DSykJKz0gdXNlcndha2Vsb2NrLm8KK29iai0kKENPTkZJR19FQVJMWVNVU1BFTkQpCSs9IGVh cmx5c3VzcGVuZC5vCiBvYmotJChDT05GSUdfSElCRVJOQVRJT04pCSs9IHN3c3VzcC5vIGRpc2su byBzbmFwc2hvdC5vIHN3YXAubyB1c2VyLm8KIAogb2JqLSQoQ09ORklHX01BR0lDX1NZU1JRKQkr PSBwb3dlcm9mZi5vCmRpZmYgLS1naXQgYS9rZXJuZWwvcG93ZXIvZWFybHlzdXNwZW5kLmMgYi9r ZXJuZWwvcG93ZXIvZWFybHlzdXNwZW5kLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uNGNkY2EzOQotLS0gL2Rldi9udWxsCisrKyBiL2tlcm5lbC9wb3dlci9lYXJseXN1c3Bl bmQuYwpAQCAtMCwwICsxLDE3NCBAQAorLyoga2VybmVsL3Bvd2VyL2Vhcmx5c3VzcGVuZC5jCisg KgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMDggR29vZ2xlLCBJbmMuCisgKgorICogVGhpcyBz b2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYworICogTGljZW5zZSB2ZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBhbmQKKyAqIG1heSBiZSBjb3BpZWQsIGRpc3RyaWJ1dGVkLCBhbmQg bW9kaWZpZWQgdW5kZXIgdGhvc2UgdGVybXMuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq CisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2Vhcmx5c3VzcGVuZC5oPgorI2luY2x1ZGUgPGxpbnV4 L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L211dGV4Lmg+CisjaW5jbHVkZSA8bGludXgvcnRj Lmg+CisjaW5jbHVkZSA8bGludXgvc3lzY2FsbHMuaD4gLyogc3lzX3N5bmMgKi8KKyNpbmNsdWRl IDxsaW51eC93YWtlbG9jay5oPgorI2luY2x1ZGUgPGxpbnV4L3dvcmtxdWV1ZS5oPgorCisjaW5j bHVkZSAicG93ZXIuaCIKKworZW51bSB7CisJREVCVUdfU1VTUEVORCA9IDFVIDw8IDAsCisJREVC VUdfSEFORExFUlMgPSAxVSA8PCAxLAorfTsKK3N0YXRpYyBpbnQgZGVidWdfbWFzazsKK21vZHVs ZV9wYXJhbV9uYW1lZChkZWJ1Z19tYXNrLCBkZWJ1Z19tYXNrLCBpbnQsIFNfSVJVR08gfCBTX0lX VVNSIHwgU19JV0dSUCk7CisKK3N0YXRpYyBERUZJTkVfTVVURVgoZWFybHlfc3VzcGVuZF9sb2Nr KTsKK3N0YXRpYyBMSVNUX0hFQUQoZWFybHlfc3VzcGVuZF9oYW5kbGVycyk7CitzdGF0aWMgdm9p ZCBlYXJseV9zdXNwZW5kKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7CitzdGF0aWMgdm9pZCBs YXRlX3Jlc3VtZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspOworc3RhdGljIERFQ0xBUkVfV09S SyhlYXJseV9zdXNwZW5kX3dvcmssIGVhcmx5X3N1c3BlbmQpOworc3RhdGljIERFQ0xBUkVfV09S SyhsYXRlX3Jlc3VtZV93b3JrLCBsYXRlX3Jlc3VtZSk7CitzdGF0aWMgREVGSU5FX1NQSU5MT0NL KHN0YXRlX2xvY2spOworZW51bSB7CisJU1VTUEVORF9SRVFVRVNURUQgPSAweDEsCisJU1VTUEVO REVEID0gMHgyLAorCVNVU1BFTkRfUkVRVUVTVEVEX0FORF9TVVNQRU5ERUQgPSBTVVNQRU5EX1JF UVVFU1RFRCB8IFNVU1BFTkRFRCwKK307CitzdGF0aWMgaW50IHN0YXRlOworCit2b2lkIHJlZ2lz dGVyX2Vhcmx5X3N1c3BlbmQoc3RydWN0IGVhcmx5X3N1c3BlbmQgKmhhbmRsZXIpCit7CisJc3Ry dWN0IGxpc3RfaGVhZCAqcG9zOworCisJbXV0ZXhfbG9jaygmZWFybHlfc3VzcGVuZF9sb2NrKTsK KwlsaXN0X2Zvcl9lYWNoKHBvcywgJmVhcmx5X3N1c3BlbmRfaGFuZGxlcnMpIHsKKwkJc3RydWN0 IGVhcmx5X3N1c3BlbmQgKmU7CisJCWUgPSBsaXN0X2VudHJ5KHBvcywgc3RydWN0IGVhcmx5X3N1 c3BlbmQsIGxpbmspOworCQlpZiAoZS0+bGV2ZWwgPiBoYW5kbGVyLT5sZXZlbCkKKwkJCWJyZWFr OworCX0KKwlsaXN0X2FkZF90YWlsKCZoYW5kbGVyLT5saW5rLCBwb3MpOworCWlmICgoc3RhdGUg JiBTVVNQRU5ERUQpICYmIGhhbmRsZXItPnN1c3BlbmQpCisJCWhhbmRsZXItPnN1c3BlbmQoaGFu ZGxlcik7CisJbXV0ZXhfdW5sb2NrKCZlYXJseV9zdXNwZW5kX2xvY2spOworfQorRVhQT1JUX1NZ TUJPTChyZWdpc3Rlcl9lYXJseV9zdXNwZW5kKTsKKwordm9pZCB1bnJlZ2lzdGVyX2Vhcmx5X3N1 c3BlbmQoc3RydWN0IGVhcmx5X3N1c3BlbmQgKmhhbmRsZXIpCit7CisJbXV0ZXhfbG9jaygmZWFy bHlfc3VzcGVuZF9sb2NrKTsKKwlsaXN0X2RlbCgmaGFuZGxlci0+bGluayk7CisJbXV0ZXhfdW5s b2NrKCZlYXJseV9zdXNwZW5kX2xvY2spOworfQorRVhQT1JUX1NZTUJPTCh1bnJlZ2lzdGVyX2Vh cmx5X3N1c3BlbmQpOworCitzdGF0aWMgdm9pZCBlYXJseV9zdXNwZW5kKHN0cnVjdCB3b3JrX3N0 cnVjdCAqd29yaykKK3sKKwlzdHJ1Y3QgZWFybHlfc3VzcGVuZCAqcG9zOworCXVuc2lnbmVkIGxv bmcgaXJxZmxhZ3M7CisJaW50IGFib3J0ID0gMDsKKworCW11dGV4X2xvY2soJmVhcmx5X3N1c3Bl bmRfbG9jayk7CisJc3Bpbl9sb2NrX2lycXNhdmUoJnN0YXRlX2xvY2ssIGlycWZsYWdzKTsKKwlp ZiAoc3RhdGUgPT0gU1VTUEVORF9SRVFVRVNURUQpCisJCXN0YXRlIHw9IFNVU1BFTkRFRDsKKwll bHNlCisJCWFib3J0ID0gMTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzdGF0ZV9sb2NrLCBp cnFmbGFncyk7CisKKwlpZiAoYWJvcnQpIHsKKwkJaWYgKGRlYnVnX21hc2sgJiBERUJVR19TVVNQ RU5EKQorCQkJcHJfaW5mbygiZWFybHlfc3VzcGVuZDogYWJvcnQsIHN0YXRlICVkXG4iLCBzdGF0 ZSk7CisJCW11dGV4X3VubG9jaygmZWFybHlfc3VzcGVuZF9sb2NrKTsKKwkJZ290byBhYm9ydDsK Kwl9CisKKwlpZiAoZGVidWdfbWFzayAmIERFQlVHX1NVU1BFTkQpCisJCXByX2luZm8oImVhcmx5 X3N1c3BlbmQ6IGNhbGwgaGFuZGxlcnNcbiIpOworCWxpc3RfZm9yX2VhY2hfZW50cnkocG9zLCAm ZWFybHlfc3VzcGVuZF9oYW5kbGVycywgbGluaykgeworCQlpZiAocG9zLT5zdXNwZW5kKSB7CisJ CQlpZiAoZGVidWdfbWFzayAmIERFQlVHX0hBTkRMRVJTKQorCQkJCXByX2luZm8oImVhcmx5X3N1 c3BlbmQ6IGNhbGwgJXBGXG4iLAorCQkJCQlwb3MtPnN1c3BlbmQpOworCQkJcG9zLT5zdXNwZW5k KHBvcyk7CisJCQlpZiAoZGVidWdfbWFzayAmIERFQlVHX0hBTkRMRVJTKQorCQkJCXByX2luZm8o ImVhcmx5X3N1c3BlbmQ6ICVwRiByZXR1cm5lZFxuIiwKKwkJCQkJcG9zLT5zdXNwZW5kKTsKKwkJ fQorCX0KKwltdXRleF91bmxvY2soJmVhcmx5X3N1c3BlbmRfbG9jayk7CisKKwlpZiAoZGVidWdf bWFzayAmIERFQlVHX1NVU1BFTkQpCisJCXByX2luZm8oImVhcmx5X3N1c3BlbmQ6IHN5bmNcbiIp OworCisJc3lzX3N5bmMoKTsKK2Fib3J0OgorCXNwaW5fbG9ja19pcnFzYXZlKCZzdGF0ZV9sb2Nr LCBpcnFmbGFncyk7CisJaWYgKHN0YXRlID09IFNVU1BFTkRfUkVRVUVTVEVEX0FORF9TVVNQRU5E RUQpCisJCXdha2VfdW5sb2NrKCZtYWluX3dha2VfbG9jayk7CisJc3Bpbl91bmxvY2tfaXJxcmVz dG9yZSgmc3RhdGVfbG9jaywgaXJxZmxhZ3MpOworfQorCitzdGF0aWMgdm9pZCBsYXRlX3Jlc3Vt ZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCit7CisJc3RydWN0IGVhcmx5X3N1c3BlbmQgKnBv czsKKwl1bnNpZ25lZCBsb25nIGlycWZsYWdzOworCWludCBhYm9ydCA9IDA7CisKKwltdXRleF9s b2NrKCZlYXJseV9zdXNwZW5kX2xvY2spOworCXNwaW5fbG9ja19pcnFzYXZlKCZzdGF0ZV9sb2Nr LCBpcnFmbGFncyk7CisJaWYgKHN0YXRlID09IFNVU1BFTkRFRCkKKwkJc3RhdGUgPSAwOyAvKiBj bGVhciBTVVNQRU5ERUQgKi8KKwllbHNlCisJCWFib3J0ID0gMTsKKwlzcGluX3VubG9ja19pcnFy ZXN0b3JlKCZzdGF0ZV9sb2NrLCBpcnFmbGFncyk7CisKKwlpZiAoYWJvcnQpIHsKKwkJaWYgKGRl YnVnX21hc2sgJiBERUJVR19TVVNQRU5EKQorCQkJcHJfaW5mbygibGF0ZV9yZXN1bWU6IGFib3J0 LCBzdGF0ZSAlZFxuIiwgc3RhdGUpOworCQlnb3RvIGFib3J0OworCX0KKwlpZiAoZGVidWdfbWFz ayAmIERFQlVHX1NVU1BFTkQpCisJCXByX2luZm8oImxhdGVfcmVzdW1lOiBjYWxsIGhhbmRsZXJz XG4iKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3JldmVyc2UocG9zLCAmZWFybHlfc3VzcGVuZF9o YW5kbGVycywgbGluaykKKwkJaWYgKHBvcy0+cmVzdW1lKSB7CisJCQlpZiAoZGVidWdfbWFzayAm IERFQlVHX0hBTkRMRVJTKQorCQkJCXByX2luZm8oImVhcmx5X3N1c3BlbmQ6IGNhbGwgJXBGXG4i LAorCQkJCQlwb3MtPnJlc3VtZSk7CisJCQlwb3MtPnJlc3VtZShwb3MpOworCQkJaWYgKGRlYnVn X21hc2sgJiBERUJVR19IQU5ETEVSUykKKwkJCQlwcl9pbmZvKCJlYXJseV9zdXNwZW5kOiAlcEYg cmV0dXJuZWRcbiIsCisJCQkJCXBvcy0+cmVzdW1lKTsKKwkJfQorCWlmIChkZWJ1Z19tYXNrICYg REVCVUdfU1VTUEVORCkKKwkJcHJfaW5mbygibGF0ZV9yZXN1bWU6IGRvbmVcbiIpOworYWJvcnQ6 CisJbXV0ZXhfdW5sb2NrKCZlYXJseV9zdXNwZW5kX2xvY2spOworfQorCit2b2lkIHJlcXVlc3Rf ZWFybHlfc3VzcGVuZF9zdGF0ZShib29sIG9uKQoreworCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7 CisJaW50IG9sZF9zbGVlcDsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZzdGF0ZV9sb2NrLCBpcnFm bGFncyk7CisJb2xkX3NsZWVwID0gc3RhdGUgJiBTVVNQRU5EX1JFUVVFU1RFRDsKKwlpZiAoIW9s ZF9zbGVlcCAmJiAhb24pIHsKKwkJc3RhdGUgfD0gU1VTUEVORF9SRVFVRVNURUQ7CisJCXF1ZXVl X3dvcmsoc3VzcGVuZF93b3JrX3F1ZXVlLCAmZWFybHlfc3VzcGVuZF93b3JrKTsKKwl9IGVsc2Ug aWYgKG9sZF9zbGVlcCAmJiBvbikgeworCQlzdGF0ZSAmPSB+U1VTUEVORF9SRVFVRVNURUQ7CisJ CXdha2VfbG9jaygmbWFpbl93YWtlX2xvY2spOworCQlxdWV1ZV93b3JrKHN1c3BlbmRfd29ya19x dWV1ZSwgJmxhdGVfcmVzdW1lX3dvcmspOworCX0KKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZz dGF0ZV9sb2NrLCBpcnFmbGFncyk7Cit9CisKZGlmZiAtLWdpdCBhL2tlcm5lbC9wb3dlci9wb3dl ci5oIGIva2VybmVsL3Bvd2VyL3Bvd2VyLmgKaW5kZXggOTQ2ODY3OS4uN2Q4NTM4ZCAxMDA2NDQK LS0tIGEva2VybmVsL3Bvd2VyL3Bvd2VyLmgKKysrIGIva2VybmVsL3Bvd2VyL3Bvd2VyLmgKQEAg LTIzMCwzICsyMzAsOCBAQCBleHRlcm4gc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKnN1c3BlbmRf d29ya19xdWV1ZTsKIGV4dGVybiBzdHJ1Y3Qgd2FrZV9sb2NrIG1haW5fd2FrZV9sb2NrOwogdm9p ZCByZXF1ZXN0X3N1c3BlbmRfc3RhdGUoc3VzcGVuZF9zdGF0ZV90IHN0YXRlKTsKICNlbmRpZgor CisjaWZkZWYgQ09ORklHX0VBUkxZU1VTUEVORAorLyoga2VybmVsL3Bvd2VyL2Vhcmx5c3VzcGVu ZC5jICovCit2b2lkIHJlcXVlc3RfZWFybHlfc3VzcGVuZF9zdGF0ZShib29sIG9uKTsKKyNlbmRp ZgpkaWZmIC0tZ2l0IGEva2VybmVsL3Bvd2VyL3dha2Vsb2NrLmMgYi9rZXJuZWwvcG93ZXIvd2Fr ZWxvY2suYwppbmRleCBjMzk2YjU4Li41MDQ4YWQzIDEwMDY0NAotLS0gYS9rZXJuZWwvcG93ZXIv d2FrZWxvY2suYworKysgYi9rZXJuZWwvcG93ZXIvd2FrZWxvY2suYwpAQCAtNTkzLDEwICs1OTMs MTUgQEAgdm9pZCByZXF1ZXN0X3N1c3BlbmRfc3RhdGUoc3VzcGVuZF9zdGF0ZV90IHN0YXRlKQog CQkJdG0udG1faG91ciwgdG0udG1fbWluLCB0bS50bV9zZWMsIHRzLnR2X25zZWMpOwogCX0KIAly ZXF1ZXN0ZWRfc3VzcGVuZF9zdGF0ZSA9IHN0YXRlOworCisjaWZkZWYgQ09ORklHX0VBUkxZU1VT UEVORAorCXJlcXVlc3RfZWFybHlfc3VzcGVuZF9zdGF0ZShzdGF0ZSA9PSBQTV9TVVNQRU5EX09O KTsKKyNlbHNlCiAJaWYgKHN0YXRlID09IFBNX1NVU1BFTkRfT04pCiAJCXdha2VfbG9jaygmbWFp bl93YWtlX2xvY2spOwogCWVsc2UKIAkJd2FrZV91bmxvY2soJm1haW5fd2FrZV9sb2NrKTsKKyNl bmRpZgogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnN0YXRlX2xvY2ssIGlycWZsYWdzKTsKIH0K IAotLSAKMS42LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmxpbnV4LXBtIG1haWxpbmcgbGlzdApsaW51eC1wbUBsaXN0cy5saW51eC1mb3VuZGF0aW9u Lm9yZwpodHRwczovL2xpc3RzLmxpbnV4LWZvdW5kYXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8v bGludXgtcG0=