From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: [PATCH v8 9/9] xen/x86: use PCID feature Date: Wed, 18 Apr 2018 10:30:51 +0200 Message-ID: <20180418083051.8334-10-jgross@suse.com> References: <20180418083051.8334-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 1f8iUX-0003NG-Az for xen-devel@lists.xenproject.org; Wed, 18 Apr 2018 08:31:01 +0000 In-Reply-To: <20180418083051.8334-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, tim@xen.org, 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 fCAgMyArLQogeGVuL2FyY2gveDg2L3B2L2RvbWFpbi5jICAgICAgICAgICAgfCA4MSArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiB4ZW4vaW5jbHVkZS9hc20teDg2L2RvbWFp bi5oICAgICAgICB8ICA0ICstCiB4ZW4vaW5jbHVkZS9hc20teDg2L3Byb2Nlc3Nvci5oICAgICB8 ICAzICsrCiB4ZW4vaW5jbHVkZS9hc20teDg2L3B2L2RvbWFpbi5oICAgICB8IDMxICsrKysrKysr KysrKysrCiA4IGZpbGVzIGNoYW5nZWQsIDE5MiBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2RvY3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLm1hcmtkb3duIGIvZG9j cy9taXNjL3hlbi1jb21tYW5kLWxpbmUubWFya2Rvd24KaW5kZXggNDUxYTRmYTU2Ni4uZjg5NTBh M2JiMiAxMDA2NDQKLS0tIGEvZG9jcy9taXNjL3hlbi1jb21tYW5kLWxpbmUubWFya2Rvd24KKysr IGIvZG9jcy9taXNjL3hlbi1jb21tYW5kLWxpbmUubWFya2Rvd24KQEAgLTE0NTEsNiArMTQ1MSwy MCBAQCBBbGwgbnVtYmVycyBzcGVjaWZpZWQgbXVzdCBiZSBoZXhhZGVjaW1hbCBvbmVzLgogCiBU aGlzIG9wdGlvbiBjYW4gYmUgc3BlY2lmaWVkIG1vcmUgdGhhbiBvbmNlICh1cCB0byA4IHRpbWVz IGF0IHByZXNlbnQpLgogCisjIyMgcGNpZCAoeDg2KQorPiBgPSA8Ym9vbGVhbj4gfCB4cHRpPTxi b29sPmAKKworPiBEZWZhdWx0OiBgeHB0aWAKKworPiBDYW4gYmUgbW9kaWZpZWQgYXQgcnVudGlt ZSAoY2hhbmdlIHRha2VzIGVmZmVjdCBvbmx5IGZvciBkb21haW5zIGNyZWF0ZWQKKyAgYWZ0ZXJ3 YXJkcykKKworSWYgYXZhaWxhYmxlLCBjb250cm9sIHVzYWdlIG9mIHRoZSBQQ0lEIGZlYXR1cmUg b2YgdGhlIHByb2Nlc3NvciBmb3IKKzY0LWJpdCBwdi1kb21haW5zLiBQQ0lEIGNhbiBiZSB1c2Vk IGVpdGhlciBmb3Igbm8gZG9tYWluIGF0IGFsbCAoYGZhbHNlYCksCitmb3IgYWxsIG9mIHRoZW0g KGB0cnVlYCksIG9ubHkgZm9yIHRob3NlIHN1YmplY3QgdG8gWFBUSSAoYHhwdGlgKSBvciBmb3IK K3Rob3NlIG5vdCBzdWJqZWN0IHRvIFhQVEkgKGBuby14cHRpYCkuIFRoZSBmZWF0dXJlIGlzIHVz ZWQgb25seSBpbiBjYXNlCitJTlZQQ0lEIGlzIHN1cHBvcnRlZCBhbmQgbm90IGRpc2FibGVkIHZp YSBgaW52cGNpZD1mYWxzZWAuCisKICMjIyBwbGVcX2dhcAogPiBgPSA8aW50ZWdlcj5gCiAKZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9mbHVzaHRsYi5jIGIveGVuL2FyY2gveDg2L2ZsdXNodGxi LmMKaW5kZXggZDQ4YjkwMDEwMC4uYmQ5YTM2OTI0YSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2 L2ZsdXNodGxiLmMKKysrIGIveGVuL2FyY2gveDg2L2ZsdXNodGxiLmMKQEAgLTEzLDYgKzEzLDcg QEAKICNpbmNsdWRlIDxhc20vZmx1c2h0bGIuaD4KICNpbmNsdWRlIDxhc20vaW52cGNpZC5oPgog I2luY2x1ZGUgPGFzbS9wYWdlLmg+CisjaW5jbHVkZSA8YXNtL3B2L2RvbWFpbi5oPgogCiAvKiBE ZWJ1ZyBidWlsZHM6IFdyYXAgZnJlcXVlbnRseSB0byBzdHJlc3MtdGVzdCB0aGUgd3JhcCBsb2dp Yy4gKi8KICNpZmRlZiBOREVCVUcKQEAgLTk0LDYgKzk1LDcgQEAgdm9pZCBzd2l0Y2hfY3IzX2Ny NCh1bnNpZ25lZCBsb25nIGNyMywgdW5zaWduZWQgbG9uZyBjcjQpCiB7CiAgICAgdW5zaWduZWQg bG9uZyBmbGFncywgb2xkX2NyNDsKICAgICB1MzIgdDsKKyAgICB1bnNpZ25lZCBsb25nIG9sZF9w Y2lkID0gY3IzX3BjaWQocmVhZF9jcjMoKSk7CiAKICAgICAvKiBUaGlzIG5vbi1yZWVudHJhbnQg ZnVuY3Rpb24gaXMgc29tZXRpbWVzIGNhbGxlZCBpbiBpbnRlcnJ1cHQgY29udGV4dC4gKi8KICAg ICBsb2NhbF9pcnFfc2F2ZShmbGFncyk7CkBAIC0xMDMsMTQgKzEwNSwzNCBAQCB2b2lkIHN3aXRj aF9jcjNfY3I0KHVuc2lnbmVkIGxvbmcgY3IzLCB1bnNpZ25lZCBsb25nIGNyNCkKICAgICBvbGRf Y3I0ID0gcmVhZF9jcjQoKTsKICAgICBpZiAoIG9sZF9jcjQgJiBYODZfQ1I0X1BHRSApCiAgICAg eworICAgICAgICAvKgorICAgICAgICAgKiBYODZfQ1I0X1BHRSBzZXQgbWVhbnMgUENJRCBpcyBp bmFjdGl2ZS4KKyAgICAgICAgICogV2UgaGF2ZSB0byBwdXJnZSB0aGUgVExCIHZpYSBmbGlwcGlu ZyBjcjQucGdlLgorICAgICAgICAgKi8KICAgICAgICAgb2xkX2NyNCA9IGNyNCAmIH5YODZfQ1I0 X1BHRTsKICAgICAgICAgd3JpdGVfY3I0KG9sZF9jcjQpOwogICAgIH0KKyAgICBlbHNlIGlmICgg dXNlX2ludnBjaWQgKQorICAgICAgICAvKgorICAgICAgICAgKiBGbHVzaGluZyB0aGUgVExCIHZp YSBJTlZQQ0lEIGlzIG5lY2Vzc2FyeSBvbmx5IGluIGNhc2UgUENJRHMgYXJlCisgICAgICAgICAq IGluIHVzZSwgd2hpY2ggaXMgdHJ1ZSBvbmx5IHdpdGggSU5WUENJRCBiZWluZyBhdmFpbGFibGUu CisgICAgICAgICAqIFdpdGhvdXQgUENJRCB1c2FnZSB0aGUgZm9sbG93aW5nIHdyaXRlX2NyMygp IHdpbGwgcHVyZ2UgdGhlIFRMQgorICAgICAgICAgKiAod2UgYXJlIGluIHRoZSBjcjQucGdlIG9m ZiBwYXRoKSBvZiBhbGwgZW50cmllcy4KKyAgICAgICAgICogVXNpbmcgaW52cGNpZF9mbHVzaF9h bGxfbm9uZ2xvYmFscygpIHNlZW1zIHRvIGJlIGZhc3RlciB0aGFuCisgICAgICAgICAqIGludnBj aWRfZmx1c2hfYWxsKCksIHNvIHVzZSB0aGF0LgorICAgICAgICAgKi8KKyAgICAgICAgaW52cGNp ZF9mbHVzaF9hbGxfbm9uZ2xvYmFscygpOwogCiAgICAgd3JpdGVfY3IzKGNyMyk7CiAKICAgICBp ZiAoIG9sZF9jcjQgIT0gY3I0ICkKICAgICAgICAgd3JpdGVfY3I0KGNyNCk7CisgICAgZWxzZSBp ZiAoIG9sZF9wY2lkICE9IGNyM19wY2lkKGNyMykgKQorICAgICAgICAvKgorICAgICAgICAgKiBN YWtlIHN1cmUgbm8gVExCIGVudHJpZXMgcmVsYXRlZCB0byB0aGUgb2xkIFBDSUQgY3JlYXRlZCBi ZXR3ZWVuCisgICAgICAgICAqIGZsdXNoaW5nIHRoZSBUTEIgYW5kIHdyaXRpbmcgdGhlIG5ldyAl Y3IzIHZhbHVlIHJlbWFpbiBpbiB0aGUgVExCLgorICAgICAgICAgKi8KKyAgICAgICAgaW52cGNp ZF9mbHVzaF9zaW5nbGVfY29udGV4dChvbGRfcGNpZCk7CiAKICAgICBwb3N0X2ZsdXNoKHQpOwog CkBAIC0xNDAsOCArMTYyLDI5IEBAIHVuc2lnbmVkIGludCBmbHVzaF9hcmVhX2xvY2FsKGNvbnN0 IHZvaWQgKnZhLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiAgICAgICAgICAgICAgKiBhcmUgdmFyaW91 cyBlcnJhdGEgc3Vycm91bmRpbmcgSU5WTFBHIHVzYWdlIG9uIHN1cGVycGFnZXMsIGFuZAogICAg ICAgICAgICAgICogYSBmdWxsIGZsdXNoIGlzIGluIGFueSBjYXNlIG5vdCAqdGhhdCogZXhwZW5z aXZlLgogICAgICAgICAgICAgICovCi0gICAgICAgICAgICBhc20gdm9sYXRpbGUgKCAiaW52bHBn ICUwIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgOiA6ICJtIiAoKihjb25zdCBjaGFyICop KHZhKSkgOiAibWVtb3J5IiApOworICAgICAgICAgICAgaWYgKCByZWFkX2NyNCgpICYgWDg2X0NS NF9QQ0lERSApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBh ZGRyID0gKHVuc2lnbmVkIGxvbmcpdmE7CisKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAg ICAgICAgICAqIEZsdXNoIHRoZSBhZGRyZXNzZXMgZm9yIGFsbCBwb3RlbnRpYWwgYWRkcmVzcyBz cGFjZXMuCisgICAgICAgICAgICAgICAgICogV2UgY2FuJ3QgY2hlY2sgdGhlIGN1cnJlbnQgZG9t YWluIGZvciBiZWluZyBzdWJqZWN0IHRvCisgICAgICAgICAgICAgICAgICogWFBUSSBhcyBjdXJy ZW50IG1pZ2h0IGJlIHRoZSBpZGxlIHZjcHUgd2hpbGUgd2Ugc3RpbGwgaGF2ZQorICAgICAgICAg ICAgICAgICAqIHNvbWUgWFBUSSBkb21haW4gVExCIGVudHJpZXMuCisgICAgICAgICAgICAgICAg ICogVXNpbmcgaW52cGNpZCBpcyBva2F5IGhlcmUsIGFzIHdpdGggUENJRCBlbmFibGVkIHdlIGFs d2F5cworICAgICAgICAgICAgICAgICAqIGhhdmUgZ2xvYmFsIHBhZ2VzIGRpc2FibGVkLgorICAg ICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIGludnBjaWRfZmx1c2hfb25lKFBDSURf UFZfUFJJViwgYWRkcik7CisgICAgICAgICAgICAgICAgaW52cGNpZF9mbHVzaF9vbmUoUENJRF9Q Vl9VU0VSLCBhZGRyKTsKKyAgICAgICAgICAgICAgICBpZiAoICFjcHVfaGFzX25vX3hwdGkgKQor ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaW52cGNpZF9mbHVzaF9vbmUo UENJRF9QVl9QUklWIHwgUENJRF9QVl9YUFRJLCBhZGRyKTsKKyAgICAgICAgICAgICAgICAgICAg aW52cGNpZF9mbHVzaF9vbmUoUENJRF9QVl9VU0VSIHwgUENJRF9QVl9YUFRJLCBhZGRyKTsKKyAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAg ICAgICAgICAgYXNtIHZvbGF0aWxlICggImludmxwZyAlMCIKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA6IDogIm0iICgqKGNvbnN0IGNoYXIgKikodmEpKSA6ICJtZW1vcnkiICk7CiAg ICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICAgICAgZG9fdGxiX2ZsdXNoKCk7CmRpZmYg LS1naXQgYS94ZW4vYXJjaC94ODYvbW0uYyBiL3hlbi9hcmNoL3g4Ni9tbS5jCmluZGV4IDZhYTBj MzRiYWUuLmQ5ODFjZTBiMTkgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS5jCisrKyBiL3hl bi9hcmNoL3g4Ni9tbS5jCkBAIC0xMjYsNiArMTI2LDcgQEAKICNpbmNsdWRlIDxhc20vaHZtL2lv cmVxLmg+CiAKICNpbmNsdWRlIDxhc20vaHZtL2dyYW50X3RhYmxlLmg+CisjaW5jbHVkZSA8YXNt L3B2L2RvbWFpbi5oPgogI2luY2x1ZGUgPGFzbS9wdi9ncmFudF90YWJsZS5oPgogI2luY2x1ZGUg PGFzbS9wdi9tbS5oPgogCkBAIC00OTcsNyArNDk4LDExIEBAIHZvaWQgZnJlZV9zaGFyZWRfZG9t aGVhcF9wYWdlKHN0cnVjdCBwYWdlX2luZm8gKnBhZ2UpCiAKIHZvaWQgbWFrZV9jcjMoc3RydWN0 IHZjcHUgKnYsIG1mbl90IG1mbikKIHsKKyAgICBzdHJ1Y3QgZG9tYWluICpkID0gdi0+ZG9tYWlu OworCiAgICAgdi0+YXJjaC5jcjMgPSBtZm5feChtZm4pIDw8IFBBR0VfU0hJRlQ7CisgICAgaWYg KCBpc19wdl9kb21haW4oZCkgJiYgZC0+YXJjaC5wdl9kb21haW4ucGNpZCApCisgICAgICAgIHYt PmFyY2guY3IzIHw9IGdldF9wY2lkX2JpdHModiwgZmFsc2UpOwogfQogCiB1bnNpZ25lZCBsb25n IHB2X2d1ZXN0X2NyNF90b19yZWFsX2NyNChjb25zdCBzdHJ1Y3QgdmNwdSAqdikKQEAgLTUwOCw3 ICs1MTMsMTIgQEAgdW5zaWduZWQgbG9uZyBwdl9ndWVzdF9jcjRfdG9fcmVhbF9jcjQoY29uc3Qg c3RydWN0IHZjcHUgKnYpCiAgICAgY3I0ID0gdi0+YXJjaC5wdl92Y3B1LmN0cmxyZWdbNF0gJiB+ WDg2X0NSNF9ERTsKICAgICBjcjQgfD0gbW11X2NyNF9mZWF0dXJlcyAmIChYODZfQ1I0X1BTRSB8 IFg4Nl9DUjRfU01FUCB8IFg4Nl9DUjRfU01BUCB8CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgWDg2X0NSNF9PU1hTQVZFIHwgWDg2X0NSNF9GU0dTQkFTRSk7Ci0gICAgY3I0IHw9IGQt PmFyY2gucHZfZG9tYWluLnhwdGkgID8gMCA6IFg4Nl9DUjRfUEdFOworCisgICAgaWYgKCBkLT5h cmNoLnB2X2RvbWFpbi5wY2lkICkKKyAgICAgICAgY3I0IHw9IFg4Nl9DUjRfUENJREU7CisgICAg ZWxzZSBpZiAoICFkLT5hcmNoLnB2X2RvbWFpbi54cHRpICkKKyAgICAgICAgY3I0IHw9IFg4Nl9D UjRfUEdFOworCiAgICAgY3I0IHw9IGQtPmFyY2gudnRzYyA/IFg4Nl9DUjRfVFNEIDogMDsKIAog ICAgIHJldHVybiBjcjQ7CkBAIC01MjEsMTIgKzUzMSwxNCBAQCB2b2lkIHdyaXRlX3B0YmFzZShz dHJ1Y3QgdmNwdSAqdikKIAogICAgIG5ld19jcjQgPSAoaXNfcHZfdmNwdSh2KSAmJiAhaXNfaWRs ZV92Y3B1KHYpKQogICAgICAgICAgICAgICA/IHB2X2d1ZXN0X2NyNF90b19yZWFsX2NyNCh2KQot ICAgICAgICAgICAgICA6ICgocmVhZF9jcjQoKSAmIH5YODZfQ1I0X1RTRCkgfCBYODZfQ1I0X1BH RSk7CisgICAgICAgICAgICAgIDogKChyZWFkX2NyNCgpICYgfihYODZfQ1I0X1BDSURFIHwgWDg2 X0NSNF9UU0QpKSB8IFg4Nl9DUjRfUEdFKTsKIAogICAgIGlmICggaXNfcHZfdmNwdSh2KSAmJiB2 LT5kb21haW4tPmFyY2gucHZfZG9tYWluLnhwdGkgKQogICAgIHsKICAgICAgICAgY3B1X2luZm8t PnJvb3RfcGd0X2NoYW5nZWQgPSB0cnVlOwogICAgICAgICBjcHVfaW5mby0+cHZfY3IzID0gX19w YSh0aGlzX2NwdShyb290X3BndCkpOworICAgICAgICBpZiAoIG5ld19jcjQgJiBYODZfQ1I0X1BD SURFICkKKyAgICAgICAgICAgIGNwdV9pbmZvLT5wdl9jcjMgfD0gZ2V0X3BjaWRfYml0cyh2LCB0 cnVlKTsKICAgICAgICAgc3dpdGNoX2NyM19jcjQodi0+YXJjaC5jcjMsIG5ld19jcjQpOwogICAg IH0KICAgICBlbHNlCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvcHYvZG9tMF9idWlsZC5jIGIv eGVuL2FyY2gveDg2L3B2L2RvbTBfYnVpbGQuYwppbmRleCA0NDY1YTA1OWE4Li4zNGM3N2JjYmU0 IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvcHYvZG9tMF9idWlsZC5jCisrKyBiL3hlbi9hcmNo L3g4Ni9wdi9kb20wX2J1aWxkLmMKQEAgLTM4OCw2ICszODgsNyBAQCBpbnQgX19pbml0IGRvbTBf Y29uc3RydWN0X3B2KHN0cnVjdCBkb21haW4gKmQsCiAgICAgewogICAgICAgICBkLT5hcmNoLmlz XzMyYml0X3B2ID0gZC0+YXJjaC5oYXNfMzJiaXRfc2hpbmZvID0gMTsKICAgICAgICAgZC0+YXJj aC5wdl9kb21haW4ueHB0aSA9IGZhbHNlOworICAgICAgICBkLT5hcmNoLnB2X2RvbWFpbi5wY2lk ID0gZmFsc2U7CiAgICAgICAgIHYtPnZjcHVfaW5mbyA9ICh2b2lkICopJmQtPnNoYXJlZF9pbmZv LT5jb21wYXQudmNwdV9pbmZvWzBdOwogICAgICAgICBpZiAoIHNldHVwX2NvbXBhdF9hcmdfeGxh dCh2KSAhPSAwICkKICAgICAgICAgICAgIEJVRygpOwpAQCAtNzE3LDcgKzcxOCw3IEBAIGludCBf X2luaXQgZG9tMF9jb25zdHJ1Y3RfcHYoc3RydWN0IGRvbWFpbiAqZCwKICAgICAgICAgdXBkYXRl X2NyMyh2KTsKIAogICAgIC8qIFdlIHJ1biBvbiBkb20wJ3MgcGFnZSB0YWJsZXMgZm9yIHRoZSBm aW5hbCBwYXJ0IG9mIHRoZSBidWlsZCBwcm9jZXNzLiAqLwotICAgIHN3aXRjaF9jcjNfY3I0KHYt PmFyY2guY3IzLCByZWFkX2NyNCgpKTsKKyAgICBzd2l0Y2hfY3IzX2NyNChjcjNfcGEodi0+YXJj aC5jcjMpLCByZWFkX2NyNCgpKTsKICAgICBtYXBjYWNoZV9vdmVycmlkZV9jdXJyZW50KHYpOwog CiAgICAgLyogQ29weSB0aGUgT1MgaW1hZ2UgYW5kIGZyZWUgdGVtcG9yYXJ5IGJ1ZmZlci4gKi8K ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9wdi9kb21haW4uYyBiL3hlbi9hcmNoL3g4Ni9wdi9k b21haW4uYwppbmRleCBjZTFhMWE5ZDM1Li5hNGYwYmQyMzlkIDEwMDY0NAotLS0gYS94ZW4vYXJj aC94ODYvcHYvZG9tYWluLmMKKysrIGIveGVuL2FyY2gveDg2L3B2L2RvbWFpbi5jCkBAIC05LDkg KzksNTQgQEAKICNpbmNsdWRlIDx4ZW4vbGliLmg+CiAjaW5jbHVkZSA8eGVuL3NjaGVkLmg+CiAK KyNpbmNsdWRlIDxhc20vY3B1ZmVhdHVyZS5oPgorI2luY2x1ZGUgPGFzbS9pbnZwY2lkLmg+CiAj aW5jbHVkZSA8YXNtL3NwZWNfY3RybC5oPgogI2luY2x1ZGUgPGFzbS9wdi9kb21haW4uaD4KIAor c3RhdGljIF9fcmVhZF9tb3N0bHkgZW51bSB7CisgICAgUENJRF9PRkYsCisgICAgUENJRF9BTEws CisgICAgUENJRF9YUFRJLAorICAgIFBDSURfTk9YUFRJCit9IG9wdF9wY2lkID0gUENJRF9YUFRJ OworCitzdGF0aWMgX19pbml0IGludCBwYXJzZV9wY2lkKGNvbnN0IGNoYXIgKnMpCit7CisgICAg aW50IHJjID0gMDsKKworICAgIHN3aXRjaCAoIHBhcnNlX2Jvb2wocywgTlVMTCkgKQorICAgIHsK KyAgICBjYXNlIDA6CisgICAgICAgIG9wdF9wY2lkID0gUENJRF9PRkY7CisgICAgICAgIGJyZWFr OworCisgICAgY2FzZSAxOgorICAgICAgICBvcHRfcGNpZCA9IFBDSURfQUxMOworICAgICAgICBi cmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIHN3aXRjaCAoIHBhcnNlX2Jvb2xlYW4oInhw dGkiLCBzLCBOVUxMKSApCisgICAgICAgIHsKKyAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAg b3B0X3BjaWQgPSBQQ0lEX05PWFBUSTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNh c2UgMToKKyAgICAgICAgICAgIG9wdF9wY2lkID0gUENJRF9YUFRJOworICAgICAgICAgICAgYnJl YWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJjID0gLUVJTlZBTDsKKyAgICAg ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJl dHVybiByYzsKK30KK2N1c3RvbV9ydW50aW1lX3BhcmFtKCJwY2lkIiwgcGFyc2VfcGNpZCk7CisK IHN0YXRpYyB2b2lkIG5vcmV0dXJuIGNvbnRpbnVlX25vbmlkbGVfZG9tYWluKHN0cnVjdCB2Y3B1 ICp2KQogewogICAgIGNoZWNrX3dha2V1cF9mcm9tX3dhaXQoKTsKQEAgLTc3LDYgKzEyMiw3IEBA IGludCBzd2l0Y2hfY29tcGF0KHN0cnVjdCBkb21haW4gKmQpCiAgICAgZC0+YXJjaC54ODdfZmlw X3dpZHRoID0gNDsKIAogICAgIGQtPmFyY2gucHZfZG9tYWluLnhwdGkgPSBmYWxzZTsKKyAgICBk LT5hcmNoLnB2X2RvbWFpbi5wY2lkID0gZmFsc2U7CiAKICAgICByZXR1cm4gMDsKIApAQCAtMjEx LDYgKzI1NywyOSBAQCBpbnQgcHZfZG9tYWluX2luaXRpYWxpc2Uoc3RydWN0IGRvbWFpbiAqZCkK ICAgICBkLT5hcmNoLnB2X2RvbWFpbi54cHRpID0gb3B0X3hwdGkgJiAoaXNfaGFyZHdhcmVfZG9t YWluKGQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gT1BUX1hQ VElfRE9NMCA6IE9QVF9YUFRJX0RPTVUpOwogCisgICAgaWYgKCAhaXNfcHZfMzJiaXRfZG9tYWlu KGQpICYmIHVzZV9pbnZwY2lkICYmIGNwdV9oYXNfcGNpZCApCisgICAgICAgIHN3aXRjaCAoIG9w dF9wY2lkICkKKyAgICAgICAgeworICAgICAgICBjYXNlIFBDSURfT0ZGOgorICAgICAgICAgICAg YnJlYWs7CisKKyAgICAgICAgY2FzZSBQQ0lEX0FMTDoKKyAgICAgICAgICAgIGQtPmFyY2gucHZf ZG9tYWluLnBjaWQgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBQ Q0lEX1hQVEk6CisgICAgICAgICAgICBkLT5hcmNoLnB2X2RvbWFpbi5wY2lkID0gZC0+YXJjaC5w dl9kb21haW4ueHB0aTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUENJRF9O T1hQVEk6CisgICAgICAgICAgICBkLT5hcmNoLnB2X2RvbWFpbi5wY2lkID0gIWQtPmFyY2gucHZf ZG9tYWluLnhwdGk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAg ICAgICAgICAgQVNTRVJUX1VOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg ICAgfQorCiAgICAgcmV0dXJuIDA7CiAKICAgZmFpbDoKQEAgLTIyMSw5ICsyOTAsMTkgQEAgaW50 IHB2X2RvbWFpbl9pbml0aWFsaXNlKHN0cnVjdCBkb21haW4gKmQpCiAKIHN0YXRpYyB2b2lkIF90 b2dnbGVfZ3Vlc3RfcHQoc3RydWN0IHZjcHUgKnYpCiB7CisgICAgY29uc3Qgc3RydWN0IGRvbWFp biAqZCA9IHYtPmRvbWFpbjsKKwogICAgIHYtPmFyY2guZmxhZ3MgXj0gVEZfa2VybmVsX21vZGU7 CiAgICAgdXBkYXRlX2NyMyh2KTsKLSAgICBnZXRfY3B1X2luZm8oKS0+cm9vdF9wZ3RfY2hhbmdl ZCA9IHRydWU7CisgICAgaWYgKCBkLT5hcmNoLnB2X2RvbWFpbi54cHRpICkKKyAgICB7CisgICAg ICAgIHN0cnVjdCBjcHVfaW5mbyAqY3B1X2luZm8gPSBnZXRfY3B1X2luZm8oKTsKKworICAgICAg ICBjcHVfaW5mby0+cm9vdF9wZ3RfY2hhbmdlZCA9IHRydWU7CisgICAgICAgIGNwdV9pbmZvLT5w dl9jcjMgPSBfX3BhKHRoaXNfY3B1KHJvb3RfcGd0KSkgfAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGQtPmFyY2gucHZfZG9tYWluLnBjaWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICA/IGdldF9wY2lkX2JpdHModiwgdHJ1ZSkgOiAwKTsKKyAgICB9CiAKICAgICAvKiBEb24ndCBm bHVzaCB1c2VyIGdsb2JhbCBtYXBwaW5ncyBmcm9tIHRoZSBUTEIuIERvbid0IHRpY2sgVExCIGNs b2NrLiAqLwogICAgIHdyaXRlX2NyMyh2LT5hcmNoLmNyMyk7CmRpZmYgLS1naXQgYS94ZW4vaW5j bHVkZS9hc20teDg2L2RvbWFpbi5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9kb21haW4uaAppbmRl eCA5NjI3MDU4Y2QwLi44YjY2MDk2ZTdmIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2 L2RvbWFpbi5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvZG9tYWluLmgKQEAgLTI1NSw2ICsy NTUsOCBAQCBzdHJ1Y3QgcHZfZG9tYWluCiAKICAgICAvKiBYUFRJIGFjdGl2ZT8gKi8KICAgICBi b29sIHhwdGk7CisgICAgLyogVXNlIFBDSUQgZmVhdHVyZT8gKi8KKyAgICBib29sIHBjaWQ7CiAK ICAgICAvKiBtYXBfZG9tYWluX3BhZ2UoKSBtYXBwaW5nIGNhY2hlLiAqLwogICAgIHN0cnVjdCBt YXBjYWNoZV9kb21haW4gbWFwY2FjaGU7CkBAIC02MjAsNyArNjIyLDcgQEAgdW5zaWduZWQgbG9u ZyBwdl9ndWVzdF9jcjRfdG9fcmVhbF9jcjQoY29uc3Qgc3RydWN0IHZjcHUgKnYpOwogI2RlZmlu ZSByZWFsX2NyNF90b19wdl9ndWVzdF9jcjQoYykgICAgICAgICAgICAgICAgICAgICAgICAgXAog ICAgICgoYykgJiB+KFg4Nl9DUjRfUEdFIHwgWDg2X0NSNF9QU0UgfCBYODZfQ1I0X1RTRCB8ICAg ICAgXAogICAgICAgICAgICAgIFg4Nl9DUjRfT1NYU0FWRSB8IFg4Nl9DUjRfU01FUCB8ICAgICAg ICAgICAgICAgXAotICAgICAgICAgICAgIFg4Nl9DUjRfRlNHU0JBU0UgfCBYODZfQ1I0X1NNQVAp KQorICAgICAgICAgICAgIFg4Nl9DUjRfRlNHU0JBU0UgfCBYODZfQ1I0X1NNQVAgfCBYODZfQ1I0 X1BDSURFKSkKIAogI2RlZmluZSBkb21haW5fbWF4X3ZjcHVzKGQpIChpc19odm1fZG9tYWluKGQp ID8gSFZNX01BWF9WQ1BVUyA6IE1BWF9WSVJUX0NQVVMpCiAKZGlmZiAtLWdpdCBhL3hlbi9pbmNs dWRlL2FzbS14ODYvcHJvY2Vzc29yLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L3Byb2Nlc3Nvci5o CmluZGV4IDM2NjI4NDU5ZGMuLmM0YWEzODVhNmYgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2Fz bS14ODYvcHJvY2Vzc29yLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wcm9jZXNzb3IuaApA QCAtMzA1LDYgKzMwNSw5IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyByZWFkX2NyNCh2 b2lkKQogCiBzdGF0aWMgaW5saW5lIHZvaWQgd3JpdGVfY3I0KHVuc2lnbmVkIGxvbmcgdmFsKQog eworICAgIC8qIE5vIGdsb2JhbCBwYWdlcyBpbiBjYXNlIG9mIFBDSURzIGVuYWJsZWQhICovCisg ICAgQVNTRVJUKCEodmFsICYgWDg2X0NSNF9QR0UpIHx8ICEodmFsICYgWDg2X0NSNF9QQ0lERSkp OworCiAgICAgZ2V0X2NwdV9pbmZvKCktPmNyNCA9IHZhbDsKICAgICBhc20gdm9sYXRpbGUgKCAi bW92ICUwLCUlY3I0IiA6IDogInIiICh2YWwpICk7CiB9CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVk ZS9hc20teDg2L3B2L2RvbWFpbi5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wdi9kb21haW4uaApp bmRleCA1ZTM0MTc2OTM5Li40ZmVhNzY0NDRhIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20t eDg2L3B2L2RvbWFpbi5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcHYvZG9tYWluLmgKQEAg LTIxLDYgKzIxLDM3IEBACiAjaWZuZGVmIF9fWDg2X1BWX0RPTUFJTl9IX18KICNkZWZpbmUgX19Y ODZfUFZfRE9NQUlOX0hfXwogCisvKgorICogUENJRCB2YWx1ZXMgZm9yIHRoZSBhZGRyZXNzIHNw YWNlcyBvZiA2NC1iaXQgcHYgZG9tYWluczoKKyAqCisgKiBXZSBhcmUgdXNpbmcgNCBQQ0lEIHZh bHVlcyBmb3IgYSA2NCBiaXQgcHYgZG9tYWluIHN1YmplY3QgdG8gWFBUSToKKyAqIC0gaHlwZXJ2 aXNvciBhY3RpdmUgYW5kIGd1ZXN0IGluIGtlcm5lbCBtb2RlICAgUENJRCAwCisgKiAtIGh5cGVy dmlzb3IgYWN0aXZlIGFuZCBndWVzdCBpbiB1c2VyIG1vZGUgICAgIFBDSUQgMQorICogLSBndWVz dCBhY3RpdmUgYW5kIGluIGtlcm5lbCBtb2RlICAgICAgICAgICAgICBQQ0lEIDIKKyAqIC0gZ3Vl c3QgYWN0aXZlIGFuZCBpbiB1c2VyIG1vZGUgICAgICAgICAgICAgICAgUENJRCAzCisgKgorICog V2l0aG91dCBYUFRJIG9ubHkgMiB2YWx1ZXMgYXJlIHVzZWQ6CisgKiAtIGd1ZXN0IGluIGtlcm5l bCBtb2RlICAgICAgICAgICAgICAgICAgICAgICAgIFBDSUQgMAorICogLSBndWVzdCBpbiB1c2Vy IG1vZGUgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0lEIDEKKyAqLworCisjZGVmaW5lIFBD SURfUFZfUFJJViAgICAgIDB4MDAwMCAgICAvKiBVc2VkIGZvciBvdGhlciBkb21haW5zLCB0b28u ICovCisjZGVmaW5lIFBDSURfUFZfVVNFUiAgICAgIDB4MDAwMQorI2RlZmluZSBQQ0lEX1BWX1hQ VEkgICAgICAweDAwMDIgICAgLyogVG8gYmUgT1JlZCB0byBhYm92ZSB2YWx1ZXMuICovCisKKy8q CisgKiBSZXR1cm4gYWRkaXRpb25hbCBQQ0lEIHNwZWNpZmljIGNyMyBiaXRzLgorICoKKyAqIE5v dGUgdGhhdCBYODZfQ1IzX05PRkxVU0ggd2lsbCBub3QgYmUgcmVhZGFibGUgaW4gY3IzLiBBbnlv bmUgY29uc3VtaW5nCisgKiB2LT5hcmNoLmNyMyBzaG91bGQgbWFzayBhd2F5IFg4Nl9DUjNfTk9G TFVTSCBhbmQgWDg2X0NSM19QQ0lETUFTSyBpbiBjYXNlCisgKiB0aGUgdmFsdWUgaXMgdXNlZCB0 byBhZGRyZXNzIHRoZSByb290IHBhZ2UgdGFibGUuCisgKi8KK3N0YXRpYyBpbmxpbmUgdW5zaWdu ZWQgbG9uZyBnZXRfcGNpZF9iaXRzKGNvbnN0IHN0cnVjdCB2Y3B1ICp2LCBib29sIGlzX3hwdGkp Cit7CisgICAgcmV0dXJuIFg4Nl9DUjNfTk9GTFVTSCB8IChpc194cHRpID8gUENJRF9QVl9YUFRJ IDogMCkgfAorICAgICAgICAgICAoKHYtPmFyY2guZmxhZ3MgJiBURl9rZXJuZWxfbW9kZSkgPyBQ Q0lEX1BWX1BSSVYgOiBQQ0lEX1BWX1VTRVIpOworfQorCiAjaWZkZWYgQ09ORklHX1BWCiAKIHZv aWQgcHZfdmNwdV9kZXN0cm95KHN0cnVjdCB2Y3B1ICp2KTsKLS0gCjIuMTMuNgoKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5n IGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJv amVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=