From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tianyang Chen Subject: [PATCH v6][RFC]xen: sched: convert RTDS from time to event driven model Date: Thu, 25 Feb 2016 15:05:36 -0500 Message-ID: <1456430736-4606-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.bemta5.messagelabs.com ([195.245.231.135]) by lists.xen.org with esmtp (Exim 4.84) (envelope-from ) id 1aZ2CZ-0000ro-Fw for xen-devel@lists.xenproject.org; Thu, 25 Feb 2016 20:07:55 +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 Y2hhbmdlcyBzaW5jZSB2NToKICAgIHJlbW92ZWQgdW5uZWNlc3NhcnkgdmNwdV9vbl9yZXBscSgp IGNoZWNrcwogICAgZGVhZGxpbmVfcXVldWVfaW5zZXJ0KCkgcmV0dXJucyBhIGZsYWcgdG8gaW5k aWNhdGUgaWYgaXQncwogICAgbmVlZGVkIHRvIHJlLXByb2dyYW0gdGhlIHRpbWVyCiAgICByZW1v dmVkIHVubmVjZXNzYXJ5IHRpbWVyIGNoZWNrcwogICAgYWRkZWQgaGVscGVyIGZ1bmN0aW9ucyB0 byByZW1vdmUgdmNwdXMgZnJvbSBxdWV1ZXMKICAgIGNvZGluZyBzdHlsZQoKQ2hhbmdlcyBzaW5j ZSB2NDoKICAgIHJlbW92ZWQgdW5uZWNlc3NhcnkgcmVwbGVuaXNobWVudCBxdWV1ZSBjaGVja3Mg aW4gdmNwdV93YWtlKCkKICAgIGV4dGVuZGVkIHJlcGxxX3JlbW92ZSgpIHRvIGFsbCBjYXNlcyBp biB2Y3B1X3NsZWVwKCkKICAgIHVzZWQgX2RlYWRsaW5lX3F1ZXVlX2luc2VydCgpIGhlbHBlciBm dW5jdGlvbiBmb3IgYm90aCBxdWV1ZXMKICAgIF9yZXBscV9pbnNlcnQoKSBhbmQgX3JlcGxxX3Jl bW92ZSgpIHByb2dyYW0gdGltZXIgaW50ZXJuYWxseQoKQ2hhbmdlcyBzaW5jZSB2MzoKICAgIHJl bW92ZWQgcnVubmluZyBxdWV1ZS4KICAgIGFkZGVkIHJlcGwgcXVldWUgdG8ga2VlcCB0cmFjayBv ZiByZXBsIGV2ZW50cy4KICAgIHRpbWVyIGlzIG5vdyBwZXIgc2NoZWR1bGVyLgogICAgdGltZXIg aXMgaW5pdCBvbiBhIHZhbGlkIGNwdSBpbiBhIGNwdXBvb2wuCgpCdWRnZXQgcmVwbGVuaXNobWVu dCBhbmQgZW5mb3JjZW1lbnQgYXJlIHNlcGFyYXRlZCBieSBhZGRpbmcKYSByZXBsZW5pc2htZW50 IHRpbWVyLCB3aGljaCBmaXJlcyBhdCB0aGUgbmV4dCBtb3N0IGltbWluZW50CnJlbGVhc2UgdGlt ZSBvZiBhbGwgcnVubmFibGUgdmNwdXMuCgpBIG5ldyBydW5uaW5ncSBoYXMgYmVlbiBhZGRlZCB0 byBrZWVwIHRyYWNrIG9mIGFsbCB2Y3B1cyB0aGF0CmFyZSBvbiBwY3B1cy4KClRoZSBmb2xsb3dp bmcgZnVuY3Rpb25zIGhhdmUgbWFqb3IgY2hhbmdlcyB0byBtYW5hZ2UgdGhlIHJ1bm5pbmdxCmFu ZCByZXBsZW5pc2htZW50CgpyZXBsX2hhbmRsZXIoKTogSXQgaXMgYSB0aW1lciBoYW5kbGVyIHdo aWNoIGlzIHJlLXByb2dyYW1tZWQKdG8gZmlyZSBhdCB0aGUgbmVhcmVzdCB2Y3B1IGRlYWRsaW5l IHRvIHJlcGxlbmlzaCB2Y3B1cyBvbiBydW5xLApkZXBlbGV0ZWRxIGFuZCBydW5uaW5ncS4gV2hl biB0aGUgcmVwbGVuaXNobWVudCBpcyBkb25lLCBlYWNoCnJlcGxlbmlzaGVkIHZjcHUgc2hvdWxk IHRpY2tsZSBhIHBjcHUgdG8gc2VlIGlmIGl0IG5lZWRzIHRvCnByZWVtcHQgYW55IHJ1bm5pbmcg dmNwdXMuCgpydF9zY2hlZHVsZSgpOiBwaWNrcyB0aGUgaGlnaGVzdCBydW5uYWJsZSB2Y3B1IGJh c2VkIG9uIGNwdQphZmZpbml0eSBhbmQgcmV0LnRpbWUgd2lsbCBiZSBwYXNzZWQgdG8gc2NoZWR1 bGUoKS4gSWYgYW4gaWRsZQp2Y3B1IGlzIHBpY2tlZCwgLTEgaXMgcmV0dXJuZWQgdG8gYXZvaWQg YnVzeS13YWl0aW5nLiByZXBsX3VwZGF0ZSgpCmhhcyBiZWVuIHJlbW92ZWQuCgpydF92Y3B1X3dh a2UoKTogd2hlbiBhIHZjcHUgaXMgYXdha2UsIGl0IHRpY2tsZXMgaW5zdGVhZCBvZgpwaWNraW5n IG9uZSBmcm9tIHJ1bnEuIFdoZW4gYSB2Y3B1IHdha2VzIHVwLCBpdCBtaWdodCByZXByb2dyYW0K dGhlIHRpbWVyIGlmIGl0IGhhcyBhIG1vcmUgcmVjZW50IHJlbGVhc2UgdGltZS4KCnJ0X2NvbnRl eHRfc2F2ZWQoKTogd2hlbiBjb250ZXh0IHN3aXRjaGluZyBpcyBmaW5pc2hlZCwgdGhlCnByZWVt cHRlZCB2Y3B1IHdpbGwgYmUgcHV0IGJhY2sgaW50byB0aGUgcnVucS4gUnVubmluZ3EgaXMKdXBk YXRlZCBhbmQgcGlja2luZyBmcm9tIHJ1bnEgYW5kIHRpY2tsaW5nIGFyZSByZW1vdmVkLgoKU2lt cGxpZmllZCBmdW50aW9uYWwgZ3JhcGg6CgpzY2hlZHVsZS5jIFNDSEVEVUxFX1NPRlRJUlE6CiAg ICBydF9zY2hlZHVsZSgpOgogICAgICAgIFtzcGluX2xvY2tdCiAgICAgICAgYnVybl9idWRnZXQo c2N1cnIpCiAgICAgICAgc25leHQgPSBydW5xX3BpY2soKQogICAgICAgIFtzcGluX3VubG9ja10K CnNjaGVkX3J0LmMgVElNRVJfU09GVElSUQogICAgcmVwbGVuaXNobWVudF90aW1lcl9oYW5kbGVy KCkKICAgICAgICBbc3Bpbl9sb2NrXQogICAgICAgIDxmb3JfZWFjaF92Y3B1X29uX3EoaSk+IHsK ICAgICAgICAgICAgcmVwbGVuaXNoKGkpCiAgICAgICAgICAgIHJ1bnFfdGlja2xlKGkpCiAgICAg ICAgfT4KICAgICAgICBwcm9ncmFtX3RpbWVyKCkKICAgICAgICBbc3Bpbl9sb2NrXQoKU2lnbmVk LW9mZi1ieTogVGlhbnlhbmcgQ2hlbiA8dGljaGVAc2Vhcy51cGVubi5lZHU+ClNpZ25lZC1vZmYt Ynk6IE1lbmcgWHUgPG1lbmd4dUBjaXMudXBlbm4uZWR1PgpTaWduZWQtb2ZmLWJ5OiBEYWdhZW4g R29sb21iIDxkZ29sb21iQHNlYXMudXBlbm4uZWR1PgotLS0KIHhlbi9jb21tb24vc2NoZWRfcnQu YyB8ICAzMjggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0t LQogMSBmaWxlIGNoYW5nZWQsIDI0NCBpbnNlcnRpb25zKCspLCA4NCBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS94ZW4vY29tbW9uL3NjaGVkX3J0LmMgYi94ZW4vY29tbW9uL3NjaGVkX3J0LmMK aW5kZXggMmU1NDMwZi4uMTZmNzdmOSAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9zY2hlZF9ydC5j CisrKyBiL3hlbi9jb21tb24vc2NoZWRfcnQuYwpAQCAtMTYsNiArMTYsNyBAQAogI2luY2x1ZGUg PHhlbi9kZWxheS5oPgogI2luY2x1ZGUgPHhlbi9ldmVudC5oPgogI2luY2x1ZGUgPHhlbi90aW1l Lmg+CisjaW5jbHVkZSA8eGVuL3RpbWVyLmg+CiAjaW5jbHVkZSA8eGVuL3BlcmZjLmg+CiAjaW5j bHVkZSA8eGVuL3NjaGVkLWlmLmg+CiAjaW5jbHVkZSA8eGVuL3NvZnRpcnEuaD4KQEAgLTg3LDcg Kzg4LDcgQEAKICNkZWZpbmUgUlREU19ERUZBVUxUX0JVREdFVCAgICAgKE1JQ1JPU0VDUyg0MDAw KSkKIAogI2RlZmluZSBVUERBVEVfTElNSVRfU0hJRlQgICAgICAxMAotI2RlZmluZSBNQVhfU0NI RURVTEUgICAgICAgICAgICAoTUlMTElTRUNTKDEpKQorCiAvKgogICogRmxhZ3MKICAqLwpAQCAt MTQyLDYgKzE0Myw5IEBAIHN0YXRpYyBjcHVtYXNrX3Zhcl90ICpfY3B1bWFza19zY3JhdGNoOwog ICovCiBzdGF0aWMgdW5zaWduZWQgaW50IG5yX3J0X29wczsKIAorLyogaGFuZGxlciBmb3IgdGhl IHJlcGxlbmlzaG1lbnQgdGltZXIgKi8KK3N0YXRpYyB2b2lkIHJlcGxfaGFuZGxlcih2b2lkICpk YXRhKTsKKwogLyoKICAqIFN5c3RtZS13aWRlIHByaXZhdGUgZGF0YSwgaW5jbHVkZSBnbG9iYWwg UnVuUXVldWUvRGVwbGV0ZWRRCiAgKiBHbG9iYWwgbG9jayBpcyByZWZlcmVuY2VkIGJ5IHNjaGVk dWxlX2RhdGEuc2NoZWR1bGVfbG9jayBmcm9tIGFsbApAQCAtMTUyLDcgKzE1Niw5IEBAIHN0cnVj dCBydF9wcml2YXRlIHsKICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHNkb207ICAgICAgLyogbGlzdCBv ZiBhdmFpbGFsYmUgZG9tYWlucywgdXNlZCBmb3IgZHVtcCAqLwogICAgIHN0cnVjdCBsaXN0X2hl YWQgcnVucTsgICAgICAvKiBvcmRlcmVkIGxpc3Qgb2YgcnVubmFibGUgdmNwdXMgKi8KICAgICBz dHJ1Y3QgbGlzdF9oZWFkIGRlcGxldGVkcTsgLyogdW5vcmRlcmVkIGxpc3Qgb2YgZGVwbGV0ZWQg dmNwdXMgKi8KKyAgICBzdHJ1Y3QgbGlzdF9oZWFkIHJlcGxxOyAgICAgLyogb3JkZXJlZCBsaXN0 IG9mIHZjcHVzIHRoYXQgbmVlZCByZXBsZW5pc2htZW50ICovCiAgICAgY3B1bWFza190IHRpY2ts ZWQ7ICAgICAgICAgIC8qIGNwdXMgYmVlbiB0aWNrbGVkICovCisgICAgc3RydWN0IHRpbWVyICpy ZXBsX3RpbWVyOyAgIC8qIHJlcGxlbmlzaG1lbnQgdGltZXIgKi8KIH07CiAKIC8qCkBAIC0xNjAs NiArMTY2LDcgQEAgc3RydWN0IHJ0X3ByaXZhdGUgewogICovCiBzdHJ1Y3QgcnRfdmNwdSB7CiAg ICAgc3RydWN0IGxpc3RfaGVhZCBxX2VsZW07ICAgIC8qIG9uIHRoZSBydW5xL2RlcGxldGVkcSBs aXN0ICovCisgICAgc3RydWN0IGxpc3RfaGVhZCByZXBscV9lbGVtOy8qIG9uIHRoZSByZXBsIGV2 ZW50IGxpc3QgKi8KIAogICAgIC8qIFVwLXBvaW50ZXJzICovCiAgICAgc3RydWN0IHJ0X2RvbSAq c2RvbTsKQEAgLTIxMyw4ICsyMjAsMTQgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgbGlzdF9oZWFk ICpydF9kZXBsZXRlZHEoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzKQogICAgIHJldHVybiAm cnRfcHJpdihvcHMpLT5kZXBsZXRlZHE7CiB9CiAKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGxpc3Rf aGVhZCAqcnRfcmVwbHEoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzKQoreworICAgIHJldHVy biAmcnRfcHJpdihvcHMpLT5yZXBscTsKK30KKwogLyoKLSAqIFF1ZXVlIGhlbHBlciBmdW5jdGlv bnMgZm9yIHJ1bnEgYW5kIGRlcGxldGVkcQorICogUXVldWUgaGVscGVyIGZ1bmN0aW9ucyBmb3Ig cnVucSwgZGVwbGV0ZWRxCisgKiBhbmQgcmVwbGVuaXNobWVudCBldmVudCBxdWV1ZQogICovCiBz dGF0aWMgaW50CiBfX3ZjcHVfb25fcShjb25zdCBzdHJ1Y3QgcnRfdmNwdSAqc3ZjKQpAQCAtMjI4 LDYgKzI0MSwxOCBAQCBfX3FfZWxlbShzdHJ1Y3QgbGlzdF9oZWFkICplbGVtKQogICAgIHJldHVy biBsaXN0X2VudHJ5KGVsZW0sIHN0cnVjdCBydF92Y3B1LCBxX2VsZW0pOwogfQogCitzdGF0aWMg c3RydWN0IHJ0X3ZjcHUgKgorX19yZXBscV9lbGVtKHN0cnVjdCBsaXN0X2hlYWQgKmVsZW0pCit7 CisgICAgcmV0dXJuIGxpc3RfZW50cnkoZWxlbSwgc3RydWN0IHJ0X3ZjcHUsIHJlcGxxX2VsZW0p OworfQorCitzdGF0aWMgaW50CitfX3ZjcHVfb25fcmVwbHEoY29uc3Qgc3RydWN0IHJ0X3ZjcHUg KnN2YykKK3sKKyAgIHJldHVybiAhbGlzdF9lbXB0eSgmc3ZjLT5yZXBscV9lbGVtKTsKK30KKwog LyoKICAqIERlYnVnIHJlbGF0ZWQgY29kZSwgZHVtcCB2Y3B1L2NwdSBpbmZvcm1hdGlvbgogICov CkBAIC0yODgsNyArMzEzLDcgQEAgcnRfZHVtcF9wY3B1KGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIg Km9wcywgaW50IGNwdSkKIHN0YXRpYyB2b2lkCiBydF9kdW1wKGNvbnN0IHN0cnVjdCBzY2hlZHVs ZXIgKm9wcykKIHsKLSAgICBzdHJ1Y3QgbGlzdF9oZWFkICpydW5xLCAqZGVwbGV0ZWRxLCAqaXRl cjsKKyAgICBzdHJ1Y3QgbGlzdF9oZWFkICpydW5xLCAqZGVwbGV0ZWRxLCAqcmVwbHEsICppdGVy OwogICAgIHN0cnVjdCBydF9wcml2YXRlICpwcnYgPSBydF9wcml2KG9wcyk7CiAgICAgc3RydWN0 IHJ0X3ZjcHUgKnN2YzsKICAgICBzdHJ1Y3QgcnRfZG9tICpzZG9tOwpAQCAtMzAxLDYgKzMyNiw3 IEBAIHJ0X2R1bXAoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzKQogCiAgICAgcnVucSA9IHJ0 X3J1bnEob3BzKTsKICAgICBkZXBsZXRlZHEgPSBydF9kZXBsZXRlZHEob3BzKTsKKyAgICByZXBs cSA9IHJ0X3JlcGxxKG9wcyk7CiAKICAgICBwcmludGsoIkdsb2JhbCBSdW5RdWV1ZSBpbmZvOlxu Iik7CiAgICAgbGlzdF9mb3JfZWFjaCggaXRlciwgcnVucSApCkBAIC0zMTYsNiArMzQyLDEzIEBA IHJ0X2R1bXAoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzKQogICAgICAgICBydF9kdW1wX3Zj cHUob3BzLCBzdmMpOwogICAgIH0KIAorICAgIHByaW50aygiR2xvYmFsIFJlcGxlbmlzaG1lbnQg RXZlbnQgaW5mbzpcbiIpOworICAgIGxpc3RfZm9yX2VhY2goIGl0ZXIsIHJlcGxxICkKKyAgICB7 CisgICAgICAgIHN2YyA9IF9fcmVwbHFfZWxlbShpdGVyKTsKKyAgICAgICAgcnRfZHVtcF92Y3B1 KG9wcywgc3ZjKTsKKyAgICB9CisKICAgICBwcmludGsoIkRvbWFpbiBpbmZvOlxuIik7CiAgICAg bGlzdF9mb3JfZWFjaCggaXRlciwgJnBydi0+c2RvbSApCiAgICAgewpAQCAtMzgwLDExICs0MTMs NzQgQEAgcnRfdXBkYXRlX2RlYWRsaW5lKHNfdGltZV90IG5vdywgc3RydWN0IHJ0X3ZjcHUgKnN2 YykKICAgICByZXR1cm47CiB9CiAKKy8qIGEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgb25seSByZW1v dmVzIGEgdmNwdSBmcm9tIGEgcXVldWUgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorZGVhZGxpbmVf cXVldWVfcmVtb3ZlKHN0cnVjdCBsaXN0X2hlYWQgKmVsZW0pCit7CisgICAgbGlzdF9kZWxfaW5p dChlbGVtKTsKK30KKwogc3RhdGljIGlubGluZSB2b2lkCiBfX3FfcmVtb3ZlKHN0cnVjdCBydF92 Y3B1ICpzdmMpCiB7CiAgICAgaWYgKCBfX3ZjcHVfb25fcShzdmMpICkKLSAgICAgICAgbGlzdF9k ZWxfaW5pdCgmc3ZjLT5xX2VsZW0pOworICAgICAgICBkZWFkbGluZV9xdWV1ZV9yZW1vdmUoJnN2 Yy0+cV9lbGVtKTsKK30KKworLyoKKyAqIFJlbW92aW5nIGEgdmNwdSBmcm9tIHRoZSByZXBsZW5p c2htZW50IHF1ZXVlIGNvdWxkCisgKiByZS1wcm9ncmFtIHRoZSB0aW1lciBmb3IgdGhlIG5leHQg cmVwbGVuaXNobWVudCBldmVudAorICogaWYgdGhlcmUgaXMgYW55IG9uIHRoZSBsaXN0CisgKi8K K3N0YXRpYyBpbmxpbmUgdm9pZAorX19yZXBscV9yZW1vdmUoY29uc3Qgc3RydWN0IHNjaGVkdWxl ciAqb3BzLCBzdHJ1Y3QgcnRfdmNwdSAqc3ZjKQoreworICAgIHN0cnVjdCBydF9wcml2YXRlICpw cnYgPSBydF9wcml2KG9wcyk7CisgICAgc3RydWN0IGxpc3RfaGVhZCAqcmVwbHEgPSBydF9yZXBs cShvcHMpOworICAgIHN0cnVjdCB0aW1lciogcmVwbF90aW1lciA9IHBydi0+cmVwbF90aW1lcjsK KworICAgIC8qCisgICAgICogRGlzYXJtIHRoZSB0aW1lciBiZWZvcmUgcmUtcHJvZ3JhbW1pbmcg aXQuCisgICAgICogSXQgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHZjcHUgdG8gYmUgcmVtb3ZlZAor ICAgICAqIGlzIG9uIHRvcCBvZiB0aGUgbGlzdCBvciBub3QgYmVjYXVzZSB0aGUgdGltZXIKKyAg ICAgKiBpcyBzdG9wcGVkIGFuZCBuZWVkcyB0byBiZSByZS1wcm9ncmFtbWVkIGFueXdheXMKKyAg ICAgKi8KKyAgICBzdG9wX3RpbWVyKHJlcGxfdGltZXIpOworCisgICAgZGVhZGxpbmVfcXVldWVf cmVtb3ZlKCZzdmMtPnJlcGxxX2VsZW0pOworCisgICAgLyogcmUtYXJtIHRoZSB0aW1lciBmb3Ig dGhlIG5leHQgcmVwbGVuaXNobWVudCBldmVudCAqLworICAgIGlmKCAhbGlzdF9lbXB0eShyZXBs cSkgKQorICAgIHsKKyAgICAgICAgc3RydWN0IHJ0X3ZjcHUgKnN2Y19uZXh0ID0gX19yZXBscV9l bGVtKHJlcGxxLT5uZXh0KTsKKyAgICAgICAgc2V0X3RpbWVyKHJlcGxfdGltZXIsIHN2Y19uZXh0 LT5jdXJfZGVhZGxpbmUpOworICAgIH0KK30KKworLyoKKyAqIEFuIHV0aWxpdHkgZnVuY3Rpb24g dGhhdCBpbnNlcnRzIGEgdmNwdSB0byBhCisgKiBxdWV1ZSBiYXNlZCBvbiBjZXJ0YWluIG9yZGVy IChFREYpLiBUaGUgcmV0dXJuZWQKKyAqIHZhbHVlIGlzIDEgaWYgYSB2Y3B1IGhhcyBiZWVuIGlu c2VydGVkIHRvIHRoZQorICogZnJvbnQgb2YgYSBsaXN0CisgKi8KK3N0YXRpYyBpbnQKK2RlYWRs aW5lX3F1ZXVlX2luc2VydChzdHJ1Y3QgcnRfdmNwdSAqICgqX2dldF9xX2VsZW0pKHN0cnVjdCBs aXN0X2hlYWQgKmVsZW0pLAorICAgIHN0cnVjdCBydF92Y3B1ICpzdmMsIHN0cnVjdCBsaXN0X2hl YWQgKmVsZW0sIHN0cnVjdCBsaXN0X2hlYWQgKnF1ZXVlKQoreworICAgIHN0cnVjdCBsaXN0X2hl YWQgKml0ZXI7CisgICAgaW50IHBvcyA9IDA7CisKKyAgICBsaXN0X2Zvcl9lYWNoKGl0ZXIsIHF1 ZXVlKQorICAgIHsKKyAgICAgICAgc3RydWN0IHJ0X3ZjcHUgKiBpdGVyX3N2YyA9ICgqX2dldF9x X2VsZW0pKGl0ZXIpOworICAgICAgICBpZiAoIHN2Yy0+Y3VyX2RlYWRsaW5lIDw9IGl0ZXJfc3Zj LT5jdXJfZGVhZGxpbmUgKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgcG9zKys7Cisg ICAgfQorCisgICAgbGlzdF9hZGRfdGFpbChlbGVtLCBpdGVyKTsKKyAgICByZXR1cm4gIXBvczsK IH0KIAogLyoKQEAgLTM5Nyw3ICs0OTMsNiBAQCBfX3J1bnFfaW5zZXJ0KGNvbnN0IHN0cnVjdCBz Y2hlZHVsZXIgKm9wcywgc3RydWN0IHJ0X3ZjcHUgKnN2YykKIHsKICAgICBzdHJ1Y3QgcnRfcHJp dmF0ZSAqcHJ2ID0gcnRfcHJpdihvcHMpOwogICAgIHN0cnVjdCBsaXN0X2hlYWQgKnJ1bnEgPSBy dF9ydW5xKG9wcyk7Ci0gICAgc3RydWN0IGxpc3RfaGVhZCAqaXRlcjsKIAogICAgIEFTU0VSVCgg c3Bpbl9pc19sb2NrZWQoJnBydi0+bG9jaykgKTsKIApAQCAtNDA1LDIyICs1MDAsMzggQEAgX19y dW5xX2luc2VydChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBydF92Y3B1ICpz dmMpCiAKICAgICAvKiBhZGQgc3ZjIHRvIHJ1bnEgaWYgc3ZjIHN0aWxsIGhhcyBidWRnZXQgKi8K ICAgICBpZiAoIHN2Yy0+Y3VyX2J1ZGdldCA+IDAgKQotICAgIHsKLSAgICAgICAgbGlzdF9mb3Jf ZWFjaChpdGVyLCBydW5xKQotICAgICAgICB7Ci0gICAgICAgICAgICBzdHJ1Y3QgcnRfdmNwdSAq IGl0ZXJfc3ZjID0gX19xX2VsZW0oaXRlcik7Ci0gICAgICAgICAgICBpZiAoIHN2Yy0+Y3VyX2Rl YWRsaW5lIDw9IGl0ZXJfc3ZjLT5jdXJfZGVhZGxpbmUgKQotICAgICAgICAgICAgICAgICAgICBi cmVhazsKLSAgICAgICAgIH0KLSAgICAgICAgbGlzdF9hZGRfdGFpbCgmc3ZjLT5xX2VsZW0sIGl0 ZXIpOwotICAgIH0KKyAgICAgICAgZGVhZGxpbmVfcXVldWVfaW5zZXJ0KCZfX3FfZWxlbSwgc3Zj LCAmc3ZjLT5xX2VsZW0sIHJ1bnEpOwogICAgIGVsc2UKICAgICB7CiAgICAgICAgIGxpc3RfYWRk KCZzdmMtPnFfZWxlbSwgJnBydi0+ZGVwbGV0ZWRxKTsKKyAgICAgICAgQVNTRVJUKCBfX3ZjcHVf b25fcmVwbHEoc3ZjKSApOwogICAgIH0KIH0KIAogLyoKKyAqIEluc2VydCBzdmMgaW50byB0aGUg cmVwbGVuaXNobWVudCBldmVudCBsaXN0CisgKiBpbiByZXBsZW5pc2htZW50IHRpbWUgb3JkZXIu CisgKiB2Y3B1cyB0aGF0IG5lZWQgdG8gYmUgcmVwbGlzaGVkIGVhcmxpZXIgZ28gZmlyc3QuCisg KiBUaGUgdGltZXIgbWF5IGJlIHJlLXByb2dyYW1tZWQgaWYgc3ZjIGlzIGluc2VydGVkCisgKiBh dCB0aGUgZnJvbnQgb2YgdGhlIGV2ZW50IGxpc3QuCisgKi8KK3N0YXRpYyB2b2lkCitfX3JlcGxx X2luc2VydChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBydF92Y3B1ICpzdmMp Cit7CisgICAgc3RydWN0IGxpc3RfaGVhZCAqcmVwbHEgPSBydF9yZXBscShvcHMpOworICAgIHN0 cnVjdCBydF9wcml2YXRlICpwcnYgPSBydF9wcml2KG9wcyk7CisgICAgc3RydWN0IHRpbWVyICpy ZXBsX3RpbWVyID0gcHJ2LT5yZXBsX3RpbWVyOworICAgIGludCBzZXQ7CisKKyAgICBBU1NFUlQo ICFfX3ZjcHVfb25fcmVwbHEoc3ZjKSApOworCisgICAgc2V0ID0gZGVhZGxpbmVfcXVldWVfaW5z ZXJ0KCZfX3JlcGxxX2VsZW0sIHN2YywgJnN2Yy0+cmVwbHFfZWxlbSwgcmVwbHEpOworIAorICAg IGlmKCBzZXQgKQorICAgICAgICBzZXRfdGltZXIocmVwbF90aW1lcixzdmMtPmN1cl9kZWFkbGlu ZSk7Cit9CisKKy8qCiAgKiBJbml0L0ZyZWUgcmVsYXRlZCBjb2RlCiAgKi8KIHN0YXRpYyBpbnQK QEAgLTQ0OSwxMSArNTYwLDE4IEBAIHJ0X2luaXQoc3RydWN0IHNjaGVkdWxlciAqb3BzKQogICAg IElOSVRfTElTVF9IRUFEKCZwcnYtPnNkb20pOwogICAgIElOSVRfTElTVF9IRUFEKCZwcnYtPnJ1 bnEpOwogICAgIElOSVRfTElTVF9IRUFEKCZwcnYtPmRlcGxldGVkcSk7CisgICAgSU5JVF9MSVNU X0hFQUQoJnBydi0+cmVwbHEpOwogCiAgICAgY3B1bWFza19jbGVhcigmcHJ2LT50aWNrbGVkKTsK IAogICAgIG9wcy0+c2NoZWRfZGF0YSA9IHBydjsKIAorICAgIC8qIAorICAgICAqIFRoZSB0aW1l ciBpbml0aWFsaXphdGlvbiB3aWxsIGhhcHBlbiBsYXRlciB3aGVuIAorICAgICAqIHRoZSBmaXJz dCBwY3B1IGlzIGFkZGVkIHRvIHRoaXMgcG9vbCBpbiBhbGxvY19wZGF0YQorICAgICAqLworICAg IHBydi0+cmVwbF90aW1lciA9IE5VTEw7CisKICAgICByZXR1cm4gMDsKIAogIG5vX21lbToKQEAg LTQ3Myw2ICs1OTEsMTAgQEAgcnRfZGVpbml0KGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcykK ICAgICAgICAgeGZyZWUoX2NwdW1hc2tfc2NyYXRjaCk7CiAgICAgICAgIF9jcHVtYXNrX3NjcmF0 Y2ggPSBOVUxMOwogICAgIH0KKworICAgIGtpbGxfdGltZXIocHJ2LT5yZXBsX3RpbWVyKTsKKyAg ICB4ZnJlZShwcnYtPnJlcGxfdGltZXIpOworCiAgICAgeGZyZWUocHJ2KTsKIH0KIApAQCAtNDkz LDYgKzYxNSwxNyBAQCBydF9hbGxvY19wZGF0YShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMs IGludCBjcHUpCiAgICAgaWYgKCAhYWxsb2NfY3B1bWFza192YXIoJl9jcHVtYXNrX3NjcmF0Y2hb Y3B1XSkgKQogICAgICAgICByZXR1cm4gTlVMTDsKIAorICAgIGlmKCBwcnYtPnJlcGxfdGltZXIg PT0gTlVMTCApCisgICAgeyAgIAorICAgICAgICAvKiBhbGxvY2F0ZSB0aGUgdGltZXIgb24gdGhl IGZpcnN0IGNwdSBvZiB0aGlzIHBvb2wgKi8KKyAgICAgICAgcHJ2LT5yZXBsX3RpbWVyID0geHph bGxvYyhzdHJ1Y3QgdGltZXIpOworCisgICAgICAgIGlmKHBydi0+cmVwbF90aW1lciA9PSBOVUxM ICkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIGluaXRfdGltZXIocHJ2LT5y ZXBsX3RpbWVyLCByZXBsX2hhbmRsZXIsICh2b2lkICopb3BzLCBjcHUpOworICAgIH0KKwogICAg IC8qIDEgaW5kaWNhdGVzIGFsbG9jLiBzdWNjZWVkIGluIHNjaGVkdWxlLmMgKi8KICAgICByZXR1 cm4gKHZvaWQgKikxOwogfQpAQCAtNTg2LDYgKzcxOSw3IEBAIHJ0X2FsbG9jX3ZkYXRhKGNvbnN0 IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHZjcHUgKnZjLCB2b2lkICpkZCkKICAgICAg ICAgcmV0dXJuIE5VTEw7CiAKICAgICBJTklUX0xJU1RfSEVBRCgmc3ZjLT5xX2VsZW0pOworICAg IElOSVRfTElTVF9IRUFEKCZzdmMtPnJlcGxxX2VsZW0pOwogICAgIHN2Yy0+ZmxhZ3MgPSAwVTsK ICAgICBzdmMtPnNkb20gPSBkZDsKICAgICBzdmMtPnZjcHUgPSB2YzsKQEAgLTYwOSw3ICs3NDMs OCBAQCBydF9mcmVlX3ZkYXRhKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgdm9pZCAqcHJp dikKIH0KIAogLyoKLSAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGluIHNjaGVkX21vdmVfZG9t YWluKCkgaW4gc2NoZWR1bGUuYworICogSXQgaXMgY2FsbGVkIGluIHNjaGVkX21vdmVfZG9tYWlu KCkgYW5kIHNjaGVkX2luaXRfdmNwdQorICogaW4gc2NoZWR1bGUuYwogICogV2hlbiBtb3ZlIGEg ZG9tYWluIHRvIGEgbmV3IGNwdXBvb2wuCiAgKiBJdCBpbnNlcnRzIHZjcHVzIG9mIG1vdmluZyBk b21haW4gdG8gdGhlIHNjaGVkdWxlcidzIFJ1blEgaW4KICAqIGRlc3QuIGNwdXBvb2wuCkBAIC02 NTEsNiArNzg2LDEwIEBAIHJ0X3ZjcHVfcmVtb3ZlKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9w cywgc3RydWN0IHZjcHUgKnZjKQogICAgIGxvY2sgPSB2Y3B1X3NjaGVkdWxlX2xvY2tfaXJxKHZj KTsKICAgICBpZiAoIF9fdmNwdV9vbl9xKHN2YykgKQogICAgICAgICBfX3FfcmVtb3ZlKHN2Yyk7 CisKKyAgICBpZiggX192Y3B1X29uX3JlcGxxKHN2YykgKQorICAgICAgICBfX3JlcGxxX3JlbW92 ZShvcHMsc3ZjKTsKKwogICAgIHZjcHVfc2NoZWR1bGVfdW5sb2NrX2lycShsb2NrLCB2Yyk7CiB9 CiAKQEAgLTc4NSw0NCArOTI0LDYgQEAgX19ydW5xX3BpY2soY29uc3Qgc3RydWN0IHNjaGVkdWxl ciAqb3BzLCBjb25zdCBjcHVtYXNrX3QgKm1hc2spCiB9CiAKIC8qCi0gKiBVcGRhdGUgdmNwdSdz IGJ1ZGdldCBhbmQKLSAqIHNvcnQgcnVucSBieSBpbnNlcnQgdGhlIG1vZGlmZWQgdmNwdSBiYWNr IHRvIHJ1bnEKLSAqIGxvY2sgaXMgZ3JhYmJlZCBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9u Ci0gKi8KLXN0YXRpYyB2b2lkCi1fX3JlcGxfdXBkYXRlKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIg Km9wcywgc190aW1lX3Qgbm93KQotewotICAgIHN0cnVjdCBsaXN0X2hlYWQgKnJ1bnEgPSBydF9y dW5xKG9wcyk7Ci0gICAgc3RydWN0IGxpc3RfaGVhZCAqZGVwbGV0ZWRxID0gcnRfZGVwbGV0ZWRx KG9wcyk7Ci0gICAgc3RydWN0IGxpc3RfaGVhZCAqaXRlcjsKLSAgICBzdHJ1Y3QgbGlzdF9oZWFk ICp0bXA7Ci0gICAgc3RydWN0IHJ0X3ZjcHUgKnN2YyA9IE5VTEw7Ci0KLSAgICBsaXN0X2Zvcl9l YWNoX3NhZmUoaXRlciwgdG1wLCBydW5xKQotICAgIHsKLSAgICAgICAgc3ZjID0gX19xX2VsZW0o aXRlcik7Ci0gICAgICAgIGlmICggbm93IDwgc3ZjLT5jdXJfZGVhZGxpbmUgKQotICAgICAgICAg ICAgYnJlYWs7Ci0KLSAgICAgICAgcnRfdXBkYXRlX2RlYWRsaW5lKG5vdywgc3ZjKTsKLSAgICAg ICAgLyogcmVpbnNlcnQgdGhlIHZjcHUgaWYgaXRzIGRlYWRsaW5lIGlzIHVwZGF0ZWQgKi8KLSAg ICAgICAgX19xX3JlbW92ZShzdmMpOwotICAgICAgICBfX3J1bnFfaW5zZXJ0KG9wcywgc3ZjKTsK LSAgICB9Ci0KLSAgICBsaXN0X2Zvcl9lYWNoX3NhZmUoaXRlciwgdG1wLCBkZXBsZXRlZHEpCi0g ICAgewotICAgICAgICBzdmMgPSBfX3FfZWxlbShpdGVyKTsKLSAgICAgICAgaWYgKCBub3cgPj0g c3ZjLT5jdXJfZGVhZGxpbmUgKQotICAgICAgICB7Ci0gICAgICAgICAgICBydF91cGRhdGVfZGVh ZGxpbmUobm93LCBzdmMpOwotICAgICAgICAgICAgX19xX3JlbW92ZShzdmMpOyAvKiByZW1vdmUg ZnJvbSBkZXBsZXRlZCBxdWV1ZSAqLwotICAgICAgICAgICAgX19ydW5xX2luc2VydChvcHMsIHN2 Yyk7IC8qIGFkZCB0byBydW5xICovCi0gICAgICAgIH0KLSAgICB9Ci19Ci0KLS8qCiAgKiBzY2hl ZHVsZSBmdW5jdGlvbiBmb3IgcnQgc2NoZWR1bGVyLgogICogVGhlIGxvY2sgaXMgYWxyZWFkeSBn cmFiYmVkIGluIHNjaGVkdWxlLmMsIG5vIG5lZWQgdG8gbG9jayBoZXJlCiAgKi8KQEAgLTg0MSw3 ICs5NDIsNiBAQCBydF9zY2hlZHVsZShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHNfdGlt ZV90IG5vdywgYm9vbF90IHRhc2tsZXRfd29ya19zY2hlZAogICAgIC8qIGJ1cm5fYnVkZ2V0IHdv dWxkIHJldHVybiBmb3IgSURMRSBWQ1BVICovCiAgICAgYnVybl9idWRnZXQob3BzLCBzY3Vyciwg bm93KTsKIAotICAgIF9fcmVwbF91cGRhdGUob3BzLCBub3cpOwogCiAgICAgaWYgKCB0YXNrbGV0 X3dvcmtfc2NoZWR1bGVkICkKICAgICB7CkBAIC04NjgsNiArOTY4LDggQEAgcnRfc2NoZWR1bGUo Y29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzX3RpbWVfdCBub3csIGJvb2xfdCB0YXNrbGV0 X3dvcmtfc2NoZWQKICAgICAgICAgc2V0X2JpdChfX1JURFNfZGVsYXllZF9ydW5xX2FkZCwgJnNj dXJyLT5mbGFncyk7CiAKICAgICBzbmV4dC0+bGFzdF9zdGFydCA9IG5vdzsKKworICAgIHJldC50 aW1lID0gIC0xOyAvKiBpZiBhbiBpZGxlIHZjcHUgaXMgcGlja2VkICovIAogICAgIGlmICggIWlz X2lkbGVfdmNwdShzbmV4dC0+dmNwdSkgKQogICAgIHsKICAgICAgICAgaWYgKCBzbmV4dCAhPSBz Y3VyciApCkBAIC04ODAsOSArOTgyLDExIEBAIHJ0X3NjaGVkdWxlKGNvbnN0IHN0cnVjdCBzY2hl ZHVsZXIgKm9wcywgc190aW1lX3Qgbm93LCBib29sX3QgdGFza2xldF93b3JrX3NjaGVkCiAgICAg ICAgICAgICBzbmV4dC0+dmNwdS0+cHJvY2Vzc29yID0gY3B1OwogICAgICAgICAgICAgcmV0Lm1p Z3JhdGVkID0gMTsKICAgICAgICAgfQorCisgICAgICAgIHJldC50aW1lID0gc25leHQtPmJ1ZGdl dDsgLyogaW52b2tlIHRoZSBzY2hlZHVsZXIgbmV4dCB0aW1lICovCisKICAgICB9CiAKLSAgICBy ZXQudGltZSA9IE1JTihzbmV4dC0+YnVkZ2V0LCBNQVhfU0NIRURVTEUpOyAvKiBzY2hlZCBxdWFu dHVtICovCiAgICAgcmV0LnRhc2sgPSBzbmV4dC0+dmNwdTsKIAogICAgIC8qIFRSQUNFICovCkBA IC05MjQsNiArMTAyOCw4IEBAIHJ0X3ZjcHVfc2xlZXAoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAq b3BzLCBzdHJ1Y3QgdmNwdSAqdmMpCiAgICAgICAgIF9fcV9yZW1vdmUoc3ZjKTsKICAgICBlbHNl IGlmICggc3ZjLT5mbGFncyAmIFJURFNfZGVsYXllZF9ydW5xX2FkZCApCiAgICAgICAgIGNsZWFy X2JpdChfX1JURFNfZGVsYXllZF9ydW5xX2FkZCwgJnN2Yy0+ZmxhZ3MpOworCisgICAgX19yZXBs cV9yZW1vdmUob3BzLCBzdmMpOwogfQogCiAvKgpAQCAtMTAyNiwxMCArMTEzMiw2IEBAIHJ0X3Zj cHVfd2FrZShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCB2Y3B1ICp2YykKIHsK ICAgICBzdHJ1Y3QgcnRfdmNwdSAqIGNvbnN0IHN2YyA9IHJ0X3ZjcHUodmMpOwogICAgIHNfdGlt ZV90IG5vdyA9IE5PVygpOwotICAgIHN0cnVjdCBydF9wcml2YXRlICpwcnYgPSBydF9wcml2KG9w cyk7Ci0gICAgc3RydWN0IHJ0X3ZjcHUgKnNuZXh0ID0gTlVMTDsgLyogaGlnaGVzdCBwcmlvcml0 eSBvbiBSdW5RICovCi0gICAgc3RydWN0IHJ0X2RvbSAqc2RvbSA9IE5VTEw7Ci0gICAgY3B1bWFz a190ICpvbmxpbmU7CiAKICAgICBCVUdfT04oIGlzX2lkbGVfdmNwdSh2YykgKTsKIApAQCAtMTA1 MSw2ICsxMTUzLDIyIEBAIHJ0X3ZjcHVfd2FrZShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMs IHN0cnVjdCB2Y3B1ICp2YykKICAgICBlbHNlCiAgICAgICAgIFNDSEVEX1NUQVRfQ1JBTksodmNw dV93YWtlX25vdF9ydW5uYWJsZSk7CiAKKyAgICAvKgorICAgICAqIElmIGEgZGVhZGxpbmUgcGFz c2VkIHdoaWxlIHN2YyB3YXMgYXNsZWVwL2Jsb2NrZWQsIHdlIG5lZWQgbmV3CisgICAgICogc2No ZWR1bGluZyBwYXJhbWV0ZXJzICggYSBuZXcgZGVhZGxpbmUgYW5kIGZ1bGwgYnVkZ2V0KSwgYW5k CisgICAgICogYWxzbyBhIG5ldyByZXBsZW5pc2htZW50IGV2ZW50CisgICAgICovCisgICAgaWYg KCBub3cgPj0gc3ZjLT5jdXJfZGVhZGxpbmUpCisgICAgeyAgIAorICAgICAgICBydF91cGRhdGVf ZGVhZGxpbmUobm93LCBzdmMpOworICAgICAgICBfX3JlcGxxX3JlbW92ZShvcHMsIHN2Yyk7Cisg ICAgfQorCisgICAgaWYoICFfX3ZjcHVfb25fcmVwbHEoc3ZjKSApCisgICAgeworICAgICAgICBf X3JlcGxxX2luc2VydChvcHMsIHN2Yyk7CisgICAgICAgIEFTU0VSVCggdmNwdV9ydW5uYWJsZSh2 YykgKTsKKyAgICB9CiAgICAgLyogSWYgY29udGV4dCBoYXNuJ3QgYmVlbiBzYXZlZCBmb3IgdGhp cyB2Y3B1IHlldCwgd2UgY2FuJ3QgcHV0IGl0IG9uCiAgICAgICogdGhlIFJ1bnF1ZXVlL0RlcGxl dGVkUS4gSW5zdGVhZCwgd2Ugc2V0IGEgZmxhZyBzbyB0aGF0IGl0IHdpbGwgYmUKICAgICAgKiBw dXQgb24gdGhlIFJ1bnF1ZXVlL0RlcGxldGVkUSBhZnRlciB0aGUgY29udGV4dCBoYXMgYmVlbiBz YXZlZC4KQEAgLTEwNjEsMjIgKzExNzksMTAgQEAgcnRfdmNwdV93YWtlKGNvbnN0IHN0cnVjdCBz Y2hlZHVsZXIgKm9wcywgc3RydWN0IHZjcHUgKnZjKQogICAgICAgICByZXR1cm47CiAgICAgfQog Ci0gICAgaWYgKCBub3cgPj0gc3ZjLT5jdXJfZGVhZGxpbmUpCi0gICAgICAgIHJ0X3VwZGF0ZV9k ZWFkbGluZShub3csIHN2Yyk7Ci0KICAgICAvKiBpbnNlcnQgc3ZjIHRvIHJ1bnEvZGVwbGV0ZWRx IGJlY2F1c2Ugc3ZjIGlzIG5vdCBpbiBxdWV1ZSBub3cgKi8KICAgICBfX3J1bnFfaW5zZXJ0KG9w cywgc3ZjKTsKIAotICAgIF9fcmVwbF91cGRhdGUob3BzLCBub3cpOwotCi0gICAgQVNTRVJUKCFs aXN0X2VtcHR5KCZwcnYtPnNkb20pKTsKLSAgICBzZG9tID0gbGlzdF9lbnRyeShwcnYtPnNkb20u bmV4dCwgc3RydWN0IHJ0X2RvbSwgc2RvbV9lbGVtKTsKLSAgICBvbmxpbmUgPSBjcHVwb29sX2Rv bWFpbl9jcHVtYXNrKHNkb20tPmRvbSk7Ci0gICAgc25leHQgPSBfX3J1bnFfcGljayhvcHMsIG9u bGluZSk7IC8qIHBpY2sgc25leHQgZnJvbSBBTEwgdmFsaWQgY3B1cyAqLwotCi0gICAgcnVucV90 aWNrbGUob3BzLCBzbmV4dCk7Ci0KLSAgICByZXR1cm47CisgICAgcnVucV90aWNrbGUob3BzLCBz dmMpOwogfQogCiAvKgpAQCAtMTA4NywxMCArMTE5Myw2IEBAIHN0YXRpYyB2b2lkCiBydF9jb250 ZXh0X3NhdmVkKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHZjcHUgKnZjKQog ewogICAgIHN0cnVjdCBydF92Y3B1ICpzdmMgPSBydF92Y3B1KHZjKTsKLSAgICBzdHJ1Y3QgcnRf dmNwdSAqc25leHQgPSBOVUxMOwotICAgIHN0cnVjdCBydF9kb20gKnNkb20gPSBOVUxMOwotICAg IHN0cnVjdCBydF9wcml2YXRlICpwcnYgPSBydF9wcml2KG9wcyk7Ci0gICAgY3B1bWFza190ICpv bmxpbmU7CiAgICAgc3BpbmxvY2tfdCAqbG9jayA9IHZjcHVfc2NoZWR1bGVfbG9ja19pcnEodmMp OwogCiAgICAgY2xlYXJfYml0KF9fUlREU19zY2hlZHVsZWQsICZzdmMtPmZsYWdzKTsKQEAgLTEx MDIsMTQgKzEyMDQsNyBAQCBydF9jb250ZXh0X3NhdmVkKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIg Km9wcywgc3RydWN0IHZjcHUgKnZjKQogICAgICAgICAgbGlrZWx5KHZjcHVfcnVubmFibGUodmMp KSApCiAgICAgewogICAgICAgICBfX3J1bnFfaW5zZXJ0KG9wcywgc3ZjKTsKLSAgICAgICAgX19y ZXBsX3VwZGF0ZShvcHMsIE5PVygpKTsKLQotICAgICAgICBBU1NFUlQoIWxpc3RfZW1wdHkoJnBy di0+c2RvbSkpOwotICAgICAgICBzZG9tID0gbGlzdF9lbnRyeShwcnYtPnNkb20ubmV4dCwgc3Ry dWN0IHJ0X2RvbSwgc2RvbV9lbGVtKTsKLSAgICAgICAgb25saW5lID0gY3B1cG9vbF9kb21haW5f Y3B1bWFzayhzZG9tLT5kb20pOwotICAgICAgICBzbmV4dCA9IF9fcnVucV9waWNrKG9wcywgb25s aW5lKTsgLyogcGljayBzbmV4dCBmcm9tIEFMTCBjcHVzICovCi0KLSAgICAgICAgcnVucV90aWNr bGUob3BzLCBzbmV4dCk7CisgICAgICAgIHJ1bnFfdGlja2xlKG9wcywgc3ZjKTsKICAgICB9CiBv dXQ6CiAgICAgdmNwdV9zY2hlZHVsZV91bmxvY2tfaXJxKGxvY2ssIHZjKTsKQEAgLTExNjgsNiAr MTI2Myw3MSBAQCBydF9kb21fY250bCgKICAgICByZXR1cm4gcmM7CiB9CiAKKy8qCisgKiBUaGUg cmVwbGVuaXNobWVudCB0aW1lciBoYW5kbGVyIHBpY2tzIHZjcHVzCisgKiBmcm9tIHRoZSByZXBs cSBhbmQgZG9lcyB0aGUgYWN0dWFsIHJlcGxlbmlzaG1lbnQKKyAqLworc3RhdGljIHZvaWQgcmVw bF9oYW5kbGVyKHZvaWQgKmRhdGEpeworICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CisgICAgc190 aW1lX3Qgbm93ID0gTk9XKCk7CisgICAgc3RydWN0IHNjaGVkdWxlciAqb3BzID0gZGF0YTsgCisg ICAgc3RydWN0IHJ0X3ByaXZhdGUgKnBydiA9IHJ0X3ByaXYob3BzKTsKKyAgICBzdHJ1Y3QgbGlz dF9oZWFkICpyZXBscSA9IHJ0X3JlcGxxKG9wcyk7CisgICAgc3RydWN0IHRpbWVyICpyZXBsX3Rp bWVyID0gcHJ2LT5yZXBsX3RpbWVyOworICAgIHN0cnVjdCBsaXN0X2hlYWQgKml0ZXIsICp0bXA7 CisgICAgc3RydWN0IHJ0X3ZjcHUgKnN2YyA9IE5VTEw7CisKKyAgICBzcGluX2xvY2tfaXJxc2F2 ZSgmcHJ2LT5sb2NrLCBmbGFncyk7CisKKyAgICBzdG9wX3RpbWVyKHJlcGxfdGltZXIpOworCisg ICAgbGlzdF9mb3JfZWFjaF9zYWZlKGl0ZXIsIHRtcCwgcmVwbHEpCisgICAgeworICAgICAgICBz dmMgPSBfX3JlcGxxX2VsZW0oaXRlcik7CisKKyAgICAgICAgaWYgKCBub3cgPCBzdmMtPmN1cl9k ZWFkbGluZSApCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBydF91cGRhdGVfZGVhZGxp bmUobm93LCBzdmMpOworCisgICAgICAgIC8qCisgICAgICAgICAqIHdoZW4gdGhlIHJlcGxlbmlz aG1lbnQgaGFwcGVucworICAgICAgICAgKiBzdmMgaXMgZWl0aGVyIG9uIGEgcGNwdSBvciBvbgor ICAgICAgICAgKiBydW5xL2RlcGxldGVkcQorICAgICAgICAgKi8KKyAgICAgICAgaWYoIF9fdmNw dV9vbl9xKHN2YykgKQorICAgICAgICB7CisgICAgICAgICAgICAvKiBwdXQgYmFjayB0byBydW5x ICovCisgICAgICAgICAgICBfX3FfcmVtb3ZlKHN2Yyk7CisgICAgICAgICAgICBfX3J1bnFfaW5z ZXJ0KG9wcywgc3ZjKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIAorICAgICAgICAgKiB0aWNr bGUgcmVnYXJkbGVzcyB3aGVyZSBpdCdzIGF0IAorICAgICAgICAgKiBiZWNhdXNlIGEgcnVubmlu ZyB2Y3B1IGNvdWxkIGhhdmUKKyAgICAgICAgICogYSBsYXRlciBkZWFkbGluZSB0aGFuIG90aGVy cyBhZnRlcgorICAgICAgICAgKiByZXBsZW5pc2htZW50CisgICAgICAgICAqLworICAgICAgICBy dW5xX3RpY2tsZShvcHMsIHN2Yyk7CisKKyAgICAgICAgLyogCisgICAgICAgICAqIHVwZGF0ZSBy ZXBsZW5pc2htZW50IGV2ZW50IHF1ZXVlCisgICAgICAgICAqIHdpdGhvdXQgcmVwcm9ncmFtbWlu ZyB0aGUgdGltZXIKKyAgICAgICAgICovCisgICAgICAgIGRlYWRsaW5lX3F1ZXVlX3JlbW92ZSgm c3ZjLT5yZXBscV9lbGVtKTsKKyAgICAgICAgZGVhZGxpbmVfcXVldWVfaW5zZXJ0KCZfX3JlcGxx X2VsZW0sIHN2YywgJnN2Yy0+cmVwbHFfZWxlbSwgcmVwbHEpOworICAgIH0KKworICAgIC8qIAor ICAgICAqIHVzZSB0aGUgdmNwdSB0aGF0J3Mgb24gdGhlIHRvcAorICAgICAqIG9yIGVsc2UgZG9u J3QgcHJvZ3JhbSB0aGUgdGltZXIKKyAgICAgKi8KKyAgICBpZiggIWxpc3RfZW1wdHkocmVwbHEp ICkKKyAgICAgICAgc2V0X3RpbWVyKHJlcGxfdGltZXIsIF9fcmVwbHFfZWxlbShyZXBscS0+bmV4 dCktPmN1cl9kZWFkbGluZSk7CisKKyAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwcnYtPmxv Y2ssIGZsYWdzKTsKK30KKwogc3RhdGljIHN0cnVjdCBydF9wcml2YXRlIF9ydF9wcml2OwogCiBz dGF0aWMgY29uc3Qgc3RydWN0IHNjaGVkdWxlciBzY2hlZF9ydGRzX2RlZiA9IHsKLS0gCjEuNy45 LjUKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4t ZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54 ZW4ub3JnL3hlbi1kZXZlbAo=