From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v2 10/19] x86/hvm: Reposition the modification of raw segment data from the VMCB/VMCS Date: Mon, 28 Nov 2016 11:13:27 +0000 Message-ID: <1480331616-6165-11-git-send-email-andrew.cooper3@citrix.com> References: <1480331616-6165-1-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1480331616-6165-1-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Xen-devel Cc: Andrew Cooper , Boris Ostrovsky , Suravee Suthikulpanit List-Id: xen-devel@lists.xenproject.org SW50ZWwgVlQteCBhbmQgQU1EIFNWTSBwcm92aWRlIGFjY2VzcyB0byB0aGUgZnVsbCBzZWdtZW50 IGRlc2NyaXB0b3IgY2FjaGUgdmlhCmZpZWxkcyBpbiB0aGUgVk1DQi9WTUNTLiAgSG93ZXZlciwg dGhlIGJpdHMgd2hpY2ggYXJlIGFjdHVhbGx5IGNoZWNrZWQgYnkKaGFyZHdhcmUgYW5kIHByZXNl cnZlZCBhY3Jvc3Mgdm1lbnRyeS9leGl0IGFyZSBpbmNvbnNpc3RlbnQsIGFuZCB0aGUgdmVuZG9y CmFjY2Vzc29yIGZ1bmN0aW9ucyBwZXJmb3JtIGluY29uc2lzdGVudCBtb2RpZmljYXRpb24gdG8g dGhlIHJhdyB2YWx1ZXMuCgpDb252ZXJ0IHtzdm0sdm14fV97Z2V0LHNldH1fc2VnbWVudF9yZWdp c3RlcigpIGludG8gcmF3IGFjY2Vzc29ycywgYW5kIGFsdGVyCmh2bV97Z2V0LHNldH1fc2VnbWVu dF9yZWdpc3RlcigpIHRvIGNvb2sgdGhlIHZhbHVlcyBjb25zaXN0ZW50bHkuICBUaGlzIGFsbG93 cwp0aGUgY29tbW9uIGVtdWxhdGlvbiBjb2RlIHRvIGJldHRlciByZWx5IG9uIGZpbmRpbmcgYXJj aGl0ZWN0dXJhbGx5LWV4cGVjdGVkCnZhbHVlcy4KCldoaWxlIG1vdmluZyB0aGUgY29kZSBwZXJm b3JtaW5nIHRoZSBjb29raW5nLCBmaXggdGhlICVzcy5kYiBxdWlyay4gIEEgTlVMTApzZWxlY3Rv ciBpcyBpbmRpY2F0ZWQgYnkgLnAgYmVpbmcgY2xlYXIsIG5vdCB0aGUgdmFsdWUgb2YgdGhlIC50 eXBlIGZpZWxkLgoKVGhpcyBkb2VzIGNhdXNlIHNvbWUgZnVuY3Rpb25hbCBjaGFuZ2VzIGJlY2F1 c2Ugb2YgdGhlIG1vZGlmaWNhdGlvbnMgYmVpbmcKYXBwbGllZCB1bmlmb3JtbHkuICBBIHNpZGUg ZWZmZWN0IG9mIHRoaXMgZml4ZXMgbGF0ZW50IGJ1Z3Mgd2hlcmUKdm14X3NldF9zZWdtZW50X3Jl Z2lzdGVyKCkgZGlkbid0IGNvcnJlY3RseSBmaXggdXAgLkcgZm9yIHNlZ21lbnRzLCBhbmQKaW5j b25zaXN0ZW50IGZpeGluZyB1cCBvZiB0aGUgR0RUUi9JRFRSIGxpbWl0cy4KClNpZ25lZC1vZmYt Ynk6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+ClJldmlld2VkLWJ5 OiBLZXZpbiBUaWFuIDxrZXZpbi50aWFuQGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IEphbiBCZXVs aWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KLS0tCkNDOiBCb3JpcyBPc3Ryb3Zza3kgPGJvcmlzLm9z dHJvdnNreUBvcmFjbGUuY29tPgpDQzogU3VyYXZlZSBTdXRoaWt1bHBhbml0IDxzdXJhdmVlLnN1 dGhpa3VscGFuaXRAYW1kLmNvbT4KLS0tCnYyOgogKiBDbGFyaWZ5IHRoZSBjaGFuZ2Ugb2YgdGhl ICVzcy5kYiBxdWlyawogKiBSZXdvcmsgJXRyIHR5cGVjaGVjayBsb2dpYwogKiBTd2FwIGEgYnJl YWsgZm9yIHJldHVybiBmb2xsb3dpbmcgQVNTRVJUX1VOUkVBQ0hBQkxFKCkKLS0tCiB4ZW4vYXJj aC94ODYvaHZtL2h2bS5jICAgICAgICB8IDE1NCArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKIHhlbi9hcmNoL3g4Ni9odm0vc3ZtL3N2bS5jICAgIHwgIDIwICstLS0t LQogeGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMgICAgfCAgIDYgKy0KIHhlbi9pbmNsdWRlL2Fz bS14ODYvZGVzYy5oICAgIHwgICA2ICsrCiB4ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9odm0uaCB8 ICAxNyArKy0tLQogNSBmaWxlcyBjaGFuZ2VkLCAxNjcgaW5zZXJ0aW9ucygrKSwgMzYgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9odm0uYyBiL3hlbi9hcmNoL3g4 Ni9odm0vaHZtLmMKaW5kZXggZWY4MzEwMC4uYmRmZDk0ZSAxMDA2NDQKLS0tIGEveGVuL2FyY2gv eDg2L2h2bS9odm0uYworKysgYi94ZW4vYXJjaC94ODYvaHZtL2h2bS5jCkBAIC02MDUxLDYgKzYw NTEsMTYwIEBAIHZvaWQgaHZtX2RvbWFpbl9zb2Z0X3Jlc2V0KHN0cnVjdCBkb21haW4gKmQpCiB9 CiAKIC8qCisgKiBTZWdtZW50IGNhY2hlcyBpbiBWTUNCL1ZNQ1MgYXJlIGluY29uc2lzdGVudCBh Ym91dCB3aGljaCBiaXRzIGFyZSBjaGVja2VkLAorICogaW1wb3J0YW50LCBhbmQgcHJlc2VydmVk IGFjcm9zcyB2bWVudHJ5L2V4aXQuICBDb29rIHRoZSB2YWx1ZXMgdG8gbWFrZSB0aGVtCisgKiBj bG9zZXIgdG8gd2hhdCBpcyBhcmNoaXRlY3R1cmFsbHkgZXhwZWN0ZWQgZnJvbSBlbnRyaWVzIGlu IHRoZSBzZWdtZW50CisgKiBjYWNoZS4KKyAqLwordm9pZCBodm1fZ2V0X3NlZ21lbnRfcmVnaXN0 ZXIoc3RydWN0IHZjcHUgKnYsIGVudW0geDg2X3NlZ21lbnQgc2VnLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IHNlZ21lbnRfcmVnaXN0ZXIgKnJlZykKK3sKKyAgICBodm1f ZnVuY3MuZ2V0X3NlZ21lbnRfcmVnaXN0ZXIodiwgc2VnLCByZWcpOworCisgICAgc3dpdGNoICgg c2VnICkKKyAgICB7CisgICAgY2FzZSB4ODZfc2VnX3NzOgorICAgICAgICAvKiBTVk0gbWF5IHJl dGFpbiAlc3MuREIgd2hlbiAlc3MgaXMgbG9hZGVkIHdpdGggYSBOVUxMIHNlbGVjdG9yLiAqLwor ICAgICAgICBpZiAoICFyZWctPmF0dHIuZmllbGRzLnAgKQorICAgICAgICAgICAgcmVnLT5hdHRy LmZpZWxkcy5kYiA9IDA7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSB4ODZfc2VnX3RyOgor ICAgICAgICAvKgorICAgICAgICAgKiBTVk0gZG9lc24ndCB0cmFjayAldHIuQi4gQXJjaGl0ZWN0 dXJhbGx5LCBhIGxvYWRlZCBUU1Mgc2VnbWVudCB3aWxsCisgICAgICAgICAqIGFsd2F5cyBiZSBi dXN5LgorICAgICAgICAgKi8KKyAgICAgICAgcmVnLT5hdHRyLmZpZWxkcy50eXBlIHw9IDB4MjsK KworICAgICAgICAvKgorICAgICAgICAgKiAlY3MgYW5kICV0ciBhcmUgdW5jb25kaXRpb25hbGx5 IHByZXNlbnQuICBTVk0gaWdub3JlcyB0aGVzZSBwcmVzZW50CisgICAgICAgICAqIGJpdHMgYW5k IHdpbGwgaGFwcGlseSBydW4gd2l0aG91dCB0aGVtIHNldC4KKyAgICAgICAgICovCisgICAgY2Fz ZSB4ODZfc2VnX2NzOgorICAgICAgICByZWctPmF0dHIuZmllbGRzLnAgPSAxOworICAgICAgICBi cmVhazsKKworICAgIGNhc2UgeDg2X3NlZ19nZHRyOgorICAgIGNhc2UgeDg2X3NlZ19pZHRyOgor ICAgICAgICAvKgorICAgICAgICAgKiBUcmVhdCBHRFRSL0lEVFIgYXMgYmVpbmcgcHJlc2VudCBz eXN0ZW0gc2VnbWVudHMuICBUaGlzIGF2b2lkcyB0aGVtCisgICAgICAgICAqIG5lZWRpbmcgc3Bl Y2lhbCBjYXNpbmcgZm9yIHNlZ21lbnRhdGlvbiBjaGVja3MuCisgICAgICAgICAqLworICAgICAg ICByZWctPmF0dHIuYnl0ZXMgPSAweDgwOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6 IC8qIEF2b2lkIHRyaWdnZXJpbmcgLVdlcnJvcj1zd2l0Y2ggKi8KKyAgICAgICAgYnJlYWs7Cisg ICAgfQorCisgICAgaWYgKCByZWctPmF0dHIuZmllbGRzLnAgKQorICAgIHsKKyAgICAgICAgLyoK KyAgICAgICAgICogRm9yIHNlZ21lbnRzIHdoaWNoIGFyZSBwcmVzZW50L3VzYWJsZSwgY29vayB0 aGUgc3lzdGVtIGZsYWcuICBTVk0KKyAgICAgICAgICogaWdub3JlcyB0aGUgUyBiaXQgb24gYWxs IHNlZ21lbnRzIGFuZCB3aWxsIGhhcHBpbHkgcnVuIHdpdGggdGhlbSBpbgorICAgICAgICAgKiBh bnkgc3RhdGUuCisgICAgICAgICAqLworICAgICAgICByZWctPmF0dHIuZmllbGRzLnMgPSBpc194 ODZfdXNlcl9zZWdtZW50KHNlZyk7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogU1ZNIGRpc2Nh cmRzICVjcy5HIG9uICNWTUVYSVQuICBPdGhlciB1c2VyIHNlZ21lbnRzIGRvIGhhdmUgLkcKKyAg ICAgICAgICogdHJhY2tlZCwgYnV0IExpbnV4IGNvbW1pdCA4MDExMmM4OWVkODcgIktWTTogU3lu dGhlc2l6ZSBHIGJpdCBmb3IKKyAgICAgICAgICogYWxsIHNlZ21lbnRzLiIgaW5kaWNhdGVzIHRo YXQgdGhpcyBpc24ndCBuZWNlc3NhcmlseSB0aGUgY2FzZSB3aGVuCisgICAgICAgICAqIG5lc3Rl ZCB1bmRlciBFU1hpLgorICAgICAgICAgKgorICAgICAgICAgKiBVbmNvbmRpdGlvbmFsbHkgcmVj YWxjdWxhdGUgRy4KKyAgICAgICAgICovCisgICAgICAgIHJlZy0+YXR0ci5maWVsZHMuZyA9ICEh KHJlZy0+bGltaXQgPj4gMjApOworCisgICAgICAgIC8qCisgICAgICAgICAqIFNWTSBkb2Vzbid0 IHRyYWNrIHRoZSBBY2Nlc3NlZCBmbGFnLiAgSXQgd2lsbCBhbHdheXMgYmUgc2V0IGZvcgorICAg ICAgICAgKiB1c2FibGUgdXNlciBzZWdtZW50cyBsb2FkZWQgaW50byB0aGUgZGVzY3JpcHRvciBj YWNoZS4KKyAgICAgICAgICovCisgICAgICAgIGlmICggaXNfeDg2X3VzZXJfc2VnbWVudChzZWcp ICkKKyAgICAgICAgICAgIHJlZy0+YXR0ci5maWVsZHMudHlwZSB8PSAweDE7CisgICAgfQorfQor Cit2b2lkIGh2bV9zZXRfc2VnbWVudF9yZWdpc3RlcihzdHJ1Y3QgdmNwdSAqdiwgZW51bSB4ODZf c2VnbWVudCBzZWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VnbWVu dF9yZWdpc3RlciAqcmVnKQoreworICAgIC8qIFNldCBHIHRvIG1hdGNoIHRoZSBsaW1pdCBmaWVs ZC4gIFZULXggY2FyZXMsIHdoaWxlIFNWTSBkb2Vzbid0LiAqLworICAgIGlmICggcmVnLT5hdHRy LmZpZWxkcy5wICkKKyAgICAgICAgcmVnLT5hdHRyLmZpZWxkcy5nID0gISEocmVnLT5saW1pdCA+ PiAyMCk7CisKKyAgICBzd2l0Y2ggKCBzZWcgKQorICAgIHsKKyAgICBjYXNlIHg4Nl9zZWdfY3M6 CisgICAgICAgIEFTU0VSVChyZWctPmF0dHIuZmllbGRzLnApOyAgICAgICAgICAgICAgICAgIC8q IFVzYWJsZS4gKi8KKyAgICAgICAgQVNTRVJUKHJlZy0+YXR0ci5maWVsZHMucyk7ICAgICAgICAg ICAgICAgICAgLyogVXNlciBzZWdtZW50LiAqLworICAgICAgICBBU1NFUlQoKHJlZy0+YmFzZSA+ PiAzMikgPT0gMCk7ICAgICAgICAgICAgICAvKiBVcHBlciBiaXRzIGNsZWFyLiAqLworICAgICAg ICBicmVhazsKKworICAgIGNhc2UgeDg2X3NlZ19zczoKKyAgICAgICAgaWYgKCByZWctPmF0dHIu ZmllbGRzLnAgKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQocmVnLT5hdHRyLmZpZWxk cy5zKTsgICAgICAgICAgICAgIC8qIFVzZXIgc2VnbWVudC4gKi8KKyAgICAgICAgICAgIEFTU0VS VCghKHJlZy0+YXR0ci5maWVsZHMudHlwZSAmIDB4OCkpOyAgLyogRGF0YSBzZWdtZW50LiAqLwor ICAgICAgICAgICAgQVNTRVJUKHJlZy0+YXR0ci5maWVsZHMudHlwZSAmIDB4Mik7ICAgICAvKiBX cml0ZWFibGUuICovCisgICAgICAgICAgICBBU1NFUlQoKHJlZy0+YmFzZSA+PiAzMikgPT0gMCk7 ICAgICAgICAgIC8qIFVwcGVyIGJpdHMgY2xlYXIuICovCisgICAgICAgIH0KKyAgICAgICAgYnJl YWs7CisKKyAgICBjYXNlIHg4Nl9zZWdfZHM6CisgICAgY2FzZSB4ODZfc2VnX2VzOgorICAgIGNh c2UgeDg2X3NlZ19mczoKKyAgICBjYXNlIHg4Nl9zZWdfZ3M6CisgICAgICAgIGlmICggcmVnLT5h dHRyLmZpZWxkcy5wICkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHJlZy0+YXR0ci5m aWVsZHMucyk7ICAgICAgICAgICAgICAvKiBVc2VyIHNlZ21lbnQuICovCisKKyAgICAgICAgICAg IGlmICggcmVnLT5hdHRyLmZpZWxkcy50eXBlICYgMHg4ICkKKyAgICAgICAgICAgICAgICBBU1NF UlQocmVnLT5hdHRyLmZpZWxkcy50eXBlICYgMHgyKTsgLyogUmVhZGFibGUuICovCisKKyAgICAg ICAgICAgIGlmICggc2VnID09IHg4Nl9zZWdfZnMgfHwgc2VnID09IHg4Nl9zZWdfZ3MgKQorICAg ICAgICAgICAgICAgIEFTU0VSVChpc19jYW5vbmljYWxfYWRkcmVzcyhyZWctPmJhc2UpKTsKKyAg ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBBU1NFUlQoKHJlZy0+YmFzZSA+PiAzMikg PT0gMCk7ICAgICAgLyogVXBwZXIgYml0cyBjbGVhci4gKi8KKyAgICAgICAgfQorICAgICAgICBi cmVhazsKKworICAgIGNhc2UgeDg2X3NlZ190cjoKKyAgICAgICAgQVNTRVJUKHJlZy0+YXR0ci5m aWVsZHMucCk7ICAgICAgICAgICAgICAgICAgLyogVXNhYmxlLiAqLworICAgICAgICBBU1NFUlQo IXJlZy0+YXR0ci5maWVsZHMucyk7ICAgICAgICAgICAgICAgICAvKiBTeXN0ZW0gc2VnbWVudC4g Ki8KKyAgICAgICAgQVNTRVJUKCEocmVnLT5zZWwgJiAweDQpKTsgICAgICAgICAgICAgICAgICAg LyogIVRJLiAqLworICAgICAgICBpZiAoIHJlZy0+YXR0ci5maWVsZHMudHlwZSA9PSBTWVNfREVT Q190c3NfYnVzeSApCisgICAgICAgICAgICBBU1NFUlQoaXNfY2Fub25pY2FsX2FkZHJlc3MocmVn LT5iYXNlKSk7CisgICAgICAgIGVsc2UgaWYgKCByZWctPmF0dHIuZmllbGRzLnR5cGUgPT0gU1lT X0RFU0NfdHNzMTZfYnVzeSApCisgICAgICAgICAgICBBU1NFUlQoKHJlZy0+YmFzZSA+PiAzMikg PT0gMCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEFTU0VSVCghIiV0ciB0eXBlY2hlY2sg ZmFpbHVyZSIpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgeDg2X3NlZ19sZHRyOgorICAg ICAgICBpZiAoIHJlZy0+YXR0ci5maWVsZHMucCApCisgICAgICAgIHsKKyAgICAgICAgICAgIEFT U0VSVCghcmVnLT5hdHRyLmZpZWxkcy5zKTsgICAgICAgICAgICAgLyogU3lzdGVtIHNlZ21lbnQu ICovCisgICAgICAgICAgICBBU1NFUlQoIShyZWctPnNlbCAmIDB4NCkpOyAgICAgICAgICAgICAg IC8qICFUSS4gKi8KKyAgICAgICAgICAgIEFTU0VSVChyZWctPmF0dHIuZmllbGRzLnR5cGUgPT0g U1lTX0RFU0NfbGR0KTsKKyAgICAgICAgICAgIEFTU0VSVChpc19jYW5vbmljYWxfYWRkcmVzcyhy ZWctPmJhc2UpKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIGNhc2UgeDg2X3Nl Z19nZHRyOgorICAgIGNhc2UgeDg2X3NlZ19pZHRyOgorICAgICAgICBBU1NFUlQoaXNfY2Fub25p Y2FsX2FkZHJlc3MocmVnLT5iYXNlKSk7CisgICAgICAgIEFTU0VSVCgocmVnLT5saW1pdCA+PiAx NikgPT0gMCk7ICAgICAgICAgICAgIC8qIFVwcGVyIGJpdHMgY2xlYXIuICovCisgICAgICAgIGJy ZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX1VOUkVBQ0hBQkxFKCk7CisgICAg ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBodm1fZnVuY3Muc2V0X3NlZ21lbnRfcmVnaXN0ZXIo diwgc2VnLCByZWcpOworfQorCisvKgogICogTG9jYWwgdmFyaWFibGVzOgogICogbW9kZTogQwog ICogYy1maWxlLXN0eWxlOiAiQlNEIgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9zdm0v c3ZtLmMgYi94ZW4vYXJjaC94ODYvaHZtL3N2bS9zdm0uYwppbmRleCA5MTJkODcxLi5hOTQ0NzM5 IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL3N2bS9zdm0uYworKysgYi94ZW4vYXJjaC94 ODYvaHZtL3N2bS9zdm0uYwpAQCAtNjI3LDUwICs2MjcsMzQgQEAgc3RhdGljIHZvaWQgc3ZtX2dl dF9zZWdtZW50X3JlZ2lzdGVyKHN0cnVjdCB2Y3B1ICp2LCBlbnVtIHg4Nl9zZWdtZW50IHNlZywK ICAgICB7CiAgICAgY2FzZSB4ODZfc2VnX2NzOgogICAgICAgICBtZW1jcHkocmVnLCAmdm1jYi0+ Y3MsIHNpemVvZigqcmVnKSk7Ci0gICAgICAgIHJlZy0+YXR0ci5maWVsZHMucCA9IDE7Ci0gICAg ICAgIHJlZy0+YXR0ci5maWVsZHMuZyA9IHJlZy0+bGltaXQgPiAweEZGRkZGOwogICAgICAgICBi cmVhazsKICAgICBjYXNlIHg4Nl9zZWdfZHM6CiAgICAgICAgIG1lbWNweShyZWcsICZ2bWNiLT5k cywgc2l6ZW9mKCpyZWcpKTsKLSAgICAgICAgaWYgKCByZWctPmF0dHIuZmllbGRzLnR5cGUgIT0g MCApCi0gICAgICAgICAgICByZWctPmF0dHIuZmllbGRzLnR5cGUgfD0gMHgxOwogICAgICAgICBi cmVhazsKICAgICBjYXNlIHg4Nl9zZWdfZXM6CiAgICAgICAgIG1lbWNweShyZWcsICZ2bWNiLT5l cywgc2l6ZW9mKCpyZWcpKTsKLSAgICAgICAgaWYgKCByZWctPmF0dHIuZmllbGRzLnR5cGUgIT0g MCApCi0gICAgICAgICAgICByZWctPmF0dHIuZmllbGRzLnR5cGUgfD0gMHgxOwogICAgICAgICBi cmVhazsKICAgICBjYXNlIHg4Nl9zZWdfZnM6CiAgICAgICAgIHN2bV9zeW5jX3ZtY2Iodik7CiAg ICAgICAgIG1lbWNweShyZWcsICZ2bWNiLT5mcywgc2l6ZW9mKCpyZWcpKTsKLSAgICAgICAgaWYg KCByZWctPmF0dHIuZmllbGRzLnR5cGUgIT0gMCApCi0gICAgICAgICAgICByZWctPmF0dHIuZmll bGRzLnR5cGUgfD0gMHgxOwogICAgICAgICBicmVhazsKICAgICBjYXNlIHg4Nl9zZWdfZ3M6CiAg ICAgICAgIHN2bV9zeW5jX3ZtY2Iodik7CiAgICAgICAgIG1lbWNweShyZWcsICZ2bWNiLT5ncywg c2l6ZW9mKCpyZWcpKTsKLSAgICAgICAgaWYgKCByZWctPmF0dHIuZmllbGRzLnR5cGUgIT0gMCAp Ci0gICAgICAgICAgICByZWctPmF0dHIuZmllbGRzLnR5cGUgfD0gMHgxOwogICAgICAgICBicmVh azsKICAgICBjYXNlIHg4Nl9zZWdfc3M6CiAgICAgICAgIG1lbWNweShyZWcsICZ2bWNiLT5zcywg c2l6ZW9mKCpyZWcpKTsKICAgICAgICAgcmVnLT5hdHRyLmZpZWxkcy5kcGwgPSB2bWNiLT5fY3Bs OwotICAgICAgICBpZiAoIHJlZy0+YXR0ci5maWVsZHMudHlwZSA9PSAwICkKLSAgICAgICAgICAg IHJlZy0+YXR0ci5maWVsZHMuZGIgPSAwOwogICAgICAgICBicmVhazsKICAgICBjYXNlIHg4Nl9z ZWdfdHI6CiAgICAgICAgIHN2bV9zeW5jX3ZtY2Iodik7CiAgICAgICAgIG1lbWNweShyZWcsICZ2 bWNiLT50ciwgc2l6ZW9mKCpyZWcpKTsKLSAgICAgICAgcmVnLT5hdHRyLmZpZWxkcy5wID0gMTsK LSAgICAgICAgcmVnLT5hdHRyLmZpZWxkcy50eXBlIHw9IDB4MjsKICAgICAgICAgYnJlYWs7CiAg ICAgY2FzZSB4ODZfc2VnX2dkdHI6CiAgICAgICAgIG1lbWNweShyZWcsICZ2bWNiLT5nZHRyLCBz aXplb2YoKnJlZykpOwotICAgICAgICByZWctPmF0dHIuYnl0ZXMgPSAweDgwOwogICAgICAgICBi cmVhazsKICAgICBjYXNlIHg4Nl9zZWdfaWR0cjoKICAgICAgICAgbWVtY3B5KHJlZywgJnZtY2It PmlkdHIsIHNpemVvZigqcmVnKSk7Ci0gICAgICAgIHJlZy0+YXR0ci5ieXRlcyA9IDB4ODA7CiAg ICAgICAgIGJyZWFrOwogICAgIGNhc2UgeDg2X3NlZ19sZHRyOgogICAgICAgICBzdm1fc3luY192 bWNiKHYpOwpAQCAtNzQwLDExICs3MjQsMTEgQEAgc3RhdGljIHZvaWQgc3ZtX3NldF9zZWdtZW50 X3JlZ2lzdGVyKHN0cnVjdCB2Y3B1ICp2LCBlbnVtIHg4Nl9zZWdtZW50IHNlZywKICAgICAgICAg YnJlYWs7CiAgICAgY2FzZSB4ODZfc2VnX2dkdHI6CiAgICAgICAgIHZtY2ItPmdkdHIuYmFzZSA9 IHJlZy0+YmFzZTsKLSAgICAgICAgdm1jYi0+Z2R0ci5saW1pdCA9ICh1aW50MTZfdClyZWctPmxp bWl0OworICAgICAgICB2bWNiLT5nZHRyLmxpbWl0ID0gcmVnLT5saW1pdDsKICAgICAgICAgYnJl YWs7CiAgICAgY2FzZSB4ODZfc2VnX2lkdHI6CiAgICAgICAgIHZtY2ItPmlkdHIuYmFzZSA9IHJl Zy0+YmFzZTsKLSAgICAgICAgdm1jYi0+aWR0ci5saW1pdCA9ICh1aW50MTZfdClyZWctPmxpbWl0 OworICAgICAgICB2bWNiLT5pZHRyLmxpbWl0ID0gcmVnLT5saW1pdDsKICAgICAgICAgYnJlYWs7 CiAgICAgY2FzZSB4ODZfc2VnX2xkdHI6CiAgICAgICAgIG1lbWNweSgmdm1jYi0+bGR0ciwgcmVn LCBzaXplb2YoKnJlZykpOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMg Yi94ZW4vYXJjaC94ODYvaHZtL3ZteC92bXguYwppbmRleCAzNzdjNzg5Li4wMDRkYWQ4IDEwMDY0 NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL3ZteC92bXguYworKysgYi94ZW4vYXJjaC94ODYvaHZt L3ZteC92bXguYwpAQCAtMTEyNiw5ICsxMTI2LDYgQEAgc3RhdGljIHZvaWQgdm14X3NldF9zZWdt ZW50X3JlZ2lzdGVyKHN0cnVjdCB2Y3B1ICp2LCBlbnVtIHg4Nl9zZWdtZW50IHNlZywKICAgICAg Ki8KICAgICBhdHRyID0gKCEoYXR0ciAmICgxdSA8PCA3KSkgPDwgMTYpIHwgKChhdHRyICYgMHhm MDApIDw8IDQpIHwgKGF0dHIgJiAweGZmKTsKIAotICAgIC8qIFZNWCBoYXMgc3RyaWN0IGNvbnNp c3RlbmN5IHJlcXVpcmVtZW50IGZvciBmbGFnIEcuICovCi0gICAgYXR0ciB8PSAhIShsaW1pdCA+ PiAyMCkgPDwgMTU7Ci0KICAgICB2bXhfdm1jc19lbnRlcih2KTsKIAogICAgIHN3aXRjaCAoIHNl ZyApCkBAIC0xMTczLDggKzExNzAsNyBAQCBzdGF0aWMgdm9pZCB2bXhfc2V0X3NlZ21lbnRfcmVn aXN0ZXIoc3RydWN0IHZjcHUgKnYsIGVudW0geDg2X3NlZ21lbnQgc2VnLAogICAgICAgICBfX3Zt d3JpdGUoR1VFU1RfVFJfU0VMRUNUT1IsIHNlbCk7CiAgICAgICAgIF9fdm13cml0ZShHVUVTVF9U Ul9MSU1JVCwgbGltaXQpOwogICAgICAgICBfX3Ztd3JpdGUoR1VFU1RfVFJfQkFTRSwgYmFzZSk7 Ci0gICAgICAgIC8qIFZNWCBjaGVja3MgdGhhdCB0aGUgdGhlIGJ1c3kgZmxhZyAoYml0IDEpIGlz IHNldC4gKi8KLSAgICAgICAgX192bXdyaXRlKEdVRVNUX1RSX0FSX0JZVEVTLCBhdHRyIHwgMik7 CisgICAgICAgIF9fdm13cml0ZShHVUVTVF9UUl9BUl9CWVRFUywgYXR0cik7CiAgICAgICAgIGJy ZWFrOwogICAgIGNhc2UgeDg2X3NlZ19nZHRyOgogICAgICAgICBfX3Ztd3JpdGUoR1VFU1RfR0RU Ul9MSU1JVCwgbGltaXQpOwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9kZXNjLmgg Yi94ZW4vaW5jbHVkZS9hc20teDg2L2Rlc2MuaAppbmRleCAwZTJkOTdmLi5kYTkyNGJmIDEwMDY0 NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2Rlc2MuaAorKysgYi94ZW4vaW5jbHVkZS9hc20t eDg2L2Rlc2MuaApAQCAtODksNyArODksMTMgQEAKICNpZm5kZWYgX19BU1NFTUJMWV9fCiAKIC8q IFN5c3RlbSBEZXNjcmlwdG9yIHR5cGVzIGZvciBHRFQgYW5kIElEVCBlbnRyaWVzLiAqLworI2Rl ZmluZSBTWVNfREVTQ190c3MxNl9hdmFpbCAgMQogI2RlZmluZSBTWVNfREVTQ19sZHQgICAgICAg ICAgMgorI2RlZmluZSBTWVNfREVTQ190c3MxNl9idXN5ICAgMworI2RlZmluZSBTWVNfREVTQ19j YWxsX2dhdGUxNiAgNAorI2RlZmluZSBTWVNfREVTQ190YXNrX2dhdGUgICAgNQorI2RlZmluZSBT WVNfREVTQ19pcnFfZ2F0ZTE2ICAgNgorI2RlZmluZSBTWVNfREVTQ190cmFwX2dhdGUxNiAgNwog I2RlZmluZSBTWVNfREVTQ190c3NfYXZhaWwgICAgOQogI2RlZmluZSBTWVNfREVTQ190c3NfYnVz eSAgICAgMTEKICNkZWZpbmUgU1lTX0RFU0NfY2FsbF9nYXRlICAgIDEyCmRpZmYgLS1naXQgYS94 ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9odm0uaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2h2 bS5oCmluZGV4IDUxYTY0ZjcuLmIzN2IzMzUgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14 ODYvaHZtL2h2bS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2h2bS5oCkBAIC0zNTgs MTkgKzM1OCwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaHZtX2ZsdXNoX2d1ZXN0X3RsYnModm9p ZCkKIHZvaWQgaHZtX2h5cGVyY2FsbF9wYWdlX2luaXRpYWxpc2Uoc3RydWN0IGRvbWFpbiAqZCwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqaHlwZXJjYWxsX3BhZ2Up OwogCi1zdGF0aWMgaW5saW5lIHZvaWQKLWh2bV9nZXRfc2VnbWVudF9yZWdpc3RlcihzdHJ1Y3Qg dmNwdSAqdiwgZW51bSB4ODZfc2VnbWVudCBzZWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IHNlZ21lbnRfcmVnaXN0ZXIgKnJlZykKLXsKLSAgICBodm1fZnVuY3MuZ2V0X3NlZ21l bnRfcmVnaXN0ZXIodiwgc2VnLCByZWcpOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQKLWh2bV9z ZXRfc2VnbWVudF9yZWdpc3RlcihzdHJ1Y3QgdmNwdSAqdiwgZW51bSB4ODZfc2VnbWVudCBzZWcs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlZ21lbnRfcmVnaXN0ZXIgKnJlZykK LXsKLSAgICBodm1fZnVuY3Muc2V0X3NlZ21lbnRfcmVnaXN0ZXIodiwgc2VnLCByZWcpOwotfQor dm9pZCBodm1fZ2V0X3NlZ21lbnRfcmVnaXN0ZXIoc3RydWN0IHZjcHUgKnYsIGVudW0geDg2X3Nl Z21lbnQgc2VnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlZ21lbnRf cmVnaXN0ZXIgKnJlZyk7Cit2b2lkIGh2bV9zZXRfc2VnbWVudF9yZWdpc3RlcihzdHJ1Y3QgdmNw dSAqdiwgZW51bSB4ODZfc2VnbWVudCBzZWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3Qgc2VnbWVudF9yZWdpc3RlciAqcmVnKTsKIAogc3RhdGljIGlubGluZSB1bnNpZ25l ZCBsb25nIGh2bV9nZXRfc2hhZG93X2dzX2Jhc2Uoc3RydWN0IHZjcHUgKnYpCiB7Ci0tIAoyLjEu NAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1k ZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54 ZW4ub3JnL3hlbi1kZXZlbAo=