From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?utf-8?q?Arve=20Hj=C3=B8nnev=C3=A5g?= Subject: [PATCH 6/8] PM: suspend_block: Add suspend_blocker stats Date: Tue, 14 Apr 2009 18:41:30 -0700 Message-ID: <1239759692-28617-7-git-send-email-arve@android.com> References: <1239759692-28617-1-git-send-email-arve@android.com> <1239759692-28617-2-git-send-email-arve@android.com> <1239759692-28617-3-git-send-email-arve@android.com> <1239759692-28617-4-git-send-email-arve@android.com> <1239759692-28617-5-git-send-email-arve@android.com> <1239759692-28617-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: <1239759692-28617-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, r-woodruff2@ti.comrjw, @sisk.pl List-Id: linux-pm@vger.kernel.org UmVwb3J0IHN1c3BlbmQgYmxvY2sgc3RhdHMgaW4gL3Byb2Mvc3VzcGVuZF9ibG9ja2Vycy4KClNp Z25lZC1vZmYtYnk6IEFydmUgSGrDuG5uZXbDpWcgPGFydmVAYW5kcm9pZC5jb20+Ci0tLQogaW5j bHVkZS9saW51eC9zdXNwZW5kX2Jsb2NrLmggfCAgIDExICsrKwoga2VybmVsL3Bvd2VyL0tjb25m aWcgICAgICAgICAgfCAgICA3ICsrCiBrZXJuZWwvcG93ZXIvc3VzcGVuZF9ibG9jay5jICB8ICAy MDEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIDMgZmlsZXMgY2hh bmdlZCwgMjE3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvaW5j bHVkZS9saW51eC9zdXNwZW5kX2Jsb2NrLmggYi9pbmNsdWRlL2xpbnV4L3N1c3BlbmRfYmxvY2su aAppbmRleCA3M2FjNWY3Li4zMTIyNWM1IDEwMDc1NQotLS0gYS9pbmNsdWRlL2xpbnV4L3N1c3Bl bmRfYmxvY2suaAorKysgYi9pbmNsdWRlL2xpbnV4L3N1c3BlbmRfYmxvY2suaApAQCAtMTcsNiAr MTcsNyBAQAogI2RlZmluZSBfTElOVVhfU1VTUEVORF9CTE9DS19ICiAKICNpbmNsdWRlIDxsaW51 eC9saXN0Lmg+CisjaW5jbHVkZSA8bGludXgva3RpbWUuaD4KIAogLyogQSBzdXNwZW5kX2Jsb2Nr ZXIgcHJldmVudHMgdGhlIHN5c3RlbSBmcm9tIGVudGVyaW5nIHN1c3BlbmQgd2hlbiBhY3RpdmUu CiAgKi8KQEAgLTI2LDYgKzI3LDE2IEBAIHN0cnVjdCBzdXNwZW5kX2Jsb2NrZXIgewogCXN0cnVj dCBsaXN0X2hlYWQgICAgbGluazsKIAlpbnQgICAgICAgICAgICAgICAgIGZsYWdzOwogCWNvbnN0 IGNoYXIgICAgICAgICAqbmFtZTsKKyNpZmRlZiBDT05GSUdfU1VTUEVORF9CTE9DS19TVEFUCisJ c3RydWN0IHsKKwkJaW50ICAgICAgICAgICAgIGNvdW50OworCQlpbnQgICAgICAgICAgICAgd2Fr ZXVwX2NvdW50OworCQlrdGltZV90ICAgICAgICAgdG90YWxfdGltZTsKKwkJa3RpbWVfdCAgICAg ICAgIHByZXZlbnRfc3VzcGVuZF90aW1lOworCQlrdGltZV90ICAgICAgICAgbWF4X3RpbWU7CisJ CWt0aW1lX3QgICAgICAgICBsYXN0X3RpbWU7CisJfSBzdGF0OworI2VuZGlmCiAjZW5kaWYKIH07 CiAKZGlmZiAtLWdpdCBhL2tlcm5lbC9wb3dlci9LY29uZmlnIGIva2VybmVsL3Bvd2VyL0tjb25m aWcKaW5kZXggMmNmNGM0ZC4uM2RlMGM1ZiAxMDA2NDQKLS0tIGEva2VybmVsL3Bvd2VyL0tjb25m aWcKKysrIGIva2VybmVsL3Bvd2VyL0tjb25maWcKQEAgLTEyNiw2ICsxMjYsMTMgQEAgY29uZmln IFNVU1BFTkRfQkxPQ0sKIAkgIC9zeXMvcG93ZXIvcmVxdWVzdF9zdGF0ZSwgdGhlIHJlcXVlc3Rl ZCBzbGVlcCBzdGF0ZSB3aWxsIGJlIGVudGVyZWQKIAkgIHdoZW4gbm8gc3VzcGVuZF9ibG9ja2Vy cyBhcmUgYWN0aXZlLgogCitjb25maWcgU1VTUEVORF9CTE9DS19TVEFUCisJYm9vbCAiU3VzcGVu ZCBibG9jayBzdGF0cyIKKwlkZXBlbmRzIG9uIFNVU1BFTkRfQkxPQ0sKKwlkZWZhdWx0IHkKKwkt LS1oZWxwLS0tCisJICBSZXBvcnQgc3VzcGVuZCBibG9jayBzdGF0cyBpbiAvcHJvYy9zdXNwZW5k X2Jsb2NrZXJzCisKIGNvbmZpZyBVU0VSX1NVU1BFTkRfQkxPQ0sKIAlib29sICJVc2Vyc3BhY2Ug c3VzcGVuZCBibG9ja2VycyIKIAlkZXBlbmRzIG9uIFNVU1BFTkRfQkxPQ0sKZGlmZiAtLWdpdCBh L2tlcm5lbC9wb3dlci9zdXNwZW5kX2Jsb2NrLmMgYi9rZXJuZWwvcG93ZXIvc3VzcGVuZF9ibG9j ay5jCmluZGV4IDY5N2Y1MmEuLjc4ZDU4ODAgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9wb3dlci9zdXNw ZW5kX2Jsb2NrLmMKKysrIGIva2VybmVsL3Bvd2VyL3N1c3BlbmRfYmxvY2suYwpAQCAtMTgsNiAr MTgsOSBAQAogI2luY2x1ZGUgPGxpbnV4L3N1c3BlbmQuaD4KICNpbmNsdWRlIDxsaW51eC9zdXNw ZW5kX2Jsb2NrLmg+CiAjaW5jbHVkZSA8bGludXgvc3lzZGV2Lmg+CisjaWZkZWYgQ09ORklHX1NV U1BFTkRfQkxPQ0tfU1RBVAorI2luY2x1ZGUgPGxpbnV4L3Byb2NfZnMuaD4KKyNlbmRpZgogI2lu Y2x1ZGUgInBvd2VyLmgiCiAKIGVudW0gewpAQCAtMzIsNiArMzUsNyBAQCBtb2R1bGVfcGFyYW1f bmFtZWQoZGVidWdfbWFzaywgZGVidWdfbWFzaywgaW50LCBTX0lSVUdPIHwgU19JV1VTUiB8IFNf SVdHUlApOwogCiAjZGVmaW5lIFNCX0lOSVRJQUxJWkVEICAgICAgICAgICAgKDFVIDw8IDgpCiAj ZGVmaW5lIFNCX0FDVElWRSAgICAgICAgICAgICAgICAgKDFVIDw8IDkpCisjZGVmaW5lIFNCX1BS RVZFTlRJTkdfU1VTUEVORCAgICAgKDFVIDw8IDEwKQogCiBzdGF0aWMgREVGSU5FX1NQSU5MT0NL KGxpc3RfbG9jayk7CiBzdGF0aWMgREVGSU5FX1NQSU5MT0NLKHN0YXRlX2xvY2spOwpAQCAtNDIs NiArNDYsMTY1IEBAIHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICpzdXNwZW5kX3dvcmtfcXVldWU7 CiBzdHJ1Y3Qgc3VzcGVuZF9ibG9ja2VyIG1haW5fc3VzcGVuZF9ibG9ja2VyOwogc3RhdGljIHN1 c3BlbmRfc3RhdGVfdCByZXF1ZXN0ZWRfc3VzcGVuZF9zdGF0ZSA9IFBNX1NVU1BFTkRfTUVNOwog c3RhdGljIGJvb2wgZW5hYmxlX3N1c3BlbmRfYmxvY2tlcnM7CitzdGF0aWMgc3RydWN0IHN1c3Bl bmRfYmxvY2tlciB1bmtub3duX3dha2V1cDsKKworI2lmZGVmIENPTkZJR19TVVNQRU5EX0JMT0NL X1NUQVQKK3N0YXRpYyBzdHJ1Y3Qgc3VzcGVuZF9ibG9ja2VyIGRlbGV0ZWRfc3VzcGVuZF9ibG9j a2VyczsKK3N0YXRpYyBrdGltZV90IGxhc3Rfc2xlZXBfdGltZV91cGRhdGU7CitzdGF0aWMgYm9v bCB3YWl0X2Zvcl93YWtldXA7CisKK3N0YXRpYyBpbnQgcHJpbnRfYmxvY2tlcl9zdGF0KGNoYXIg KmJ1Ziwgc3RydWN0IHN1c3BlbmRfYmxvY2tlciAqYmxvY2tlcikKK3sKKwlpbnQgbG9ja19jb3Vu dCA9IGJsb2NrZXItPnN0YXQuY291bnQ7CisJa3RpbWVfdCBhY3RpdmVfdGltZSA9IGt0aW1lX3Nl dCgwLCAwKTsKKwlrdGltZV90IHRvdGFsX3RpbWUgPSBibG9ja2VyLT5zdGF0LnRvdGFsX3RpbWU7 CisJa3RpbWVfdCBtYXhfdGltZSA9IGJsb2NrZXItPnN0YXQubWF4X3RpbWU7CisJa3RpbWVfdCBw cmV2ZW50X3N1c3BlbmRfdGltZSA9IGJsb2NrZXItPnN0YXQucHJldmVudF9zdXNwZW5kX3RpbWU7 CisJaWYgKGJsb2NrZXItPmZsYWdzICYgU0JfQUNUSVZFKSB7CisJCWt0aW1lX3Qgbm93LCBhZGRf dGltZTsKKwkJbm93ID0ga3RpbWVfZ2V0KCk7CisJCWFkZF90aW1lID0ga3RpbWVfc3ViKG5vdywg YmxvY2tlci0+c3RhdC5sYXN0X3RpbWUpOworCQlsb2NrX2NvdW50Kys7CisJCWFjdGl2ZV90aW1l ID0gYWRkX3RpbWU7CisJCXRvdGFsX3RpbWUgPSBrdGltZV9hZGQodG90YWxfdGltZSwgYWRkX3Rp bWUpOworCQlpZiAoYmxvY2tlci0+ZmxhZ3MgJiBTQl9QUkVWRU5USU5HX1NVU1BFTkQpCisJCQlw cmV2ZW50X3N1c3BlbmRfdGltZSA9IGt0aW1lX2FkZChwcmV2ZW50X3N1c3BlbmRfdGltZSwKKwkJ CQkJa3RpbWVfc3ViKG5vdywgbGFzdF9zbGVlcF90aW1lX3VwZGF0ZSkpOworCQlpZiAoYWRkX3Rp bWUudHY2NCA+IG1heF90aW1lLnR2NjQpCisJCQltYXhfdGltZSA9IGFkZF90aW1lOworCX0KKwor CXJldHVybiBzcHJpbnRmKGJ1ZiwgIlwiJXNcIlx0JWRcdCVkXHQlbGxkXHQlbGxkXHQlbGxkXHQl bGxkXHQlbGxkXG4iLAorCQkgICAgICAgYmxvY2tlci0+bmFtZSwgbG9ja19jb3VudCwgYmxvY2tl ci0+c3RhdC53YWtldXBfY291bnQsCisJCSAgICAgICBrdGltZV90b19ucyhhY3RpdmVfdGltZSks IGt0aW1lX3RvX25zKHRvdGFsX3RpbWUpLAorCQkgICAgICAga3RpbWVfdG9fbnMocHJldmVudF9z dXNwZW5kX3RpbWUpLCBrdGltZV90b19ucyhtYXhfdGltZSksCisJCSAgICAgICBrdGltZV90b19u cyhibG9ja2VyLT5zdGF0Lmxhc3RfdGltZSkpOworfQorCisKK3N0YXRpYyBpbnQgc3VzcGVuZF9i bG9ja2VyX3N0YXRzX3JlYWRfcHJvYyhjaGFyICpwYWdlLCBjaGFyICoqc3RhcnQsIG9mZl90IG9m ZiwKKwkJCSAgICAgICBpbnQgY291bnQsIGludCAqZW9mLCB2b2lkICpkYXRhKQoreworCXVuc2ln bmVkIGxvbmcgaXJxZmxhZ3M7CisJc3RydWN0IHN1c3BlbmRfYmxvY2tlciAqYmxvY2tlcjsKKwlp bnQgbGVuID0gMDsKKwljaGFyICpwID0gcGFnZTsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZsaXN0 X2xvY2ssIGlycWZsYWdzKTsKKworCXAgKz0gc3ByaW50ZihwLCAibmFtZVx0Y291bnRcdHdha2Vf Y291bnRcdGFjdGl2ZV9zaW5jZSIKKwkJICAgICAiXHR0b3RhbF90aW1lXHRzbGVlcF90aW1lXHRt YXhfdGltZVx0bGFzdF9jaGFuZ2VcbiIpOworCWxpc3RfZm9yX2VhY2hfZW50cnkoYmxvY2tlciwg JmluYWN0aXZlX2Jsb2NrZXJzLCBsaW5rKSB7CisJCXAgKz0gcHJpbnRfYmxvY2tlcl9zdGF0KHAs IGJsb2NrZXIpOworCX0KKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGJsb2NrZXIsICZhY3RpdmVfYmxv Y2tlcnMsIGxpbmspCisJCXAgKz0gcHJpbnRfYmxvY2tlcl9zdGF0KHAsIGJsb2NrZXIpOworCXNw aW5fdW5sb2NrX2lycXJlc3RvcmUoJmxpc3RfbG9jaywgaXJxZmxhZ3MpOworCisJKnN0YXJ0ID0g cGFnZSArIG9mZjsKKworCWxlbiA9IHAgLSBwYWdlOworCWlmIChsZW4gPiBvZmYpCisJCWxlbiAt PSBvZmY7CisJZWxzZQorCQlsZW4gPSAwOworCisJcmV0dXJuIGxlbiA8IGNvdW50ID8gbGVuICA6 IGNvdW50OworfQorCitzdGF0aWMgdm9pZCBzdXNwZW5kX2Jsb2NrZXJfc3RhdF9pbml0X2xvY2tl ZChzdHJ1Y3Qgc3VzcGVuZF9ibG9ja2VyICpibG9ja2VyKQoreworCWJsb2NrZXItPnN0YXQuY291 bnQgPSAwOworCWJsb2NrZXItPnN0YXQud2FrZXVwX2NvdW50ID0gMDsKKwlibG9ja2VyLT5zdGF0 LnRvdGFsX3RpbWUgPSBrdGltZV9zZXQoMCwgMCk7CisJYmxvY2tlci0+c3RhdC5wcmV2ZW50X3N1 c3BlbmRfdGltZSA9IGt0aW1lX3NldCgwLCAwKTsKKwlibG9ja2VyLT5zdGF0Lm1heF90aW1lID0g a3RpbWVfc2V0KDAsIDApOworCWJsb2NrZXItPnN0YXQubGFzdF90aW1lID0ga3RpbWVfc2V0KDAs IDApOworfQorCitzdGF0aWMgdm9pZCBzdXNwZW5kX2Jsb2NrZXJfc3RhdF9kZXN0cm95X2xvY2tl ZChzdHJ1Y3Qgc3VzcGVuZF9ibG9ja2VyICpibCkKK3sKKwlpZiAoIWJsLT5zdGF0LmNvdW50KQor CQlyZXR1cm47CisJZGVsZXRlZF9zdXNwZW5kX2Jsb2NrZXJzLnN0YXQuY291bnQgKz0gYmwtPnN0 YXQuY291bnQ7CisJZGVsZXRlZF9zdXNwZW5kX2Jsb2NrZXJzLnN0YXQudG90YWxfdGltZSA9IGt0 aW1lX2FkZCgKKwkJZGVsZXRlZF9zdXNwZW5kX2Jsb2NrZXJzLnN0YXQudG90YWxfdGltZSwgYmwt PnN0YXQudG90YWxfdGltZSk7CisJZGVsZXRlZF9zdXNwZW5kX2Jsb2NrZXJzLnN0YXQucHJldmVu dF9zdXNwZW5kX3RpbWUgPSBrdGltZV9hZGQoCisJCWRlbGV0ZWRfc3VzcGVuZF9ibG9ja2Vycy5z dGF0LnByZXZlbnRfc3VzcGVuZF90aW1lLAorCQlibC0+c3RhdC5wcmV2ZW50X3N1c3BlbmRfdGlt ZSk7CisJZGVsZXRlZF9zdXNwZW5kX2Jsb2NrZXJzLnN0YXQubWF4X3RpbWUgPSBrdGltZV9hZGQo CisJCWRlbGV0ZWRfc3VzcGVuZF9ibG9ja2Vycy5zdGF0Lm1heF90aW1lLCBibC0+c3RhdC5tYXhf dGltZSk7Cit9CisKK3N0YXRpYyB2b2lkIHN1c3BlbmRfdW5ibG9ja19zdGF0X2xvY2tlZChzdHJ1 Y3Qgc3VzcGVuZF9ibG9ja2VyICpibG9ja2VyKQoreworCWt0aW1lX3QgZHVyYXRpb247CisJa3Rp bWVfdCBub3c7CisJaWYgKCEoYmxvY2tlci0+ZmxhZ3MgJiBTQl9BQ1RJVkUpKQorCQlyZXR1cm47 CisJbm93ID0ga3RpbWVfZ2V0KCk7CisJYmxvY2tlci0+c3RhdC5jb3VudCsrOworCWR1cmF0aW9u ID0ga3RpbWVfc3ViKG5vdywgYmxvY2tlci0+c3RhdC5sYXN0X3RpbWUpOworCWJsb2NrZXItPnN0 YXQudG90YWxfdGltZSA9CisJCWt0aW1lX2FkZChibG9ja2VyLT5zdGF0LnRvdGFsX3RpbWUsIGR1 cmF0aW9uKTsKKwlpZiAoa3RpbWVfdG9fbnMoZHVyYXRpb24pID4ga3RpbWVfdG9fbnMoYmxvY2tl ci0+c3RhdC5tYXhfdGltZSkpCisJCWJsb2NrZXItPnN0YXQubWF4X3RpbWUgPSBkdXJhdGlvbjsK KwlibG9ja2VyLT5zdGF0Lmxhc3RfdGltZSA9IGt0aW1lX2dldCgpOworCWlmIChibG9ja2VyLT5m bGFncyAmIFNCX1BSRVZFTlRJTkdfU1VTUEVORCkgeworCQlkdXJhdGlvbiA9IGt0aW1lX3N1Yihu b3csIGxhc3Rfc2xlZXBfdGltZV91cGRhdGUpOworCQlibG9ja2VyLT5zdGF0LnByZXZlbnRfc3Vz cGVuZF90aW1lID0ga3RpbWVfYWRkKAorCQkJYmxvY2tlci0+c3RhdC5wcmV2ZW50X3N1c3BlbmRf dGltZSwgZHVyYXRpb24pOworCQlibG9ja2VyLT5mbGFncyAmPSB+U0JfUFJFVkVOVElOR19TVVNQ RU5EOworCX0KK30KKworc3RhdGljIHZvaWQgc3VzcGVuZF9ibG9ja19zdGF0X2xvY2tlZChzdHJ1 Y3Qgc3VzcGVuZF9ibG9ja2VyICpibG9ja2VyKQoreworCWlmICh3YWl0X2Zvcl93YWtldXApIHsK KwkJaWYgKGRlYnVnX21hc2sgJiBERUJVR19XQUtFVVApCisJCQlwcl9pbmZvKCJ3YWtldXAgc3Vz cGVuZCBibG9ja2VyOiAlc1xuIiwgYmxvY2tlci0+bmFtZSk7CisJCXdhaXRfZm9yX3dha2V1cCA9 IGZhbHNlOworCQlibG9ja2VyLT5zdGF0Lndha2V1cF9jb3VudCsrOworCX0KKwlpZiAoIShibG9j a2VyLT5mbGFncyAmIFNCX0FDVElWRSkpCisJCWJsb2NrZXItPnN0YXQubGFzdF90aW1lID0ga3Rp bWVfZ2V0KCk7Cit9CisKK3N0YXRpYyB2b2lkIHVwZGF0ZV9zbGVlcF93YWl0X3N0YXRzX2xvY2tl ZChib29sIGRvbmUpCit7CisJc3RydWN0IHN1c3BlbmRfYmxvY2tlciAqYmxvY2tlcjsKKwlrdGlt ZV90IG5vdywgZWxhcHNlZCwgYWRkOworCisJbm93ID0ga3RpbWVfZ2V0KCk7CisJZWxhcHNlZCA9 IGt0aW1lX3N1Yihub3csIGxhc3Rfc2xlZXBfdGltZV91cGRhdGUpOworCWxpc3RfZm9yX2VhY2hf ZW50cnkoYmxvY2tlciwgJmFjdGl2ZV9ibG9ja2VycywgbGluaykgeworCQlpZiAoYmxvY2tlci0+ ZmxhZ3MgJiBTQl9QUkVWRU5USU5HX1NVU1BFTkQpIHsKKwkJCWFkZCA9IGVsYXBzZWQ7CisJCQli bG9ja2VyLT5zdGF0LnByZXZlbnRfc3VzcGVuZF90aW1lID0ga3RpbWVfYWRkKAorCQkJCWJsb2Nr ZXItPnN0YXQucHJldmVudF9zdXNwZW5kX3RpbWUsIGFkZCk7CisJCX0KKwkJaWYgKGRvbmUpCisJ CQlibG9ja2VyLT5mbGFncyAmPSB+U0JfUFJFVkVOVElOR19TVVNQRU5EOworCQllbHNlCisJCQli bG9ja2VyLT5mbGFncyB8PSBTQl9QUkVWRU5USU5HX1NVU1BFTkQ7CisJfQorCWxhc3Rfc2xlZXBf dGltZV91cGRhdGUgPSBub3c7Cit9CisKKyNlbHNlCisKK3N0YXRpYyBpbmxpbmUgdm9pZCBzdXNw ZW5kX2Jsb2NrZXJfc3RhdF9pbml0X2xvY2tlZCgKKwkJCQkJc3RydWN0IHN1c3BlbmRfYmxvY2tl ciAqYmxvY2tlcikge30KK3N0YXRpYyBpbmxpbmUgdm9pZCBzdXNwZW5kX2Jsb2NrZXJfc3RhdF9k ZXN0cm95X2xvY2tlZCgKKwkJCQkJc3RydWN0IHN1c3BlbmRfYmxvY2tlciAqYmxvY2tlcikge30K K3N0YXRpYyBpbmxpbmUgdm9pZCBzdXNwZW5kX2Jsb2NrX3N0YXRfbG9ja2VkKAorCQkJCQlzdHJ1 Y3Qgc3VzcGVuZF9ibG9ja2VyICpibG9ja2VyKSB7fQorc3RhdGljIGlubGluZSB2b2lkIHN1c3Bl bmRfdW5ibG9ja19zdGF0X2xvY2tlZCgKKwkJCQkJc3RydWN0IHN1c3BlbmRfYmxvY2tlciAqYmxv Y2tlcikge30KK3N0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVfc2xlZXBfd2FpdF9zdGF0c19sb2Nr ZWQoYm9vbCBkb25lKSB7fQorCisjZW5kaWYKKwogCiBzdGF0aWMgdm9pZCBwcmludF9hY3RpdmVf YmxvY2tlcnNfbG9ja2VkKHZvaWQpCiB7CkBAIC02NSw3ICsyMjgsNiBAQCBzdGF0aWMgdm9pZCBz dXNwZW5kX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAKIAllbmFibGVfc3VzcGVu ZF9ibG9ja2VycyA9IDE7CiAKLXJldHJ5OgogCWlmIChzdXNwZW5kX2lzX2Jsb2NrZWQoKSkgewog CQlpZiAoZGVidWdfbWFzayAmIERFQlVHX1NVU1BFTkQpCiAJCQlwcl9pbmZvKCJzdXNwZW5kOiBh Ym9ydCBzdXNwZW5kXG4iKTsKQEAgLTg5LDcgKzI1MSw4IEBAIHJldHJ5OgogCWlmIChjdXJyZW50 X2V2ZW50X251bSA9PSBlbnRyeV9ldmVudF9udW0pIHsKIAkJaWYgKGRlYnVnX21hc2sgJiBERUJV R19TVVNQRU5EKQogCQkJcHJfaW5mbygic3VzcGVuZDogcG1fc3VzcGVuZCByZXR1cm5lZCB3aXRo IG5vIGV2ZW50XG4iKTsKLQkJZ290byByZXRyeTsKKwkJc3VzcGVuZF9ibG9jaygmdW5rbm93bl93 YWtldXApOworCQlzdXNwZW5kX3VuYmxvY2soJnVua25vd25fd2FrZXVwKTsKIAl9CiBhYm9ydDoK IAllbmFibGVfc3VzcGVuZF9ibG9ja2VycyA9IDA7CkBAIC05OSw2ICsyNjIsOSBAQCBzdGF0aWMg REVDTEFSRV9XT1JLKHN1c3BlbmRfd29yaywgc3VzcGVuZF93b3JrZXIpOwogc3RhdGljIGludCBz dXNwZW5kX2Jsb2NrX3N1c3BlbmQoc3RydWN0IHN5c19kZXZpY2UgKmRldiwgcG1fbWVzc2FnZV90 IHN0YXRlKQogewogCWludCByZXQgPSBzdXNwZW5kX2lzX2Jsb2NrZWQoKSA/IC1FQUdBSU4gOiAw OworI2lmZGVmIENPTkZJR19TVVNQRU5EX0JMT0NLX1NUQVQKKwl3YWl0X2Zvcl93YWtldXAgPSB0 cnVlOworI2VuZGlmCiAJaWYgKGRlYnVnX21hc2sgJiBERUJVR19TVVNQRU5EKQogCQlwcl9pbmZv KCJzdXNwZW5kX2Jsb2NrX3N1c3BlbmQgcmV0dXJuICVkXG4iLCByZXQpOwogCXJldHVybiByZXQ7 CkBAIC0xMzMsNiArMjk5LDcgQEAgdm9pZCBzdXNwZW5kX2Jsb2NrZXJfaW5pdChzdHJ1Y3Qgc3Vz cGVuZF9ibG9ja2VyICpibG9ja2VyLCBjb25zdCBjaGFyICpuYW1lKQogCUlOSVRfTElTVF9IRUFE KCZibG9ja2VyLT5saW5rKTsKIAogCXNwaW5fbG9ja19pcnFzYXZlKCZsaXN0X2xvY2ssIGlycWZs YWdzKTsKKwlzdXNwZW5kX2Jsb2NrZXJfc3RhdF9pbml0X2xvY2tlZChibG9ja2VyKTsKIAlsaXN0 X2FkZCgmYmxvY2tlci0+bGluaywgJmluYWN0aXZlX2Jsb2NrZXJzKTsKIAlzcGluX3VubG9ja19p cnFyZXN0b3JlKCZsaXN0X2xvY2ssIGlycWZsYWdzKTsKIH0KQEAgLTE0OCw2ICszMTUsNyBAQCB2 b2lkIHN1c3BlbmRfYmxvY2tlcl9kZXN0cm95KHN0cnVjdCBzdXNwZW5kX2Jsb2NrZXIgKmJsb2Nr ZXIpCiAJaWYgKGRlYnVnX21hc2sgJiBERUJVR19TVVNQRU5EX0JMT0NLRVIpCiAJCXByX2luZm8o InN1c3BlbmRfYmxvY2tlcl9kZXN0cm95IG5hbWU9JXNcbiIsIGJsb2NrZXItPm5hbWUpOwogCXNw aW5fbG9ja19pcnFzYXZlKCZsaXN0X2xvY2ssIGlycWZsYWdzKTsKKwlzdXNwZW5kX2Jsb2NrZXJf c3RhdF9kZXN0cm95X2xvY2tlZChibG9ja2VyKTsKIAlibG9ja2VyLT5mbGFncyAmPSB+U0JfSU5J VElBTElaRUQ7CiAJbGlzdF9kZWwoJmJsb2NrZXItPmxpbmspOwogCWlmICgoYmxvY2tlci0+Zmxh Z3MgJiBTQl9BQ1RJVkUpICYmIGxpc3RfZW1wdHkoJmFjdGl2ZV9ibG9ja2VycykpCkBAIC0xNjcs NiArMzM1LDcgQEAgdm9pZCBzdXNwZW5kX2Jsb2NrKHN0cnVjdCBzdXNwZW5kX2Jsb2NrZXIgKmJs b2NrZXIpCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmxpc3RfbG9jaywgaXJxZmxhZ3MpOwogCUJVR19P TighKGJsb2NrZXItPmZsYWdzICYgU0JfSU5JVElBTElaRUQpKTsKIAorCXN1c3BlbmRfYmxvY2tf c3RhdF9sb2NrZWQoYmxvY2tlcik7CiAJYmxvY2tlci0+ZmxhZ3MgfD0gU0JfQUNUSVZFOwogCWxp c3RfZGVsKCZibG9ja2VyLT5saW5rKTsKIAlpZiAoZGVidWdfbWFzayAmIERFQlVHX1NVU1BFTkRf QkxPQ0tFUikKQEAgLTE3NCw2ICszNDMsMTAgQEAgdm9pZCBzdXNwZW5kX2Jsb2NrKHN0cnVjdCBz dXNwZW5kX2Jsb2NrZXIgKmJsb2NrZXIpCiAJbGlzdF9hZGQoJmJsb2NrZXItPmxpbmssICZhY3Rp dmVfYmxvY2tlcnMpOwogCiAJY3VycmVudF9ldmVudF9udW0rKzsKKwlpZiAoYmxvY2tlciA9PSAm bWFpbl9zdXNwZW5kX2Jsb2NrZXIpCisJCXVwZGF0ZV9zbGVlcF93YWl0X3N0YXRzX2xvY2tlZCh0 cnVlKTsKKwllbHNlIGlmICghaXNfYmxvY2tpbmdfc3VzcGVuZCgmbWFpbl9zdXNwZW5kX2Jsb2Nr ZXIpKQorCQl1cGRhdGVfc2xlZXBfd2FpdF9zdGF0c19sb2NrZWQoZmFsc2UpOwogCXNwaW5fdW5s b2NrX2lycXJlc3RvcmUoJmxpc3RfbG9jaywgaXJxZmxhZ3MpOwogfQogRVhQT1JUX1NZTUJPTChz dXNwZW5kX2Jsb2NrKTsKQEAgLTE5MCw2ICszNjMsOCBAQCB2b2lkIHN1c3BlbmRfdW5ibG9jayhz dHJ1Y3Qgc3VzcGVuZF9ibG9ja2VyICpibG9ja2VyKQogCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmxp c3RfbG9jaywgaXJxZmxhZ3MpOwogCisJc3VzcGVuZF91bmJsb2NrX3N0YXRfbG9ja2VkKGJsb2Nr ZXIpOworCiAJaWYgKGRlYnVnX21hc2sgJiBERUJVR19TVVNQRU5EX0JMT0NLRVIpCiAJCXByX2lu Zm8oInN1c3BlbmRfdW5ibG9jazogJXNcbiIsIGJsb2NrZXItPm5hbWUpOwogCWxpc3RfZGVsKCZi bG9ja2VyLT5saW5rKTsKQEAgLTIwMSw2ICszNzYsNyBAQCB2b2lkIHN1c3BlbmRfdW5ibG9jayhz dHJ1Y3Qgc3VzcGVuZF9ibG9ja2VyICpibG9ja2VyKQogCWlmIChibG9ja2VyID09ICZtYWluX3N1 c3BlbmRfYmxvY2tlcikgewogCQlpZiAoZGVidWdfbWFzayAmIERFQlVHX1NVU1BFTkQpCiAJCQlw cmludF9hY3RpdmVfYmxvY2tlcnNfbG9ja2VkKCk7CisJCXVwZGF0ZV9zbGVlcF93YWl0X3N0YXRz X2xvY2tlZChmYWxzZSk7CiAJfQogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmxpc3RfbG9jaywg aXJxZmxhZ3MpOwogfQpAQCAtMjQ1LDggKzQyMSwxMyBAQCBzdGF0aWMgaW50IF9faW5pdCBzdXNw ZW5kX2Jsb2NrX2luaXQodm9pZCkKIHsKIAlpbnQgcmV0OwogCisjaWZkZWYgQ09ORklHX1NVU1BF TkRfQkxPQ0tfU1RBVAorCXN1c3BlbmRfYmxvY2tlcl9pbml0KCZkZWxldGVkX3N1c3BlbmRfYmxv Y2tlcnMsCisJCQkJImRlbGV0ZWRfc3VzcGVuZF9ibG9ja2VycyIpOworI2VuZGlmCiAJc3VzcGVu ZF9ibG9ja2VyX2luaXQoJm1haW5fc3VzcGVuZF9ibG9ja2VyLCAibWFpbiIpOwogCXN1c3BlbmRf YmxvY2soJm1haW5fc3VzcGVuZF9ibG9ja2VyKTsKKwlzdXNwZW5kX2Jsb2NrZXJfaW5pdCgmdW5r bm93bl93YWtldXAsICJ1bmtub3duX3dha2V1cHMiKTsKIAogCXJldCA9IHN5c2Rldl9jbGFzc19y ZWdpc3Rlcigmc3VzcGVuZF9ibG9ja19zeXNjbGFzcyk7CiAJaWYgKHJldCkgewpAQCAtMjY1LDYg KzQ0NiwxMSBAQCBzdGF0aWMgaW50IF9faW5pdCBzdXNwZW5kX2Jsb2NrX2luaXQodm9pZCkKIAkJ Z290byBlcnJfc3VzcGVuZF93b3JrX3F1ZXVlOwogCX0KIAorI2lmZGVmIENPTkZJR19TVVNQRU5E X0JMT0NLX1NUQVQKKwljcmVhdGVfcHJvY19yZWFkX2VudHJ5KCJzdXNwZW5kX2Jsb2NrZXJzIiwg U19JUlVHTywgTlVMTCwKKwkJCQlzdXNwZW5kX2Jsb2NrZXJfc3RhdHNfcmVhZF9wcm9jLCBOVUxM KTsKKyNlbmRpZgorCiAJcmV0dXJuIDA7CiAKIGVycl9zdXNwZW5kX3dvcmtfcXVldWU6CkBAIC0y NzIsMTYgKzQ1OCwyNyBAQCBlcnJfc3VzcGVuZF93b3JrX3F1ZXVlOgogZXJyX3N5c2Rldl9yZWdp c3RlcjoKIAlzeXNkZXZfY2xhc3NfdW5yZWdpc3Rlcigmc3VzcGVuZF9ibG9ja19zeXNjbGFzcyk7 CiBlcnJfc3lzZGV2X2NsYXNzX3JlZ2lzdGVyOgorCXN1c3BlbmRfYmxvY2tlcl9kZXN0cm95KCZ1 bmtub3duX3dha2V1cCk7CiAJc3VzcGVuZF9ibG9ja2VyX2Rlc3Ryb3koJm1haW5fc3VzcGVuZF9i bG9ja2VyKTsKKyNpZmRlZiBDT05GSUdfU1VTUEVORF9CTE9DS19TVEFUCisJc3VzcGVuZF9ibG9j a2VyX2Rlc3Ryb3koJmRlbGV0ZWRfc3VzcGVuZF9ibG9ja2Vycyk7CisjZW5kaWYKIAlyZXR1cm4g cmV0OwogfQogCiBzdGF0aWMgdm9pZCAgX19leGl0IHN1c3BlbmRfYmxvY2tfZXhpdCh2b2lkKQog eworI2lmZGVmIENPTkZJR19TVVNQRU5EX0JMT0NLX1NUQVQKKwlyZW1vdmVfcHJvY19lbnRyeSgi c3VzcGVuZF9ibG9ja2VycyIsIE5VTEwpOworI2VuZGlmCiAJZGVzdHJveV93b3JrcXVldWUoc3Vz cGVuZF93b3JrX3F1ZXVlKTsKIAlzeXNkZXZfdW5yZWdpc3Rlcigmc3VzcGVuZF9ibG9ja19zeXNk ZXYpOwogCXN5c2Rldl9jbGFzc191bnJlZ2lzdGVyKCZzdXNwZW5kX2Jsb2NrX3N5c2NsYXNzKTsK KwlzdXNwZW5kX2Jsb2NrZXJfZGVzdHJveSgmdW5rbm93bl93YWtldXApOwogCXN1c3BlbmRfYmxv Y2tlcl9kZXN0cm95KCZtYWluX3N1c3BlbmRfYmxvY2tlcik7CisjaWZkZWYgQ09ORklHX1NVU1BF TkRfQkxPQ0tfU1RBVAorCXN1c3BlbmRfYmxvY2tlcl9kZXN0cm95KCZkZWxldGVkX3N1c3BlbmRf YmxvY2tlcnMpOworI2VuZGlmCiB9CiAKIGNvcmVfaW5pdGNhbGwoc3VzcGVuZF9ibG9ja19pbml0 KTsKLS0gCjEuNi4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpsaW51eC1wbSBtYWlsaW5nIGxpc3QKbGludXgtcG1AbGlzdHMubGludXgtZm91bmRhdGlv bi5vcmcKaHR0cHM6Ly9saXN0cy5saW51eC1mb3VuZGF0aW9uLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2xpbnV4LXBt