From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH RFC 26/44] x86/pt-shadow: Maintain a small cache of shadowed frames Date: Thu, 4 Jan 2018 20:21:51 +0000 Message-ID: <1515097329-31902-27-git-send-email-andrew.cooper3@citrix.com> References: <1515097329-31902-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: <1515097329-31902-1-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Xen-devel Cc: Andrew Cooper List-Id: xen-devel@lists.xenproject.org VGhpcyBpbXByb3ZlcyB0aGUgc2hhZG93aW5nIHBlcmZvcm1hbmNlIHN1YnN0YW50aWFsbHkuICBJ biBwYXJ0aWN1bGFyLCBzeXN0ZW0KY2FsbHMgZm9yIDY0Yml0IFBWIGd1ZXN0cyAod2hpY2ggc3dp dGNoIGJldHdlZW4gdGhlIHVzZXIgYW5kIGtlcm5lbApwYWdldGFibGVzKSBubyBsb25nZXIgc3Vm ZmVyIGEgNEsgY29weSBoaXQgaW4gYm90aCBkaXJlY3Rpb25zLgoKU2VlIHRoZSBjb2RlIGNvbW1l bnRzIGZvciByZWFzb25pbmcgYW5kIHRoZSBhbGdvcml0aG0gZGVzY3JpcHRpb24uCgpTaWduZWQt b2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgotLS0KIHhl bi9hcmNoL3g4Ni9tbS5jICAgICAgICAgICAgICAgICAgfCAgIDIgKwogeGVuL2FyY2gveDg2L21t L3NoYWRvdy9tdWx0aS5jICAgICB8ICAgMiArCiB4ZW4vYXJjaC94ODYvcHYvcHQtc2hhZG93LmMg ICAgICAgIHwgMTk2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KIHhlbi9p bmNsdWRlL2FzbS14ODYvcHYvcHQtc2hhZG93LmggfCAgIDkgKysKIDQgZmlsZXMgY2hhbmdlZCwg MTg2IGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNo L3g4Ni9tbS5jIGIveGVuL2FyY2gveDg2L21tLmMKaW5kZXggZDVjNjljMC4uZjhmMTVlOSAxMDA2 NDQKLS0tIGEveGVuL2FyY2gveDg2L21tLmMKKysrIGIveGVuL2FyY2gveDg2L21tLmMKQEAgLTI0 MTMsNiArMjQxMyw4IEBAIGludCBmcmVlX3BhZ2VfdHlwZShzdHJ1Y3QgcGFnZV9pbmZvICpwYWdl LCB1bnNpZ25lZCBsb25nIHR5cGUsCiAgICAgY2FzZSBQR1RfbDRfcGFnZV90YWJsZToKICAgICAg ICAgQVNTRVJUKHByZWVtcHRpYmxlKTsKICAgICAgICAgcmMgPSBmcmVlX2w0X3RhYmxlKHBhZ2Up OworICAgICAgICBpZiAoICFyYyApCisgICAgICAgICAgICBwdF9zaGFkb3dfbDRfaW52bHBnKG93 bmVyLCBwYWdlKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgZ2Rwcmlu dGsoWEVOTE9HX1dBUk5JTkcsICJ0eXBlICUiIFBSdHlwZV9pbmZvICIgbWZuICUiIFBSSV9tZm4g IlxuIiwKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvbXVsdGkuYyBiL3hlbi9h cmNoL3g4Ni9tbS9zaGFkb3cvbXVsdGkuYwppbmRleCA5YzkyOWVkLi5mOWVjNWFhIDEwMDY0NAot LS0gYS94ZW4vYXJjaC94ODYvbW0vc2hhZG93L211bHRpLmMKKysrIGIveGVuL2FyY2gveDg2L21t L3NoYWRvdy9tdWx0aS5jCkBAIC0xODk1LDYgKzE4OTUsOCBAQCB2b2lkIHNoX2Rlc3Ryb3lfbDRf c2hhZG93KHN0cnVjdCBkb21haW4gKmQsIG1mbl90IHNtZm4pCiAgICAgICAgIH0KICAgICB9KTsK IAorICAgIHB0X3NoYWRvd19sNF9pbnZscGcoZCwgc3ApOworCiAgICAgLyogUHV0IHRoZSBtZW1v cnkgYmFjayBpbiB0aGUgcG9vbCAqLwogICAgIHNoYWRvd19mcmVlKGQsIHNtZm4pOwogfQpkaWZm IC0tZ2l0IGEveGVuL2FyY2gveDg2L3B2L3B0LXNoYWRvdy5jIGIveGVuL2FyY2gveDg2L3B2L3B0 LXNoYWRvdy5jCmluZGV4IDMzY2IzMDMuLmI0ZjJiODYgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4 Ni9wdi9wdC1zaGFkb3cuYworKysgYi94ZW4vYXJjaC94ODYvcHYvcHQtc2hhZG93LmMKQEAgLTI0 LDYgKzI0LDEwIEBACiAKICNpbmNsdWRlIDxhc20vcHYvcHQtc2hhZG93Lmg+CiAKKy8qIE92ZXJy aWRlIG1hY3JvcyBmcm9tIGFzbS9tbS5oIHRvIG1ha2UgdGhlbSB3b3JrIHdpdGggbWZuX3QgKi8K KyN1bmRlZiBwYWdlX3RvX21mbgorI2RlZmluZSBwYWdlX3RvX21mbihwZykgX21mbihfX3BhZ2Vf dG9fbWZuKHBnKSkKKwogLyoKICAqIFRvIHVzZSBwZXJjcHUgbGluZWFyIHJhbmdlcywgd2UgcmVx dWlyZSB0aGF0IG5vIHR3byBwY3B1cyBoYXZlICVjcjMKICAqIHBvaW50aW5nIGF0IHRoZSBzYW1l IEw0IHBhZ2V0YWJsZSBhdCB0aGUgc2FtZSB0aW1lLgpAQCAtMzgsMTkgKzQyLDQ0IEBACiAgKgog ICogVGhlIGFsZ29yaXRobSBpcyBmYWlybHkgc2ltcGxlLgogICoKKyAqICAgLSBBIHNtYWxsIGNh Y2hlIG9mIHNoYWRvd2VkIEw0cyBmcm9tIHRoZSBzYW1lIGd1ZXN0IGlzIG1haW50YWluZWQuCiAg KiAgIC0gV2hlbiBhIHBjcHUgaXMgc3dpdGNoaW5nIHRvIGEgbmV3IHZjcHUgY3IzIGFuZCBzaGFk b3dpbmcgaXMgbmVjZXNzYXJ5LAotICogICAgIHBlcmZvcm0gYSBmdWxsIDRLIGNvcHkgb2YgdGhl IGd1ZXN0cyBmcmFtZSBpbnRvIGEgcGVyY3B1IGZyYW1lLCBhbmQgcnVuCi0gKiAgICAgb24gdGhh dC4KKyAqICAgICB0aGUgY2FjaGUgaXMgc2VhcmNoZWQuCisgKiAgICAgLSBJZiB0aGUgbmV3IGNy MyBpcyBhbHJlYWR5IGNhY2hlZCwgdXNlIG91ciBleGlzdGluZyBzaGFkb3cuCisgKiAgICAgLSBJ ZiBub3QsIGRyb3AgYW4gZW50cnkgYW5kIHNoYWRvdyB0aGUgbmV3IGZyYW1lIHdpdGggYSBmdWxs IDRLIGNvcHkuCiAgKiAgIC0gV2hlbiBhIHdyaXRlIHRvIGEgZ3Vlc3RzIEw0IHBhZ2V0YWJsZSBv Y2N1cnMsIHRoZSB1cGRhdGUgbXVzdCBiZQogICogICAgIHByb3BhZ2F0ZWQgdG8gYWxsIGV4aXN0 aW5nIHNoYWRvd3MuICBBbiBJUEkgaXMgc2VudCB0byB0aGUgZG9tYWlucwogICogICAgIGRpcnR5 IG1hc2sgaW5kaWNhdGluZyB3aGljaCBmcmFtZS9zbG90IHdhcyB1cGRhdGVkLCBhbmQgZWFjaCBw Y3B1CiAgKiAgICAgY2hlY2tzIHRvIHNlZSB3aGV0aGVyIGl0IG5lZWRzIHRvIHN5bmMgdGhlIHVw ZGF0ZSBpbnRvIGl0cyBzaGFkb3cuCisgKiAgIC0gV2hlbiBhIGd1ZXN0IEw0IHBhZ2V0YWJsZSBp cyBmcmVlZCwgaXQgbXVzdCBiZSBkcm9wcGVkIGZyb20gYW55IGNhY2hlcywKKyAqICAgICBhcyBY ZW4gd2lsbCBhbGxvdyBpdCB0byBiZWNvbWUgd3JpdGVhYmxlIHRvIHRoZSBndWVzdCBhZ2Fpbiwg YW5kIGl0cworICogICAgIGNvbnRlbnRzIHdpbGwgZ28gc3RhbGUuICBJdCB1c2VzIHRoZSBzYW1l IElQSSBtZWNoYW5pc20gYXMgZm9yIHdyaXRlcy4KKyAqLworCisjZGVmaW5lIEw0X1NIQURPV19P UkRFUiAyCisjZGVmaW5lIE5SX0w0X1NIQURPV1MgICAoMXVsIDw8IEw0X1NIQURPV19PUkRFUikK KworLyoKKyAqIEFuIGluZGl2aWR1YWwgY2FjaGUgZW50cnkuICBDb250YWlucyBhICVjcjMgd2hp Y2ggaGFzIGJlZW4gY2FjaGVkLCBhbmQgdGhlCisgKiBpbmRleCBvZiB0aGlzIGVudHJ5IGludG8g dGhlIHNoYWRvdyBmcmFtZXMuCisgKgorICogVGhlIGxheW91dCByZWxpZXMgb24gJWNyMyBiZWlu ZyBwYWdlIGFsaWduZWQsIHdpdGggdGhlIGluZGV4IHN0b3JlZCBpbiB0aGUKKyAqIGxvd2VyIGJp dHMuICBpZHggY291bGQgYmUgYSBzbWFsbGVyIGJpdGZpZWxkLCBidXQgdGhlcmUgaXMgbm8gb3Ro ZXIKKyAqIGluZm9ybWF0aW9uIHRvIHN0b3JlLCBhbmQgaGF2aW5nIGl0IGFzIGFuIDhiaXQgZmll bGQgcmVzdWx0cyBpbiBiZXR0ZXIKKyAqIGNvbXBpbGVkIGNvZGUuCiAgKi8KK3R5cGVkZWYgdW5p b24gcHRfY2FjaGVfZW50cnkgeworICAgIHVuc2lnbmVkIGxvbmcgcmF3OworICAgIHN0cnVjdCB7 CisgICAgICAgIHVpbnQ4X3QgaWR4OworICAgICAgICB1bnNpZ25lZCBsb25nIDo0LCBjcjNfbWZu OjUyOworICAgIH07Cit9IHB0X2NhY2hlX2VudHJ5X3Q7CiAKIHN0cnVjdCBwdF9zaGFkb3cgewog ICAgIC8qCi0gICAgICogQSBmcmFtZSB1c2VkIHRvIHNoYWRvdyBhIHZjcHVzIGludGVuZGVkIHBh Z2V0YWJsZS4gIFdoZW4gc2hhZG93aW5nLAotICAgICAqIHRoaXMgZnJhbWUgaXMgdGhlIG9uZSBh Y3R1YWxseSByZWZlcmVuY2VkIGJ5ICVjcjMuCisgICAgICogQSBjYWNoZSBvZiBmcmFtZXMgdXNl ZCB0byBzaGFkb3cgYSB2Y3B1cyBpbnRlbmRlZCBwYWdldGFibGVzLiAgV2hlbgorICAgICAqIHNo YWRvd2luZywgb25lIG9mIHRoZXNlIGZyYW1lcyBpcyB0aGUgb25lIGFjdHVhbGx5IHJlZmVyZW5j ZWQgYnkgJWNyMy4KICAgICAgKi8KICAgICBwYWRkcl90IHNoYWRvd19sNDsKICAgICBsNF9wZ2Vu dHJ5X3QgKnNoYWRvd19sNF92YTsKQEAgLTYzLDI5ICs5Miw2MCBAQCBzdHJ1Y3QgcHRfc2hhZG93 IHsKICAgICAgKi8KICAgICBjb25zdCBzdHJ1Y3QgZG9tYWluICpkb21haW47CiAKLSAgICAvKiBJ ZiBub256ZXJvLCBhIGd1ZXN0cyBwYWdldGFibGUgd2hpY2ggd2UgYXJlIHNoYWRvd2luZy4gKi8K LSAgICBwYWRkcl90IHNoYWRvd2luZzsKKyAgICAvKgorICAgICAqIEEgY29sbGVjdGlvbiBvZiAl Y3IzJ3MsIGJlbG9uZ2luZyB0byBAcCBkb21haW4sIHdoaWNoIGFyZSBzaGFkb3dlZAorICAgICAq IGxvY2FsbHkuCisgICAgICoKKyAgICAgKiBBIGNhY2hlIGVudHJ5IGlzIHVzZWQgaWYgY3IzX21m biAhPSAwLCBmcmVlIG90aGVyd2lzZS4gIFRoZSBjYWNoZSBpcworICAgICAqIG1haW50YWluZWQg aW4gbW9zdC1yZWNlbnRseS11c2VkIG9yZGVyLiAgQXMgYSByZXN1bHQsIGNhY2hlWzBdLmNyM19t Zm4KKyAgICAgKiBzaG91bGQgYWx3YXlzIG1hdGNoIHYtPmFyY2guY3IzLgorICAgICAqCisgICAg ICogVGhlIGNhY2hlW10uaWR4IGZpZWxkcyB3aWxsIGFsd2F5cyBiZSB1bmlxdWUsIGFuZCBiZXR3 ZWVuIDAgYW5kCisgICAgICogTlJfTDRfU0hBRE9XUy4gIFRoZWlyIG9yZGVyIGhvd2V2ZXIgd2ls bCB2YXJ5IGFzIG1vc3QtcmVjZW50bHktdXNlZAorICAgICAqIG9yZGVyIGlzIG1haW50YWluZWQu CisgICAgICovCisgICAgcHRfY2FjaGVfZW50cnlfdCBjYWNoZVtOUl9MNF9TSEFET1dTXTsKIH07 CiAKIHN0YXRpYyBERUZJTkVfUEVSX0NQVShzdHJ1Y3QgcHRfc2hhZG93LCBwdHNoKTsKIAorc3Rh dGljIGw0X3BnZW50cnlfdCAqc2hhZG93X2w0X3ZhKHN0cnVjdCBwdF9zaGFkb3cgKnB0c2gsIHVu c2lnbmVkIGludCBpZHgpCit7CisgICAgcmV0dXJuIF9wKHB0c2gtPnNoYWRvd19sNF92YSkgKyBp ZHggKiBQQUdFX1NJWkU7Cit9CisKK3N0YXRpYyBwYWRkcl90IHNoYWRvd19sNChzdHJ1Y3QgcHRf c2hhZG93ICpwdHNoLCB1bnNpZ25lZCBpbnQgaWR4KQoreworICAgIHJldHVybiBwdHNoLT5zaGFk b3dfbDQgKyBpZHggKiBQQUdFX1NJWkU7Cit9CisKIGludCBwdF9zaGFkb3dfYWxsb2ModW5zaWdu ZWQgaW50IGNwdSkKIHsKICAgICBzdHJ1Y3QgcHRfc2hhZG93ICpwdHNoID0gJnBlcl9jcHUocHRz aCwgY3B1KTsKLSAgICB1bnNpZ25lZCBpbnQgbWVtZmxhZ3MgPSAwOworICAgIHVuc2lnbmVkIGlu dCBtZW1mbGFncyA9IDAsIGk7CiAgICAgbm9kZWlkX3Qgbm9kZSA9IGNwdV90b19ub2RlKGNwdSk7 CiAgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGc7CisgICAgbWZuX3QgbWZuc1tOUl9MNF9TSEFET1dT XTsKIAogICAgIGlmICggbm9kZSAhPSBOVU1BX05PX05PREUgKQogICAgICAgICBtZW1mbGFncyA9 IE1FTUZfbm9kZShub2RlKTsKIAotICAgIHBnID0gYWxsb2NfZG9taGVhcF9wYWdlKE5VTEwsIG1l bWZsYWdzKTsKKyAgICBwZyA9IGFsbG9jX2RvbWhlYXBfcGFnZXMoTlVMTCwgTDRfU0hBRE9XX09S REVSLCBtZW1mbGFncyk7CiAgICAgaWYgKCAhcGcgKQogICAgICAgICByZXR1cm4gLUVOT01FTTsK IAogICAgIHB0c2gtPnNoYWRvd19sNCA9IHBhZ2VfdG9fbWFkZHIocGcpOwogCi0gICAgcHRzaC0+ c2hhZG93X2w0X3ZhID0gX19tYXBfZG9tYWluX3BhZ2VfZ2xvYmFsKHBnKTsKKyAgICBmb3IgKCBp ID0gMDsgaSA8IEFSUkFZX1NJWkUobWZucyk7ICsraSApCisgICAgeworICAgICAgICAvKiBJbml0 aWFsaXNlIHRoZSBjYWNoZSAoYXNjZW5kaW5nIGlkeCBmaWVsZHMpLiAqLworICAgICAgICBwdHNo LT5jYWNoZVtpXSA9IChwdF9jYWNoZV9lbnRyeV90KXsgaSB9OworCisgICAgICAgIC8qIENvbGxl Y3QgTUZOcyB0byB2bWFwKCkuICovCisgICAgICAgIG1mbnNbaV0gPSBtZm5fYWRkKG1hZGRyX3Rv X21mbihwdHNoLT5zaGFkb3dfbDQpLCBpKTsKKyAgICB9CisKKyAgICBwdHNoLT5zaGFkb3dfbDRf dmEgPSB2bWFwKG1mbnMsIEFSUkFZX1NJWkUobWZucykpOwogICAgIGlmICggIXB0c2gtPnNoYWRv d19sNF92YSApCiAgICAgICAgIHJldHVybiAtRU5PTUVNOwogCkBAIC05OCwxNyArMTU4LDM1IEBA IHZvaWQgcHRfc2hhZG93X2ZyZWUodW5zaWduZWQgaW50IGNwdSkKIAogICAgIGlmICggcHRzaC0+ c2hhZG93X2w0X3ZhICkKICAgICB7Ci0gICAgICAgIHVubWFwX2RvbWFpbl9wYWdlX2dsb2JhbChw dHNoLT5zaGFkb3dfbDRfdmEpOworICAgICAgICB2dW5tYXAocHRzaC0+c2hhZG93X2w0X3ZhKTsK ICAgICAgICAgcHRzaC0+c2hhZG93X2w0X3ZhID0gTlVMTDsKICAgICB9CiAKICAgICBpZiAoIHB0 c2gtPnNoYWRvd19sNCApCiAgICAgewotICAgICAgICBmcmVlX2RvbWhlYXBfcGFnZShtYWRkcl90 b19wYWdlKHB0c2gtPnNoYWRvd19sNCkpOworICAgICAgICBmcmVlX2RvbWhlYXBfcGFnZXMobWFk ZHJfdG9fcGFnZShwdHNoLT5zaGFkb3dfbDQpLCBMNF9TSEFET1dfT1JERVIpOwogICAgICAgICBw dHNoLT5zaGFkb3dfbDQgPSAwOwogICAgIH0KIH0KIAorc3RhdGljIHB0X2NhY2hlX2VudHJ5X3Qg KnB0X2NhY2hlX2xvb2t1cCgKKyAgICBzdHJ1Y3QgcHRfc2hhZG93ICpwdHNoLCB1bnNpZ25lZCBs b25nIG1hZGRyKQoreworICAgIHVuc2lnbmVkIGludCBpOworCisgICAgQVNTRVJUKCFsb2NhbF9p cnFfaXNfZW5hYmxlZCgpKTsKKworICAgIGZvciAoIGkgPSAwOyBpIDwgQVJSQVlfU0laRShwdHNo LT5jYWNoZSk7ICsraSApCisgICAgeworICAgICAgICBwdF9jYWNoZV9lbnRyeV90ICplbnQgPSAm cHRzaC0+Y2FjaGVbaV07CisKKyAgICAgICAgaWYgKCBlbnQtPmNyM19tZm4gPT0gKG1hZGRyID4+ IFBBR0VfU0hJRlQpICkKKyAgICAgICAgICAgIHJldHVybiBlbnQ7CisgICAgfQorCisgICAgcmV0 dXJuIE5VTEw7Cit9CisKIC8qCiAgKiBXZSBvbmx5IG5lZWQgdG8gc2hhZG93IDQtbGV2ZWwgUFYg Z3Vlc3RzLiAgQWxsIG90aGVyIGd1ZXN0cyBoYXZlIHBlci12Y3B1CiAgKiBtb25pdG9yIHRhYmxl cyB3aGljaCBhcmUgbmV2ZXIgc2NoZWR1bGVkIG9uIGNvbmN1cnJlbnQgcGNwdXMuICBDYXJlIG5l ZWRzCkBAIC0xMjYsNiArMjA0LDcgQEAgdW5zaWduZWQgbG9uZyBwdF9tYXliZV9zaGFkb3coc3Ry dWN0IHZjcHUgKnYpCiAgICAgdW5zaWduZWQgaW50IGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsK ICAgICBzdHJ1Y3QgcHRfc2hhZG93ICpwdHNoID0gJnBlcl9jcHUocHRzaCwgY3B1KTsKICAgICB1 bnNpZ25lZCBsb25nIGZsYWdzLCBuZXdfY3IzID0gdi0+YXJjaC5jcjM7CisgICAgcHRfY2FjaGVf ZW50cnlfdCAqZW50OwogCiAgICAgLyoKICAgICAgKiBJUElzIGZvciB1cGRhdGVzIGFyZSBiYXNl ZCBvbiB0aGUgZG9tYWluIGRpcnR5IG1hc2suICBJZiB3ZSBldmVyIHN3aXRjaApAQCAtMTM1LDgg KzIxNCwxMiBAQCB1bnNpZ25lZCBsb25nIHB0X21heWJlX3NoYWRvdyhzdHJ1Y3QgdmNwdSAqdikK ICAgICBpZiAoIHB0c2gtPmRvbWFpbiAmJgogICAgICAgICAgcHRzaC0+ZG9tYWluICE9IHYtPmRv bWFpbiApCiAgICAgeworICAgICAgICB1bnNpZ25lZCBpbnQgaTsKKwogICAgICAgICBwdHNoLT5k b21haW4gPSBOVUxMOwotICAgICAgICBwdHNoLT5zaGFkb3dpbmcgPSAwOworCisgICAgICAgIGZv ciAoIGkgPSAwOyBpIDwgQVJSQVlfU0laRShwdHNoLT5jYWNoZSk7ICsraSApCisgICAgICAgICAg ICBwdHNoLT5jYWNoZVtpXS5jcjNfbWZuID0gMDsKICAgICB9CiAKICAgICAvKiBObyBzaGFkb3dp bmcgbmVjZXNzYXJ5PyBSdW4gb24gdGhlIGludGVuZGVkIHBhZ2V0YWJsZS4gKi8KQEAgLTE0NSwx MCArMjI4LDYgQEAgdW5zaWduZWQgbG9uZyBwdF9tYXliZV9zaGFkb3coc3RydWN0IHZjcHUgKnYp CiAKICAgICBwdHNoLT5kb21haW4gPSB2LT5kb21haW47CiAKLSAgICAvKiBGYXN0cGF0aCwgaWYg d2UgYXJlIGFscmVhZHkgc2hhZG93aW5nIHRoZSBpbnRlbmRlZCBwYWdldGFibGUuICovCi0gICAg aWYgKCBwdHNoLT5zaGFkb3dpbmcgPT0gbmV3X2NyMyApCi0gICAgICAgIHJldHVybiBwdHNoLT5z aGFkb3dfbDQ7Ci0KICAgICAvKgogICAgICAqIFdlIG1heSBiZSBjYWxsZWQgd2l0aCBpbnRlcnJ1 cHRzIGRpc2FibGVkIChlLmcuIGNvbnRleHQgc3dpdGNoKSwgb3IKICAgICAgKiBpbnRlcnJ1cHRz IGVuYWJsZWQgKGUuZy4gbmV3X2d1ZXN0X2NyMygpKS4KQEAgLTE1OCwxNCArMjM3LDQ2IEBAIHVu c2lnbmVkIGxvbmcgcHRfbWF5YmVfc2hhZG93KHN0cnVjdCB2Y3B1ICp2KQogICAgICAqLwogICAg IGxvY2FsX2lycV9zYXZlKGZsYWdzKTsKIAorICAgIGVudCA9IHB0X2NhY2hlX2xvb2t1cChwdHNo LCBuZXdfY3IzKTsKKyAgICBpZiAoIGVudCApCisgICAgeworICAgICAgICAvKgorICAgICAgICAg KiBDYWNoZSBoaXQuICBQcm9tb3RlIHRoaXMgZW50cnkgdG8gYmVpbmcgbW9zdCByZWNlbnRseSB1 c2VkIChpZiBpdAorICAgICAgICAgKiBpc24ndCBhbHJlYWR5KS4KKyAgICAgICAgICovCisgICAg ICAgIHVuc2lnbmVkIGludCBjYWNoZV9pZHggPSBlbnQgLSBwdHNoLT5jYWNoZTsKKworICAgICAg ICBpZiAoIGNhY2hlX2lkeCApCisgICAgICAgIHsKKyAgICAgICAgICAgIHB0X2NhY2hlX2VudHJ5 X3QgdG1wID0gKmVudDsKKworICAgICAgICAgICAgc3dpdGNoICggY2FjaGVfaWR4ICkKKyAgICAg ICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgMzogcHRzaC0+Y2FjaGVbM10gPSBwdHNoLT5jYWNo ZVsyXTsKKyAgICAgICAgICAgIGNhc2UgMjogcHRzaC0+Y2FjaGVbMl0gPSBwdHNoLT5jYWNoZVsx XTsKKyAgICAgICAgICAgIGNhc2UgMTogcHRzaC0+Y2FjaGVbMV0gPSBwdHNoLT5jYWNoZVswXTsK KyAgICAgICAgICAgICAgICAgICAgcHRzaC0+Y2FjaGVbMF0gPSB0bXA7CisgICAgICAgICAgICB9 CisgICAgICAgIH0KKyAgICAgICAgbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOworICAgIH0KKyAg ICBlbHNlCiAgICAgeworICAgICAgICAvKgorICAgICAgICAgKiBDYWNoZSBtaXNzLiAgUmVjeWNs ZSB3aGF0ZXZlciB3YXMgaW4gdGhlIGxhc3Qgc2xvdCwgcHJvbW90ZSBpdCB0bworICAgICAgICAg KiBiZWluZyBtb3N0IHJlY2VudGx5IHVzZWQsIGFuZCBjb3B5IHRoZSBlbnRpcmUgcGFnZXRhYmxl LgorICAgICAgICAgKi8KICAgICAgICAgdW5zaWduZWQgaW50IHNsb3QgPSBsNF90YWJsZV9vZmZz ZXQoUEVSQ1BVX0xJTkVBUl9TVEFSVCk7CisgICAgICAgIHVuc2lnbmVkIGludCBpZHggPSBwdHNo LT5jYWNoZVszXS5pZHg7CiAgICAgICAgIGw0X3BnZW50cnlfdCAqbDR0LCAqdmNwdV9sNHQ7CiAK LSAgICAgICAgcHRzaC0+c2hhZG93aW5nID0gbmV3X2NyMzsKKyAgICAgICAgcHRzaC0+Y2FjaGVb M10gPSBwdHNoLT5jYWNoZVsyXTsKKyAgICAgICAgcHRzaC0+Y2FjaGVbMl0gPSBwdHNoLT5jYWNo ZVsxXTsKKyAgICAgICAgcHRzaC0+Y2FjaGVbMV0gPSBwdHNoLT5jYWNoZVswXTsKKyAgICAgICAg cHRzaC0+Y2FjaGVbMF0gPSAocHRfY2FjaGVfZW50cnlfdCl7IG5ld19jcjMgfCBpZHggfTsKICAg ICAgICAgbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOwogCi0gICAgICAgIGw0dCA9IHB0c2gtPnNo YWRvd19sNF92YTsKKyAgICAgICAgbDR0ID0gc2hhZG93X2w0X3ZhKHB0c2gsIGlkeCk7CiAgICAg ICAgIHZjcHVfbDR0ID0gbWFwX2RvbWFpbl9wYWdlKG1hZGRyX3RvX21mbihuZXdfY3IzKSk7CiAK ICAgICAgICAgLyoKQEAgLTE4NCw3ICsyOTUsOSBAQCB1bnNpZ25lZCBsb25nIHB0X21heWJlX3No YWRvdyhzdHJ1Y3QgdmNwdSAqdikKICAgICAgICAgdW5tYXBfZG9tYWluX3BhZ2UodmNwdV9sNHQp OwogICAgIH0KIAotICAgIHJldHVybiBwdHNoLT5zaGFkb3dfbDQ7CisgICAgQVNTRVJUKHB0c2gt PmNhY2hlWzBdLmNyM19tZm4gPT0gKG5ld19jcjMgPj4gUEFHRV9TSElGVCkpOworCisgICAgcmV0 dXJuIHNoYWRvd19sNChwdHNoLCBwdHNoLT5jYWNoZVswXS5pZHgpOwogfQogCiBzdHJ1Y3QgcHRz aF9pcGlfaW5mbwpAQCAtMTkzLDYgKzMwNiw3IEBAIHN0cnVjdCBwdHNoX2lwaV9pbmZvCiAgICAg Y29uc3Qgc3RydWN0IHBhZ2VfaW5mbyAqcGc7CiAgICAgZW51bSB7CiAgICAgICAgIFBUU0hfSVBJ X1dSSVRFLAorICAgICAgICBQVFNIX0lQSV9JTlZMUEcsCiAgICAgfSBvcDsKICAgICB1bnNpZ25l ZCBpbnQgc2xvdDsKIH07CkBAIC0yMDIsMjkgKzMxNiw0OSBAQCBzdGF0aWMgdm9pZCBfcHRfc2hh ZG93X2lwaSh2b2lkICphcmcpCiAgICAgdW5zaWduZWQgaW50IGNwdSA9IHNtcF9wcm9jZXNzb3Jf aWQoKTsKICAgICBzdHJ1Y3QgcHRfc2hhZG93ICpwdHNoID0gJnBlcl9jcHUocHRzaCwgY3B1KTsK ICAgICBjb25zdCBzdHJ1Y3QgcHRzaF9pcGlfaW5mbyAqaW5mbyA9IGFyZzsKLSAgICB1bnNpZ25l ZCBsb25nIG1hZGRyID0gcGFnZV90b19tYWRkcihpbmZvLT5wZyk7CisgICAgcHRfY2FjaGVfZW50 cnlfdCAqZW50OwogCiAgICAgLyogTm8gbG9uZ2VyIHNoYWRvd2luZyBzdGF0ZSBmcm9tIHRoaXMg ZG9tYWluPyAgTm90aGluZyB0byBkby4gKi8KICAgICBpZiAoIGluZm8tPmQgIT0gcHRzaC0+ZG9t YWluICkKICAgICAgICAgcmV0dXJuOwogCisgICAgZW50ID0gcHRfY2FjaGVfbG9va3VwKHB0c2gs IHBhZ2VfdG9fbWFkZHIoaW5mby0+cGcpKTsKKwogICAgIC8qIE5vdCBzaGFkb3dpbmcgdGhpcyBm cmFtZT8gIE5vdGhpbmcgdG8gZG8uICovCi0gICAgaWYgKCBwdHNoLT5zaGFkb3dpbmcgIT0gbWFk ZHIgKQorICAgIGlmICggZW50ID09IE5VTEwgKQogICAgICAgICByZXR1cm47CiAKICAgICBzd2l0 Y2ggKCBpbmZvLT5vcCApCiAgICAgewogICAgICAgICBsNF9wZ2VudHJ5X3QgKmw0dCwgKnZjcHVf bDR0OworICAgICAgICB1bnNpZ25lZCBpbnQgY2FjaGVfaWR4LCBzaGFkb3dfaWR4OwogCiAgICAg Y2FzZSBQVFNIX0lQSV9XUklURToKLSAgICAgICAgbDR0ID0gcHRzaC0+c2hhZG93X2w0X3ZhOwot ICAgICAgICB2Y3B1X2w0dCA9IG1hcF9kb21haW5fcGFnZShtYWRkcl90b19tZm4obWFkZHIpKTsK KyAgICAgICAgbDR0ID0gc2hhZG93X2w0X3ZhKHB0c2gsIGVudC0+aWR4KTsKKyAgICAgICAgdmNw dV9sNHQgPSBtYXBfZG9tYWluX3BhZ2UocGFnZV90b19tZm4oaW5mby0+cGcpKTsKIAogICAgICAg ICBsNHRbaW5mby0+c2xvdF0gPSB2Y3B1X2w0dFtpbmZvLT5zbG90XTsKIAogICAgICAgICB1bm1h cF9kb21haW5fcGFnZSh2Y3B1X2w0dCk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBQVFNI X0lQSV9JTlZMUEc6CisgICAgICAgIGNhY2hlX2lkeCA9IGVudCAtIHB0c2gtPmNhY2hlOworICAg ICAgICBzaGFkb3dfaWR4ID0gZW50LT5pZHg7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogRGVt b3RlIHRoZSBkcm9wcGVkIGVudHJ5IHRvIGxlYXN0LXJlY2VudGx5LXVzZWQsIHNvIGl0IGlzIHRo ZSBuZXh0CisgICAgICAgICAqIGVudHJ5IHRvIGJlIHJldXNlZC4KKyAgICAgICAgICovCisgICAg ICAgIHN3aXRjaCAoIGNhY2hlX2lkeCApCisgICAgICAgIHsKKyAgICAgICAgY2FzZSAwOiBCVUco KTsgLyogPz8/IEZyZWVpbmcgdGhlIEw0IHdoaWNoIGN1cnJlbnQgaXMgcnVubmluZyBvbiEgKi8K KyAgICAgICAgY2FzZSAxOiBwdHNoLT5jYWNoZVsxXSA9IHB0c2gtPmNhY2hlWzJdOworICAgICAg ICBjYXNlIDI6IHB0c2gtPmNhY2hlWzJdID0gcHRzaC0+Y2FjaGVbM107CisgICAgICAgIGNhc2Ug MzogcHRzaC0+Y2FjaGVbM10gPSAocHRfY2FjaGVfZW50cnlfdCl7IHNoYWRvd19pZHggfTsKKyAg ICAgICAgfQorICAgICAgICBicmVhazsKKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9V TlJFQUNIQUJMRSgpOwogICAgIH0KQEAgLTI0OCw2ICszODIsMjIgQEAgdm9pZCBwdF9zaGFkb3df bDRfd3JpdGUoY29uc3Qgc3RydWN0IGRvbWFpbiAqZCwgY29uc3Qgc3RydWN0IHBhZ2VfaW5mbyAq cGcsCiAgICAgb25fc2VsZWN0ZWRfY3B1cyhkLT5kb21haW5fZGlydHlfY3B1bWFzaywgX3B0X3No YWRvd19pcGksICZpbmZvLCAxKTsKIH0KIAordm9pZCBwdF9zaGFkb3dfbDRfaW52bHBnKGNvbnN0 IHN0cnVjdCBkb21haW4gKmQsIGNvbnN0IHN0cnVjdCBwYWdlX2luZm8gKnBnKQoreworICAgIHN0 cnVjdCBwdHNoX2lwaV9pbmZvIGluZm87CisKKyAgICBpZiAoICFwdF9uZWVkX3NoYWRvdyhkKSAp CisgICAgICAgIHJldHVybjsKKworICAgIGluZm8gPSAoc3RydWN0IHB0c2hfaXBpX2luZm8pewor ICAgICAgICAuZCA9IGQsCisgICAgICAgIC5wZyA9IHBnLAorICAgICAgICAub3AgPSBQVFNIX0lQ SV9JTlZMUEcsCisgICAgfTsKKworICAgIG9uX3NlbGVjdGVkX2NwdXMoZC0+ZG9tYWluX2RpcnR5 X2NwdW1hc2ssIF9wdF9zaGFkb3dfaXBpLCAmaW5mbywgMSk7Cit9CisKIC8qCiAgKiBMb2NhbCB2 YXJpYWJsZXM6CiAgKiBtb2RlOiBDCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L3B2 L3B0LXNoYWRvdy5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wdi9wdC1zaGFkb3cuaAppbmRleCA2 ZTcxZTk5Li5kNTU3NmY0IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L3B2L3B0LXNo YWRvdy5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcHYvcHQtc2hhZG93LmgKQEAgLTQ3LDYg KzQ3LDEzIEBAIHVuc2lnbmVkIGxvbmcgcHRfbWF5YmVfc2hhZG93KHN0cnVjdCB2Y3B1ICp2KTsK IHZvaWQgcHRfc2hhZG93X2w0X3dyaXRlKAogICAgIGNvbnN0IHN0cnVjdCBkb21haW4gKmQsIGNv bnN0IHN0cnVjdCBwYWdlX2luZm8gKnBnLCB1bnNpZ25lZCBpbnQgc2xvdCk7CiAKKy8qCisgKiBD YWxsZWQgd2hlbiBhbiBMNCBwYWdldGFibGUgaXMgZnJlZWQuICBUaGUgUFQgc2hhZG93IGxvZ2lj IGVuc3VyZXMgdGhhdCBpdAorICogaXMgcHVyZ2VkIGZyb20gYW55IGNhY2hlcy4KKyAqLwordm9p ZCBwdF9zaGFkb3dfbDRfaW52bHBnKAorICAgIGNvbnN0IHN0cnVjdCBkb21haW4gKmQsIGNvbnN0 IHN0cnVjdCBwYWdlX2luZm8gKnBnKTsKKwogI2Vsc2UgLyogIUNPTkZJR19QViAqLwogCiBzdGF0 aWMgaW5saW5lIGludCBwdF9zaGFkb3dfYWxsb2ModW5zaWduZWQgaW50IGNwdSkgeyByZXR1cm4g MDsgfQpAQCAtNTgsNiArNjUsOCBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgcHRfbWF5 YmVfc2hhZG93KHN0cnVjdCB2Y3B1ICp2KQogfQogc3RhdGljIGlubGluZSB2b2lkIHB0X3NoYWRv d19sNF93cml0ZSgKICAgICBjb25zdCBzdHJ1Y3QgZG9tYWluICpkLCBjb25zdCBzdHJ1Y3QgcGFn ZV9pbmZvICpwZywgdW5zaWduZWQgaW50IHNsb3QpIHsgfQorc3RhdGljIGlubGluZSB2b2lkIHB0 X3NoYWRvd19sNF9pbnZscGcoCisgICAgY29uc3Qgc3RydWN0IGRvbWFpbiAqZCwgY29uc3Qgc3Ry dWN0IHBhZ2VfaW5mbyAqcGcpIHsgfQogCiAjZW5kaWYgLyogQ09ORklHX1BWICovCiAKLS0gCjIu MS40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVu LWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6 Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==