From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: [PATCH v6 9/9] xen/x86: use PCID feature Date: Tue, 10 Apr 2018 09:58:43 +0200 Message-ID: <20180410075843.6822-10-jgross@suse.com> References: <20180410075843.6822-1-jgross@suse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1f5oB3-0005cx-Jb for xen-devel@lists.xenproject.org; Tue, 10 Apr 2018 07:58:53 +0000 In-Reply-To: <20180410075843.6822-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 ZC1vZmYtYnk6IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT4KLS0tClY2OgotIHNwbGl0 IG9mZiBwdl9ndWVzdF9jcjRfdG9fcmVhbF9jcjQoKSBjb252ZXJzaW9uIHRvIGZ1bmN0aW9uIGlu dG8gbmV3CiAgcGF0Y2ggKEFuZHJldyBDb29wZXIpCi0gY2hhbmdlZCBzb21lIGNvbW1lbnRzIChK YW4gQmV1bGljaCwgQW5kcmV3IENvb3BlcikKClY1OgotIHVzZSBYODZfQ1IzX0FERFJfTUFTSyBp bnN0ZWFkIG9mIH5YODZfQ1IzX1BDSURfTUFTSyAoSmFuIEJldWxpY2gpCi0gYWRkIHNvbWUgY29u c3QgcXVhbGlmaWVycyAoSmFuIEJldWxpY2gpCi0gbWFzayBYODZfQ1IzX0FERFJfTUFTSyB3aXRo IFBBRERSX01BU0sgKEphbiBCZXVsaWNoKQotIGFkZCBmbHVzaGluZyB0aGUgVExCIGZyb20gb2xk IFBDSUQgcmVsYXRlZCBlbnRyaWVzIGluIHdyaXRlX2NyM19jcjQoKQogIChKYW4gQmV1bGljaCkK ClY0OgotIGFkZCBjcjMgbWFzayBmb3IgcGFnZSB0YWJsZSBhZGRyZXNzIGFuZCB1c2UgdGhhdCBp biBkYmdfcHZfdmEybWZuKCkKICAoSmFuIEJldWxpY2gpCi0gdXNlIGludnBjaWRfZmx1c2hfYWxs X25vbmdsb2JhbHMoKSBpbnN0ZWFkIG9mIGludnBjaWRfZmx1c2hfYWxsKCkKICAoSmFuIEJldWxp Y2gpCi0gdXNlIFBDSURzIDAvMSB3aGVuIHJ1bm5pbmcgaW4gWGVuIG9yIHdpdGhvdXQgWFBUSSwg Mi8zIHdpdGggWFBUSSBpbgogIGd1ZXN0IChKYW4gQmV1bGljaCkKLSBBU1NFUlQgY3I0LnBnZSBh bmQgY3I0LnBjaWRlIGFyZSBuZXZlciBhY3RpdmUgYXQgdGhlIHNhbWUgdGltZQogIChKYW4gQmV1 bGljaCkKLSBtYWtlIHB2X2d1ZXN0X2NyNF90b19yZWFsX2NyNCgpIGEgcmVhbCBmdW5jdGlvbgoK VjM6Ci0gc3VwcG9ydCBQQ0lEIGZvciBub24tWFBUSSBjYXNlLCB0b28KLSBhZGQgY29tbWFuZCBs aW5lIHBhcmFtZXRlciBmb3IgY29udHJvbGxpbmcgdXNhZ2Ugb2YgUENJRAotIGNoZWNrIFBDSUQg YWN0aXZlIGJ5IHVzaW5nIGNyNC5wY2lkZSAoSmFuIEJldWxpY2gpCi0tLQogZG9jcy9taXNjL3hl bi1jb21tYW5kLWxpbmUubWFya2Rvd24gfCAxNCArKysrKysrCiB4ZW4vYXJjaC94ODYvZmx1c2h0 bGIuYyAgICAgICAgICAgICB8IDUxICsrKysrKysrKysrKysrKysrKysrKysrKy0tCiB4ZW4vYXJj aC94ODYvbW0uYyAgICAgICAgICAgICAgICAgICB8IDEyICsrKysrLQogeGVuL2FyY2gveDg2L3B2 L2RvbTBfYnVpbGQuYyAgICAgICAgfCAgMSArCiB4ZW4vYXJjaC94ODYvcHYvZG9tYWluLmMgICAg ICAgICAgICB8IDczICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIHhlbi9p bmNsdWRlL2FzbS14ODYvZG9tYWluLmggICAgICAgIHwgIDQgKy0KIHhlbi9pbmNsdWRlL2FzbS14 ODYvcHJvY2Vzc29yLmggICAgIHwgIDMgKysKIHhlbi9pbmNsdWRlL2FzbS14ODYvcHYvZG9tYWlu LmggICAgIHwgMzEgKysrKysrKysrKysrKysrKwogOCBmaWxlcyBjaGFuZ2VkLCAxODEgaW5zZXJ0 aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2NzL21pc2MveGVuLWNvbW1h bmQtbGluZS5tYXJrZG93biBiL2RvY3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLm1hcmtkb3duCmlu ZGV4IDhkNDhjZTFmNmYuLjM2YzgxMWU0ODYgMTAwNjQ0Ci0tLSBhL2RvY3MvbWlzYy94ZW4tY29t bWFuZC1saW5lLm1hcmtkb3duCisrKyBiL2RvY3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLm1hcmtk b3duCkBAIC0xNDUxLDYgKzE0NTEsMjAgQEAgQWxsIG51bWJlcnMgc3BlY2lmaWVkIG11c3QgYmUg aGV4YWRlY2ltYWwgb25lcy4KIAogVGhpcyBvcHRpb24gY2FuIGJlIHNwZWNpZmllZCBtb3JlIHRo YW4gb25jZSAodXAgdG8gOCB0aW1lcyBhdCBwcmVzZW50KS4KIAorIyMjIHBjaWQgKHg4NikKKz4g YD0gPGJvb2xlYW4+IHwgeHB0aT08Ym9vbD5gCisKKz4gRGVmYXVsdDogYHhwdGlgCisKKz4gQ2Fu IGJlIG1vZGlmaWVkIGF0IHJ1bnRpbWUgKGNoYW5nZSB0YWtlcyBlZmZlY3Qgb25seSBmb3IgZG9t YWlucyBjcmVhdGVkCisgIGFmdGVyd2FyZHMpCisKK0lmIGF2YWlsYWJsZSwgY29udHJvbCB1c2Fn ZSBvZiB0aGUgUENJRCBmZWF0dXJlIG9mIHRoZSBwcm9jZXNzb3IgZm9yCis2NC1iaXQgcHYtZG9t YWlucy4gUENJRCBjYW4gYmUgdXNlZCBlaXRoZXIgZm9yIG5vIGRvbWFpbiBhdCBhbGwgKGBmYWxz ZWApLAorZm9yIGFsbCBvZiB0aGVtIChgdHJ1ZWApLCBvbmx5IGZvciB0aG9zZSBzdWJqZWN0IHRv IFhQVEkgKGB4cHRpYCkgb3IgZm9yCit0aG9zZSBub3Qgc3ViamVjdCB0byBYUFRJIChgbm8teHB0 aWApLiBUaGUgZmVhdHVyZSBpcyB1c2VkIG9ubHkgaW4gY2FzZQorSU5WUENJRCBpcyBzdXBwb3J0 ZWQgYW5kIG5vdCBkaXNhYmxlZCB2aWEgYGludnBjaWQ9ZmFsc2VgLgorCiAjIyMgcGxlXF9nYXAK ID4gYD0gPGludGVnZXI+YAogCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvZmx1c2h0bGIuYyBi L3hlbi9hcmNoL3g4Ni9mbHVzaHRsYi5jCmluZGV4IGUyOGJmMDRhMzcuLjdmODlmYmU0YjIgMTAw NjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9mbHVzaHRsYi5jCisrKyBiL3hlbi9hcmNoL3g4Ni9mbHVz aHRsYi5jCkBAIC0xMiw2ICsxMiw3IEBACiAjaW5jbHVkZSA8YXNtL2ZsdXNodGxiLmg+CiAjaW5j bHVkZSA8YXNtL2ludnBjaWQuaD4KICNpbmNsdWRlIDxhc20vcGFnZS5oPgorI2luY2x1ZGUgPGFz bS9wdi9kb21haW4uaD4KIAogLyogRGVidWcgYnVpbGRzOiBXcmFwIGZyZXF1ZW50bHkgdG8gc3Ry ZXNzLXRlc3QgdGhlIHdyYXAgbG9naWMuICovCiAjaWZkZWYgTkRFQlVHCkBAIC05Myw2ICs5NCw3 IEBAIHZvaWQgc3dpdGNoX2NyM19jcjQodW5zaWduZWQgbG9uZyBjcjMsIHVuc2lnbmVkIGxvbmcg Y3I0KQogewogICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3MsIG9sZF9jcjQ7CiAgICAgdTMyIHQ7Cisg ICAgdW5zaWduZWQgbG9uZyBvbGRfcGNpZCA9IGNyM19wY2lkKHJlYWRfY3IzKCkpOwogCiAgICAg LyogVGhpcyBub24tcmVlbnRyYW50IGZ1bmN0aW9uIGlzIHNvbWV0aW1lcyBjYWxsZWQgaW4gaW50 ZXJydXB0IGNvbnRleHQuICovCiAgICAgbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOwpAQCAtMTAyLDE0 ICsxMDQsMzQgQEAgdm9pZCBzd2l0Y2hfY3IzX2NyNCh1bnNpZ25lZCBsb25nIGNyMywgdW5zaWdu ZWQgbG9uZyBjcjQpCiAgICAgb2xkX2NyNCA9IHJlYWRfY3I0KCk7CiAgICAgaWYgKCBvbGRfY3I0 ICYgWDg2X0NSNF9QR0UgKQogICAgIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogWDg2X0NSNF9Q R0Ugc2V0IG1lYW5zIFBDSUQgaXMgaW5hY3RpdmUuCisgICAgICAgICAqIFdlIGhhdmUgdG8gcHVy Z2UgdGhlIFRMQiB2aWEgZmxpcHBpbmcgY3I0LnBnZS4KKyAgICAgICAgICovCiAgICAgICAgIG9s ZF9jcjQgPSBjcjQgJiB+WDg2X0NSNF9QR0U7CiAgICAgICAgIHdyaXRlX2NyNChvbGRfY3I0KTsK ICAgICB9CisgICAgZWxzZSBpZiAoIHVzZV9pbnZwY2lkICkKKyAgICAgICAgLyoKKyAgICAgICAg ICogRmx1c2hpbmcgdGhlIFRMQiB2aWEgSU5WUENJRCBpcyBuZWNlc3Nhcnkgb25seSBpbiBjYXNl IFBDSURzIGFyZQorICAgICAgICAgKiBpbiB1c2UsIHdoaWNoIGlzIHRydWUgb25seSB3aXRoIElO VlBDSUQgYmVpbmcgYXZhaWxhYmxlLgorICAgICAgICAgKiBXaXRob3V0IFBDSUQgdXNhZ2UgdGhl IGZvbGxvd2luZyB3cml0ZV9jcjMoKSB3aWxsIHB1cmdlIHRoZSBUTEIKKyAgICAgICAgICogKHdl IGFyZSBpbiB0aGUgY3I0LnBnZSBvZmYgcGF0aCkgZnJvbSBhbGwgZW50cmllcy4KKyAgICAgICAg ICogVXNpbmcgaW52cGNpZF9mbHVzaF9hbGxfbm9uZ2xvYmFscygpIHNlZW1zIHRvIGJlIGZhc3Rl ciB0aGFuCisgICAgICAgICAqIGludnBjaWRfZmx1c2hfYWxsKCksIHNvIHVzZSB0aGF0LgorICAg ICAgICAgKi8KKyAgICAgICAgaW52cGNpZF9mbHVzaF9hbGxfbm9uZ2xvYmFscygpOwogCiAgICAg d3JpdGVfY3IzKGNyMyk7CiAKICAgICBpZiAoIG9sZF9jcjQgIT0gY3I0ICkKICAgICAgICAgd3Jp dGVfY3I0KGNyNCk7CisgICAgZWxzZSBpZiAoIG9sZF9wY2lkICE9IGNyM19wY2lkKGNyMykgKQor ICAgICAgICAvKgorICAgICAgICAgKiBNYWtlIHN1cmUgbm8gVExCIGVudHJpZXMgcmVsYXRlZCB0 byB0aGUgb2xkIFBDSUQgY3JlYXRlZCBiZXR3ZWVuCisgICAgICAgICAqIGZsdXNoaW5nIHRoZSBU TEIgYW5kIHdyaXRpbmcgdGhlIG5ldyAlY3IzIHZhbHVlIHJlbWFpbiBpbiB0aGUgVExCLgorICAg ICAgICAgKi8KKyAgICAgICAgaW52cGNpZF9mbHVzaF9zaW5nbGVfY29udGV4dChvbGRfcGNpZCk7 CiAKICAgICBwb3N0X2ZsdXNoKHQpOwogCkBAIC0xMzYsMTEgKzE1OCwzMiBAQCB1bnNpZ25lZCBp bnQgZmx1c2hfYXJlYV9sb2NhbChjb25zdCB2b2lkICp2YSwgdW5zaWduZWQgaW50IGZsYWdzKQog ICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAqIFdlIGRvbid0IElOVkxQRyBtdWx0aS1wYWdl IHJlZ2lvbnMgYmVjYXVzZSB0aGUgMk0vNE0vMUcKICAgICAgICAgICAgICAqIHJlZ2lvbiBtYXkg bm90IGhhdmUgYmVlbiBtYXBwZWQgd2l0aCBhIHN1cGVycGFnZS4gQWxzbyB0aGVyZQotICAgICAg ICAgICAgICogYXJlIHZhcmlvdXMgZXJyYXRhIHN1cnJvdW5kaW5nIElOVkxQRyB1c2FnZSBvbiBz dXBlcnBhZ2VzLCBhbmQKLSAgICAgICAgICAgICAqIGEgZnVsbCBmbHVzaCBpcyBpbiBhbnkgY2Fz ZSBub3QgKnRoYXQqIGV4cGVuc2l2ZS4KKyAgICAgICAgICAgICAqIGFyZSB2YXJpb3VzIGVycmF0 YSBzdXJyb3VuZGluZyBJTlZMUEcgdXNhZ2Ugb24gc3VwZXJwYWdlcywKKyAgICAgICAgICAgICAq IGFuZCBhIGZ1bGwgZmx1c2ggaXMgaW4gYW55IGNhc2Ugbm90ICp0aGF0KiBleHBlbnNpdmUuCiAg ICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGFzbSB2b2xhdGlsZSAoICJpbnZscGcgJTAiCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICA6IDogIm0iICgqKGNvbnN0IGNoYXIgKikodmEpKSA6 ICJtZW1vcnkiICk7CisgICAgICAgICAgICBpZiAoIHJlYWRfY3I0KCkgJiBYODZfQ1I0X1BDSURF ICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGFkZHIgPSAo dW5zaWduZWQgbG9uZyl2YTsKKworICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAg ICogRmx1c2ggdGhlIGFkZHJlc3NlcyBmb3IgYWxsIHBvdGVudGlhbCBhZGRyZXNzIHNwYWNlcy4K KyAgICAgICAgICAgICAgICAgKiBXZSBjYW4ndCBjaGVjayB0aGUgY3VycmVudCBkb21haW4gZm9y IGJlaW5nIHN1YmplY3QgdG8KKyAgICAgICAgICAgICAgICAgKiBYUFRJIGFzIGN1cnJlbnQgbWln aHQgYmUgdGhlIGlkbGUgdmNwdSB3aGlsZSB3ZSBzdGlsbCBoYXZlCisgICAgICAgICAgICAgICAg ICogc29tZSBYUFRJIGRvbWFpbiBUTEIgZW50cmllcy4KKyAgICAgICAgICAgICAgICAgKiBVc2lu ZyBpbnZwY2lkIGlzIG9rYXkgaGVyZSwgYXMgd2l0aCBQQ0lEIGVuYWJsZWQgd2UgYWx3YXlzCisg ICAgICAgICAgICAgICAgICogaGF2ZSBnbG9iYWwgcGFnZXMgZGlzYWJsZWQuCisgICAgICAgICAg ICAgICAgICovCisgICAgICAgICAgICAgICAgaW52cGNpZF9mbHVzaF9vbmUoUENJRF9QVl9QUklW LCBhZGRyKTsKKyAgICAgICAgICAgICAgICBpbnZwY2lkX2ZsdXNoX29uZShQQ0lEX1BWX1VTRVIs IGFkZHIpOworICAgICAgICAgICAgICAgIGlmICggIWNwdV9oYXNfbm9feHB0aSApCisgICAgICAg ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBpbnZwY2lkX2ZsdXNoX29uZShQQ0lEX1BW X1BSSVYgfCBQQ0lEX1BWX1hQVEksIGFkZHIpOworICAgICAgICAgICAgICAgICAgICBpbnZwY2lk X2ZsdXNoX29uZShQQ0lEX1BWX1VTRVIgfCBQQ0lEX1BWX1hQVEksIGFkZHIpOworICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg ICBhc20gdm9sYXRpbGUgKCAiaW52bHBnICUwIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDogOiAibSIgKCooY29uc3QgY2hhciAqKSh2YSkpIDogIm1lbW9yeSIgKTsKICAgICAgICAg fQogICAgICAgICBlbHNlCiAgICAgICAgICAgICBkb190bGJfZmx1c2goKTsKZGlmZiAtLWdpdCBh L3hlbi9hcmNoL3g4Ni9tbS5jIGIveGVuL2FyY2gveDg2L21tLmMKaW5kZXggNmFhMGMzNGJhZS4u ZTQ3NzhmZTA4OSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tLmMKKysrIGIveGVuL2FyY2gv eDg2L21tLmMKQEAgLTEyNiw2ICsxMjYsNyBAQAogI2luY2x1ZGUgPGFzbS9odm0vaW9yZXEuaD4K IAogI2luY2x1ZGUgPGFzbS9odm0vZ3JhbnRfdGFibGUuaD4KKyNpbmNsdWRlIDxhc20vcHYvZG9t YWluLmg+CiAjaW5jbHVkZSA8YXNtL3B2L2dyYW50X3RhYmxlLmg+CiAjaW5jbHVkZSA8YXNtL3B2 L21tLmg+CiAKQEAgLTQ5Nyw3ICs0OTgsMTEgQEAgdm9pZCBmcmVlX3NoYXJlZF9kb21oZWFwX3Bh Z2Uoc3RydWN0IHBhZ2VfaW5mbyAqcGFnZSkKIAogdm9pZCBtYWtlX2NyMyhzdHJ1Y3QgdmNwdSAq diwgbWZuX3QgbWZuKQogeworICAgIHN0cnVjdCBkb21haW4gKmQgPSB2LT5kb21haW47CisKICAg ICB2LT5hcmNoLmNyMyA9IG1mbl94KG1mbikgPDwgUEFHRV9TSElGVDsKKyAgICBpZiAoIGlzX3B2 X2RvbWFpbihkKSAmJiBkLT5hcmNoLnB2X2RvbWFpbi5wY2lkICkKKyAgICAgICAgdi0+YXJjaC5j cjMgfD0gZ2V0X3BjaWRfYml0cyh2LCBmYWxzZSk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgcHZfZ3Vl c3RfY3I0X3RvX3JlYWxfY3I0KGNvbnN0IHN0cnVjdCB2Y3B1ICp2KQpAQCAtNTA4LDcgKzUxMyw4 IEBAIHVuc2lnbmVkIGxvbmcgcHZfZ3Vlc3RfY3I0X3RvX3JlYWxfY3I0KGNvbnN0IHN0cnVjdCB2 Y3B1ICp2KQogICAgIGNyNCA9IHYtPmFyY2gucHZfdmNwdS5jdHJscmVnWzRdICYgflg4Nl9DUjRf REU7CiAgICAgY3I0IHw9IG1tdV9jcjRfZmVhdHVyZXMgJiAoWDg2X0NSNF9QU0UgfCBYODZfQ1I0 X1NNRVAgfCBYODZfQ1I0X1NNQVAgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFg4 Nl9DUjRfT1NYU0FWRSB8IFg4Nl9DUjRfRlNHU0JBU0UpOwotICAgIGNyNCB8PSBkLT5hcmNoLnB2 X2RvbWFpbi54cHRpICA/IDAgOiBYODZfQ1I0X1BHRTsKKyAgICBjcjQgfD0gKGQtPmFyY2gucHZf ZG9tYWluLnhwdGkgfHwgZC0+YXJjaC5wdl9kb21haW4ucGNpZCkgPyAwIDogWDg2X0NSNF9QR0U7 CisgICAgY3I0IHw9IGQtPmFyY2gucHZfZG9tYWluLnBjaWQgPyBYODZfQ1I0X1BDSURFIDogMDsK ICAgICBjcjQgfD0gZC0+YXJjaC52dHNjID8gWDg2X0NSNF9UU0QgOiAwOwogCiAgICAgcmV0dXJu IGNyNDsKQEAgLTUyMSwxMiArNTI3LDE0IEBAIHZvaWQgd3JpdGVfcHRiYXNlKHN0cnVjdCB2Y3B1 ICp2KQogCiAgICAgbmV3X2NyNCA9IChpc19wdl92Y3B1KHYpICYmICFpc19pZGxlX3ZjcHUodikp CiAgICAgICAgICAgICAgID8gcHZfZ3Vlc3RfY3I0X3RvX3JlYWxfY3I0KHYpCi0gICAgICAgICAg ICAgIDogKChyZWFkX2NyNCgpICYgflg4Nl9DUjRfVFNEKSB8IFg4Nl9DUjRfUEdFKTsKKyAgICAg ICAgICAgICAgOiAoKHJlYWRfY3I0KCkgJiB+KFg4Nl9DUjRfUENJREUgfCBYODZfQ1I0X1RTRCkp IHwgWDg2X0NSNF9QR0UpOwogCiAgICAgaWYgKCBpc19wdl92Y3B1KHYpICYmIHYtPmRvbWFpbi0+ YXJjaC5wdl9kb21haW4ueHB0aSApCiAgICAgewogICAgICAgICBjcHVfaW5mby0+cm9vdF9wZ3Rf Y2hhbmdlZCA9IHRydWU7CiAgICAgICAgIGNwdV9pbmZvLT5wdl9jcjMgPSBfX3BhKHRoaXNfY3B1 KHJvb3RfcGd0KSk7CisgICAgICAgIGlmICggbmV3X2NyNCAmIFg4Nl9DUjRfUENJREUgKQorICAg ICAgICAgICAgY3B1X2luZm8tPnB2X2NyMyB8PSBnZXRfcGNpZF9iaXRzKHYsIHRydWUpOwogICAg ICAgICBzd2l0Y2hfY3IzX2NyNCh2LT5hcmNoLmNyMywgbmV3X2NyNCk7CiAgICAgfQogICAgIGVs c2UKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9wdi9kb20wX2J1aWxkLmMgYi94ZW4vYXJjaC94 ODYvcHYvZG9tMF9idWlsZC5jCmluZGV4IGQxNDgzOTU5MTkuLjU2OTExZmMwNmQgMTAwNjQ0Ci0t LSBhL3hlbi9hcmNoL3g4Ni9wdi9kb20wX2J1aWxkLmMKKysrIGIveGVuL2FyY2gveDg2L3B2L2Rv bTBfYnVpbGQuYwpAQCAtMzg4LDYgKzM4OCw3IEBAIGludCBfX2luaXQgZG9tMF9jb25zdHJ1Y3Rf cHYoc3RydWN0IGRvbWFpbiAqZCwKICAgICB7CiAgICAgICAgIGQtPmFyY2guaXNfMzJiaXRfcHYg PSBkLT5hcmNoLmhhc18zMmJpdF9zaGluZm8gPSAxOwogICAgICAgICBkLT5hcmNoLnB2X2RvbWFp bi54cHRpID0gZmFsc2U7CisgICAgICAgIGQtPmFyY2gucHZfZG9tYWluLnBjaWQgPSBmYWxzZTsK ICAgICAgICAgdi0+dmNwdV9pbmZvID0gKHZvaWQgKikmZC0+c2hhcmVkX2luZm8tPmNvbXBhdC52 Y3B1X2luZm9bMF07CiAgICAgICAgIGlmICggc2V0dXBfY29tcGF0X2FyZ194bGF0KHYpICE9IDAg KQogICAgICAgICAgICAgQlVHKCk7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvcHYvZG9tYWlu LmMgYi94ZW4vYXJjaC94ODYvcHYvZG9tYWluLmMKaW5kZXggNjk5MTAwOTJjMy4uMTU3YjJjMDI1 NCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3B2L2RvbWFpbi5jCisrKyBiL3hlbi9hcmNoL3g4 Ni9wdi9kb21haW4uYwpAQCAtOSw5ICs5LDUwIEBACiAjaW5jbHVkZSA8eGVuL2xpYi5oPgogI2lu Y2x1ZGUgPHhlbi9zY2hlZC5oPgogCisjaW5jbHVkZSA8YXNtL2NwdWZlYXR1cmUuaD4KKyNpbmNs dWRlIDxhc20vaW52cGNpZC5oPgogI2luY2x1ZGUgPGFzbS9zcGVjX2N0cmwuaD4KICNpbmNsdWRl IDxhc20vcHYvZG9tYWluLmg+CiAKK3N0YXRpYyBfX3JlYWRfbW9zdGx5IGVudW0geworICAgIFBD SURfT0ZGLAorICAgIFBDSURfQUxMLAorICAgIFBDSURfWFBUSSwKKyAgICBQQ0lEX05PWFBUSQor fSBvcHRfcGNpZCA9IFBDSURfWFBUSTsKKworc3RhdGljIF9faW5pdCBpbnQgcGFyc2VfcGNpZChj b25zdCBjaGFyICpzKQoreworICAgIGludCByYyA9IDA7CisKKyAgICBzd2l0Y2ggKCBwYXJzZV9i b29sKHMsIE5VTEwpICkKKyAgICB7CisgICAgY2FzZSAwOgorICAgICAgICBvcHRfcGNpZCA9IFBD SURfT0ZGOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDE6CisgICAgICAgIG9wdF9wY2lkID0g UENJRF9BTEw7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHN3aXRjaCAo IHBhcnNlX2Jvb2xlYW4oInhwdGkiLCBzLCBOVUxMKSApCisgICAgICAgIHsKKyAgICAgICAgY2Fz ZSAwOgorICAgICAgICAgICAgb3B0X3BjaWQgPSBQQ0lEX05PWFBUSTsKKyAgICAgICAgICAgIGJy ZWFrOworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICBvcHRfcGNpZCA9IFBDSURfWFBUSTsK KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmMgPSAt RUlOVkFMOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7Cisg ICAgfQorCisgICAgcmV0dXJuIHJjOworfQorY3VzdG9tX3J1bnRpbWVfcGFyYW0oInBjaWQiLCBw YXJzZV9wY2lkKTsKKwogc3RhdGljIHZvaWQgbm9yZXR1cm4gY29udGludWVfbm9uaWRsZV9kb21h aW4oc3RydWN0IHZjcHUgKnYpCiB7CiAgICAgY2hlY2tfd2FrZXVwX2Zyb21fd2FpdCgpOwpAQCAt NzcsNiArMTE4LDcgQEAgaW50IHN3aXRjaF9jb21wYXQoc3RydWN0IGRvbWFpbiAqZCkKICAgICBk LT5hcmNoLng4N19maXBfd2lkdGggPSA0OwogCiAgICAgZC0+YXJjaC5wdl9kb21haW4ueHB0aSA9 IGZhbHNlOworICAgIGQtPmFyY2gucHZfZG9tYWluLnBjaWQgPSBmYWxzZTsKIAogICAgIHJldHVy biAwOwogCkBAIC0yMTIsNiArMjU0LDI1IEBAIGludCBwdl9kb21haW5faW5pdGlhbGlzZShzdHJ1 Y3QgZG9tYWluICpkKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IChvcHRfeHB0aSAm IFhQVElfRE9NMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAob3B0X3hwdGkgJiBY UFRJX0RPTVUpOwogCisgICAgaWYgKCAhaXNfcHZfMzJiaXRfZG9tYWluKGQpICYmIHVzZV9pbnZw Y2lkICYmIGNwdV9oYXNfcGNpZCApCisgICAgICAgIHN3aXRjaCAoIG9wdF9wY2lkICkKKyAgICAg ICAgeworICAgICAgICBjYXNlIFBDSURfT0ZGOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg IGNhc2UgUENJRF9BTEw6CisgICAgICAgICAgICBkLT5hcmNoLnB2X2RvbWFpbi5wY2lkID0gdHJ1 ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFBDSURfWFBUSToKKyAgICAgICAg ICAgIGQtPmFyY2gucHZfZG9tYWluLnBjaWQgPSBkLT5hcmNoLnB2X2RvbWFpbi54cHRpOworICAg ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUENJRF9OT1hQVEk6CisgICAgICAgICAgICBk LT5hcmNoLnB2X2RvbWFpbi5wY2lkID0gIWQtPmFyY2gucHZfZG9tYWluLnhwdGk7CisgICAgICAg ICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9VTlJFQUNI QUJMRSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgIHJldHVybiAwOwog CiAgIGZhaWw6CkBAIC0yMjIsOSArMjgzLDE5IEBAIGludCBwdl9kb21haW5faW5pdGlhbGlzZShz dHJ1Y3QgZG9tYWluICpkKQogCiBzdGF0aWMgdm9pZCBfdG9nZ2xlX2d1ZXN0X3B0KHN0cnVjdCB2 Y3B1ICp2KQogeworICAgIGNvbnN0IHN0cnVjdCBkb21haW4gKmQgPSB2LT5kb21haW47CisKICAg ICB2LT5hcmNoLmZsYWdzIF49IFRGX2tlcm5lbF9tb2RlOwogICAgIHVwZGF0ZV9jcjModik7Ci0g ICAgZ2V0X2NwdV9pbmZvKCktPnJvb3RfcGd0X2NoYW5nZWQgPSB0cnVlOworICAgIGlmICggZC0+ YXJjaC5wdl9kb21haW4ueHB0aSApCisgICAgeworICAgICAgICBzdHJ1Y3QgY3B1X2luZm8gKmNw dV9pbmZvID0gZ2V0X2NwdV9pbmZvKCk7CisKKyAgICAgICAgY3B1X2luZm8tPnJvb3RfcGd0X2No YW5nZWQgPSB0cnVlOworICAgICAgICBjcHVfaW5mby0+cHZfY3IzID0gX19wYSh0aGlzX2NwdShy b290X3BndCkpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChkLT5hcmNoLnB2X2RvbWFp bi5wY2lkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBnZXRfcGNpZF9iaXRzKHYsIHRy dWUpIDogMCk7CisgICAgfQogCiAgICAgLyogRG9uJ3QgZmx1c2ggdXNlciBnbG9iYWwgbWFwcGlu Z3MgZnJvbSB0aGUgVExCLiBEb24ndCB0aWNrIFRMQiBjbG9jay4gKi8KICAgICB3cml0ZV9jcjMo di0+YXJjaC5jcjMpOwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9kb21haW4uaCBi L3hlbi9pbmNsdWRlL2FzbS14ODYvZG9tYWluLmgKaW5kZXggOTYyNzA1OGNkMC4uOGI2NjA5NmU3 ZiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9kb21haW4uaAorKysgYi94ZW4vaW5j bHVkZS9hc20teDg2L2RvbWFpbi5oCkBAIC0yNTUsNiArMjU1LDggQEAgc3RydWN0IHB2X2RvbWFp bgogCiAgICAgLyogWFBUSSBhY3RpdmU/ICovCiAgICAgYm9vbCB4cHRpOworICAgIC8qIFVzZSBQ Q0lEIGZlYXR1cmU/ICovCisgICAgYm9vbCBwY2lkOwogCiAgICAgLyogbWFwX2RvbWFpbl9wYWdl KCkgbWFwcGluZyBjYWNoZS4gKi8KICAgICBzdHJ1Y3QgbWFwY2FjaGVfZG9tYWluIG1hcGNhY2hl OwpAQCAtNjIwLDcgKzYyMiw3IEBAIHVuc2lnbmVkIGxvbmcgcHZfZ3Vlc3RfY3I0X3RvX3JlYWxf Y3I0KGNvbnN0IHN0cnVjdCB2Y3B1ICp2KTsKICNkZWZpbmUgcmVhbF9jcjRfdG9fcHZfZ3Vlc3Rf Y3I0KGMpICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAoKGMpICYgfihYODZfQ1I0X1BH RSB8IFg4Nl9DUjRfUFNFIHwgWDg2X0NSNF9UU0QgfCAgICAgIFwKICAgICAgICAgICAgICBYODZf Q1I0X09TWFNBVkUgfCBYODZfQ1I0X1NNRVAgfCAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAg ICBYODZfQ1I0X0ZTR1NCQVNFIHwgWDg2X0NSNF9TTUFQKSkKKyAgICAgICAgICAgICBYODZfQ1I0 X0ZTR1NCQVNFIHwgWDg2X0NSNF9TTUFQIHwgWDg2X0NSNF9QQ0lERSkpCiAKICNkZWZpbmUgZG9t YWluX21heF92Y3B1cyhkKSAoaXNfaHZtX2RvbWFpbihkKSA/IEhWTV9NQVhfVkNQVVMgOiBNQVhf VklSVF9DUFVTKQogCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L3Byb2Nlc3Nvci5o IGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wcm9jZXNzb3IuaAppbmRleCAzNjYyODQ1OWRjLi5jNGFh Mzg1YTZmIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L3Byb2Nlc3Nvci5oCisrKyBi L3hlbi9pbmNsdWRlL2FzbS14ODYvcHJvY2Vzc29yLmgKQEAgLTMwNSw2ICszMDUsOSBAQCBzdGF0 aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgcmVhZF9jcjQodm9pZCkKIAogc3RhdGljIGlubGluZSB2 b2lkIHdyaXRlX2NyNCh1bnNpZ25lZCBsb25nIHZhbCkKIHsKKyAgICAvKiBObyBnbG9iYWwgcGFn ZXMgaW4gY2FzZSBvZiBQQ0lEcyBlbmFibGVkISAqLworICAgIEFTU0VSVCghKHZhbCAmIFg4Nl9D UjRfUEdFKSB8fCAhKHZhbCAmIFg4Nl9DUjRfUENJREUpKTsKKwogICAgIGdldF9jcHVfaW5mbygp LT5jcjQgPSB2YWw7CiAgICAgYXNtIHZvbGF0aWxlICggIm1vdiAlMCwlJWNyNCIgOiA6ICJyIiAo dmFsKSApOwogfQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wdi9kb21haW4uaCBi L3hlbi9pbmNsdWRlL2FzbS14ODYvcHYvZG9tYWluLmgKaW5kZXggNWUzNDE3NjkzOS4uNGZlYTc2 NDQ0YSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wdi9kb21haW4uaAorKysgYi94 ZW4vaW5jbHVkZS9hc20teDg2L3B2L2RvbWFpbi5oCkBAIC0yMSw2ICsyMSwzNyBAQAogI2lmbmRl ZiBfX1g4Nl9QVl9ET01BSU5fSF9fCiAjZGVmaW5lIF9fWDg2X1BWX0RPTUFJTl9IX18KIAorLyoK KyAqIFBDSUQgdmFsdWVzIGZvciB0aGUgYWRkcmVzcyBzcGFjZXMgb2YgNjQtYml0IHB2IGRvbWFp bnM6CisgKgorICogV2UgYXJlIHVzaW5nIDQgUENJRCB2YWx1ZXMgZm9yIGEgNjQgYml0IHB2IGRv bWFpbiBzdWJqZWN0IHRvIFhQVEk6CisgKiAtIGh5cGVydmlzb3IgYWN0aXZlIGFuZCBndWVzdCBp biBrZXJuZWwgbW9kZSAgIFBDSUQgMAorICogLSBoeXBlcnZpc29yIGFjdGl2ZSBhbmQgZ3Vlc3Qg aW4gdXNlciBtb2RlICAgICBQQ0lEIDEKKyAqIC0gZ3Vlc3QgYWN0aXZlIGFuZCBpbiBrZXJuZWwg bW9kZSAgICAgICAgICAgICAgUENJRCAyCisgKiAtIGd1ZXN0IGFjdGl2ZSBhbmQgaW4gdXNlciBt b2RlICAgICAgICAgICAgICAgIFBDSUQgMworICoKKyAqIFdpdGhvdXQgWFBUSSBvbmx5IDIgdmFs dWVzIGFyZSB1c2VkOgorICogLSBndWVzdCBpbiBrZXJuZWwgbW9kZSAgICAgICAgICAgICAgICAg ICAgICAgICBQQ0lEIDAKKyAqIC0gZ3Vlc3QgaW4gdXNlciBtb2RlICAgICAgICAgICAgICAgICAg ICAgICAgICAgUENJRCAxCisgKi8KKworI2RlZmluZSBQQ0lEX1BWX1BSSVYgICAgICAweDAwMDAg ICAgLyogVXNlZCBmb3Igb3RoZXIgZG9tYWlucywgdG9vLiAqLworI2RlZmluZSBQQ0lEX1BWX1VT RVIgICAgICAweDAwMDEKKyNkZWZpbmUgUENJRF9QVl9YUFRJICAgICAgMHgwMDAyICAgIC8qIFRv IGJlIE9SZWQgdG8gYWJvdmUgdmFsdWVzLiAqLworCisvKgorICogUmV0dXJuIGFkZGl0aW9uYWwg UENJRCBzcGVjaWZpYyBjcjMgYml0cy4KKyAqCisgKiBOb3RlIHRoYXQgWDg2X0NSM19OT0ZMVVNI IHdpbGwgbm90IGJlIHJlYWRhYmxlIGluIGNyMy4gQW55b25lIGNvbnN1bWluZworICogdi0+YXJj aC5jcjMgc2hvdWxkIG1hc2sgYXdheSBYODZfQ1IzX05PRkxVU0ggYW5kIFg4Nl9DUjNfUENJRE1B U0sgaW4gY2FzZQorICogdGhlIHZhbHVlIGlzIHVzZWQgdG8gYWRkcmVzcyB0aGUgcm9vdCBwYWdl IHRhYmxlLgorICovCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgZ2V0X3BjaWRfYml0cyhj b25zdCBzdHJ1Y3QgdmNwdSAqdiwgYm9vbCBpc194cHRpKQoreworICAgIHJldHVybiBYODZfQ1Iz X05PRkxVU0ggfCAoaXNfeHB0aSA/IFBDSURfUFZfWFBUSSA6IDApIHwKKyAgICAgICAgICAgKCh2 LT5hcmNoLmZsYWdzICYgVEZfa2VybmVsX21vZGUpID8gUENJRF9QVl9QUklWIDogUENJRF9QVl9V U0VSKTsKK30KKwogI2lmZGVmIENPTkZJR19QVgogCiB2b2lkIHB2X3ZjcHVfZGVzdHJveShzdHJ1 Y3QgdmNwdSAqdik7Ci0tIAoyLjEzLjYKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54 ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGlu Zm8veGVuLWRldmVs