From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau Monne Subject: [PATCH v10 5/9] xen/x86: allow HVM guests to use hypercalls to bring up vCPUs Date: Mon, 7 Dec 2015 17:48:33 +0100 Message-ID: <1449506917-26426-6-git-send-email-roger.pau@citrix.com> References: <1449506917-26426-1-git-send-email-roger.pau@citrix.com> 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.72) (envelope-from ) id 1a5yyG-00034K-QW for xen-devel@lists.xenproject.org; Mon, 07 Dec 2015 16:49:05 +0000 In-Reply-To: <1449506917-26426-1-git-send-email-roger.pau@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xenproject.org Cc: Andrew Cooper , Stefano Stabellini , Ian Campbell , Jan Beulich , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org QWxsb3cgdGhlIHVzYWdlIG9mIHRoZSBWQ1BVT1BfaW5pdGlhbGlzZSwgVkNQVU9QX3VwLCBWQ1BV T1BfZG93biwKVkNQVU9QX2lzX3VwLCBWQ1BVT1BfZ2V0X3BoeXNpZCBhbmQgVkNQVU9QX3NlbmRf bm1pIGh5cGVyY2FsbHMgZnJvbSBIVk0KZ3Vlc3RzLgoKVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEg bmV3IHN0cnVjdHVyZSAodmNwdV9odm1fY29udGV4dCkgdGhhdCBzaG91bGQgYmUgdXNlZAppbiBj b25qdWN0aW9uIHdpdGggdGhlIFZDUFVPUF9pbml0aWFsaXNlIGh5cGVyY2FsbCBpbiBvcmRlciB0 byBpbml0aWFsaXplCnZDUFVzIGZvciBIVk0gZ3Vlc3RzLgoKU2lnbmVkLW9mZi1ieTogUm9nZXIg UGF1IE1vbm7DqSA8cm9nZXIucGF1QGNpdHJpeC5jb20+ClNpZ25lZC1vZmYtYnk6IEFuZHJldyBD b29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNjOiBKYW4gQmV1bGljaCA8amJldWxp Y2hAc3VzZS5jb20+CkNjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29t PgpDYzogSWFuIENhbXBiZWxsIDxpYW4uY2FtcGJlbGxAY2l0cml4LmNvbT4KQ2M6IFN0ZWZhbm8g U3RhYmVsbGluaSA8c3RlZmFuby5zdGFiZWxsaW5pQGNpdHJpeC5jb20+Ci0tLQpDaGFuZ2VzIHNp bmNlIHY5OgogLSBzL2FyY2hfaW5pdGlhbGl6ZV92Y3B1L2FyY2hfaW5pdGlhbGlzZV92Y3B1Lgog LSBzL2RlZmF1bHRfaW5pdGFsaXplX3ZjcHUvZGVmYXVsdF9pbml0aWFsaXNlX3ZjcHUuCiAtIEV4 cGFuZGVkIHRoZSBTRUcgbWFjcm8gaW4gb3JkZXIgdG8gYWxzbyBkZSB0aGUgc2FuaXR5IGNoZWNr aW5nLgogLSBSZW1vdmVkIHNldHRpbmcgdGhlIC5zZWwgZmllbGQgaW4gdGhlIDMyYml0IG1hY3Jv LgogLSBSZW1vdmVkIHNldHRpbmcgdGhlIC5zZWwgYW5kIC5iYXNlIGZpZWxkcyBpbiB0aGUgNjRi aXQgU0VHIG1hY3JvLgogLSBGaXhlZCB0aGUgY2FsbHMgdG8gaHZtX2NyNF9ndWVzdF9yZXNlcnZl ZF9iaXRzIGFuZCBodm1fZWZlcl92YWxpZCBpbgogICBvcmRlciB0byBwZXJmb3JtIHRoZSBjaGVj a2luZyBhZ2FpbnN0IHRoZSBndWVzdCBjcHVpZCBmZWF0dXJlcy4KIC0gTW92ZWQgdGhlIHByb3Rv dHlwZSBvZiBkZWZhdWx0X2luaXRpYWxpc2VfdmNwdSBzbyBpdCdzIGFmdGVyCiAgIGFyY2hfaW5p dGlhbGlzZV92Y3B1LgogLSBSZW1vdmUgdGhlIEhWTSB3cmFwcGVycyBhcm91bmQgdmNwdV9vcCwg YWxsIHZjcHUgb3BzIGFyZSBub3cgYXZhaWxhYmxlIHRvCiAgIEhWTSBndWVzdHMuCgpDaGFuZ2Vz IHNpbmNlIHY4OgogLSBDcmVhdGUgYSBnZW5lcmljIGRlZmF1bHRfaW5pdGFsaXplX3ZjcHUgZnVu Y3Rpb24gdGhhdCBjYW4gYmUgc2hhcmVkIHdpdGgKICAgeDg2IFBWIGd1ZXN0cyBhbmQgQVJNIGd1 ZXN0cy4KIC0gUGFzcyBjaGVja19zZWdtZW50IHJlZ2lzdGVyIGJ5IHJlZmVyZW5jZS4KIC0gQ2hl Y2sgdGhhdCBjb2RlL2RhdGEgc2VnbWVudHMgYWx3YXlzIGhhdmUgdGhlICdTJyBhdHRyaWJ1dGUg Yml0IHNldC4KIC0gRml4IHNvbWUgb2YgdGhlIGNoZWNrcyBkb25lIGluIGNoZWNrX3NlZ21lbnQu CiAtIEZpeCBpbmRlbnRhdGlvbiBvZiBncHJpbnRrIGNhbGxzLgogLSBSZW1vdmUgZmFpbHVyZSBt ZXNzYWdlcyBpbiBjYXNlIHRoZSBwYWRkaW5nIGZpZWxkcyBhcmUgbm90IHplcm8uCiAtIE1ha2Ug aHZtX2VmZXJfdmFsaWQgYW5kIGh2bV9jcjRfZ3Vlc3RfcmVzZXJ2ZWRfYml0cyBnbG9iYWwgYW5k IHVzZSB0aGVtCiAgIHRvIGNoZWNrIHRoZSBpbnB1dCB2YWx1ZXMgcHJvdmlkZWQgYnkgdGhlIHVz ZXIuCiAtIE9ubHkgY2hlY2sgdGhlIGF0dHJpYnV0ZSBmaWVsZCBpbiBvcmRlciB0byBmaWd1cmUg b3V0IGlmIGEgc2VnbWVudCBpcwogICBudWxsLgogLSBNYWtlIHN1cmUgdGhlIFRSIHNlZ21lbnQg aXMgYSBzeXN0ZW0gc2VnbWVudC4KCkNoYW5nZXMgc2luY2Ugdjc6CiAtIEltcHJvdmVkIGVycm9y IG1lc3NhZ2VzLgogLSBTZXQgRUZFUi5MTUEgaWYgRUZFUi5MTUUgaXMgc2V0IGJ5IHRoZSB1c2Vy LgogLSBGaXggY2FsY3VsYXRpb24gb2YgQ1MgbGltaXQuCiAtIEFkZCBtb3JlIGNoZWNrcyB0byBz ZWdtZW50IHJlZ2lzdGVycy4KIC0gQWRkIGNoZWNrcyB0byBtYWtlIHN1cmUgcGFkZGluZyBmaWVs ZHMgYXJlIDAuCiAtIFJlbW92ZSB1Z2x5IGFyY2ggaWZkZWZzIGZyb20gY29tbW9uIGRvbWFpbi5j LgogLSBBZGQgdGhlIGltcGxpY2l0IHBhZGRpbmcgb2YgdmNwdV9odm1feDg2XzMyIGV4cGxpY2l0 bHkgaW4gdGhlIHN0cnVjdHVyZS4KIC0gU2ltcGxpZnkgdGhlIGNvbXBhdCB2Y3B1IGNvZGUgc2lu Y2UgaXQncyBvbmx5IHVzZWQgb24geDg2LgoKQ2hhbmdlcyBzaW5jZSB2NjoKIC0gQWRkIGNvbW1l bnRzIHRvIGNsYXJpZnkgc29tZSBpbml0aWFsaXphdGlvbnMuCiAtIEludHJvZHVjZSBhIGdlbmVy aWMgZGVmYXVsdF9pbml0aWFsaXplX3ZjcHUgdGhhdCdzIHVzZWQgdG8gaW5pdGlhbGl6ZSBhCiAg IEFSTSB2Q1BVIG9yIGEgeDg2IFBWIHZDUFUuCiAtIE1vdmUgdGhlIHVuZGVmIG9mIHRoZSBTRUcg bWFjcm8uCiAtIEZpeCB0aGUgc2l6ZSBvZiB0aGUgZWZsYWdzIHJlZ2lzdGVyLCBpdCBzaG91bGQg YmUgMzJiaXRzLgogLSBBZGQgYSBjb21tZW50IHJlZ2FyZGluZyB0aGUgdmFsdWUgb2YgdGhlIDEy LTE1IGJpdHMgb2YgdGhlIF9hciBmaWVsZHMuCiAtIFJlbW92ZSB0aGUgMTZiaXQgc3RydWN1dHJl LCB0aGUgMzJiaXQgb25lIGNhbiBiZSB1c2VkIHRvIHN0YXJ0IHRoZSBjcHUgaW4KICAgcmVhbCBt b2RlLgogLSBBZGQgc29tZSBzYW5pdHkgY2hlY2tzIHRvIHRoZSB2YWx1ZXMgcGFzc2VkIGluLgog LSBBZGQgcGFkZGluZ3MgdG8gdmNwdV9odm1fY29udGV4dCBzbyB0aGUgbGF5b3V0IG9uIDMyLzY0 Yml0cyBpcyB0aGUgc2FtZS4KIC0gQWRkIHN1cHBvcnQgZm9yIHRoZSBjb21wYXQgdmVyc2lvbiBv ZiBWQ1BVT1BfaW5pdGlhbGlzZS4KCkNoYW5nZXMgc2luY2UgdjU6CiAtIEZpeCBhIGNvZGluZyBz dHlsZSBpc3N1ZS4KIC0gTWVyZ2UgdGhlIGNvZGUgZnJvbSB3aXAtZG1saXRlLXY1LXJlZmFjdG9y IGJ5IEFuZHJldyBpbiBvcmRlciB0byByZWR1Y2UKICAgYmxvYXQuCiAtIFByaW50IHRoZSBvZmZl bmRpbmcgJWNyMyBpbiBjYXNlIG9mIGVycm9yIHdoZW4gdXNpbmcgc2hhZG93LgogLSBSZWR1Y2Ug dGhlIHNjb3BlIG9mIGxvY2FsIHZhcmlhYmxlcyBpbiBhcmNoX2luaXRpYWxpemVfdmNwdS4KIC0g cy9jdXJyZW50LT5kb21haW4vdi0+ZG9tYWluL2cgaW4gYXJjaF9pbml0aWFsaXplX3ZjcHUuCiAt IEV4cGFuZCB0aGUgY29tbWVudCBpbiBwdWJsaWMvdmNwdS5oIHRvIGRvY3VtZW50IHRoZSB1c2Fn ZSBvZgogICB2Y3B1X2h2bV9jb250ZXh0IGZvciBIVk0gZ3Vlc3RzLgogLSBBZGQgbXlzZWxmIGFz IHRoZSBjb3B5cmlnaHQgaG9sZGVyIGZvciB0aGUgcHVibGljIGh2bV92Y3B1LmggaGVhZGVyLgoK Q2hhbmdlcyBzaW5jZSB2NDoKIC0gRG9uJ3QgYXNzdW1lIG1vZGUgaXMgNjRCLCBhZGQgYW4gZXhw bGljaXQgY2hlY2suCiAtIERvbid0IHNldCBURl9rZXJuZWxfbW9kZSwgaXQgaXMgb25seSBuZWVk ZWQgZm9yIFBWIGd1ZXN0cy4KIC0gRG9uJ3Qgc2V0IENSMF9FVCB1bmNvbmRpdGlvbmFsbHkuCi0t LQogeGVuL2FyY2gvYXJtL2RvbWFpbi5jICAgICAgICAgICAgIHwgICA1ICsKIHhlbi9hcmNoL3g4 Ni9kb21haW4uYyAgICAgICAgICAgICB8IDMwOCArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKwogeGVuL2FyY2gveDg2L2h2bS9odm0uYyAgICAgICAgICAgIHwgIDYxICstLS0t LS0tCiB4ZW4vY29tbW9uL2NvbXBhdC9kb21haW4uYyAgICAgICAgfCAgNTAgKysrKystLQogeGVu L2NvbW1vbi9kb21haW4uYyAgICAgICAgICAgICAgIHwgIDQxICsrKy0tCiB4ZW4vaW5jbHVkZS9N YWtlZmlsZSAgICAgICAgICAgICAgfCAgIDEgKwogeGVuL2luY2x1ZGUvYXNtLXg4Ni9kb21haW4u aCAgICAgIHwgICAzICsKIHhlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2h2bS5oICAgICB8ICAgNSAr CiB4ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL2h2bV92Y3B1LmggfCAxNDQgKysrKysrKysrKysrKysr KysrCiB4ZW4vaW5jbHVkZS9wdWJsaWMvdmNwdS5oICAgICAgICAgfCAgIDYgKy0KIHhlbi9pbmNs dWRlL3hlbi9kb21haW4uaCAgICAgICAgICB8ICAgMyArCiB4ZW4vaW5jbHVkZS94bGF0LmxzdCAg ICAgICAgICAgICAgfCAgIDMgKwogMTIgZmlsZXMgY2hhbmdlZCwgNTQxIGluc2VydGlvbnMoKyks IDg5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL3B1YmxpYy9o dm0vaHZtX3ZjcHUuaAoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9kb21haW4uYyBiL3hlbi9h cmNoL2FybS9kb21haW4uYwppbmRleCA4NjBhYzdkLi4zZDI3NGFlIDEwMDY0NAotLS0gYS94ZW4v YXJjaC9hcm0vZG9tYWluLmMKKysrIGIveGVuL2FyY2gvYXJtL2RvbWFpbi5jCkBAIC03NTYsNiAr NzU2LDExIEBAIGludCBhcmNoX3NldF9pbmZvX2d1ZXN0KAogICAgIHJldHVybiAwOwogfQogCitp bnQgYXJjaF9pbml0aWFsaXNlX3ZjcHUoc3RydWN0IHZjcHUgKnYsIFhFTl9HVUVTVF9IQU5ETEVf UEFSQU0odm9pZCkgYXJnKQoreworICAgIHJldHVybiBkZWZhdWx0X2luaXRpYWxpc2VfdmNwdSh2 LCBhcmcpOworfQorCiBpbnQgYXJjaF92Y3B1X3Jlc2V0KHN0cnVjdCB2Y3B1ICp2KQogewogICAg IHZjcHVfZW5kX3NodXRkb3duX2RlZmVycmFsKHYpOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2 L2RvbWFpbi5jIGIveGVuL2FyY2gveDg2L2RvbWFpbi5jCmluZGV4IGRmNDBkYzYuLmNhNTI0N2Qg MTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9kb21haW4uYworKysgYi94ZW4vYXJjaC94ODYvZG9t YWluLmMKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDx4ZW4vd2FpdC5oPgogI2luY2x1ZGUg PHhlbi9ndWVzdF9hY2Nlc3MuaD4KICNpbmNsdWRlIDxwdWJsaWMvc3lzY3RsLmg+CisjaW5jbHVk ZSA8cHVibGljL2h2bS9odm1fdmNwdS5oPgogI2luY2x1ZGUgPGFzbS9yZWdzLmg+CiAjaW5jbHVk ZSA8YXNtL21jMTQ2ODE4cnRjLmg+CiAjaW5jbHVkZSA8YXNtL3N5c3RlbS5oPgpAQCAtMTE4OCw2 ICsxMTg5LDMxMyBAQCBpbnQgYXJjaF9zZXRfaW5mb19ndWVzdCgKICN1bmRlZiBjCiB9CiAKK3N0 YXRpYyBpbmxpbmUgaW50IGNoZWNrX3NlZ21lbnQoc3RydWN0IHNlZ21lbnRfcmVnaXN0ZXIgKnJl ZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSB4ODZfc2VnbWVudCBzZWcp Cit7CisKKyAgICBpZiAoIHJlZy0+YXR0ci5maWVsZHMucGFkICE9IDAgKQorICAgIHsKKyAgICAg ICAgZ3ByaW50ayhYRU5MT0dfRVJSLAorICAgICAgICAgICAgICAgICJBdHRyaWJ1dGUgYml0cyAx Mi0xNSBvZiB0aGUgc2VnbWVudCBhcmUgbm90IHplcm9cbiIpOworICAgICAgICByZXR1cm4gLUVJ TlZBTDsKKyAgICB9CisKKyAgICBpZiAoIHJlZy0+YXR0ci5ieXRlcyA9PSAwICkKKyAgICB7Cisg ICAgICAgIGlmICggc2VnICE9IHg4Nl9zZWdfZHMgJiYgc2VnICE9IHg4Nl9zZWdfZXMgKQorICAg ICAgICB7CisgICAgICAgICAgICBncHJpbnRrKFhFTkxPR19FUlIsICJOdWxsIHNlbGVjdG9yIHBy b3ZpZGVkIGZvciBDUywgU1Mgb3IgVFJcbiIpOworICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7 CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKCBzZWcgIT0g eDg2X3NlZ190ciAmJiAhcmVnLT5hdHRyLmZpZWxkcy5zICkKKyAgICB7CisgICAgICAgIGdwcmlu dGsoWEVOTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAiU3lzdGVtIHNlZ21lbnQgcHJvdmlkZWQg Zm9yIGEgY29kZSBvciBkYXRhIHNlZ21lbnRcbiIpOworICAgICAgICByZXR1cm4gLUVJTlZBTDsK KyAgICB9CisKKyAgICBpZiAoIHNlZyA9PSB4ODZfc2VnX3RyICYmIHJlZy0+YXR0ci5maWVsZHMu cyApCisgICAgeworICAgICAgICBncHJpbnRrKFhFTkxPR19FUlIsCisgICAgICAgICAgICAgICAg IkNvZGUgb3IgZGF0YSBzZWdtZW50IHByb3ZpZGVkIGZvciBUUlxuIik7CisgICAgICAgIHJldHVy biAtRUlOVkFMOworICAgIH0KKworICAgIGlmICggIXJlZy0+YXR0ci5maWVsZHMucCApCisgICAg eworICAgICAgICBncHJpbnRrKFhFTkxPR19FUlIsICJOb24tcHJlc2VudCBzZWdtZW50IHByb3Zp ZGVkXG4iKTsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorCisgICAgaWYgKCBzZWcg PT0geDg2X3NlZ19jcyAmJiAhKHJlZy0+YXR0ci5maWVsZHMudHlwZSAmIDB4OCkgKQorICAgIHsK KyAgICAgICAgZ3ByaW50ayhYRU5MT0dfRVJSLCAiQ1MgaXMgbWlzc2luZyBjb2RlIHR5cGVcbiIp OworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKKyAgICBpZiAoIHNlZyA9PSB4ODZf c2VnX3NzICYmCisgICAgICAgICAoKHJlZy0+YXR0ci5maWVsZHMudHlwZSAmIDB4OCkgfHwgIShy ZWctPmF0dHIuZmllbGRzLnR5cGUgJiAweDIpKSApCisgICAgeworICAgICAgICBncHJpbnRrKFhF TkxPR19FUlIsCisgICAgICAgICAgICAgICAgIlVuYWJsZSBsb2FkIGEgY29kZSBvciBub24gd3Jp dGVhYmxlIHNlZ21lbnQgaW50byBTU1xuIik7CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAg IH0KKworICAgIGlmICggcmVnLT5hdHRyLmZpZWxkcy5zICYmIHNlZyAhPSB4ODZfc2VnX3NzICYm IHNlZyAhPSB4ODZfc2VnX2NzICYmCisgICAgICAgICAocmVnLT5hdHRyLmZpZWxkcy50eXBlICYg MHg4KSAmJiAhKHJlZy0+YXR0ci5maWVsZHMudHlwZSAmIDB4MikgKQorICAgIHsKKyAgICAgICAg Z3ByaW50ayhYRU5MT0dfRVJSLAorICAgICAgICAgICAgICAgICJVbmFibGUgdG8gbG9hZCBhIG5v biByZWFkYWJsZSBjb2RlIHNlZ21lbnQgaW50byBEUyBvciBFU1xuIik7CisgICAgICAgIHJldHVy biAtRUlOVkFMOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCisvKiBDYWxsZWQgYnkgVkNQ VU9QX2luaXRpYWxpc2UgZm9yIEhWTSBndWVzdHMuICovCitpbnQgYXJjaF9zZXRfaW5mb19odm1f Z3Vlc3Qoc3RydWN0IHZjcHUgKnYsIGNvbnN0IHZjcHVfaHZtX2NvbnRleHRfdCAqY3R4KQorewor ICAgIHN0cnVjdCBjcHVfdXNlcl9yZWdzICp1cmVncyA9ICZ2LT5hcmNoLnVzZXJfcmVnczsKKyAg ICBzdHJ1Y3Qgc2VnbWVudF9yZWdpc3RlciBjcywgZHMsIHNzLCBlcywgdHI7CisgICAgY29uc3Qg Y2hhciAqZXJyc3RyOworICAgIGludCByYzsKKworICAgIGlmICggY3R4LT5wYWQgIT0gMCApCisg ICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAgc3dpdGNoICggY3R4LT5tb2RlICkKKyAgICB7 CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICBjYXNlIFZDUFVf SFZNX01PREVfMzJCOgorICAgIHsKKyAgICAgICAgY29uc3Qgc3RydWN0IHZjcHVfaHZtX3g4Nl8z MiAqcmVncyA9ICZjdHgtPmNwdV9yZWdzLng4Nl8zMjsKKyAgICAgICAgdWludDMyX3QgbGltaXQ7 CisKKyAgICAgICAgaWYgKCBjdHgtPmNwdV9yZWdzLng4Nl8zMi5wYWQxICE9IDAgfHwKKyAgICAg ICAgICAgICBjdHgtPmNwdV9yZWdzLng4Nl8zMi5wYWQyWzBdICE9IDAgfHwKKyAgICAgICAgICAg ICBjdHgtPmNwdV9yZWdzLng4Nl8zMi5wYWQyWzFdICE9IDAgfHwKKyAgICAgICAgICAgICBjdHgt PmNwdV9yZWdzLng4Nl8zMi5wYWQyWzJdICE9IDAgKQorICAgICAgICAgICAgcmV0dXJuIC1FSU5W QUw7CisKKyNkZWZpbmUgU0VHKHMsIHIpICh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcyA9IChzdHJ1Y3Qgc2VnbWVudF9yZWdp c3Rlcil7IC5iYXNlID0gKHIpLT5zICMjIF9iYXNlLCAgICAgICAgICAgICAgICAgXAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubGltaXQgPSAociktPnMgIyMgX2xpbWl0LCAg ICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIu Ynl0ZXMgPSAociktPnMgIyMgX2FyIH07ICAgICAgICAgICBcCisgICAgY2hlY2tfc2VnbWVudCgm cywgeDg2X3NlZ18gIyMgcyk7IH0pCisKKyAgICAgICAgcmMgPSBTRUcoY3MsIHJlZ3MpOworICAg ICAgICByYyB8PSBTRUcoZHMsIHJlZ3MpOworICAgICAgICByYyB8PSBTRUcoc3MsIHJlZ3MpOwor ICAgICAgICByYyB8PSBTRUcoZXMsIHJlZ3MpOworICAgICAgICByYyB8PSBTRUcodHIsIHJlZ3Mp OworI3VuZGVmIFNFRworCisgICAgICAgIGlmICggcmMgIT0gMCApCisgICAgICAgICAgICByZXR1 cm4gcmM7CisKKyAgICAgICAgLyogQmFzaWMgc2FuaXR5IGNoZWNrcy4gKi8KKyAgICAgICAgbGlt aXQgPSBjcy5saW1pdDsKKyAgICAgICAgaWYgKCBjcy5hdHRyLmZpZWxkcy5nICkKKyAgICAgICAg ICAgIGxpbWl0ID0gKGxpbWl0IDw8IDEyKSB8IDB4ZmZmOworICAgICAgICBpZiAoIHJlZ3MtPmVp cCA+IGxpbWl0ICkKKyAgICAgICAgeworICAgICAgICAgICAgZ3ByaW50ayhYRU5MT0dfRVJSLCAi RUlQICglIzA4eCkgb3V0c2lkZSBDUyBsaW1pdCAoJSMwOHgpXG4iLAorICAgICAgICAgICAgICAg ICAgICByZWdzLT5laXAsIGxpbWl0KTsKKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworICAg ICAgICB9CisKKyAgICAgICAgaWYgKCBzcy5hdHRyLmZpZWxkcy5kcGwgIT0gY3MuYXR0ci5maWVs ZHMuZHBsICkKKyAgICAgICAgeworICAgICAgICAgICAgZ3ByaW50ayhYRU5MT0dfRVJSLCAiU1Mu RFBMICgldSkgaXMgZGlmZmVyZW50IHRoYW4gQ1MuRFBMICgldSlcbiIsCisgICAgICAgICAgICAg ICAgICAgIHNzLmF0dHIuZmllbGRzLmRwbCwgY3MuYXR0ci5maWVsZHMuZHBsKTsKKyAgICAgICAg ICAgIHJldHVybiAtRUlOVkFMOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCBkcy5hdHRyLmZp ZWxkcy5wICYmIGRzLmF0dHIuZmllbGRzLmRwbCA+IGNzLmF0dHIuZmllbGRzLmRwbCApCisgICAg ICAgIHsKKyAgICAgICAgICAgIGdwcmludGsoWEVOTE9HX0VSUiwgIkRTLkRQTCAoJXUpIGlzIGdy ZWF0ZXIgdGhhbiBDUy5EUEwgKCV1KVxuIiwKKyAgICAgICAgICAgICAgICAgICAgZHMuYXR0ci5m aWVsZHMuZHBsLCBjcy5hdHRyLmZpZWxkcy5kcGwpOworICAgICAgICAgICAgcmV0dXJuIC1FSU5W QUw7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIGVzLmF0dHIuZmllbGRzLnAgJiYgZXMuYXR0 ci5maWVsZHMuZHBsID4gY3MuYXR0ci5maWVsZHMuZHBsICkKKyAgICAgICAgeworICAgICAgICAg ICAgZ3ByaW50ayhYRU5MT0dfRVJSLCAiRVMuRFBMICgldSkgaXMgZ3JlYXRlciB0aGFuIENTLkRQ TCAoJXUpXG4iLAorICAgICAgICAgICAgICAgICAgICBlcy5hdHRyLmZpZWxkcy5kcGwsIGNzLmF0 dHIuZmllbGRzLmRwbCk7CisgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICAgICAgfQor CisgICAgICAgIGlmICggKHJlZ3MtPmVmZXIgJiBFRkVSX0xNQSkgJiYgIShyZWdzLT5lZmVyICYg RUZFUl9MTUUpICkKKyAgICAgICAgeworICAgICAgICAgICAgZ3ByaW50ayhYRU5MT0dfRVJSLCAi RUZFUi5MTUEgc2V0IHdpdGhvdXQgRUZFUi5MTUUgKCUjMDE2bHgpXG4iLAorICAgICAgICAgICAg ICAgICAgICByZWdzLT5lZmVyKTsKKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgICAg ICB9CisKKyAgICAgICAgdXJlZ3MtPnJheCAgICA9IHJlZ3MtPmVheDsKKyAgICAgICAgdXJlZ3Mt PnJjeCAgICA9IHJlZ3MtPmVjeDsKKyAgICAgICAgdXJlZ3MtPnJkeCAgICA9IHJlZ3MtPmVkeDsK KyAgICAgICAgdXJlZ3MtPnJieCAgICA9IHJlZ3MtPmVieDsKKyAgICAgICAgdXJlZ3MtPnJzcCAg ICA9IHJlZ3MtPmVzcDsKKyAgICAgICAgdXJlZ3MtPnJicCAgICA9IHJlZ3MtPmVicDsKKyAgICAg ICAgdXJlZ3MtPnJzaSAgICA9IHJlZ3MtPmVzaTsKKyAgICAgICAgdXJlZ3MtPnJkaSAgICA9IHJl Z3MtPmVkaTsKKyAgICAgICAgdXJlZ3MtPnJpcCAgICA9IHJlZ3MtPmVpcDsKKyAgICAgICAgdXJl Z3MtPnJmbGFncyA9IHJlZ3MtPmVmbGFnczsKKworICAgICAgICB2LT5hcmNoLmh2bV92Y3B1Lmd1 ZXN0X2NyWzBdID0gcmVncy0+Y3IwOworICAgICAgICB2LT5hcmNoLmh2bV92Y3B1Lmd1ZXN0X2Ny WzNdID0gcmVncy0+Y3IzOworICAgICAgICB2LT5hcmNoLmh2bV92Y3B1Lmd1ZXN0X2NyWzRdID0g cmVncy0+Y3I0OworICAgICAgICB2LT5hcmNoLmh2bV92Y3B1Lmd1ZXN0X2VmZXIgID0gcmVncy0+ ZWZlcjsKKyAgICB9CisgICAgYnJlYWs7CisKKyAgICBjYXNlIFZDUFVfSFZNX01PREVfNjRCOgor ICAgIHsKKyAgICAgICAgY29uc3Qgc3RydWN0IHZjcHVfaHZtX3g4Nl82NCAqcmVncyA9ICZjdHgt PmNwdV9yZWdzLng4Nl82NDsKKworICAgICAgICAvKiBCYXNpYyBzYW5pdHkgY2hlY2tzLiAqLwor ICAgICAgICBpZiAoICFpc19jYW5vbmljYWxfYWRkcmVzcyhyZWdzLT5yaXApICkKKyAgICAgICAg eworICAgICAgICAgICAgZ3ByaW50ayhYRU5MT0dfRVJSLCAiUklQIGNvbnRhaW5zIGEgbm9uLWNh bm9uaWNhbCBhZGRyZXNzICglI2x4KVxuIiwKKyAgICAgICAgICAgICAgICAgICAgcmVncy0+cmlw KTsKKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgICAgICB9CisKKyAgICAgICAgaWYg KCAhKHJlZ3MtPmNyMCAmIFg4Nl9DUjBfUEcpICkKKyAgICAgICAgeworICAgICAgICAgICAgZ3By aW50ayhYRU5MT0dfRVJSLCAiQ1IwIGRvZXNuJ3QgaGF2ZSBwYWdpbmcgZW5hYmxlZCAoJSMwMTZs eClcbiIsCisgICAgICAgICAgICAgICAgICAgIHJlZ3MtPmNyMCk7CisgICAgICAgICAgICByZXR1 cm4gLUVJTlZBTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggIShyZWdzLT5jcjQgJiBYODZf Q1I0X1BBRSkgKQorICAgICAgICB7CisgICAgICAgICAgICBncHJpbnRrKFhFTkxPR19FUlIsICJD UjQgZG9lc24ndCBoYXZlIFBBRSBlbmFibGVkICglIzAxNmx4KVxuIiwKKyAgICAgICAgICAgICAg ICAgICAgcmVncy0+Y3I0KTsKKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgICAgICB9 CisKKyAgICAgICAgaWYgKCAhKHJlZ3MtPmVmZXIgJiBFRkVSX0xNRSkgKQorICAgICAgICB7Cisg ICAgICAgICAgICBncHJpbnRrKFhFTkxPR19FUlIsICJFRkVSIGRvZXNuJ3QgaGF2ZSBMTUUgZW5h YmxlZCAoJSMwMTZseClcbiIsCisgICAgICAgICAgICAgICAgICAgIHJlZ3MtPmVmZXIpOworICAg ICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgICAgIH0KKworICAgICAgICB1cmVncy0+cmF4 ICAgID0gcmVncy0+cmF4OworICAgICAgICB1cmVncy0+cmN4ICAgID0gcmVncy0+cmN4OworICAg ICAgICB1cmVncy0+cmR4ICAgID0gcmVncy0+cmR4OworICAgICAgICB1cmVncy0+cmJ4ICAgID0g cmVncy0+cmJ4OworICAgICAgICB1cmVncy0+cnNwICAgID0gcmVncy0+cnNwOworICAgICAgICB1 cmVncy0+cmJwICAgID0gcmVncy0+cmJwOworICAgICAgICB1cmVncy0+cnNpICAgID0gcmVncy0+ cnNpOworICAgICAgICB1cmVncy0+cmRpICAgID0gcmVncy0+cmRpOworICAgICAgICB1cmVncy0+ cmlwICAgID0gcmVncy0+cmlwOworICAgICAgICB1cmVncy0+cmZsYWdzID0gcmVncy0+cmZsYWdz OworCisgICAgICAgIHYtPmFyY2guaHZtX3ZjcHUuZ3Vlc3RfY3JbMF0gPSByZWdzLT5jcjA7Cisg ICAgICAgIHYtPmFyY2guaHZtX3ZjcHUuZ3Vlc3RfY3JbM10gPSByZWdzLT5jcjM7CisgICAgICAg IHYtPmFyY2guaHZtX3ZjcHUuZ3Vlc3RfY3JbNF0gPSByZWdzLT5jcjQ7CisgICAgICAgIHYtPmFy Y2guaHZtX3ZjcHUuZ3Vlc3RfZWZlciAgPSByZWdzLT5lZmVyOworCisjZGVmaW5lIFNFRyhsLCBh KSAoc3RydWN0IHNlZ21lbnRfcmVnaXN0ZXIpeyAubGltaXQgPSAobCksIC5hdHRyLmJ5dGVzID0g KGEpIH0KKyAgICAgICAgY3MgPSBTRUcofjB1LCAweGE5Yik7IC8qIDY0Yml0IGNvZGUgc2VnbWVu dC4gKi8KKyAgICAgICAgZHMgPSBzcyA9IGVzID0gU0VHKH4wdSwgMHhjOTMpOworICAgICAgICB0 ciA9IFNFRygweDY3LCAweDhiKTsgLyogNjRiaXQgVFNTIChidXN5KS4gKi8KKyN1bmRlZiBTRUcK KyAgICB9CisgICAgYnJlYWs7CisKKyAgICB9CisKKyAgICBpZiAoIHYtPmFyY2guaHZtX3ZjcHUu Z3Vlc3RfZWZlciAmIEVGRVJfTE1FICkKKyAgICAgICAgdi0+YXJjaC5odm1fdmNwdS5ndWVzdF9l ZmVyIHw9IEVGRVJfTE1BOworCisgICAgaWYgKCB2LT5hcmNoLmh2bV92Y3B1Lmd1ZXN0X2NyWzRd ICYgaHZtX2NyNF9ndWVzdF9yZXNlcnZlZF9iaXRzKHYsIDApICkKKyAgICB7CisgICAgICAgIGdw cmludGsoWEVOTE9HX0VSUiwgIkJhZCBDUjQgdmFsdWU6ICUjMDE2bHhcbiIsCisgICAgICAgICAg ICAgICAgdi0+YXJjaC5odm1fdmNwdS5ndWVzdF9jcls0XSk7CisgICAgICAgIHJldHVybiAtRUlO VkFMOworICAgIH0KKworICAgIGVycnN0ciA9IGh2bV9lZmVyX3ZhbGlkKHYsIHYtPmFyY2guaHZt X3ZjcHUuZ3Vlc3RfZWZlciwgLTEpOworICAgIGlmICggZXJyc3RyICkKKyAgICB7CisgICAgICAg IGdwcmludGsoWEVOTE9HX0VSUiwgIkJhZCBFRkVSIHZhbHVlICglIzAxNmx4KTogJXNcbiIsCisg ICAgICAgICAgICAgICB2LT5hcmNoLmh2bV92Y3B1Lmd1ZXN0X2VmZXIsIGVycnN0cik7CisgICAg ICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKworICAgIGh2bV91cGRhdGVfZ3Vlc3RfY3Iodiwg MCk7CisgICAgaHZtX3VwZGF0ZV9ndWVzdF9jcih2LCAzKTsKKyAgICBodm1fdXBkYXRlX2d1ZXN0 X2NyKHYsIDQpOworICAgIGh2bV91cGRhdGVfZ3Vlc3RfZWZlcih2KTsKKworICAgIGlmICggaHZt X3BhZ2luZ19lbmFibGVkKHYpICYmICFwYWdpbmdfbW9kZV9oYXAodi0+ZG9tYWluKSApCisgICAg eworICAgICAgICAvKiBTaGFkb3ctbW9kZSBDUjMgY2hhbmdlLiBDaGVjayBQREJSIGFuZCB1cGRh dGUgcmVmY291bnRzLiAqLworICAgICAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlID0gZ2V0X3Bh Z2VfZnJvbV9nZm4odi0+ZG9tYWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg di0+YXJjaC5odm1fdmNwdS5ndWVzdF9jclszXSA+PiBQQUdFX1NISUZULAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTlVMTCwgUDJNX0FMTE9DKTsKKyAgICAgICAgaWYgKCAhcGFn ZSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGdwcmludGsoWEVOTE9HX0VSUiwgIkludmFsaWQg Q1IzOiAlI2x4XG4iLAorICAgICAgICAgICAgICAgICAgICB2LT5hcmNoLmh2bV92Y3B1Lmd1ZXN0 X2NyWzNdKTsKKyAgICAgICAgICAgIGRvbWFpbl9jcmFzaCh2LT5kb21haW4pOworICAgICAgICAg ICAgcmV0dXJuIC1FSU5WQUw7CisgICAgICAgIH0KKworICAgICAgICB2LT5hcmNoLmd1ZXN0X3Rh YmxlID0gcGFnZXRhYmxlX2Zyb21fcGFnZShwYWdlKTsKKyAgICB9CisKKyAgICBodm1fc2V0X3Nl Z21lbnRfcmVnaXN0ZXIodiwgeDg2X3NlZ19jcywgJmNzKTsKKyAgICBodm1fc2V0X3NlZ21lbnRf cmVnaXN0ZXIodiwgeDg2X3NlZ19kcywgJmRzKTsKKyAgICBodm1fc2V0X3NlZ21lbnRfcmVnaXN0 ZXIodiwgeDg2X3NlZ19zcywgJnNzKTsKKyAgICBodm1fc2V0X3NlZ21lbnRfcmVnaXN0ZXIodiwg eDg2X3NlZ19lcywgJmVzKTsKKyAgICBodm1fc2V0X3NlZ21lbnRfcmVnaXN0ZXIodiwgeDg2X3Nl Z190ciwgJnRyKTsKKworICAgIC8qIFN5bmMgQVAncyBUU0Mgd2l0aCBCU1Ancy4gKi8KKyAgICB2 LT5hcmNoLmh2bV92Y3B1LmNhY2hlX3RzY19vZmZzZXQgPQorICAgICAgICB2LT5kb21haW4tPnZj cHVbMF0tPmFyY2guaHZtX3ZjcHUuY2FjaGVfdHNjX29mZnNldDsKKyAgICBodm1fZnVuY3Muc2V0 X3RzY19vZmZzZXQodiwgdi0+YXJjaC5odm1fdmNwdS5jYWNoZV90c2Nfb2Zmc2V0LAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB2LT5kb21haW4tPmFyY2guaHZtX2RvbWFpbi5zeW5jX3Rz Yyk7CisKKyAgICBwYWdpbmdfdXBkYXRlX3BhZ2luZ19tb2Rlcyh2KTsKKworICAgIHYtPmlzX2lu aXRpYWxpc2VkID0gMTsKKyAgICBzZXRfYml0KF9WUEZfZG93biwgJnYtPnBhdXNlX2ZsYWdzKTsK KworICAgIHJldHVybiAwOworfQorCitpbnQgYXJjaF9pbml0aWFsaXNlX3ZjcHUoc3RydWN0IHZj cHUgKnYsIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0odm9pZCkgYXJnKQoreworICAgIGludCByYzsK KworICAgIGlmICggaXNfaHZtX3ZjcHUodikgKQorICAgIHsKKyAgICAgICAgc3RydWN0IGRvbWFp biAqZCA9IHYtPmRvbWFpbjsKKyAgICAgICAgc3RydWN0IHZjcHVfaHZtX2NvbnRleHQgY3R4dDsK KworICAgICAgICBpZiAoIGNvcHlfZnJvbV9ndWVzdCgmY3R4dCwgYXJnLCAxKSApCisgICAgICAg ICAgICByZXR1cm4gLUVGQVVMVDsKKworICAgICAgICBkb21haW5fbG9jayhkKTsKKyAgICAgICAg cmMgPSB2LT5pc19pbml0aWFsaXNlZCA/IC1FRVhJU1QgOiBhcmNoX3NldF9pbmZvX2h2bV9ndWVz dCh2LCAmY3R4dCk7CisgICAgICAgIGRvbWFpbl91bmxvY2soZCk7CisgICAgfQorICAgIGVsc2UK KyAgICAgICAgcmMgPSBkZWZhdWx0X2luaXRpYWxpc2VfdmNwdSh2LCBhcmcpOworCisgICAgcmV0 dXJuIHJjOworfQorCiBpbnQgYXJjaF92Y3B1X3Jlc2V0KHN0cnVjdCB2Y3B1ICp2KQogewogICAg IGlmICggaXNfcHZfdmNwdSh2KSApCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2h2bS5j IGIveGVuL2FyY2gveDg2L2h2bS9odm0uYwppbmRleCA5MmQ1N2ZmLi4wOGNlZjFmIDEwMDY0NAot LS0gYS94ZW4vYXJjaC94ODYvaHZtL2h2bS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMK QEAgLTE4MzMsOCArMTgzMyw4IEBAIHN0YXRpYyBpbnQgaHZtX3NhdmVfY3B1X2N0eHQoc3RydWN0 IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCiB9CiAKIC8qIFJldHVybiBhIHN0 cmluZyBpbmRpY2F0aW5nIHRoZSBlcnJvciwgb3IgTlVMTCBmb3IgdmFsaWQuICovCi1zdGF0aWMg Y29uc3QgY2hhciAqIGh2bV9lZmVyX3ZhbGlkKGNvbnN0IHN0cnVjdCB2Y3B1ICp2LCB1aW50NjRf dCB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmVkIGludCBj cjBfcGcpCitjb25zdCBjaGFyICpodm1fZWZlcl92YWxpZChjb25zdCBzdHJ1Y3QgdmNwdSAqdiwg dWludDY0X3QgdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduZWQgaW50IGNy MF9wZykKIHsKICAgICB1bnNpZ25lZCBpbnQgZXh0MV9lY3ggPSAwLCBleHQxX2VkeCA9IDA7CiAK QEAgLTE5MDIsOCArMTkwMiw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICogaHZtX2VmZXJfdmFsaWQo Y29uc3Qgc3RydWN0IHZjcHUgKnYsIHVpbnQ2NF90IHZhbHVlLAogICAgICAgICBYODZfQ1IwX0NE IHwgWDg2X0NSMF9QRykpKQogCiAvKiBUaGVzZSBiaXRzIGluIENSNCBjYW5ub3QgYmUgc2V0IGJ5 IHRoZSBndWVzdC4gKi8KLXN0YXRpYyB1bnNpZ25lZCBsb25nIGh2bV9jcjRfZ3Vlc3RfcmVzZXJ2 ZWRfYml0cyhjb25zdCBzdHJ1Y3QgdmNwdSAqdiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBib29sX3QgcmVzdG9yZSkKK3Vuc2lnbmVkIGxvbmcgaHZt X2NyNF9ndWVzdF9yZXNlcnZlZF9iaXRzKGNvbnN0IHN0cnVjdCB2Y3B1ICp2LGJvb2xfdCByZXN0 b3JlKQogewogICAgIHVuc2lnbmVkIGludCBsZWFmMV9lY3ggPSAwLCBsZWFmMV9lZHggPSAwOwog ICAgIHVuc2lnbmVkIGludCBsZWFmN18wX2VieCA9IDAsIGxlYWY3XzBfZWN4ID0gMDsKQEAgLTUx MDgsMzEgKzUxMDcsNiBAQCBzdGF0aWMgbG9uZyBodm1fcGh5c2Rldl9vcChpbnQgY21kLCBYRU5f R1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGFyZykKICAgICB9CiB9CiAKLXN0YXRpYyBsb25nIGh2 bV92Y3B1X29wKAotICAgIGludCBjbWQsIHVuc2lnbmVkIGludCB2Y3B1aWQsIFhFTl9HVUVTVF9I QU5ETEVfUEFSQU0odm9pZCkgYXJnKQotewotICAgIGxvbmcgcmM7Ci0KLSAgICBzd2l0Y2ggKCBj bWQgKQotICAgIHsKLSAgICBjYXNlIFZDUFVPUF9yZWdpc3Rlcl9ydW5zdGF0ZV9tZW1vcnlfYXJl YToKLSAgICBjYXNlIFZDUFVPUF9nZXRfcnVuc3RhdGVfaW5mbzoKLSAgICBjYXNlIFZDUFVPUF9z ZXRfcGVyaW9kaWNfdGltZXI6Ci0gICAgY2FzZSBWQ1BVT1Bfc3RvcF9wZXJpb2RpY190aW1lcjoK LSAgICBjYXNlIFZDUFVPUF9zZXRfc2luZ2xlc2hvdF90aW1lcjoKLSAgICBjYXNlIFZDUFVPUF9z dG9wX3NpbmdsZXNob3RfdGltZXI6Ci0gICAgY2FzZSBWQ1BVT1BfcmVnaXN0ZXJfdmNwdV9pbmZv OgotICAgIGNhc2UgVkNQVU9QX3JlZ2lzdGVyX3ZjcHVfdGltZV9tZW1vcnlfYXJlYToKLSAgICAg ICAgcmMgPSBkb192Y3B1X29wKGNtZCwgdmNwdWlkLCBhcmcpOwotICAgICAgICBicmVhazsKLSAg ICBkZWZhdWx0OgotICAgICAgICByYyA9IC1FTk9TWVM7Ci0gICAgICAgIGJyZWFrOwotICAgIH0K LQotICAgIHJldHVybiByYzsKLX0KLQogdHlwZWRlZiB1bnNpZ25lZCBsb25nIGh2bV9oeXBlcmNh bGxfdCgKICAgICB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1 bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLAogICAgIHVuc2lnbmVkIGxvbmcpOwpAQCAtNTE2 NiwzMSArNTE0MCw2IEBAIHN0YXRpYyBsb25nIGh2bV9tZW1vcnlfb3BfY29tcGF0MzIoaW50IGNt ZCwgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcpCiAgICAgcmV0dXJuIGNvbXBhdF9t ZW1vcnlfb3AoY21kLCBhcmcpOwogfQogCi1zdGF0aWMgbG9uZyBodm1fdmNwdV9vcF9jb21wYXQz MigKLSAgICBpbnQgY21kLCB1bnNpZ25lZCB2Y3B1aWQsIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0o dm9pZCkgYXJnKQotewotICAgIGxvbmcgcmM7Ci0KLSAgICBzd2l0Y2ggKCBjbWQgKQotICAgIHsK LSAgICBjYXNlIFZDUFVPUF9yZWdpc3Rlcl9ydW5zdGF0ZV9tZW1vcnlfYXJlYToKLSAgICBjYXNl IFZDUFVPUF9nZXRfcnVuc3RhdGVfaW5mbzoKLSAgICBjYXNlIFZDUFVPUF9zZXRfcGVyaW9kaWNf dGltZXI6Ci0gICAgY2FzZSBWQ1BVT1Bfc3RvcF9wZXJpb2RpY190aW1lcjoKLSAgICBjYXNlIFZD UFVPUF9zZXRfc2luZ2xlc2hvdF90aW1lcjoKLSAgICBjYXNlIFZDUFVPUF9zdG9wX3NpbmdsZXNo b3RfdGltZXI6Ci0gICAgY2FzZSBWQ1BVT1BfcmVnaXN0ZXJfdmNwdV9pbmZvOgotICAgIGNhc2Ug VkNQVU9QX3JlZ2lzdGVyX3ZjcHVfdGltZV9tZW1vcnlfYXJlYToKLSAgICAgICAgcmMgPSBjb21w YXRfdmNwdV9vcChjbWQsIHZjcHVpZCwgYXJnKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVs dDoKLSAgICAgICAgcmMgPSAtRU5PU1lTOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBy ZXR1cm4gcmM7Ci19Ci0KIHN0YXRpYyBsb25nIGh2bV9waHlzZGV2X29wX2NvbXBhdDMyKAogICAg IGludCBjbWQsIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0odm9pZCkgYXJnKQogewpAQCAtNTIxMiw3 ICs1MTYxLDcgQEAgc3RhdGljIGxvbmcgaHZtX3BoeXNkZXZfb3BfY29tcGF0MzIoCiBzdGF0aWMg aHZtX2h5cGVyY2FsbF90ICpjb25zdCBodm1faHlwZXJjYWxsNjRfdGFibGVbTlJfaHlwZXJjYWxs c10gPSB7CiAgICAgWyBfX0hZUEVSVklTT1JfbWVtb3J5X29wIF0gPSAoaHZtX2h5cGVyY2FsbF90 ICopaHZtX21lbW9yeV9vcCwKICAgICBbIF9fSFlQRVJWSVNPUl9ncmFudF90YWJsZV9vcCBdID0g KGh2bV9oeXBlcmNhbGxfdCAqKWh2bV9ncmFudF90YWJsZV9vcCwKLSAgICBbIF9fSFlQRVJWSVNP Ul92Y3B1X29wIF0gPSAoaHZtX2h5cGVyY2FsbF90ICopaHZtX3ZjcHVfb3AsCisgICAgSFlQRVJD QUxMKHZjcHVfb3ApLAogICAgIFsgX19IWVBFUlZJU09SX3BoeXNkZXZfb3AgXSA9IChodm1faHlw ZXJjYWxsX3QgKilodm1fcGh5c2Rldl9vcCwKICAgICBIWVBFUkNBTEwoeGVuX3ZlcnNpb24pLAog ICAgIEhZUEVSQ0FMTChjb25zb2xlX2lvKSwKQEAgLTUyMzMsNyArNTE4Miw3IEBAIHN0YXRpYyBo dm1faHlwZXJjYWxsX3QgKmNvbnN0IGh2bV9oeXBlcmNhbGw2NF90YWJsZVtOUl9oeXBlcmNhbGxz XSA9IHsKIHN0YXRpYyBodm1faHlwZXJjYWxsX3QgKmNvbnN0IGh2bV9oeXBlcmNhbGwzMl90YWJs ZVtOUl9oeXBlcmNhbGxzXSA9IHsKICAgICBbIF9fSFlQRVJWSVNPUl9tZW1vcnlfb3AgXSA9ICho dm1faHlwZXJjYWxsX3QgKilodm1fbWVtb3J5X29wX2NvbXBhdDMyLAogICAgIFsgX19IWVBFUlZJ U09SX2dyYW50X3RhYmxlX29wIF0gPSAoaHZtX2h5cGVyY2FsbF90ICopaHZtX2dyYW50X3RhYmxl X29wX2NvbXBhdDMyLAotICAgIFsgX19IWVBFUlZJU09SX3ZjcHVfb3AgXSA9IChodm1faHlwZXJj YWxsX3QgKilodm1fdmNwdV9vcF9jb21wYXQzMiwKKyAgICBDT01QQVRfQ0FMTCh2Y3B1X29wKSwK ICAgICBbIF9fSFlQRVJWSVNPUl9waHlzZGV2X29wIF0gPSAoaHZtX2h5cGVyY2FsbF90ICopaHZt X3BoeXNkZXZfb3BfY29tcGF0MzIsCiAgICAgQ09NUEFUX0NBTEwoeGVuX3ZlcnNpb24pLAogICAg IEhZUEVSQ0FMTChjb25zb2xlX2lvKSwKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vY29tcGF0L2Rv bWFpbi5jIGIveGVuL2NvbW1vbi9jb21wYXQvZG9tYWluLmMKaW5kZXggYzYwZDgyNC4uODhiZmRj OCAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9jb21wYXQvZG9tYWluLmMKKysrIGIveGVuL2NvbW1v bi9jb21wYXQvZG9tYWluLmMKQEAgLTExLDYgKzExLDcgQEAgYXNtKCIuZmlsZSBcIiIgX19GSUxF X18gIlwiIik7CiAjaW5jbHVkZSA8eGVuL2d1ZXN0X2FjY2Vzcy5oPgogI2luY2x1ZGUgPHhlbi9o eXBlcmNhbGwuaD4KICNpbmNsdWRlIDxjb21wYXQvdmNwdS5oPgorI2luY2x1ZGUgPGNvbXBhdC9o dm0vaHZtX3ZjcHUuaD4KIAogI2RlZmluZSB4ZW5fdmNwdV9zZXRfcGVyaW9kaWNfdGltZXIgdmNw dV9zZXRfcGVyaW9kaWNfdGltZXIKIENIRUNLX3ZjcHVfc2V0X3BlcmlvZGljX3RpbWVyOwpAQCAt MjQsNiArMjUsMTQgQEAgQ0hFQ0tfU0laRV8oc3RydWN0LCB2Y3B1X2luZm8pOwogQ0hFQ0tfdmNw dV9yZWdpc3Rlcl92Y3B1X2luZm87CiAjdW5kZWYgeGVuX3ZjcHVfcmVnaXN0ZXJfdmNwdV9pbmZv CiAKKyNkZWZpbmUgeGVuX3ZjcHVfaHZtX2NvbnRleHQgdmNwdV9odm1fY29udGV4dAorI2RlZmlu ZSB4ZW5fdmNwdV9odm1feDg2XzMyIHZjcHVfaHZtX3g4Nl8zMgorI2RlZmluZSB4ZW5fdmNwdV9o dm1feDg2XzY0IHZjcHVfaHZtX3g4Nl82NAorQ0hFQ0tfdmNwdV9odm1fY29udGV4dDsKKyN1bmRl ZiB4ZW5fdmNwdV9odm1feDg2XzY0CisjdW5kZWYgeGVuX3ZjcHVfaHZtX3g4Nl8zMgorI3VuZGVm IHhlbl92Y3B1X2h2bV9jb250ZXh0CisKIGludCBjb21wYXRfdmNwdV9vcChpbnQgY21kLCB1bnNp Z25lZCBpbnQgdmNwdWlkLCBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGFyZykKIHsKICAg ICBzdHJ1Y3QgZG9tYWluICpkID0gY3VycmVudC0+ZG9tYWluOwpAQCAtMzcsMzMgKzQ2LDQ0IEBA IGludCBjb21wYXRfdmNwdV9vcChpbnQgY21kLCB1bnNpZ25lZCBpbnQgdmNwdWlkLCBYRU5fR1VF U1RfSEFORExFX1BBUkFNKHZvaWQpIGFyCiAgICAgewogICAgIGNhc2UgVkNQVU9QX2luaXRpYWxp c2U6CiAgICAgewotICAgICAgICBzdHJ1Y3QgY29tcGF0X3ZjcHVfZ3Vlc3RfY29udGV4dCAqY21w X2N0eHQ7Ci0KICAgICAgICAgaWYgKCB2LT52Y3B1X2luZm8gPT0gJmR1bW15X3ZjcHVfaW5mbyAp CiAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKIAotICAgICAgICBpZiAoIChjbXBfY3R4dCA9 IHhtYWxsb2Moc3RydWN0IGNvbXBhdF92Y3B1X2d1ZXN0X2NvbnRleHQpKSA9PSBOVUxMICkKKyAg ICAgICAgaWYgKCBpc19odm1fdmNwdSh2KSApCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJjID0g LUVOT01FTTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CisgICAgICAgICAgICBzdHJ1 Y3QgdmNwdV9odm1fY29udGV4dCBjdHh0OwogCi0gICAgICAgIGlmICggY29weV9mcm9tX2d1ZXN0 KGNtcF9jdHh0LCBhcmcsIDEpICkKLSAgICAgICAgewotICAgICAgICAgICAgeGZyZWUoY21wX2N0 eHQpOwotICAgICAgICAgICAgcmMgPSAtRUZBVUxUOwotICAgICAgICAgICAgYnJlYWs7CisgICAg ICAgICAgICBpZiAoIGNvcHlfZnJvbV9ndWVzdCgmY3R4dCwgYXJnLCAxKSApCisgICAgICAgICAg ICAgICAgcmV0dXJuIC1FRkFVTFQ7CisKKyAgICAgICAgICAgIGRvbWFpbl9sb2NrKGQpOworICAg ICAgICAgICAgcmMgPSB2LT5pc19pbml0aWFsaXNlZCA/IC1FRVhJU1QgOiBhcmNoX3NldF9pbmZv X2h2bV9ndWVzdCh2LCAmY3R4dCk7CisgICAgICAgICAgICBkb21haW5fdW5sb2NrKGQpOwogICAg ICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgc3RydWN0IGNvbXBh dF92Y3B1X2d1ZXN0X2NvbnRleHQgKmN0eHQ7CisKKyAgICAgICAgICAgIGlmICggKGN0eHQgPSB4 bWFsbG9jKHN0cnVjdCBjb21wYXRfdmNwdV9ndWVzdF9jb250ZXh0KSkgPT0gTlVMTCApCisgICAg ICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07CisKKyAgICAgICAgICAgIGlmICggY29weV9mcm9t X2d1ZXN0KGN0eHQsIGFyZywgMSkgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHhm cmVlKGN0eHQpOworICAgICAgICAgICAgICAgIHJldHVybiAtRUZBVUxUOworICAgICAgICAgICAg fQogCi0gICAgICAgIGRvbWFpbl9sb2NrKGQpOwotICAgICAgICByYyA9IHYtPmlzX2luaXRpYWxp c2VkID8gLUVFWElTVCA6IGFyY2hfc2V0X2luZm9fZ3Vlc3QodiwgY21wX2N0eHQpOwotICAgICAg ICBkb21haW5fdW5sb2NrKGQpOworICAgICAgICAgICAgZG9tYWluX2xvY2soZCk7CisgICAgICAg ICAgICByYyA9IHYtPmlzX2luaXRpYWxpc2VkID8gLUVFWElTVCA6IGFyY2hfc2V0X2luZm9fZ3Vl c3QodiwgY3R4dCk7CisgICAgICAgICAgICBkb21haW5fdW5sb2NrKGQpOworCisgICAgICAgICAg ICB4ZnJlZShjdHh0KTsKKyAgICAgICAgfQogCiAgICAgICAgIGlmICggcmMgPT0gLUVSRVNUQVJU ICkKICAgICAgICAgICAgIHJjID0gaHlwZXJjYWxsX2NyZWF0ZV9jb250aW51YXRpb24oX19IWVBF UlZJU09SX3ZjcHVfb3AsICJpdWgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjbWQsIHZjcHVpZCwgYXJnKTsKIAotICAgICAgICB4ZnJlZShjbXBfY3R4 dCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9kb21h aW4uYyBiL3hlbi9jb21tb24vZG9tYWluLmMKaW5kZXggZjU2YjdmZi4uYzQ2NjFkOCAxMDA2NDQK LS0tIGEveGVuL2NvbW1vbi9kb21haW4uYworKysgYi94ZW4vY29tbW9uL2RvbWFpbi5jCkBAIC0x MjA4LDExICsxMjA4LDM0IEBAIHZvaWQgdW5tYXBfdmNwdV9pbmZvKHN0cnVjdCB2Y3B1ICp2KQog ICAgIHB1dF9wYWdlX2FuZF90eXBlKG1mbl90b19wYWdlKG1mbikpOwogfQogCitpbnQgZGVmYXVs dF9pbml0aWFsaXNlX3ZjcHUoc3RydWN0IHZjcHUgKnYsIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0o dm9pZCkgYXJnKQoreworICAgIHN0cnVjdCB2Y3B1X2d1ZXN0X2NvbnRleHQgKmN0eHQ7CisgICAg c3RydWN0IGRvbWFpbiAqZCA9IHYtPmRvbWFpbjsKKyAgICBpbnQgcmM7CisKKyAgICBpZiAoIChj dHh0ID0gYWxsb2NfdmNwdV9ndWVzdF9jb250ZXh0KCkpID09IE5VTEwgKQorICAgICAgICByZXR1 cm4gLUVOT01FTTsKKworICAgIGlmICggY29weV9mcm9tX2d1ZXN0KGN0eHQsIGFyZywgMSkgKQor ICAgIHsKKyAgICAgICAgZnJlZV92Y3B1X2d1ZXN0X2NvbnRleHQoY3R4dCk7CisgICAgICAgIHJl dHVybiAtRUZBVUxUOworICAgIH0KKworICAgIGRvbWFpbl9sb2NrKGQpOworICAgIHJjID0gdi0+ aXNfaW5pdGlhbGlzZWQgPyAtRUVYSVNUIDogYXJjaF9zZXRfaW5mb19ndWVzdCh2LCBjdHh0KTsK KyAgICBkb21haW5fdW5sb2NrKGQpOworCisgICAgZnJlZV92Y3B1X2d1ZXN0X2NvbnRleHQoY3R4 dCk7CisKKyAgICByZXR1cm4gcmM7Cit9CisKIGxvbmcgZG9fdmNwdV9vcChpbnQgY21kLCB1bnNp Z25lZCBpbnQgdmNwdWlkLCBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGFyZykKIHsKICAg ICBzdHJ1Y3QgZG9tYWluICpkID0gY3VycmVudC0+ZG9tYWluOwogICAgIHN0cnVjdCB2Y3B1ICp2 OwotICAgIHN0cnVjdCB2Y3B1X2d1ZXN0X2NvbnRleHQgKmN0eHQ7CiAgICAgbG9uZyByYyA9IDA7 CiAKICAgICBpZiAoIHZjcHVpZCA+PSBkLT5tYXhfdmNwdXMgfHwgKHYgPSBkLT52Y3B1W3ZjcHVp ZF0pID09IE5VTEwgKQpAQCAtMTIyNCwyMSArMTI0Nyw3IEBAIGxvbmcgZG9fdmNwdV9vcChpbnQg Y21kLCB1bnNpZ25lZCBpbnQgdmNwdWlkLCBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGFy ZykKICAgICAgICAgaWYgKCB2LT52Y3B1X2luZm8gPT0gJmR1bW15X3ZjcHVfaW5mbyApCiAgICAg ICAgICAgICByZXR1cm4gLUVJTlZBTDsKIAotICAgICAgICBpZiAoIChjdHh0ID0gYWxsb2NfdmNw dV9ndWVzdF9jb250ZXh0KCkpID09IE5VTEwgKQotICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07 Ci0KLSAgICAgICAgaWYgKCBjb3B5X2Zyb21fZ3Vlc3QoY3R4dCwgYXJnLCAxKSApCi0gICAgICAg IHsKLSAgICAgICAgICAgIGZyZWVfdmNwdV9ndWVzdF9jb250ZXh0KGN0eHQpOwotICAgICAgICAg ICAgcmV0dXJuIC1FRkFVTFQ7Ci0gICAgICAgIH0KLQotICAgICAgICBkb21haW5fbG9jayhkKTsK LSAgICAgICAgcmMgPSB2LT5pc19pbml0aWFsaXNlZCA/IC1FRVhJU1QgOiBhcmNoX3NldF9pbmZv X2d1ZXN0KHYsIGN0eHQpOwotICAgICAgICBkb21haW5fdW5sb2NrKGQpOwotCi0gICAgICAgIGZy ZWVfdmNwdV9ndWVzdF9jb250ZXh0KGN0eHQpOwotCisgICAgICAgIHJjID0gYXJjaF9pbml0aWFs aXNlX3ZjcHUodiwgYXJnKTsKICAgICAgICAgaWYgKCByYyA9PSAtRVJFU1RBUlQgKQogICAgICAg ICAgICAgcmMgPSBoeXBlcmNhbGxfY3JlYXRlX2NvbnRpbnVhdGlvbihfX0hZUEVSVklTT1JfdmNw dV9vcCwgIml1aCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNtZCwgdmNwdWlkLCBhcmcpOwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvTWFrZWZpbGUg Yi94ZW4vaW5jbHVkZS9NYWtlZmlsZQppbmRleCBjNjc0ZjdmLi45NGJhM2Q4IDEwMDY0NAotLS0g YS94ZW4vaW5jbHVkZS9NYWtlZmlsZQorKysgYi94ZW4vaW5jbHVkZS9NYWtlZmlsZQpAQCAtMjYs NiArMjYsNyBAQCBoZWFkZXJzLSQoQ09ORklHX1g4NikgICAgICs9IGNvbXBhdC9hcmNoLXg4Ni9w bXUuaAogaGVhZGVycy0kKENPTkZJR19YODYpICAgICArPSBjb21wYXQvYXJjaC14ODYveGVuLW1j YS5oCiBoZWFkZXJzLSQoQ09ORklHX1g4NikgICAgICs9IGNvbXBhdC9hcmNoLXg4Ni94ZW4uaAog aGVhZGVycy0kKENPTkZJR19YODYpICAgICArPSBjb21wYXQvYXJjaC14ODYveGVuLSQoY29tcGF0 LWFyY2gteSkuaAoraGVhZGVycy0kKENPTkZJR19YODYpICAgICArPSBjb21wYXQvaHZtL2h2bV92 Y3B1LmgKIGhlYWRlcnMteSAgICAgICAgICAgICAgICAgKz0gY29tcGF0L2FyY2gtJChjb21wYXQt YXJjaC15KS5oIGNvbXBhdC9wbXUuaCBjb21wYXQveGxhdC5oCiBoZWFkZXJzLSQoRkxBU0tfRU5B QkxFKSAgICs9IGNvbXBhdC94c20vZmxhc2tfb3AuaAogCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVk ZS9hc20teDg2L2RvbWFpbi5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9kb21haW4uaAppbmRleCBj ODI1OTc1Li5lOGY3MDM3IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2RvbWFpbi5o CisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvZG9tYWluLmgKQEAgLTYwMCw2ICs2MDAsOSBAQCBz dGF0aWMgaW5saW5lIHZvaWQgZnJlZV92Y3B1X2d1ZXN0X2NvbnRleHQoc3RydWN0IHZjcHVfZ3Vl c3RfY29udGV4dCAqdmdjKQogICAgIHZmcmVlKHZnYyk7CiB9CiAKK3N0cnVjdCB2Y3B1X2h2bV9j b250ZXh0OworaW50IGFyY2hfc2V0X2luZm9faHZtX2d1ZXN0KHN0cnVjdCB2Y3B1ICp2LCBjb25z dCBzdHJ1Y3QgdmNwdV9odm1fY29udGV4dCAqY3R4KTsKKwogI2VuZGlmIC8qIF9fQVNNX0RPTUFJ Tl9IX18gKi8KIAogLyoKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2h2bS5o IGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vaHZtLmgKaW5kZXggZjgwZTE0My4uYjlkODkzZCAx MDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vaHZtLmgKKysrIGIveGVuL2luY2x1 ZGUvYXNtLXg4Ni9odm0vaHZtLmgKQEAgLTU2MCw2ICs1NjAsMTEgQEAgdm9pZCBhbHRwMm1fdmNw dV91cGRhdGVfdm1mdW5jX3ZlKHN0cnVjdCB2Y3B1ICp2KTsKIC8qIGVtdWxhdGVzICNWRSAqLwog Ym9vbF90IGFsdHAybV92Y3B1X2VtdWxhdGVfdmUoc3RydWN0IHZjcHUgKnYpOwogCisvKiBDaGVj ayBDUjQvRUZFUiB2YWx1ZXMgKi8KK2NvbnN0IGNoYXIgKmh2bV9lZmVyX3ZhbGlkKGNvbnN0IHN0 cnVjdCB2Y3B1ICp2LCB1aW50NjRfdCB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IHNpZ25lZCBpbnQgY3IwX3BnKTsKK3Vuc2lnbmVkIGxvbmcgaHZtX2NyNF9ndWVzdF9yZXNlcnZl ZF9iaXRzKGNvbnN0IHN0cnVjdCB2Y3B1ICp2LCBib29sX3QgcmVzdG9yZSk7CisKICNlbmRpZiAv KiBfX0FTTV9YODZfSFZNX0hWTV9IX18gKi8KIAogLyoKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRl L3B1YmxpYy9odm0vaHZtX3ZjcHUuaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9odm0vaHZtX3ZjcHUu aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMjFhYmYxCi0tLSAvZGV2L251 bGwKKysrIGIveGVuL2luY2x1ZGUvcHVibGljL2h2bS9odm1fdmNwdS5oCkBAIC0wLDAgKzEsMTQ0 IEBACisvKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2Us IHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQg YXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCisgKiBk ZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91 dCBsaW1pdGF0aW9uIHRoZQorICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwg cHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCisgKiBzZWxsIGNvcGllcyBv ZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2Fy ZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29u ZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJt aXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJz dGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElT IFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Mg T1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJ RVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBBVVRIT1JT IE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9S IE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBU T1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJ T04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorICogREVBTElOR1MgSU4g VEhFIFNPRlRXQVJFLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxNSwgUm9nZXIgUGF1IE1vbm5l IDxyb2dlci5wYXVAY2l0cml4LmNvbT4KKyAqLworCisjaWZuZGVmIF9fWEVOX1BVQkxJQ19IVk1f SFZNX1ZDUFVfSF9fCisjZGVmaW5lIF9fWEVOX1BVQkxJQ19IVk1fSFZNX1ZDUFVfSF9fCisKKyNp bmNsdWRlICIuLi94ZW4uaCIKKworc3RydWN0IHZjcHVfaHZtX3g4Nl8zMiB7CisgICAgdWludDMy X3QgZWF4OworICAgIHVpbnQzMl90IGVjeDsKKyAgICB1aW50MzJfdCBlZHg7CisgICAgdWludDMy X3QgZWJ4OworICAgIHVpbnQzMl90IGVzcDsKKyAgICB1aW50MzJfdCBlYnA7CisgICAgdWludDMy X3QgZXNpOworICAgIHVpbnQzMl90IGVkaTsKKyAgICB1aW50MzJfdCBlaXA7CisgICAgdWludDMy X3QgZWZsYWdzOworCisgICAgdWludDMyX3QgY3IwOworICAgIHVpbnQzMl90IGNyMzsKKyAgICB1 aW50MzJfdCBjcjQ7CisKKyAgICB1aW50MzJfdCBwYWQxOworCisgICAgLyoKKyAgICAgKiBFRkVS IHNob3VsZCBvbmx5IGJlIHVzZWQgdG8gc2V0IHRoZSBOWEUgYml0IChpZiByZXF1aXJlZCkKKyAg ICAgKiB3aGVuIHN0YXJ0aW5nIGEgdkNQVSBpbiAzMmJpdCBtb2RlIHdpdGggcGFnaW5nIGVuYWJs ZWQgb3IKKyAgICAgKiB0byBzZXQgdGhlIExNRS9MTUEgYml0cyBpbiBvcmRlciB0byBzdGFydCB0 aGUgdkNQVSBpbgorICAgICAqIGNvbXBhdGliaWxpdHkgbW9kZS4KKyAgICAgKi8KKyAgICB1aW50 NjRfdCBlZmVyOworCisgICAgdWludDMyX3QgY3NfYmFzZTsKKyAgICB1aW50MzJfdCBkc19iYXNl OworICAgIHVpbnQzMl90IHNzX2Jhc2U7CisgICAgdWludDMyX3QgZXNfYmFzZTsKKyAgICB1aW50 MzJfdCB0cl9iYXNlOworICAgIHVpbnQzMl90IGNzX2xpbWl0OworICAgIHVpbnQzMl90IGRzX2xp bWl0OworICAgIHVpbnQzMl90IHNzX2xpbWl0OworICAgIHVpbnQzMl90IGVzX2xpbWl0OworICAg IHVpbnQzMl90IHRyX2xpbWl0OworICAgIHVpbnQxNl90IGNzX2FyOworICAgIHVpbnQxNl90IGRz X2FyOworICAgIHVpbnQxNl90IHNzX2FyOworICAgIHVpbnQxNl90IGVzX2FyOworICAgIHVpbnQx Nl90IHRyX2FyOworCisgICAgdWludDE2X3QgcGFkMlszXTsKK307CisKKy8qCisgKiBUaGUgbGF5 b3V0IG9mIHRoZSBfYXIgZmllbGRzIG9mIHRoZSBzZWdtZW50IHJlZ2lzdGVycyBpcyB0aGUKKyAq IGZvbGxvd2luZzoKKyAqCisgKiBCaXRzICAgWzAsM106IHR5cGUgKGJpdHMgNDAtNDMpLgorICog Qml0ICAgICAgICA0OiBzICAgIChkZXNjcmlwdG9yIHR5cGUsIGJpdCA0NCkuCisgKiBCaXQgICAg WzUsNl06IGRwbCAgKGRlc2NyaXB0b3IgcHJpdmlsZWdlIGxldmVsLCBiaXRzIDQ1LTQ2KS4KKyAq IEJpdCAgICAgICAgNzogcCAgICAoc2VnbWVudC1wcmVzZW50LCBiaXQgNDcpLgorICogQml0ICAg ICAgICA4OiBhdmwgIChhdmFpbGFibGUgZm9yIHN5c3RlbSBzb2Z0d2FyZSwgYml0IDUyKS4KKyAq IEJpdCAgICAgICAgOTogbCAgICAoNjQtYml0IGNvZGUgc2VnbWVudCwgYml0IDUzKS4KKyAqIEJp dCAgICAgICAxMDogZGIgICAobWVhbmluZyBkZXBlbmRzIG9uIHRoZSBzZWdtZW50LCBiaXQgNTQp LgorICogQml0ICAgICAgIDExOiBnICAgIChncmFudWxhcml0eSwgYml0IDU1KQorICogQml0cyBb MTIsMTVdOiB1bnVzZWQsIG11c3QgYmUgYmxhbmsuCisgKgorICogQSBtb3JlIGNvbXBsZXRlIGRl c2NyaXB0aW9uIG9mIHRoZSBtZWFuaW5nIG9mIHRoaXMgZmllbGRzIGNhbiBiZQorICogb2J0YWlu ZWQgZnJvbSB0aGUgSW50ZWwgU0RNLCBWb2x1bWUgMywgc2VjdGlvbiAzLjQuNS4KKyAqLworCitz dHJ1Y3QgdmNwdV9odm1feDg2XzY0IHsKKyAgICB1aW50NjRfdCByYXg7CisgICAgdWludDY0X3Qg cmN4OworICAgIHVpbnQ2NF90IHJkeDsKKyAgICB1aW50NjRfdCByYng7CisgICAgdWludDY0X3Qg cnNwOworICAgIHVpbnQ2NF90IHJicDsKKyAgICB1aW50NjRfdCByc2k7CisgICAgdWludDY0X3Qg cmRpOworICAgIHVpbnQ2NF90IHJpcDsKKyAgICB1aW50NjRfdCByZmxhZ3M7CisKKyAgICB1aW50 NjRfdCBjcjA7CisgICAgdWludDY0X3QgY3IzOworICAgIHVpbnQ2NF90IGNyNDsKKyAgICB1aW50 NjRfdCBlZmVyOworCisgICAgLyoKKyAgICAgKiBVc2luZyBWQ1BVX0hWTV9NT0RFXzY0QiBpbXBs aWVzIHRoYXQgdGhlIHZDUFUgaXMgbGF1bmNoZWQKKyAgICAgKiBkaXJlY3RseSBpbiBsb25nIG1v ZGUsIHNvIHRoZSBjYWNoZWQgcGFydHMgb2YgdGhlIHNlZ21lbnQKKyAgICAgKiByZWdpc3RlcnMg Z2V0IHNldCB0byBtYXRjaCB0aGF0IGVudmlyb25tZW50LgorICAgICAqCisgICAgICogSWYgdGhl IHVzZXIgd2FudHMgdG8gbGF1bmNoIHRoZSB2Q1BVIGluIGNvbXBhdGliaWxpdHkgbW9kZQorICAg ICAqIHRoZSAzMi1iaXQgc3RydWN0dXJlIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuCisgICAgICov Cit9OworCitzdHJ1Y3QgdmNwdV9odm1fY29udGV4dCB7CisjZGVmaW5lIFZDUFVfSFZNX01PREVf MzJCIDAgIC8qIDMyYml0IGZpZWxkcyBvZiB0aGUgc3RydWN0dXJlIHdpbGwgYmUgdXNlZC4gKi8K KyNkZWZpbmUgVkNQVV9IVk1fTU9ERV82NEIgMSAgLyogNjRiaXQgZmllbGRzIG9mIHRoZSBzdHJ1 Y3R1cmUgd2lsbCBiZSB1c2VkLiAqLworICAgIHVpbnQzMl90IG1vZGU7CisKKyAgICB1aW50MzJf dCBwYWQ7CisKKyAgICAvKiBDUFUgcmVnaXN0ZXJzLiAqLworICAgIHVuaW9uIHsKKyAgICAgICAg c3RydWN0IHZjcHVfaHZtX3g4Nl8zMiB4ODZfMzI7CisgICAgICAgIHN0cnVjdCB2Y3B1X2h2bV94 ODZfNjQgeDg2XzY0OworICAgIH0gY3B1X3JlZ3M7Cit9OwordHlwZWRlZiBzdHJ1Y3QgdmNwdV9o dm1fY29udGV4dCB2Y3B1X2h2bV9jb250ZXh0X3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh2 Y3B1X2h2bV9jb250ZXh0X3QpOworCisjZW5kaWYgLyogX19YRU5fUFVCTElDX0hWTV9IVk1fVkNQ VV9IX18gKi8KKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmls ZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAq IGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS94ZW4vaW5j bHVkZS9wdWJsaWMvdmNwdS5oIGIveGVuL2luY2x1ZGUvcHVibGljL3ZjcHUuaAppbmRleCA4OThi ODlmLi42OTJiODdhIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvdmNwdS5oCisrKyBi L3hlbi9pbmNsdWRlL3B1YmxpYy92Y3B1LmgKQEAgLTQxLDggKzQxLDEwIEBACiAgKiBJbml0aWFs aXNlIGEgVkNQVS4gRWFjaCBWQ1BVIGNhbiBiZSBpbml0aWFsaXNlZCBvbmx5IG9uY2UuIEEgCiAg KiBuZXdseS1pbml0aWFsaXNlZCBWQ1BVIHdpbGwgbm90IHJ1biB1bnRpbCBpdCBpcyBicm91Z2h0 IHVwIGJ5IFZDUFVPUF91cC4KICAqIAotICogQGV4dHJhX2FyZyA9PSBwb2ludGVyIHRvIHZjcHVf Z3Vlc3RfY29udGV4dCBzdHJ1Y3R1cmUgY29udGFpbmluZyBpbml0aWFsCi0gKiAgICAgICAgICAg ICAgIHN0YXRlIGZvciB0aGUgVkNQVS4KKyAqIEBleHRyYV9hcmcgPT0gRm9yIFBWIG9yIEFSTSBn dWVzdHMgdGhpcyBpcyBhIHBvaW50ZXIgdG8gYSB2Y3B1X2d1ZXN0X2NvbnRleHQKKyAqICAgICAg ICAgICAgICAgc3RydWN0dXJlIGNvbnRhaW5pbmcgdGhlIGluaXRpYWwgc3RhdGUgZm9yIHRoZSBW Q1BVLiBGb3IgeDg2CisgKiAgICAgICAgICAgICAgIEhWTSBiYXNlZCBndWVzdHMgdGhpcyBpcyBh IHBvaW50ZXIgdG8gYSB2Y3B1X2h2bV9jb250ZXh0CisgKiAgICAgICAgICAgICAgIHN0cnVjdHVy ZS4KICAqLwogI2RlZmluZSBWQ1BVT1BfaW5pdGlhbGlzZSAgICAgICAgICAgIDAKIApkaWZmIC0t Z2l0IGEveGVuL2luY2x1ZGUveGVuL2RvbWFpbi5oIGIveGVuL2luY2x1ZGUveGVuL2RvbWFpbi5o CmluZGV4IDNkY2EzZjYuLmExYTZmMjUgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi9kb21h aW4uaAorKysgYi94ZW4vaW5jbHVkZS94ZW4vZG9tYWluLmgKQEAgLTY0LDYgKzY0LDkgQEAgaW50 IGFyY2hfZG9tYWluX3NvZnRfcmVzZXQoc3RydWN0IGRvbWFpbiAqZCk7CiBpbnQgYXJjaF9zZXRf aW5mb19ndWVzdChzdHJ1Y3QgdmNwdSAqLCB2Y3B1X2d1ZXN0X2NvbnRleHRfdSk7CiB2b2lkIGFy Y2hfZ2V0X2luZm9fZ3Vlc3Qoc3RydWN0IHZjcHUgKiwgdmNwdV9ndWVzdF9jb250ZXh0X3UpOwog CitpbnQgYXJjaF9pbml0aWFsaXNlX3ZjcHUoc3RydWN0IHZjcHUgKnYsIFhFTl9HVUVTVF9IQU5E TEVfUEFSQU0odm9pZCkgYXJnKTsKK2ludCBkZWZhdWx0X2luaXRpYWxpc2VfdmNwdShzdHJ1Y3Qg dmNwdSAqdiwgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcpOworCiBpbnQgZG9tYWlu X3JlbGlucXVpc2hfcmVzb3VyY2VzKHN0cnVjdCBkb21haW4gKmQpOwogCiB2b2lkIGR1bXBfcGFn ZWZyYW1lX2luZm8oc3RydWN0IGRvbWFpbiAqZCk7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94 bGF0LmxzdCBiL3hlbi9pbmNsdWRlL3hsYXQubHN0CmluZGV4IDM3OTUwNTkuLmZkYTExMzcgMTAw NjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hsYXQubHN0CisrKyBiL3hlbi9pbmNsdWRlL3hsYXQubHN0 CkBAIC01Niw2ICs1Niw5IEBACiA/ICAgICAgIGdyYW50X2VudHJ5X2hlYWRlciAgICAgICAgICAg ICAgZ3JhbnRfdGFibGUuaAogPwlncmFudF9lbnRyeV92MgkJCWdyYW50X3RhYmxlLmgKID8JZ250 dGFiX3N3YXBfZ3JhbnRfcmVmCQlncmFudF90YWJsZS5oCis/CXZjcHVfaHZtX2NvbnRleHQJCWh2 bS9odm1fdmNwdS5oCis/CXZjcHVfaHZtX3g4Nl8zMgkJCWh2bS9odm1fdmNwdS5oCis/CXZjcHVf aHZtX3g4Nl82NAkJCWh2bS9odm1fdmNwdS5oCiA/CWtleGVjX2V4ZWMJCQlrZXhlYy5oCiAhCWtl eGVjX2ltYWdlCQkJa2V4ZWMuaAogIQlrZXhlY19yYW5nZQkJCWtleGVjLmgKLS0gCjEuOS41IChB cHBsZSBHaXQtNTAuMykKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0 dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=