From: Juergen Gross Subject: [PATCH v6.1 9/9] xen/x86: use PCID feature Date: Tue, 10 Apr 2018 14:33:58 +0200 Message-ID: <20180410123358.10596-2-jgross@suse.com> References: <20180410123358.10596-1-jgross@suse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1f5sTU-0007HV-FT for xen-devel@lists.xenproject.org; Tue, 10 Apr 2018 12:34:12 +0000 In-Reply-To: <20180410123358.10596-1-jgross@suse.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Juergen Gross , andrew.cooper3@citrix.com, jbeulich@suse.com List-Id: xen-devel@lists.xenproject.org QXZvaWQgZmx1c2hpbmcgdGhlIGNvbXBsZXRlIFRMQiB3aGVuIHN3aXRjaGluZyAlY3IzIGZvciBt aXRpZ2F0aW9uIG9mCk1lbHRkb3duIGJ5IHVzaW5nIHRoZSBQQ0lEIGZlYXR1cmUgaWYgYXZhaWxh YmxlLgoKV2UgYXJlIHVzaW5nIDQgUENJRCB2YWx1ZXMgZm9yIGEgNjQgYml0IHB2IGRvbWFpbiBz dWJqZWN0IHRvIFhQVEkgYW5kCjIgdmFsdWVzIGZvciB0aGUgbm9uLVhQVEkgY2FzZToKCi0gZ3Vl c3QgYWN0aXZlIGFuZCBpbiBrZXJuZWwgbW9kZQotIGd1ZXN0IGFjdGl2ZSBhbmQgaW4gdXNlciBt b2RlCi0gaHlwZXJ2aXNvciBhY3RpdmUgYW5kIGd1ZXN0IGluIHVzZXIgbW9kZSAoWFBUSSBvbmx5 KQotIGh5cGVydmlzb3IgYWN0aXZlIGFuZCBndWVzdCBpbiBrZXJuZWwgbW9kZSAoWFBUSSBvbmx5 KQoKV2UgdXNlIFBDSUQgb25seSBpZiBQQ0lEIF9hbmRfIElOVlBDSUQgYXJlIHN1cHBvcnRlZC4g V2l0aCBQQ0lEIGluIHVzZQp3ZSBkaXNhYmxlIGdsb2JhbCBwYWdlcyBpbiBjcjQuIEEgY29tbWFu ZCBsaW5lIHBhcmFtZXRlciBjb250cm9scyBpbgp3aGljaCBjYXNlcyBQQ0lEIGlzIGJlaW5nIHVz ZWQuCgpBcyB0aGUgbm9uLVhQVEkgY2FzZSBoYXMgc2hvd24gbm90IHRvIHBlcmZvcm0gYmV0dGVy IHdpdGggUENJRCBhdCBsZWFzdApvbiBzb21lIG1hY2hpbmVzIHRoZSBkZWZhdWx0IGlzIHRvIHVz ZSBQQ0lEIG9ubHkgZm9yIGRvbWFpbnMgc3ViamVjdCB0bwpYUFRJLgoKV2l0aCBQQ0lEIGVuYWJs ZWQgd2UgYWx3YXlzIGRpc2FibGUgZ2xvYmFsIHBhZ2VzLiBUaGlzIGF2b2lkcyBoYXZpbmcgdG8K ZWl0aGVyIGZsdXNoIHRoZSBjb21wbGV0ZSBUTEIgb3IgZG8gYSBjeWNsZSB0aHJvdWdoIGFsbCBQ Q0lEIHZhbHVlcwp3aGVuIGludmFsaWRhdGluZyBhIHNpbmdsZSBnbG9iYWwgcGFnZS4KClNpZ25l ZC1vZmYtYnk6IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT4KUmV2aWV3ZWQtYnk6IEph biBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KLS0tClY2LjE6Ci0gYWRkcmVzcyBzb21lIG1p bm9yIGNvbW1lbnRzIChKYW4gQmV1bGljaCkKClY2OgotIHNwbGl0IG9mZiBwdl9ndWVzdF9jcjRf dG9fcmVhbF9jcjQoKSBjb252ZXJzaW9uIHRvIGZ1bmN0aW9uIGludG8gbmV3CiAgcGF0Y2ggKEFu ZHJldyBDb29wZXIpCi0gY2hhbmdlZCBzb21lIGNvbW1lbnRzIChKYW4gQmV1bGljaCwgQW5kcmV3 IENvb3BlcikKClY1OgotIHVzZSBYODZfQ1IzX0FERFJfTUFTSyBpbnN0ZWFkIG9mIH5YODZfQ1Iz X1BDSURfTUFTSyAoSmFuIEJldWxpY2gpCi0gYWRkIHNvbWUgY29uc3QgcXVhbGlmaWVycyAoSmFu IEJldWxpY2gpCi0gbWFzayBYODZfQ1IzX0FERFJfTUFTSyB3aXRoIFBBRERSX01BU0sgKEphbiBC ZXVsaWNoKQotIGFkZCBmbHVzaGluZyB0aGUgVExCIGZyb20gb2xkIFBDSUQgcmVsYXRlZCBlbnRy aWVzIGluIHdyaXRlX2NyM19jcjQoKQogIChKYW4gQmV1bGljaCkKClY0OgotIGFkZCBjcjMgbWFz ayBmb3IgcGFnZSB0YWJsZSBhZGRyZXNzIGFuZCB1c2UgdGhhdCBpbiBkYmdfcHZfdmEybWZuKCkK ICAoSmFuIEJldWxpY2gpCi0gdXNlIGludnBjaWRfZmx1c2hfYWxsX25vbmdsb2JhbHMoKSBpbnN0 ZWFkIG9mIGludnBjaWRfZmx1c2hfYWxsKCkKICAoSmFuIEJldWxpY2gpCi0gdXNlIFBDSURzIDAv MSB3aGVuIHJ1bm5pbmcgaW4gWGVuIG9yIHdpdGhvdXQgWFBUSSwgMi8zIHdpdGggWFBUSSBpbgog IGd1ZXN0IChKYW4gQmV1bGljaCkKLSBBU1NFUlQgY3I0LnBnZSBhbmQgY3I0LnBjaWRlIGFyZSBu ZXZlciBhY3RpdmUgYXQgdGhlIHNhbWUgdGltZQogIChKYW4gQmV1bGljaCkKLSBtYWtlIHB2X2d1 ZXN0X2NyNF90b19yZWFsX2NyNCgpIGEgcmVhbCBmdW5jdGlvbgoKVjM6Ci0gc3VwcG9ydCBQQ0lE IGZvciBub24tWFBUSSBjYXNlLCB0b28KLSBhZGQgY29tbWFuZCBsaW5lIHBhcmFtZXRlciBmb3Ig Y29udHJvbGxpbmcgdXNhZ2Ugb2YgUENJRAotIGNoZWNrIFBDSUQgYWN0aXZlIGJ5IHVzaW5nIGNy NC5wY2lkZSAoSmFuIEJldWxpY2gpCi0tLQogZG9jcy9taXNjL3hlbi1jb21tYW5kLWxpbmUubWFy a2Rvd24gfCAxNCArKysrKysrCiB4ZW4vYXJjaC94ODYvZmx1c2h0bGIuYyAgICAgICAgICAgICB8 IDQ3ICsrKysrKysrKysrKysrKysrKysrLQogeGVuL2FyY2gveDg2L21tLmMgICAgICAgICAgICAg ICAgICAgfCAxNiArKysrKysrLQogeGVuL2FyY2gveDg2L3B2L2RvbTBfYnVpbGQuYyAgICAgICAg fCAgMSArCiB4ZW4vYXJjaC94ODYvcHYvZG9tYWluLmMgICAgICAgICAgICB8IDgxICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIHhlbi9pbmNsdWRlL2FzbS14ODYvZG9tYWlu LmggICAgICAgIHwgIDQgKy0KIHhlbi9pbmNsdWRlL2FzbS14ODYvcHJvY2Vzc29yLmggICAgIHwg IDMgKysKIHhlbi9pbmNsdWRlL2FzbS14ODYvcHYvZG9tYWluLmggICAgIHwgMzEgKysrKysrKysr KysrKysKIDggZmlsZXMgY2hhbmdlZCwgMTkxIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZG9jcy9taXNjL3hlbi1jb21tYW5kLWxpbmUubWFya2Rvd24gYi9kb2Nz L21pc2MveGVuLWNvbW1hbmQtbGluZS5tYXJrZG93bgppbmRleCA0NTFhNGZhNTY2Li5mODk1MGEz YmIyIDEwMDY0NAotLS0gYS9kb2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5tYXJrZG93bgorKysg Yi9kb2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5tYXJrZG93bgpAQCAtMTQ1MSw2ICsxNDUxLDIw IEBAIEFsbCBudW1iZXJzIHNwZWNpZmllZCBtdXN0IGJlIGhleGFkZWNpbWFsIG9uZXMuCiAKIFRo aXMgb3B0aW9uIGNhbiBiZSBzcGVjaWZpZWQgbW9yZSB0aGFuIG9uY2UgKHVwIHRvIDggdGltZXMg YXQgcHJlc2VudCkuCiAKKyMjIyBwY2lkICh4ODYpCis+IGA9IDxib29sZWFuPiB8IHhwdGk9PGJv b2w+YAorCis+IERlZmF1bHQ6IGB4cHRpYAorCis+IENhbiBiZSBtb2RpZmllZCBhdCBydW50aW1l IChjaGFuZ2UgdGFrZXMgZWZmZWN0IG9ubHkgZm9yIGRvbWFpbnMgY3JlYXRlZAorICBhZnRlcndh cmRzKQorCitJZiBhdmFpbGFibGUsIGNvbnRyb2wgdXNhZ2Ugb2YgdGhlIFBDSUQgZmVhdHVyZSBv ZiB0aGUgcHJvY2Vzc29yIGZvcgorNjQtYml0IHB2LWRvbWFpbnMuIFBDSUQgY2FuIGJlIHVzZWQg ZWl0aGVyIGZvciBubyBkb21haW4gYXQgYWxsIChgZmFsc2VgKSwKK2ZvciBhbGwgb2YgdGhlbSAo YHRydWVgKSwgb25seSBmb3IgdGhvc2Ugc3ViamVjdCB0byBYUFRJIChgeHB0aWApIG9yIGZvcgor dGhvc2Ugbm90IHN1YmplY3QgdG8gWFBUSSAoYG5vLXhwdGlgKS4gVGhlIGZlYXR1cmUgaXMgdXNl ZCBvbmx5IGluIGNhc2UKK0lOVlBDSUQgaXMgc3VwcG9ydGVkIGFuZCBub3QgZGlzYWJsZWQgdmlh IGBpbnZwY2lkPWZhbHNlYC4KKwogIyMjIHBsZVxfZ2FwCiA+IGA9IDxpbnRlZ2VyPmAKIApkaWZm IC0tZ2l0IGEveGVuL2FyY2gveDg2L2ZsdXNodGxiLmMgYi94ZW4vYXJjaC94ODYvZmx1c2h0bGIu YwppbmRleCBlMjhiZjA0YTM3Li44ZGQxODRkOGJlIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYv Zmx1c2h0bGIuYworKysgYi94ZW4vYXJjaC94ODYvZmx1c2h0bGIuYwpAQCAtMTIsNiArMTIsNyBA QAogI2luY2x1ZGUgPGFzbS9mbHVzaHRsYi5oPgogI2luY2x1ZGUgPGFzbS9pbnZwY2lkLmg+CiAj aW5jbHVkZSA8YXNtL3BhZ2UuaD4KKyNpbmNsdWRlIDxhc20vcHYvZG9tYWluLmg+CiAKIC8qIERl YnVnIGJ1aWxkczogV3JhcCBmcmVxdWVudGx5IHRvIHN0cmVzcy10ZXN0IHRoZSB3cmFwIGxvZ2lj LiAqLwogI2lmZGVmIE5ERUJVRwpAQCAtOTMsNiArOTQsNyBAQCB2b2lkIHN3aXRjaF9jcjNfY3I0 KHVuc2lnbmVkIGxvbmcgY3IzLCB1bnNpZ25lZCBsb25nIGNyNCkKIHsKICAgICB1bnNpZ25lZCBs b25nIGZsYWdzLCBvbGRfY3I0OwogICAgIHUzMiB0OworICAgIHVuc2lnbmVkIGxvbmcgb2xkX3Bj aWQgPSBjcjNfcGNpZChyZWFkX2NyMygpKTsKIAogICAgIC8qIFRoaXMgbm9uLXJlZW50cmFudCBm dW5jdGlvbiBpcyBzb21ldGltZXMgY2FsbGVkIGluIGludGVycnVwdCBjb250ZXh0LiAqLwogICAg IGxvY2FsX2lycV9zYXZlKGZsYWdzKTsKQEAgLTEwMiwxNCArMTA0LDM0IEBAIHZvaWQgc3dpdGNo X2NyM19jcjQodW5zaWduZWQgbG9uZyBjcjMsIHVuc2lnbmVkIGxvbmcgY3I0KQogICAgIG9sZF9j cjQgPSByZWFkX2NyNCgpOwogICAgIGlmICggb2xkX2NyNCAmIFg4Nl9DUjRfUEdFICkKICAgICB7 CisgICAgICAgIC8qCisgICAgICAgICAqIFg4Nl9DUjRfUEdFIHNldCBtZWFucyBQQ0lEIGlzIGlu YWN0aXZlLgorICAgICAgICAgKiBXZSBoYXZlIHRvIHB1cmdlIHRoZSBUTEIgdmlhIGZsaXBwaW5n IGNyNC5wZ2UuCisgICAgICAgICAqLwogICAgICAgICBvbGRfY3I0ID0gY3I0ICYgflg4Nl9DUjRf UEdFOwogICAgICAgICB3cml0ZV9jcjQob2xkX2NyNCk7CiAgICAgfQorICAgIGVsc2UgaWYgKCB1 c2VfaW52cGNpZCApCisgICAgICAgIC8qCisgICAgICAgICAqIEZsdXNoaW5nIHRoZSBUTEIgdmlh IElOVlBDSUQgaXMgbmVjZXNzYXJ5IG9ubHkgaW4gY2FzZSBQQ0lEcyBhcmUKKyAgICAgICAgICog aW4gdXNlLCB3aGljaCBpcyB0cnVlIG9ubHkgd2l0aCBJTlZQQ0lEIGJlaW5nIGF2YWlsYWJsZS4K KyAgICAgICAgICogV2l0aG91dCBQQ0lEIHVzYWdlIHRoZSBmb2xsb3dpbmcgd3JpdGVfY3IzKCkg d2lsbCBwdXJnZSB0aGUgVExCCisgICAgICAgICAqICh3ZSBhcmUgaW4gdGhlIGNyNC5wZ2Ugb2Zm IHBhdGgpIG9mIGFsbCBlbnRyaWVzLgorICAgICAgICAgKiBVc2luZyBpbnZwY2lkX2ZsdXNoX2Fs bF9ub25nbG9iYWxzKCkgc2VlbXMgdG8gYmUgZmFzdGVyIHRoYW4KKyAgICAgICAgICogaW52cGNp ZF9mbHVzaF9hbGwoKSwgc28gdXNlIHRoYXQuCisgICAgICAgICAqLworICAgICAgICBpbnZwY2lk X2ZsdXNoX2FsbF9ub25nbG9iYWxzKCk7CiAKICAgICB3cml0ZV9jcjMoY3IzKTsKIAogICAgIGlm ICggb2xkX2NyNCAhPSBjcjQgKQogICAgICAgICB3cml0ZV9jcjQoY3I0KTsKKyAgICBlbHNlIGlm ICggb2xkX3BjaWQgIT0gY3IzX3BjaWQoY3IzKSApCisgICAgICAgIC8qCisgICAgICAgICAqIE1h a2Ugc3VyZSBubyBUTEIgZW50cmllcyByZWxhdGVkIHRvIHRoZSBvbGQgUENJRCBjcmVhdGVkIGJl dHdlZW4KKyAgICAgICAgICogZmx1c2hpbmcgdGhlIFRMQiBhbmQgd3JpdGluZyB0aGUgbmV3ICVj cjMgdmFsdWUgcmVtYWluIGluIHRoZSBUTEIuCisgICAgICAgICAqLworICAgICAgICBpbnZwY2lk X2ZsdXNoX3NpbmdsZV9jb250ZXh0KG9sZF9wY2lkKTsKIAogICAgIHBvc3RfZmx1c2godCk7CiAK QEAgLTEzOSw4ICsxNjEsMjkgQEAgdW5zaWduZWQgaW50IGZsdXNoX2FyZWFfbG9jYWwoY29uc3Qg dm9pZCAqdmEsIHVuc2lnbmVkIGludCBmbGFncykKICAgICAgICAgICAgICAqIGFyZSB2YXJpb3Vz IGVycmF0YSBzdXJyb3VuZGluZyBJTlZMUEcgdXNhZ2Ugb24gc3VwZXJwYWdlcywgYW5kCiAgICAg ICAgICAgICAgKiBhIGZ1bGwgZmx1c2ggaXMgaW4gYW55IGNhc2Ugbm90ICp0aGF0KiBleHBlbnNp dmUuCiAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGFzbSB2b2xhdGlsZSAoICJpbnZscGcg JTAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA6IDogIm0iICgqKGNvbnN0IGNoYXIgKiko dmEpKSA6ICJtZW1vcnkiICk7CisgICAgICAgICAgICBpZiAoIHJlYWRfY3I0KCkgJiBYODZfQ1I0 X1BDSURFICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGFk ZHIgPSAodW5zaWduZWQgbG9uZyl2YTsKKworICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAg ICAgICAgICogRmx1c2ggdGhlIGFkZHJlc3NlcyBmb3IgYWxsIHBvdGVudGlhbCBhZGRyZXNzIHNw YWNlcy4KKyAgICAgICAgICAgICAgICAgKiBXZSBjYW4ndCBjaGVjayB0aGUgY3VycmVudCBkb21h aW4gZm9yIGJlaW5nIHN1YmplY3QgdG8KKyAgICAgICAgICAgICAgICAgKiBYUFRJIGFzIGN1cnJl bnQgbWlnaHQgYmUgdGhlIGlkbGUgdmNwdSB3aGlsZSB3ZSBzdGlsbCBoYXZlCisgICAgICAgICAg ICAgICAgICogc29tZSBYUFRJIGRvbWFpbiBUTEIgZW50cmllcy4KKyAgICAgICAgICAgICAgICAg KiBVc2luZyBpbnZwY2lkIGlzIG9rYXkgaGVyZSwgYXMgd2l0aCBQQ0lEIGVuYWJsZWQgd2UgYWx3 YXlzCisgICAgICAgICAgICAgICAgICogaGF2ZSBnbG9iYWwgcGFnZXMgZGlzYWJsZWQuCisgICAg ICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgaW52cGNpZF9mbHVzaF9vbmUoUENJRF9Q Vl9QUklWLCBhZGRyKTsKKyAgICAgICAgICAgICAgICBpbnZwY2lkX2ZsdXNoX29uZShQQ0lEX1BW X1VTRVIsIGFkZHIpOworICAgICAgICAgICAgICAgIGlmICggIWNwdV9oYXNfbm9feHB0aSApCisg ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBpbnZwY2lkX2ZsdXNoX29uZShQ Q0lEX1BWX1BSSVYgfCBQQ0lEX1BWX1hQVEksIGFkZHIpOworICAgICAgICAgICAgICAgICAgICBp bnZwY2lkX2ZsdXNoX29uZShQQ0lEX1BWX1VTRVIgfCBQQ0lEX1BWX1hQVEksIGFkZHIpOworICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg ICAgICAgICBhc20gdm9sYXRpbGUgKCAiaW52bHBnICUwIgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDogOiAibSIgKCooY29uc3QgY2hhciAqKSh2YSkpIDogIm1lbW9yeSIgKTsKICAg ICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgICAgICBkb190bGJfZmx1c2goKTsKZGlmZiAt LWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS5jIGIveGVuL2FyY2gveDg2L21tLmMKaW5kZXggNmFhMGMz NGJhZS4uZDk4MWNlMGIxOSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tLmMKKysrIGIveGVu L2FyY2gveDg2L21tLmMKQEAgLTEyNiw2ICsxMjYsNyBAQAogI2luY2x1ZGUgPGFzbS9odm0vaW9y ZXEuaD4KIAogI2luY2x1ZGUgPGFzbS9odm0vZ3JhbnRfdGFibGUuaD4KKyNpbmNsdWRlIDxhc20v cHYvZG9tYWluLmg+CiAjaW5jbHVkZSA8YXNtL3B2L2dyYW50X3RhYmxlLmg+CiAjaW5jbHVkZSA8 YXNtL3B2L21tLmg+CiAKQEAgLTQ5Nyw3ICs0OTgsMTEgQEAgdm9pZCBmcmVlX3NoYXJlZF9kb21o ZWFwX3BhZ2Uoc3RydWN0IHBhZ2VfaW5mbyAqcGFnZSkKIAogdm9pZCBtYWtlX2NyMyhzdHJ1Y3Qg dmNwdSAqdiwgbWZuX3QgbWZuKQogeworICAgIHN0cnVjdCBkb21haW4gKmQgPSB2LT5kb21haW47 CisKICAgICB2LT5hcmNoLmNyMyA9IG1mbl94KG1mbikgPDwgUEFHRV9TSElGVDsKKyAgICBpZiAo IGlzX3B2X2RvbWFpbihkKSAmJiBkLT5hcmNoLnB2X2RvbWFpbi5wY2lkICkKKyAgICAgICAgdi0+ YXJjaC5jcjMgfD0gZ2V0X3BjaWRfYml0cyh2LCBmYWxzZSk7CiB9CiAKIHVuc2lnbmVkIGxvbmcg cHZfZ3Vlc3RfY3I0X3RvX3JlYWxfY3I0KGNvbnN0IHN0cnVjdCB2Y3B1ICp2KQpAQCAtNTA4LDcg KzUxMywxMiBAQCB1bnNpZ25lZCBsb25nIHB2X2d1ZXN0X2NyNF90b19yZWFsX2NyNChjb25zdCBz dHJ1Y3QgdmNwdSAqdikKICAgICBjcjQgPSB2LT5hcmNoLnB2X3ZjcHUuY3RybHJlZ1s0XSAmIH5Y ODZfQ1I0X0RFOwogICAgIGNyNCB8PSBtbXVfY3I0X2ZlYXR1cmVzICYgKFg4Nl9DUjRfUFNFIHwg WDg2X0NSNF9TTUVQIHwgWDg2X0NSNF9TTUFQIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBYODZfQ1I0X09TWFNBVkUgfCBYODZfQ1I0X0ZTR1NCQVNFKTsKLSAgICBjcjQgfD0gZC0+ YXJjaC5wdl9kb21haW4ueHB0aSAgPyAwIDogWDg2X0NSNF9QR0U7CisKKyAgICBpZiAoIGQtPmFy Y2gucHZfZG9tYWluLnBjaWQgKQorICAgICAgICBjcjQgfD0gWDg2X0NSNF9QQ0lERTsKKyAgICBl bHNlIGlmICggIWQtPmFyY2gucHZfZG9tYWluLnhwdGkgKQorICAgICAgICBjcjQgfD0gWDg2X0NS NF9QR0U7CisKICAgICBjcjQgfD0gZC0+YXJjaC52dHNjID8gWDg2X0NSNF9UU0QgOiAwOwogCiAg ICAgcmV0dXJuIGNyNDsKQEAgLTUyMSwxMiArNTMxLDE0IEBAIHZvaWQgd3JpdGVfcHRiYXNlKHN0 cnVjdCB2Y3B1ICp2KQogCiAgICAgbmV3X2NyNCA9IChpc19wdl92Y3B1KHYpICYmICFpc19pZGxl X3ZjcHUodikpCiAgICAgICAgICAgICAgID8gcHZfZ3Vlc3RfY3I0X3RvX3JlYWxfY3I0KHYpCi0g ICAgICAgICAgICAgIDogKChyZWFkX2NyNCgpICYgflg4Nl9DUjRfVFNEKSB8IFg4Nl9DUjRfUEdF KTsKKyAgICAgICAgICAgICAgOiAoKHJlYWRfY3I0KCkgJiB+KFg4Nl9DUjRfUENJREUgfCBYODZf Q1I0X1RTRCkpIHwgWDg2X0NSNF9QR0UpOwogCiAgICAgaWYgKCBpc19wdl92Y3B1KHYpICYmIHYt PmRvbWFpbi0+YXJjaC5wdl9kb21haW4ueHB0aSApCiAgICAgewogICAgICAgICBjcHVfaW5mby0+ cm9vdF9wZ3RfY2hhbmdlZCA9IHRydWU7CiAgICAgICAgIGNwdV9pbmZvLT5wdl9jcjMgPSBfX3Bh KHRoaXNfY3B1KHJvb3RfcGd0KSk7CisgICAgICAgIGlmICggbmV3X2NyNCAmIFg4Nl9DUjRfUENJ REUgKQorICAgICAgICAgICAgY3B1X2luZm8tPnB2X2NyMyB8PSBnZXRfcGNpZF9iaXRzKHYsIHRy dWUpOwogICAgICAgICBzd2l0Y2hfY3IzX2NyNCh2LT5hcmNoLmNyMywgbmV3X2NyNCk7CiAgICAg fQogICAgIGVsc2UKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9wdi9kb20wX2J1aWxkLmMgYi94 ZW4vYXJjaC94ODYvcHYvZG9tMF9idWlsZC5jCmluZGV4IGQxNDgzOTU5MTkuLjU2OTExZmMwNmQg MTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9wdi9kb20wX2J1aWxkLmMKKysrIGIveGVuL2FyY2gv eDg2L3B2L2RvbTBfYnVpbGQuYwpAQCAtMzg4LDYgKzM4OCw3IEBAIGludCBfX2luaXQgZG9tMF9j b25zdHJ1Y3RfcHYoc3RydWN0IGRvbWFpbiAqZCwKICAgICB7CiAgICAgICAgIGQtPmFyY2guaXNf MzJiaXRfcHYgPSBkLT5hcmNoLmhhc18zMmJpdF9zaGluZm8gPSAxOwogICAgICAgICBkLT5hcmNo LnB2X2RvbWFpbi54cHRpID0gZmFsc2U7CisgICAgICAgIGQtPmFyY2gucHZfZG9tYWluLnBjaWQg PSBmYWxzZTsKICAgICAgICAgdi0+dmNwdV9pbmZvID0gKHZvaWQgKikmZC0+c2hhcmVkX2luZm8t PmNvbXBhdC52Y3B1X2luZm9bMF07CiAgICAgICAgIGlmICggc2V0dXBfY29tcGF0X2FyZ194bGF0 KHYpICE9IDAgKQogICAgICAgICAgICAgQlVHKCk7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYv cHYvZG9tYWluLmMgYi94ZW4vYXJjaC94ODYvcHYvZG9tYWluLmMKaW5kZXggY2UxYTFhOWQzNS4u YTRmMGJkMjM5ZCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3B2L2RvbWFpbi5jCisrKyBiL3hl bi9hcmNoL3g4Ni9wdi9kb21haW4uYwpAQCAtOSw5ICs5LDU0IEBACiAjaW5jbHVkZSA8eGVuL2xp Yi5oPgogI2luY2x1ZGUgPHhlbi9zY2hlZC5oPgogCisjaW5jbHVkZSA8YXNtL2NwdWZlYXR1cmUu aD4KKyNpbmNsdWRlIDxhc20vaW52cGNpZC5oPgogI2luY2x1ZGUgPGFzbS9zcGVjX2N0cmwuaD4K ICNpbmNsdWRlIDxhc20vcHYvZG9tYWluLmg+CiAKK3N0YXRpYyBfX3JlYWRfbW9zdGx5IGVudW0g eworICAgIFBDSURfT0ZGLAorICAgIFBDSURfQUxMLAorICAgIFBDSURfWFBUSSwKKyAgICBQQ0lE X05PWFBUSQorfSBvcHRfcGNpZCA9IFBDSURfWFBUSTsKKworc3RhdGljIF9faW5pdCBpbnQgcGFy c2VfcGNpZChjb25zdCBjaGFyICpzKQoreworICAgIGludCByYyA9IDA7CisKKyAgICBzd2l0Y2gg KCBwYXJzZV9ib29sKHMsIE5VTEwpICkKKyAgICB7CisgICAgY2FzZSAwOgorICAgICAgICBvcHRf cGNpZCA9IFBDSURfT0ZGOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgMToKKyAgICAgICAg b3B0X3BjaWQgPSBQQ0lEX0FMTDsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAg ICAgICBzd2l0Y2ggKCBwYXJzZV9ib29sZWFuKCJ4cHRpIiwgcywgTlVMTCkgKQorICAgICAgICB7 CisgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgIG9wdF9wY2lkID0gUENJRF9OT1hQVEk7Cisg ICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICBvcHRfcGNp ZCA9IFBDSURfWFBUSTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6Cisg ICAgICAgICAgICByYyA9IC1FSU5WQUw7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor ICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gcmM7Cit9CitjdXN0b21fcnVudGlt ZV9wYXJhbSgicGNpZCIsIHBhcnNlX3BjaWQpOworCiBzdGF0aWMgdm9pZCBub3JldHVybiBjb250 aW51ZV9ub25pZGxlX2RvbWFpbihzdHJ1Y3QgdmNwdSAqdikKIHsKICAgICBjaGVja193YWtldXBf ZnJvbV93YWl0KCk7CkBAIC03Nyw2ICsxMjIsNyBAQCBpbnQgc3dpdGNoX2NvbXBhdChzdHJ1Y3Qg ZG9tYWluICpkKQogICAgIGQtPmFyY2gueDg3X2ZpcF93aWR0aCA9IDQ7CiAKICAgICBkLT5hcmNo LnB2X2RvbWFpbi54cHRpID0gZmFsc2U7CisgICAgZC0+YXJjaC5wdl9kb21haW4ucGNpZCA9IGZh bHNlOwogCiAgICAgcmV0dXJuIDA7CiAKQEAgLTIxMSw2ICsyNTcsMjkgQEAgaW50IHB2X2RvbWFp bl9pbml0aWFsaXNlKHN0cnVjdCBkb21haW4gKmQpCiAgICAgZC0+YXJjaC5wdl9kb21haW4ueHB0 aSA9IG9wdF94cHRpICYgKGlzX2hhcmR3YXJlX2RvbWFpbihkKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA/IE9QVF9YUFRJX0RPTTAgOiBPUFRfWFBUSV9ET01VKTsK IAorICAgIGlmICggIWlzX3B2XzMyYml0X2RvbWFpbihkKSAmJiB1c2VfaW52cGNpZCAmJiBjcHVf aGFzX3BjaWQgKQorICAgICAgICBzd2l0Y2ggKCBvcHRfcGNpZCApCisgICAgICAgIHsKKyAgICAg ICAgY2FzZSBQQ0lEX09GRjoKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUENJ RF9BTEw6CisgICAgICAgICAgICBkLT5hcmNoLnB2X2RvbWFpbi5wY2lkID0gdHJ1ZTsKKyAgICAg ICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUENJRF9YUFRJOgorICAgICAgICAgICAgZC0+ YXJjaC5wdl9kb21haW4ucGNpZCA9IGQtPmFyY2gucHZfZG9tYWluLnhwdGk7CisgICAgICAgICAg ICBicmVhazsKKworICAgICAgICBjYXNlIFBDSURfTk9YUFRJOgorICAgICAgICAgICAgZC0+YXJj aC5wdl9kb21haW4ucGNpZCA9ICFkLT5hcmNoLnB2X2RvbWFpbi54cHRpOworICAgICAgICAgICAg YnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9VTlJFQUNIQUJM RSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgIHJldHVybiAwOwogCiAg IGZhaWw6CkBAIC0yMjEsOSArMjkwLDE5IEBAIGludCBwdl9kb21haW5faW5pdGlhbGlzZShzdHJ1 Y3QgZG9tYWluICpkKQogCiBzdGF0aWMgdm9pZCBfdG9nZ2xlX2d1ZXN0X3B0KHN0cnVjdCB2Y3B1 ICp2KQogeworICAgIGNvbnN0IHN0cnVjdCBkb21haW4gKmQgPSB2LT5kb21haW47CisKICAgICB2 LT5hcmNoLmZsYWdzIF49IFRGX2tlcm5lbF9tb2RlOwogICAgIHVwZGF0ZV9jcjModik7Ci0gICAg Z2V0X2NwdV9pbmZvKCktPnJvb3RfcGd0X2NoYW5nZWQgPSB0cnVlOworICAgIGlmICggZC0+YXJj aC5wdl9kb21haW4ueHB0aSApCisgICAgeworICAgICAgICBzdHJ1Y3QgY3B1X2luZm8gKmNwdV9p bmZvID0gZ2V0X2NwdV9pbmZvKCk7CisKKyAgICAgICAgY3B1X2luZm8tPnJvb3RfcGd0X2NoYW5n ZWQgPSB0cnVlOworICAgICAgICBjcHVfaW5mby0+cHZfY3IzID0gX19wYSh0aGlzX2NwdShyb290 X3BndCkpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChkLT5hcmNoLnB2X2RvbWFpbi5w Y2lkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBnZXRfcGNpZF9iaXRzKHYsIHRydWUp IDogMCk7CisgICAgfQogCiAgICAgLyogRG9uJ3QgZmx1c2ggdXNlciBnbG9iYWwgbWFwcGluZ3Mg ZnJvbSB0aGUgVExCLiBEb24ndCB0aWNrIFRMQiBjbG9jay4gKi8KICAgICB3cml0ZV9jcjModi0+ YXJjaC5jcjMpOwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9kb21haW4uaCBiL3hl bi9pbmNsdWRlL2FzbS14ODYvZG9tYWluLmgKaW5kZXggOTYyNzA1OGNkMC4uOGI2NjA5NmU3ZiAx MDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9kb21haW4uaAorKysgYi94ZW4vaW5jbHVk ZS9hc20teDg2L2RvbWFpbi5oCkBAIC0yNTUsNiArMjU1LDggQEAgc3RydWN0IHB2X2RvbWFpbgog CiAgICAgLyogWFBUSSBhY3RpdmU/ICovCiAgICAgYm9vbCB4cHRpOworICAgIC8qIFVzZSBQQ0lE IGZlYXR1cmU/ICovCisgICAgYm9vbCBwY2lkOwogCiAgICAgLyogbWFwX2RvbWFpbl9wYWdlKCkg bWFwcGluZyBjYWNoZS4gKi8KICAgICBzdHJ1Y3QgbWFwY2FjaGVfZG9tYWluIG1hcGNhY2hlOwpA QCAtNjIwLDcgKzYyMiw3IEBAIHVuc2lnbmVkIGxvbmcgcHZfZ3Vlc3RfY3I0X3RvX3JlYWxfY3I0 KGNvbnN0IHN0cnVjdCB2Y3B1ICp2KTsKICNkZWZpbmUgcmVhbF9jcjRfdG9fcHZfZ3Vlc3RfY3I0 KGMpICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAoKGMpICYgfihYODZfQ1I0X1BHRSB8 IFg4Nl9DUjRfUFNFIHwgWDg2X0NSNF9UU0QgfCAgICAgIFwKICAgICAgICAgICAgICBYODZfQ1I0 X09TWFNBVkUgfCBYODZfQ1I0X1NNRVAgfCAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICBY ODZfQ1I0X0ZTR1NCQVNFIHwgWDg2X0NSNF9TTUFQKSkKKyAgICAgICAgICAgICBYODZfQ1I0X0ZT R1NCQVNFIHwgWDg2X0NSNF9TTUFQIHwgWDg2X0NSNF9QQ0lERSkpCiAKICNkZWZpbmUgZG9tYWlu X21heF92Y3B1cyhkKSAoaXNfaHZtX2RvbWFpbihkKSA/IEhWTV9NQVhfVkNQVVMgOiBNQVhfVklS VF9DUFVTKQogCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L3Byb2Nlc3Nvci5oIGIv eGVuL2luY2x1ZGUvYXNtLXg4Ni9wcm9jZXNzb3IuaAppbmRleCAzNjYyODQ1OWRjLi5jNGFhMzg1 YTZmIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L3Byb2Nlc3Nvci5oCisrKyBiL3hl bi9pbmNsdWRlL2FzbS14ODYvcHJvY2Vzc29yLmgKQEAgLTMwNSw2ICszMDUsOSBAQCBzdGF0aWMg aW5saW5lIHVuc2lnbmVkIGxvbmcgcmVhZF9jcjQodm9pZCkKIAogc3RhdGljIGlubGluZSB2b2lk IHdyaXRlX2NyNCh1bnNpZ25lZCBsb25nIHZhbCkKIHsKKyAgICAvKiBObyBnbG9iYWwgcGFnZXMg aW4gY2FzZSBvZiBQQ0lEcyBlbmFibGVkISAqLworICAgIEFTU0VSVCghKHZhbCAmIFg4Nl9DUjRf UEdFKSB8fCAhKHZhbCAmIFg4Nl9DUjRfUENJREUpKTsKKwogICAgIGdldF9jcHVfaW5mbygpLT5j cjQgPSB2YWw7CiAgICAgYXNtIHZvbGF0aWxlICggIm1vdiAlMCwlJWNyNCIgOiA6ICJyIiAodmFs KSApOwogfQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wdi9kb21haW4uaCBiL3hl bi9pbmNsdWRlL2FzbS14ODYvcHYvZG9tYWluLmgKaW5kZXggNWUzNDE3NjkzOS4uNGZlYTc2NDQ0 YSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wdi9kb21haW4uaAorKysgYi94ZW4v aW5jbHVkZS9hc20teDg2L3B2L2RvbWFpbi5oCkBAIC0yMSw2ICsyMSwzNyBAQAogI2lmbmRlZiBf X1g4Nl9QVl9ET01BSU5fSF9fCiAjZGVmaW5lIF9fWDg2X1BWX0RPTUFJTl9IX18KIAorLyoKKyAq IFBDSUQgdmFsdWVzIGZvciB0aGUgYWRkcmVzcyBzcGFjZXMgb2YgNjQtYml0IHB2IGRvbWFpbnM6 CisgKgorICogV2UgYXJlIHVzaW5nIDQgUENJRCB2YWx1ZXMgZm9yIGEgNjQgYml0IHB2IGRvbWFp biBzdWJqZWN0IHRvIFhQVEk6CisgKiAtIGh5cGVydmlzb3IgYWN0aXZlIGFuZCBndWVzdCBpbiBr ZXJuZWwgbW9kZSAgIFBDSUQgMAorICogLSBoeXBlcnZpc29yIGFjdGl2ZSBhbmQgZ3Vlc3QgaW4g dXNlciBtb2RlICAgICBQQ0lEIDEKKyAqIC0gZ3Vlc3QgYWN0aXZlIGFuZCBpbiBrZXJuZWwgbW9k ZSAgICAgICAgICAgICAgUENJRCAyCisgKiAtIGd1ZXN0IGFjdGl2ZSBhbmQgaW4gdXNlciBtb2Rl ICAgICAgICAgICAgICAgIFBDSUQgMworICoKKyAqIFdpdGhvdXQgWFBUSSBvbmx5IDIgdmFsdWVz IGFyZSB1c2VkOgorICogLSBndWVzdCBpbiBrZXJuZWwgbW9kZSAgICAgICAgICAgICAgICAgICAg ICAgICBQQ0lEIDAKKyAqIC0gZ3Vlc3QgaW4gdXNlciBtb2RlICAgICAgICAgICAgICAgICAgICAg ICAgICAgUENJRCAxCisgKi8KKworI2RlZmluZSBQQ0lEX1BWX1BSSVYgICAgICAweDAwMDAgICAg LyogVXNlZCBmb3Igb3RoZXIgZG9tYWlucywgdG9vLiAqLworI2RlZmluZSBQQ0lEX1BWX1VTRVIg ICAgICAweDAwMDEKKyNkZWZpbmUgUENJRF9QVl9YUFRJICAgICAgMHgwMDAyICAgIC8qIFRvIGJl IE9SZWQgdG8gYWJvdmUgdmFsdWVzLiAqLworCisvKgorICogUmV0dXJuIGFkZGl0aW9uYWwgUENJ RCBzcGVjaWZpYyBjcjMgYml0cy4KKyAqCisgKiBOb3RlIHRoYXQgWDg2X0NSM19OT0ZMVVNIIHdp bGwgbm90IGJlIHJlYWRhYmxlIGluIGNyMy4gQW55b25lIGNvbnN1bWluZworICogdi0+YXJjaC5j cjMgc2hvdWxkIG1hc2sgYXdheSBYODZfQ1IzX05PRkxVU0ggYW5kIFg4Nl9DUjNfUENJRE1BU0sg aW4gY2FzZQorICogdGhlIHZhbHVlIGlzIHVzZWQgdG8gYWRkcmVzcyB0aGUgcm9vdCBwYWdlIHRh YmxlLgorICovCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgZ2V0X3BjaWRfYml0cyhjb25z dCBzdHJ1Y3QgdmNwdSAqdiwgYm9vbCBpc194cHRpKQoreworICAgIHJldHVybiBYODZfQ1IzX05P RkxVU0ggfCAoaXNfeHB0aSA/IFBDSURfUFZfWFBUSSA6IDApIHwKKyAgICAgICAgICAgKCh2LT5h cmNoLmZsYWdzICYgVEZfa2VybmVsX21vZGUpID8gUENJRF9QVl9QUklWIDogUENJRF9QVl9VU0VS KTsKK30KKwogI2lmZGVmIENPTkZJR19QVgogCiB2b2lkIHB2X3ZjcHVfZGVzdHJveShzdHJ1Y3Qg dmNwdSAqdik7Ci0tIAoyLjEzLjYKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5w cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8v eGVuLWRldmVs