From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tianyang Chen Subject: [PATCH v7]xen: sched: convert RTDS from time to event driven model Date: Fri, 4 Mar 2016 20:39:27 -0500 Message-ID: <1457141967-3340-1-git-send-email-tiche@seas.upenn.edu> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xen.org with esmtp (Exim 4.84) (envelope-from ) id 1ac1DV-0003tH-Ss for xen-devel@lists.xenproject.org; Sat, 05 Mar 2016 01:41:14 +0000 List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: dario.faggioli@citrix.com, Tianyang Chen , george.dunlap@citrix.com, Dagaen Golomb , Meng Xu List-Id: xen-devel@lists.xenproject.org QnVkZ2V0IHJlcGxlbmlzaG1lbnQgYW5kIGVuZm9yY2VtZW50IGFyZSBzZXBhcmF0ZWQgYnkgYWRk aW5nCmEgcmVwbGVuaXNobWVudCB0aW1lciwgd2hpY2ggZmlyZXMgYXQgdGhlIG5leHQgbW9zdCBp bW1pbmVudApyZWxlYXNlIHRpbWUgb2YgYWxsIHJ1bm5hYmxlIHZjcHVzLgoKQSByZXBsZW5pc2ht ZW50IHF1ZXVlIGhhcyBiZWVuIGFkZGVkIHRvIGtlZXAgdHJhY2sgb2YgYWxsIHJlcGxlbmlzaG1l bnQKZXZlbnRzLgoKVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgaGF2ZSBtYWpvciBjaGFuZ2VzIHRv IG1hbmFnZSB0aGUgcmVwbGVuaXNobWVudApldmVudHMgYW5kIHRpbWVyLgoKcmVwbF9oYW5kbGVy KCk6IEl0IGlzIGEgdGltZXIgaGFuZGxlciB3aGljaCBpcyByZS1wcm9ncmFtbWVkCnRvIGZpcmUg YXQgdGhlIG5lYXJlc3QgdmNwdSBkZWFkbGluZSB0byByZXBsZW5pc2ggdmNwdXMuCgpydF9zY2hl ZHVsZSgpOiBwaWNrcyB0aGUgaGlnaGVzdCBydW5uYWJsZSB2Y3B1IGJhc2VkIG9uIGNwdQphZmZp bml0eSBhbmQgcmV0LnRpbWUgd2lsbCBiZSBwYXNzZWQgdG8gc2NoZWR1bGUoKS4gSWYgYW4gaWRs ZQp2Y3B1IGlzIHBpY2tlZCwgLTEgaXMgcmV0dXJuZWQgdG8gYXZvaWQgYnVzeS13YWl0aW5nLiBy ZXBsX3VwZGF0ZSgpCmhhcyBiZWVuIHJlbW92ZWQuCgpydF92Y3B1X3dha2UoKTogd2hlbiBhIHZj cHUgd2FrZXMgdXAsIGl0IHRpY2tsZXMgaW5zdGVhZCBvZgpwaWNraW5nIG9uZSBmcm9tIHRoZSBy dW4gcXVldWUuCgpydF9jb250ZXh0X3NhdmVkKCk6IHdoZW4gY29udGV4dCBzd2l0Y2hpbmcgaXMg ZmluaXNoZWQsIHRoZQpwcmVlbXB0ZWQgdmNwdSB3aWxsIGJlIHB1dCBiYWNrIGludG8gdGhlIHJ1 biBxdWV1ZSBhbmQgaXQgdGlja2xlcy4KClNpbXBsaWZpZWQgZnVudGlvbmFsIGdyYXBoOgoKc2No ZWR1bGUuYyBTQ0hFRFVMRV9TT0ZUSVJROgogICAgcnRfc2NoZWR1bGUoKToKICAgICAgICBbc3Bp bl9sb2NrXQogICAgICAgIGJ1cm5fYnVkZ2V0KHNjdXJyKQogICAgICAgIHNuZXh0ID0gcnVucV9w aWNrKCkKICAgICAgICBbc3Bpbl91bmxvY2tdCgpzY2hlZF9ydC5jIFRJTUVSX1NPRlRJUlEKICAg IHJlcGxlbmlzaG1lbnRfdGltZXJfaGFuZGxlcigpCiAgICAgICAgW3NwaW5fbG9ja10KICAgICAg ICA8Zm9yX2VhY2hfdmNwdV9vbl9xKGkpPiB7CiAgICAgICAgICAgIHJlcGxlbmlzaChpKQogICAg ICAgICAgICBydW5xX3RpY2tsZShpKQogICAgICAgIH0+CiAgICAgICAgcHJvZ3JhbV90aW1lcigp CiAgICAgICAgW3NwaW5fbG9ja10KClNpZ25lZC1vZmYtYnk6IFRpYW55YW5nIENoZW4gPHRpY2hl QHNlYXMudXBlbm4uZWR1PgpTaWduZWQtb2ZmLWJ5OiBNZW5nIFh1IDxtZW5neHVAY2lzLnVwZW5u LmVkdT4KU2lnbmVkLW9mZi1ieTogRGFnYWVuIEdvbG9tYiA8ZGdvbG9tYkBzZWFzLnVwZW5uLmVk dT4KCi0tLQpjaGFuZ2VzIHNpbmNlIHY2OgogICAgUmVtb3ZlZCB1bm5lY2Vzc2FyeSB2Y3B1X29u X3EoKSBjaGVja3MgZm9yIHJ1bnFfaW5zZXJ0KCkKICAgIFJlbmFtZWQgcmVwbGVuaXNobWVudCBx dWV1ZSByZWxhdGVkIGZ1bmN0aW9ucyB3aXRob3V0CiAgICB1bmRlcnNjb3JlcwogICAgTmV3IHJl cGxxX3JlaW5zZXJ0KCkgZnVuY3Rpb24gZm9yIHJ0X3ZjcHVfd2FrZSgpCgpjaGFuZ2VzIHNpbmNl IHY1OgogICAgUmVtb3ZlZCB1bm5lY2Vzc2FyeSB2Y3B1X29uX3JlcGxxKCkgY2hlY2tzCiAgICBk ZWFkbGluZV9xdWV1ZV9pbnNlcnQoKSByZXR1cm5zIGEgZmxhZyB0byBpbmRpY2F0ZSBpZiBpdCdz CiAgICBuZWVkZWQgdG8gcmUtcHJvZ3JhbSB0aGUgdGltZXIKICAgIFJlbW92ZWQgdW5uZWNlc3Nh cnkgdGltZXIgY2hlY2tzCiAgICBBZGRlZCBoZWxwZXIgZnVuY3Rpb25zIHRvIHJlbW92ZSB2Y3B1 cyBmcm9tIHF1ZXVlcwogICAgY29kaW5nIHN0eWxlCgpDaGFuZ2VzIHNpbmNlIHY0OgogICAgcmVt b3ZlZCB1bm5lY2Vzc2FyeSByZXBsZW5pc2htZW50IHF1ZXVlIGNoZWNrcyBpbiB2Y3B1X3dha2Uo KQogICAgZXh0ZW5kZWQgcmVwbHFfcmVtb3ZlKCkgdG8gYWxsIGNhc2VzIGluIHZjcHVfc2xlZXAo KQogICAgdXNlZCBfZGVhZGxpbmVfcXVldWVfaW5zZXJ0KCkgaGVscGVyIGZ1bmN0aW9uIGZvciBi b3RoIHF1ZXVlcwogICAgX3JlcGxxX2luc2VydCgpIGFuZCBfcmVwbHFfcmVtb3ZlKCkgcHJvZ3Jh bSB0aW1lciBpbnRlcm5hbGx5CgpDaGFuZ2VzIHNpbmNlIHYzOgogICAgcmVtb3ZlZCBydW5uaW5n IHF1ZXVlLgogICAgYWRkZWQgcmVwbCBxdWV1ZSB0byBrZWVwIHRyYWNrIG9mIHJlcGwgZXZlbnRz LgogICAgdGltZXIgaXMgbm93IHBlciBzY2hlZHVsZXIuCiAgICB0aW1lciBpcyBpbml0IG9uIGEg dmFsaWQgY3B1IGluIGEgY3B1cG9vbC4KLS0tCiB4ZW4vY29tbW9uL3NjaGVkX3J0LmMgfCAgMzgx ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KIDEgZmls ZSBjaGFuZ2VkLCAyODYgaW5zZXJ0aW9ucygrKSwgOTUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEveGVuL2NvbW1vbi9zY2hlZF9ydC5jIGIveGVuL2NvbW1vbi9zY2hlZF9ydC5jCmluZGV4IGJm ZWQyZTIuLjA2ODAzYmUgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vc2NoZWRfcnQuYworKysgYi94 ZW4vY29tbW9uL3NjaGVkX3J0LmMKQEAgLTE2LDYgKzE2LDcgQEAKICNpbmNsdWRlIDx4ZW4vZGVs YXkuaD4KICNpbmNsdWRlIDx4ZW4vZXZlbnQuaD4KICNpbmNsdWRlIDx4ZW4vdGltZS5oPgorI2lu Y2x1ZGUgPHhlbi90aW1lci5oPgogI2luY2x1ZGUgPHhlbi9wZXJmYy5oPgogI2luY2x1ZGUgPHhl bi9zY2hlZC1pZi5oPgogI2luY2x1ZGUgPHhlbi9zb2Z0aXJxLmg+CkBAIC04Nyw3ICs4OCw3IEBA CiAjZGVmaW5lIFJURFNfREVGQVVMVF9CVURHRVQgICAgIChNSUNST1NFQ1MoNDAwMCkpCiAKICNk ZWZpbmUgVVBEQVRFX0xJTUlUX1NISUZUICAgICAgMTAKLSNkZWZpbmUgTUFYX1NDSEVEVUxFICAg ICAgICAgICAgKE1JTExJU0VDUygxKSkKKwogLyoKICAqIEZsYWdzCiAgKi8KQEAgLTE0Miw2ICsx NDMsOSBAQCBzdGF0aWMgY3B1bWFza192YXJfdCAqX2NwdW1hc2tfc2NyYXRjaDsKICAqLwogc3Rh dGljIHVuc2lnbmVkIGludCBucl9ydF9vcHM7CiAKKy8qIGhhbmRsZXIgZm9yIHRoZSByZXBsZW5p c2htZW50IHRpbWVyICovCitzdGF0aWMgdm9pZCByZXBsX2hhbmRsZXIodm9pZCAqZGF0YSk7CisK IC8qCiAgKiBTeXN0bWUtd2lkZSBwcml2YXRlIGRhdGEsIGluY2x1ZGUgZ2xvYmFsIFJ1blF1ZXVl L0RlcGxldGVkUQogICogR2xvYmFsIGxvY2sgaXMgcmVmZXJlbmNlZCBieSBzY2hlZHVsZV9kYXRh LnNjaGVkdWxlX2xvY2sgZnJvbSBhbGwKQEAgLTE1Miw3ICsxNTYsOSBAQCBzdHJ1Y3QgcnRfcHJp dmF0ZSB7CiAgICAgc3RydWN0IGxpc3RfaGVhZCBzZG9tOyAgICAgIC8qIGxpc3Qgb2YgYXZhaWxh bGJlIGRvbWFpbnMsIHVzZWQgZm9yIGR1bXAgKi8KICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHJ1bnE7 ICAgICAgLyogb3JkZXJlZCBsaXN0IG9mIHJ1bm5hYmxlIHZjcHVzICovCiAgICAgc3RydWN0IGxp c3RfaGVhZCBkZXBsZXRlZHE7IC8qIHVub3JkZXJlZCBsaXN0IG9mIGRlcGxldGVkIHZjcHVzICov CisgICAgc3RydWN0IGxpc3RfaGVhZCByZXBscTsgICAgIC8qIG9yZGVyZWQgbGlzdCBvZiB2Y3B1 cyB0aGF0IG5lZWQgcmVwbGVuaXNobWVudCAqLwogICAgIGNwdW1hc2tfdCB0aWNrbGVkOyAgICAg ICAgICAvKiBjcHVzIGJlZW4gdGlja2xlZCAqLworICAgIHN0cnVjdCB0aW1lciAqcmVwbF90aW1l cjsgICAvKiByZXBsZW5pc2htZW50IHRpbWVyICovCiB9OwogCiAvKgpAQCAtMTYwLDYgKzE2Niw3 IEBAIHN0cnVjdCBydF9wcml2YXRlIHsKICAqLwogc3RydWN0IHJ0X3ZjcHUgewogICAgIHN0cnVj dCBsaXN0X2hlYWQgcV9lbGVtOyAgICAvKiBvbiB0aGUgcnVucS9kZXBsZXRlZHEgbGlzdCAqLwor ICAgIHN0cnVjdCBsaXN0X2hlYWQgcmVwbHFfZWxlbTsvKiBvbiB0aGUgcmVwbCBldmVudCBsaXN0 ICovCiAKICAgICAvKiBVcC1wb2ludGVycyAqLwogICAgIHN0cnVjdCBydF9kb20gKnNkb207CkBA IC0yMTMsOCArMjIwLDE0IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGxpc3RfaGVhZCAqcnRfZGVw bGV0ZWRxKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcykKICAgICByZXR1cm4gJnJ0X3ByaXYo b3BzKS0+ZGVwbGV0ZWRxOwogfQogCitzdGF0aWMgaW5saW5lIHN0cnVjdCBsaXN0X2hlYWQgKnJ0 X3JlcGxxKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcykKK3sKKyAgICByZXR1cm4gJnJ0X3By aXYob3BzKS0+cmVwbHE7Cit9CisKIC8qCi0gKiBRdWV1ZSBoZWxwZXIgZnVuY3Rpb25zIGZvciBy dW5xIGFuZCBkZXBsZXRlZHEKKyAqIEhlbHBlciBmdW5jdGlvbnMgZm9yIG1hbmlwdWxhdGluZyB0 aGUgcnVucXVldWUsIHRoZSBkZXBsZXRlZCBxdWV1ZSwKKyAqIGFuZCB0aGUgcmVwbGVuaXNobWVu dCBldmVudHMgcXVldWUuCiAgKi8KIHN0YXRpYyBpbnQKIF9fdmNwdV9vbl9xKGNvbnN0IHN0cnVj dCBydF92Y3B1ICpzdmMpCkBAIC0yMjgsNiArMjQxLDE4IEBAIF9fcV9lbGVtKHN0cnVjdCBsaXN0 X2hlYWQgKmVsZW0pCiAgICAgcmV0dXJuIGxpc3RfZW50cnkoZWxlbSwgc3RydWN0IHJ0X3ZjcHUs IHFfZWxlbSk7CiB9CiAKK3N0YXRpYyBzdHJ1Y3QgcnRfdmNwdSAqCityZXBscV9lbGVtKHN0cnVj dCBsaXN0X2hlYWQgKmVsZW0pCit7CisgICAgcmV0dXJuIGxpc3RfZW50cnkoZWxlbSwgc3RydWN0 IHJ0X3ZjcHUsIHJlcGxxX2VsZW0pOworfQorCitzdGF0aWMgaW50Cit2Y3B1X29uX3JlcGxxKGNv bnN0IHN0cnVjdCBydF92Y3B1ICpzdmMpCit7CisgICByZXR1cm4gIWxpc3RfZW1wdHkoJnN2Yy0+ cmVwbHFfZWxlbSk7Cit9CisKIC8qCiAgKiBEZWJ1ZyByZWxhdGVkIGNvZGUsIGR1bXAgdmNwdS9j cHUgaW5mb3JtYXRpb24KICAqLwpAQCAtMjg4LDcgKzMxMyw3IEBAIHJ0X2R1bXBfcGNwdShjb25z dCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIGludCBjcHUpCiBzdGF0aWMgdm9pZAogcnRfZHVtcChj b25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMpCiB7Ci0gICAgc3RydWN0IGxpc3RfaGVhZCAqcnVu cSwgKmRlcGxldGVkcSwgKml0ZXI7CisgICAgc3RydWN0IGxpc3RfaGVhZCAqcnVucSwgKmRlcGxl dGVkcSwgKnJlcGxxLCAqaXRlcjsKICAgICBzdHJ1Y3QgcnRfcHJpdmF0ZSAqcHJ2ID0gcnRfcHJp dihvcHMpOwogICAgIHN0cnVjdCBydF92Y3B1ICpzdmM7CiAgICAgc3RydWN0IHJ0X2RvbSAqc2Rv bTsKQEAgLTMwMSw2ICszMjYsNyBAQCBydF9kdW1wKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9w cykKIAogICAgIHJ1bnEgPSBydF9ydW5xKG9wcyk7CiAgICAgZGVwbGV0ZWRxID0gcnRfZGVwbGV0 ZWRxKG9wcyk7CisgICAgcmVwbHEgPSBydF9yZXBscShvcHMpOwogCiAgICAgcHJpbnRrKCJHbG9i YWwgUnVuUXVldWUgaW5mbzpcbiIpOwogICAgIGxpc3RfZm9yX2VhY2goIGl0ZXIsIHJ1bnEgKQpA QCAtMzE2LDYgKzM0MiwxMyBAQCBydF9kdW1wKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcykK ICAgICAgICAgcnRfZHVtcF92Y3B1KG9wcywgc3ZjKTsKICAgICB9CiAKKyAgICBwcmludGsoIkds b2JhbCBSZXBsZW5pc2htZW50IEV2ZW50IGluZm86XG4iKTsKKyAgICBsaXN0X2Zvcl9lYWNoKCBp dGVyLCByZXBscSApCisgICAgeworICAgICAgICBzdmMgPSByZXBscV9lbGVtKGl0ZXIpOworICAg ICAgICBydF9kdW1wX3ZjcHUob3BzLCBzdmMpOworICAgIH0KKwogICAgIHByaW50aygiRG9tYWlu IGluZm86XG4iKTsKICAgICBsaXN0X2Zvcl9lYWNoKCBpdGVyLCAmcHJ2LT5zZG9tICkKICAgICB7 CkBAIC0zODAsMTEgKzQxMyw3NiBAQCBydF91cGRhdGVfZGVhZGxpbmUoc190aW1lX3Qgbm93LCBz dHJ1Y3QgcnRfdmNwdSAqc3ZjKQogICAgIHJldHVybjsKIH0KIAorLyogCisgKiBBIGhlbHBlciBm dW5jdGlvbiB0aGF0IG9ubHkgcmVtb3ZlcyBhIHZjcHUgZnJvbSBhIHF1ZXVlIAorICogYW5kIGl0 IHJldHVybnMgMSBpZiB0aGUgdmNwdSB3YXMgaW4gZnJvbnQgb2YgdGhlIGxpc3QuCisgKi8KK3N0 YXRpYyBpbmxpbmUgaW50CitkZWFkbGluZV9xdWV1ZV9yZW1vdmUoc3RydWN0IGxpc3RfaGVhZCAq cXVldWUsIHN0cnVjdCBsaXN0X2hlYWQgKmVsZW0pCit7CisgICAgaW50IHBvcyA9IDA7CisgICAg aWYoIHF1ZXVlLT5uZXh0ICE9IGVsZW0gKQorICAgICAgICBwb3MgPSAxOworICAgIGxpc3RfZGVs X2luaXQoZWxlbSk7CisgICAgcmV0dXJuICFwb3M7Cit9CisKIHN0YXRpYyBpbmxpbmUgdm9pZAog X19xX3JlbW92ZShzdHJ1Y3QgcnRfdmNwdSAqc3ZjKQogewotICAgIGlmICggX192Y3B1X29uX3Eo c3ZjKSApCi0gICAgICAgIGxpc3RfZGVsX2luaXQoJnN2Yy0+cV9lbGVtKTsKKyAgICBBU1NFUlQo IF9fdmNwdV9vbl9xKHN2YykgKTsKKyAgICBsaXN0X2RlbF9pbml0KCZzdmMtPnFfZWxlbSk7Cit9 CisKKy8qCisgKiBSZW1vdmluZyBhIHZjcHUgZnJvbSB0aGUgcmVwbGVuaXNobWVudCBxdWV1ZSBj b3VsZAorICogcmUtcHJvZ3JhbSB0aGUgdGltZXIgZm9yIHRoZSBuZXh0IHJlcGxlbmlzaG1lbnQg ZXZlbnQKKyAqIGlmIGl0IHdhcyBhdCB0aGUgZnJvbnQgb2YgdGhlIGxpc3QuCisgKi8KK3N0YXRp YyBpbmxpbmUgdm9pZAorX19yZXBscV9yZW1vdmUoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3Bz LCBzdHJ1Y3QgcnRfdmNwdSAqc3ZjKQoreworICAgIHN0cnVjdCBydF9wcml2YXRlICpwcnYgPSBy dF9wcml2KG9wcyk7CisgICAgc3RydWN0IGxpc3RfaGVhZCAqcmVwbHEgPSBydF9yZXBscShvcHMp OworICAgIHN0cnVjdCB0aW1lciogcmVwbF90aW1lciA9IHBydi0+cmVwbF90aW1lcjsKKworICAg IEFTU0VSVCggdmNwdV9vbl9yZXBscShzdmMpICk7CisKKyAgICBpZiggZGVhZGxpbmVfcXVldWVf cmVtb3ZlKHJlcGxxLCZzdmMtPnJlcGxxX2VsZW0pICkKKyAgICB7CisgICAgICAgIC8qIHJlLWFy bSB0aGUgdGltZXIgZm9yIHRoZSBuZXh0IHJlcGxlbmlzaG1lbnQgZXZlbnQgKi8KKyAgICAgICAg aWYoICFsaXN0X2VtcHR5KHJlcGxxKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0cnVjdCBy dF92Y3B1ICpzdmNfbmV4dCA9IHJlcGxxX2VsZW0ocmVwbHEtPm5leHQpOworICAgICAgICAgICAg c2V0X3RpbWVyKHJlcGxfdGltZXIsIHN2Y19uZXh0LT5jdXJfZGVhZGxpbmUpOworICAgICAgICB9 CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHN0b3BfdGltZXIocmVwbF90aW1lcik7CisgICAg fQorfQorCisvKgorICogQW4gdXRpbGl0eSBmdW5jdGlvbiB0aGF0IGluc2VydHMgYSB2Y3B1IHRv IGEKKyAqIHF1ZXVlIGJhc2VkIG9uIGNlcnRhaW4gb3JkZXIgKEVERikuIFRoZSByZXR1cm5lZAor ICogdmFsdWUgaXMgMSBpZiBhIHZjcHUgaGFzIGJlZW4gaW5zZXJ0ZWQgdG8gdGhlCisgKiBmcm9u dCBvZiBhIGxpc3QuCisgKi8KK3N0YXRpYyBpbnQKK2RlYWRsaW5lX3F1ZXVlX2luc2VydChzdHJ1 Y3QgcnRfdmNwdSAqICgqX2dldF9xX2VsZW0pKHN0cnVjdCBsaXN0X2hlYWQgKmVsZW0pLAorICAg IHN0cnVjdCBydF92Y3B1ICpzdmMsIHN0cnVjdCBsaXN0X2hlYWQgKmVsZW0sIHN0cnVjdCBsaXN0 X2hlYWQgKnF1ZXVlKQoreworICAgIHN0cnVjdCBsaXN0X2hlYWQgKml0ZXI7CisgICAgaW50IHBv cyA9IDA7CisKKyAgICBsaXN0X2Zvcl9lYWNoKGl0ZXIsIHF1ZXVlKQorICAgIHsKKyAgICAgICAg c3RydWN0IHJ0X3ZjcHUgKiBpdGVyX3N2YyA9ICgqX2dldF9xX2VsZW0pKGl0ZXIpOworICAgICAg ICBpZiAoIHN2Yy0+Y3VyX2RlYWRsaW5lIDw9IGl0ZXJfc3ZjLT5jdXJfZGVhZGxpbmUgKQorICAg ICAgICAgICAgYnJlYWs7CisgICAgICAgIHBvcysrOworICAgIH0KKyAgICBsaXN0X2FkZF90YWls KGVsZW0sIGl0ZXIpOworICAgIHJldHVybiAhcG9zOwogfQogCiAvKgpAQCAtMzk3LDI3ICs0OTUs NjIgQEAgX19ydW5xX2luc2VydChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBy dF92Y3B1ICpzdmMpCiB7CiAgICAgc3RydWN0IHJ0X3ByaXZhdGUgKnBydiA9IHJ0X3ByaXYob3Bz KTsKICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpydW5xID0gcnRfcnVucShvcHMpOwotICAgIHN0cnVj dCBsaXN0X2hlYWQgKml0ZXI7CiAKICAgICBBU1NFUlQoIHNwaW5faXNfbG9ja2VkKCZwcnYtPmxv Y2spICk7Ci0KICAgICBBU1NFUlQoICFfX3ZjcHVfb25fcShzdmMpICk7CisgICAgQVNTRVJUKCB2 Y3B1X29uX3JlcGxxKHN2YykgKTsKIAogICAgIC8qIGFkZCBzdmMgdG8gcnVucSBpZiBzdmMgc3Rp bGwgaGFzIGJ1ZGdldCAqLwogICAgIGlmICggc3ZjLT5jdXJfYnVkZ2V0ID4gMCApCi0gICAgewot ICAgICAgICBsaXN0X2Zvcl9lYWNoKGl0ZXIsIHJ1bnEpCi0gICAgICAgIHsKLSAgICAgICAgICAg IHN0cnVjdCBydF92Y3B1ICogaXRlcl9zdmMgPSBfX3FfZWxlbShpdGVyKTsKLSAgICAgICAgICAg IGlmICggc3ZjLT5jdXJfZGVhZGxpbmUgPD0gaXRlcl9zdmMtPmN1cl9kZWFkbGluZSApCi0gICAg ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotICAgICAgICBsaXN0X2FkZF90YWls KCZzdmMtPnFfZWxlbSwgaXRlcik7Ci0gICAgfQorICAgICAgICBkZWFkbGluZV9xdWV1ZV9pbnNl cnQoJl9fcV9lbGVtLCBzdmMsICZzdmMtPnFfZWxlbSwgcnVucSk7CiAgICAgZWxzZQotICAgIHsK ICAgICAgICAgbGlzdF9hZGQoJnN2Yy0+cV9lbGVtLCAmcHJ2LT5kZXBsZXRlZHEpOworfQorCisv KgorICogSW5zZXJ0IHN2YyBpbnRvIHRoZSByZXBsZW5pc2htZW50IGV2ZW50IGxpc3QKKyAqIGlu IHJlcGxlbmlzaG1lbnQgdGltZSBvcmRlci4KKyAqIHZjcHVzIHRoYXQgbmVlZCB0byBiZSByZXBs aXNoZWQgZWFybGllciBnbyBmaXJzdC4KKyAqIFRoZSB0aW1lciBtYXkgYmUgcmUtcHJvZ3JhbW1l ZCBpZiBzdmMgaXMgaW5zZXJ0ZWQKKyAqIGF0IHRoZSBmcm9udCBvZiB0aGUgZXZlbnQgbGlzdC4K KyAqLworc3RhdGljIHZvaWQKK19fcmVwbHFfaW5zZXJ0KGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIg Km9wcywgc3RydWN0IHJ0X3ZjcHUgKnN2YykKK3sKKyAgICBzdHJ1Y3QgbGlzdF9oZWFkICpyZXBs cSA9IHJ0X3JlcGxxKG9wcyk7CisgICAgc3RydWN0IHJ0X3ByaXZhdGUgKnBydiA9IHJ0X3ByaXYo b3BzKTsKKyAgICBzdHJ1Y3QgdGltZXIgKnJlcGxfdGltZXIgPSBwcnYtPnJlcGxfdGltZXI7CisK KyAgICBBU1NFUlQoICF2Y3B1X29uX3JlcGxxKHN2YykgKTsKKworICAgIGlmKCBkZWFkbGluZV9x dWV1ZV9pbnNlcnQoJnJlcGxxX2VsZW0sIHN2YywgJnN2Yy0+cmVwbHFfZWxlbSwgcmVwbHEpICkK KyAgICAgICAgc2V0X3RpbWVyKHJlcGxfdGltZXIsc3ZjLT5jdXJfZGVhZGxpbmUpOworfQorCisv KgorICogUmVtb3ZlcyBhbmQgcmUtaW5zZXJ0cyBhbiBldmVudCB0byB0aGUgcmVwbGVuaXNobWVu dCBxdWV1ZS4KKyAqLworc3RhdGljIHZvaWQKK3JlcGxxX3JlaW5zZXJ0KGNvbnN0IHN0cnVjdCBz Y2hlZHVsZXIgKm9wcywgc3RydWN0IHJ0X3ZjcHUgKnN2YykKK3sKKyAgICBzdHJ1Y3QgbGlzdF9o ZWFkICpyZXBscSA9IHJ0X3JlcGxxKG9wcyk7CisgICAgc3RydWN0IHJ0X3ByaXZhdGUgKnBydiA9 IHJ0X3ByaXYob3BzKTsKKyAgICBzdHJ1Y3QgdGltZXIgKnJlcGxfdGltZXIgPSBwcnYtPnJlcGxf dGltZXI7CisKKyAgICBBU1NFUlQoIHZjcHVfb25fcmVwbHEoc3ZjKSApOworCisgICAgaWYoIGRl YWRsaW5lX3F1ZXVlX3JlbW92ZShyZXBscSwmc3ZjLT5yZXBscV9lbGVtKSApCisgICAgeworICAg ICAgICBpZiggZGVhZGxpbmVfcXVldWVfaW5zZXJ0KCZyZXBscV9lbGVtLCBzdmMsICZzdmMtPnJl cGxxX2VsZW0sIHJlcGxxKSApCisgICAgICAgICAgICBzZXRfdGltZXIocmVwbF90aW1lcixzdmMt PmN1cl9kZWFkbGluZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgc3Ry dWN0IHJ0X3ZjcHUgKnN2Y19uZXh0ID0gcmVwbHFfZWxlbShyZXBscS0+bmV4dCk7CisgICAgICAg ICAgICBzZXRfdGltZXIocmVwbF90aW1lciwgc3ZjX25leHQtPmN1cl9kZWFkbGluZSk7CisgICAg ICAgIH0KICAgICB9CisgICAgZWxzZSBpZiggZGVhZGxpbmVfcXVldWVfaW5zZXJ0KCZyZXBscV9l bGVtLCBzdmMsICZzdmMtPnJlcGxxX2VsZW0sIHJlcGxxKSApCisgICAgICAgIHNldF90aW1lcihy ZXBsX3RpbWVyLHN2Yy0+Y3VyX2RlYWRsaW5lKTsKIH0KIAogLyoKQEAgLTQ0OSwxMSArNTgyLDE4 IEBAIHJ0X2luaXQoc3RydWN0IHNjaGVkdWxlciAqb3BzKQogICAgIElOSVRfTElTVF9IRUFEKCZw cnYtPnNkb20pOwogICAgIElOSVRfTElTVF9IRUFEKCZwcnYtPnJ1bnEpOwogICAgIElOSVRfTElT VF9IRUFEKCZwcnYtPmRlcGxldGVkcSk7CisgICAgSU5JVF9MSVNUX0hFQUQoJnBydi0+cmVwbHEp OwogCiAgICAgY3B1bWFza19jbGVhcigmcHJ2LT50aWNrbGVkKTsKIAogICAgIG9wcy0+c2NoZWRf ZGF0YSA9IHBydjsKIAorICAgIC8qIAorICAgICAqIFRoZSB0aW1lciBpbml0aWFsaXphdGlvbiB3 aWxsIGhhcHBlbiBsYXRlciB3aGVuIAorICAgICAqIHRoZSBmaXJzdCBwY3B1IGlzIGFkZGVkIHRv IHRoaXMgcG9vbCBpbiBhbGxvY19wZGF0YS4KKyAgICAgKi8KKyAgICBwcnYtPnJlcGxfdGltZXIg PSBOVUxMOworCiAgICAgcmV0dXJuIDA7CiAKICBub19tZW06CkBAIC00NzMsNiArNjEzLDEwIEBA IHJ0X2RlaW5pdChzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMpCiAgICAgICAgIHhmcmVlKF9jcHVtYXNr X3NjcmF0Y2gpOwogICAgICAgICBfY3B1bWFza19zY3JhdGNoID0gTlVMTDsKICAgICB9CisKKyAg ICBraWxsX3RpbWVyKHBydi0+cmVwbF90aW1lcik7CisgICAgeGZyZWUocHJ2LT5yZXBsX3RpbWVy KTsKKwogICAgIG9wcy0+c2NoZWRfZGF0YSA9IE5VTEw7CiAgICAgeGZyZWUocHJ2KTsKIH0KQEAg LTQ5NCw2ICs2MzgsMTcgQEAgcnRfYWxsb2NfcGRhdGEoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAq b3BzLCBpbnQgY3B1KQogICAgIGlmICggIWFsbG9jX2NwdW1hc2tfdmFyKCZfY3B1bWFza19zY3Jh dGNoW2NwdV0pICkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKKyAgICBpZiggcHJ2LT5yZXBsX3Rp bWVyID09IE5VTEwgKQorICAgIHsgICAKKyAgICAgICAgLyogYWxsb2NhdGUgdGhlIHRpbWVyIG9u IHRoZSBmaXJzdCBjcHUgb2YgdGhpcyBwb29sICovCisgICAgICAgIHBydi0+cmVwbF90aW1lciA9 IHh6YWxsb2Moc3RydWN0IHRpbWVyKTsKKworICAgICAgICBpZihwcnYtPnJlcGxfdGltZXIgPT0g TlVMTCApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICBpbml0X3RpbWVyKHBy di0+cmVwbF90aW1lciwgcmVwbF9oYW5kbGVyLCAodm9pZCAqKW9wcywgY3B1KTsKKyAgICB9CisK ICAgICAvKiAxIGluZGljYXRlcyBhbGxvYy4gc3VjY2VlZCBpbiBzY2hlZHVsZS5jICovCiAgICAg cmV0dXJuICh2b2lkICopMTsKIH0KQEAgLTU4Nyw2ICs3NDIsNyBAQCBydF9hbGxvY192ZGF0YShj b25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCB2Y3B1ICp2Yywgdm9pZCAqZGQpCiAg ICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgSU5JVF9MSVNUX0hFQUQoJnN2Yy0+cV9lbGVtKTsK KyAgICBJTklUX0xJU1RfSEVBRCgmc3ZjLT5yZXBscV9lbGVtKTsKICAgICBzdmMtPmZsYWdzID0g MFU7CiAgICAgc3ZjLT5zZG9tID0gZGQ7CiAgICAgc3ZjLT52Y3B1ID0gdmM7CkBAIC02MTAsNyAr NzY2LDggQEAgcnRfZnJlZV92ZGF0YShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHZvaWQg KnByaXYpCiB9CiAKIC8qCi0gKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBpbiBzY2hlZF9tb3Zl X2RvbWFpbigpIGluIHNjaGVkdWxlLmMKKyAqIEl0IGlzIGNhbGxlZCBpbiBzY2hlZF9tb3ZlX2Rv bWFpbigpIGFuZCBzY2hlZF9pbml0X3ZjcHUKKyAqIGluIHNjaGVkdWxlLmMKICAqIFdoZW4gbW92 ZSBhIGRvbWFpbiB0byBhIG5ldyBjcHVwb29sLgogICogSXQgaW5zZXJ0cyB2Y3B1cyBvZiBtb3Zp bmcgZG9tYWluIHRvIHRoZSBzY2hlZHVsZXIncyBSdW5RIGluCiAgKiBkZXN0LiBjcHVwb29sLgpA QCAtNjI4LDggKzc4NSwxMyBAQCBydF92Y3B1X2luc2VydChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVy ICpvcHMsIHN0cnVjdCB2Y3B1ICp2YykKICAgICBpZiAoIG5vdyA+PSBzdmMtPmN1cl9kZWFkbGlu ZSApCiAgICAgICAgIHJ0X3VwZGF0ZV9kZWFkbGluZShub3csIHN2Yyk7CiAKLSAgICBpZiAoICFf X3ZjcHVfb25fcShzdmMpICYmIHZjcHVfcnVubmFibGUodmMpICYmICF2Yy0+aXNfcnVubmluZyAp Ci0gICAgICAgIF9fcnVucV9pbnNlcnQob3BzLCBzdmMpOworICAgIGlmICggIV9fdmNwdV9vbl9x KHN2YykgJiYgdmNwdV9ydW5uYWJsZSh2YykgKQorICAgIHsKKyAgICAgICAgX19yZXBscV9pbnNl cnQob3BzLCBzdmMpOworIAorICAgICAgICBpZiggIXZjLT5pc19ydW5uaW5nKQorICAgICAgICAg ICAgX19ydW5xX2luc2VydChvcHMsIHN2Yyk7CisgICAgfQogICAgIHZjcHVfc2NoZWR1bGVfdW5s b2NrX2lycShsb2NrLCB2Yyk7CiAKICAgICBTQ0hFRF9TVEFUX0NSQU5LKHZjcHVfaW5zZXJ0KTsK QEAgLTY1Miw2ICs4MTQsMTAgQEAgcnRfdmNwdV9yZW1vdmUoY29uc3Qgc3RydWN0IHNjaGVkdWxl ciAqb3BzLCBzdHJ1Y3QgdmNwdSAqdmMpCiAgICAgbG9jayA9IHZjcHVfc2NoZWR1bGVfbG9ja19p cnEodmMpOwogICAgIGlmICggX192Y3B1X29uX3Eoc3ZjKSApCiAgICAgICAgIF9fcV9yZW1vdmUo c3ZjKTsKKworICAgIGlmKCB2Y3B1X29uX3JlcGxxKHN2YykgKQorICAgICAgICBfX3JlcGxxX3Jl bW92ZShvcHMsc3ZjKTsKKwogICAgIHZjcHVfc2NoZWR1bGVfdW5sb2NrX2lycShsb2NrLCB2Yyk7 CiB9CiAKQEAgLTc4NCw0NCArOTUwLDYgQEAgX19ydW5xX3BpY2soY29uc3Qgc3RydWN0IHNjaGVk dWxlciAqb3BzLCBjb25zdCBjcHVtYXNrX3QgKm1hc2spCiB9CiAKIC8qCi0gKiBVcGRhdGUgdmNw dSdzIGJ1ZGdldCBhbmQKLSAqIHNvcnQgcnVucSBieSBpbnNlcnQgdGhlIG1vZGlmZWQgdmNwdSBi YWNrIHRvIHJ1bnEKLSAqIGxvY2sgaXMgZ3JhYmJlZCBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0 aW9uCi0gKi8KLXN0YXRpYyB2b2lkCi1fX3JlcGxfdXBkYXRlKGNvbnN0IHN0cnVjdCBzY2hlZHVs ZXIgKm9wcywgc190aW1lX3Qgbm93KQotewotICAgIHN0cnVjdCBsaXN0X2hlYWQgKnJ1bnEgPSBy dF9ydW5xKG9wcyk7Ci0gICAgc3RydWN0IGxpc3RfaGVhZCAqZGVwbGV0ZWRxID0gcnRfZGVwbGV0 ZWRxKG9wcyk7Ci0gICAgc3RydWN0IGxpc3RfaGVhZCAqaXRlcjsKLSAgICBzdHJ1Y3QgbGlzdF9o ZWFkICp0bXA7Ci0gICAgc3RydWN0IHJ0X3ZjcHUgKnN2YyA9IE5VTEw7Ci0KLSAgICBsaXN0X2Zv cl9lYWNoX3NhZmUoaXRlciwgdG1wLCBydW5xKQotICAgIHsKLSAgICAgICAgc3ZjID0gX19xX2Vs ZW0oaXRlcik7Ci0gICAgICAgIGlmICggbm93IDwgc3ZjLT5jdXJfZGVhZGxpbmUgKQotICAgICAg ICAgICAgYnJlYWs7Ci0KLSAgICAgICAgcnRfdXBkYXRlX2RlYWRsaW5lKG5vdywgc3ZjKTsKLSAg ICAgICAgLyogcmVpbnNlcnQgdGhlIHZjcHUgaWYgaXRzIGRlYWRsaW5lIGlzIHVwZGF0ZWQgKi8K LSAgICAgICAgX19xX3JlbW92ZShzdmMpOwotICAgICAgICBfX3J1bnFfaW5zZXJ0KG9wcywgc3Zj KTsKLSAgICB9Ci0KLSAgICBsaXN0X2Zvcl9lYWNoX3NhZmUoaXRlciwgdG1wLCBkZXBsZXRlZHEp Ci0gICAgewotICAgICAgICBzdmMgPSBfX3FfZWxlbShpdGVyKTsKLSAgICAgICAgaWYgKCBub3cg Pj0gc3ZjLT5jdXJfZGVhZGxpbmUgKQotICAgICAgICB7Ci0gICAgICAgICAgICBydF91cGRhdGVf ZGVhZGxpbmUobm93LCBzdmMpOwotICAgICAgICAgICAgX19xX3JlbW92ZShzdmMpOyAvKiByZW1v dmUgZnJvbSBkZXBsZXRlZCBxdWV1ZSAqLwotICAgICAgICAgICAgX19ydW5xX2luc2VydChvcHMs IHN2Yyk7IC8qIGFkZCB0byBydW5xICovCi0gICAgICAgIH0KLSAgICB9Ci19Ci0KLS8qCiAgKiBz Y2hlZHVsZSBmdW5jdGlvbiBmb3IgcnQgc2NoZWR1bGVyLgogICogVGhlIGxvY2sgaXMgYWxyZWFk eSBncmFiYmVkIGluIHNjaGVkdWxlLmMsIG5vIG5lZWQgdG8gbG9jayBoZXJlCiAgKi8KQEAgLTg0 MCw4ICs5NjgsNiBAQCBydF9zY2hlZHVsZShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHNf dGltZV90IG5vdywgYm9vbF90IHRhc2tsZXRfd29ya19zY2hlZAogICAgIC8qIGJ1cm5fYnVkZ2V0 IHdvdWxkIHJldHVybiBmb3IgSURMRSBWQ1BVICovCiAgICAgYnVybl9idWRnZXQob3BzLCBzY3Vy ciwgbm93KTsKIAotICAgIF9fcmVwbF91cGRhdGUob3BzLCBub3cpOwotCiAgICAgaWYgKCB0YXNr bGV0X3dvcmtfc2NoZWR1bGVkICkKICAgICB7CiAgICAgICAgIHRyYWNlX3ZhcihUUkNfUlREU19T Q0hFRF9UQVNLTEVULCAxLCAwLCAgTlVMTCk7CkBAIC04NjgsNiArOTk0LDcgQEAgcnRfc2NoZWR1 bGUoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzX3RpbWVfdCBub3csIGJvb2xfdCB0YXNr bGV0X3dvcmtfc2NoZWQKICAgICAgICAgc2V0X2JpdChfX1JURFNfZGVsYXllZF9ydW5xX2FkZCwg JnNjdXJyLT5mbGFncyk7CiAKICAgICBzbmV4dC0+bGFzdF9zdGFydCA9IG5vdzsKKyAgICByZXQu dGltZSA9ICAtMTsgLyogaWYgYW4gaWRsZSB2Y3B1IGlzIHBpY2tlZCAqLyAKICAgICBpZiAoICFp c19pZGxlX3ZjcHUoc25leHQtPnZjcHUpICkKICAgICB7CiAgICAgICAgIGlmICggc25leHQgIT0g c2N1cnIgKQpAQCAtODgwLDkgKzEwMDcsOCBAQCBydF9zY2hlZHVsZShjb25zdCBzdHJ1Y3Qgc2No ZWR1bGVyICpvcHMsIHNfdGltZV90IG5vdywgYm9vbF90IHRhc2tsZXRfd29ya19zY2hlZAogICAg ICAgICAgICAgc25leHQtPnZjcHUtPnByb2Nlc3NvciA9IGNwdTsKICAgICAgICAgICAgIHJldC5t aWdyYXRlZCA9IDE7CiAgICAgICAgIH0KKyAgICAgICAgcmV0LnRpbWUgPSBzbmV4dC0+YnVkZ2V0 OyAvKiBpbnZva2UgdGhlIHNjaGVkdWxlciBuZXh0IHRpbWUgKi8KICAgICB9Ci0KLSAgICByZXQu dGltZSA9IE1JTihzbmV4dC0+YnVkZ2V0LCBNQVhfU0NIRURVTEUpOyAvKiBzY2hlZCBxdWFudHVt ICovCiAgICAgcmV0LnRhc2sgPSBzbmV4dC0+dmNwdTsKIAogICAgIHJldHVybiByZXQ7CkBAIC05 MDMsNyArMTAyOSwxMCBAQCBydF92Y3B1X3NsZWVwKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9w cywgc3RydWN0IHZjcHUgKnZjKQogICAgIGlmICggY3Vycl9vbl9jcHUodmMtPnByb2Nlc3Nvcikg PT0gdmMgKQogICAgICAgICBjcHVfcmFpc2Vfc29mdGlycSh2Yy0+cHJvY2Vzc29yLCBTQ0hFRFVM RV9TT0ZUSVJRKTsKICAgICBlbHNlIGlmICggX192Y3B1X29uX3Eoc3ZjKSApCisgICAgewogICAg ICAgICBfX3FfcmVtb3ZlKHN2Yyk7CisgICAgICAgIF9fcmVwbHFfcmVtb3ZlKG9wcywgc3ZjKTsK KyAgICB9CiAgICAgZWxzZSBpZiAoIHN2Yy0+ZmxhZ3MgJiBSVERTX2RlbGF5ZWRfcnVucV9hZGQg KQogICAgICAgICBjbGVhcl9iaXQoX19SVERTX2RlbGF5ZWRfcnVucV9hZGQsICZzdmMtPmZsYWdz KTsKIH0KQEAgLTEwMDgsMTAgKzExMzcsNyBAQCBydF92Y3B1X3dha2UoY29uc3Qgc3RydWN0IHNj aGVkdWxlciAqb3BzLCBzdHJ1Y3QgdmNwdSAqdmMpCiB7CiAgICAgc3RydWN0IHJ0X3ZjcHUgKiBj b25zdCBzdmMgPSBydF92Y3B1KHZjKTsKICAgICBzX3RpbWVfdCBub3cgPSBOT1coKTsKLSAgICBz dHJ1Y3QgcnRfcHJpdmF0ZSAqcHJ2ID0gcnRfcHJpdihvcHMpOwotICAgIHN0cnVjdCBydF92Y3B1 ICpzbmV4dCA9IE5VTEw7IC8qIGhpZ2hlc3QgcHJpb3JpdHkgb24gUnVuUSAqLwotICAgIHN0cnVj dCBydF9kb20gKnNkb20gPSBOVUxMOwotICAgIGNwdW1hc2tfdCAqb25saW5lOworICAgIGJvb2xf dCBtaXNzZWQ7CiAKICAgICBCVUdfT04oIGlzX2lkbGVfdmNwdSh2YykgKTsKIApAQCAtMTAzMywz MiArMTE1OSw0MCBAQCBydF92Y3B1X3dha2UoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBz dHJ1Y3QgdmNwdSAqdmMpCiAgICAgZWxzZQogICAgICAgICBTQ0hFRF9TVEFUX0NSQU5LKHZjcHVf d2FrZV9ub3RfcnVubmFibGUpOwogCi0gICAgLyogSWYgY29udGV4dCBoYXNuJ3QgYmVlbiBzYXZl ZCBmb3IgdGhpcyB2Y3B1IHlldCwgd2UgY2FuJ3QgcHV0IGl0IG9uCi0gICAgICogdGhlIFJ1bnF1 ZXVlL0RlcGxldGVkUS4gSW5zdGVhZCwgd2Ugc2V0IGEgZmxhZyBzbyB0aGF0IGl0IHdpbGwgYmUK LSAgICAgKiBwdXQgb24gdGhlIFJ1bnF1ZXVlL0RlcGxldGVkUSBhZnRlciB0aGUgY29udGV4dCBo YXMgYmVlbiBzYXZlZC4KKyAgICAvKgorICAgICAqIElmIGEgZGVhZGxpbmUgcGFzc2VkIHdoaWxl IHN2YyB3YXMgYXNsZWVwL2Jsb2NrZWQsIHdlIG5lZWQgbmV3CisgICAgICogc2NoZWR1bGluZyBw YXJhbWV0ZXJzIChhIG5ldyBkZWFkbGluZSBhbmQgZnVsbCBidWRnZXQpLgorICAgICAqLworICAg IGlmICggKG1pc3NlZCA9IG5vdyA+PSBzdmMtPmN1cl9kZWFkbGluZSkgKQorICAgICAgICBydF91 cGRhdGVfZGVhZGxpbmUobm93LCBzdmMpOworCisgICAgLyogCisgICAgICogSWYgY29udGV4dCBo YXNuJ3QgYmVlbiBzYXZlZCBmb3IgdGhpcyB2Y3B1IHlldCwgd2UgY2FuJ3QgcHV0IGl0IG9uCisg ICAgICogdGhlIHJ1bi1xdWV1ZS9kZXBsZXRlZC1xdWV1ZS4gSW5zdGVhZCwgd2Ugc2V0IHRoZSBh cHByb3ByaWF0ZSBmbGFnLAorICAgICAqIHRoZSB2Y3B1IHdpbGwgYmUgcHV0IGJhY2sgb24gcXVl dWUgYWZ0ZXIgdGhlIGNvbnRleHQgaGFzIGJlZW4gc2F2ZWQKKyAgICAgKiAoaW4gcnRfY29udGV4 dF9zYXZlKCkpLgogICAgICAqLwogICAgIGlmICggdW5saWtlbHkoc3ZjLT5mbGFncyAmIFJURFNf c2NoZWR1bGVkKSApCiAgICAgewotICAgICAgICBzZXRfYml0KF9fUlREU19kZWxheWVkX3J1bnFf YWRkLCAmc3ZjLT5mbGFncyk7CisgICAgICAgc2V0X2JpdChfX1JURFNfZGVsYXllZF9ydW5xX2Fk ZCwgJnN2Yy0+ZmxhZ3MpOworICAgICAgICAvKgorICAgICAgICAgKiBUaGUgdmNwdSBpcyB3YWtp bmcgdXAgYWxyZWFkeSwgYW5kIHdlIGRpZG4ndCBldmVuIGhhZCB0aGUgdGltZSB0bworICAgICAg ICAgKiByZW1vdmUgaXRzIG5leHQgcmVwbGVuaXNobWVudCBldmVudCBmcm9tIHRoZSByZXBsZW5p c2htZW50IHF1ZXVlCisgICAgICAgICAqIHdoZW4gaXQgYmxvY2tlZCEgTm8gYmlnIGRlYWwuIElm IHdlIGRpZCBub3QgbWlzcyB0aGUgZGVhZGxpbmUgaW4KKyAgICAgICAgICogdGhlIG1lYW50aW1l LCBsZXQncyBqdXN0IGxlYXZlIGl0IHRoZXJlLiBJZiB3ZSBkaWQsIGxldCdzIHJlbW92ZSBpdAor ICAgICAgICAgKiBhbmQgcXVldWUgYSBuZXcgb25lICh0byBvY2N1ciBhdCBvdXIgbmV3IGRlYWRs aW5lKS4KKyAgICAgICAgICovCisgICAgICAgIGlmICggbWlzc2VkICkKKyAgICAgICAgICAgcmVw bHFfcmVpbnNlcnQob3BzLCBzdmMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYg KCBub3cgPj0gc3ZjLT5jdXJfZGVhZGxpbmUpCi0gICAgICAgIHJ0X3VwZGF0ZV9kZWFkbGluZShu b3csIHN2Yyk7Ci0KKyAgICAvKiBSZXBsZW5pc2htZW50IGV2ZW50IGdvdCBjYW5jZWxsZWQgd2hl biB3ZSBibG9ja2VkLiBBZGQgaXQgYmFjay4gKi8KKyAgICBfX3JlcGxxX2luc2VydChvcHMsIHN2 Yyk7IAogICAgIC8qIGluc2VydCBzdmMgdG8gcnVucS9kZXBsZXRlZHEgYmVjYXVzZSBzdmMgaXMg bm90IGluIHF1ZXVlIG5vdyAqLwogICAgIF9fcnVucV9pbnNlcnQob3BzLCBzdmMpOwogCi0gICAg X19yZXBsX3VwZGF0ZShvcHMsIG5vdyk7Ci0KLSAgICBBU1NFUlQoIWxpc3RfZW1wdHkoJnBydi0+ c2RvbSkpOwotICAgIHNkb20gPSBsaXN0X2VudHJ5KHBydi0+c2RvbS5uZXh0LCBzdHJ1Y3QgcnRf ZG9tLCBzZG9tX2VsZW0pOwotICAgIG9ubGluZSA9IGNwdXBvb2xfZG9tYWluX2NwdW1hc2soc2Rv bS0+ZG9tKTsKLSAgICBzbmV4dCA9IF9fcnVucV9waWNrKG9wcywgb25saW5lKTsgLyogcGljayBz bmV4dCBmcm9tIEFMTCB2YWxpZCBjcHVzICovCi0KLSAgICBydW5xX3RpY2tsZShvcHMsIHNuZXh0 KTsKLQotICAgIHJldHVybjsKKyAgICBydW5xX3RpY2tsZShvcHMsIHN2Yyk7CiB9CiAKIC8qCkBA IC0xMDY5LDEwICsxMjAzLDYgQEAgc3RhdGljIHZvaWQKIHJ0X2NvbnRleHRfc2F2ZWQoY29uc3Qg c3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3QgdmNwdSAqdmMpCiB7CiAgICAgc3RydWN0IHJ0 X3ZjcHUgKnN2YyA9IHJ0X3ZjcHUodmMpOwotICAgIHN0cnVjdCBydF92Y3B1ICpzbmV4dCA9IE5V TEw7Ci0gICAgc3RydWN0IHJ0X2RvbSAqc2RvbSA9IE5VTEw7Ci0gICAgc3RydWN0IHJ0X3ByaXZh dGUgKnBydiA9IHJ0X3ByaXYob3BzKTsKLSAgICBjcHVtYXNrX3QgKm9ubGluZTsKICAgICBzcGlu bG9ja190ICpsb2NrID0gdmNwdV9zY2hlZHVsZV9sb2NrX2lycSh2Yyk7CiAKICAgICBjbGVhcl9i aXQoX19SVERTX3NjaGVkdWxlZCwgJnN2Yy0+ZmxhZ3MpOwpAQCAtMTA4NCwxNSArMTIxNCwxMSBA QCBydF9jb250ZXh0X3NhdmVkKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHZj cHUgKnZjKQogICAgICAgICAgbGlrZWx5KHZjcHVfcnVubmFibGUodmMpKSApCiAgICAgewogICAg ICAgICBfX3J1bnFfaW5zZXJ0KG9wcywgc3ZjKTsKLSAgICAgICAgX19yZXBsX3VwZGF0ZShvcHMs IE5PVygpKTsKLQotICAgICAgICBBU1NFUlQoIWxpc3RfZW1wdHkoJnBydi0+c2RvbSkpOwotICAg ICAgICBzZG9tID0gbGlzdF9lbnRyeShwcnYtPnNkb20ubmV4dCwgc3RydWN0IHJ0X2RvbSwgc2Rv bV9lbGVtKTsKLSAgICAgICAgb25saW5lID0gY3B1cG9vbF9kb21haW5fY3B1bWFzayhzZG9tLT5k b20pOwotICAgICAgICBzbmV4dCA9IF9fcnVucV9waWNrKG9wcywgb25saW5lKTsgLyogcGljayBz bmV4dCBmcm9tIEFMTCBjcHVzICovCi0KLSAgICAgICAgcnVucV90aWNrbGUob3BzLCBzbmV4dCk7 CisgICAgICAgIHJ1bnFfdGlja2xlKG9wcywgc3ZjKTsKICAgICB9CisgICAgZWxzZQorICAgICAg ICBfX3JlcGxxX3JlbW92ZShvcHMsIHN2Yyk7CisKIG91dDoKICAgICB2Y3B1X3NjaGVkdWxlX3Vu bG9ja19pcnEobG9jaywgdmMpOwogfQpAQCAtMTE1MCw2ICsxMjc2LDcxIEBAIHJ0X2RvbV9jbnRs KAogICAgIHJldHVybiByYzsKIH0KIAorLyoKKyAqIFRoZSByZXBsZW5pc2htZW50IHRpbWVyIGhh bmRsZXIgcGlja3MgdmNwdXMKKyAqIGZyb20gdGhlIHJlcGxxIGFuZCBkb2VzIHRoZSBhY3R1YWwg cmVwbGVuaXNobWVudC4KKyAqLworc3RhdGljIHZvaWQgcmVwbF9oYW5kbGVyKHZvaWQgKmRhdGEp eworICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CisgICAgc190aW1lX3Qgbm93ID0gTk9XKCk7Cisg ICAgc3RydWN0IHNjaGVkdWxlciAqb3BzID0gZGF0YTsgCisgICAgc3RydWN0IHJ0X3ByaXZhdGUg KnBydiA9IHJ0X3ByaXYob3BzKTsKKyAgICBzdHJ1Y3QgbGlzdF9oZWFkICpyZXBscSA9IHJ0X3Jl cGxxKG9wcyk7CisgICAgc3RydWN0IHRpbWVyICpyZXBsX3RpbWVyID0gcHJ2LT5yZXBsX3RpbWVy OworICAgIHN0cnVjdCBsaXN0X2hlYWQgKml0ZXIsICp0bXA7CisgICAgc3RydWN0IHJ0X3ZjcHUg KnN2YyA9IE5VTEw7CisKKyAgICBzcGluX2xvY2tfaXJxc2F2ZSgmcHJ2LT5sb2NrLCBmbGFncyk7 CisKKyAgICBzdG9wX3RpbWVyKHJlcGxfdGltZXIpOworCisgICAgbGlzdF9mb3JfZWFjaF9zYWZl KGl0ZXIsIHRtcCwgcmVwbHEpCisgICAgeworICAgICAgICBzdmMgPSByZXBscV9lbGVtKGl0ZXIp OworCisgICAgICAgIGlmICggbm93IDwgc3ZjLT5jdXJfZGVhZGxpbmUgKQorICAgICAgICAgICAg YnJlYWs7CisKKyAgICAgICAgcnRfdXBkYXRlX2RlYWRsaW5lKG5vdywgc3ZjKTsKKworICAgICAg ICAvKgorICAgICAgICAgKiB3aGVuIHRoZSByZXBsZW5pc2htZW50IGhhcHBlbnMKKyAgICAgICAg ICogc3ZjIGlzIGVpdGhlciBvbiBhIHBjcHUgb3Igb24KKyAgICAgICAgICogcnVucS9kZXBsZXRl ZHEKKyAgICAgICAgICovCisgICAgICAgIGlmKCBfX3ZjcHVfb25fcShzdmMpICkKKyAgICAgICAg eworICAgICAgICAgICAgLyogcHV0IGJhY2sgdG8gcnVucSAqLworICAgICAgICAgICAgX19xX3Jl bW92ZShzdmMpOworICAgICAgICAgICAgX19ydW5xX2luc2VydChvcHMsIHN2Yyk7CisgICAgICAg IH0KKworICAgICAgICAvKiAKKyAgICAgICAgICogdGlja2xlIHJlZ2FyZGxlc3Mgd2hlcmUgaXQn cyBhdCAKKyAgICAgICAgICogYmVjYXVzZSBhIHJ1bm5pbmcgdmNwdSBjb3VsZCBoYXZlCisgICAg ICAgICAqIGEgbGF0ZXIgZGVhZGxpbmUgdGhhbiBvdGhlcnMgYWZ0ZXIKKyAgICAgICAgICogcmVw bGVuaXNobWVudAorICAgICAgICAgKi8KKyAgICAgICAgcnVucV90aWNrbGUob3BzLCBzdmMpOwor CisgICAgICAgIC8qIAorICAgICAgICAgKiB1cGRhdGUgcmVwbGVuaXNobWVudCBldmVudCBxdWV1 ZQorICAgICAgICAgKiB3aXRob3V0IHJlcHJvZ3JhbW1pbmcgdGhlIHRpbWVyCisgICAgICAgICAq LworICAgICAgICBkZWFkbGluZV9xdWV1ZV9yZW1vdmUocmVwbHEsICZzdmMtPnJlcGxxX2VsZW0p OworICAgICAgICBkZWFkbGluZV9xdWV1ZV9pbnNlcnQoJnJlcGxxX2VsZW0sIHN2YywgJnN2Yy0+ cmVwbHFfZWxlbSwgcmVwbHEpOworICAgIH0KKworICAgIC8qIAorICAgICAqIHVzZSB0aGUgdmNw dSB0aGF0J3Mgb24gdGhlIHRvcAorICAgICAqIG9yIGVsc2UgZG9uJ3QgcHJvZ3JhbSB0aGUgdGlt ZXIKKyAgICAgKi8KKyAgICBpZiggIWxpc3RfZW1wdHkocmVwbHEpICkKKyAgICAgICAgc2V0X3Rp bWVyKHJlcGxfdGltZXIsIHJlcGxxX2VsZW0ocmVwbHEtPm5leHQpLT5jdXJfZGVhZGxpbmUpOwor CisgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcHJ2LT5sb2NrLCBmbGFncyk7Cit9CisKIHN0 YXRpYyBjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyIHNjaGVkX3J0ZHNfZGVmID0gewogICAgIC5uYW1l ICAgICAgICAgICA9ICJTTVAgUlREUyBTY2hlZHVsZXIiLAogICAgIC5vcHRfbmFtZSAgICAgICA9 ICJydGRzIiwKLS0gCjEuNy45LjUKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4u b3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=