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: Tue, 5 May 2009 21:18:47 -0700 Message-ID: <1241583529-5092-8-git-send-email-arve@android.com> References: <1241583529-5092-1-git-send-email-arve@android.com> <1241583529-5092-2-git-send-email-arve@android.com> <1241583529-5092-3-git-send-email-arve@android.com> <1241583529-5092-4-git-send-email-arve@android.com> <1241583529-5092-5-git-send-email-arve@android.com> <1241583529-5092-6-git-send-email-arve@android.com> <1241583529-5092-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: <1241583529-5092-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+Ci0tLQogaW5jbHVkZS9saW51eC9zdXNwZW5kX2Jsb2NrZXIuaCB8ICAgMjEgKysrKy0KIGtl cm5lbC9wb3dlci9LY29uZmlnICAgICAgICAgICAgfCAgICA3ICsrCiBrZXJuZWwvcG93ZXIvbWFp bi5jICAgICAgICAgICAgIHwgICAgNCArLQoga2VybmVsL3Bvd2VyL3Bvd2VyLmggICAgICAgICAg ICB8ICAgIDYgKy0KIGtlcm5lbC9wb3dlci9zdXNwZW5kX2Jsb2NrZXIuYyAgfCAgMTkwICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQogNSBmaWxlcyBjaGFuZ2VkLCAyMTgg aW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51 eC9zdXNwZW5kX2Jsb2NrZXIuaCBiL2luY2x1ZGUvbGludXgvc3VzcGVuZF9ibG9ja2VyLmgKaW5k ZXggMWZhYTQzMy4uM2JiOGE2YSAxMDA3NTUKLS0tIGEvaW5jbHVkZS9saW51eC9zdXNwZW5kX2Js b2NrZXIuaAorKysgYi9pbmNsdWRlL2xpbnV4L3N1c3BlbmRfYmxvY2tlci5oCkBAIC0xNywxMiAr MTcsMjEgQEAKICNkZWZpbmUgX0xJTlVYX1NVU1BFTkRfQkxPQ0tFUl9ICiAKICNpbmNsdWRlIDxs aW51eC9saXN0Lmg+CisjaW5jbHVkZSA8bGludXgva3RpbWUuaD4KIAogLyoqCiAgKiBzdHJ1Y3Qg c3VzcGVuZF9ibG9ja2VyIC0gdGhlIGJhc2ljIHN1c3BlbmRfYmxvY2tlciBzdHJ1Y3R1cmUKICAq IEBsaW5rOglMaXN0IGVudHJ5IGZvciBhY3RpdmUgb3IgaW5hY3RpdmUgbGlzdC4KLSAqIEBmbGFn czoJVHJhY2tzIGluaXRpYWxpemVkIGFuZCBhY3RpdmUgc3RhdGUuCisgKiBAZmxhZ3M6CVRyYWNr cyBpbml0aWFsaXplZCwgYWN0aXZlIGFuZCBzdGF0cyBzdGF0ZS4KICAqIEBuYW1lOglOYW1lIHVz ZWQgZm9yIGRlYnVnZ2luZy4KKyAqIEBjb3VudDoJTnVtYmVyIG9mIHRpbWVzIHRoaXMgYmxvY2tl ciBoYXMgYmVlbiBkZWFjaXZhdGVkCisgKiBAd2FrZXVwX2NvdW50OiBOdW1iZXIgb2YgdGltZXMg dGhpcyBibG9ja2VyIHdhcyB0aGUgZmlyc3QgdG8gYmxvY2sgc3VzcGVuZAorICoJCWFmdGVyIHJl c3VtZS4KKyAqIEB0b3RhbF90aW1lOglUb3RhbCB0aW1lIHRoaXMgc3VzcGVuZCBibG9ja2VyIGhh cyBwcmV2ZW50ZWQgc3VzcGVuZC4KKyAqIEBwcmV2ZW50X3N1c3BlbmRfdGltZTogVGltZSB0aGlz IHN1c3BlbmQgYmxvY2tlciBoYXMgcHJldmVudGVkIHN1c3BlbmQgd2hpbGUKKyAqCQl1c2VyLXNw YWNlIHJlcXVlc3RlZCBzdXNwZW5kLgorICogQG1heF90aW1lOglNYXggdGltZSB0aGlzIHN1c3Bl bmQgYmxvY2tlciBoYXMgYmVlbiBjb250aW51b3VzbHkgYWN0aXZlCisgKiBAbGFzdF90aW1lOglN b25vdG9uaWMgY2xvY2sgd2hlbiB0aGUgYWN0aXZlIHN0YXRlIGxhc3QgY2hhbmdlZC4KICAqCiAg KiBXaGVuIGEgc3VzcGVuZF9ibG9ja2VyIGlzIGFjdGl2ZSBpdCBwcmV2ZW50cyB0aGUgc3lzdGVt IGZyb20gZW50ZXJpbmcKICAqIHN1c3BlbmQuCkBAIC0zNSw2ICs0NCwxNiBAQCBzdHJ1Y3Qgc3Vz cGVuZF9ibG9ja2VyIHsKIAlzdHJ1Y3QgbGlzdF9oZWFkICAgIGxpbms7CiAJaW50ICAgICAgICAg ICAgICAgICBmbGFnczsKIAljb25zdCBjaGFyICAgICAgICAgKm5hbWU7CisjaWZkZWYgQ09ORklH X1NVU1BFTkRfQkxPQ0tFUl9TVEFUUworCXN0cnVjdCB7CisJCWludCAgICAgICAgICAgICBjb3Vu dDsKKwkJaW50ICAgICAgICAgICAgIHdha2V1cF9jb3VudDsKKwkJa3RpbWVfdCAgICAgICAgIHRv dGFsX3RpbWU7CisJCWt0aW1lX3QgICAgICAgICBwcmV2ZW50X3N1c3BlbmRfdGltZTsKKwkJa3Rp bWVfdCAgICAgICAgIG1heF90aW1lOworCQlrdGltZV90ICAgICAgICAgbGFzdF90aW1lOworCX0g c3RhdDsKKyNlbmRpZgogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9rZXJuZWwvcG93ZXIvS2Nv bmZpZyBiL2tlcm5lbC9wb3dlci9LY29uZmlnCmluZGV4IDg0YjQyM2YuLjQ0YmZhZWIgMTAwNjQ0 Ci0tLSBhL2tlcm5lbC9wb3dlci9LY29uZmlnCisrKyBiL2tlcm5lbC9wb3dlci9LY29uZmlnCkBA IC0xMjYsNiArMTI2LDEzIEBAIGNvbmZpZyBTVVNQRU5EX0JMT0NLRVJTCiAJICB0aHJvdWdoIC9z eXMvcG93ZXIvcmVxdWVzdF9zdGF0ZSwgdGhlIHJlcXVlc3RlZCBzbGVlcCBzdGF0ZSB3aWxsIGJl CiAJICBlbnRlcmVkIHdoZW4gbm8gc3VzcGVuZCBibG9ja2VycyBhcmUgYWN0aXZlLgogCitjb25m aWcgU1VTUEVORF9CTE9DS0VSX1NUQVRTCisJYm9vbCAiU3VzcGVuZCBibG9jayBzdGF0cyIKKwlk ZXBlbmRzIG9uIFNVU1BFTkRfQkxPQ0tFUlMKKwlkZWZhdWx0IHkKKwktLS1oZWxwLS0tCisJICBS ZXBvcnQgc3VzcGVuZCBibG9jayBzdGF0cyBpbiAvc3lzL2tlcm5lbC9kZWJ1Zy9zdXNwZW5kX2Js b2NrZXJzCisKIGNvbmZpZyBVU0VSX1NVU1BFTkRfQkxPQ0tFUlMKIAlib29sICJVc2Vyc3BhY2Ug c3VzcGVuZCBibG9ja2VycyIKIAlkZXBlbmRzIG9uIFNVU1BFTkRfQkxPQ0tFUlMKZGlmZiAtLWdp dCBhL2tlcm5lbC9wb3dlci9tYWluLmMgYi9rZXJuZWwvcG93ZXIvbWFpbi5jCmluZGV4IDE4OTlj ZGEuLjAyMmFjY2EgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9wb3dlci9tYWluLmMKKysrIGIva2VybmVs L3Bvd2VyL21haW4uYwpAQCAtMzIyLDggKzMyMiwxMCBAQCBzdGF0aWMgaW50IHN1c3BlbmRfZW50 ZXIoc3VzcGVuZF9zdGF0ZV90IHN0YXRlKQogCiAJZXJyb3IgPSBzeXNkZXZfc3VzcGVuZChQTVNH X1NVU1BFTkQpOwogCWlmICghZXJyb3IpIHsKLQkJaWYgKCFzdXNwZW5kX2lzX2Jsb2NrZWQoKSAm JiAhc3VzcGVuZF90ZXN0KFRFU1RfQ09SRSkpCisJCWlmICghc3VzcGVuZF9pc19ibG9ja2VkKCkg JiYgIXN1c3BlbmRfdGVzdChURVNUX0NPUkUpKSB7CisJCQlhYm91dF90b19lbnRlcl9zdXNwZW5k KCk7CiAJCQllcnJvciA9IHN1c3BlbmRfb3BzLT5lbnRlcihzdGF0ZSk7CisJCX0KIAkJc3lzZGV2 X3Jlc3VtZSgpOwogCX0KIApkaWZmIC0tZ2l0IGEva2VybmVsL3Bvd2VyL3Bvd2VyLmggYi9rZXJu ZWwvcG93ZXIvcG93ZXIuaAppbmRleCAyMjQ2YjNiLi41YzMwZmI0IDEwMDY0NAotLS0gYS9rZXJu ZWwvcG93ZXIvcG93ZXIuaAorKysgYi9rZXJuZWwvcG93ZXIvcG93ZXIuaApAQCAtMjI2LDQgKzIy Niw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzdXNwZW5kX3RoYXdfcHJvY2Vzc2VzKHZvaWQpCiAK IC8qIGtlcm5lbC9wb3dlci9zdXNwZW5kX2Jsb2NrLmMgKi8KIHZvaWQgcmVxdWVzdF9zdXNwZW5k X3N0YXRlKHN1c3BlbmRfc3RhdGVfdCBzdGF0ZSk7Ci0KKyNpZmRlZiBDT05GSUdfU1VTUEVORF9C TE9DS0VSX1NUQVRTCit2b2lkIGFib3V0X3RvX2VudGVyX3N1c3BlbmQodm9pZCk7CisjZWxzZQor c3RhdGljIGlubGluZSB2b2lkIGFib3V0X3RvX2VudGVyX3N1c3BlbmQodm9pZCkge30KKyNlbmRp ZgpkaWZmIC0tZ2l0IGEva2VybmVsL3Bvd2VyL3N1c3BlbmRfYmxvY2tlci5jIGIva2VybmVsL3Bv d2VyL3N1c3BlbmRfYmxvY2tlci5jCmluZGV4IGNlODdjNjUuLmI1Y2UyOTUgMTAwNjQ0Ci0tLSBh L2tlcm5lbC9wb3dlci9zdXNwZW5kX2Jsb2NrZXIuYworKysgYi9rZXJuZWwvcG93ZXIvc3VzcGVu ZF9ibG9ja2VyLmMKQEAgLTMyLDYgKzMyLDcgQEAgbW9kdWxlX3BhcmFtX25hbWVkKGRlYnVnX21h c2ssIGRlYnVnX21hc2ssIGludCwgU19JUlVHTyB8IFNfSVdVU1IgfCBTX0lXR1JQKTsKIAogI2Rl ZmluZSBTQl9JTklUSUFMSVpFRCAgICAgICAgICAgICgxVSA8PCA4KQogI2RlZmluZSBTQl9BQ1RJ VkUgICAgICAgICAgICAgICAgICgxVSA8PCA5KQorI2RlZmluZSBTQl9QUkVWRU5USU5HX1NVU1BF TkQgICAgICgxVSA8PCAxMCkKIAogc3RhdGljIERFRklORV9TUElOTE9DSyhsaXN0X2xvY2spOwog c3RhdGljIERFRklORV9TUElOTE9DSyhzdGF0ZV9sb2NrKTsKQEAgLTQyLDYgKzQzLDcgQEAgc3Ry dWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKnN1c3BlbmRfd29ya19xdWV1ZTsKIHN0cnVjdCBzdXNwZW5k X2Jsb2NrZXIgbWFpbl9zdXNwZW5kX2Jsb2NrZXI7CiBzdGF0aWMgc3VzcGVuZF9zdGF0ZV90IHJl cXVlc3RlZF9zdXNwZW5kX3N0YXRlID0gUE1fU1VTUEVORF9NRU07CiBzdGF0aWMgYm9vbCBlbmFi bGVfc3VzcGVuZF9ibG9ja2VyczsKK3N0YXRpYyBzdHJ1Y3Qgc3VzcGVuZF9ibG9ja2VyIHVua25v d25fd2FrZXVwOwogc3RhdGljIHN0cnVjdCBkZW50cnkgKnN1c3BlbmRfYmxvY2tlcl9zdGF0c19k ZW50cnk7CiAKICNkZWZpbmUgcHJfaW5mb190aW1lKGZtdCwgYXJncy4uLikgXApAQCAtNTYsNiAr NTgsMTUzIEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpzdXNwZW5kX2Jsb2NrZXJfc3RhdHNfZGVu dHJ5OwogCQkJdG0udG1faG91ciwgdG0udG1fbWluLCB0bS50bV9zZWMsIHRzLnR2X25zZWMpOyBc CiAJfSB3aGlsZSAoMCk7CiAKKyNpZmRlZiBDT05GSUdfU1VTUEVORF9CTE9DS0VSX1NUQVRTCitz dGF0aWMgc3RydWN0IHN1c3BlbmRfYmxvY2tlciBkZWxldGVkX3N1c3BlbmRfYmxvY2tlcnM7Citz dGF0aWMga3RpbWVfdCBsYXN0X3NsZWVwX3RpbWVfdXBkYXRlOworc3RhdGljIGJvb2wgd2FpdF9m b3Jfd2FrZXVwOworCitzdGF0aWMgaW50IHByaW50X2Jsb2NrZXJfc3RhdChzdHJ1Y3Qgc2VxX2Zp bGUgKm0sCisJCQkgICAgICBzdHJ1Y3Qgc3VzcGVuZF9ibG9ja2VyICpibG9ja2VyKQoreworCWlu dCBsb2NrX2NvdW50ID0gYmxvY2tlci0+c3RhdC5jb3VudDsKKwlrdGltZV90IGFjdGl2ZV90aW1l ID0ga3RpbWVfc2V0KDAsIDApOworCWt0aW1lX3QgdG90YWxfdGltZSA9IGJsb2NrZXItPnN0YXQu dG90YWxfdGltZTsKKwlrdGltZV90IG1heF90aW1lID0gYmxvY2tlci0+c3RhdC5tYXhfdGltZTsK KwlrdGltZV90IHByZXZlbnRfc3VzcGVuZF90aW1lID0gYmxvY2tlci0+c3RhdC5wcmV2ZW50X3N1 c3BlbmRfdGltZTsKKwlpZiAoYmxvY2tlci0+ZmxhZ3MgJiBTQl9BQ1RJVkUpIHsKKwkJa3RpbWVf dCBub3csIGFkZF90aW1lOworCQlub3cgPSBrdGltZV9nZXQoKTsKKwkJYWRkX3RpbWUgPSBrdGlt ZV9zdWIobm93LCBibG9ja2VyLT5zdGF0Lmxhc3RfdGltZSk7CisJCWxvY2tfY291bnQrKzsKKwkJ YWN0aXZlX3RpbWUgPSBhZGRfdGltZTsKKwkJdG90YWxfdGltZSA9IGt0aW1lX2FkZCh0b3RhbF90 aW1lLCBhZGRfdGltZSk7CisJCWlmIChibG9ja2VyLT5mbGFncyAmIFNCX1BSRVZFTlRJTkdfU1VT UEVORCkKKwkJCXByZXZlbnRfc3VzcGVuZF90aW1lID0ga3RpbWVfYWRkKHByZXZlbnRfc3VzcGVu ZF90aW1lLAorCQkJCQlrdGltZV9zdWIobm93LCBsYXN0X3NsZWVwX3RpbWVfdXBkYXRlKSk7CisJ CWlmIChhZGRfdGltZS50djY0ID4gbWF4X3RpbWUudHY2NCkKKwkJCW1heF90aW1lID0gYWRkX3Rp bWU7CisJfQorCisJcmV0dXJuIHNlcV9wcmludGYobSwgIlwiJXNcIlx0JWRcdCVkXHQlbGxkXHQl bGxkXHQlbGxkXHQlbGxkXHQlbGxkXG4iLAorCQkgICAgICAgYmxvY2tlci0+bmFtZSwgbG9ja19j b3VudCwgYmxvY2tlci0+c3RhdC53YWtldXBfY291bnQsCisJCSAgICAgICBrdGltZV90b19ucyhh Y3RpdmVfdGltZSksIGt0aW1lX3RvX25zKHRvdGFsX3RpbWUpLAorCQkgICAgICAga3RpbWVfdG9f bnMocHJldmVudF9zdXNwZW5kX3RpbWUpLCBrdGltZV90b19ucyhtYXhfdGltZSksCisJCSAgICAg ICBrdGltZV90b19ucyhibG9ja2VyLT5zdGF0Lmxhc3RfdGltZSkpOworfQorCisKK3N0YXRpYyBp bnQgc3VzcGVuZF9ibG9ja2VyX3N0YXRzX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1 bnVzZWQpCit7CisJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKKwlzdHJ1Y3Qgc3VzcGVuZF9ibG9j a2VyICpibG9ja2VyOworCisJc2VxX3B1dHMobSwgIm5hbWVcdGNvdW50XHR3YWtlX2NvdW50XHRh Y3RpdmVfc2luY2UiCisJCSAiXHR0b3RhbF90aW1lXHRzbGVlcF90aW1lXHRtYXhfdGltZVx0bGFz dF9jaGFuZ2VcbiIpOworCXNwaW5fbG9ja19pcnFzYXZlKCZsaXN0X2xvY2ssIGlycWZsYWdzKTsK KwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGJsb2NrZXIsICZpbmFjdGl2ZV9ibG9ja2VycywgbGluaykK KwkJcHJpbnRfYmxvY2tlcl9zdGF0KG0sIGJsb2NrZXIpOworCWxpc3RfZm9yX2VhY2hfZW50cnko YmxvY2tlciwgJmFjdGl2ZV9ibG9ja2VycywgbGluaykKKwkJcHJpbnRfYmxvY2tlcl9zdGF0KG0s IGJsb2NrZXIpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmxpc3RfbG9jaywgaXJxZmxhZ3Mp OworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBzdXNwZW5kX2Jsb2NrZXJfc3RhdF9pbml0 X2xvY2tlZChzdHJ1Y3Qgc3VzcGVuZF9ibG9ja2VyICpibG9ja2VyKQoreworCWJsb2NrZXItPnN0 YXQuY291bnQgPSAwOworCWJsb2NrZXItPnN0YXQud2FrZXVwX2NvdW50ID0gMDsKKwlibG9ja2Vy LT5zdGF0LnRvdGFsX3RpbWUgPSBrdGltZV9zZXQoMCwgMCk7CisJYmxvY2tlci0+c3RhdC5wcmV2 ZW50X3N1c3BlbmRfdGltZSA9IGt0aW1lX3NldCgwLCAwKTsKKwlibG9ja2VyLT5zdGF0Lm1heF90 aW1lID0ga3RpbWVfc2V0KDAsIDApOworCWJsb2NrZXItPnN0YXQubGFzdF90aW1lID0ga3RpbWVf c2V0KDAsIDApOworfQorCitzdGF0aWMgdm9pZCBzdXNwZW5kX2Jsb2NrZXJfc3RhdF9kZXN0cm95 X2xvY2tlZChzdHJ1Y3Qgc3VzcGVuZF9ibG9ja2VyICpibCkKK3sKKwlpZiAoIWJsLT5zdGF0LmNv dW50KQorCQlyZXR1cm47CisJZGVsZXRlZF9zdXNwZW5kX2Jsb2NrZXJzLnN0YXQuY291bnQgKz0g YmwtPnN0YXQuY291bnQ7CisJZGVsZXRlZF9zdXNwZW5kX2Jsb2NrZXJzLnN0YXQudG90YWxfdGlt ZSA9IGt0aW1lX2FkZCgKKwkJZGVsZXRlZF9zdXNwZW5kX2Jsb2NrZXJzLnN0YXQudG90YWxfdGlt ZSwgYmwtPnN0YXQudG90YWxfdGltZSk7CisJZGVsZXRlZF9zdXNwZW5kX2Jsb2NrZXJzLnN0YXQu cHJldmVudF9zdXNwZW5kX3RpbWUgPSBrdGltZV9hZGQoCisJCWRlbGV0ZWRfc3VzcGVuZF9ibG9j a2Vycy5zdGF0LnByZXZlbnRfc3VzcGVuZF90aW1lLAorCQlibC0+c3RhdC5wcmV2ZW50X3N1c3Bl bmRfdGltZSk7CisJZGVsZXRlZF9zdXNwZW5kX2Jsb2NrZXJzLnN0YXQubWF4X3RpbWUgPSBrdGlt ZV9hZGQoCisJCWRlbGV0ZWRfc3VzcGVuZF9ibG9ja2Vycy5zdGF0Lm1heF90aW1lLCBibC0+c3Rh dC5tYXhfdGltZSk7Cit9CisKK3N0YXRpYyB2b2lkIHN1c3BlbmRfdW5ibG9ja19zdGF0X2xvY2tl ZChzdHJ1Y3Qgc3VzcGVuZF9ibG9ja2VyICpibG9ja2VyKQoreworCWt0aW1lX3QgZHVyYXRpb247 CisJa3RpbWVfdCBub3c7CisJaWYgKCEoYmxvY2tlci0+ZmxhZ3MgJiBTQl9BQ1RJVkUpKQorCQly ZXR1cm47CisJbm93ID0ga3RpbWVfZ2V0KCk7CisJYmxvY2tlci0+c3RhdC5jb3VudCsrOworCWR1 cmF0aW9uID0ga3RpbWVfc3ViKG5vdywgYmxvY2tlci0+c3RhdC5sYXN0X3RpbWUpOworCWJsb2Nr ZXItPnN0YXQudG90YWxfdGltZSA9CisJCWt0aW1lX2FkZChibG9ja2VyLT5zdGF0LnRvdGFsX3Rp bWUsIGR1cmF0aW9uKTsKKwlpZiAoa3RpbWVfdG9fbnMoZHVyYXRpb24pID4ga3RpbWVfdG9fbnMo YmxvY2tlci0+c3RhdC5tYXhfdGltZSkpCisJCWJsb2NrZXItPnN0YXQubWF4X3RpbWUgPSBkdXJh dGlvbjsKKwlibG9ja2VyLT5zdGF0Lmxhc3RfdGltZSA9IGt0aW1lX2dldCgpOworCWlmIChibG9j a2VyLT5mbGFncyAmIFNCX1BSRVZFTlRJTkdfU1VTUEVORCkgeworCQlkdXJhdGlvbiA9IGt0aW1l X3N1Yihub3csIGxhc3Rfc2xlZXBfdGltZV91cGRhdGUpOworCQlibG9ja2VyLT5zdGF0LnByZXZl bnRfc3VzcGVuZF90aW1lID0ga3RpbWVfYWRkKAorCQkJYmxvY2tlci0+c3RhdC5wcmV2ZW50X3N1 c3BlbmRfdGltZSwgZHVyYXRpb24pOworCQlibG9ja2VyLT5mbGFncyAmPSB+U0JfUFJFVkVOVElO R19TVVNQRU5EOworCX0KK30KKworc3RhdGljIHZvaWQgc3VzcGVuZF9ibG9ja19zdGF0X2xvY2tl ZChzdHJ1Y3Qgc3VzcGVuZF9ibG9ja2VyICpibG9ja2VyKQoreworCWlmICh3YWl0X2Zvcl93YWtl dXApIHsKKwkJaWYgKGRlYnVnX21hc2sgJiBERUJVR19XQUtFVVApCisJCQlwcl9pbmZvKCJ3YWtl dXAgc3VzcGVuZCBibG9ja2VyOiAlc1xuIiwgYmxvY2tlci0+bmFtZSk7CisJCXdhaXRfZm9yX3dh a2V1cCA9IGZhbHNlOworCQlibG9ja2VyLT5zdGF0Lndha2V1cF9jb3VudCsrOworCX0KKwlpZiAo IShibG9ja2VyLT5mbGFncyAmIFNCX0FDVElWRSkpCisJCWJsb2NrZXItPnN0YXQubGFzdF90aW1l ID0ga3RpbWVfZ2V0KCk7Cit9CisKK3N0YXRpYyB2b2lkIHVwZGF0ZV9zbGVlcF93YWl0X3N0YXRz X2xvY2tlZChib29sIGRvbmUpCit7CisJc3RydWN0IHN1c3BlbmRfYmxvY2tlciAqYmxvY2tlcjsK KwlrdGltZV90IG5vdywgZWxhcHNlZCwgYWRkOworCisJbm93ID0ga3RpbWVfZ2V0KCk7CisJZWxh cHNlZCA9IGt0aW1lX3N1Yihub3csIGxhc3Rfc2xlZXBfdGltZV91cGRhdGUpOworCWxpc3RfZm9y X2VhY2hfZW50cnkoYmxvY2tlciwgJmFjdGl2ZV9ibG9ja2VycywgbGluaykgeworCQlpZiAoYmxv Y2tlci0+ZmxhZ3MgJiBTQl9QUkVWRU5USU5HX1NVU1BFTkQpIHsKKwkJCWFkZCA9IGVsYXBzZWQ7 CisJCQlibG9ja2VyLT5zdGF0LnByZXZlbnRfc3VzcGVuZF90aW1lID0ga3RpbWVfYWRkKAorCQkJ CWJsb2NrZXItPnN0YXQucHJldmVudF9zdXNwZW5kX3RpbWUsIGFkZCk7CisJCX0KKwkJaWYgKGRv bmUpCisJCQlibG9ja2VyLT5mbGFncyAmPSB+U0JfUFJFVkVOVElOR19TVVNQRU5EOworCQllbHNl CisJCQlibG9ja2VyLT5mbGFncyB8PSBTQl9QUkVWRU5USU5HX1NVU1BFTkQ7CisJfQorCWxhc3Rf c2xlZXBfdGltZV91cGRhdGUgPSBub3c7Cit9CisKK3ZvaWQgYWJvdXRfdG9fZW50ZXJfc3VzcGVu ZCh2b2lkKQoreworCXdhaXRfZm9yX3dha2V1cCA9IHRydWU7Cit9CisKKyNlbHNlCisKK3N0YXRp YyBpbmxpbmUgdm9pZCBzdXNwZW5kX2Jsb2NrZXJfc3RhdF9pbml0X2xvY2tlZCgKKwkJCQkJc3Ry dWN0IHN1c3BlbmRfYmxvY2tlciAqYmxvY2tlcikge30KK3N0YXRpYyBpbmxpbmUgdm9pZCBzdXNw ZW5kX2Jsb2NrZXJfc3RhdF9kZXN0cm95X2xvY2tlZCgKKwkJCQkJc3RydWN0IHN1c3BlbmRfYmxv Y2tlciAqYmxvY2tlcikge30KK3N0YXRpYyBpbmxpbmUgdm9pZCBzdXNwZW5kX2Jsb2NrX3N0YXRf bG9ja2VkKAorCQkJCQlzdHJ1Y3Qgc3VzcGVuZF9ibG9ja2VyICpibG9ja2VyKSB7fQorc3RhdGlj IGlubGluZSB2b2lkIHN1c3BlbmRfdW5ibG9ja19zdGF0X2xvY2tlZCgKKwkJCQkJc3RydWN0IHN1 c3BlbmRfYmxvY2tlciAqYmxvY2tlcikge30KK3N0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVfc2xl ZXBfd2FpdF9zdGF0c19sb2NrZWQoYm9vbCBkb25lKSB7fQorCiBzdGF0aWMgaW50IHN1c3BlbmRf YmxvY2tlcl9zdGF0c19zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogewog CXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7CkBAIC03MSw2ICsyMjAsOCBAQCBzdGF0aWMgaW50IHN1 c3BlbmRfYmxvY2tlcl9zdGF0c19zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2Vk KQogCXJldHVybiAwOwogfQogCisjZW5kaWYKKwogc3RhdGljIHZvaWQgcHJpbnRfYWN0aXZlX2Js b2NrZXJzX2xvY2tlZCh2b2lkKQogewogCXN0cnVjdCBzdXNwZW5kX2Jsb2NrZXIgKmJsb2NrZXI7 CkBAIC0xMDEsMTYgKzI1MiwyNiBAQCBzdGF0aWMgdm9pZCBzdXNwZW5kX3dvcmtlcihzdHJ1Y3Qg d29ya19zdHJ1Y3QgKndvcmspCiAJaW50IGVudHJ5X2V2ZW50X251bTsKIAogCWVuYWJsZV9zdXNw ZW5kX2Jsb2NrZXJzID0gdHJ1ZTsKLQl3aGlsZSAoIXN1c3BlbmRfaXNfYmxvY2tlZCgpKSB7Ci0J CWVudHJ5X2V2ZW50X251bSA9IGN1cnJlbnRfZXZlbnRfbnVtOworCisJaWYgKHN1c3BlbmRfaXNf YmxvY2tlZCgpKSB7CisJCWlmIChkZWJ1Z19tYXNrICYgREVCVUdfU1VTUEVORCkKKwkJCXByX2lu Zm8oInN1c3BlbmQ6IGFib3J0IHN1c3BlbmRcbiIpOworCQlnb3RvIGFib3J0OworCX0KKworCWVu dHJ5X2V2ZW50X251bSA9IGN1cnJlbnRfZXZlbnRfbnVtOworCWlmIChkZWJ1Z19tYXNrICYgREVC VUdfU1VTUEVORCkKKwkJcHJfaW5mbygic3VzcGVuZDogZW50ZXIgc3VzcGVuZFxuIik7CisJcmV0 ID0gcG1fc3VzcGVuZChyZXF1ZXN0ZWRfc3VzcGVuZF9zdGF0ZSk7CisJaWYgKGRlYnVnX21hc2sg JiBERUJVR19FWElUX1NVU1BFTkQpCisJCXByX2luZm9fdGltZSgic3VzcGVuZDogZXhpdCBzdXNw ZW5kLCByZXQgPSAlZCAiLCByZXQpOworCWlmIChjdXJyZW50X2V2ZW50X251bSA9PSBlbnRyeV9l dmVudF9udW0pIHsKIAkJaWYgKGRlYnVnX21hc2sgJiBERUJVR19TVVNQRU5EKQotCQkJcHJfaW5m bygic3VzcGVuZDogZW50ZXIgc3VzcGVuZFxuIik7Ci0JCXJldCA9IHBtX3N1c3BlbmQocmVxdWVz dGVkX3N1c3BlbmRfc3RhdGUpOwotCQlpZiAoZGVidWdfbWFzayAmIERFQlVHX0VYSVRfU1VTUEVO RCkKLQkJCXByX2luZm9fdGltZSgic3VzcGVuZDogZXhpdCBzdXNwZW5kLCByZXQgPSAlZCAiLCBy ZXQpOwotCQlpZiAoY3VycmVudF9ldmVudF9udW0gPT0gZW50cnlfZXZlbnRfbnVtKQogCQkJcHJf aW5mbygic3VzcGVuZDogcG1fc3VzcGVuZCByZXR1cm5lZCB3aXRoIG5vIGV2ZW50XG4iKTsKKwkJ c3VzcGVuZF9ibG9jaygmdW5rbm93bl93YWtldXApOworCQlzdXNwZW5kX3VuYmxvY2soJnVua25v d25fd2FrZXVwKTsKIAl9CithYm9ydDoKIAllbmFibGVfc3VzcGVuZF9ibG9ja2VycyA9IGZhbHNl OwogfQogc3RhdGljIERFQ0xBUkVfV09SSyhzdXNwZW5kX3dvcmssIHN1c3BlbmRfd29ya2VyKTsK QEAgLTEzNyw2ICsyOTgsNyBAQCB2b2lkIHN1c3BlbmRfYmxvY2tlcl9pbml0KHN0cnVjdCBzdXNw ZW5kX2Jsb2NrZXIgKmJsb2NrZXIsIGNvbnN0IGNoYXIgKm5hbWUpCiAJSU5JVF9MSVNUX0hFQUQo JmJsb2NrZXItPmxpbmspOwogCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmxpc3RfbG9jaywgaXJxZmxh Z3MpOworCXN1c3BlbmRfYmxvY2tlcl9zdGF0X2luaXRfbG9ja2VkKGJsb2NrZXIpOwogCWxpc3Rf YWRkKCZibG9ja2VyLT5saW5rLCAmaW5hY3RpdmVfYmxvY2tlcnMpOwogCXNwaW5fdW5sb2NrX2ly cXJlc3RvcmUoJmxpc3RfbG9jaywgaXJxZmxhZ3MpOwogfQpAQCAtMTU0LDYgKzMxNiw3IEBAIHZv aWQgc3VzcGVuZF9ibG9ja2VyX2Rlc3Ryb3koc3RydWN0IHN1c3BlbmRfYmxvY2tlciAqYmxvY2tl cikKIAlpZiAoZGVidWdfbWFzayAmIERFQlVHX1NVU1BFTkRfQkxPQ0tFUikKIAkJcHJfaW5mbygi c3VzcGVuZF9ibG9ja2VyX2Rlc3Ryb3kgbmFtZT0lc1xuIiwgYmxvY2tlci0+bmFtZSk7CiAJc3Bp bl9sb2NrX2lycXNhdmUoJmxpc3RfbG9jaywgaXJxZmxhZ3MpOworCXN1c3BlbmRfYmxvY2tlcl9z dGF0X2Rlc3Ryb3lfbG9ja2VkKGJsb2NrZXIpOwogCWJsb2NrZXItPmZsYWdzICY9IH5TQl9JTklU SUFMSVpFRDsKIAlsaXN0X2RlbCgmYmxvY2tlci0+bGluayk7CiAJaWYgKChibG9ja2VyLT5mbGFn cyAmIFNCX0FDVElWRSkgJiYgbGlzdF9lbXB0eSgmYWN0aXZlX2Jsb2NrZXJzKSkKQEAgLTE3NCw2 ICszMzcsNyBAQCB2b2lkIHN1c3BlbmRfYmxvY2soc3RydWN0IHN1c3BlbmRfYmxvY2tlciAqYmxv Y2tlcikKIAkJcmV0dXJuOwogCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmxpc3RfbG9jaywgaXJxZmxh Z3MpOworCXN1c3BlbmRfYmxvY2tfc3RhdF9sb2NrZWQoYmxvY2tlcik7CiAJYmxvY2tlci0+Zmxh Z3MgfD0gU0JfQUNUSVZFOwogCWxpc3RfZGVsKCZibG9ja2VyLT5saW5rKTsKIAlpZiAoZGVidWdf bWFzayAmIERFQlVHX1NVU1BFTkRfQkxPQ0tFUikKQEAgLTE4MSw2ICszNDUsMTAgQEAgdm9pZCBz dXNwZW5kX2Jsb2NrKHN0cnVjdCBzdXNwZW5kX2Jsb2NrZXIgKmJsb2NrZXIpCiAJbGlzdF9hZGQo JmJsb2NrZXItPmxpbmssICZhY3RpdmVfYmxvY2tlcnMpOwogCiAJY3VycmVudF9ldmVudF9udW0r KzsKKwlpZiAoYmxvY2tlciA9PSAmbWFpbl9zdXNwZW5kX2Jsb2NrZXIpCisJCXVwZGF0ZV9zbGVl cF93YWl0X3N0YXRzX2xvY2tlZCh0cnVlKTsKKwllbHNlIGlmICghc3VzcGVuZF9ibG9ja2VyX2lz X2FjdGl2ZSgmbWFpbl9zdXNwZW5kX2Jsb2NrZXIpKQorCQl1cGRhdGVfc2xlZXBfd2FpdF9zdGF0 c19sb2NrZWQoZmFsc2UpOwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmxpc3RfbG9jaywgaXJx ZmxhZ3MpOwogfQogRVhQT1JUX1NZTUJPTChzdXNwZW5kX2Jsb2NrKTsKQEAgLTIwMCw2ICszNjgs OCBAQCB2b2lkIHN1c3BlbmRfdW5ibG9jayhzdHJ1Y3Qgc3VzcGVuZF9ibG9ja2VyICpibG9ja2Vy KQogCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmxpc3RfbG9jaywgaXJxZmxhZ3MpOwogCisJc3VzcGVu ZF91bmJsb2NrX3N0YXRfbG9ja2VkKGJsb2NrZXIpOworCiAJaWYgKGRlYnVnX21hc2sgJiBERUJV R19TVVNQRU5EX0JMT0NLRVIpCiAJCXByX2luZm8oInN1c3BlbmRfdW5ibG9jazogJXNcbiIsIGJs b2NrZXItPm5hbWUpOwogCWxpc3RfZGVsKCZibG9ja2VyLT5saW5rKTsKQEAgLTIxMSw2ICszODEs NyBAQCB2b2lkIHN1c3BlbmRfdW5ibG9jayhzdHJ1Y3Qgc3VzcGVuZF9ibG9ja2VyICpibG9ja2Vy KQogCWlmIChibG9ja2VyID09ICZtYWluX3N1c3BlbmRfYmxvY2tlcikgewogCQlpZiAoZGVidWdf bWFzayAmIERFQlVHX1NVU1BFTkQpCiAJCQlwcmludF9hY3RpdmVfYmxvY2tlcnNfbG9ja2VkKCk7 CisJCXVwZGF0ZV9zbGVlcF93YWl0X3N0YXRzX2xvY2tlZChmYWxzZSk7CiAJfQogCXNwaW5fdW5s b2NrX2lycXJlc3RvcmUoJmxpc3RfbG9jaywgaXJxZmxhZ3MpOwogfQpAQCAtMjY4LDYgKzQzOSwx MSBAQCBzdGF0aWMgaW50IF9faW5pdCBzdXNwZW5kX2Jsb2NrX2luaXQodm9pZCkKIAogCXN1c3Bl bmRfYmxvY2tlcl9pbml0KCZtYWluX3N1c3BlbmRfYmxvY2tlciwgIm1haW4iKTsKIAlzdXNwZW5k X2Jsb2NrKCZtYWluX3N1c3BlbmRfYmxvY2tlcik7CisJc3VzcGVuZF9ibG9ja2VyX2luaXQoJnVu a25vd25fd2FrZXVwLCAidW5rbm93bl93YWtldXBzIik7CisjaWZkZWYgQ09ORklHX1NVU1BFTkRf QkxPQ0tFUl9TVEFUUworCXN1c3BlbmRfYmxvY2tlcl9pbml0KCZkZWxldGVkX3N1c3BlbmRfYmxv Y2tlcnMsCisJCQkJImRlbGV0ZWRfc3VzcGVuZF9ibG9ja2VycyIpOworI2VuZGlmCiAJcmV0dXJu IDA7CiB9CiAKLS0gCjEuNi4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpsaW51eC1wbSBtYWlsaW5nIGxpc3QKbGludXgtcG1AbGlzdHMubGludXgtZm91 bmRhdGlvbi5vcmcKaHR0cHM6Ly9saXN0cy5saW51eC1mb3VuZGF0aW9uLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2xpbnV4LXBt