From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tianyang Chen Subject: [PATCH v9]xen: sched: convert RTDS from time to event driven model Date: Mon, 14 Mar 2016 20:04:35 -0400 Message-ID: <1458000275-4237-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 1afcUE-00045I-HO for xen-devel@lists.xenproject.org; Tue, 15 Mar 2016 00:05:22 +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 ZW50IHF1ZXVlIGhhcyBiZWVuIGFkZGVkIHRvIGtlZXAgdHJhY2sgb2YgYWxsIHZjcHVzIHRoYXQK YXJlIHJ1bm5hYmxlLgoKVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgaGF2ZSBtYWpvciBjaGFuZ2Vz IHRvIG1hbmFnZSB0aGUgcmVwbGVuaXNobWVudApldmVudHMgYW5kIHRpbWVyLgoKcmVwbF9oYW5k bGVyKCk6IEl0IGlzIGEgdGltZXIgaGFuZGxlciB3aGljaCBpcyByZS1wcm9ncmFtbWVkCnRvIGZp cmUgYXQgdGhlIG5lYXJlc3QgdmNwdSBkZWFkbGluZSB0byByZXBsZW5pc2ggdmNwdXMuCgpydF9z Y2hlZHVsZSgpOiBwaWNrcyB0aGUgaGlnaGVzdCBydW5uYWJsZSB2Y3B1IGJhc2VkIG9uIGNwdQph ZmZpbml0eSBhbmQgcmV0LnRpbWUgd2lsbCBiZSBwYXNzZWQgdG8gc2NoZWR1bGUoKS4gSWYgYW4g aWRsZQp2Y3B1IGlzIHBpY2tlZCwgLTEgaXMgcmV0dXJuZWQgdG8gYXZvaWQgYnVzeS13YWl0aW5n LiByZXBsX3VwZGF0ZSgpCmhhcyBiZWVuIHJlbW92ZWQuCgpydF92Y3B1X3dha2UoKTogd2hlbiBh IHZjcHUgd2FrZXMgdXAsIGl0IHRpY2tsZXMgaW5zdGVhZCBvZgpwaWNraW5nIG9uZSBmcm9tIHRo ZSBydW4gcXVldWUuCgpydF9jb250ZXh0X3NhdmVkKCk6IHdoZW4gY29udGV4dCBzd2l0Y2hpbmcg aXMgZmluaXNoZWQsIHRoZQpwcmVlbXB0ZWQgdmNwdSB3aWxsIGJlIHB1dCBiYWNrIGludG8gdGhl IHJ1bnEuCgpTaW1wbGlmaWVkIGZ1bnRpb25hbCBncmFwaDoKCnNjaGVkdWxlLmMgU0NIRURVTEVf U09GVElSUToKICAgIHJ0X3NjaGVkdWxlKCk6CiAgICAgICAgW3NwaW5fbG9ja10KICAgICAgICBi dXJuX2J1ZGdldChzY3VycikKICAgICAgICBzbmV4dCA9IHJ1bnFfcGljaygpCiAgICAgICAgW3Nw aW5fdW5sb2NrXQoKc2NoZWRfcnQuYyBUSU1FUl9TT0ZUSVJRCiAgICByZXBsZW5pc2htZW50X3Rp bWVyX2hhbmRsZXIoKQogICAgICAgIFtzcGluX2xvY2tdCiAgICAgICAgPGZvcl9lYWNoX3ZjcHVf b25fcShpKT4gewogICAgICAgICAgICByZXBsZW5pc2goaSkKICAgICAgICAgICAgcnVucV90aWNr bGUoaSkKICAgICAgICB9PgogICAgICAgIHByb2dyYW1fdGltZXIoKQogICAgICAgIFtzcGluX2xv Y2tdCgpTaWduZWQtb2ZmLWJ5OiBUaWFueWFuZyBDaGVuIDx0aWNoZUBzZWFzLnVwZW5uLmVkdT4K U2lnbmVkLW9mZi1ieTogTWVuZyBYdSA8bWVuZ3h1QGNpcy51cGVubi5lZHU+ClNpZ25lZC1vZmYt Ynk6IERhZ2FlbiBHb2xvbWIgPGRnb2xvbWJAc2Vhcy51cGVubi5lZHU+Ci0tLQpjaGFuZ2VzIHNp bmNlIHY4OgogICAgUmVwbGFjZWQgc3Bpbl9sb2NrX2lycXNhdmUgd2l0aCBzcGluX2xvY2tfaXJx LgogICAgQnVnIGZpeCBpbiBidXJuX2J1ZGdldCgpIHdoZXJlIGJ1ZGdldCA9PSAwLgogICAgUmVt b3ZlZCB1bm5lY2Vzc2FyeSB0aWNrbGluZyBpbiB0aGUgdGltZXIgaGFuZGxlciB3aGVuCiAgICB2 Y3B1cyBoYXZlIHRoZSBzYW1lIGRlYWRsaW5lLgoKY2hhbmdlcyBzaW5jZSB2NzoKICAgIENvZGlu ZyBzeXRsZS4KICAgIEFkZGVkIGEgZmxhZyB0byBpbmRpY2F0ZSB0aGF0IGEgdmNwdSB3YXMgZGVw bGV0ZWQuCiAgICBBZGRlZCBhIGxvY2FsIGxpc3QgaW5jbHVkaW5nIHVwZGF0ZWQgdmNwdXMgaW4g dGhlCiAgICB0aW1lciBoYW5kbGVyLiBJdCBpcyB1c2VkIHRvIGRlY2lkZSB3aGljaCB2Y3B1IHNo b3VsZAogICAgdGlja2xlLgoKY2hhbmdlcyBzaW5jZSB2NjoKICAgIFJlbW92ZWQgdW5uZWNlc3Nh cnkgdmNwdV9vbl9xKCkgY2hlY2tzIGZvciBydW5xX2luc2VydCgpCiAgICBSZW5hbWVkIHJlcGxl bmlzaG1lbnQgcXVldWUgcmVsYXRlZCBmdW5jdGlvbnMgd2l0aG91dAogICAgdW5kZXJzY29yZXMK ICAgIE5ldyByZXBscV9yZWluc2VydCgpIGZ1bmN0aW9uIGZvciBydF92Y3B1X3dha2UoKQoKY2hh bmdlcyBzaW5jZSB2NToKICAgIFJlbW92ZWQgdW5uZWNlc3NhcnkgdmNwdV9vbl9yZXBscSgpIGNo ZWNrcwogICAgZGVhZGxpbmVfcXVldWVfaW5zZXJ0KCkgcmV0dXJucyBhIGZsYWcgdG8gaW5kaWNh dGUgaWYgaXQncwogICAgbmVlZGVkIHRvIHJlLXByb2dyYW0gdGhlIHRpbWVyCiAgICBSZW1vdmVk IHVubmVjZXNzYXJ5IHRpbWVyIGNoZWNrcwogICAgQWRkZWQgaGVscGVyIGZ1bmN0aW9ucyB0byBy ZW1vdmUgdmNwdXMgZnJvbSBxdWV1ZXMKICAgIGNvZGluZyBzdHlsZQoKQ2hhbmdlcyBzaW5jZSB2 NDoKICAgIHJlbW92ZWQgdW5uZWNlc3NhcnkgcmVwbGVuaXNobWVudCBxdWV1ZSBjaGVja3MgaW4g dmNwdV93YWtlKCkKICAgIGV4dGVuZGVkIHJlcGxxX3JlbW92ZSgpIHRvIGFsbCBjYXNlcyBpbiB2 Y3B1X3NsZWVwKCkKICAgIHVzZWQgX2RlYWRsaW5lX3F1ZXVlX2luc2VydCgpIGhlbHBlciBmdW5j dGlvbiBmb3IgYm90aCBxdWV1ZXMKICAgIF9yZXBscV9pbnNlcnQoKSBhbmQgX3JlcGxxX3JlbW92 ZSgpIHByb2dyYW0gdGltZXIgaW50ZXJuYWxseQoKQ2hhbmdlcyBzaW5jZSB2MzoKICAgIHJlbW92 ZWQgcnVubmluZyBxdWV1ZS4KICAgIGFkZGVkIHJlcGwgcXVldWUgdG8ga2VlcCB0cmFjayBvZiBy ZXBsIGV2ZW50cy4KICAgIHRpbWVyIGlzIG5vdyBwZXIgc2NoZWR1bGVyLgogICAgdGltZXIgaXMg aW5pdCBvbiBhIHZhbGlkIGNwdSBpbiBhIGNwdXBvb2wuCi0tLQogeGVuL2NvbW1vbi9zY2hlZF9y dC5jIHwgIDQzNyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t LS0tCiAxIGZpbGUgY2hhbmdlZCwgMzQxIGluc2VydGlvbnMoKyksIDk2IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vc2NoZWRfcnQuYyBiL3hlbi9jb21tb24vc2NoZWRfcnQu YwppbmRleCBiZmVkMmUyLi5iNDkxOTE1IDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL3NjaGVkX3J0 LmMKKysrIGIveGVuL2NvbW1vbi9zY2hlZF9ydC5jCkBAIC0zLDcgKzMsOSBAQAogICogRURGIHNj aGVkdWxpbmcgaXMgYSByZWFsLXRpbWUgc2NoZWR1bGluZyBhbGdvcml0aG0gdXNlZCBpbiBlbWJl ZGRlZCBmaWVsZC4KICAqCiAgKiBieSBTaXN1IFhpLCAyMDEzLCBXYXNoaW5ndG9uIFVuaXZlcnNp dHkgaW4gU2FpbnQgTG91aXMKLSAqIGFuZCBNZW5nIFh1LCAyMDE0LCBVbml2ZXJzaXR5IG9mIFBl bm5zeWx2YW5pYQorICogTWVuZyBYdSwgMjAxNC0yMDE2LCBVbml2ZXJzaXR5IG9mIFBlbm5zeWx2 YW5pYQorICogVGlhbnlhbmcgQ2hlbiwgMjAxNiwgVW5pdmVyc2l0eSBvZiBQZW5uc3lsdmFuaWEK KyAqIERhZ2FlbiBHb2xvbWIsIDIwMTYsIFVuaXZlcnNpdHkgb2YgUGVubnN5bHZhbmlhCiAgKgog ICogYmFzZWQgb24gdGhlIGNvZGUgb2YgY3JlZGl0IFNjaGVkdWxlcgogICovCkBAIC0xNiw2ICsx OCw3IEBACiAjaW5jbHVkZSA8eGVuL2RlbGF5Lmg+CiAjaW5jbHVkZSA8eGVuL2V2ZW50Lmg+CiAj aW5jbHVkZSA8eGVuL3RpbWUuaD4KKyNpbmNsdWRlIDx4ZW4vdGltZXIuaD4KICNpbmNsdWRlIDx4 ZW4vcGVyZmMuaD4KICNpbmNsdWRlIDx4ZW4vc2NoZWQtaWYuaD4KICNpbmNsdWRlIDx4ZW4vc29m dGlycS5oPgpAQCAtODcsNyArOTAsNyBAQAogI2RlZmluZSBSVERTX0RFRkFVTFRfQlVER0VUICAg ICAoTUlDUk9TRUNTKDQwMDApKQogCiAjZGVmaW5lIFVQREFURV9MSU1JVF9TSElGVCAgICAgIDEw Ci0jZGVmaW5lIE1BWF9TQ0hFRFVMRSAgICAgICAgICAgIChNSUxMSVNFQ1MoMSkpCisKIC8qCiAg KiBGbGFncwogICovCkBAIC0xMTUsNiArMTE4LDE4IEBACiAjZGVmaW5lIFJURFNfZGVsYXllZF9y dW5xX2FkZCAoMTw8X19SVERTX2RlbGF5ZWRfcnVucV9hZGQpCiAKIC8qCisgKiBUaGUgcmVwbGVu aXNobWVudCB0aW1lciBoYW5kbGVyIG5lZWRzIHRvIGNoZWNrIHRoaXMgYml0CisgKiB0byBrbm93 IHdoZXJlIGEgcmVwbGVuaXNoZWQgdmNwdSB3YXMsIHdoZW4gZGVjaWRpbmcgd2hpY2gKKyAqIHZj cHUgc2hvdWxkIHRpY2tsZS4KKyAqIEEgcmVwbGVuaXNoZWQgdmNwdSBzaG91bGQgdGlja2xlIGlm IGl0IHdhcyBtb3ZlZCBmcm9tIHRoZQorICogZGVwbGV0ZWQgcXVldWUgdG8gdGhlIHJ1biBxdWV1 ZS4KKyAqICsgU2V0IGluIGJ1cm5fYnVkZ2V0KCkgaWYgYSB2Y3B1IGhhcyB6ZXJvIGJ1ZGdldCBs ZWZ0LgorICogKyBDbGVhcmVkIGFuZCBjaGVja2VkIGluIHRoZSByZXBlbmlzaG1lbnQgaGFuZGxl ci4KKyAqLworI2RlZmluZSBfX1JURFNfd2FzX2RlcGxldGVkICAgICAzCisjZGVmaW5lIFJURFNf d2FzX2RlcGxldGVkICgxPDxfX1JURFNfd2FzX2RlcGxldGVkKQorCisvKgogICogcnQgdHJhY2lu ZyBldmVudHMgKCJvbmx5IiA1MTIgYXZhaWxhYmxlISkuIENoZWNrCiAgKiBpbmNsdWRlL3B1Ymxp Yy90cmFjZS5oIGZvciBtb3JlIGRldGFpbHMuCiAgKi8KQEAgLTE0Miw2ICsxNTcsOSBAQCBzdGF0 aWMgY3B1bWFza192YXJfdCAqX2NwdW1hc2tfc2NyYXRjaDsKICAqLwogc3RhdGljIHVuc2lnbmVk IGludCBucl9ydF9vcHM7CiAKKy8qIGhhbmRsZXIgZm9yIHRoZSByZXBsZW5pc2htZW50IHRpbWVy ICovCitzdGF0aWMgdm9pZCByZXBsX2hhbmRsZXIodm9pZCAqZGF0YSk7CisKIC8qCiAgKiBTeXN0 bWUtd2lkZSBwcml2YXRlIGRhdGEsIGluY2x1ZGUgZ2xvYmFsIFJ1blF1ZXVlL0RlcGxldGVkUQog ICogR2xvYmFsIGxvY2sgaXMgcmVmZXJlbmNlZCBieSBzY2hlZHVsZV9kYXRhLnNjaGVkdWxlX2xv Y2sgZnJvbSBhbGwKQEAgLTE1Miw3ICsxNzAsOSBAQCBzdHJ1Y3QgcnRfcHJpdmF0ZSB7CiAgICAg c3RydWN0IGxpc3RfaGVhZCBzZG9tOyAgICAgIC8qIGxpc3Qgb2YgYXZhaWxhbGJlIGRvbWFpbnMs IHVzZWQgZm9yIGR1bXAgKi8KICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHJ1bnE7ICAgICAgLyogb3Jk ZXJlZCBsaXN0IG9mIHJ1bm5hYmxlIHZjcHVzICovCiAgICAgc3RydWN0IGxpc3RfaGVhZCBkZXBs ZXRlZHE7IC8qIHVub3JkZXJlZCBsaXN0IG9mIGRlcGxldGVkIHZjcHVzICovCisgICAgc3RydWN0 IGxpc3RfaGVhZCByZXBscTsgICAgIC8qIG9yZGVyZWQgbGlzdCBvZiB2Y3B1cyB0aGF0IG5lZWQg cmVwbGVuaXNobWVudCAqLwogICAgIGNwdW1hc2tfdCB0aWNrbGVkOyAgICAgICAgICAvKiBjcHVz IGJlZW4gdGlja2xlZCAqLworICAgIHN0cnVjdCB0aW1lciAqcmVwbF90aW1lcjsgICAvKiByZXBs ZW5pc2htZW50IHRpbWVyICovCiB9OwogCiAvKgpAQCAtMTYwLDYgKzE4MCw3IEBAIHN0cnVjdCBy dF9wcml2YXRlIHsKICAqLwogc3RydWN0IHJ0X3ZjcHUgewogICAgIHN0cnVjdCBsaXN0X2hlYWQg cV9lbGVtOyAgICAvKiBvbiB0aGUgcnVucS9kZXBsZXRlZHEgbGlzdCAqLworICAgIHN0cnVjdCBs aXN0X2hlYWQgcmVwbHFfZWxlbTsgLyogb24gdGhlIHJlcGwgZXZlbnQgbGlzdCAqLwogCiAgICAg LyogVXAtcG9pbnRlcnMgKi8KICAgICBzdHJ1Y3QgcnRfZG9tICpzZG9tOwpAQCAtMjEzLDggKzIz NCwxNCBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBsaXN0X2hlYWQgKnJ0X2RlcGxldGVkcShjb25z dCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMpCiAgICAgcmV0dXJuICZydF9wcml2KG9wcyktPmRlcGxl dGVkcTsKIH0KIAorc3RhdGljIGlubGluZSBzdHJ1Y3QgbGlzdF9oZWFkICpydF9yZXBscShjb25z dCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMpCit7CisgICAgcmV0dXJuICZydF9wcml2KG9wcyktPnJl cGxxOworfQorCiAvKgotICogUXVldWUgaGVscGVyIGZ1bmN0aW9ucyBmb3IgcnVucSBhbmQgZGVw bGV0ZWRxCisgKiBIZWxwZXIgZnVuY3Rpb25zIGZvciBtYW5pcHVsYXRpbmcgdGhlIHJ1bnF1ZXVl LCB0aGUgZGVwbGV0ZWQgcXVldWUsCisgKiBhbmQgdGhlIHJlcGxlbmlzaG1lbnQgZXZlbnRzIHF1 ZXVlLgogICovCiBzdGF0aWMgaW50CiBfX3ZjcHVfb25fcShjb25zdCBzdHJ1Y3QgcnRfdmNwdSAq c3ZjKQpAQCAtMjI4LDYgKzI1NSwxOCBAQCBfX3FfZWxlbShzdHJ1Y3QgbGlzdF9oZWFkICplbGVt KQogICAgIHJldHVybiBsaXN0X2VudHJ5KGVsZW0sIHN0cnVjdCBydF92Y3B1LCBxX2VsZW0pOwog fQogCitzdGF0aWMgc3RydWN0IHJ0X3ZjcHUgKgorcmVwbHFfZWxlbShzdHJ1Y3QgbGlzdF9oZWFk ICplbGVtKQoreworICAgIHJldHVybiBsaXN0X2VudHJ5KGVsZW0sIHN0cnVjdCBydF92Y3B1LCBy ZXBscV9lbGVtKTsKK30KKworc3RhdGljIGludAordmNwdV9vbl9yZXBscShjb25zdCBzdHJ1Y3Qg cnRfdmNwdSAqc3ZjKQoreworICAgIHJldHVybiAhbGlzdF9lbXB0eSgmc3ZjLT5yZXBscV9lbGVt KTsKK30KKwogLyoKICAqIERlYnVnIHJlbGF0ZWQgY29kZSwgZHVtcCB2Y3B1L2NwdSBpbmZvcm1h dGlvbgogICovCkBAIC0yODgsNyArMzI3LDcgQEAgcnRfZHVtcF9wY3B1KGNvbnN0IHN0cnVjdCBz Y2hlZHVsZXIgKm9wcywgaW50IGNwdSkKIHN0YXRpYyB2b2lkCiBydF9kdW1wKGNvbnN0IHN0cnVj dCBzY2hlZHVsZXIgKm9wcykKIHsKLSAgICBzdHJ1Y3QgbGlzdF9oZWFkICpydW5xLCAqZGVwbGV0 ZWRxLCAqaXRlcjsKKyAgICBzdHJ1Y3QgbGlzdF9oZWFkICpydW5xLCAqZGVwbGV0ZWRxLCAqcmVw bHEsICppdGVyOwogICAgIHN0cnVjdCBydF9wcml2YXRlICpwcnYgPSBydF9wcml2KG9wcyk7CiAg ICAgc3RydWN0IHJ0X3ZjcHUgKnN2YzsKICAgICBzdHJ1Y3QgcnRfZG9tICpzZG9tOwpAQCAtMzAx LDYgKzM0MCw3IEBAIHJ0X2R1bXAoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzKQogCiAgICAg cnVucSA9IHJ0X3J1bnEob3BzKTsKICAgICBkZXBsZXRlZHEgPSBydF9kZXBsZXRlZHEob3BzKTsK KyAgICByZXBscSA9IHJ0X3JlcGxxKG9wcyk7CiAKICAgICBwcmludGsoIkdsb2JhbCBSdW5RdWV1 ZSBpbmZvOlxuIik7CiAgICAgbGlzdF9mb3JfZWFjaCggaXRlciwgcnVucSApCkBAIC0zMTYsNiAr MzU2LDEzIEBAIHJ0X2R1bXAoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzKQogICAgICAgICBy dF9kdW1wX3ZjcHUob3BzLCBzdmMpOwogICAgIH0KIAorICAgIHByaW50aygiR2xvYmFsIFJlcGxl bmlzaG1lbnQgRXZlbnQgaW5mbzpcbiIpOworICAgIGxpc3RfZm9yX2VhY2ggKCBpdGVyLCByZXBs cSApCisgICAgeworICAgICAgICBzdmMgPSByZXBscV9lbGVtKGl0ZXIpOworICAgICAgICBydF9k dW1wX3ZjcHUob3BzLCBzdmMpOworICAgIH0KKwogICAgIHByaW50aygiRG9tYWluIGluZm86XG4i KTsKICAgICBsaXN0X2Zvcl9lYWNoKCBpdGVyLCAmcHJ2LT5zZG9tICkKICAgICB7CkBAIC0zODAs MTEgKzQyNyw3OCBAQCBydF91cGRhdGVfZGVhZGxpbmUoc190aW1lX3Qgbm93LCBzdHJ1Y3QgcnRf dmNwdSAqc3ZjKQogICAgIHJldHVybjsKIH0KIAorLyogCisgKiBBIGhlbHBlciBmdW5jdGlvbiB0 aGF0IG9ubHkgcmVtb3ZlcyBhIHZjcHUgZnJvbSBhIHF1ZXVlIAorICogYW5kIGl0IHJldHVybnMg MSBpZiB0aGUgdmNwdSB3YXMgaW4gZnJvbnQgb2YgdGhlIGxpc3QuCisgKi8KK3N0YXRpYyBpbmxp bmUgaW50CitkZWFkbGluZV9xdWV1ZV9yZW1vdmUoc3RydWN0IGxpc3RfaGVhZCAqcXVldWUsIHN0 cnVjdCBsaXN0X2hlYWQgKmVsZW0pCit7CisgICAgaW50IHBvcyA9IDA7CisKKyAgICBpZiAoIHF1 ZXVlLT5uZXh0ICE9IGVsZW0gKQorICAgICAgICBwb3MgPSAxOworCisgICAgbGlzdF9kZWxfaW5p dChlbGVtKTsKKyAgICByZXR1cm4gIXBvczsKK30KKwogc3RhdGljIGlubGluZSB2b2lkCiBfX3Ff cmVtb3ZlKHN0cnVjdCBydF92Y3B1ICpzdmMpCiB7Ci0gICAgaWYgKCBfX3ZjcHVfb25fcShzdmMp ICkKLSAgICAgICAgbGlzdF9kZWxfaW5pdCgmc3ZjLT5xX2VsZW0pOworICAgIEFTU0VSVCggX192 Y3B1X29uX3Eoc3ZjKSApOworICAgIGxpc3RfZGVsX2luaXQoJnN2Yy0+cV9lbGVtKTsKK30KKwor LyoKKyAqIFJlbW92aW5nIGEgdmNwdSBmcm9tIHRoZSByZXBsZW5pc2htZW50IHF1ZXVlIGNvdWxk CisgKiByZS1wcm9ncmFtIHRoZSB0aW1lciBmb3IgdGhlIG5leHQgcmVwbGVuaXNobWVudCBldmVu dAorICogaWYgaXQgd2FzIGF0IHRoZSBmcm9udCBvZiB0aGUgbGlzdC4KKyAqLworc3RhdGljIGlu bGluZSB2b2lkCitfX3JlcGxxX3JlbW92ZShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0 cnVjdCBydF92Y3B1ICpzdmMpCit7CisgICAgc3RydWN0IHJ0X3ByaXZhdGUgKnBydiA9IHJ0X3By aXYob3BzKTsKKyAgICBzdHJ1Y3QgbGlzdF9oZWFkICpyZXBscSA9IHJ0X3JlcGxxKG9wcyk7Cisg ICAgc3RydWN0IHRpbWVyKiByZXBsX3RpbWVyID0gcHJ2LT5yZXBsX3RpbWVyOworCisgICAgQVNT RVJUKCB2Y3B1X29uX3JlcGxxKHN2YykgKTsKKworICAgIGlmICggZGVhZGxpbmVfcXVldWVfcmVt b3ZlKHJlcGxxLCAmc3ZjLT5yZXBscV9lbGVtKSApCisgICAgeworICAgICAgICAvKiByZS1hcm0g dGhlIHRpbWVyIGZvciB0aGUgbmV4dCByZXBsZW5pc2htZW50IGV2ZW50ICovCisgICAgICAgIGlm ICggIWxpc3RfZW1wdHkocmVwbHEpICkKKyAgICAgICAgeworICAgICAgICAgICAgc3RydWN0IHJ0 X3ZjcHUgKnN2Y19uZXh0ID0gcmVwbHFfZWxlbShyZXBscS0+bmV4dCk7CisgICAgICAgICAgICBz ZXRfdGltZXIocmVwbF90aW1lciwgc3ZjX25leHQtPmN1cl9kZWFkbGluZSk7CisgICAgICAgIH0K KyAgICAgICAgZWxzZQorICAgICAgICAgICAgc3RvcF90aW1lcihyZXBsX3RpbWVyKTsKKyAgICB9 Cit9CisKKy8qCisgKiBBbiB1dGlsaXR5IGZ1bmN0aW9uIHRoYXQgaW5zZXJ0cyBhIHZjcHUgdG8g YQorICogcXVldWUgYmFzZWQgb24gY2VydGFpbiBvcmRlciAoRURGKS4gVGhlIHJldHVybmVkCisg KiB2YWx1ZSBpcyAxIGlmIGEgdmNwdSBoYXMgYmVlbiBpbnNlcnRlZCB0byB0aGUKKyAqIGZyb250 IG9mIGEgbGlzdC4KKyAqLworc3RhdGljIGludAorZGVhZGxpbmVfcXVldWVfaW5zZXJ0KHN0cnVj dCBydF92Y3B1ICogKCpfZ2V0X3FfZWxlbSkoc3RydWN0IGxpc3RfaGVhZCAqZWxlbSksCisgICAg c3RydWN0IHJ0X3ZjcHUgKnN2Yywgc3RydWN0IGxpc3RfaGVhZCAqZWxlbSwgc3RydWN0IGxpc3Rf aGVhZCAqcXVldWUpCit7CisgICAgc3RydWN0IGxpc3RfaGVhZCAqaXRlcjsKKyAgICBpbnQgcG9z ID0gMDsKKworICAgIGxpc3RfZm9yX2VhY2ggKCBpdGVyLCBxdWV1ZSApCisgICAgeworICAgICAg ICBzdHJ1Y3QgcnRfdmNwdSAqIGl0ZXJfc3ZjID0gKCpfZ2V0X3FfZWxlbSkoaXRlcik7CisgICAg ICAgIGlmICggc3ZjLT5jdXJfZGVhZGxpbmUgPD0gaXRlcl9zdmMtPmN1cl9kZWFkbGluZSApCisg ICAgICAgICAgICBicmVhazsKKyAgICAgICAgcG9zKys7CisgICAgfQorICAgIGxpc3RfYWRkX3Rh aWwoZWxlbSwgaXRlcik7CisgICAgcmV0dXJuICFwb3M7CiB9CiAKIC8qCkBAIC0zOTcsMjcgKzUx MSw2MiBAQCBfX3J1bnFfaW5zZXJ0KGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0 IHJ0X3ZjcHUgKnN2YykKIHsKICAgICBzdHJ1Y3QgcnRfcHJpdmF0ZSAqcHJ2ID0gcnRfcHJpdihv cHMpOwogICAgIHN0cnVjdCBsaXN0X2hlYWQgKnJ1bnEgPSBydF9ydW5xKG9wcyk7Ci0gICAgc3Ry dWN0IGxpc3RfaGVhZCAqaXRlcjsKIAogICAgIEFTU0VSVCggc3Bpbl9pc19sb2NrZWQoJnBydi0+ bG9jaykgKTsKLQogICAgIEFTU0VSVCggIV9fdmNwdV9vbl9xKHN2YykgKTsKKyAgICBBU1NFUlQo IHZjcHVfb25fcmVwbHEoc3ZjKSApOwogCiAgICAgLyogYWRkIHN2YyB0byBydW5xIGlmIHN2YyBz dGlsbCBoYXMgYnVkZ2V0ICovCiAgICAgaWYgKCBzdmMtPmN1cl9idWRnZXQgPiAwICkKLSAgICB7 Ci0gICAgICAgIGxpc3RfZm9yX2VhY2goaXRlciwgcnVucSkKLSAgICAgICAgewotICAgICAgICAg ICAgc3RydWN0IHJ0X3ZjcHUgKiBpdGVyX3N2YyA9IF9fcV9lbGVtKGl0ZXIpOwotICAgICAgICAg ICAgaWYgKCBzdmMtPmN1cl9kZWFkbGluZSA8PSBpdGVyX3N2Yy0+Y3VyX2RlYWRsaW5lICkKLSAg ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICB9Ci0gICAgICAgIGxpc3RfYWRkX3Rh aWwoJnN2Yy0+cV9lbGVtLCBpdGVyKTsKLSAgICB9CisgICAgICAgIGRlYWRsaW5lX3F1ZXVlX2lu c2VydCgmX19xX2VsZW0sIHN2YywgJnN2Yy0+cV9lbGVtLCBydW5xKTsKICAgICBlbHNlCi0gICAg ewogICAgICAgICBsaXN0X2FkZCgmc3ZjLT5xX2VsZW0sICZwcnYtPmRlcGxldGVkcSk7Cit9CisK Ky8qCisgKiBJbnNlcnQgc3ZjIGludG8gdGhlIHJlcGxlbmlzaG1lbnQgZXZlbnQgbGlzdAorICog aW4gcmVwbGVuaXNobWVudCB0aW1lIG9yZGVyLgorICogdmNwdXMgdGhhdCBuZWVkIHRvIGJlIHJl cGxpc2hlZCBlYXJsaWVyIGdvIGZpcnN0LgorICogVGhlIHRpbWVyIG1heSBiZSByZS1wcm9ncmFt bWVkIGlmIHN2YyBpcyBpbnNlcnRlZAorICogYXQgdGhlIGZyb250IG9mIHRoZSBldmVudCBsaXN0 LgorICovCitzdGF0aWMgdm9pZAorX19yZXBscV9pbnNlcnQoY29uc3Qgc3RydWN0IHNjaGVkdWxl ciAqb3BzLCBzdHJ1Y3QgcnRfdmNwdSAqc3ZjKQoreworICAgIHN0cnVjdCBsaXN0X2hlYWQgKnJl cGxxID0gcnRfcmVwbHEob3BzKTsKKyAgICBzdHJ1Y3QgcnRfcHJpdmF0ZSAqcHJ2ID0gcnRfcHJp dihvcHMpOworICAgIHN0cnVjdCB0aW1lciAqcmVwbF90aW1lciA9IHBydi0+cmVwbF90aW1lcjsK KworICAgIEFTU0VSVCggIXZjcHVfb25fcmVwbHEoc3ZjKSApOworCisgICAgaWYgKCBkZWFkbGlu ZV9xdWV1ZV9pbnNlcnQoJnJlcGxxX2VsZW0sIHN2YywgJnN2Yy0+cmVwbHFfZWxlbSwgcmVwbHEp ICkKKyAgICAgICAgc2V0X3RpbWVyKHJlcGxfdGltZXIsIHN2Yy0+Y3VyX2RlYWRsaW5lKTsKK30K KworLyoKKyAqIFJlbW92ZXMgYW5kIHJlLWluc2VydHMgYW4gZXZlbnQgdG8gdGhlIHJlcGxlbmlz aG1lbnQgcXVldWUuCisgKi8KK3N0YXRpYyB2b2lkCityZXBscV9yZWluc2VydChjb25zdCBzdHJ1 Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBydF92Y3B1ICpzdmMpCit7CisgICAgc3RydWN0IGxp c3RfaGVhZCAqcmVwbHEgPSBydF9yZXBscShvcHMpOworICAgIHN0cnVjdCBydF9wcml2YXRlICpw cnYgPSBydF9wcml2KG9wcyk7CisgICAgc3RydWN0IHRpbWVyICpyZXBsX3RpbWVyID0gcHJ2LT5y ZXBsX3RpbWVyOworCisgICAgQVNTRVJUKCB2Y3B1X29uX3JlcGxxKHN2YykgKTsKKworICAgIGlm ICggZGVhZGxpbmVfcXVldWVfcmVtb3ZlKHJlcGxxLCAmc3ZjLT5yZXBscV9lbGVtKSApCisgICAg eworICAgICAgICBpZiAoIGRlYWRsaW5lX3F1ZXVlX2luc2VydCgmcmVwbHFfZWxlbSwgc3ZjLCAm c3ZjLT5yZXBscV9lbGVtLCByZXBscSkgKQorICAgICAgICAgICAgc2V0X3RpbWVyKHJlcGxfdGlt ZXIsIHN2Yy0+Y3VyX2RlYWRsaW5lKTsKKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAg ICAgICBzdHJ1Y3QgcnRfdmNwdSAqc3ZjX25leHQgPSByZXBscV9lbGVtKHJlcGxxLT5uZXh0KTsK KyAgICAgICAgICAgIHNldF90aW1lcihyZXBsX3RpbWVyLCBzdmNfbmV4dC0+Y3VyX2RlYWRsaW5l KTsKKyAgICAgICAgfQogICAgIH0KKyAgICBlbHNlIGlmICggZGVhZGxpbmVfcXVldWVfaW5zZXJ0 KCZyZXBscV9lbGVtLCBzdmMsICZzdmMtPnJlcGxxX2VsZW0sIHJlcGxxKSApCisgICAgICAgIHNl dF90aW1lcihyZXBsX3RpbWVyLCBzdmMtPmN1cl9kZWFkbGluZSk7CiB9CiAKIC8qCkBAIC00NDks MTEgKzU5OCwxOCBAQCBydF9pbml0KHN0cnVjdCBzY2hlZHVsZXIgKm9wcykKICAgICBJTklUX0xJ U1RfSEVBRCgmcHJ2LT5zZG9tKTsKICAgICBJTklUX0xJU1RfSEVBRCgmcHJ2LT5ydW5xKTsKICAg ICBJTklUX0xJU1RfSEVBRCgmcHJ2LT5kZXBsZXRlZHEpOworICAgIElOSVRfTElTVF9IRUFEKCZw cnYtPnJlcGxxKTsKIAogICAgIGNwdW1hc2tfY2xlYXIoJnBydi0+dGlja2xlZCk7CiAKICAgICBv cHMtPnNjaGVkX2RhdGEgPSBwcnY7CiAKKyAgICAvKiAKKyAgICAgKiBUaGUgdGltZXIgaW5pdGlh bGl6YXRpb24gd2lsbCBoYXBwZW4gbGF0ZXIgd2hlbiAKKyAgICAgKiB0aGUgZmlyc3QgcGNwdSBp cyBhZGRlZCB0byB0aGlzIHBvb2wgaW4gYWxsb2NfcGRhdGEuCisgICAgICovCisgICAgcHJ2LT5y ZXBsX3RpbWVyID0gTlVMTDsKKwogICAgIHJldHVybiAwOwogCiAgbm9fbWVtOgpAQCAtNDczLDYg KzYyOSwxMCBAQCBydF9kZWluaXQoc3RydWN0IHNjaGVkdWxlciAqb3BzKQogICAgICAgICB4ZnJl ZShfY3B1bWFza19zY3JhdGNoKTsKICAgICAgICAgX2NwdW1hc2tfc2NyYXRjaCA9IE5VTEw7CiAg ICAgfQorCisgICAga2lsbF90aW1lcihwcnYtPnJlcGxfdGltZXIpOworICAgIHhmcmVlKHBydi0+ cmVwbF90aW1lcik7CisKICAgICBvcHMtPnNjaGVkX2RhdGEgPSBOVUxMOwogICAgIHhmcmVlKHBy dik7CiB9CkBAIC00OTQsNiArNjU0LDE3IEBAIHJ0X2FsbG9jX3BkYXRhKGNvbnN0IHN0cnVjdCBz Y2hlZHVsZXIgKm9wcywgaW50IGNwdSkKICAgICBpZiAoICFhbGxvY19jcHVtYXNrX3ZhcigmX2Nw dW1hc2tfc2NyYXRjaFtjcHVdKSApCiAgICAgICAgIHJldHVybiBOVUxMOwogCisgICAgaWYgKCBw cnYtPnJlcGxfdGltZXIgPT0gTlVMTCApCisgICAgeyAgIAorICAgICAgICAvKiBBbGxvY2F0ZSB0 aGUgdGltZXIgb24gdGhlIGZpcnN0IGNwdSBvZiB0aGlzIHBvb2wuICovCisgICAgICAgIHBydi0+ cmVwbF90aW1lciA9IHh6YWxsb2Moc3RydWN0IHRpbWVyKTsKKworICAgICAgICBpZiAoIHBydi0+ cmVwbF90aW1lciA9PSBOVUxMICkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAg IGluaXRfdGltZXIocHJ2LT5yZXBsX3RpbWVyLCByZXBsX2hhbmRsZXIsICh2b2lkICopb3BzLCBj cHUpOworICAgIH0KKwogICAgIC8qIDEgaW5kaWNhdGVzIGFsbG9jLiBzdWNjZWVkIGluIHNjaGVk dWxlLmMgKi8KICAgICByZXR1cm4gKHZvaWQgKikxOwogfQpAQCAtNTg3LDYgKzc1OCw3IEBAIHJ0 X2FsbG9jX3ZkYXRhKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHZjcHUgKnZj LCB2b2lkICpkZCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBJTklUX0xJU1RfSEVBRCgm c3ZjLT5xX2VsZW0pOworICAgIElOSVRfTElTVF9IRUFEKCZzdmMtPnJlcGxxX2VsZW0pOwogICAg IHN2Yy0+ZmxhZ3MgPSAwVTsKICAgICBzdmMtPnNkb20gPSBkZDsKICAgICBzdmMtPnZjcHUgPSB2 YzsKQEAgLTYxMCw3ICs3ODIsOCBAQCBydF9mcmVlX3ZkYXRhKGNvbnN0IHN0cnVjdCBzY2hlZHVs ZXIgKm9wcywgdm9pZCAqcHJpdikKIH0KIAogLyoKLSAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVk IGluIHNjaGVkX21vdmVfZG9tYWluKCkgaW4gc2NoZWR1bGUuYworICogSXQgaXMgY2FsbGVkIGlu IHNjaGVkX21vdmVfZG9tYWluKCkgYW5kIHNjaGVkX2luaXRfdmNwdQorICogaW4gc2NoZWR1bGUu Yy4KICAqIFdoZW4gbW92ZSBhIGRvbWFpbiB0byBhIG5ldyBjcHVwb29sLgogICogSXQgaW5zZXJ0 cyB2Y3B1cyBvZiBtb3ZpbmcgZG9tYWluIHRvIHRoZSBzY2hlZHVsZXIncyBSdW5RIGluCiAgKiBk ZXN0LiBjcHVwb29sLgpAQCAtNjI4LDggKzgwMSwxMyBAQCBydF92Y3B1X2luc2VydChjb25zdCBz dHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCB2Y3B1ICp2YykKICAgICBpZiAoIG5vdyA+PSBz dmMtPmN1cl9kZWFkbGluZSApCiAgICAgICAgIHJ0X3VwZGF0ZV9kZWFkbGluZShub3csIHN2Yyk7 CiAKLSAgICBpZiAoICFfX3ZjcHVfb25fcShzdmMpICYmIHZjcHVfcnVubmFibGUodmMpICYmICF2 Yy0+aXNfcnVubmluZyApCi0gICAgICAgIF9fcnVucV9pbnNlcnQob3BzLCBzdmMpOworICAgIGlm ICggIV9fdmNwdV9vbl9xKHN2YykgJiYgdmNwdV9ydW5uYWJsZSh2YykgKQorICAgIHsKKyAgICAg ICAgX19yZXBscV9pbnNlcnQob3BzLCBzdmMpOworIAorICAgICAgICBpZiAoICF2Yy0+aXNfcnVu bmluZyApCisgICAgICAgICAgICBfX3J1bnFfaW5zZXJ0KG9wcywgc3ZjKTsKKyAgICB9CiAgICAg dmNwdV9zY2hlZHVsZV91bmxvY2tfaXJxKGxvY2ssIHZjKTsKIAogICAgIFNDSEVEX1NUQVRfQ1JB TksodmNwdV9pbnNlcnQpOwpAQCAtNjUyLDYgKzgzMCwxMCBAQCBydF92Y3B1X3JlbW92ZShjb25z dCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCB2Y3B1ICp2YykKICAgICBsb2NrID0gdmNw dV9zY2hlZHVsZV9sb2NrX2lycSh2Yyk7CiAgICAgaWYgKCBfX3ZjcHVfb25fcShzdmMpICkKICAg ICAgICAgX19xX3JlbW92ZShzdmMpOworCisgICAgaWYgKCB2Y3B1X29uX3JlcGxxKHN2YykgKQor ICAgICAgICBfX3JlcGxxX3JlbW92ZShvcHMsc3ZjKTsKKwogICAgIHZjcHVfc2NoZWR1bGVfdW5s b2NrX2lycShsb2NrLCB2Yyk7CiB9CiAKQEAgLTcwNiw4ICs4ODgsMTUgQEAgYnVybl9idWRnZXQo Y29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3QgcnRfdmNwdSAqc3ZjLCBzX3RpbWVf dCBub3cpCiAKICAgICBzdmMtPmN1cl9idWRnZXQgLT0gZGVsdGE7CiAKLSAgICBpZiAoIHN2Yy0+ Y3VyX2J1ZGdldCA8IDAgKQorICAgIGlmICggc3ZjLT5jdXJfYnVkZ2V0IDw9IDAgKQorICAgIHsg ICAgCiAgICAgICAgIHN2Yy0+Y3VyX2J1ZGdldCA9IDA7CisgICAgICAgIC8qIAorICAgICAgICAg KiBTZXQgX19SVERTX3dhc19kZXBsZXRlZCBzbyB0aGUgcmVwbGVuaXNobWVudAorICAgICAgICAg KiBoYW5kbGVyIGNhbiBsZXQgdGhpcyB2Y3B1IHRpY2tsZSBpZiBpdCB3YXMgcmVmaWxsZWQuCisg ICAgICAgICAqLworICAgICAgICBzZXRfYml0KF9fUlREU193YXNfZGVwbGV0ZWQsICZzdmMtPmZs YWdzKTsKKyAgICB9CiAKICAgICAvKiBUUkFDRSAqLwogICAgIHsKQEAgLTc4NCw0NCArOTczLDYg QEAgX19ydW5xX3BpY2soY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBjb25zdCBjcHVtYXNr X3QgKm1hc2spCiB9CiAKIC8qCi0gKiBVcGRhdGUgdmNwdSdzIGJ1ZGdldCBhbmQKLSAqIHNvcnQg cnVucSBieSBpbnNlcnQgdGhlIG1vZGlmZWQgdmNwdSBiYWNrIHRvIHJ1bnEKLSAqIGxvY2sgaXMg Z3JhYmJlZCBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uCi0gKi8KLXN0YXRpYyB2b2lkCi1f X3JlcGxfdXBkYXRlKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc190aW1lX3Qgbm93KQot ewotICAgIHN0cnVjdCBsaXN0X2hlYWQgKnJ1bnEgPSBydF9ydW5xKG9wcyk7Ci0gICAgc3RydWN0 IGxpc3RfaGVhZCAqZGVwbGV0ZWRxID0gcnRfZGVwbGV0ZWRxKG9wcyk7Ci0gICAgc3RydWN0IGxp c3RfaGVhZCAqaXRlcjsKLSAgICBzdHJ1Y3QgbGlzdF9oZWFkICp0bXA7Ci0gICAgc3RydWN0IHJ0 X3ZjcHUgKnN2YyA9IE5VTEw7Ci0KLSAgICBsaXN0X2Zvcl9lYWNoX3NhZmUoaXRlciwgdG1wLCBy dW5xKQotICAgIHsKLSAgICAgICAgc3ZjID0gX19xX2VsZW0oaXRlcik7Ci0gICAgICAgIGlmICgg bm93IDwgc3ZjLT5jdXJfZGVhZGxpbmUgKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAg cnRfdXBkYXRlX2RlYWRsaW5lKG5vdywgc3ZjKTsKLSAgICAgICAgLyogcmVpbnNlcnQgdGhlIHZj cHUgaWYgaXRzIGRlYWRsaW5lIGlzIHVwZGF0ZWQgKi8KLSAgICAgICAgX19xX3JlbW92ZShzdmMp OwotICAgICAgICBfX3J1bnFfaW5zZXJ0KG9wcywgc3ZjKTsKLSAgICB9Ci0KLSAgICBsaXN0X2Zv cl9lYWNoX3NhZmUoaXRlciwgdG1wLCBkZXBsZXRlZHEpCi0gICAgewotICAgICAgICBzdmMgPSBf X3FfZWxlbShpdGVyKTsKLSAgICAgICAgaWYgKCBub3cgPj0gc3ZjLT5jdXJfZGVhZGxpbmUgKQot ICAgICAgICB7Ci0gICAgICAgICAgICBydF91cGRhdGVfZGVhZGxpbmUobm93LCBzdmMpOwotICAg ICAgICAgICAgX19xX3JlbW92ZShzdmMpOyAvKiByZW1vdmUgZnJvbSBkZXBsZXRlZCBxdWV1ZSAq LwotICAgICAgICAgICAgX19ydW5xX2luc2VydChvcHMsIHN2Yyk7IC8qIGFkZCB0byBydW5xICov Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLS8qCiAgKiBzY2hlZHVsZSBmdW5jdGlvbiBmb3IgcnQg c2NoZWR1bGVyLgogICogVGhlIGxvY2sgaXMgYWxyZWFkeSBncmFiYmVkIGluIHNjaGVkdWxlLmMs IG5vIG5lZWQgdG8gbG9jayBoZXJlCiAgKi8KQEAgLTg0MCw4ICs5OTEsNiBAQCBydF9zY2hlZHVs ZShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHNfdGltZV90IG5vdywgYm9vbF90IHRhc2ts ZXRfd29ya19zY2hlZAogICAgIC8qIGJ1cm5fYnVkZ2V0IHdvdWxkIHJldHVybiBmb3IgSURMRSBW Q1BVICovCiAgICAgYnVybl9idWRnZXQob3BzLCBzY3Vyciwgbm93KTsKIAotICAgIF9fcmVwbF91 cGRhdGUob3BzLCBub3cpOwotCiAgICAgaWYgKCB0YXNrbGV0X3dvcmtfc2NoZWR1bGVkICkKICAg ICB7CiAgICAgICAgIHRyYWNlX3ZhcihUUkNfUlREU19TQ0hFRF9UQVNLTEVULCAxLCAwLCAgTlVM TCk7CkBAIC04NjgsNiArMTAxNyw3IEBAIHJ0X3NjaGVkdWxlKGNvbnN0IHN0cnVjdCBzY2hlZHVs ZXIgKm9wcywgc190aW1lX3Qgbm93LCBib29sX3QgdGFza2xldF93b3JrX3NjaGVkCiAgICAgICAg IHNldF9iaXQoX19SVERTX2RlbGF5ZWRfcnVucV9hZGQsICZzY3Vyci0+ZmxhZ3MpOwogCiAgICAg c25leHQtPmxhc3Rfc3RhcnQgPSBub3c7CisgICAgcmV0LnRpbWUgPSAgLTE7IC8qIGlmIGFuIGlk bGUgdmNwdSBpcyBwaWNrZWQgKi8gCiAgICAgaWYgKCAhaXNfaWRsZV92Y3B1KHNuZXh0LT52Y3B1 KSApCiAgICAgewogICAgICAgICBpZiAoIHNuZXh0ICE9IHNjdXJyICkKQEAgLTg4MCw5ICsxMDMw LDggQEAgcnRfc2NoZWR1bGUoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzX3RpbWVfdCBu b3csIGJvb2xfdCB0YXNrbGV0X3dvcmtfc2NoZWQKICAgICAgICAgICAgIHNuZXh0LT52Y3B1LT5w cm9jZXNzb3IgPSBjcHU7CiAgICAgICAgICAgICByZXQubWlncmF0ZWQgPSAxOwogICAgICAgICB9 CisgICAgICAgIHJldC50aW1lID0gc25leHQtPmJ1ZGdldDsgLyogaW52b2tlIHRoZSBzY2hlZHVs ZXIgbmV4dCB0aW1lICovCiAgICAgfQotCi0gICAgcmV0LnRpbWUgPSBNSU4oc25leHQtPmJ1ZGdl dCwgTUFYX1NDSEVEVUxFKTsgLyogc2NoZWQgcXVhbnR1bSAqLwogICAgIHJldC50YXNrID0gc25l eHQtPnZjcHU7CiAKICAgICByZXR1cm4gcmV0OwpAQCAtOTAzLDcgKzEwNTIsMTAgQEAgcnRfdmNw dV9zbGVlcChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCB2Y3B1ICp2YykKICAg ICBpZiAoIGN1cnJfb25fY3B1KHZjLT5wcm9jZXNzb3IpID09IHZjICkKICAgICAgICAgY3B1X3Jh aXNlX3NvZnRpcnEodmMtPnByb2Nlc3NvciwgU0NIRURVTEVfU09GVElSUSk7CiAgICAgZWxzZSBp ZiAoIF9fdmNwdV9vbl9xKHN2YykgKQorICAgIHsKICAgICAgICAgX19xX3JlbW92ZShzdmMpOwor ICAgICAgICBfX3JlcGxxX3JlbW92ZShvcHMsIHN2Yyk7CisgICAgfQogICAgIGVsc2UgaWYgKCBz dmMtPmZsYWdzICYgUlREU19kZWxheWVkX3J1bnFfYWRkICkKICAgICAgICAgY2xlYXJfYml0KF9f UlREU19kZWxheWVkX3J1bnFfYWRkLCAmc3ZjLT5mbGFncyk7CiB9CkBAIC0xMDA4LDEwICsxMTYw LDcgQEAgcnRfdmNwdV93YWtlKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHZj cHUgKnZjKQogewogICAgIHN0cnVjdCBydF92Y3B1ICogY29uc3Qgc3ZjID0gcnRfdmNwdSh2Yyk7 CiAgICAgc190aW1lX3Qgbm93ID0gTk9XKCk7Ci0gICAgc3RydWN0IHJ0X3ByaXZhdGUgKnBydiA9 IHJ0X3ByaXYob3BzKTsKLSAgICBzdHJ1Y3QgcnRfdmNwdSAqc25leHQgPSBOVUxMOyAvKiBoaWdo ZXN0IHByaW9yaXR5IG9uIFJ1blEgKi8KLSAgICBzdHJ1Y3QgcnRfZG9tICpzZG9tID0gTlVMTDsK LSAgICBjcHVtYXNrX3QgKm9ubGluZTsKKyAgICBib29sX3QgbWlzc2VkOwogCiAgICAgQlVHX09O KCBpc19pZGxlX3ZjcHUodmMpICk7CiAKQEAgLTEwMzMsMzIgKzExODIsNDIgQEAgcnRfdmNwdV93 YWtlKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHZjcHUgKnZjKQogICAgIGVs c2UKICAgICAgICAgU0NIRURfU1RBVF9DUkFOSyh2Y3B1X3dha2Vfbm90X3J1bm5hYmxlKTsKIAot ICAgIC8qIElmIGNvbnRleHQgaGFzbid0IGJlZW4gc2F2ZWQgZm9yIHRoaXMgdmNwdSB5ZXQsIHdl IGNhbid0IHB1dCBpdCBvbgotICAgICAqIHRoZSBSdW5xdWV1ZS9EZXBsZXRlZFEuIEluc3RlYWQs IHdlIHNldCBhIGZsYWcgc28gdGhhdCBpdCB3aWxsIGJlCi0gICAgICogcHV0IG9uIHRoZSBSdW5x dWV1ZS9EZXBsZXRlZFEgYWZ0ZXIgdGhlIGNvbnRleHQgaGFzIGJlZW4gc2F2ZWQuCisgICAgLyoK KyAgICAgKiBJZiBhIGRlYWRsaW5lIHBhc3NlZCB3aGlsZSBzdmMgd2FzIGFzbGVlcC9ibG9ja2Vk LCB3ZSBuZWVkIG5ldworICAgICAqIHNjaGVkdWxpbmcgcGFyYW1ldGVycyAoYSBuZXcgZGVhZGxp bmUgYW5kIGZ1bGwgYnVkZ2V0KS4KKyAgICAgKi8KKworICAgIG1pc3NlZCA9ICggbm93ID49IHN2 Yy0+Y3VyX2RlYWRsaW5lICk7CisgICAgaWYgKCBtaXNzZWQgKQorICAgICAgICBydF91cGRhdGVf ZGVhZGxpbmUobm93LCBzdmMpOworCisgICAgLyogCisgICAgICogSWYgY29udGV4dCBoYXNuJ3Qg YmVlbiBzYXZlZCBmb3IgdGhpcyB2Y3B1IHlldCwgd2UgY2FuJ3QgcHV0IGl0IG9uCisgICAgICog dGhlIHJ1bi1xdWV1ZS9kZXBsZXRlZC1xdWV1ZS4gSW5zdGVhZCwgd2Ugc2V0IHRoZSBhcHByb3By aWF0ZSBmbGFnLAorICAgICAqIHRoZSB2Y3B1IHdpbGwgYmUgcHV0IGJhY2sgb24gcXVldWUgYWZ0 ZXIgdGhlIGNvbnRleHQgaGFzIGJlZW4gc2F2ZWQKKyAgICAgKiAoaW4gcnRfY29udGV4dF9zYXZl KCkpLgogICAgICAqLwogICAgIGlmICggdW5saWtlbHkoc3ZjLT5mbGFncyAmIFJURFNfc2NoZWR1 bGVkKSApCiAgICAgewogICAgICAgICBzZXRfYml0KF9fUlREU19kZWxheWVkX3J1bnFfYWRkLCAm c3ZjLT5mbGFncyk7CisgICAgICAgIC8qCisgICAgICAgICAqIFRoZSB2Y3B1IGlzIHdha2luZyB1 cCBhbHJlYWR5LCBhbmQgd2UgZGlkbid0IGV2ZW4gaGFkIHRoZSB0aW1lIHRvCisgICAgICAgICAq IHJlbW92ZSBpdHMgbmV4dCByZXBsZW5pc2htZW50IGV2ZW50IGZyb20gdGhlIHJlcGxlbmlzaG1l bnQgcXVldWUKKyAgICAgICAgICogd2hlbiBpdCBibG9ja2VkISBObyBiaWcgZGVhbC4gSWYgd2Ug ZGlkIG5vdCBtaXNzIHRoZSBkZWFkbGluZSBpbgorICAgICAgICAgKiB0aGUgbWVhbnRpbWUsIGxl dCdzIGp1c3QgbGVhdmUgaXQgdGhlcmUuIElmIHdlIGRpZCwgbGV0J3MgcmVtb3ZlIGl0CisgICAg ICAgICAqIGFuZCBxdWV1ZSBhIG5ldyBvbmUgKHRvIG9jY3VyIGF0IG91ciBuZXcgZGVhZGxpbmUp LgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKCBtaXNzZWQgKQorICAgICAgICAgICByZXBscV9y ZWluc2VydChvcHMsIHN2Yyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIG5v dyA+PSBzdmMtPmN1cl9kZWFkbGluZSkKLSAgICAgICAgcnRfdXBkYXRlX2RlYWRsaW5lKG5vdywg c3ZjKTsKLQorICAgIC8qIFJlcGxlbmlzaG1lbnQgZXZlbnQgZ290IGNhbmNlbGxlZCB3aGVuIHdl IGJsb2NrZWQuIEFkZCBpdCBiYWNrLiAqLworICAgIF9fcmVwbHFfaW5zZXJ0KG9wcywgc3ZjKTsg CiAgICAgLyogaW5zZXJ0IHN2YyB0byBydW5xL2RlcGxldGVkcSBiZWNhdXNlIHN2YyBpcyBub3Qg aW4gcXVldWUgbm93ICovCiAgICAgX19ydW5xX2luc2VydChvcHMsIHN2Yyk7CiAKLSAgICBfX3Jl cGxfdXBkYXRlKG9wcywgbm93KTsKLQotICAgIEFTU0VSVCghbGlzdF9lbXB0eSgmcHJ2LT5zZG9t KSk7Ci0gICAgc2RvbSA9IGxpc3RfZW50cnkocHJ2LT5zZG9tLm5leHQsIHN0cnVjdCBydF9kb20s IHNkb21fZWxlbSk7Ci0gICAgb25saW5lID0gY3B1cG9vbF9kb21haW5fY3B1bWFzayhzZG9tLT5k b20pOwotICAgIHNuZXh0ID0gX19ydW5xX3BpY2sob3BzLCBvbmxpbmUpOyAvKiBwaWNrIHNuZXh0 IGZyb20gQUxMIHZhbGlkIGNwdXMgKi8KLQotICAgIHJ1bnFfdGlja2xlKG9wcywgc25leHQpOwot Ci0gICAgcmV0dXJuOworICAgIHJ1bnFfdGlja2xlKG9wcywgc3ZjKTsKIH0KIAogLyoKQEAgLTEw NjksMTAgKzEyMjgsNiBAQCBzdGF0aWMgdm9pZAogcnRfY29udGV4dF9zYXZlZChjb25zdCBzdHJ1 Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCB2Y3B1ICp2YykKIHsKICAgICBzdHJ1Y3QgcnRfdmNw dSAqc3ZjID0gcnRfdmNwdSh2Yyk7Ci0gICAgc3RydWN0IHJ0X3ZjcHUgKnNuZXh0ID0gTlVMTDsK LSAgICBzdHJ1Y3QgcnRfZG9tICpzZG9tID0gTlVMTDsKLSAgICBzdHJ1Y3QgcnRfcHJpdmF0ZSAq cHJ2ID0gcnRfcHJpdihvcHMpOwotICAgIGNwdW1hc2tfdCAqb25saW5lOwogICAgIHNwaW5sb2Nr X3QgKmxvY2sgPSB2Y3B1X3NjaGVkdWxlX2xvY2tfaXJxKHZjKTsKIAogICAgIGNsZWFyX2JpdChf X1JURFNfc2NoZWR1bGVkLCAmc3ZjLT5mbGFncyk7CkBAIC0xMDg0LDE1ICsxMjM5LDExIEBAIHJ0 X2NvbnRleHRfc2F2ZWQoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3QgdmNwdSAq dmMpCiAgICAgICAgICBsaWtlbHkodmNwdV9ydW5uYWJsZSh2YykpICkKICAgICB7CiAgICAgICAg IF9fcnVucV9pbnNlcnQob3BzLCBzdmMpOwotICAgICAgICBfX3JlcGxfdXBkYXRlKG9wcywgTk9X KCkpOwotCi0gICAgICAgIEFTU0VSVCghbGlzdF9lbXB0eSgmcHJ2LT5zZG9tKSk7Ci0gICAgICAg IHNkb20gPSBsaXN0X2VudHJ5KHBydi0+c2RvbS5uZXh0LCBzdHJ1Y3QgcnRfZG9tLCBzZG9tX2Vs ZW0pOwotICAgICAgICBvbmxpbmUgPSBjcHVwb29sX2RvbWFpbl9jcHVtYXNrKHNkb20tPmRvbSk7 Ci0gICAgICAgIHNuZXh0ID0gX19ydW5xX3BpY2sob3BzLCBvbmxpbmUpOyAvKiBwaWNrIHNuZXh0 IGZyb20gQUxMIGNwdXMgKi8KLQotICAgICAgICBydW5xX3RpY2tsZShvcHMsIHNuZXh0KTsKKyAg ICAgICAgcnVucV90aWNrbGUob3BzLCBzdmMpOwogICAgIH0KKyAgICBlbHNlCisgICAgICAgIF9f cmVwbHFfcmVtb3ZlKG9wcywgc3ZjKTsKKwogb3V0OgogICAgIHZjcHVfc2NoZWR1bGVfdW5sb2Nr X2lycShsb2NrLCB2Yyk7CiB9CkBAIC0xMTUwLDYgKzEzMDEsMTAwIEBAIHJ0X2RvbV9jbnRsKAog ICAgIHJldHVybiByYzsKIH0KIAorLyoKKyAqIFRoZSByZXBsZW5pc2htZW50IHRpbWVyIGhhbmRs ZXIgcGlja3MgdmNwdXMKKyAqIGZyb20gdGhlIHJlcGxxIGFuZCBkb2VzIHRoZSBhY3R1YWwgcmVw bGVuaXNobWVudC4KKyAqLworc3RhdGljIHZvaWQgcmVwbF9oYW5kbGVyKHZvaWQgKmRhdGEpewor ICAgIHNfdGltZV90IG5vdyA9IE5PVygpOworICAgIHN0cnVjdCBzY2hlZHVsZXIgKm9wcyA9IGRh dGE7IAorICAgIHN0cnVjdCBydF9wcml2YXRlICpwcnYgPSBydF9wcml2KG9wcyk7CisgICAgc3Ry dWN0IGxpc3RfaGVhZCAqcmVwbHEgPSBydF9yZXBscShvcHMpOworICAgIHN0cnVjdCBsaXN0X2hl YWQgKnJ1bnEgPSBydF9ydW5xKG9wcyk7CisgICAgc3RydWN0IHRpbWVyICpyZXBsX3RpbWVyID0g cHJ2LT5yZXBsX3RpbWVyOworICAgIHN0cnVjdCBsaXN0X2hlYWQgKml0ZXIsICp0bXA7CisgICAg c3RydWN0IGxpc3RfaGVhZCB0bXBfcmVwbHE7CisgICAgc3RydWN0IHJ0X3ZjcHUgKnN2YyA9IE5V TEw7CisKKyAgICBzcGluX2xvY2tfaXJxKCZwcnYtPmxvY2spOworCisgICAgc3RvcF90aW1lcihy ZXBsX3RpbWVyKTsKKworICAgIC8qCisgICAgICogQSB0ZW1wZXJhcnkgcXVldWUgZm9yIHVwZGF0 ZWQgdmNwdXMuCisgICAgICogSXQgaXMgdXNlZCB0byB0aWNrbGUuCisgICAgICovCisgICAgSU5J VF9MSVNUX0hFQUQoJnRtcF9yZXBscSk7CisKKyAgICBsaXN0X2Zvcl9lYWNoX3NhZmUgKCBpdGVy LCB0bXAsIHJlcGxxICkKKyAgICB7CisgICAgICAgIHN2YyA9IHJlcGxxX2VsZW0oaXRlcik7CisK KyAgICAgICAgaWYgKCBub3cgPCBzdmMtPmN1cl9kZWFkbGluZSApCisgICAgICAgICAgICBicmVh azsKKworICAgICAgICBydF91cGRhdGVfZGVhZGxpbmUobm93LCBzdmMpOworICAgICAgICAvKgor ICAgICAgICAgKiBXaGVuIGEgdmNwdSBpcyByZXBsZW5pc2hlZCwgaXQgaXMgbW92ZWQKKyAgICAg ICAgICogdG8gYSB0ZW1wb3JhcnkgcXVldWUgdG8gdGlja2xlLgorICAgICAgICAgKi8KKyAgICAg ICAgbGlzdF9kZWwoJnN2Yy0+cmVwbHFfZWxlbSk7CisgICAgICAgIGxpc3RfYWRkKCZzdmMtPnJl cGxxX2VsZW0sICZ0bXBfcmVwbHEpOworCisgICAgICAgIC8qCisgICAgICAgICAqIElmIHN2YyBp cyBvbiBydW4gcXVldWUsIHdlIG5lZWQKKyAgICAgICAgICogdG8gcHV0IGl0IHRvIHRoZSBjb3Jy ZWN0IHBsYWNlIHNpbmNlCisgICAgICAgICAqIGl0cyBkZWFkbGluZSBjaGFuZ2VzLgorICAgICAg ICAgKi8KKyAgICAgICAgaWYgKCBfX3ZjcHVfb25fcShzdmMpICkKKyAgICAgICAgeworICAgICAg ICAgICAgLyogcHV0IGJhY2sgdG8gcnVucSAqLworICAgICAgICAgICAgX19xX3JlbW92ZShzdmMp OworICAgICAgICAgICAgX19ydW5xX2luc2VydChvcHMsIHN2Yyk7CisgICAgICAgIH0KKyAgICB9 CisKKyAgICAvKiBJdGVyYXRlIHRocm91Z2ggdGhlIGxpc3Qgb2YgdXBkYXRlZCB2Y3B1cy4gKi8K KyAgICBsaXN0X2Zvcl9lYWNoX3NhZmUgKCBpdGVyLCB0bXAsICZ0bXBfcmVwbHEgKQorICAgIHsK KyAgICAgICAgc3RydWN0IHZjcHUqIHZjOworICAgICAgICBzdmMgPSByZXBscV9lbGVtKGl0ZXIp OworICAgICAgICB2YyA9IHN2Yy0+dmNwdTsKKworICAgICAgICBpZiAoIGN1cnJfb25fY3B1KHZj LT5wcm9jZXNzb3IpID09IHZjICYmIAorICAgICAgICAgICAgICggIWxpc3RfZW1wdHkocnVucSkg KSApCisgICAgICAgIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBJZiB0aGUgdmNw dSBpcyBydW5uaW5nLCBsZXQgdGhlIGhlYWQKKyAgICAgICAgICAgICAqIG9mIHRoZSBydW4gcXVl dWUgdGlja2xlIGlmIGl0IGhhcyBhIAorICAgICAgICAgICAgICogaGlnaGVyIHByaW9yaXR5Lgor ICAgICAgICAgICAgICovCisgICAgICAgICAgICBzdHJ1Y3QgcnRfdmNwdSAqbmV4dF9vbl9ydW5x ID0gX19xX2VsZW0ocnVucS0+bmV4dCk7CisgICAgICAgICAgICBpZiAoIHN2Yy0+Y3VyX2RlYWRs aW5lID4gbmV4dF9vbl9ydW5xLT5jdXJfZGVhZGxpbmUgKQorICAgICAgICAgICAgICAgIHJ1bnFf dGlja2xlKG9wcywgbmV4dF9vbl9ydW5xKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICgg X192Y3B1X29uX3Eoc3ZjKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIC8qIE9ubHkgbmVlZCB0 byB0aWNrbGUgYSB2Y3B1IHRoYXQgd2FzIGRlcGxldGVkLiAqLworICAgICAgICAgICAgaWYgKCB0 ZXN0X2FuZF9jbGVhcl9iaXQoX19SVERTX3dhc19kZXBsZXRlZCwgJnN2Yy0+ZmxhZ3MpICkKKyAg ICAgICAgICAgICAgICBydW5xX3RpY2tsZShvcHMsIHN2Yyk7CisgICAgICAgIH0KKworICAgICAg ICBsaXN0X2RlbCgmc3ZjLT5yZXBscV9lbGVtKTsKKyAgICAgICAgLyogTW92ZSBpdCBiYWNrIHRv IHRoZSByZXBsZW5pc2htZW50IGV2ZW50IHF1ZXVlLiAqLworICAgICAgICBkZWFkbGluZV9xdWV1 ZV9pbnNlcnQoJnJlcGxxX2VsZW0sIHN2YywgJnN2Yy0+cmVwbHFfZWxlbSwgcmVwbHEpOworICAg IH0KKworICAgIC8qIAorICAgICAqIFVzZSB0aGUgdmNwdSB0aGF0J3Mgb24gdGhlIHRvcCBvZiB0 aGUgcnVuIHF1ZXVlLgorICAgICAqIE90aGVyd2lzZSBkb24ndCBwcm9ncmFtIHRoZSB0aW1lci4K KyAgICAgKi8KKyAgICBpZiAoICFsaXN0X2VtcHR5KHJlcGxxKSApCisgICAgICAgIHNldF90aW1l cihyZXBsX3RpbWVyLCByZXBscV9lbGVtKHJlcGxxLT5uZXh0KS0+Y3VyX2RlYWRsaW5lKTsKKwor ICAgIHNwaW5fdW5sb2NrX2lycSgmcHJ2LT5sb2NrKTsKK30KKwogc3RhdGljIGNvbnN0IHN0cnVj dCBzY2hlZHVsZXIgc2NoZWRfcnRkc19kZWYgPSB7CiAgICAgLm5hbWUgICAgICAgICAgID0gIlNN UCBSVERTIFNjaGVkdWxlciIsCiAgICAgLm9wdF9uYW1lICAgICAgID0gInJ0ZHMiLAotLSAKMS43 LjkuNQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhl bi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3Rz Lnhlbi5vcmcveGVuLWRldmVsCg==