From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?utf-8?q?Arve=20Hj=C3=B8nnev=C3=A5g?= Subject: [PATCH 7/9] PM: suspend_block: Add suspend_blocker stats Date: Wed, 29 Apr 2009 20:10:06 -0700 Message-ID: <1241061008-31134-8-git-send-email-arve@android.com> References: <1241061008-31134-1-git-send-email-arve@android.com> <1241061008-31134-2-git-send-email-arve@android.com> <1241061008-31134-3-git-send-email-arve@android.com> <1241061008-31134-4-git-send-email-arve@android.com> <1241061008-31134-5-git-send-email-arve@android.com> <1241061008-31134-6-git-send-email-arve@android.com> <1241061008-31134-7-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: <1241061008-31134-7-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 UmVwb3J0IHN1c3BlbmQgYmxvY2sgc3RhdHMgaW4gL3N5cy9rZXJuZWwvZGVidWcvc3VzcGVuZF9i bG9ja2Vycy4KClNpZ25lZC1vZmYtYnk6IEFydmUgSGrDuG5uZXbDpWcgPGFydmVAYW5kcm9pZC5j b20+Ci0tLQogaW5jbHVkZS9saW51eC9zdXNwZW5kX2Jsb2NrZXIuaCB8ICAgMjEgKysrKystCiBr ZXJuZWwvcG93ZXIvS2NvbmZpZyAgICAgICAgICAgIHwgICAgNyArKwoga2VybmVsL3Bvd2VyL3N1 c3BlbmRfYmxvY2tlci5jICB8ICAxNzYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKystCiAzIGZpbGVzIGNoYW5nZWQsIDIwMSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc3VzcGVuZF9ibG9ja2VyLmggYi9pbmNsdWRl L2xpbnV4L3N1c3BlbmRfYmxvY2tlci5oCmluZGV4IDFmYWE0MzMuLjNiYjhhNmEgMTAwNzU1Ci0t LSBhL2luY2x1ZGUvbGludXgvc3VzcGVuZF9ibG9ja2VyLmgKKysrIGIvaW5jbHVkZS9saW51eC9z dXNwZW5kX2Jsb2NrZXIuaApAQCAtMTcsMTIgKzE3LDIxIEBACiAjZGVmaW5lIF9MSU5VWF9TVVNQ RU5EX0JMT0NLRVJfSAogCiAjaW5jbHVkZSA8bGludXgvbGlzdC5oPgorI2luY2x1ZGUgPGxpbnV4 L2t0aW1lLmg+CiAKIC8qKgogICogc3RydWN0IHN1c3BlbmRfYmxvY2tlciAtIHRoZSBiYXNpYyBz dXNwZW5kX2Jsb2NrZXIgc3RydWN0dXJlCiAgKiBAbGluazoJTGlzdCBlbnRyeSBmb3IgYWN0aXZl IG9yIGluYWN0aXZlIGxpc3QuCi0gKiBAZmxhZ3M6CVRyYWNrcyBpbml0aWFsaXplZCBhbmQgYWN0 aXZlIHN0YXRlLgorICogQGZsYWdzOglUcmFja3MgaW5pdGlhbGl6ZWQsIGFjdGl2ZSBhbmQgc3Rh dHMgc3RhdGUuCiAgKiBAbmFtZToJTmFtZSB1c2VkIGZvciBkZWJ1Z2dpbmcuCisgKiBAY291bnQ6 CU51bWJlciBvZiB0aW1lcyB0aGlzIGJsb2NrZXIgaGFzIGJlZW4gZGVhY2l2YXRlZAorICogQHdh a2V1cF9jb3VudDogTnVtYmVyIG9mIHRpbWVzIHRoaXMgYmxvY2tlciB3YXMgdGhlIGZpcnN0IHRv IGJsb2NrIHN1c3BlbmQKKyAqCQlhZnRlciByZXN1bWUuCisgKiBAdG90YWxfdGltZToJVG90YWwg dGltZSB0aGlzIHN1c3BlbmQgYmxvY2tlciBoYXMgcHJldmVudGVkIHN1c3BlbmQuCisgKiBAcHJl dmVudF9zdXNwZW5kX3RpbWU6IFRpbWUgdGhpcyBzdXNwZW5kIGJsb2NrZXIgaGFzIHByZXZlbnRl ZCBzdXNwZW5kIHdoaWxlCisgKgkJdXNlci1zcGFjZSByZXF1ZXN0ZWQgc3VzcGVuZC4KKyAqIEBt YXhfdGltZToJTWF4IHRpbWUgdGhpcyBzdXNwZW5kIGJsb2NrZXIgaGFzIGJlZW4gY29udGludW91 c2x5IGFjdGl2ZQorICogQGxhc3RfdGltZToJTW9ub3RvbmljIGNsb2NrIHdoZW4gdGhlIGFjdGl2 ZSBzdGF0ZSBsYXN0IGNoYW5nZWQuCiAgKgogICogV2hlbiBhIHN1c3BlbmRfYmxvY2tlciBpcyBh Y3RpdmUgaXQgcHJldmVudHMgdGhlIHN5c3RlbSBmcm9tIGVudGVyaW5nCiAgKiBzdXNwZW5kLgpA QCAtMzUsNiArNDQsMTYgQEAgc3RydWN0IHN1c3BlbmRfYmxvY2tlciB7CiAJc3RydWN0IGxpc3Rf aGVhZCAgICBsaW5rOwogCWludCAgICAgICAgICAgICAgICAgZmxhZ3M7CiAJY29uc3QgY2hhciAg ICAgICAgICpuYW1lOworI2lmZGVmIENPTkZJR19TVVNQRU5EX0JMT0NLRVJfU1RBVFMKKwlzdHJ1 Y3QgeworCQlpbnQgICAgICAgICAgICAgY291bnQ7CisJCWludCAgICAgICAgICAgICB3YWtldXBf Y291bnQ7CisJCWt0aW1lX3QgICAgICAgICB0b3RhbF90aW1lOworCQlrdGltZV90ICAgICAgICAg cHJldmVudF9zdXNwZW5kX3RpbWU7CisJCWt0aW1lX3QgICAgICAgICBtYXhfdGltZTsKKwkJa3Rp bWVfdCAgICAgICAgIGxhc3RfdGltZTsKKwl9IHN0YXQ7CisjZW5kaWYKICNlbmRpZgogfTsKIApk aWZmIC0tZ2l0IGEva2VybmVsL3Bvd2VyL0tjb25maWcgYi9rZXJuZWwvcG93ZXIvS2NvbmZpZwpp bmRleCA4NGI0MjNmLi40NGJmYWViIDEwMDY0NAotLS0gYS9rZXJuZWwvcG93ZXIvS2NvbmZpZwor KysgYi9rZXJuZWwvcG93ZXIvS2NvbmZpZwpAQCAtMTI2LDYgKzEyNiwxMyBAQCBjb25maWcgU1VT UEVORF9CTE9DS0VSUwogCSAgdGhyb3VnaCAvc3lzL3Bvd2VyL3JlcXVlc3Rfc3RhdGUsIHRoZSBy ZXF1ZXN0ZWQgc2xlZXAgc3RhdGUgd2lsbCBiZQogCSAgZW50ZXJlZCB3aGVuIG5vIHN1c3BlbmQg YmxvY2tlcnMgYXJlIGFjdGl2ZS4KIAorY29uZmlnIFNVU1BFTkRfQkxPQ0tFUl9TVEFUUworCWJv b2wgIlN1c3BlbmQgYmxvY2sgc3RhdHMiCisJZGVwZW5kcyBvbiBTVVNQRU5EX0JMT0NLRVJTCisJ ZGVmYXVsdCB5CisJLS0taGVscC0tLQorCSAgUmVwb3J0IHN1c3BlbmQgYmxvY2sgc3RhdHMgaW4g L3N5cy9rZXJuZWwvZGVidWcvc3VzcGVuZF9ibG9ja2VycworCiBjb25maWcgVVNFUl9TVVNQRU5E X0JMT0NLRVJTCiAJYm9vbCAiVXNlcnNwYWNlIHN1c3BlbmQgYmxvY2tlcnMiCiAJZGVwZW5kcyBv biBTVVNQRU5EX0JMT0NLRVJTCmRpZmYgLS1naXQgYS9rZXJuZWwvcG93ZXIvc3VzcGVuZF9ibG9j a2VyLmMgYi9rZXJuZWwvcG93ZXIvc3VzcGVuZF9ibG9ja2VyLmMKaW5kZXggZGE3MjQ4YS4uYWI0 ZDhkNSAxMDA2NDQKLS0tIGEva2VybmVsL3Bvd2VyL3N1c3BlbmRfYmxvY2tlci5jCisrKyBiL2tl cm5lbC9wb3dlci9zdXNwZW5kX2Jsb2NrZXIuYwpAQCAtMzMsNiArMzMsNyBAQCBtb2R1bGVfcGFy YW1fbmFtZWQoZGVidWdfbWFzaywgZGVidWdfbWFzaywgaW50LCBTX0lSVUdPIHwgU19JV1VTUiB8 IFNfSVdHUlApOwogCiAjZGVmaW5lIFNCX0lOSVRJQUxJWkVEICAgICAgICAgICAgKDFVIDw8IDgp CiAjZGVmaW5lIFNCX0FDVElWRSAgICAgICAgICAgICAgICAgKDFVIDw8IDkpCisjZGVmaW5lIFNC X1BSRVZFTlRJTkdfU1VTUEVORCAgICAgKDFVIDw8IDEwKQogCiBzdGF0aWMgREVGSU5FX1NQSU5M T0NLKGxpc3RfbG9jayk7CiBzdGF0aWMgREVGSU5FX1NQSU5MT0NLKHN0YXRlX2xvY2spOwpAQCAt NDMsNiArNDQsNyBAQCBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqc3VzcGVuZF93b3JrX3F1ZXVl Owogc3RydWN0IHN1c3BlbmRfYmxvY2tlciBtYWluX3N1c3BlbmRfYmxvY2tlcjsKIHN0YXRpYyBz dXNwZW5kX3N0YXRlX3QgcmVxdWVzdGVkX3N1c3BlbmRfc3RhdGUgPSBQTV9TVVNQRU5EX01FTTsK IHN0YXRpYyBib29sIGVuYWJsZV9zdXNwZW5kX2Jsb2NrZXJzOworc3RhdGljIHN0cnVjdCBzdXNw ZW5kX2Jsb2NrZXIgdW5rbm93bl93YWtldXA7CiBzdGF0aWMgc3RydWN0IGRlbnRyeSAqc3VzcGVu ZF9ibG9ja2VyX3N0YXRzX2RlbnRyeTsKIAogI2RlZmluZSBwcl9pbmZvX3RpbWUoZm10LCBhcmdz Li4uKSBcCkBAIC01Nyw2ICs1OSwxNDggQEAgc3RhdGljIHN0cnVjdCBkZW50cnkgKnN1c3BlbmRf YmxvY2tlcl9zdGF0c19kZW50cnk7CiAJCQl0bS50bV9ob3VyLCB0bS50bV9taW4sIHRtLnRtX3Nl YywgdHMudHZfbnNlYyk7IFwKIAl9IHdoaWxlICgwKTsKIAorI2lmZGVmIENPTkZJR19TVVNQRU5E X0JMT0NLRVJfU1RBVFMKK3N0YXRpYyBzdHJ1Y3Qgc3VzcGVuZF9ibG9ja2VyIGRlbGV0ZWRfc3Vz cGVuZF9ibG9ja2VyczsKK3N0YXRpYyBrdGltZV90IGxhc3Rfc2xlZXBfdGltZV91cGRhdGU7Citz dGF0aWMgYm9vbCB3YWl0X2Zvcl93YWtldXA7CisKK3N0YXRpYyBpbnQgcHJpbnRfYmxvY2tlcl9z dGF0KHN0cnVjdCBzZXFfZmlsZSAqbSwKKwkJCSAgICAgIHN0cnVjdCBzdXNwZW5kX2Jsb2NrZXIg KmJsb2NrZXIpCit7CisJaW50IGxvY2tfY291bnQgPSBibG9ja2VyLT5zdGF0LmNvdW50OworCWt0 aW1lX3QgYWN0aXZlX3RpbWUgPSBrdGltZV9zZXQoMCwgMCk7CisJa3RpbWVfdCB0b3RhbF90aW1l ID0gYmxvY2tlci0+c3RhdC50b3RhbF90aW1lOworCWt0aW1lX3QgbWF4X3RpbWUgPSBibG9ja2Vy LT5zdGF0Lm1heF90aW1lOworCWt0aW1lX3QgcHJldmVudF9zdXNwZW5kX3RpbWUgPSBibG9ja2Vy LT5zdGF0LnByZXZlbnRfc3VzcGVuZF90aW1lOworCWlmIChibG9ja2VyLT5mbGFncyAmIFNCX0FD VElWRSkgeworCQlrdGltZV90IG5vdywgYWRkX3RpbWU7CisJCW5vdyA9IGt0aW1lX2dldCgpOwor CQlhZGRfdGltZSA9IGt0aW1lX3N1Yihub3csIGJsb2NrZXItPnN0YXQubGFzdF90aW1lKTsKKwkJ bG9ja19jb3VudCsrOworCQlhY3RpdmVfdGltZSA9IGFkZF90aW1lOworCQl0b3RhbF90aW1lID0g a3RpbWVfYWRkKHRvdGFsX3RpbWUsIGFkZF90aW1lKTsKKwkJaWYgKGJsb2NrZXItPmZsYWdzICYg U0JfUFJFVkVOVElOR19TVVNQRU5EKQorCQkJcHJldmVudF9zdXNwZW5kX3RpbWUgPSBrdGltZV9h ZGQocHJldmVudF9zdXNwZW5kX3RpbWUsCisJCQkJCWt0aW1lX3N1Yihub3csIGxhc3Rfc2xlZXBf dGltZV91cGRhdGUpKTsKKwkJaWYgKGFkZF90aW1lLnR2NjQgPiBtYXhfdGltZS50djY0KQorCQkJ bWF4X3RpbWUgPSBhZGRfdGltZTsKKwl9CisKKwlyZXR1cm4gc2VxX3ByaW50ZihtLCAiXCIlc1wi XHQlZFx0JWRcdCVsbGRcdCVsbGRcdCVsbGRcdCVsbGRcdCVsbGRcbiIsCisJCSAgICAgICBibG9j a2VyLT5uYW1lLCBsb2NrX2NvdW50LCBibG9ja2VyLT5zdGF0Lndha2V1cF9jb3VudCwKKwkJICAg ICAgIGt0aW1lX3RvX25zKGFjdGl2ZV90aW1lKSwga3RpbWVfdG9fbnModG90YWxfdGltZSksCisJ CSAgICAgICBrdGltZV90b19ucyhwcmV2ZW50X3N1c3BlbmRfdGltZSksIGt0aW1lX3RvX25zKG1h eF90aW1lKSwKKwkJICAgICAgIGt0aW1lX3RvX25zKGJsb2NrZXItPnN0YXQubGFzdF90aW1lKSk7 Cit9CisKKworc3RhdGljIGludCBzdXNwZW5kX2Jsb2NrZXJfc3RhdHNfc2hvdyhzdHJ1Y3Qgc2Vx X2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKK3sKKwl1bnNpZ25lZCBsb25nIGlycWZsYWdzOworCXN0 cnVjdCBzdXNwZW5kX2Jsb2NrZXIgKmJsb2NrZXI7CisKKwlzZXFfcHV0cyhtLCAibmFtZVx0Y291 bnRcdHdha2VfY291bnRcdGFjdGl2ZV9zaW5jZSIKKwkJICJcdHRvdGFsX3RpbWVcdHNsZWVwX3Rp bWVcdG1heF90aW1lXHRsYXN0X2NoYW5nZVxuIik7CisJc3Bpbl9sb2NrX2lycXNhdmUoJmxpc3Rf bG9jaywgaXJxZmxhZ3MpOworCWxpc3RfZm9yX2VhY2hfZW50cnkoYmxvY2tlciwgJmluYWN0aXZl X2Jsb2NrZXJzLCBsaW5rKQorCQlwcmludF9ibG9ja2VyX3N0YXQobSwgYmxvY2tlcik7CisJbGlz dF9mb3JfZWFjaF9lbnRyeShibG9ja2VyLCAmYWN0aXZlX2Jsb2NrZXJzLCBsaW5rKQorCQlwcmlu dF9ibG9ja2VyX3N0YXQobSwgYmxvY2tlcik7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmbGlz dF9sb2NrLCBpcnFmbGFncyk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHN1c3BlbmRf YmxvY2tlcl9zdGF0X2luaXRfbG9ja2VkKHN0cnVjdCBzdXNwZW5kX2Jsb2NrZXIgKmJsb2NrZXIp Cit7CisJYmxvY2tlci0+c3RhdC5jb3VudCA9IDA7CisJYmxvY2tlci0+c3RhdC53YWtldXBfY291 bnQgPSAwOworCWJsb2NrZXItPnN0YXQudG90YWxfdGltZSA9IGt0aW1lX3NldCgwLCAwKTsKKwli bG9ja2VyLT5zdGF0LnByZXZlbnRfc3VzcGVuZF90aW1lID0ga3RpbWVfc2V0KDAsIDApOworCWJs b2NrZXItPnN0YXQubWF4X3RpbWUgPSBrdGltZV9zZXQoMCwgMCk7CisJYmxvY2tlci0+c3RhdC5s YXN0X3RpbWUgPSBrdGltZV9zZXQoMCwgMCk7Cit9CisKK3N0YXRpYyB2b2lkIHN1c3BlbmRfYmxv Y2tlcl9zdGF0X2Rlc3Ryb3lfbG9ja2VkKHN0cnVjdCBzdXNwZW5kX2Jsb2NrZXIgKmJsKQorewor CWlmICghYmwtPnN0YXQuY291bnQpCisJCXJldHVybjsKKwlkZWxldGVkX3N1c3BlbmRfYmxvY2tl cnMuc3RhdC5jb3VudCArPSBibC0+c3RhdC5jb3VudDsKKwlkZWxldGVkX3N1c3BlbmRfYmxvY2tl cnMuc3RhdC50b3RhbF90aW1lID0ga3RpbWVfYWRkKAorCQlkZWxldGVkX3N1c3BlbmRfYmxvY2tl cnMuc3RhdC50b3RhbF90aW1lLCBibC0+c3RhdC50b3RhbF90aW1lKTsKKwlkZWxldGVkX3N1c3Bl bmRfYmxvY2tlcnMuc3RhdC5wcmV2ZW50X3N1c3BlbmRfdGltZSA9IGt0aW1lX2FkZCgKKwkJZGVs ZXRlZF9zdXNwZW5kX2Jsb2NrZXJzLnN0YXQucHJldmVudF9zdXNwZW5kX3RpbWUsCisJCWJsLT5z dGF0LnByZXZlbnRfc3VzcGVuZF90aW1lKTsKKwlkZWxldGVkX3N1c3BlbmRfYmxvY2tlcnMuc3Rh dC5tYXhfdGltZSA9IGt0aW1lX2FkZCgKKwkJZGVsZXRlZF9zdXNwZW5kX2Jsb2NrZXJzLnN0YXQu bWF4X3RpbWUsIGJsLT5zdGF0Lm1heF90aW1lKTsKK30KKworc3RhdGljIHZvaWQgc3VzcGVuZF91 bmJsb2NrX3N0YXRfbG9ja2VkKHN0cnVjdCBzdXNwZW5kX2Jsb2NrZXIgKmJsb2NrZXIpCit7CisJ a3RpbWVfdCBkdXJhdGlvbjsKKwlrdGltZV90IG5vdzsKKwlpZiAoIShibG9ja2VyLT5mbGFncyAm IFNCX0FDVElWRSkpCisJCXJldHVybjsKKwlub3cgPSBrdGltZV9nZXQoKTsKKwlibG9ja2VyLT5z dGF0LmNvdW50Kys7CisJZHVyYXRpb24gPSBrdGltZV9zdWIobm93LCBibG9ja2VyLT5zdGF0Lmxh c3RfdGltZSk7CisJYmxvY2tlci0+c3RhdC50b3RhbF90aW1lID0KKwkJa3RpbWVfYWRkKGJsb2Nr ZXItPnN0YXQudG90YWxfdGltZSwgZHVyYXRpb24pOworCWlmIChrdGltZV90b19ucyhkdXJhdGlv bikgPiBrdGltZV90b19ucyhibG9ja2VyLT5zdGF0Lm1heF90aW1lKSkKKwkJYmxvY2tlci0+c3Rh dC5tYXhfdGltZSA9IGR1cmF0aW9uOworCWJsb2NrZXItPnN0YXQubGFzdF90aW1lID0ga3RpbWVf Z2V0KCk7CisJaWYgKGJsb2NrZXItPmZsYWdzICYgU0JfUFJFVkVOVElOR19TVVNQRU5EKSB7CisJ CWR1cmF0aW9uID0ga3RpbWVfc3ViKG5vdywgbGFzdF9zbGVlcF90aW1lX3VwZGF0ZSk7CisJCWJs b2NrZXItPnN0YXQucHJldmVudF9zdXNwZW5kX3RpbWUgPSBrdGltZV9hZGQoCisJCQlibG9ja2Vy LT5zdGF0LnByZXZlbnRfc3VzcGVuZF90aW1lLCBkdXJhdGlvbik7CisJCWJsb2NrZXItPmZsYWdz ICY9IH5TQl9QUkVWRU5USU5HX1NVU1BFTkQ7CisJfQorfQorCitzdGF0aWMgdm9pZCBzdXNwZW5k X2Jsb2NrX3N0YXRfbG9ja2VkKHN0cnVjdCBzdXNwZW5kX2Jsb2NrZXIgKmJsb2NrZXIpCit7CisJ aWYgKHdhaXRfZm9yX3dha2V1cCkgeworCQlpZiAoZGVidWdfbWFzayAmIERFQlVHX1dBS0VVUCkK KwkJCXByX2luZm8oIndha2V1cCBzdXNwZW5kIGJsb2NrZXI6ICVzXG4iLCBibG9ja2VyLT5uYW1l KTsKKwkJd2FpdF9mb3Jfd2FrZXVwID0gZmFsc2U7CisJCWJsb2NrZXItPnN0YXQud2FrZXVwX2Nv dW50Kys7CisJfQorCWlmICghKGJsb2NrZXItPmZsYWdzICYgU0JfQUNUSVZFKSkKKwkJYmxvY2tl ci0+c3RhdC5sYXN0X3RpbWUgPSBrdGltZV9nZXQoKTsKK30KKworc3RhdGljIHZvaWQgdXBkYXRl X3NsZWVwX3dhaXRfc3RhdHNfbG9ja2VkKGJvb2wgZG9uZSkKK3sKKwlzdHJ1Y3Qgc3VzcGVuZF9i bG9ja2VyICpibG9ja2VyOworCWt0aW1lX3Qgbm93LCBlbGFwc2VkLCBhZGQ7CisKKwlub3cgPSBr dGltZV9nZXQoKTsKKwllbGFwc2VkID0ga3RpbWVfc3ViKG5vdywgbGFzdF9zbGVlcF90aW1lX3Vw ZGF0ZSk7CisJbGlzdF9mb3JfZWFjaF9lbnRyeShibG9ja2VyLCAmYWN0aXZlX2Jsb2NrZXJzLCBs aW5rKSB7CisJCWlmIChibG9ja2VyLT5mbGFncyAmIFNCX1BSRVZFTlRJTkdfU1VTUEVORCkgewor CQkJYWRkID0gZWxhcHNlZDsKKwkJCWJsb2NrZXItPnN0YXQucHJldmVudF9zdXNwZW5kX3RpbWUg PSBrdGltZV9hZGQoCisJCQkJYmxvY2tlci0+c3RhdC5wcmV2ZW50X3N1c3BlbmRfdGltZSwgYWRk KTsKKwkJfQorCQlpZiAoZG9uZSkKKwkJCWJsb2NrZXItPmZsYWdzICY9IH5TQl9QUkVWRU5USU5H X1NVU1BFTkQ7CisJCWVsc2UKKwkJCWJsb2NrZXItPmZsYWdzIHw9IFNCX1BSRVZFTlRJTkdfU1VT UEVORDsKKwl9CisJbGFzdF9zbGVlcF90aW1lX3VwZGF0ZSA9IG5vdzsKK30KKworI2Vsc2UKKwor c3RhdGljIGlubGluZSB2b2lkIHN1c3BlbmRfYmxvY2tlcl9zdGF0X2luaXRfbG9ja2VkKAorCQkJ CQlzdHJ1Y3Qgc3VzcGVuZF9ibG9ja2VyICpibG9ja2VyKSB7fQorc3RhdGljIGlubGluZSB2b2lk IHN1c3BlbmRfYmxvY2tlcl9zdGF0X2Rlc3Ryb3lfbG9ja2VkKAorCQkJCQlzdHJ1Y3Qgc3VzcGVu ZF9ibG9ja2VyICpibG9ja2VyKSB7fQorc3RhdGljIGlubGluZSB2b2lkIHN1c3BlbmRfYmxvY2tf c3RhdF9sb2NrZWQoCisJCQkJCXN0cnVjdCBzdXNwZW5kX2Jsb2NrZXIgKmJsb2NrZXIpIHt9Citz dGF0aWMgaW5saW5lIHZvaWQgc3VzcGVuZF91bmJsb2NrX3N0YXRfbG9ja2VkKAorCQkJCQlzdHJ1 Y3Qgc3VzcGVuZF9ibG9ja2VyICpibG9ja2VyKSB7fQorc3RhdGljIGlubGluZSB2b2lkIHVwZGF0 ZV9zbGVlcF93YWl0X3N0YXRzX2xvY2tlZChib29sIGRvbmUpIHt9CisKIHN0YXRpYyBpbnQgc3Vz cGVuZF9ibG9ja2VyX3N0YXRzX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQp CiB7CiAJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKQEAgLTcyLDYgKzIxNiw4IEBAIHN0YXRpYyBp bnQgc3VzcGVuZF9ibG9ja2VyX3N0YXRzX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1 bnVzZWQpCiAJcmV0dXJuIDA7CiB9CiAKKyNlbmRpZgorCiBzdGF0aWMgdm9pZCBwcmludF9hY3Rp dmVfYmxvY2tlcnNfbG9ja2VkKHZvaWQpCiB7CiAJc3RydWN0IHN1c3BlbmRfYmxvY2tlciAqYmxv Y2tlcjsKQEAgLTEwMyw3ICsyNDksNiBAQCBzdGF0aWMgdm9pZCBzdXNwZW5kX3dvcmtlcihzdHJ1 Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAKIAllbmFibGVfc3VzcGVuZF9ibG9ja2VycyA9IHRydWU7 CiAKLXJldHJ5OgogCWlmIChzdXNwZW5kX2lzX2Jsb2NrZWQoKSkgewogCQlpZiAoZGVidWdfbWFz ayAmIERFQlVHX1NVU1BFTkQpCiAJCQlwcl9pbmZvKCJzdXNwZW5kOiBhYm9ydCBzdXNwZW5kXG4i KTsKQEAgLTExOSw3ICsyNjQsOCBAQCByZXRyeToKIAlpZiAoY3VycmVudF9ldmVudF9udW0gPT0g ZW50cnlfZXZlbnRfbnVtKSB7CiAJCWlmIChkZWJ1Z19tYXNrICYgREVCVUdfU1VTUEVORCkKIAkJ CXByX2luZm8oInN1c3BlbmQ6IHBtX3N1c3BlbmQgcmV0dXJuZWQgd2l0aCBubyBldmVudFxuIik7 Ci0JCWdvdG8gcmV0cnk7CisJCXN1c3BlbmRfYmxvY2soJnVua25vd25fd2FrZXVwKTsKKwkJc3Vz cGVuZF91bmJsb2NrKCZ1bmtub3duX3dha2V1cCk7CiAJfQogYWJvcnQ6CiAJZW5hYmxlX3N1c3Bl bmRfYmxvY2tlcnMgPSBmYWxzZTsKQEAgLTEyOSw2ICsyNzUsOSBAQCBzdGF0aWMgREVDTEFSRV9X T1JLKHN1c3BlbmRfd29yaywgc3VzcGVuZF93b3JrZXIpOwogc3RhdGljIGludCBzdXNwZW5kX2Js b2NrX3N1c3BlbmQoc3RydWN0IHN5c19kZXZpY2UgKmRldiwgcG1fbWVzc2FnZV90IHN0YXRlKQog ewogCWludCByZXQgPSBzdXNwZW5kX2lzX2Jsb2NrZWQoKSA/IC1FQUdBSU4gOiAwOworI2lmZGVm IENPTkZJR19TVVNQRU5EX0JMT0NLRVJfU1RBVFMKKwl3YWl0X2Zvcl93YWtldXAgPSB0cnVlOwor I2VuZGlmCiAJaWYgKGRlYnVnX21hc2sgJiBERUJVR19TVVNQRU5EKQogCQlwcl9pbmZvKCJzdXNw ZW5kX2Jsb2NrX3N1c3BlbmQgcmV0dXJuICVkXG4iLCByZXQpOwogCXJldHVybiByZXQ7CkBAIC0x NjQsNiArMzEzLDcgQEAgdm9pZCBzdXNwZW5kX2Jsb2NrZXJfaW5pdChzdHJ1Y3Qgc3VzcGVuZF9i bG9ja2VyICpibG9ja2VyLCBjb25zdCBjaGFyICpuYW1lKQogCUlOSVRfTElTVF9IRUFEKCZibG9j a2VyLT5saW5rKTsKIAogCXNwaW5fbG9ja19pcnFzYXZlKCZsaXN0X2xvY2ssIGlycWZsYWdzKTsK KwlzdXNwZW5kX2Jsb2NrZXJfc3RhdF9pbml0X2xvY2tlZChibG9ja2VyKTsKIAlsaXN0X2FkZCgm YmxvY2tlci0+bGluaywgJmluYWN0aXZlX2Jsb2NrZXJzKTsKIAlzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZsaXN0X2xvY2ssIGlycWZsYWdzKTsKIH0KQEAgLTE4MSw2ICszMzEsNyBAQCB2b2lkIHN1 c3BlbmRfYmxvY2tlcl9kZXN0cm95KHN0cnVjdCBzdXNwZW5kX2Jsb2NrZXIgKmJsb2NrZXIpCiAJ aWYgKGRlYnVnX21hc2sgJiBERUJVR19TVVNQRU5EX0JMT0NLRVIpCiAJCXByX2luZm8oInN1c3Bl bmRfYmxvY2tlcl9kZXN0cm95IG5hbWU9JXNcbiIsIGJsb2NrZXItPm5hbWUpOwogCXNwaW5fbG9j a19pcnFzYXZlKCZsaXN0X2xvY2ssIGlycWZsYWdzKTsKKwlzdXNwZW5kX2Jsb2NrZXJfc3RhdF9k ZXN0cm95X2xvY2tlZChibG9ja2VyKTsKIAlibG9ja2VyLT5mbGFncyAmPSB+U0JfSU5JVElBTEla RUQ7CiAJbGlzdF9kZWwoJmJsb2NrZXItPmxpbmspOwogCWlmICgoYmxvY2tlci0+ZmxhZ3MgJiBT Ql9BQ1RJVkUpICYmIGxpc3RfZW1wdHkoJmFjdGl2ZV9ibG9ja2VycykpCkBAIC0yMDEsNiArMzUy LDcgQEAgdm9pZCBzdXNwZW5kX2Jsb2NrKHN0cnVjdCBzdXNwZW5kX2Jsb2NrZXIgKmJsb2NrZXIp CiAJCXJldHVybjsKIAogCXNwaW5fbG9ja19pcnFzYXZlKCZsaXN0X2xvY2ssIGlycWZsYWdzKTsK KwlzdXNwZW5kX2Jsb2NrX3N0YXRfbG9ja2VkKGJsb2NrZXIpOwogCWJsb2NrZXItPmZsYWdzIHw9 IFNCX0FDVElWRTsKIAlsaXN0X2RlbCgmYmxvY2tlci0+bGluayk7CiAJaWYgKGRlYnVnX21hc2sg JiBERUJVR19TVVNQRU5EX0JMT0NLRVIpCkBAIC0yMDgsNiArMzYwLDEwIEBAIHZvaWQgc3VzcGVu ZF9ibG9jayhzdHJ1Y3Qgc3VzcGVuZF9ibG9ja2VyICpibG9ja2VyKQogCWxpc3RfYWRkKCZibG9j a2VyLT5saW5rLCAmYWN0aXZlX2Jsb2NrZXJzKTsKIAogCWN1cnJlbnRfZXZlbnRfbnVtKys7CisJ aWYgKGJsb2NrZXIgPT0gJm1haW5fc3VzcGVuZF9ibG9ja2VyKQorCQl1cGRhdGVfc2xlZXBfd2Fp dF9zdGF0c19sb2NrZWQodHJ1ZSk7CisJZWxzZSBpZiAoIXN1c3BlbmRfYmxvY2tlcl9pc19hY3Rp dmUoJm1haW5fc3VzcGVuZF9ibG9ja2VyKSkKKwkJdXBkYXRlX3NsZWVwX3dhaXRfc3RhdHNfbG9j a2VkKGZhbHNlKTsKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZsaXN0X2xvY2ssIGlycWZsYWdz KTsKIH0KIEVYUE9SVF9TWU1CT0woc3VzcGVuZF9ibG9jayk7CkBAIC0yMjcsNiArMzgzLDggQEAg dm9pZCBzdXNwZW5kX3VuYmxvY2soc3RydWN0IHN1c3BlbmRfYmxvY2tlciAqYmxvY2tlcikKIAog CXNwaW5fbG9ja19pcnFzYXZlKCZsaXN0X2xvY2ssIGlycWZsYWdzKTsKIAorCXN1c3BlbmRfdW5i bG9ja19zdGF0X2xvY2tlZChibG9ja2VyKTsKKwogCWlmIChkZWJ1Z19tYXNrICYgREVCVUdfU1VT UEVORF9CTE9DS0VSKQogCQlwcl9pbmZvKCJzdXNwZW5kX3VuYmxvY2s6ICVzXG4iLCBibG9ja2Vy LT5uYW1lKTsKIAlsaXN0X2RlbCgmYmxvY2tlci0+bGluayk7CkBAIC0yMzgsNiArMzk2LDcgQEAg dm9pZCBzdXNwZW5kX3VuYmxvY2soc3RydWN0IHN1c3BlbmRfYmxvY2tlciAqYmxvY2tlcikKIAlp ZiAoYmxvY2tlciA9PSAmbWFpbl9zdXNwZW5kX2Jsb2NrZXIpIHsKIAkJaWYgKGRlYnVnX21hc2sg JiBERUJVR19TVVNQRU5EKQogCQkJcHJpbnRfYWN0aXZlX2Jsb2NrZXJzX2xvY2tlZCgpOworCQl1 cGRhdGVfc2xlZXBfd2FpdF9zdGF0c19sb2NrZWQoZmFsc2UpOwogCX0KIAlzcGluX3VubG9ja19p cnFyZXN0b3JlKCZsaXN0X2xvY2ssIGlycWZsYWdzKTsKIH0KQEAgLTI5MSw4ICs0NTAsMTMgQEAg c3RhdGljIGludCBfX2luaXQgc3VzcGVuZF9ibG9ja19pbml0KHZvaWQpCiB7CiAJaW50IHJldDsK IAorI2lmZGVmIENPTkZJR19TVVNQRU5EX0JMT0NLRVJfU1RBVFMKKwlzdXNwZW5kX2Jsb2NrZXJf aW5pdCgmZGVsZXRlZF9zdXNwZW5kX2Jsb2NrZXJzLAorCQkJCSJkZWxldGVkX3N1c3BlbmRfYmxv Y2tlcnMiKTsKKyNlbmRpZgogCXN1c3BlbmRfYmxvY2tlcl9pbml0KCZtYWluX3N1c3BlbmRfYmxv Y2tlciwgIm1haW4iKTsKIAlzdXNwZW5kX2Jsb2NrKCZtYWluX3N1c3BlbmRfYmxvY2tlcik7CisJ c3VzcGVuZF9ibG9ja2VyX2luaXQoJnVua25vd25fd2FrZXVwLCAidW5rbm93bl93YWtldXBzIik7 CiAKIAlyZXQgPSBzeXNkZXZfY2xhc3NfcmVnaXN0ZXIoJnN1c3BlbmRfYmxvY2tfc3lzY2xhc3Mp OwogCWlmIChyZXQpIHsKQEAgLTMxOCw3ICs0ODIsMTEgQEAgZXJyX3N1c3BlbmRfd29ya19xdWV1 ZToKIGVycl9zeXNkZXZfcmVnaXN0ZXI6CiAJc3lzZGV2X2NsYXNzX3VucmVnaXN0ZXIoJnN1c3Bl bmRfYmxvY2tfc3lzY2xhc3MpOwogZXJyX3N5c2Rldl9jbGFzc19yZWdpc3RlcjoKKwlzdXNwZW5k X2Jsb2NrZXJfZGVzdHJveSgmdW5rbm93bl93YWtldXApOwogCXN1c3BlbmRfYmxvY2tlcl9kZXN0 cm95KCZtYWluX3N1c3BlbmRfYmxvY2tlcik7CisjaWZkZWYgQ09ORklHX1NVU1BFTkRfQkxPQ0tF Ul9TVEFUUworCXN1c3BlbmRfYmxvY2tlcl9kZXN0cm95KCZkZWxldGVkX3N1c3BlbmRfYmxvY2tl cnMpOworI2VuZGlmCiAJcmV0dXJuIHJldDsKIH0KIApAQCAtMzM3LDcgKzUwNSwxMSBAQCBzdGF0 aWMgdm9pZCAgX19leGl0IHN1c3BlbmRfYmxvY2tfZXhpdCh2b2lkKQogCWRlc3Ryb3lfd29ya3F1 ZXVlKHN1c3BlbmRfd29ya19xdWV1ZSk7CiAJc3lzZGV2X3VucmVnaXN0ZXIoJnN1c3BlbmRfYmxv Y2tfc3lzZGV2KTsKIAlzeXNkZXZfY2xhc3NfdW5yZWdpc3Rlcigmc3VzcGVuZF9ibG9ja19zeXNj bGFzcyk7CisJc3VzcGVuZF9ibG9ja2VyX2Rlc3Ryb3koJnVua25vd25fd2FrZXVwKTsKIAlzdXNw ZW5kX2Jsb2NrZXJfZGVzdHJveSgmbWFpbl9zdXNwZW5kX2Jsb2NrZXIpOworI2lmZGVmIENPTkZJ R19TVVNQRU5EX0JMT0NLRVJfU1RBVFMKKwlzdXNwZW5kX2Jsb2NrZXJfZGVzdHJveSgmZGVsZXRl ZF9zdXNwZW5kX2Jsb2NrZXJzKTsKKyNlbmRpZgogfQogCiBjb3JlX2luaXRjYWxsKHN1c3BlbmRf YmxvY2tfaW5pdCk7Ci0tIAoxLjYuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KbGludXgtcG0gbWFpbGluZyBsaXN0CmxpbnV4LXBtQGxpc3RzLmxpbnV4 LWZvdW5kYXRpb24ub3JnCmh0dHBzOi8vbGlzdHMubGludXgtZm91bmRhdGlvbi5vcmcvbWFpbG1h bi9saXN0aW5mby9saW51eC1wbQ==