From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A38BFC4CEC5 for ; Sat, 14 Sep 2019 08:54:41 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 7285220830 for ; Sat, 14 Sep 2019 08:54:41 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7285220830 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1i93p7-0001Bu-Ue; Sat, 14 Sep 2019 08:54:29 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1i93p6-00019Y-NJ for xen-devel@lists.xenproject.org; Sat, 14 Sep 2019 08:54:28 +0000 X-Inumbo-ID: 105d5d96-d6cd-11e9-95c1-12813bfff9fa Received: from mx1.suse.de (unknown [195.135.220.15]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 105d5d96-d6cd-11e9-95c1-12813bfff9fa; Sat, 14 Sep 2019 08:53:04 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 842A1B65E; Sat, 14 Sep 2019 08:53:03 +0000 (UTC) From: Juergen Gross To: xen-devel@lists.xenproject.org Date: Sat, 14 Sep 2019 10:52:32 +0200 Message-Id: <20190914085251.18816-29-jgross@suse.com> X-Mailer: git-send-email 2.16.4 In-Reply-To: <20190914085251.18816-1-jgross@suse.com> References: <20190914085251.18816-1-jgross@suse.com> Subject: [Xen-devel] [PATCH v3 28/47] xen/sched: add code to sync scheduling of all vcpus of a sched unit X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Juergen Gross , Stefano Stabellini , Wei Liu , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Julien Grall , Jan Beulich , Dario Faggioli , Volodymyr Babchuk , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" V2hlbiBzd2l0Y2hpbmcgc2NoZWQgdW5pdHMgc3luY2hyb25pemUgYWxsIHZjcHVzIG9mIHRoZSBu ZXcgdW5pdCB0byBiZQpzY2hlZHVsZWQgYXQgdGhlIHNhbWUgdGltZS4KCkEgdmFyaWFibGUgc2No ZWRfZ3JhbnVsYXJpdHkgaXMgYWRkZWQgd2hpY2ggaG9sZHMgdGhlIG51bWJlciBvZiB2Y3B1cwpw ZXIgc2NoZWR1bGUgdW5pdC4KCkFzIHRhc2tsZXRzIHJlcXVpcmUgdG8gc2NoZWR1bGUgdGhlIGlk bGUgdW5pdCBpdCBpcyByZXF1aXJlZCB0byBzZXQgdGhlCnRhc2tsZXRfd29ya19zY2hlZHVsZWQg cGFyYW1ldGVyIG9mIGRvX3NjaGVkdWxlKCkgdG8gdHJ1ZSBpZiBhbnkgY3B1CmNvdmVyZWQgYnkg dGhlIGN1cnJlbnQgc2NoZWR1bGUoKSBjYWxsIGhhcyBhbnkgcGVuZGluZyB0YXNrbGV0IHdvcmsu CgpGb3Igam9pbmluZyBvdGhlciB2Y3B1cyBvZiB0aGUgc2NoZWR1bGUgdW5pdCB3ZSBuZWVkIHRv IGFkZCBhIG5ldwpzb2Z0aXJxIFNDSEVEX1NMQVZFX1NPRlRJUlEgaW4gb3JkZXIgdG8gaGF2ZSBh IHdheSB0byBpbml0aWF0ZSBhCmNvbnRleHQgc3dpdGNoIHdpdGhvdXQgY2FsbGluZyB0aGUgZ2Vu ZXJpYyBzY2hlZHVsZSgpIGZ1bmN0aW9uCnNlbGVjdGluZyB0aGUgdmNwdSB0byBzd2l0Y2ggdG8s IGFzIHdlIGFscmVhZHkga25vdyB3aGljaCB2Y3B1IHdlCndhbnQgdG8gcnVuLiBUaGlzIGhhcyB0 aGUgb3RoZXIgYWR2YW50YWdlIG5vdCB0byBsb29zZSBhbnkgb3RoZXIKY29uY3VycmVudCBTQ0hF RFVMRV9TT0ZUSVJRIGV2ZW50cy4KClNpZ25lZC1vZmYtYnk6IEp1ZXJnZW4gR3Jvc3MgPGpncm9z c0BzdXNlLmNvbT4KLS0tClJGQyBWMjoKLSBtb3ZlIHN5bmNpbmcgYWZ0ZXIgY29udGV4dF9zd2l0 Y2goKSB0byBzY2hlZHVsZS5jClYyOgotIGRvbid0IHJ1biB0YXNrbGV0cyBkaXJlY3RseSBmcm9t IHNjaGVkX3dhaXRfcmVuZGV6dm91c19pbigpClYzOgotIGFkYXB0IGFycmF5IHNpemUgaW4gc2No ZWRfbW92ZV9kb21haW4oKSAoSmFuIEJldWxpY2gpCi0gaW50IC0+IHVuc2lnbmVkIGludCAoSmFu IEJldWxpY2gpCi0tLQogeGVuL2FyY2gvYXJtL2RvbWFpbi5jICAgICAgfCAgIDIgKy0KIHhlbi9h cmNoL3g4Ni9kb21haW4uYyAgICAgIHwgICAzICstCiB4ZW4vY29tbW9uL3NjaGVkdWxlLmMgICAg ICB8IDM0NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KIHhl bi9jb21tb24vc29mdGlycS5jICAgICAgIHwgICA2ICstCiB4ZW4vaW5jbHVkZS94ZW4vc2NoZWQt aWYuaCB8ICAgMSArCiB4ZW4vaW5jbHVkZS94ZW4vc2NoZWQuaCAgICB8ICAxNiArKy0KIHhlbi9p bmNsdWRlL3hlbi9zb2Z0aXJxLmggIHwgICAxICsKIDcgZmlsZXMgY2hhbmdlZCwgMjg3IGluc2Vy dGlvbnMoKyksIDg3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9kb21h aW4uYyBiL3hlbi9hcmNoL2FybS9kb21haW4uYwppbmRleCBhOWM0MTEzYzI2Li5jOGVmZWY0MTc5 IDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vZG9tYWluLmMKKysrIGIveGVuL2FyY2gvYXJtL2Rv bWFpbi5jCkBAIC0zMTUsNyArMzE1LDcgQEAgc3RhdGljIHZvaWQgc2NoZWR1bGVfdGFpbChzdHJ1 Y3QgdmNwdSAqcHJldikKIAogICAgIGxvY2FsX2lycV9lbmFibGUoKTsKIAotICAgIGNvbnRleHRf c2F2ZWQocHJldik7CisgICAgc2NoZWRfY29udGV4dF9zd2l0Y2hlZChwcmV2LCBjdXJyZW50KTsK IAogICAgIHVwZGF0ZV9ydW5zdGF0ZV9hcmVhKGN1cnJlbnQpOwogCmRpZmYgLS1naXQgYS94ZW4v YXJjaC94ODYvZG9tYWluLmMgYi94ZW4vYXJjaC94ODYvZG9tYWluLmMKaW5kZXggZGJkZjZiMWJj Mi4uNmYzMTMyNjgyZCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2RvbWFpbi5jCisrKyBiL3hl bi9hcmNoL3g4Ni9kb21haW4uYwpAQCAtMTc4MSw3ICsxNzgxLDYgQEAgc3RhdGljIHZvaWQgX19j b250ZXh0X3N3aXRjaCh2b2lkKQogICAgIHBlcl9jcHUoY3Vycl92Y3B1LCBjcHUpID0gbjsKIH0K IAotCiB2b2lkIGNvbnRleHRfc3dpdGNoKHN0cnVjdCB2Y3B1ICpwcmV2LCBzdHJ1Y3QgdmNwdSAq bmV4dCkKIHsKICAgICB1bnNpZ25lZCBpbnQgY3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgpOwpAQCAt MTg1Nyw3ICsxODU2LDcgQEAgdm9pZCBjb250ZXh0X3N3aXRjaChzdHJ1Y3QgdmNwdSAqcHJldiwg c3RydWN0IHZjcHUgKm5leHQpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBjb250ZXh0X3NhdmVk KHByZXYpOworICAgIHNjaGVkX2NvbnRleHRfc3dpdGNoZWQocHJldiwgbmV4dCk7CiAKICAgICBf dXBkYXRlX3J1bnN0YXRlX2FyZWEobmV4dCk7CiAgICAgLyogTXVzdCBiZSBkb25lIHdpdGggaW50 ZXJydXB0cyBlbmFibGVkICovCmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3NjaGVkdWxlLmMgYi94 ZW4vY29tbW9uL3NjaGVkdWxlLmMKaW5kZXggYWFkMzk2ZWU1NC4uNzhiNDdhY2VkZiAxMDA2NDQK LS0tIGEveGVuL2NvbW1vbi9zY2hlZHVsZS5jCisrKyBiL3hlbi9jb21tb24vc2NoZWR1bGUuYwpA QCAtNTUsNiArNTUsOSBAQCBib29sZWFuX3BhcmFtKCJzY2hlZF9zbXRfcG93ZXJfc2F2aW5ncyIs IHNjaGVkX3NtdF9wb3dlcl9zYXZpbmdzKTsKIGludCBzY2hlZF9yYXRlbGltaXRfdXMgPSBTQ0hF RF9ERUZBVUxUX1JBVEVMSU1JVF9VUzsKIGludGVnZXJfcGFyYW0oInNjaGVkX3JhdGVsaW1pdF91 cyIsIHNjaGVkX3JhdGVsaW1pdF91cyk7CiAKKy8qIE51bWJlciBvZiB2Y3B1cyBwZXIgc3RydWN0 IHNjaGVkX3VuaXQuICovCitzdGF0aWMgdW5zaWduZWQgaW50IF9fcmVhZF9tb3N0bHkgc2NoZWRf Z3JhbnVsYXJpdHkgPSAxOworCiAvKiBDb21tb24gbG9jayBmb3IgZnJlZSBjcHVzLiAqLwogc3Rh dGljIERFRklORV9TUElOTE9DSyhzY2hlZF9mcmVlX2NwdV9sb2NrKTsKIApAQCAtNTIwLDggKzUy Myw4IEBAIGludCBzY2hlZF9tb3ZlX2RvbWFpbihzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgY3B1 cG9vbCAqYykKICAgICBpZiAoIElTX0VSUihkb21kYXRhKSApCiAgICAgICAgIHJldHVybiBQVFJf RVJSKGRvbWRhdGEpOwogCi0gICAgLyogVE9ETzogZml4IGFycmF5IHNpemUgd2l0aCBtdWx0aXBs ZSB2Y3B1cyBwZXIgdW5pdC4gKi8KLSAgICB1bml0X3ByaXYgPSB4emFsbG9jX2FycmF5KHZvaWQg KiwgZC0+bWF4X3ZjcHVzKTsKKyAgICB1bml0X3ByaXYgPSB4emFsbG9jX2FycmF5KHZvaWQgKiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERJVl9ST1VORF9VUChkLT5tYXhfdmNwdXMs IHNjaGVkX2dyYW51bGFyaXR5KSk7CiAgICAgaWYgKCB1bml0X3ByaXYgPT0gTlVMTCApCiAgICAg ewogICAgICAgICBzY2hlZF9mcmVlX2RvbWRhdGEoYy0+c2NoZWQsIGRvbWRhdGEpOwpAQCAtMTcw NywxMzMgKzE3MTAsMzE5IEBAIHZvaWQgdmNwdV9zZXRfcGVyaW9kaWNfdGltZXIoc3RydWN0IHZj cHUgKnYsIHNfdGltZV90IHZhbHVlKQogICAgIHNwaW5fdW5sb2NrKCZ2LT5wZXJpb2RpY190aW1l cl9sb2NrKTsKIH0KIAotLyoKLSAqIFRoZSBtYWluIGZ1bmN0aW9uCi0gKiAtIGRlc2NoZWR1bGUg dGhlIGN1cnJlbnQgZG9tYWluIChzY2hlZHVsZXIgaW5kZXBlbmRlbnQpLgotICogLSBwaWNrIGEg bmV3IGRvbWFpbiAoc2NoZWR1bGVyIGRlcGVuZGVudCkuCi0gKi8KLXN0YXRpYyB2b2lkIHNjaGVk dWxlKHZvaWQpCitzdGF0aWMgdm9pZCBzY2hlZF9zd2l0Y2hfdW5pdHMoc3RydWN0IHNjaGVkX3Jl c291cmNlICpzZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2NoZWRf dW5pdCAqbmV4dCwgc3RydWN0IHNjaGVkX3VuaXQgKnByZXYsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc190aW1lX3Qgbm93KQogewotICAgIHN0cnVjdCBzY2hlZF91bml0ICAgICpw cmV2ID0gY3VycmVudC0+c2NoZWRfdW5pdCwgKm5leHQgPSBOVUxMOwotICAgIHNfdGltZV90ICAg ICAgICAgICAgICBub3c7Ci0gICAgc3RydWN0IHNjaGVkdWxlciAgICAgKnNjaGVkOwotICAgIHVu c2lnbmVkIGxvbmcgICAgICAgICp0YXNrbGV0X3dvcmsgPSAmdGhpc19jcHUodGFza2xldF93b3Jr X3RvX2RvKTsKLSAgICBib29sICAgICAgICAgICAgICAgICAgdGFza2xldF93b3JrX3NjaGVkdWxl ZCA9IGZhbHNlOwotICAgIHN0cnVjdCBzY2hlZF9yZXNvdXJjZSAqc2Q7Ci0gICAgc3BpbmxvY2tf dCAgICAgICAgICAgKmxvY2s7Ci0gICAgaW50IGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsKKyAg ICBzZC0+Y3VyciA9IG5leHQ7CiAKLSAgICBBU1NFUlRfTk9UX0lOX0FUT01JQygpOworICAgIFRS QUNFXzNEKFRSQ19TQ0hFRF9TV0lUQ0hfSU5GUFJFViwgcHJldi0+ZG9tYWluLT5kb21haW5faWQs IHByZXYtPnVuaXRfaWQsCisgICAgICAgICAgICAgbm93IC0gcHJldi0+c3RhdGVfZW50cnlfdGlt ZSk7CisgICAgVFJBQ0VfNEQoVFJDX1NDSEVEX1NXSVRDSF9JTkZORVhULCBuZXh0LT5kb21haW4t PmRvbWFpbl9pZCwgbmV4dC0+dW5pdF9pZCwKKyAgICAgICAgICAgICAobmV4dC0+dmNwdV9saXN0 LT5ydW5zdGF0ZS5zdGF0ZSA9PSBSVU5TVEFURV9ydW5uYWJsZSkgPworICAgICAgICAgICAgIChu b3cgLSBuZXh0LT5zdGF0ZV9lbnRyeV90aW1lKSA6IDAsIHByZXYtPm5leHRfdGltZSk7CiAKLSAg ICBTQ0hFRF9TVEFUX0NSQU5LKHNjaGVkX3J1bik7CisgICAgQVNTRVJUKHByZXYtPnZjcHVfbGlz dC0+cnVuc3RhdGUuc3RhdGUgPT0gUlVOU1RBVEVfcnVubmluZyk7CiAKLSAgICBzZCA9IGdldF9z Y2hlZF9yZXMoY3B1KTsKKyAgICBUUkFDRV80RChUUkNfU0NIRURfU1dJVENILCBwcmV2LT5kb21h aW4tPmRvbWFpbl9pZCwgcHJldi0+dW5pdF9pZCwKKyAgICAgICAgICAgICBuZXh0LT5kb21haW4t PmRvbWFpbl9pZCwgbmV4dC0+dW5pdF9pZCk7CisKKyAgICBzY2hlZF91bml0X3J1bnN0YXRlX2No YW5nZShwcmV2LCBmYWxzZSwgbm93KTsKKworICAgIEFTU0VSVChuZXh0LT52Y3B1X2xpc3QtPnJ1 bnN0YXRlLnN0YXRlICE9IFJVTlNUQVRFX3J1bm5pbmcpOworICAgIHNjaGVkX3VuaXRfcnVuc3Rh dGVfY2hhbmdlKG5leHQsIHRydWUsIG5vdyk7CisKKyAgICAvKgorICAgICAqIE5CLiBEb24ndCBh ZGQgYW55IHRyYWNlIHJlY29yZHMgZnJvbSBoZXJlIHVudGlsIHRoZSBhY3R1YWwgY29udGV4dAor ICAgICAqIHN3aXRjaCwgZWxzZSBsb3N0X3JlY29yZHMgcmVzdW1lIHdpbGwgbm90IHdvcmsgcHJv cGVybHkuCisgICAgICovCisKKyAgICBBU1NFUlQoIW5leHQtPmlzX3J1bm5pbmcpOworICAgIG5l eHQtPnZjcHVfbGlzdC0+aXNfcnVubmluZyA9IDE7CisgICAgbmV4dC0+aXNfcnVubmluZyA9IDE7 CisgICAgbmV4dC0+c3RhdGVfZW50cnlfdGltZSA9IG5vdzsKK30KKworc3RhdGljIGJvb2wgc2No ZWRfdGFza2xldF9jaGVja19jcHUodW5zaWduZWQgaW50IGNwdSkKK3sKKyAgICB1bnNpZ25lZCBs b25nICp0YXNrbGV0X3dvcmsgPSAmcGVyX2NwdSh0YXNrbGV0X3dvcmtfdG9fZG8sIGNwdSk7CiAK LSAgICAvKiBVcGRhdGUgdGFza2xldCBzY2hlZHVsaW5nIHN0YXR1cy4gKi8KICAgICBzd2l0Y2gg KCAqdGFza2xldF93b3JrICkKICAgICB7CiAgICAgY2FzZSBUQVNLTEVUX2VucXVldWVkOgogICAg ICAgICBzZXRfYml0KF9UQVNLTEVUX3NjaGVkdWxlZCwgdGFza2xldF93b3JrKTsKICAgICAgICAg LyogZmFsbHRocm91Z2ggKi8KICAgICBjYXNlIFRBU0tMRVRfZW5xdWV1ZWR8VEFTS0xFVF9zY2hl ZHVsZWQ6Ci0gICAgICAgIHRhc2tsZXRfd29ya19zY2hlZHVsZWQgPSB0cnVlOworICAgICAgICBy ZXR1cm4gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUQVNLTEVUX3NjaGVkdWxlZDoK ICAgICAgICAgY2xlYXJfYml0KF9UQVNLTEVUX3NjaGVkdWxlZCwgdGFza2xldF93b3JrKTsKKyAg ICAgICAgLyogZmFsbHRocm91Z2ggKi8KICAgICBjYXNlIDA6Ci0gICAgICAgIC8qdGFza2xldF93 b3JrX3NjaGVkdWxlZCA9IGZhbHNlOyovCisgICAgICAgIC8qIHJldHVybiBmYWxzZTsgKi8KICAg ICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQlVHKCk7CiAgICAgfQogCi0gICAg bG9jayA9IHBjcHVfc2NoZWR1bGVfbG9ja19pcnEoY3B1KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9 CiAKLSAgICBub3cgPSBOT1coKTsKK3N0YXRpYyBib29sIHNjaGVkX3Rhc2tsZXRfY2hlY2sodW5z aWduZWQgaW50IGNwdSkKK3sKKyAgICBib29sIHRhc2tsZXRfd29ya19zY2hlZHVsZWQgPSBmYWxz ZTsKKyAgICBjb25zdCBjcHVtYXNrX3QgKm1hc2sgPSBnZXRfc2NoZWRfcmVzKGNwdSktPmNwdXM7 CisgICAgdW5zaWduZWQgaW50IGNwdV9pdGVyOwogCi0gICAgc3RvcF90aW1lcigmc2QtPnNfdGlt ZXIpOworICAgIGZvcl9lYWNoX2NwdSAoIGNwdV9pdGVyLCBtYXNrICkKKyAgICAgICAgaWYgKCBz Y2hlZF90YXNrbGV0X2NoZWNrX2NwdShjcHVfaXRlcikgKQorICAgICAgICAgICAgdGFza2xldF93 b3JrX3NjaGVkdWxlZCA9IHRydWU7CisKKyAgICByZXR1cm4gdGFza2xldF93b3JrX3NjaGVkdWxl ZDsKK30KKworc3RhdGljIHN0cnVjdCBzY2hlZF91bml0ICpkb19zY2hlZHVsZShzdHJ1Y3Qgc2No ZWRfdW5pdCAqcHJldiwgc190aW1lX3Qgbm93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBpbnQgY3B1KQoreworICAgIHN0cnVjdCBzY2hlZHVsZXIgKnNj aGVkID0gcGVyX2NwdShzY2hlZHVsZXIsIGNwdSk7CisgICAgc3RydWN0IHNjaGVkX3Jlc291cmNl ICpzZCA9IGdldF9zY2hlZF9yZXMoY3B1KTsKKyAgICBzdHJ1Y3Qgc2NoZWRfdW5pdCAqbmV4dDsK IAogICAgIC8qIGdldCBwb2xpY3ktc3BlY2lmaWMgZGVjaXNpb24gb24gc2NoZWR1bGluZy4uLiAq LwotICAgIHNjaGVkID0gdGhpc19jcHUoc2NoZWR1bGVyKTsKLSAgICBzY2hlZC0+ZG9fc2NoZWR1 bGUoc2NoZWQsIHByZXYsIG5vdywgdGFza2xldF93b3JrX3NjaGVkdWxlZCk7CisgICAgc2NoZWQt PmRvX3NjaGVkdWxlKHNjaGVkLCBwcmV2LCBub3csIHNjaGVkX3Rhc2tsZXRfY2hlY2soY3B1KSk7 CiAKICAgICBuZXh0ID0gcHJldi0+bmV4dF90YXNrOwogCi0gICAgc2QtPmN1cnIgPSBuZXh0Owot CiAgICAgaWYgKCBwcmV2LT5uZXh0X3RpbWUgPj0gMCApIC8qIC12ZSBtZWFucyBubyBsaW1pdCAq LwogICAgICAgICBzZXRfdGltZXIoJnNkLT5zX3RpbWVyLCBub3cgKyBwcmV2LT5uZXh0X3RpbWUp OwogCi0gICAgaWYgKCB1bmxpa2VseShwcmV2ID09IG5leHQpICkKKyAgICBpZiAoIGxpa2VseShw cmV2ICE9IG5leHQpICkKKyAgICAgICAgc2NoZWRfc3dpdGNoX3VuaXRzKHNkLCBuZXh0LCBwcmV2 LCBub3cpOworCisgICAgcmV0dXJuIG5leHQ7Cit9CisKK3N0YXRpYyB2b2lkIGNvbnRleHRfc2F2 ZWQoc3RydWN0IHZjcHUgKnByZXYpCit7CisgICAgc3RydWN0IHNjaGVkX3VuaXQgKnVuaXQgPSBw cmV2LT5zY2hlZF91bml0OworCisgICAgLyogQ2xlYXIgcnVubmluZyBmbGFnIC9hZnRlci8gd3Jp dGluZyBjb250ZXh0IHRvIG1lbW9yeS4gKi8KKyAgICBzbXBfd21iKCk7CisKKyAgICBwcmV2LT5p c19ydW5uaW5nID0gMDsKKyAgICB1bml0LT5pc19ydW5uaW5nID0gMDsKKyAgICB1bml0LT5zdGF0 ZV9lbnRyeV90aW1lID0gTk9XKCk7CisKKyAgICAvKiBDaGVjayBmb3IgbWlncmF0aW9uIHJlcXVl c3QgL2FmdGVyLyBjbGVhcmluZyBydW5uaW5nIGZsYWcuICovCisgICAgc21wX21iKCk7CisKKyAg ICBzY2hlZF9jb250ZXh0X3NhdmVkKHZjcHVfc2NoZWR1bGVyKHByZXYpLCB1bml0KTsKKworICAg IHNjaGVkX3VuaXRfbWlncmF0ZV9maW5pc2godW5pdCk7Cit9CisKKy8qCisgKiBSZW5kZXp2b3Vz IG9uIGVuZCBvZiBjb250ZXh0IHN3aXRjaC4KKyAqIEFzIG5vIGxvY2sgaXMgcHJvdGVjdGluZyB0 aGlzIHJlbmRlenZvdXMgZnVuY3Rpb24gd2UgbmVlZCB0byB1c2UgYXRvbWljCisgKiBhY2Nlc3Mg ZnVuY3Rpb25zIG9uIHRoZSBjb3VudGVyLgorICogVGhlIGNvdW50ZXIgd2lsbCBiZSAwIGluIGNh c2Ugbm8gcmVuZGV6dm91cyBpcyBuZWVkZWQuIEZvciB0aGUgcmVuZGV6dm91cworICogY2FzZSBp dCBpcyBpbml0aWFsaXNlZCB0byB0aGUgbnVtYmVyIG9mIGNwdXMgdG8gcmVuZGV6dm91cyBwbHVz IDEuIEVhY2gKKyAqIG1lbWJlciBlbnRlcmluZyBkZWNyZW1lbnRzIHRoZSBjb3VudGVyLiBUaGUg bGFzdCBvbmUgd2lsbCBkZWNyZW1lbnQgaXQgdG8KKyAqIDEgYW5kIHBlcmZvcm0gdGhlIGZpbmFs IG5lZWRlZCBhY3Rpb24gaW4gdGhhdCBjYXNlIChjYWxsIG9mIGNvbnRleHRfc2F2ZWQoKQorICog aWYgdmNwdSB3YXMgc3dpdGNoZWQpLCBhbmQgdGhlbiBzZXQgdGhlIGNvdW50ZXIgdG8gemVyby4g VGhlIG90aGVyIG1lbWJlcnMKKyAqIHdpbGwgd2FpdCB1bnRpbCB0aGUgY291bnRlciBiZWNvbWVz IHplcm8gdW50aWwgdGhleSBwcm9jZWVkLgorICovCit2b2lkIHNjaGVkX2NvbnRleHRfc3dpdGNo ZWQoc3RydWN0IHZjcHUgKnZwcmV2LCBzdHJ1Y3QgdmNwdSAqdm5leHQpCit7CisgICAgc3RydWN0 IHNjaGVkX3VuaXQgKm5leHQgPSB2bmV4dC0+c2NoZWRfdW5pdDsKKworICAgIGlmICggYXRvbWlj X3JlYWQoJm5leHQtPnJlbmRlenZvdXNfb3V0X2NudCkgKQorICAgIHsKKyAgICAgICAgaW50IGNu dCA9IGF0b21pY19kZWNfcmV0dXJuKCZuZXh0LT5yZW5kZXp2b3VzX291dF9jbnQpOworCisgICAg ICAgIC8qIENhbGwgY29udGV4dF9zYXZlZCgpIGJlZm9yZSByZWxlYXNpbmcgb3RoZXIgd2FpdGVy cy4gKi8KKyAgICAgICAgaWYgKCBjbnQgPT0gMSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm ICggdnByZXYgIT0gdm5leHQgKQorICAgICAgICAgICAgICAgIGNvbnRleHRfc2F2ZWQodnByZXYp OworICAgICAgICAgICAgYXRvbWljX3NldCgmbmV4dC0+cmVuZGV6dm91c19vdXRfY250LCAwKTsK KyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICB3aGlsZSAoIGF0b21pY19yZWFk KCZuZXh0LT5yZW5kZXp2b3VzX291dF9jbnQpICkKKyAgICAgICAgICAgICAgICBjcHVfcmVsYXgo KTsKKyAgICB9CisgICAgZWxzZSBpZiAoIHZwcmV2ICE9IHZuZXh0ICkKKyAgICAgICAgY29udGV4 dF9zYXZlZCh2cHJldik7Cit9CisKK3N0YXRpYyB2b2lkIHNjaGVkX2NvbnRleHRfc3dpdGNoKHN0 cnVjdCB2Y3B1ICp2cHJldiwgc3RydWN0IHZjcHUgKnZuZXh0LAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc190aW1lX3Qgbm93KQoreworICAgIGlmICggdW5saWtlbHkodnByZXYg PT0gdm5leHQpICkKICAgICB7Ci0gICAgICAgIHBjcHVfc2NoZWR1bGVfdW5sb2NrX2lycShsb2Nr LCBjcHUpOwogICAgICAgICBUUkFDRV80RChUUkNfU0NIRURfU1dJVENIX0lORkNPTlQsCi0gICAg ICAgICAgICAgICAgIG5leHQtPmRvbWFpbi0+ZG9tYWluX2lkLCBuZXh0LT51bml0X2lkLAotICAg ICAgICAgICAgICAgICBub3cgLSBwcmV2LT5zdGF0ZV9lbnRyeV90aW1lLAotICAgICAgICAgICAg ICAgICBwcmV2LT5uZXh0X3RpbWUpOwotICAgICAgICB0cmFjZV9jb250aW51ZV9ydW5uaW5nKG5l eHQtPnZjcHVfbGlzdCk7Ci0gICAgICAgIHJldHVybiBjb250aW51ZV9ydW5uaW5nKHByZXYtPnZj cHVfbGlzdCk7CisgICAgICAgICAgICAgICAgIHZuZXh0LT5kb21haW4tPmRvbWFpbl9pZCwgdm5l eHQtPnNjaGVkX3VuaXQtPnVuaXRfaWQsCisgICAgICAgICAgICAgICAgIG5vdyAtIHZwcmV2LT5y dW5zdGF0ZS5zdGF0ZV9lbnRyeV90aW1lLAorICAgICAgICAgICAgICAgICB2cHJldi0+c2NoZWRf dW5pdC0+bmV4dF90aW1lKTsKKyAgICAgICAgc2NoZWRfY29udGV4dF9zd2l0Y2hlZCh2cHJldiwg dm5leHQpOworICAgICAgICB0cmFjZV9jb250aW51ZV9ydW5uaW5nKHZuZXh0KTsKKyAgICAgICAg cmV0dXJuIGNvbnRpbnVlX3J1bm5pbmcodnByZXYpOwogICAgIH0KIAotICAgIFRSQUNFXzNEKFRS Q19TQ0hFRF9TV0lUQ0hfSU5GUFJFViwKLSAgICAgICAgICAgICBwcmV2LT5kb21haW4tPmRvbWFp bl9pZCwgcHJldi0+dW5pdF9pZCwKLSAgICAgICAgICAgICBub3cgLSBwcmV2LT5zdGF0ZV9lbnRy eV90aW1lKTsKLSAgICBUUkFDRV80RChUUkNfU0NIRURfU1dJVENIX0lORk5FWFQsCi0gICAgICAg ICAgICAgbmV4dC0+ZG9tYWluLT5kb21haW5faWQsIG5leHQtPnVuaXRfaWQsCi0gICAgICAgICAg ICAgKG5leHQtPnZjcHVfbGlzdC0+cnVuc3RhdGUuc3RhdGUgPT0gUlVOU1RBVEVfcnVubmFibGUp ID8KLSAgICAgICAgICAgICAobm93IC0gbmV4dC0+c3RhdGVfZW50cnlfdGltZSkgOiAwLAotICAg ICAgICAgICAgIHByZXYtPm5leHRfdGltZSk7CisgICAgU0NIRURfU1RBVF9DUkFOSyhzY2hlZF9j dHgpOwogCi0gICAgQVNTRVJUKHByZXYtPnZjcHVfbGlzdC0+cnVuc3RhdGUuc3RhdGUgPT0gUlVO U1RBVEVfcnVubmluZyk7CisgICAgc3RvcF90aW1lcigmdnByZXYtPnBlcmlvZGljX3RpbWVyKTsK IAotICAgIFRSQUNFXzREKFRSQ19TQ0hFRF9TV0lUQ0gsCi0gICAgICAgICAgICAgcHJldi0+ZG9t YWluLT5kb21haW5faWQsIHByZXYtPnVuaXRfaWQsCi0gICAgICAgICAgICAgbmV4dC0+ZG9tYWlu LT5kb21haW5faWQsIG5leHQtPnVuaXRfaWQpOworICAgIGlmICggdm5leHQtPnNjaGVkX3VuaXQt Pm1pZ3JhdGVkICkKKyAgICAgICAgdmNwdV9tb3ZlX2lycXModm5leHQpOwogCi0gICAgc2NoZWRf dW5pdF9ydW5zdGF0ZV9jaGFuZ2UocHJldiwgZmFsc2UsIG5vdyk7CisgICAgdmNwdV9wZXJpb2Rp Y190aW1lcl93b3JrKHZuZXh0KTsKIAotICAgIEFTU0VSVChuZXh0LT52Y3B1X2xpc3QtPnJ1bnN0 YXRlLnN0YXRlICE9IFJVTlNUQVRFX3J1bm5pbmcpOwotICAgIHNjaGVkX3VuaXRfcnVuc3RhdGVf Y2hhbmdlKG5leHQsIHRydWUsIG5vdyk7CisgICAgY29udGV4dF9zd2l0Y2godnByZXYsIHZuZXh0 KTsKK30KIAotICAgIC8qCi0gICAgICogTkIuIERvbid0IGFkZCBhbnkgdHJhY2UgcmVjb3JkcyBm cm9tIGhlcmUgdW50aWwgdGhlIGFjdHVhbCBjb250ZXh0Ci0gICAgICogc3dpdGNoLCBlbHNlIGxv c3RfcmVjb3JkcyByZXN1bWUgd2lsbCBub3Qgd29yayBwcm9wZXJseS4KLSAgICAgKi8KKy8qCisg KiBSZW5kZXp2b3VzIGJlZm9yZSB0YWtpbmcgYSBzY2hlZHVsaW5nIGRlY2lzaW9uLgorICogQ2Fs bGVkIHdpdGggc2NoZWR1bGUgbG9jayBoZWxkLCBzbyBhbGwgYWNjZXNzZXMgdG8gdGhlIHJlbmRl enZvdXMgY291bnRlcgorICogY2FuIGJlIG5vcm1hbCBvbmVzIChubyBhdG9taWMgYWNjZXNzZXMg bmVlZGVkKS4KKyAqIFRoZSBjb3VudGVyIGlzIGluaXRpYWxpemVkIHRvIHRoZSBudW1iZXIgb2Yg Y3B1cyB0byByZW5kZXp2b3VzIGluaXRpYWxseS4KKyAqIEVhY2ggY3B1IGVudGVyaW5nIHdpbGwg ZGVjcmVtZW50IHRoZSBjb3VudGVyLiBJbiBjYXNlIHRoZSBjb3VudGVyIGJlY29tZXMKKyAqIHpl cm8gZG9fc2NoZWR1bGUoKSBpcyBjYWxsZWQgYW5kIHRoZSByZW5kZXp2b3VzIGNvdW50ZXIgZm9y IGxlYXZpbmcKKyAqIGNvbnRleHRfc3dpdGNoKCkgaXMgc2V0LiBBbGwgb3RoZXIgbWVtYmVycyB3 aWxsIHdhaXQgdW50aWwgdGhlIGNvdW50ZXIgaXMKKyAqIGJlY29taW5nIHplcm8sIGRyb3BwaW5n IHRoZSBzY2hlZHVsZSBsb2NrIGluIGJldHdlZW4uCisgKi8KK3N0YXRpYyBzdHJ1Y3Qgc2NoZWRf dW5pdCAqc2NoZWRfd2FpdF9yZW5kZXp2b3VzX2luKHN0cnVjdCBzY2hlZF91bml0ICpwcmV2LAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Bpbmxv Y2tfdCAqKmxvY2ssIGludCBjcHUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzX3RpbWVfdCBub3cpCit7CisgICAgc3RydWN0IHNjaGVkX3VuaXQg Km5leHQ7CiAKLSAgICBBU1NFUlQoIW5leHQtPmlzX3J1bm5pbmcpOwotICAgIG5leHQtPnZjcHVf bGlzdC0+aXNfcnVubmluZyA9IDE7Ci0gICAgbmV4dC0+aXNfcnVubmluZyA9IDE7Ci0gICAgbmV4 dC0+c3RhdGVfZW50cnlfdGltZSA9IG5vdzsKKyAgICBpZiAoICEtLXByZXYtPnJlbmRlenZvdXNf aW5fY250ICkKKyAgICB7CisgICAgICAgIG5leHQgPSBkb19zY2hlZHVsZShwcmV2LCBub3csIGNw dSk7CisgICAgICAgIGF0b21pY19zZXQoJm5leHQtPnJlbmRlenZvdXNfb3V0X2NudCwgc2NoZWRf Z3JhbnVsYXJpdHkgKyAxKTsKKyAgICAgICAgcmV0dXJuIG5leHQ7CisgICAgfQogCi0gICAgcGNw dV9zY2hlZHVsZV91bmxvY2tfaXJxKGxvY2ssIGNwdSk7CisgICAgd2hpbGUgKCBwcmV2LT5yZW5k ZXp2b3VzX2luX2NudCApCisgICAgeworICAgICAgICAvKgorICAgICAgICAgKiBDb21pbmcgZnJv bSBpZGxlIG1pZ2h0IG5lZWQgdG8gZG8gdGFza2xldCB3b3JrLgorICAgICAgICAgKiBJbiBvcmRl ciB0byBhdm9pZCBkZWFkbG9ja3Mgd2UgY2FuJ3QgZG8gdGhhdCBoZXJlLCBidXQgaGF2ZSB0bwor ICAgICAgICAgKiBjb250aW51ZSB0aGUgaWRsZSBsb29wLgorICAgICAgICAgKiBVbmRvIHRoZSBy ZW5kZXp2b3VzX2luX2NudCBkZWNyZW1lbnQgYW5kIHNjaGVkdWxlIGFub3RoZXIgY2FsbCBvZgor ICAgICAgICAgKiBzY2hlZF9zbGF2ZSgpLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKCBpc19p ZGxlX3VuaXQocHJldikgJiYgc2NoZWRfdGFza2xldF9jaGVja19jcHUoY3B1KSApCisgICAgICAg IHsKKyAgICAgICAgICAgIHN0cnVjdCB2Y3B1ICp2cHJldiA9IGN1cnJlbnQ7CiAKLSAgICBTQ0hF RF9TVEFUX0NSQU5LKHNjaGVkX2N0eCk7CisgICAgICAgICAgICBwcmV2LT5yZW5kZXp2b3VzX2lu X2NudCsrOworICAgICAgICAgICAgYXRvbWljX3NldCgmcHJldi0+cmVuZGV6dm91c19vdXRfY250 LCAwKTsKIAotICAgIHN0b3BfdGltZXIoJnByZXYtPnZjcHVfbGlzdC0+cGVyaW9kaWNfdGltZXIp OworICAgICAgICAgICAgcGNwdV9zY2hlZHVsZV91bmxvY2tfaXJxKCpsb2NrLCBjcHUpOwogCi0g ICAgaWYgKCBuZXh0LT5taWdyYXRlZCApCi0gICAgICAgIHZjcHVfbW92ZV9pcnFzKG5leHQtPnZj cHVfbGlzdCk7CisgICAgICAgICAgICByYWlzZV9zb2Z0aXJxKFNDSEVEX1NMQVZFX1NPRlRJUlEp OworICAgICAgICAgICAgc2NoZWRfY29udGV4dF9zd2l0Y2godnByZXYsIHZwcmV2LCBub3cpOwor ICAgICAgICB9CiAKLSAgICB2Y3B1X3BlcmlvZGljX3RpbWVyX3dvcmsobmV4dC0+dmNwdV9saXN0 KTsKKyAgICAgICAgcGNwdV9zY2hlZHVsZV91bmxvY2tfaXJxKCpsb2NrLCBjcHUpOwogCi0gICAg Y29udGV4dF9zd2l0Y2gocHJldi0+dmNwdV9saXN0LCBuZXh0LT52Y3B1X2xpc3QpOworICAgICAg ICBjcHVfcmVsYXgoKTsKKworICAgICAgICAqbG9jayA9IHBjcHVfc2NoZWR1bGVfbG9ja19pcnEo Y3B1KTsKKyAgICB9CisKKyAgICByZXR1cm4gcHJldi0+bmV4dF90YXNrOwogfQogCi12b2lkIGNv bnRleHRfc2F2ZWQoc3RydWN0IHZjcHUgKnByZXYpCitzdGF0aWMgdm9pZCBzY2hlZF9zbGF2ZSh2 b2lkKQogewotICAgIC8qIENsZWFyIHJ1bm5pbmcgZmxhZyAvYWZ0ZXIvIHdyaXRpbmcgY29udGV4 dCB0byBtZW1vcnkuICovCi0gICAgc21wX3dtYigpOworICAgIHN0cnVjdCB2Y3B1ICAgICAgICAg ICp2cHJldiA9IGN1cnJlbnQ7CisgICAgc3RydWN0IHNjaGVkX3VuaXQgICAgKnByZXYgPSB2cHJl di0+c2NoZWRfdW5pdCwgKm5leHQ7CisgICAgc190aW1lX3QgICAgICAgICAgICAgIG5vdzsKKyAg ICBzcGlubG9ja190ICAgICAgICAgICAqbG9jazsKKyAgICB1bnNpZ25lZCBpbnQgICAgICAgICAg Y3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgpOwogCi0gICAgcHJldi0+aXNfcnVubmluZyA9IDA7Ci0g ICAgcHJldi0+c2NoZWRfdW5pdC0+aXNfcnVubmluZyA9IDA7Ci0gICAgcHJldi0+c2NoZWRfdW5p dC0+c3RhdGVfZW50cnlfdGltZSA9IE5PVygpOworICAgIEFTU0VSVF9OT1RfSU5fQVRPTUlDKCk7 CiAKLSAgICAvKiBDaGVjayBmb3IgbWlncmF0aW9uIHJlcXVlc3QgL2FmdGVyLyBjbGVhcmluZyBy dW5uaW5nIGZsYWcuICovCi0gICAgc21wX21iKCk7CisgICAgbG9jayA9IHBjcHVfc2NoZWR1bGVf bG9ja19pcnEoY3B1KTsKKworICAgIG5vdyA9IE5PVygpOwogCi0gICAgc2NoZWRfY29udGV4dF9z YXZlZCh2Y3B1X3NjaGVkdWxlcihwcmV2KSwgcHJldi0+c2NoZWRfdW5pdCk7CisgICAgaWYgKCAh cHJldi0+cmVuZGV6dm91c19pbl9jbnQgKQorICAgIHsKKyAgICAgICAgcGNwdV9zY2hlZHVsZV91 bmxvY2tfaXJxKGxvY2ssIGNwdSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzdG9w X3RpbWVyKCZnZXRfc2NoZWRfcmVzKGNwdSktPnNfdGltZXIpOworCisgICAgbmV4dCA9IHNjaGVk X3dhaXRfcmVuZGV6dm91c19pbihwcmV2LCAmbG9jaywgY3B1LCBub3cpOworCisgICAgcGNwdV9z Y2hlZHVsZV91bmxvY2tfaXJxKGxvY2ssIGNwdSk7CiAKLSAgICBzY2hlZF91bml0X21pZ3JhdGVf ZmluaXNoKHByZXYtPnNjaGVkX3VuaXQpOworICAgIHNjaGVkX2NvbnRleHRfc3dpdGNoKHZwcmV2 LCBuZXh0LT52Y3B1X2xpc3QsIG5vdyk7Cit9CisKKy8qCisgKiBUaGUgbWFpbiBmdW5jdGlvbgor ICogLSBkZXNjaGVkdWxlIHRoZSBjdXJyZW50IGRvbWFpbiAoc2NoZWR1bGVyIGluZGVwZW5kZW50 KS4KKyAqIC0gcGljayBhIG5ldyBkb21haW4gKHNjaGVkdWxlciBkZXBlbmRlbnQpLgorICovCitz dGF0aWMgdm9pZCBzY2hlZHVsZSh2b2lkKQoreworICAgIHN0cnVjdCB2Y3B1ICAgICAgICAgICp2 bmV4dCwgKnZwcmV2ID0gY3VycmVudDsKKyAgICBzdHJ1Y3Qgc2NoZWRfdW5pdCAgICAqcHJldiA9 IHZwcmV2LT5zY2hlZF91bml0LCAqbmV4dCA9IE5VTEw7CisgICAgc190aW1lX3QgICAgICAgICAg ICAgIG5vdzsKKyAgICBzdHJ1Y3Qgc2NoZWRfcmVzb3VyY2UgKnNkOworICAgIHNwaW5sb2NrX3Qg ICAgICAgICAgICpsb2NrOworICAgIGludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7CisKKyAg ICBBU1NFUlRfTk9UX0lOX0FUT01JQygpOworCisgICAgU0NIRURfU1RBVF9DUkFOSyhzY2hlZF9y dW4pOworCisgICAgc2QgPSBnZXRfc2NoZWRfcmVzKGNwdSk7CisKKyAgICBsb2NrID0gcGNwdV9z Y2hlZHVsZV9sb2NrX2lycShjcHUpOworCisgICAgaWYgKCBwcmV2LT5yZW5kZXp2b3VzX2luX2Nu dCApCisgICAgeworICAgICAgICAvKgorICAgICAgICAgKiBXZSBoYXZlIGEgcmFjZTogc2NoZWRf c2xhdmUoKSBzaG91bGQgYmUgY2FsbGVkLCBzbyByYWlzZSBhIHNvZnRpcnEKKyAgICAgICAgICog aW4gb3JkZXIgdG8gcmUtZW50ZXIgc2NoZWR1bGUoKSBsYXRlciBhbmQgY2FsbCBzY2hlZF9zbGF2 ZSgpIG5vdy4KKyAgICAgICAgICovCisgICAgICAgIHBjcHVfc2NoZWR1bGVfdW5sb2NrX2lycShs b2NrLCBjcHUpOworCisgICAgICAgIHJhaXNlX3NvZnRpcnEoU0NIRURVTEVfU09GVElSUSk7Cisg ICAgICAgIHJldHVybiBzY2hlZF9zbGF2ZSgpOworICAgIH0KKworICAgIG5vdyA9IE5PVygpOwor CisgICAgc3RvcF90aW1lcigmc2QtPnNfdGltZXIpOworCisgICAgaWYgKCBzY2hlZF9ncmFudWxh cml0eSA+IDEgKQorICAgIHsKKyAgICAgICAgY3B1bWFza190IG1hc2s7CisKKyAgICAgICAgcHJl di0+cmVuZGV6dm91c19pbl9jbnQgPSBzY2hlZF9ncmFudWxhcml0eTsKKyAgICAgICAgY3B1bWFz a19hbmRub3QoJm1hc2ssIHNkLT5jcHVzLCBjcHVtYXNrX29mKGNwdSkpOworICAgICAgICBjcHVt YXNrX3JhaXNlX3NvZnRpcnEoJm1hc2ssIFNDSEVEX1NMQVZFX1NPRlRJUlEpOworICAgICAgICBu ZXh0ID0gc2NoZWRfd2FpdF9yZW5kZXp2b3VzX2luKHByZXYsICZsb2NrLCBjcHUsIG5vdyk7Cisg ICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHByZXYtPnJlbmRlenZvdXNfaW5fY250ID0g MDsKKyAgICAgICAgbmV4dCA9IGRvX3NjaGVkdWxlKHByZXYsIG5vdywgY3B1KTsKKyAgICAgICAg YXRvbWljX3NldCgmbmV4dC0+cmVuZGV6dm91c19vdXRfY250LCAwKTsKKyAgICB9CisKKyAgICBw Y3B1X3NjaGVkdWxlX3VubG9ja19pcnEobG9jaywgY3B1KTsKKworICAgIHZuZXh0ID0gbmV4dC0+ dmNwdV9saXN0OworICAgIHNjaGVkX2NvbnRleHRfc3dpdGNoKHZwcmV2LCB2bmV4dCwgbm93KTsK IH0KIAogLyogVGhlIHNjaGVkdWxlciB0aW1lcjogZm9yY2UgYSBydW4gdGhyb3VnaCB0aGUgc2No ZWR1bGVyICovCkBAIC0xODc0LDYgKzIwNjMsNyBAQCBzdGF0aWMgaW50IGNwdV9zY2hlZHVsZV91 cCh1bnNpZ25lZCBpbnQgY3B1KQogICAgIGlmICggc2QgPT0gTlVMTCApCiAgICAgICAgIHJldHVy biAtRU5PTUVNOwogICAgIHNkLT5tYXN0ZXJfY3B1ID0gY3B1OworICAgIHNkLT5jcHVzID0gY3B1 bWFza19vZihjcHUpOwogICAgIHNldF9zY2hlZF9yZXMoY3B1LCBzZCk7CiAKICAgICBwZXJfY3B1 KHNjaGVkdWxlciwgY3B1KSA9ICZzY2hlZF9pZGxlX29wczsKQEAgLTE4OTQsNiArMjA4NCw4IEBA IHN0YXRpYyBpbnQgY3B1X3NjaGVkdWxlX3VwKHVuc2lnbmVkIGludCBjcHUpCiAgICAgaWYgKCBp ZGxlX3ZjcHVbY3B1XSA9PSBOVUxMICkKICAgICAgICAgcmV0dXJuIC1FTk9NRU07CiAKKyAgICBp ZGxlX3ZjcHVbY3B1XS0+c2NoZWRfdW5pdC0+cmVuZGV6dm91c19pbl9jbnQgPSAwOworCiAgICAg LyoKICAgICAgKiBObyBuZWVkIHRvIGFsbG9jYXRlIGFueSBzY2hlZHVsZXIgZGF0YSwgYXMgY3B1 cyBjb21pbmcgb25saW5lIGFyZQogICAgICAqIGZyZWUgaW5pdGlhbGx5IGFuZCB0aGUgaWRsZSBz Y2hlZHVsZXIgZG9lc24ndCBuZWVkIGFueSBkYXRhIGFyZWFzCkBAIC0xOTk0LDYgKzIxODYsNyBA QCB2b2lkIF9faW5pdCBzY2hlZHVsZXJfaW5pdCh2b2lkKQogICAgIGludCBpOwogCiAgICAgb3Bl bl9zb2Z0aXJxKFNDSEVEVUxFX1NPRlRJUlEsIHNjaGVkdWxlKTsKKyAgICBvcGVuX3NvZnRpcnEo U0NIRURfU0xBVkVfU09GVElSUSwgc2NoZWRfc2xhdmUpOwogCiAgICAgZm9yICggaSA9IDA7IGkg PCBOVU1fU0NIRURVTEVSUzsgaSsrKQogICAgIHsKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vc29m dGlycS5jIGIveGVuL2NvbW1vbi9zb2Z0aXJxLmMKaW5kZXggODNjM2MwOWJkNS4uMmQ2NjE5MzIw MyAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9zb2Z0aXJxLmMKKysrIGIveGVuL2NvbW1vbi9zb2Z0 aXJxLmMKQEAgLTMzLDggKzMzLDggQEAgc3RhdGljIHZvaWQgX19kb19zb2Z0aXJxKHVuc2lnbmVk IGxvbmcgaWdub3JlX21hc2spCiAgICAgZm9yICggOyA7ICkKICAgICB7CiAgICAgICAgIC8qCi0g ICAgICAgICAqIEluaXRpYWxpc2UgQGNwdSBvbiBldmVyeSBpdGVyYXRpb246IFNDSEVEVUxFX1NP RlRJUlEgbWF5IG1vdmUKLSAgICAgICAgICogdXMgdG8gYW5vdGhlciBwcm9jZXNzb3IuCisgICAg ICAgICAqIEluaXRpYWxpc2UgQGNwdSBvbiBldmVyeSBpdGVyYXRpb246IFNDSEVEVUxFX1NPRlRJ UlEgb3IKKyAgICAgICAgICogU0NIRURfU0xBVkVfU09GVElSUSBtYXkgbW92ZSB1cyB0byBhbm90 aGVyIHByb2Nlc3Nvci4KICAgICAgICAgICovCiAgICAgICAgIGNwdSA9IHNtcF9wcm9jZXNzb3Jf aWQoKTsKIApAQCAtNTUsNyArNTUsNyBAQCB2b2lkIHByb2Nlc3NfcGVuZGluZ19zb2Z0aXJxcyh2 b2lkKQogewogICAgIEFTU0VSVCghaW5faXJxKCkgJiYgbG9jYWxfaXJxX2lzX2VuYWJsZWQoKSk7 CiAgICAgLyogRG8gbm90IGVudGVyIHNjaGVkdWxlciBhcyBpdCBjYW4gcHJlZW1wdCB0aGUgY2Fs bGluZyBjb250ZXh0LiAqLwotICAgIF9fZG9fc29mdGlycSgxdWw8PFNDSEVEVUxFX1NPRlRJUlEp OworICAgIF9fZG9fc29mdGlycSgoMXVsIDw8IFNDSEVEVUxFX1NPRlRJUlEpIHwgKDF1bCA8PCBT Q0hFRF9TTEFWRV9TT0ZUSVJRKSk7CiB9CiAKIHZvaWQgZG9fc29mdGlycSh2b2lkKQpkaWZmIC0t Z2l0IGEveGVuL2luY2x1ZGUveGVuL3NjaGVkLWlmLmggYi94ZW4vaW5jbHVkZS94ZW4vc2NoZWQt aWYuaAppbmRleCA0ZTg5YTFlNjQwLi40ODcyNTcwNjEyIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVk ZS94ZW4vc2NoZWQtaWYuaAorKysgYi94ZW4vaW5jbHVkZS94ZW4vc2NoZWQtaWYuaApAQCAtNDIs NiArNDIsNyBAQCBzdHJ1Y3Qgc2NoZWRfcmVzb3VyY2UgewogCiAgICAgLyogQ3B1IHdpdGggbG93 ZXN0IGlkIGluIHNjaGVkdWxpbmcgcmVzb3VyY2UuICovCiAgICAgdW5zaWduZWQgaW50ICAgICAg ICBtYXN0ZXJfY3B1OworICAgIGNvbnN0IGNwdW1hc2tfdCAgICAqY3B1czsgICAgICAgICAgIC8q IGNwdXMgY292ZXJlZCBieSB0aGlzIHN0cnVjdCAgICAgKi8KIH07CiAKICNkZWZpbmUgY3Vycl9v bl9jcHUoYykgICAgKGdldF9zY2hlZF9yZXMoYyktPmN1cnIpCmRpZmYgLS1naXQgYS94ZW4vaW5j bHVkZS94ZW4vc2NoZWQuaCBiL3hlbi9pbmNsdWRlL3hlbi9zY2hlZC5oCmluZGV4IGE4MTY0ZDg3 M2MuLmMwZTRkYzJkYzMgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi9zY2hlZC5oCisrKyBi L3hlbi9pbmNsdWRlL3hlbi9zY2hlZC5oCkBAIC0yOTIsNiArMjkyLDEyIEBAIHN0cnVjdCBzY2hl ZF91bml0IHsKICAgICAvKiBOZXh0IHVuaXQgdG8gcnVuLiAqLwogICAgIHN0cnVjdCBzY2hlZF91 bml0ICAgICAgKm5leHRfdGFzazsKICAgICBzX3RpbWVfdCAgICAgICAgICAgICAgICBuZXh0X3Rp bWU7CisKKyAgICAvKiBOdW1iZXIgb2YgdmNwdXMgbm90IHlldCBqb2luZWQgZm9yIGNvbnRleHQg c3dpdGNoLiAqLworICAgIHVuc2lnbmVkIGludCAgICAgICAgICAgIHJlbmRlenZvdXNfaW5fY250 OworCisgICAgLyogTnVtYmVyIG9mIHZjcHVzIG5vdCB5ZXQgZmluaXNoZWQgd2l0aCBjb250ZXh0 IHN3aXRjaC4gKi8KKyAgICBhdG9taWNfdCAgICAgICAgICAgICAgICByZW5kZXp2b3VzX291dF9j bnQ7CiB9OwogCiAjZGVmaW5lIGZvcl9lYWNoX3NjaGVkX3VuaXQoZCwgZSkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTY5NCwxMCArNzAwLDEwIEBAIHZvaWQg c3luY19sb2NhbF9leGVjc3RhdGUodm9pZCk7CiAKIC8qCiAgKiBDYWxsZWQgYnkgdGhlIHNjaGVk dWxlciB0byBzd2l0Y2ggdG8gYW5vdGhlciBWQ1BVLiBUaGlzIGZ1bmN0aW9uIG11c3QKLSAqIGNh bGwgY29udGV4dF9zYXZlZChAcHJldikgd2hlbiB0aGUgbG9jYWwgQ1BVIGlzIG5vIGxvbmdlciBy dW5uaW5nIGluCi0gKiBAcHJldidzIGNvbnRleHQsIGFuZCB0aGF0IGNvbnRleHQgaXMgc2F2ZWQg dG8gbWVtb3J5LiBBbHRlcm5hdGl2ZWx5LCBpZgotICogaW1wbGVtZW50aW5nIGxhenkgY29udGV4 dCBzd2l0Y2hpbmcsIGl0IHN1ZmZpY2VzIHRvIGVuc3VyZSB0aGF0IGludm9raW5nCi0gKiBzeW5j X3ZjcHVfZXhlY3N0YXRlKCkgd2lsbCBzd2l0Y2ggYW5kIGNvbW1pdCBAcHJldidzIHN0YXRlLgor ICogY2FsbCBzY2hlZF9jb250ZXh0X3N3aXRjaGVkKEBwcmV2LCBAbmV4dCkgd2hlbiB0aGUgbG9j YWwgQ1BVIGlzIG5vIGxvbmdlcgorICogcnVubmluZyBpbiBAcHJldidzIGNvbnRleHQsIGFuZCB0 aGF0IGNvbnRleHQgaXMgc2F2ZWQgdG8gbWVtb3J5LgorICogQWx0ZXJuYXRpdmVseSwgaWYgaW1w bGVtZW50aW5nIGxhenkgY29udGV4dCBzd2l0Y2hpbmcsIGl0IHN1ZmZpY2VzIHRvIGVuc3VyZQor ICogdGhhdCBpbnZva2luZyBzeW5jX3ZjcHVfZXhlY3N0YXRlKCkgd2lsbCBzd2l0Y2ggYW5kIGNv bW1pdCBAcHJldidzIHN0YXRlLgogICovCiB2b2lkIGNvbnRleHRfc3dpdGNoKAogICAgIHN0cnVj dCB2Y3B1ICpwcmV2LApAQCAtNzA5LDcgKzcxNSw3IEBAIHZvaWQgY29udGV4dF9zd2l0Y2goCiAg KiBzYXZlZCB0byBtZW1vcnkuIEFsdGVybmF0aXZlbHksIGlmIGltcGxlbWVudGluZyBsYXp5IGNv bnRleHQgc3dpdGNoaW5nLAogICogZW5zdXJlIHRoYXQgaW52b2tpbmcgc3luY192Y3B1X2V4ZWNz dGF0ZSgpIHdpbGwgc3dpdGNoIGFuZCBjb21taXQgQHByZXYuCiAgKi8KLXZvaWQgY29udGV4dF9z YXZlZChzdHJ1Y3QgdmNwdSAqcHJldik7Cit2b2lkIHNjaGVkX2NvbnRleHRfc3dpdGNoZWQoc3Ry dWN0IHZjcHUgKnByZXYsIHN0cnVjdCB2Y3B1ICp2bmV4dCk7CiAKIC8qIENhbGxlZCBieSB0aGUg c2NoZWR1bGVyIHRvIGNvbnRpbnVlIHJ1bm5pbmcgdGhlIGN1cnJlbnQgVkNQVS4gKi8KIHZvaWQg Y29udGludWVfcnVubmluZygKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9zb2Z0aXJxLmgg Yi94ZW4vaW5jbHVkZS94ZW4vc29mdGlycS5oCmluZGV4IGMzMjdjOWI2Y2QuLmQ3MjczYjM4OWIg MTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi9zb2Z0aXJxLmgKKysrIGIveGVuL2luY2x1ZGUv eGVuL3NvZnRpcnEuaApAQCAtNCw2ICs0LDcgQEAKIC8qIExvdy1sYXRlbmN5IHNvZnRpcnFzIGNv bWUgZmlyc3QgaW4gdGhlIGZvbGxvd2luZyBsaXN0LiAqLwogZW51bSB7CiAgICAgVElNRVJfU09G VElSUSA9IDAsCisgICAgU0NIRURfU0xBVkVfU09GVElSUSwKICAgICBTQ0hFRFVMRV9TT0ZUSVJR LAogICAgIE5FV19UTEJGTFVTSF9DTE9DS19QRVJJT0RfU09GVElSUSwKICAgICBSQ1VfU09GVElS USwKLS0gCjIuMTYuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qu b3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2 ZWw=