From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?utf-8?q?Arve=20Hj=C3=B8nnev=C3=A5g?= Subject: [PATCH 8/9] PM: suspend_block: Add timeout support. Date: Wed, 29 Apr 2009 20:10:07 -0700 Message-ID: <1241061008-31134-9-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> <1241061008-31134-8-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-8-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 QWRkIHN1c3BlbmRfYmxvY2tfdGltZW91dCB0byBibG9jayBzdXNwZW5kIGZvciBhIGxpbWl0ZWQg dGltZS4KClNpZ25lZC1vZmYtYnk6IEFydmUgSGrDuG5uZXbDpWcgPGFydmVAYW5kcm9pZC5jb20+ Ci0tLQogRG9jdW1lbnRhdGlvbi9wb3dlci9zdXNwZW5kLWJsb2NrZXJzLnR4dCB8ICAgMTAgKysK IGluY2x1ZGUvbGludXgvc3VzcGVuZF9ibG9ja2VyLmggICAgICAgICAgfCAgICA3ICstCiBrZXJu ZWwvcG93ZXIvc3VzcGVuZF9ibG9ja2VyLmMgICAgICAgICAgIHwgIDIzNSArKysrKysrKysrKysr KysrKysrKysrKysrLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAyMTggaW5zZXJ0aW9ucygrKSwgMzQg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9wb3dlci9zdXNwZW5kLWJs b2NrZXJzLnR4dCBiL0RvY3VtZW50YXRpb24vcG93ZXIvc3VzcGVuZC1ibG9ja2Vycy50eHQKaW5k ZXggZDgxZTIwZS4uZmQ5ZjkzMiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9wb3dlci9zdXNw ZW5kLWJsb2NrZXJzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3Bvd2VyL3N1c3BlbmQtYmxvY2tl cnMudHh0CkBAIC05Myw2ICs5MywxNiBAQCBpZiAobGlzdF9lbXB0eSgmc3RhdGUtPnBlbmRpbmdf d29yaykpCiBlbHNlCiAJc3VzcGVuZF9ibG9jaygmc3RhdGUtPnN1c3BlbmRfYmxvY2tlcik7CiAK K0EgZHJpdmVyIGNhbiBhbHNvIGNhbGwgc3VzcGVuZF9ibG9ja190aW1lb3V0IHRvIHJlbGVhc2Ug dGhlIHN1c3BlbmRfYmxvY2tlcgorYWZ0ZXIgYSBkZWxheToKKwlzdXNwZW5kX2Jsb2NrX3RpbWVv dXQoJnN0YXRlLT5zdXNwZW5kX2Jsb2NrZXIsIEhaKTsKKworVGhpcyB3b3JrcyB3aGV0aGVyIHRo ZSBzdXNwZW5kX2Jsb2NrZXIgaXMgYWxyZWFkeSBhY3RpdmUgb3Igbm90LiBJdCBpcyB1c2VmdWwg aWYKK3RoZSBkcml2ZXIgd29rZSB1cCBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtIHRoYXQgZG8g bm90IHVzZSBzdXNwZW5kX2Jsb2NrZXJzCitidXQgc3RpbGwgbmVlZCB0byBydW4uIEF2b2lkIHRo aXMgd2hlbiBwb3NzaWJsZSwgc2luY2UgaXQgd2lsbCB3YXN0ZSBwb3dlcgoraWYgdGhlIHRpbWVv dXQgaXMgbG9uZyBvciBtYXkgZmFpbCB0byBmaW5pc2ggbmVlZGVkIHdvcmsgaWYgdGhlIHRpbWVv dXQgaXMKK3Nob3J0LiBDYWxsaW5nIHN1c3BlbmRfYmxvY2sgb3Igc3VzcGVuZF91bmJsb2NrIHdp bGwgY2FuY2VsIHRoZSB0aW1lb3V0LgorCiBVc2VyLXNwYWNlIEFQSQogPT09PT09PT09PT09PT0K IApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zdXNwZW5kX2Jsb2NrZXIuaCBiL2luY2x1ZGUv bGludXgvc3VzcGVuZF9ibG9ja2VyLmgKaW5kZXggM2JiOGE2YS4uZTNhZTEzNiAxMDA3NTUKLS0t IGEvaW5jbHVkZS9saW51eC9zdXNwZW5kX2Jsb2NrZXIuaAorKysgYi9pbmNsdWRlL2xpbnV4L3N1 c3BlbmRfYmxvY2tlci5oCkBAIC0yMiw4ICsyMiw5IEBACiAvKioKICAqIHN0cnVjdCBzdXNwZW5k X2Jsb2NrZXIgLSB0aGUgYmFzaWMgc3VzcGVuZF9ibG9ja2VyIHN0cnVjdHVyZQogICogQGxpbms6 CUxpc3QgZW50cnkgZm9yIGFjdGl2ZSBvciBpbmFjdGl2ZSBsaXN0LgotICogQGZsYWdzOglUcmFj a3MgaW5pdGlhbGl6ZWQsIGFjdGl2ZSBhbmQgc3RhdHMgc3RhdGUuCisgKiBAZmxhZ3M6CVRyYWNr cyBpbml0aWFsaXplZCwgYWN0aXZlLCBzdGF0cyBhbmQgYXV0b2V4cGlyZSBzdGF0ZS4KICAqIEBu YW1lOglOYW1lIHVzZWQgZm9yIGRlYnVnZ2luZy4KKyAqIEBleHBpcmVzOglUaW1lLCBpbiBqaWZm aWVzLCB0byB1bmJsb2NrIHN1c3BlbmQuCiAgKiBAY291bnQ6CU51bWJlciBvZiB0aW1lcyB0aGlz IGJsb2NrZXIgaGFzIGJlZW4gZGVhY2l2YXRlZAogICogQHdha2V1cF9jb3VudDogTnVtYmVyIG9m IHRpbWVzIHRoaXMgYmxvY2tlciB3YXMgdGhlIGZpcnN0IHRvIGJsb2NrIHN1c3BlbmQKICAqCQlh ZnRlciByZXN1bWUuCkBAIC00NCw5ICs0NSwxMSBAQCBzdHJ1Y3Qgc3VzcGVuZF9ibG9ja2VyIHsK IAlzdHJ1Y3QgbGlzdF9oZWFkICAgIGxpbms7CiAJaW50ICAgICAgICAgICAgICAgICBmbGFnczsK IAljb25zdCBjaGFyICAgICAgICAgKm5hbWU7CisJdW5zaWduZWQgbG9uZyAgICAgICBleHBpcmVz OwogI2lmZGVmIENPTkZJR19TVVNQRU5EX0JMT0NLRVJfU1RBVFMKIAlzdHJ1Y3QgewogCQlpbnQg ICAgICAgICAgICAgY291bnQ7CisJCWludCAgICAgICAgICAgICBleHBpcmVfY291bnQ7CiAJCWlu dCAgICAgICAgICAgICB3YWtldXBfY291bnQ7CiAJCWt0aW1lX3QgICAgICAgICB0b3RhbF90aW1l OwogCQlrdGltZV90ICAgICAgICAgcHJldmVudF9zdXNwZW5kX3RpbWU7CkBAIC02Miw2ICs2NSw3 IEBAIHN0cnVjdCBzdXNwZW5kX2Jsb2NrZXIgewogdm9pZCBzdXNwZW5kX2Jsb2NrZXJfaW5pdChz dHJ1Y3Qgc3VzcGVuZF9ibG9ja2VyICpibG9ja2VyLCBjb25zdCBjaGFyICpuYW1lKTsKIHZvaWQg c3VzcGVuZF9ibG9ja2VyX2Rlc3Ryb3koc3RydWN0IHN1c3BlbmRfYmxvY2tlciAqYmxvY2tlcik7 CiB2b2lkIHN1c3BlbmRfYmxvY2soc3RydWN0IHN1c3BlbmRfYmxvY2tlciAqYmxvY2tlcik7Cit2 b2lkIHN1c3BlbmRfYmxvY2tfdGltZW91dChzdHJ1Y3Qgc3VzcGVuZF9ibG9ja2VyICpibG9ja2Vy LCBsb25nIHRpbWVvdXQpOwogdm9pZCBzdXNwZW5kX3VuYmxvY2soc3RydWN0IHN1c3BlbmRfYmxv Y2tlciAqYmxvY2tlcik7CiBib29sIHN1c3BlbmRfYmxvY2tlcl9pc19hY3RpdmUoc3RydWN0IHN1 c3BlbmRfYmxvY2tlciAqYmxvY2tlcik7CiBib29sIHN1c3BlbmRfaXNfYmxvY2tlZCh2b2lkKTsK QEAgLTcyLDYgKzc2LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHN1c3BlbmRfYmxvY2tlcl9pbml0 KHN0cnVjdCBzdXNwZW5kX2Jsb2NrZXIgKmJsb2NrZXIsCiAJCQkJCWNvbnN0IGNoYXIgKm5hbWUp IHt9CiBzdGF0aWMgaW5saW5lIHZvaWQgc3VzcGVuZF9ibG9ja2VyX2Rlc3Ryb3koc3RydWN0IHN1 c3BlbmRfYmxvY2tlciAqYmxvY2tlcikge30KIHN0YXRpYyBpbmxpbmUgdm9pZCBzdXNwZW5kX2Js b2NrKHN0cnVjdCBzdXNwZW5kX2Jsb2NrZXIgKmJsb2NrZXIpIHt9CitzdGF0aWMgaW5saW5lIHZv aWQgc3VzcGVuZF9ibG9ja190aW1lb3V0KHN0cnVjdCBzdXNwZW5kX2Jsb2NrZXIgKmJsLCBsb25n IHQpIHt9CiBzdGF0aWMgaW5saW5lIHZvaWQgc3VzcGVuZF91bmJsb2NrKHN0cnVjdCBzdXNwZW5k X2Jsb2NrZXIgKmJsb2NrZXIpIHt9CiBzdGF0aWMgaW5saW5lIGJvb2wgc3VzcGVuZF9ibG9ja2Vy X2lzX2FjdGl2ZShzdHJ1Y3Qgc3VzcGVuZF9ibG9ja2VyICpibCkKIAkJCQkJCQkJeyByZXR1cm4g MDsgfQpkaWZmIC0tZ2l0IGEva2VybmVsL3Bvd2VyL3N1c3BlbmRfYmxvY2tlci5jIGIva2VybmVs L3Bvd2VyL3N1c3BlbmRfYmxvY2tlci5jCmluZGV4IGFiNGQ4ZDUuLmZiZTQ5MDMgMTAwNjQ0Ci0t LSBhL2tlcm5lbC9wb3dlci9zdXNwZW5kX2Jsb2NrZXIuYworKysgYi9rZXJuZWwvcG93ZXIvc3Vz cGVuZF9ibG9ja2VyLmMKQEAgLTI3LDEzICsyNywxNSBAQCBlbnVtIHsKIAlERUJVR19VU0VSX1NU QVRFID0gMVUgPDwgMiwKIAlERUJVR19TVVNQRU5EID0gMVUgPDwgMywKIAlERUJVR19TVVNQRU5E X0JMT0NLRVIgPSAxVSA8PCA0LAorCURFQlVHX0VYUElSRSA9IDFVIDw8IDUsCiB9Owogc3RhdGlj IGludCBkZWJ1Z19tYXNrID0gREVCVUdfRVhJVF9TVVNQRU5EIHwgREVCVUdfV0FLRVVQIHwgREVC VUdfVVNFUl9TVEFURTsKIG1vZHVsZV9wYXJhbV9uYW1lZChkZWJ1Z19tYXNrLCBkZWJ1Z19tYXNr LCBpbnQsIFNfSVJVR08gfCBTX0lXVVNSIHwgU19JV0dSUCk7CiAKICNkZWZpbmUgU0JfSU5JVElB TElaRUQgICAgICAgICAgICAoMVUgPDwgOCkKICNkZWZpbmUgU0JfQUNUSVZFICAgICAgICAgICAg ICAgICAoMVUgPDwgOSkKLSNkZWZpbmUgU0JfUFJFVkVOVElOR19TVVNQRU5EICAgICAoMVUgPDwg MTApCisjZGVmaW5lIFNCX0FVVE9fRVhQSVJFICAgICAgICAgICAgKDFVIDw8IDEwKQorI2RlZmlu ZSBTQl9QUkVWRU5USU5HX1NVU1BFTkQgICAgICgxVSA8PCAxMSkKIAogc3RhdGljIERFRklORV9T UElOTE9DSyhsaXN0X2xvY2spOwogc3RhdGljIERFRklORV9TUElOTE9DSyhzdGF0ZV9sb2NrKTsK QEAgLTY0LDIwICs2Niw1MyBAQCBzdGF0aWMgc3RydWN0IHN1c3BlbmRfYmxvY2tlciBkZWxldGVk X3N1c3BlbmRfYmxvY2tlcnM7CiBzdGF0aWMga3RpbWVfdCBsYXN0X3NsZWVwX3RpbWVfdXBkYXRl Owogc3RhdGljIGJvb2wgd2FpdF9mb3Jfd2FrZXVwOwogCitzdGF0aWMgYm9vbCBzdGF0c19nZXRf ZXhwaXJlZF90aW1lKHN0cnVjdCBzdXNwZW5kX2Jsb2NrZXIgKmJsb2NrZXIsCisJCQkJICAga3Rp bWVfdCAqZXhwaXJlX3RpbWUpCit7CisJc3RydWN0IHRpbWVzcGVjIHRzOworCXN0cnVjdCB0aW1l c3BlYyBrdDsKKwlzdHJ1Y3QgdGltZXNwZWMgdG9tb25vOworCXN0cnVjdCB0aW1lc3BlYyBkZWx0 YTsKKwl1bnNpZ25lZCBsb25nIHNlcTsKKwlsb25nIHRpbWVvdXQ7CisKKwlpZiAoIShibG9ja2Vy LT5mbGFncyAmIFNCX0FVVE9fRVhQSVJFKSkKKwkJcmV0dXJuIGZhbHNlOworCWRvIHsKKwkJc2Vx ID0gcmVhZF9zZXFiZWdpbigmeHRpbWVfbG9jayk7CisJCXRpbWVvdXQgPSBibG9ja2VyLT5leHBp cmVzIC0gamlmZmllczsKKwkJaWYgKHRpbWVvdXQgPiAwKQorCQkJcmV0dXJuIGZhbHNlOworCQlr dCA9IGN1cnJlbnRfa2VybmVsX3RpbWUoKTsKKwkJdG9tb25vID0gd2FsbF90b19tb25vdG9uaWM7 CisJfSB3aGlsZSAocmVhZF9zZXFyZXRyeSgmeHRpbWVfbG9jaywgc2VxKSk7CisJamlmZmllc190 b190aW1lc3BlYygtdGltZW91dCwgJmRlbHRhKTsKKwlzZXRfbm9ybWFsaXplZF90aW1lc3BlYygm dHMsIGt0LnR2X3NlYyArIHRvbW9uby50dl9zZWMgLSBkZWx0YS50dl9zZWMsCisJCQkJa3QudHZf bnNlYyArIHRvbW9uby50dl9uc2VjIC0gZGVsdGEudHZfbnNlYyk7CisJKmV4cGlyZV90aW1lID0g dGltZXNwZWNfdG9fa3RpbWUodHMpOworCXJldHVybiB0cnVlOworfQorCiBzdGF0aWMgaW50IHBy aW50X2Jsb2NrZXJfc3RhdChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sCiAJCQkgICAgICBzdHJ1Y3Qgc3Vz cGVuZF9ibG9ja2VyICpibG9ja2VyKQogewogCWludCBsb2NrX2NvdW50ID0gYmxvY2tlci0+c3Rh dC5jb3VudDsKKwlpbnQgZXhwaXJlX2NvdW50ID0gYmxvY2tlci0+c3RhdC5leHBpcmVfY291bnQ7 CiAJa3RpbWVfdCBhY3RpdmVfdGltZSA9IGt0aW1lX3NldCgwLCAwKTsKIAlrdGltZV90IHRvdGFs X3RpbWUgPSBibG9ja2VyLT5zdGF0LnRvdGFsX3RpbWU7CiAJa3RpbWVfdCBtYXhfdGltZSA9IGJs b2NrZXItPnN0YXQubWF4X3RpbWU7CiAJa3RpbWVfdCBwcmV2ZW50X3N1c3BlbmRfdGltZSA9IGJs b2NrZXItPnN0YXQucHJldmVudF9zdXNwZW5kX3RpbWU7CiAJaWYgKGJsb2NrZXItPmZsYWdzICYg U0JfQUNUSVZFKSB7CiAJCWt0aW1lX3Qgbm93LCBhZGRfdGltZTsKLQkJbm93ID0ga3RpbWVfZ2V0 KCk7CisJCWJvb2wgZXhwaXJlZCA9IHN0YXRzX2dldF9leHBpcmVkX3RpbWUoYmxvY2tlciwgJm5v dyk7CisJCWlmICghZXhwaXJlZCkKKwkJCW5vdyA9IGt0aW1lX2dldCgpOwogCQlhZGRfdGltZSA9 IGt0aW1lX3N1Yihub3csIGJsb2NrZXItPnN0YXQubGFzdF90aW1lKTsKIAkJbG9ja19jb3VudCsr OwotCQlhY3RpdmVfdGltZSA9IGFkZF90aW1lOworCQlpZiAoIWV4cGlyZWQpCisJCQlhY3RpdmVf dGltZSA9IGFkZF90aW1lOworCQllbHNlCisJCQlleHBpcmVfY291bnQrKzsKIAkJdG90YWxfdGlt ZSA9IGt0aW1lX2FkZCh0b3RhbF90aW1lLCBhZGRfdGltZSk7CiAJCWlmIChibG9ja2VyLT5mbGFn cyAmIFNCX1BSRVZFTlRJTkdfU1VTUEVORCkKIAkJCXByZXZlbnRfc3VzcGVuZF90aW1lID0ga3Rp bWVfYWRkKHByZXZlbnRfc3VzcGVuZF90aW1lLApAQCAtODYsOSArMTIxLDEwIEBAIHN0YXRpYyBp bnQgcHJpbnRfYmxvY2tlcl9zdGF0KHN0cnVjdCBzZXFfZmlsZSAqbSwKIAkJCW1heF90aW1lID0g YWRkX3RpbWU7CiAJfQogCi0JcmV0dXJuIHNlcV9wcmludGYobSwgIlwiJXNcIlx0JWRcdCVkXHQl bGxkXHQlbGxkXHQlbGxkXHQlbGxkXHQlbGxkXG4iLAotCQkgICAgICAgYmxvY2tlci0+bmFtZSwg bG9ja19jb3VudCwgYmxvY2tlci0+c3RhdC53YWtldXBfY291bnQsCi0JCSAgICAgICBrdGltZV90 b19ucyhhY3RpdmVfdGltZSksIGt0aW1lX3RvX25zKHRvdGFsX3RpbWUpLAorCXJldHVybiBzZXFf cHJpbnRmKG0sICJcIiVzXCJcdCVkXHQlZFx0JWRcdCVsbGRcdCVsbGRcdCVsbGRcdCVsbGRcdCIK KwkJICAgICAgICIlbGxkXG4iLCBibG9ja2VyLT5uYW1lLCBsb2NrX2NvdW50LCBleHBpcmVfY291 bnQsCisJCSAgICAgICBibG9ja2VyLT5zdGF0Lndha2V1cF9jb3VudCwga3RpbWVfdG9fbnMoYWN0 aXZlX3RpbWUpLAorCQkgICAgICAga3RpbWVfdG9fbnModG90YWxfdGltZSksCiAJCSAgICAgICBr dGltZV90b19ucyhwcmV2ZW50X3N1c3BlbmRfdGltZSksIGt0aW1lX3RvX25zKG1heF90aW1lKSwK IAkJICAgICAgIGt0aW1lX3RvX25zKGJsb2NrZXItPnN0YXQubGFzdF90aW1lKSk7CiB9CkBAIC05 OSw3ICsxMzUsNyBAQCBzdGF0aWMgaW50IHN1c3BlbmRfYmxvY2tlcl9zdGF0c19zaG93KHN0cnVj dCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7CiAJ c3RydWN0IHN1c3BlbmRfYmxvY2tlciAqYmxvY2tlcjsKIAotCXNlcV9wdXRzKG0sICJuYW1lXHRj b3VudFx0d2FrZV9jb3VudFx0YWN0aXZlX3NpbmNlIgorCXNlcV9wdXRzKG0sICJuYW1lXHRjb3Vu dFx0ZXhwaXJlX2NvdW50XHR3YWtlX2NvdW50XHRhY3RpdmVfc2luY2UiCiAJCSAiXHR0b3RhbF90 aW1lXHRzbGVlcF90aW1lXHRtYXhfdGltZVx0bGFzdF9jaGFuZ2VcbiIpOwogCXNwaW5fbG9ja19p cnFzYXZlKCZsaXN0X2xvY2ssIGlycWZsYWdzKTsKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGJsb2Nr ZXIsICZpbmFjdGl2ZV9ibG9ja2VycywgbGluaykKQEAgLTExMyw2ICsxNDksNyBAQCBzdGF0aWMg aW50IHN1c3BlbmRfYmxvY2tlcl9zdGF0c19zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAq dW51c2VkKQogc3RhdGljIHZvaWQgc3VzcGVuZF9ibG9ja2VyX3N0YXRfaW5pdF9sb2NrZWQoc3Ry dWN0IHN1c3BlbmRfYmxvY2tlciAqYmxvY2tlcikKIHsKIAlibG9ja2VyLT5zdGF0LmNvdW50ID0g MDsKKwlibG9ja2VyLT5zdGF0LmV4cGlyZV9jb3VudCA9IDA7CiAJYmxvY2tlci0+c3RhdC53YWtl dXBfY291bnQgPSAwOwogCWJsb2NrZXItPnN0YXQudG90YWxfdGltZSA9IGt0aW1lX3NldCgwLCAw KTsKIAlibG9ja2VyLT5zdGF0LnByZXZlbnRfc3VzcGVuZF90aW1lID0ga3RpbWVfc2V0KDAsIDAp OwpAQCAtMTI1LDYgKzE2Miw3IEBAIHN0YXRpYyB2b2lkIHN1c3BlbmRfYmxvY2tlcl9zdGF0X2Rl c3Ryb3lfbG9ja2VkKHN0cnVjdCBzdXNwZW5kX2Jsb2NrZXIgKmJsKQogCWlmICghYmwtPnN0YXQu Y291bnQpCiAJCXJldHVybjsKIAlkZWxldGVkX3N1c3BlbmRfYmxvY2tlcnMuc3RhdC5jb3VudCAr PSBibC0+c3RhdC5jb3VudDsKKwlkZWxldGVkX3N1c3BlbmRfYmxvY2tlcnMuc3RhdC5leHBpcmVf Y291bnQgKz0gYmwtPnN0YXQuZXhwaXJlX2NvdW50OwogCWRlbGV0ZWRfc3VzcGVuZF9ibG9ja2Vy cy5zdGF0LnRvdGFsX3RpbWUgPSBrdGltZV9hZGQoCiAJCWRlbGV0ZWRfc3VzcGVuZF9ibG9ja2Vy cy5zdGF0LnRvdGFsX3RpbWUsIGJsLT5zdGF0LnRvdGFsX3RpbWUpOwogCWRlbGV0ZWRfc3VzcGVu ZF9ibG9ja2Vycy5zdGF0LnByZXZlbnRfc3VzcGVuZF90aW1lID0ga3RpbWVfYWRkKApAQCAtMTM0 LDE0ICsxNzIsMjAgQEAgc3RhdGljIHZvaWQgc3VzcGVuZF9ibG9ja2VyX3N0YXRfZGVzdHJveV9s b2NrZWQoc3RydWN0IHN1c3BlbmRfYmxvY2tlciAqYmwpCiAJCWRlbGV0ZWRfc3VzcGVuZF9ibG9j a2Vycy5zdGF0Lm1heF90aW1lLCBibC0+c3RhdC5tYXhfdGltZSk7CiB9CiAKLXN0YXRpYyB2b2lk IHN1c3BlbmRfdW5ibG9ja19zdGF0X2xvY2tlZChzdHJ1Y3Qgc3VzcGVuZF9ibG9ja2VyICpibG9j a2VyKQorc3RhdGljIHZvaWQgc3VzcGVuZF91bmJsb2NrX3N0YXRfbG9ja2VkKHN0cnVjdCBzdXNw ZW5kX2Jsb2NrZXIgKmJsb2NrZXIsCisJCQkJCWJvb2wgZXhwaXJlZCkKIHsKIAlrdGltZV90IGR1 cmF0aW9uOwogCWt0aW1lX3Qgbm93OwogCWlmICghKGJsb2NrZXItPmZsYWdzICYgU0JfQUNUSVZF KSkKIAkJcmV0dXJuOwotCW5vdyA9IGt0aW1lX2dldCgpOworCWlmIChzdGF0c19nZXRfZXhwaXJl ZF90aW1lKGJsb2NrZXIsICZub3cpKQorCQlleHBpcmVkID0gdHJ1ZTsKKwllbHNlCisJCW5vdyA9 IGt0aW1lX2dldCgpOwogCWJsb2NrZXItPnN0YXQuY291bnQrKzsKKwlpZiAoZXhwaXJlZCkKKwkJ YmxvY2tlci0+c3RhdC5leHBpcmVfY291bnQrKzsKIAlkdXJhdGlvbiA9IGt0aW1lX3N1Yihub3cs IGJsb2NrZXItPnN0YXQubGFzdF90aW1lKTsKIAlibG9ja2VyLT5zdGF0LnRvdGFsX3RpbWUgPQog CQlrdGltZV9hZGQoYmxvY2tlci0+c3RhdC50b3RhbF90aW1lLCBkdXJhdGlvbik7CkBAIC0xNjQs NiArMjA4LDEyIEBAIHN0YXRpYyB2b2lkIHN1c3BlbmRfYmxvY2tfc3RhdF9sb2NrZWQoc3RydWN0 IHN1c3BlbmRfYmxvY2tlciAqYmxvY2tlcikKIAkJd2FpdF9mb3Jfd2FrZXVwID0gZmFsc2U7CiAJ CWJsb2NrZXItPnN0YXQud2FrZXVwX2NvdW50Kys7CiAJfQorCWlmICgoYmxvY2tlci0+ZmxhZ3Mg JiBTQl9BVVRPX0VYUElSRSkgJiYKKwkgICAgdGltZV9pc19iZWZvcmVfZXFfamlmZmllcyhibG9j a2VyLT5leHBpcmVzKSkgeworCQlzdXNwZW5kX3VuYmxvY2tfc3RhdF9sb2NrZWQoYmxvY2tlciwg ZmFsc2UpOworCQlibG9ja2VyLT5zdGF0Lmxhc3RfdGltZSA9IGt0aW1lX2dldCgpOworCX0KKwog CWlmICghKGJsb2NrZXItPmZsYWdzICYgU0JfQUNUSVZFKSkKIAkJYmxvY2tlci0+c3RhdC5sYXN0 X3RpbWUgPSBrdGltZV9nZXQoKTsKIH0KQEAgLTE3MSwxNyArMjIxLDIyIEBAIHN0YXRpYyB2b2lk IHN1c3BlbmRfYmxvY2tfc3RhdF9sb2NrZWQoc3RydWN0IHN1c3BlbmRfYmxvY2tlciAqYmxvY2tl cikKIHN0YXRpYyB2b2lkIHVwZGF0ZV9zbGVlcF93YWl0X3N0YXRzX2xvY2tlZChib29sIGRvbmUp CiB7CiAJc3RydWN0IHN1c3BlbmRfYmxvY2tlciAqYmxvY2tlcjsKLQlrdGltZV90IG5vdywgZWxh cHNlZCwgYWRkOworCWt0aW1lX3Qgbm93LCBldGltZSwgZWxhcHNlZCwgYWRkOworCWJvb2wgZXhw aXJlZDsKIAogCW5vdyA9IGt0aW1lX2dldCgpOwogCWVsYXBzZWQgPSBrdGltZV9zdWIobm93LCBs YXN0X3NsZWVwX3RpbWVfdXBkYXRlKTsKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGJsb2NrZXIsICZh Y3RpdmVfYmxvY2tlcnMsIGxpbmspIHsKKwkJZXhwaXJlZCA9IHN0YXRzX2dldF9leHBpcmVkX3Rp bWUoYmxvY2tlciwgJmV0aW1lKTsKIAkJaWYgKGJsb2NrZXItPmZsYWdzICYgU0JfUFJFVkVOVElO R19TVVNQRU5EKSB7Ci0JCQlhZGQgPSBlbGFwc2VkOworCQkJaWYgKGV4cGlyZWQpCisJCQkJYWRk ID0ga3RpbWVfc3ViKGV0aW1lLCBsYXN0X3NsZWVwX3RpbWVfdXBkYXRlKTsKKwkJCWVsc2UKKwkJ CQlhZGQgPSBlbGFwc2VkOwogCQkJYmxvY2tlci0+c3RhdC5wcmV2ZW50X3N1c3BlbmRfdGltZSA9 IGt0aW1lX2FkZCgKIAkJCQlibG9ja2VyLT5zdGF0LnByZXZlbnRfc3VzcGVuZF90aW1lLCBhZGQp OwogCQl9Ci0JCWlmIChkb25lKQorCQlpZiAoZG9uZSB8fCBleHBpcmVkKQogCQkJYmxvY2tlci0+ ZmxhZ3MgJj0gflNCX1BSRVZFTlRJTkdfU1VTUEVORDsKIAkJZWxzZQogCQkJYmxvY2tlci0+Zmxh Z3MgfD0gU0JfUFJFVkVOVElOR19TVVNQRU5EOwpAQCAtMTk3LDggKzI1Miw4IEBAIHN0YXRpYyBp bmxpbmUgdm9pZCBzdXNwZW5kX2Jsb2NrZXJfc3RhdF9kZXN0cm95X2xvY2tlZCgKIAkJCQkJc3Ry dWN0IHN1c3BlbmRfYmxvY2tlciAqYmxvY2tlcikge30KIHN0YXRpYyBpbmxpbmUgdm9pZCBzdXNw ZW5kX2Jsb2NrX3N0YXRfbG9ja2VkKAogCQkJCQlzdHJ1Y3Qgc3VzcGVuZF9ibG9ja2VyICpibG9j a2VyKSB7fQotc3RhdGljIGlubGluZSB2b2lkIHN1c3BlbmRfdW5ibG9ja19zdGF0X2xvY2tlZCgK LQkJCQkJc3RydWN0IHN1c3BlbmRfYmxvY2tlciAqYmxvY2tlcikge30KK3N0YXRpYyBpbmxpbmUg dm9pZCBzdXNwZW5kX3VuYmxvY2tfc3RhdF9sb2NrZWQoc3RydWN0IHN1c3BlbmRfYmxvY2tlciAq YmxvY2tlciwKKwkJCQkJICAgYm9vbCBleHBpcmVkKSB7fQogc3RhdGljIGlubGluZSB2b2lkIHVw ZGF0ZV9zbGVlcF93YWl0X3N0YXRzX2xvY2tlZChib29sIGRvbmUpIHt9CiAKIHN0YXRpYyBpbnQg c3VzcGVuZF9ibG9ja2VyX3N0YXRzX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVz ZWQpCkBAIC0yMTgsMTIgKzI3Myw1MCBAQCBzdGF0aWMgaW50IHN1c3BlbmRfYmxvY2tlcl9zdGF0 c19zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogCiAjZW5kaWYKIAorc3Rh dGljIHZvaWQgZXhwaXJlX3N1c3BlbmRfYmxvY2tlcihzdHJ1Y3Qgc3VzcGVuZF9ibG9ja2VyICpi bG9ja2VyKQoreworCXN1c3BlbmRfdW5ibG9ja19zdGF0X2xvY2tlZChibG9ja2VyLCB0cnVlKTsK KwlibG9ja2VyLT5mbGFncyAmPSB+KFNCX0FDVElWRSB8IFNCX0FVVE9fRVhQSVJFKTsKKwlsaXN0 X2RlbCgmYmxvY2tlci0+bGluayk7CisJbGlzdF9hZGQoJmJsb2NrZXItPmxpbmssICZpbmFjdGl2 ZV9ibG9ja2Vycyk7CisJaWYgKGRlYnVnX21hc2sgJiAoREVCVUdfU1VTUEVORF9CTE9DS0VSIHwg REVCVUdfRVhQSVJFKSkKKwkJcHJfaW5mbygiZXhwaXJlZCBzdXNwZW5kIGJsb2NrZXIgJXNcbiIs IGJsb2NrZXItPm5hbWUpOworfQorCiBzdGF0aWMgdm9pZCBwcmludF9hY3RpdmVfYmxvY2tlcnNf bG9ja2VkKHZvaWQpCiB7CiAJc3RydWN0IHN1c3BlbmRfYmxvY2tlciAqYmxvY2tlcjsKIAotCWxp c3RfZm9yX2VhY2hfZW50cnkoYmxvY2tlciwgJmFjdGl2ZV9ibG9ja2VycywgbGluaykKLQkJcHJf aW5mbygiYWN0aXZlIHN1c3BlbmQgYmxvY2tlciAlc1xuIiwgYmxvY2tlci0+bmFtZSk7CisJbGlz dF9mb3JfZWFjaF9lbnRyeShibG9ja2VyLCAmYWN0aXZlX2Jsb2NrZXJzLCBsaW5rKSB7CisJCWlm IChibG9ja2VyLT5mbGFncyAmIFNCX0FVVE9fRVhQSVJFKSB7CisJCQlsb25nIHRpbWVvdXQgPSBi bG9ja2VyLT5leHBpcmVzIC0gamlmZmllczsKKwkJCWlmICh0aW1lb3V0IDw9IDApCisJCQkJcHJf aW5mbygic3VzcGVuZCBibG9ja2VyICVzLCBleHBpcmVkXG4iLAorCQkJCQlibG9ja2VyLT5uYW1l KTsKKwkJCWVsc2UKKwkJCQlwcl9pbmZvKCJhY3RpdmUgc3VzcGVuZCBibG9ja2VyICVzLCB0aW1l IGxlZnQgIgorCQkJCQkiJWxkXG4iLCBibG9ja2VyLT5uYW1lLCB0aW1lb3V0KTsKKwkJfSBlbHNl CisJCQlwcl9pbmZvKCJhY3RpdmUgc3VzcGVuZCBibG9ja2VyICVzXG4iLCBibG9ja2VyLT5uYW1l KTsKKwl9Cit9CisKK3N0YXRpYyBsb25nIG1heF9zdXNwZW5kX2Jsb2NrZXJfdGltZW91dF9sb2Nr ZWQodm9pZCkKK3sKKwlzdHJ1Y3Qgc3VzcGVuZF9ibG9ja2VyICpibG9ja2VyLCAqbjsKKwlsb25n IG1heF90aW1lb3V0ID0gMDsKKworCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShibG9ja2VyLCBu LCAmYWN0aXZlX2Jsb2NrZXJzLCBsaW5rKSB7CisJCWlmIChibG9ja2VyLT5mbGFncyAmIFNCX0FV VE9fRVhQSVJFKSB7CisJCQlsb25nIHRpbWVvdXQgPSBibG9ja2VyLT5leHBpcmVzIC0gamlmZmll czsKKwkJCWlmICh0aW1lb3V0IDw9IDApCisJCQkJZXhwaXJlX3N1c3BlbmRfYmxvY2tlcihibG9j a2VyKTsKKwkJCWVsc2UgaWYgKHRpbWVvdXQgPiBtYXhfdGltZW91dCkKKwkJCQltYXhfdGltZW91 dCA9IHRpbWVvdXQ7CisJCX0gZWxzZQorCQkJcmV0dXJuIC0xOworCX0KKwlyZXR1cm4gbWF4X3Rp bWVvdXQ7CiB9CiAKIC8qKgpAQCAtMjM3LDkgKzMzMCwxNCBAQCBzdGF0aWMgdm9pZCBwcmludF9h Y3RpdmVfYmxvY2tlcnNfbG9ja2VkKHZvaWQpCiAgKi8KIGJvb2wgc3VzcGVuZF9pc19ibG9ja2Vk KHZvaWQpCiB7CisJbG9uZyByZXQ7CisJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKIAlpZiAoIWVu YWJsZV9zdXNwZW5kX2Jsb2NrZXJzKQogCQlyZXR1cm4gMDsKLQlyZXR1cm4gIWxpc3RfZW1wdHko JmFjdGl2ZV9ibG9ja2Vycyk7CisJc3Bpbl9sb2NrX2lycXNhdmUoJmxpc3RfbG9jaywgaXJxZmxh Z3MpOworCXJldCA9ICEhbWF4X3N1c3BlbmRfYmxvY2tlcl90aW1lb3V0X2xvY2tlZCgpOworCXNw aW5fdW5sb2NrX2lycXJlc3RvcmUoJmxpc3RfbG9jaywgaXJxZmxhZ3MpOworCXJldHVybiByZXQ7 CiB9CiAKIHN0YXRpYyB2b2lkIHN1c3BlbmRfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29y aykKQEAgLTI2NCwxNCArMzYyLDQ5IEBAIHN0YXRpYyB2b2lkIHN1c3BlbmRfd29ya2VyKHN0cnVj dCB3b3JrX3N0cnVjdCAqd29yaykKIAlpZiAoY3VycmVudF9ldmVudF9udW0gPT0gZW50cnlfZXZl bnRfbnVtKSB7CiAJCWlmIChkZWJ1Z19tYXNrICYgREVCVUdfU1VTUEVORCkKIAkJCXByX2luZm8o InN1c3BlbmQ6IHBtX3N1c3BlbmQgcmV0dXJuZWQgd2l0aCBubyBldmVudFxuIik7Ci0JCXN1c3Bl bmRfYmxvY2soJnVua25vd25fd2FrZXVwKTsKLQkJc3VzcGVuZF91bmJsb2NrKCZ1bmtub3duX3dh a2V1cCk7CisJCXN1c3BlbmRfYmxvY2tfdGltZW91dCgmdW5rbm93bl93YWtldXAsIEhaIC8gMik7 CiAJfQogYWJvcnQ6CiAJZW5hYmxlX3N1c3BlbmRfYmxvY2tlcnMgPSBmYWxzZTsKIH0KIHN0YXRp YyBERUNMQVJFX1dPUksoc3VzcGVuZF93b3JrLCBzdXNwZW5kX3dvcmtlcik7CiAKK3N0YXRpYyB2 b2lkIGV4cGlyZV9zdXNwZW5kX2Jsb2NrZXJzKHVuc2lnbmVkIGxvbmcgZGF0YSkKK3sKKwlsb25n IHRpbWVvdXQ7CisJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKKwlpZiAoZGVidWdfbWFzayAmIERF QlVHX0VYUElSRSkKKwkJcHJfaW5mbygiZXhwaXJlX3N1c3BlbmRfYmxvY2tlcnM6IHN0YXJ0XG4i KTsKKwlzcGluX2xvY2tfaXJxc2F2ZSgmbGlzdF9sb2NrLCBpcnFmbGFncyk7CisJaWYgKGRlYnVn X21hc2sgJiBERUJVR19TVVNQRU5EKQorCQlwcmludF9hY3RpdmVfYmxvY2tlcnNfbG9ja2VkKCk7 CisJdGltZW91dCA9IG1heF9zdXNwZW5kX2Jsb2NrZXJfdGltZW91dF9sb2NrZWQoKTsKKwlpZiAo ZGVidWdfbWFzayAmIERFQlVHX0VYUElSRSkKKwkJcHJfaW5mbygiZXhwaXJlX3N1c3BlbmRfYmxv Y2tlcnM6IGRvbmUsIHRpbWVvdXQgJWxkXG4iLAorCQkJdGltZW91dCk7CisJaWYgKHRpbWVvdXQg PT0gMCkKKwkJcXVldWVfd29yayhzdXNwZW5kX3dvcmtfcXVldWUsICZzdXNwZW5kX3dvcmspOwor CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmxpc3RfbG9jaywgaXJxZmxhZ3MpOworfQorc3RhdGlj IERFRklORV9USU1FUihleHBpcmVfdGltZXIsIGV4cGlyZV9zdXNwZW5kX2Jsb2NrZXJzLCAwLCAw KTsKKworc3RhdGljIHZvaWQgdXBkYXRlX3N1c3BlbmQoc3RydWN0IHN1c3BlbmRfYmxvY2tlciAq YmxvY2tlciwgbG9uZyBtYXhfdGltZW91dCkKK3sKKwlpZiAobWF4X3RpbWVvdXQgPiAwKSB7CisJ CWlmIChkZWJ1Z19tYXNrICYgREVCVUdfRVhQSVJFKQorCQkJcHJfaW5mbygic3VzcGVuZF9ibG9j a2VyOiAlcywgc3RhcnQgZXhwaXJlIHRpbWVyLCAiCisJCQkJIiVsZFxuIiwgYmxvY2tlci0+bmFt ZSwgbWF4X3RpbWVvdXQpOworCQltb2RfdGltZXIoJmV4cGlyZV90aW1lciwgamlmZmllcyArIG1h eF90aW1lb3V0KTsKKwl9IGVsc2UgeworCQlpZiAoZGVsX3RpbWVyKCZleHBpcmVfdGltZXIpKQor CQkJaWYgKGRlYnVnX21hc2sgJiBERUJVR19FWFBJUkUpCisJCQkJcHJfaW5mbygic3VzcGVuZF9i bG9ja2VyOiAlcywgc3RvcCBleHBpcmUgIgorCQkJCQkidGltZXJcbiIsIGJsb2NrZXItPm5hbWUp OworCQlpZiAobWF4X3RpbWVvdXQgPT0gMCkKKwkJCXF1ZXVlX3dvcmsoc3VzcGVuZF93b3JrX3F1 ZXVlLCAmc3VzcGVuZF93b3JrKTsKKwl9Cit9CisKIHN0YXRpYyBpbnQgc3VzcGVuZF9ibG9ja19z dXNwZW5kKHN0cnVjdCBzeXNfZGV2aWNlICpkZXYsIHBtX21lc3NhZ2VfdCBzdGF0ZSkKIHsKIAlp bnQgcmV0ID0gc3VzcGVuZF9pc19ibG9ja2VkKCkgPyAtRUFHQUlOIDogMDsKQEAgLTMzNCwxNyAr NDY3LDE0IEBAIHZvaWQgc3VzcGVuZF9ibG9ja2VyX2Rlc3Ryb3koc3RydWN0IHN1c3BlbmRfYmxv Y2tlciAqYmxvY2tlcikKIAlzdXNwZW5kX2Jsb2NrZXJfc3RhdF9kZXN0cm95X2xvY2tlZChibG9j a2VyKTsKIAlibG9ja2VyLT5mbGFncyAmPSB+U0JfSU5JVElBTElaRUQ7CiAJbGlzdF9kZWwoJmJs b2NrZXItPmxpbmspOwotCWlmICgoYmxvY2tlci0+ZmxhZ3MgJiBTQl9BQ1RJVkUpICYmIGxpc3Rf ZW1wdHkoJmFjdGl2ZV9ibG9ja2VycykpCi0JCXF1ZXVlX3dvcmsoc3VzcGVuZF93b3JrX3F1ZXVl LCAmc3VzcGVuZF93b3JrKTsKKwlpZiAoYmxvY2tlci0+ZmxhZ3MgJiBTQl9BQ1RJVkUpCisJCXVw ZGF0ZV9zdXNwZW5kKGJsb2NrZXIsIG1heF9zdXNwZW5kX2Jsb2NrZXJfdGltZW91dF9sb2NrZWQo KSk7CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmbGlzdF9sb2NrLCBpcnFmbGFncyk7CiB9CiBF WFBPUlRfU1lNQk9MKHN1c3BlbmRfYmxvY2tlcl9kZXN0cm95KTsKIAotLyoqCi0gKiBzdXNwZW5k X2Jsb2NrKCkgLSBCbG9jayBzdXNwZW5kCi0gKiBAYmxvY2tlcjoJVGhlIHN1c3BlbmQgYmxvY2tl ciB0byB1c2UKLSAqLwotdm9pZCBzdXNwZW5kX2Jsb2NrKHN0cnVjdCBzdXNwZW5kX2Jsb2NrZXIg KmJsb2NrZXIpCitzdGF0aWMgdm9pZCBfX3N1c3BlbmRfYmxvY2soc3RydWN0IHN1c3BlbmRfYmxv Y2tlciAqYmxvY2tlciwgbG9uZyB0aW1lb3V0LAorCQkJICAgIGJvb2wgaGFzX3RpbWVvdXQpCiB7 CiAJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKIApAQCAtMzU1LDIwICs0ODUsNTYgQEAgdm9pZCBz dXNwZW5kX2Jsb2NrKHN0cnVjdCBzdXNwZW5kX2Jsb2NrZXIgKmJsb2NrZXIpCiAJc3VzcGVuZF9i bG9ja19zdGF0X2xvY2tlZChibG9ja2VyKTsKIAlibG9ja2VyLT5mbGFncyB8PSBTQl9BQ1RJVkU7 CiAJbGlzdF9kZWwoJmJsb2NrZXItPmxpbmspOwotCWlmIChkZWJ1Z19tYXNrICYgREVCVUdfU1VT UEVORF9CTE9DS0VSKQotCQlwcl9pbmZvKCJzdXNwZW5kX2Jsb2NrOiAlc1xuIiwgYmxvY2tlci0+ bmFtZSk7Ci0JbGlzdF9hZGQoJmJsb2NrZXItPmxpbmssICZhY3RpdmVfYmxvY2tlcnMpOworCWlm IChoYXNfdGltZW91dCkgeworCQlpZiAoZGVidWdfbWFzayAmIERFQlVHX1NVU1BFTkRfQkxPQ0tF UikKKwkJCXByX2luZm8oInN1c3BlbmRfYmxvY2s6ICVzLCB0aW1lb3V0ICVsZC4lMDNsdVxuIiwK KwkJCQlibG9ja2VyLT5uYW1lLCB0aW1lb3V0IC8gSFosCisJCQkJKHRpbWVvdXQgJSBIWikgKiBN U0VDX1BFUl9TRUMgLyBIWik7CisJCWJsb2NrZXItPmV4cGlyZXMgPSBqaWZmaWVzICsgdGltZW91 dDsKKwkJYmxvY2tlci0+ZmxhZ3MgfD0gU0JfQVVUT19FWFBJUkU7CisJCWxpc3RfYWRkX3RhaWwo JmJsb2NrZXItPmxpbmssICZhY3RpdmVfYmxvY2tlcnMpOworCX0gZWxzZSB7CisJCWlmIChkZWJ1 Z19tYXNrICYgREVCVUdfU1VTUEVORF9CTE9DS0VSKQorCQkJcHJfaW5mbygic3VzcGVuZF9ibG9j azogJXNcbiIsIGJsb2NrZXItPm5hbWUpOworCQlibG9ja2VyLT5leHBpcmVzID0gTE9OR19NQVg7 CisJCWJsb2NrZXItPmZsYWdzICY9IH5TQl9BVVRPX0VYUElSRTsKKwkJLyogQWRkIHRvIGhlYWQg c28gc3VzcGVuZF9pc19ibG9ja2VkIG9ubHkgaGFzIHRvIGV4YW1pbmUgKi8KKwkJLyogb25lIGVu dHJ5ICovCisJCWxpc3RfYWRkKCZibG9ja2VyLT5saW5rLCAmYWN0aXZlX2Jsb2NrZXJzKTsKKwl9 CiAKIAljdXJyZW50X2V2ZW50X251bSsrOwogCWlmIChibG9ja2VyID09ICZtYWluX3N1c3BlbmRf YmxvY2tlcikKIAkJdXBkYXRlX3NsZWVwX3dhaXRfc3RhdHNfbG9ja2VkKHRydWUpOwogCWVsc2Ug aWYgKCFzdXNwZW5kX2Jsb2NrZXJfaXNfYWN0aXZlKCZtYWluX3N1c3BlbmRfYmxvY2tlcikpCiAJ CXVwZGF0ZV9zbGVlcF93YWl0X3N0YXRzX2xvY2tlZChmYWxzZSk7CisJdXBkYXRlX3N1c3BlbmQo YmxvY2tlciwgaGFzX3RpbWVvdXQgPworCQkJbWF4X3N1c3BlbmRfYmxvY2tlcl90aW1lb3V0X2xv Y2tlZCgpIDogLTEpOwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmxpc3RfbG9jaywgaXJxZmxh Z3MpOwogfQorCisvKioKKyAqIHN1c3BlbmRfYmxvY2soKSAtIEJsb2NrIHN1c3BlbmQKKyAqIEBi bG9ja2VyOglUaGUgc3VzcGVuZCBibG9ja2VyIHRvIHVzZQorICovCit2b2lkIHN1c3BlbmRfYmxv Y2soc3RydWN0IHN1c3BlbmRfYmxvY2tlciAqYmxvY2tlcikKK3sKKwlfX3N1c3BlbmRfYmxvY2so YmxvY2tlciwgMCwgZmFsc2UpOworfQogRVhQT1JUX1NZTUJPTChzdXNwZW5kX2Jsb2NrKTsKIAog LyoqCisgKiBzdXNwZW5kX2Jsb2NrX3RpbWVvdXQoKSAtIEJsb2NrIHN1c3BlbmQgZm9yIGEgbGlt aXRlZCB0aW1lCisgKiBAYmxvY2tlcjoJVGhlIHN1c3BlbmQgYmxvY2tlciB0byB1c2UuCisgKiBA dGltZW91dDoJVGltZW91dCBpbiBqaWZmaWVzIGJlZm9yZSB0aGUgc3VzcGVuZCBibG9ja2VyIGF1 dG8tdW5ibG9jaworICovCit2b2lkIHN1c3BlbmRfYmxvY2tfdGltZW91dChzdHJ1Y3Qgc3VzcGVu ZF9ibG9ja2VyICpibG9ja2VyLCBsb25nIHRpbWVvdXQpCit7CisJX19zdXNwZW5kX2Jsb2NrKGJs b2NrZXIsIHRpbWVvdXQsIHRydWUpOworfQorRVhQT1JUX1NZTUJPTChzdXNwZW5kX2Jsb2NrX3Rp bWVvdXQpOworCisvKioKICAqIHN1c3BlbmRfdW5ibG9jaygpIC0gVW5ibG9jayBzdXNwZW5kCiAg KiBAYmxvY2tlcjoJVGhlIHN1c3BlbmQgYmxvY2tlciB0byB1bmJsb2NrLgogICoKQEAgLTM4Mywx NiArNTQ5LDE1IEBAIHZvaWQgc3VzcGVuZF91bmJsb2NrKHN0cnVjdCBzdXNwZW5kX2Jsb2NrZXIg KmJsb2NrZXIpCiAKIAlzcGluX2xvY2tfaXJxc2F2ZSgmbGlzdF9sb2NrLCBpcnFmbGFncyk7CiAK LQlzdXNwZW5kX3VuYmxvY2tfc3RhdF9sb2NrZWQoYmxvY2tlcik7CisJc3VzcGVuZF91bmJsb2Nr X3N0YXRfbG9ja2VkKGJsb2NrZXIsIGZhbHNlKTsKIAogCWlmIChkZWJ1Z19tYXNrICYgREVCVUdf U1VTUEVORF9CTE9DS0VSKQogCQlwcl9pbmZvKCJzdXNwZW5kX3VuYmxvY2s6ICVzXG4iLCBibG9j a2VyLT5uYW1lKTsKKwlibG9ja2VyLT5mbGFncyAmPSB+KFNCX0FDVElWRSB8IFNCX0FVVE9fRVhQ SVJFKTsKIAlsaXN0X2RlbCgmYmxvY2tlci0+bGluayk7CiAJbGlzdF9hZGQoJmJsb2NrZXItPmxp bmssICZpbmFjdGl2ZV9ibG9ja2Vycyk7CiAKLQlpZiAoKGJsb2NrZXItPmZsYWdzICYgU0JfQUNU SVZFKSAmJiBsaXN0X2VtcHR5KCZhY3RpdmVfYmxvY2tlcnMpKQotCQlxdWV1ZV93b3JrKHN1c3Bl bmRfd29ya19xdWV1ZSwgJnN1c3BlbmRfd29yayk7Ci0JYmxvY2tlci0+ZmxhZ3MgJj0gfihTQl9B Q1RJVkUpOworCXVwZGF0ZV9zdXNwZW5kKGJsb2NrZXIsIG1heF9zdXNwZW5kX2Jsb2NrZXJfdGlt ZW91dF9sb2NrZWQoKSk7CiAJaWYgKGJsb2NrZXIgPT0gJm1haW5fc3VzcGVuZF9ibG9ja2VyKSB7 CiAJCWlmIChkZWJ1Z19tYXNrICYgREVCVUdfU1VTUEVORCkKIAkJCXByaW50X2FjdGl2ZV9ibG9j a2Vyc19sb2NrZWQoKTsKQEAgLTQwNyw2ICs1NzIsMTAgQEAgRVhQT1JUX1NZTUJPTChzdXNwZW5k X3VuYmxvY2spOwogICogQGJsb2NrZXI6CVRoZSBzdXNwZW5kIGJsb2NrZXIgdG8gY2hlY2suCiAg KgogICogUmV0dXJucyB0cnVlIGlmIHRoZSBzdXNwZW5kX2Jsb2NrZXIgaXMgY3VycmVudGx5IGFj dGl2ZS4KKyAqCisgKiBJZiB0aGUgc3VzcGVuZF9ibG9ja2VyIGhhcyBhIHRpbWVvdXQsIGl0IGRv ZXMgbm90IGNoZWNrIHRoZSB0aW1lb3V0LCBidXQgaWYKKyAqIHRoZSB0aW1lb3V0IGhhZCBhbHJl YWR5IGV4cGlyZWQgd2hlbiBpdCB3YXMgY2hlY2tlZCBlbHNld2hlcmUgdGhpcyBmdW5jdGlvbgor ICogd2lsbCByZXR1cm4gZmFsc2UuCiAgKi8KIGJvb2wgc3VzcGVuZF9ibG9ja2VyX2lzX2FjdGl2 ZShzdHJ1Y3Qgc3VzcGVuZF9ibG9ja2VyICpibG9ja2VyKQogewotLSAKMS42LjEKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LXBtIG1haWxpbmcg bGlzdApsaW51eC1wbUBsaXN0cy5saW51eC1mb3VuZGF0aW9uLm9yZwpodHRwczovL2xpc3RzLmxp bnV4LWZvdW5kYXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcG0=