From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex =?utf-8?Q?Benn=C3=A9e?= Subject: Re: [PATCH v4 02/28] arm64: KVM: Hide unsupported AArch64 CPU features from guests Date: Tue, 31 Oct 2017 10:57:32 +0000 Message-ID: <874lqfinz7.fsf@linaro.org> References: <1509101470-7881-1-git-send-email-Dave.Martin@arm.com> <1509101470-7881-3-git-send-email-Dave.Martin@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from localhost (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id 0A9B449D19 for ; Tue, 31 Oct 2017 06:56:01 -0400 (EDT) Received: from mm01.cs.columbia.edu ([127.0.0.1]) by localhost (mm01.cs.columbia.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 50ifTXPnvs+I for ; Tue, 31 Oct 2017 06:55:59 -0400 (EDT) Received: from mail-wm0-f67.google.com (mail-wm0-f67.google.com [74.125.82.67]) by mm01.cs.columbia.edu (Postfix) with ESMTPS id 2D34140795 for ; Tue, 31 Oct 2017 06:55:59 -0400 (EDT) Received: by mail-wm0-f67.google.com with SMTP id y83so22107135wmc.4 for ; Tue, 31 Oct 2017 03:57:34 -0700 (PDT) In-reply-to: <1509101470-7881-3-git-send-email-Dave.Martin@arm.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kvmarm-bounces@lists.cs.columbia.edu Sender: kvmarm-bounces@lists.cs.columbia.edu To: Dave Martin Cc: linux-arch@vger.kernel.org, Okamoto Takayuki , libc-alpha@sourceware.org, Ard Biesheuvel , Szabolcs Nagy , Catalin Marinas , Will Deacon , kvmarm@lists.cs.columbia.edu, linux-arm-kernel@lists.infradead.org List-Id: kvmarm@lists.cs.columbia.edu CkRhdmUgTWFydGluIDxEYXZlLk1hcnRpbkBhcm0uY29tPiB3cml0ZXM6Cgo+IEN1cnJlbnRseSwg YSBndWVzdCBrZXJuZWwgc2VlcyB0aGUgdHJ1ZSBDUFUgZmVhdHVyZSByZWdpc3RlcnMKPiAoSURf Kl9FTDEpIHdoZW4gaXQgcmVhZHMgdGhlbSB1c2luZyBNUlMgaW5zdHJ1Y3Rpb25zLiAgVGhpcyBt ZWFucwo+IHRoYXQgdGhlIGd1ZXN0IG1heSBvYnNlcnZlIGZlYXR1cmVzIHRoYXQgYXJlIHByZXNl bnQgaW4gdGhlCj4gaGFyZHdhcmUgYnV0IHRoZSBob3N0IGRvZXNuJ3QgdW5kZXJzdGFuZCBvciBk b2Vzbid0IHByb3ZpZGUgc3VwcG9ydAo+IGZvci4gIEEgZ3Vlc3QgbWF5IGxlZ2ltaXRhdGVseSB0 cnkgdG8gdXNlIHN1Y2ggYSBmZWF0dXJlIGFzIHBlciB0aGUKPiBhcmNoaXRlY3R1cmUsIGJ1dCB1 c2Ugb2YgdGhlIGZlYXR1cmUgbWF5IHRyYXAgaW5zdGVhZCBvZiB3b3JraW5nCj4gbm9ybWFsbHks IHRyaWdnZXJpbmcgdW5kZWYgaW5qZWN0aW9uIGludG8gdGhlIGd1ZXN0Lgo+Cj4gVGhpcyBpcyBu b3QgYSBwcm9ibGVtIGZvciB0aGUgaG9zdCwgYnV0IHRoZSBndWVzdCBtYXkgZ28gd3Jvbmcgd2hl bgo+IHJ1bm5pbmcgb24gbmV3ZXIgaGFyZHdhcmUgdGhhbiB0aGUgaG9zdCBrbm93cyBhYm91dC4K Pgo+IFRoaXMgcGF0Y2ggaGlkZXMgZnJvbSBndWVzdCBWTXMgYW55IEFBcmNoNjQtc3BlY2lmaWMg Q1BVIGZlYXR1cmVzCj4gdGhhdCB0aGUgaG9zdCBkb2Vzbid0IHN1cHBvcnQsIGJ5IGV4cG9zaW5n IHRvIHRoZSBndWVzdCB0aGUKPiBzYW5pdGlzZWQgdmVyc2lvbnMgb2YgdGhlIHJlZ2lzdGVycyBj b21wdXRlZCBieSB0aGUgY3B1ZmVhdHVyZXMKPiBmcmFtZXdvcmssIGluc3RlYWQgb2YgdGhlIHRy dWUgaGFyZHdhcmUgcmVnaXN0ZXJzLiAgVG8gYWNoaWV2ZQo+IHRoaXMsIEhDUl9FTDIuVElEMyBp cyBub3cgc2V0IGZvciBBQXJjaDY0IGd1ZXN0cywgYW5kIGVtdWxhdGlvbgo+IGNvZGUgaXMgYWRk ZWQgdG8gS1ZNIHRvIHJlcG9ydCB0aGUgc2FuaXRpc2VkIHZlcnNpb25zIG9mIHRoZQo+IGFmZmVj dGVkIHJlZ2lzdGVycyBpbiByZXNwb25zZSB0byBNUlMgYW5kIHJlZ2lzdGVyIHJlYWRzIGZyb20K PiB1c2Vyc3BhY2UuCj4KPiBUaGUgYWZmZWN0ZWQgcmVnaXN0ZXJzIGFyZSByZW1vdmVkIGZyb20g aW52YXJpYW50X3N5c19yZWdzW10gKHNpbmNlCj4gdGhlIGludmFyaWFudF9zeXNfcmVncyBoYW5k bGluZyBpcyBubyBsb25nZXIgcXVpdGUgY29ycmVjdCBmb3IKPiB0aGVtKSBhbmQgYWRkZWQgdG8g c3lzX3JlZ19kZXNnc1tdLCB3aXRoIGFwcHJvcHJpYXRlIGFjY2VzcygpLAo+IGdldF91c2VyKCkg YW5kIHNldF91c2VyKCkgbWV0aG9kcy4gIE5vIHJ1bnRpbWUgdmNwdSBzdG9yYWdlIGlzCj4gYWxs b2NhdGVkIGZvciB0aGUgcmVnaXN0ZXJzOiBpbnN0ZWFkLCB0aGV5IGFyZSByZWFkIG9uIGRlbWFu ZCBmcm9tCj4gdGhlIGNwdWZlYXR1cmVzIGZyYW1ld29yay4gIFRoaXMgbWF5IG5lZWQgbW9kaWZp Y2F0aW9uIGluIHRoZQo+IGZ1dHVyZSBpZiB0aGVyZSBpcyBhIG5lZWQgZm9yIHVzZXJzcGFjZSB0 byBjdXN0b21pc2UgdGhlIGZlYXR1cmVzCj4gdmlzaWJsZSB0byB0aGUgZ3Vlc3QuCj4KPiBBdHRl bXB0cyBieSB1c2Vyc3BhY2UgdG8gd3JpdGUgdGhlIHJlZ2lzdGVycyBhcmUgaGFuZGxlZCBzaW1p bGFybHkKPiB0byB0aGUgY3VycmVudCBpbnZhcmlhbnRfc3lzX3JlZ3MgaGFuZGxpbmc6IHdyaXRl cyBhcmUgcGVybWl0dGVkLAo+IGJ1dCBvbmx5IGlmIHRoZXkgZG9uJ3QgYXR0ZW1wdCB0byBjaGFu Z2UgdGhlIHZhbHVlLiAgVGhpcyBpcwo+IHN1ZmZpY2llbnQgdG8gc3VwcG9ydCBWTSBzbmFwc2hv dC9yZXN0b3JlIGZyb20gdXNlcnNwYWNlLgo+Cj4gQmVjYXVzZSBvZiB0aGUgYWRkaXRpb25hbCBy ZWdpc3RlcnMsIHJlc3RvcmluZyBhIFZNIG9uIGFuIG9sZGVyCj4ga2VybmVsIG1heSBub3Qgd29y ayB1bmxlc3MgdXNlcnNwYWNlIGtub3dzIGhvdyB0byBoYW5kbGUgdGhlIGV4dHJhCj4gVk0gcmVn aXN0ZXJzIGV4cG9zZWQgdG8gdGhlIEtWTSB1c2VyIEFCSSBieSB0aGlzIHBhdGNoLgo+Cj4gVW5k ZXIgdGhlIHByaW5jaXBsZSBvZiBsZWFzdCBkYW1hZ2UsIHRoaXMgcGF0Y2ggbWFrZXMgbm8gYXR0 ZW1wdCB0bwo+IGhhbmRsZSBhbnkgb2YgdGhlIG90aGVyIHJlZ2lzdGVycyBjdXJyZW50bHkgaW4K PiBpbnZhcmlhbnRfc3lzX3JlZ3NbXSwgb3IgdG8gZW11bGF0ZSByZWdpc3RlcnMgZm9yIEFBcmNo MzI6IGhvd2V2ZXIsCj4gdGhlc2UgY291bGQgYmUgaGFuZGxlZCBpbiBhIHNpbWlsYXIgd2F5IGlu IGZ1dHVyZSwgYXMgbmVjZXNzYXJ5Lgo+Cj4gU2lnbmVkLW9mZi1ieTogRGF2ZSBNYXJ0aW4gPERh dmUuTWFydGluQGFybS5jb20+Cj4gUmV2aWV3ZWQtYnk6IE1hcmMgWnluZ2llciA8bWFyYy56eW5n aWVyQGFybS5jb20+Cj4gQWNrZWQtYnk6IENhdGFsaW4gTWFyaW5hcyA8Y2F0YWxpbi5tYXJpbmFz QGFybS5jb20+Cj4gQ2M6IENocmlzdG9mZmVyIERhbGwgPGNocmlzdG9mZmVyLmRhbGxAbGluYXJv Lm9yZz4KClJldmlld2VkLWJ5OiBBbGV4IEJlbm7DqWUgPGFsZXguYmVubmVlQGxpbmFyby5vcmc+ Cgo+IC0tLQo+ICBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N5c3JlZy5oIHwgICAzICsKPiAgYXJj aC9hcm02NC9rdm0vaHlwL3N3aXRjaC5jICAgICB8ICAgNiArCj4gIGFyY2gvYXJtNjQva3ZtL3N5 c19yZWdzLmMgICAgICAgfCAyODIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0t LS0tLQo+ICAzIGZpbGVzIGNoYW5nZWQsIDI0NiBpbnNlcnRpb25zKCspLCA0NSBkZWxldGlvbnMo LSkKPgo+IGRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N5c3JlZy5oIGIvYXJj aC9hcm02NC9pbmNsdWRlL2FzbS9zeXNyZWcuaAo+IGluZGV4IDRkY2ViMTIuLjYwOWQ1OWFmIDEw MDY0NAo+IC0tLSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3lzcmVnLmgKPiArKysgYi9hcmNo L2FybTY0L2luY2x1ZGUvYXNtL3N5c3JlZy5oCj4gQEAgLTE0OSw2ICsxNDksOSBAQAo+ICAjZGVm aW5lIFNZU19JRF9BQTY0REZSMF9FTDEJCXN5c19yZWcoMywgMCwgMCwgNSwgMCkKPiAgI2RlZmlu ZSBTWVNfSURfQUE2NERGUjFfRUwxCQlzeXNfcmVnKDMsIDAsIDAsIDUsIDEpCj4KPiArI2RlZmlu ZSBTWVNfSURfQUE2NEFGUjBfRUwxCQlzeXNfcmVnKDMsIDAsIDAsIDUsIDQpCj4gKyNkZWZpbmUg U1lTX0lEX0FBNjRBRlIxX0VMMQkJc3lzX3JlZygzLCAwLCAwLCA1LCA1KQo+ICsKPiAgI2RlZmlu ZSBTWVNfSURfQUE2NElTQVIwX0VMMQkJc3lzX3JlZygzLCAwLCAwLCA2LCAwKQo+ICAjZGVmaW5l IFNZU19JRF9BQTY0SVNBUjFfRUwxCQlzeXNfcmVnKDMsIDAsIDAsIDYsIDEpCj4KPiBkaWZmIC0t Z2l0IGEvYXJjaC9hcm02NC9rdm0vaHlwL3N3aXRjaC5jIGIvYXJjaC9hcm02NC9rdm0vaHlwL3N3 aXRjaC5jCj4gaW5kZXggOTQ1ZTc5Yy4uMzVhOTBiOCAxMDA2NDQKPiAtLS0gYS9hcmNoL2FybTY0 L2t2bS9oeXAvc3dpdGNoLmMKPiArKysgYi9hcmNoL2FybTY0L2t2bS9oeXAvc3dpdGNoLmMKPiBA QCAtODEsMTEgKzgxLDE3IEBAIHN0YXRpYyB2b2lkIF9faHlwX3RleHQgX19hY3RpdmF0ZV90cmFw cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCj4gIAkgKiBpdCB3aWxsIGNhdXNlIGFuIGV4Y2VwdGlv bi4KPiAgCSAqLwo+ICAJdmFsID0gdmNwdS0+YXJjaC5oY3JfZWwyOwo+ICsKPiAgCWlmICghKHZh bCAmIEhDUl9SVykgJiYgc3lzdGVtX3N1cHBvcnRzX2Zwc2ltZCgpKSB7Cj4gIAkJd3JpdGVfc3lz cmVnKDEgPDwgMzAsIGZwZXhjMzJfZWwyKTsKPiAgCQlpc2IoKTsKPiAgCX0KPiArCj4gKwlpZiAo dmFsICYgSENSX1JXKSAvKiBmb3IgQUFyY2g2NCBvbmx5OiAqLwo+ICsJCXZhbCB8PSBIQ1JfVElE MzsgLyogVElEMzogdHJhcCBmZWF0dXJlIHJlZ2lzdGVyIGFjY2Vzc2VzICovCj4gKwo+ICAJd3Jp dGVfc3lzcmVnKHZhbCwgaGNyX2VsMik7Cj4gKwo+ICAJLyogVHJhcCBvbiBBQXJjaDMyIGNwMTUg YzE1IGFjY2Vzc2VzIChFTDEgb3IgRUwwKSAqLwo+ICAJd3JpdGVfc3lzcmVnKDEgPDwgMTUsIGhz dHJfZWwyKTsKPiAgCS8qCj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL3N5c19yZWdzLmMg Yi9hcmNoL2FybTY0L2t2bS9zeXNfcmVncy5jCj4gaW5kZXggMmUwNzBkMy4uYjFmNzU1MiAxMDA2 NDQKPiAtLS0gYS9hcmNoL2FybTY0L2t2bS9zeXNfcmVncy5jCj4gKysrIGIvYXJjaC9hcm02NC9r dm0vc3lzX3JlZ3MuYwo+IEBAIC04OTIsNiArODkyLDEzNyBAQCBzdGF0aWMgYm9vbCBhY2Nlc3Nf Y250cF9jdmFsKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwKPiAgCXJldHVybiB0cnVlOwo+ICB9Cj4K PiArLyogUmVhZCBhIHNhbml0aXNlZCBjcHVmZWF0dXJlIElEIHJlZ2lzdGVyIGJ5IHN5c19yZWdf ZGVzYyAqLwo+ICtzdGF0aWMgdTY0IHJlYWRfaWRfcmVnKHN0cnVjdCBzeXNfcmVnX2Rlc2MgY29u c3QgKnIsIGJvb2wgcmF6KQo+ICt7Cj4gKwl1MzIgaWQgPSBzeXNfcmVnKCh1MzIpci0+T3AwLCAo dTMyKXItPk9wMSwKPiArCQkJICh1MzIpci0+Q1JuLCAodTMyKXItPkNSbSwgKHUzMilyLT5PcDIp Owo+ICsKPiArCXJldHVybiByYXogPyAwIDogcmVhZF9zYW5pdGlzZWRfZnRyX3JlZyhpZCk7Cj4g K30KPiArCj4gKy8qIGNwdWZlYXR1cmUgSUQgcmVnaXN0ZXIgYWNjZXNzIHRyYXAgaGFuZGxlcnMg Ki8KPiArCj4gK3N0YXRpYyBib29sIF9fYWNjZXNzX2lkX3JlZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZj cHUsCj4gKwkJCSAgICBzdHJ1Y3Qgc3lzX3JlZ19wYXJhbXMgKnAsCj4gKwkJCSAgICBjb25zdCBz dHJ1Y3Qgc3lzX3JlZ19kZXNjICpyLAo+ICsJCQkgICAgYm9vbCByYXopCj4gK3sKPiArCWlmIChw LT5pc193cml0ZSkKPiArCQlyZXR1cm4gd3JpdGVfdG9fcmVhZF9vbmx5KHZjcHUsIHAsIHIpOwo+ ICsKPiArCXAtPnJlZ3ZhbCA9IHJlYWRfaWRfcmVnKHIsIHJheik7Cj4gKwlyZXR1cm4gdHJ1ZTsK PiArfQo+ICsKPiArc3RhdGljIGJvb2wgYWNjZXNzX2lkX3JlZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZj cHUsCj4gKwkJCSAgc3RydWN0IHN5c19yZWdfcGFyYW1zICpwLAo+ICsJCQkgIGNvbnN0IHN0cnVj dCBzeXNfcmVnX2Rlc2MgKnIpCj4gK3sKPiArCXJldHVybiBfX2FjY2Vzc19pZF9yZWcodmNwdSwg cCwgciwgZmFsc2UpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgYm9vbCBhY2Nlc3NfcmF6X2lkX3JlZyhz dHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCj4gKwkJCSAgICAgIHN0cnVjdCBzeXNfcmVnX3BhcmFtcyAq cCwKPiArCQkJICAgICAgY29uc3Qgc3RydWN0IHN5c19yZWdfZGVzYyAqcikKPiArewo+ICsJcmV0 dXJuIF9fYWNjZXNzX2lkX3JlZyh2Y3B1LCBwLCByLCB0cnVlKTsKPiArfQo+ICsKPiArc3RhdGlj IGludCByZWdfZnJvbV91c2VyKHU2NCAqdmFsLCBjb25zdCB2b2lkIF9fdXNlciAqdWFkZHIsIHU2 NCBpZCk7Cj4gK3N0YXRpYyBpbnQgcmVnX3RvX3VzZXIodm9pZCBfX3VzZXIgKnVhZGRyLCBjb25z dCB1NjQgKnZhbCwgdTY0IGlkKTsKPiArc3RhdGljIHU2NCBzeXNfcmVnX3RvX2luZGV4KGNvbnN0 IHN0cnVjdCBzeXNfcmVnX2Rlc2MgKnJlZyk7Cj4gKwo+ICsvKgo+ICsgKiBjcHVmZWF0dXJlIElE IHJlZ2lzdGVyIHVzZXIgYWNjZXNzb3JzCj4gKyAqCj4gKyAqIEZvciBub3csIHRoZXNlIHJlZ2lz dGVycyBhcmUgaW1tdXRhYmxlIGZvciB1c2Vyc3BhY2UsIHNvIG5vIHZhbHVlcwo+ICsgKiBhcmUg c3RvcmVkLCBhbmQgZm9yIHNldF9pZF9yZWcoKSB3ZSBkb24ndCBhbGxvdyB0aGUgZWZmZWN0aXZl IHZhbHVlCj4gKyAqIHRvIGJlIGNoYW5nZWQuCj4gKyAqLwo+ICtzdGF0aWMgaW50IF9fZ2V0X2lk X3JlZyhjb25zdCBzdHJ1Y3Qgc3lzX3JlZ19kZXNjICpyZCwgdm9pZCBfX3VzZXIgKnVhZGRyLAo+ ICsJCQlib29sIHJheikKPiArewo+ICsJY29uc3QgdTY0IGlkID0gc3lzX3JlZ190b19pbmRleChy ZCk7Cj4gKwljb25zdCB1NjQgdmFsID0gcmVhZF9pZF9yZWcocmQsIHJheik7Cj4gKwo+ICsJcmV0 dXJuIHJlZ190b191c2VyKHVhZGRyLCAmdmFsLCBpZCk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQg X19zZXRfaWRfcmVnKGNvbnN0IHN0cnVjdCBzeXNfcmVnX2Rlc2MgKnJkLCB2b2lkIF9fdXNlciAq dWFkZHIsCj4gKwkJCWJvb2wgcmF6KQo+ICt7Cj4gKwljb25zdCB1NjQgaWQgPSBzeXNfcmVnX3Rv X2luZGV4KHJkKTsKPiArCWludCBlcnI7Cj4gKwl1NjQgdmFsOwo+ICsKPiArCWVyciA9IHJlZ19m cm9tX3VzZXIoJnZhbCwgdWFkZHIsIGlkKTsKPiArCWlmIChlcnIpCj4gKwkJcmV0dXJuIGVycjsK PiArCj4gKwkvKiBUaGlzIGlzIHdoYXQgd2UgbWVhbiBieSBpbnZhcmlhbnQ6IHlvdSBjYW4ndCBj aGFuZ2UgaXQuICovCj4gKwlpZiAodmFsICE9IHJlYWRfaWRfcmVnKHJkLCByYXopKQo+ICsJCXJl dHVybiAtRUlOVkFMOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGdl dF9pZF9yZWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCBzdHJ1Y3Qgc3lzX3JlZ19kZXNj ICpyZCwKPiArCQkgICAgICBjb25zdCBzdHJ1Y3Qga3ZtX29uZV9yZWcgKnJlZywgdm9pZCBfX3Vz ZXIgKnVhZGRyKQo+ICt7Cj4gKwlyZXR1cm4gX19nZXRfaWRfcmVnKHJkLCB1YWRkciwgZmFsc2Up Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHNldF9pZF9yZWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1 LCBjb25zdCBzdHJ1Y3Qgc3lzX3JlZ19kZXNjICpyZCwKPiArCQkgICAgICBjb25zdCBzdHJ1Y3Qg a3ZtX29uZV9yZWcgKnJlZywgdm9pZCBfX3VzZXIgKnVhZGRyKQo+ICt7Cj4gKwlyZXR1cm4gX19z ZXRfaWRfcmVnKHJkLCB1YWRkciwgZmFsc2UpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGdldF9y YXpfaWRfcmVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3Qgc3RydWN0IHN5c19yZWdfZGVz YyAqcmQsCj4gKwkJCSAgY29uc3Qgc3RydWN0IGt2bV9vbmVfcmVnICpyZWcsIHZvaWQgX191c2Vy ICp1YWRkcikKPiArewo+ICsJcmV0dXJuIF9fZ2V0X2lkX3JlZyhyZCwgdWFkZHIsIHRydWUpOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHNldF9yYXpfaWRfcmVnKHN0cnVjdCBrdm1fdmNwdSAqdmNw dSwgY29uc3Qgc3RydWN0IHN5c19yZWdfZGVzYyAqcmQsCj4gKwkJCSAgY29uc3Qgc3RydWN0IGt2 bV9vbmVfcmVnICpyZWcsIHZvaWQgX191c2VyICp1YWRkcikKPiArewo+ICsJcmV0dXJuIF9fc2V0 X2lkX3JlZyhyZCwgdWFkZHIsIHRydWUpOwo+ICt9Cj4gKwo+ICsvKiBzeXNfcmVnX2Rlc2MgaW5p dGlhbGlzZXIgZm9yIGtub3duIGNwdWZlYXR1cmUgSUQgcmVnaXN0ZXJzICovCj4gKyNkZWZpbmUg SURfU0FOSVRJU0VEKG5hbWUpIHsJCQlcCj4gKwlTWVNfREVTQyhTWVNfIyNuYW1lKSwJCQlcCj4g KwkuYWNjZXNzCT0gYWNjZXNzX2lkX3JlZywJCVwKPiArCS5nZXRfdXNlciA9IGdldF9pZF9yZWcs CQkJXAo+ICsJLnNldF91c2VyID0gc2V0X2lkX3JlZywJCQlcCj4gK30KPiArCj4gKy8qCj4gKyAq IHN5c19yZWdfZGVzYyBpbml0aWFsaXNlciBmb3IgYXJjaGl0ZWN0dXJhbGx5IHVuYWxsb2NhdGVk IGNwdWZlYXR1cmUgSUQKPiArICogcmVnaXN0ZXIgd2l0aCBlbmNvZGluZyBPcDA9MywgT3AxPTAs IENSbj0wLCBDUm09Y3JtLCBPcDI9b3AyCj4gKyAqICgxIDw9IGNybSA8IDgsIDAgPD0gT3AyIDwg OCkuCj4gKyAqLwo+ICsjZGVmaW5lIElEX1VOQUxMT0NBVEVEKGNybSwgb3AyKSB7CQkJXAo+ICsJ T3AwKDMpLCBPcDEoMCksIENSbigwKSwgQ1JtKGNybSksIE9wMihvcDIpLAlcCj4gKwkuYWNjZXNz ID0gYWNjZXNzX3Jhel9pZF9yZWcsCQkJXAo+ICsJLmdldF91c2VyID0gZ2V0X3Jhel9pZF9yZWcs CQkJXAo+ICsJLnNldF91c2VyID0gc2V0X3Jhel9pZF9yZWcsCQkJXAo+ICt9Cj4gKwo+ICsvKgo+ ICsgKiBzeXNfcmVnX2Rlc2MgaW5pdGlhbGlzZXIgZm9yIGtub3duIElEIHJlZ2lzdGVycyB0aGF0 IHdlIGhpZGUgZnJvbSBndWVzdHMuCj4gKyAqIEZvciBub3csIHRoZXNlIGFyZSBleHBvc2VkIGp1 c3QgbGlrZSB1bmFsbG9jYXRlZCBJRCByZWdzOiB0aGV5IGFwcGVhcgo+ICsgKiBSQVogZm9yIHRo ZSBndWVzdC4KPiArICovCj4gKyNkZWZpbmUgSURfSElEREVOKG5hbWUpIHsJCQlcCj4gKwlTWVNf REVTQyhTWVNfIyNuYW1lKSwJCQlcCj4gKwkuYWNjZXNzID0gYWNjZXNzX3Jhel9pZF9yZWcsCQlc Cj4gKwkuZ2V0X3VzZXIgPSBnZXRfcmF6X2lkX3JlZywJCVwKPiArCS5zZXRfdXNlciA9IHNldF9y YXpfaWRfcmVnLAkJXAo+ICt9Cj4gKwo+ICAvKgo+ICAgKiBBcmNoaXRlY3RlZCBzeXN0ZW0gcmVn aXN0ZXJzLgo+ICAgKiBJbXBvcnRhbnQ6IE11c3QgYmUgc29ydGVkIGFzY2VuZGluZyBieSBPcDAs IE9wMSwgQ1JuLCBDUm0sIE9wMgo+IEBAIC05NDQsNiArMTA3NSw4NCBAQCBzdGF0aWMgY29uc3Qg c3RydWN0IHN5c19yZWdfZGVzYyBzeXNfcmVnX2Rlc2NzW10gPSB7Cj4gIAl7IFNZU19ERVNDKFNZ U19EQkdWQ1IzMl9FTDIpLCBOVUxMLCByZXNldF92YWwsIERCR1ZDUjMyX0VMMiwgMCB9LAo+Cj4g IAl7IFNZU19ERVNDKFNZU19NUElEUl9FTDEpLCBOVUxMLCByZXNldF9tcGlkciwgTVBJRFJfRUwx IH0sCj4gKwo+ICsJLyoKPiArCSAqIElEIHJlZ3M6IGFsbCBJRF9TQU5JVElTRUQoKSBlbnRyaWVz IGhlcmUgbXVzdCBoYXZlIGNvcnJlc3BvbmRpbmcKPiArCSAqIGVudHJpZXMgaW4gYXJtNjRfZnRy X3JlZ3NbXS4KPiArCSAqLwo+ICsKPiArCS8qIEFBcmNoNjQgbWFwcGluZ3Mgb2YgdGhlIEFBcmNo MzIgSUQgcmVnaXN0ZXJzICovCj4gKwkvKiBDUm09MSAqLwo+ICsJSURfU0FOSVRJU0VEKElEX1BG UjBfRUwxKSwKPiArCUlEX1NBTklUSVNFRChJRF9QRlIxX0VMMSksCj4gKwlJRF9TQU5JVElTRUQo SURfREZSMF9FTDEpLAo+ICsJSURfSElEREVOKElEX0FGUjBfRUwxKSwKPiArCUlEX1NBTklUSVNF RChJRF9NTUZSMF9FTDEpLAo+ICsJSURfU0FOSVRJU0VEKElEX01NRlIxX0VMMSksCj4gKwlJRF9T QU5JVElTRUQoSURfTU1GUjJfRUwxKSwKPiArCUlEX1NBTklUSVNFRChJRF9NTUZSM19FTDEpLAo+ ICsKPiArCS8qIENSbT0yICovCj4gKwlJRF9TQU5JVElTRUQoSURfSVNBUjBfRUwxKSwKPiArCUlE X1NBTklUSVNFRChJRF9JU0FSMV9FTDEpLAo+ICsJSURfU0FOSVRJU0VEKElEX0lTQVIyX0VMMSks Cj4gKwlJRF9TQU5JVElTRUQoSURfSVNBUjNfRUwxKSwKPiArCUlEX1NBTklUSVNFRChJRF9JU0FS NF9FTDEpLAo+ICsJSURfU0FOSVRJU0VEKElEX0lTQVI1X0VMMSksCj4gKwlJRF9TQU5JVElTRUQo SURfTU1GUjRfRUwxKSwKPiArCUlEX1VOQUxMT0NBVEVEKDIsNyksCj4gKwo+ICsJLyogQ1JtPTMg Ki8KPiArCUlEX1NBTklUSVNFRChNVkZSMF9FTDEpLAo+ICsJSURfU0FOSVRJU0VEKE1WRlIxX0VM MSksCj4gKwlJRF9TQU5JVElTRUQoTVZGUjJfRUwxKSwKPiArCUlEX1VOQUxMT0NBVEVEKDMsMyks Cj4gKwlJRF9VTkFMTE9DQVRFRCgzLDQpLAo+ICsJSURfVU5BTExPQ0FURUQoMyw1KSwKPiArCUlE X1VOQUxMT0NBVEVEKDMsNiksCj4gKwlJRF9VTkFMTE9DQVRFRCgzLDcpLAo+ICsKPiArCS8qIEFB cmNoNjQgSUQgcmVnaXN0ZXJzICovCj4gKwkvKiBDUm09NCAqLwo+ICsJSURfU0FOSVRJU0VEKElE X0FBNjRQRlIwX0VMMSksCj4gKwlJRF9TQU5JVElTRUQoSURfQUE2NFBGUjFfRUwxKSwKPiArCUlE X1VOQUxMT0NBVEVEKDQsMiksCj4gKwlJRF9VTkFMTE9DQVRFRCg0LDMpLAo+ICsJSURfVU5BTExP Q0FURUQoNCw0KSwKPiArCUlEX1VOQUxMT0NBVEVEKDQsNSksCj4gKwlJRF9VTkFMTE9DQVRFRCg0 LDYpLAo+ICsJSURfVU5BTExPQ0FURUQoNCw3KSwKPiArCj4gKwkvKiBDUm09NSAqLwo+ICsJSURf U0FOSVRJU0VEKElEX0FBNjRERlIwX0VMMSksCj4gKwlJRF9TQU5JVElTRUQoSURfQUE2NERGUjFf RUwxKSwKPiArCUlEX1VOQUxMT0NBVEVEKDUsMiksCj4gKwlJRF9VTkFMTE9DQVRFRCg1LDMpLAo+ ICsJSURfSElEREVOKElEX0FBNjRBRlIwX0VMMSksCj4gKwlJRF9ISURERU4oSURfQUE2NEFGUjFf RUwxKSwKPiArCUlEX1VOQUxMT0NBVEVEKDUsNiksCj4gKwlJRF9VTkFMTE9DQVRFRCg1LDcpLAo+ ICsKPiArCS8qIENSbT02ICovCj4gKwlJRF9TQU5JVElTRUQoSURfQUE2NElTQVIwX0VMMSksCj4g KwlJRF9TQU5JVElTRUQoSURfQUE2NElTQVIxX0VMMSksCj4gKwlJRF9VTkFMTE9DQVRFRCg2LDIp LAo+ICsJSURfVU5BTExPQ0FURUQoNiwzKSwKPiArCUlEX1VOQUxMT0NBVEVEKDYsNCksCj4gKwlJ RF9VTkFMTE9DQVRFRCg2LDUpLAo+ICsJSURfVU5BTExPQ0FURUQoNiw2KSwKPiArCUlEX1VOQUxM T0NBVEVEKDYsNyksCj4gKwo+ICsJLyogQ1JtPTcgKi8KPiArCUlEX1NBTklUSVNFRChJRF9BQTY0 TU1GUjBfRUwxKSwKPiArCUlEX1NBTklUSVNFRChJRF9BQTY0TU1GUjFfRUwxKSwKPiArCUlEX1NB TklUSVNFRChJRF9BQTY0TU1GUjJfRUwxKSwKPiArCUlEX1VOQUxMT0NBVEVEKDcsMyksCj4gKwlJ RF9VTkFMTE9DQVRFRCg3LDQpLAo+ICsJSURfVU5BTExPQ0FURUQoNyw1KSwKPiArCUlEX1VOQUxM T0NBVEVEKDcsNiksCj4gKwlJRF9VTkFMTE9DQVRFRCg3LDcpLAo+ICsKPiAgCXsgU1lTX0RFU0Mo U1lTX1NDVExSX0VMMSksIGFjY2Vzc192bV9yZWcsIHJlc2V0X3ZhbCwgU0NUTFJfRUwxLCAweDAw QzUwMDc4IH0sCj4gIAl7IFNZU19ERVNDKFNZU19DUEFDUl9FTDEpLCBOVUxMLCByZXNldF92YWws IENQQUNSX0VMMSwgMCB9LAo+ICAJeyBTWVNfREVTQyhTWVNfVFRCUjBfRUwxKSwgYWNjZXNzX3Zt X3JlZywgcmVzZXRfdW5rbm93biwgVFRCUjBfRUwxIH0sCj4gQEAgLTE3OTAsOCArMTk5OSw4IEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3lzX3JlZ19kZXNjICppbmRleF90b19zeXNfcmVnX2Rlc2Mo c3RydWN0IGt2bV92Y3B1ICp2Y3B1LAo+ICAJaWYgKCFyKQo+ICAJCXIgPSBmaW5kX3JlZygmcGFy YW1zLCBzeXNfcmVnX2Rlc2NzLCBBUlJBWV9TSVpFKHN5c19yZWdfZGVzY3MpKTsKPgo+IC0JLyog Tm90IHNhdmVkIGluIHRoZSBzeXNfcmVnIGFycmF5PyAqLwo+IC0JaWYgKHIgJiYgIXItPnJlZykK PiArCS8qIE5vdCBzYXZlZCBpbiB0aGUgc3lzX3JlZyBhcnJheSBhbmQgbm90IG90aGVyd2lzZSBh Y2Nlc3NpYmxlPyAqLwo+ICsJaWYgKHIgJiYgIShyLT5yZWcgfHwgci0+Z2V0X3VzZXIpKQo+ICAJ CXIgPSBOVUxMOwo+Cj4gIAlyZXR1cm4gcjsKPiBAQCAtMTgxNSwyMCArMjAyNCw2IEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3Qgc3lzX3JlZ19kZXNjICppbmRleF90b19zeXNfcmVnX2Rlc2Moc3RydWN0 IGt2bV92Y3B1ICp2Y3B1LAo+ICBGVU5DVElPTl9JTlZBUklBTlQobWlkcl9lbDEpCj4gIEZVTkNU SU9OX0lOVkFSSUFOVChjdHJfZWwwKQo+ICBGVU5DVElPTl9JTlZBUklBTlQocmV2aWRyX2VsMSkK PiAtRlVOQ1RJT05fSU5WQVJJQU5UKGlkX3BmcjBfZWwxKQo+IC1GVU5DVElPTl9JTlZBUklBTlQo aWRfcGZyMV9lbDEpCj4gLUZVTkNUSU9OX0lOVkFSSUFOVChpZF9kZnIwX2VsMSkKPiAtRlVOQ1RJ T05fSU5WQVJJQU5UKGlkX2FmcjBfZWwxKQo+IC1GVU5DVElPTl9JTlZBUklBTlQoaWRfbW1mcjBf ZWwxKQo+IC1GVU5DVElPTl9JTlZBUklBTlQoaWRfbW1mcjFfZWwxKQo+IC1GVU5DVElPTl9JTlZB UklBTlQoaWRfbW1mcjJfZWwxKQo+IC1GVU5DVElPTl9JTlZBUklBTlQoaWRfbW1mcjNfZWwxKQo+ IC1GVU5DVElPTl9JTlZBUklBTlQoaWRfaXNhcjBfZWwxKQo+IC1GVU5DVElPTl9JTlZBUklBTlQo aWRfaXNhcjFfZWwxKQo+IC1GVU5DVElPTl9JTlZBUklBTlQoaWRfaXNhcjJfZWwxKQo+IC1GVU5D VElPTl9JTlZBUklBTlQoaWRfaXNhcjNfZWwxKQo+IC1GVU5DVElPTl9JTlZBUklBTlQoaWRfaXNh cjRfZWwxKQo+IC1GVU5DVElPTl9JTlZBUklBTlQoaWRfaXNhcjVfZWwxKQo+ICBGVU5DVElPTl9J TlZBUklBTlQoY2xpZHJfZWwxKQo+ICBGVU5DVElPTl9JTlZBUklBTlQoYWlkcl9lbDEpCj4KPiBA QCAtMTgzNiwyMCArMjAzMSw2IEBAIEZVTkNUSU9OX0lOVkFSSUFOVChhaWRyX2VsMSkKPiAgc3Rh dGljIHN0cnVjdCBzeXNfcmVnX2Rlc2MgaW52YXJpYW50X3N5c19yZWdzW10gPSB7Cj4gIAl7IFNZ U19ERVNDKFNZU19NSURSX0VMMSksIE5VTEwsIGdldF9taWRyX2VsMSB9LAo+ICAJeyBTWVNfREVT QyhTWVNfUkVWSURSX0VMMSksIE5VTEwsIGdldF9yZXZpZHJfZWwxIH0sCj4gLQl7IFNZU19ERVND KFNZU19JRF9QRlIwX0VMMSksIE5VTEwsIGdldF9pZF9wZnIwX2VsMSB9LAo+IC0JeyBTWVNfREVT QyhTWVNfSURfUEZSMV9FTDEpLCBOVUxMLCBnZXRfaWRfcGZyMV9lbDEgfSwKPiAtCXsgU1lTX0RF U0MoU1lTX0lEX0RGUjBfRUwxKSwgTlVMTCwgZ2V0X2lkX2RmcjBfZWwxIH0sCj4gLQl7IFNZU19E RVNDKFNZU19JRF9BRlIwX0VMMSksIE5VTEwsIGdldF9pZF9hZnIwX2VsMSB9LAo+IC0JeyBTWVNf REVTQyhTWVNfSURfTU1GUjBfRUwxKSwgTlVMTCwgZ2V0X2lkX21tZnIwX2VsMSB9LAo+IC0JeyBT WVNfREVTQyhTWVNfSURfTU1GUjFfRUwxKSwgTlVMTCwgZ2V0X2lkX21tZnIxX2VsMSB9LAo+IC0J eyBTWVNfREVTQyhTWVNfSURfTU1GUjJfRUwxKSwgTlVMTCwgZ2V0X2lkX21tZnIyX2VsMSB9LAo+ IC0JeyBTWVNfREVTQyhTWVNfSURfTU1GUjNfRUwxKSwgTlVMTCwgZ2V0X2lkX21tZnIzX2VsMSB9 LAo+IC0JeyBTWVNfREVTQyhTWVNfSURfSVNBUjBfRUwxKSwgTlVMTCwgZ2V0X2lkX2lzYXIwX2Vs MSB9LAo+IC0JeyBTWVNfREVTQyhTWVNfSURfSVNBUjFfRUwxKSwgTlVMTCwgZ2V0X2lkX2lzYXIx X2VsMSB9LAo+IC0JeyBTWVNfREVTQyhTWVNfSURfSVNBUjJfRUwxKSwgTlVMTCwgZ2V0X2lkX2lz YXIyX2VsMSB9LAo+IC0JeyBTWVNfREVTQyhTWVNfSURfSVNBUjNfRUwxKSwgTlVMTCwgZ2V0X2lk X2lzYXIzX2VsMSB9LAo+IC0JeyBTWVNfREVTQyhTWVNfSURfSVNBUjRfRUwxKSwgTlVMTCwgZ2V0 X2lkX2lzYXI0X2VsMSB9LAo+IC0JeyBTWVNfREVTQyhTWVNfSURfSVNBUjVfRUwxKSwgTlVMTCwg Z2V0X2lkX2lzYXI1X2VsMSB9LAo+ICAJeyBTWVNfREVTQyhTWVNfQ0xJRFJfRUwxKSwgTlVMTCwg Z2V0X2NsaWRyX2VsMSB9LAo+ICAJeyBTWVNfREVTQyhTWVNfQUlEUl9FTDEpLCBOVUxMLCBnZXRf YWlkcl9lbDEgfSwKPiAgCXsgU1lTX0RFU0MoU1lTX0NUUl9FTDApLCBOVUxMLCBnZXRfY3RyX2Vs MCB9LAo+IEBAIC0yMDc5LDEyICsyMjYwLDMxIEBAIHN0YXRpYyBib29sIGNvcHlfcmVnX3RvX3Vz ZXIoY29uc3Qgc3RydWN0IHN5c19yZWdfZGVzYyAqcmVnLCB1NjQgX191c2VyICoqdWluZCkKPiAg CXJldHVybiB0cnVlOwo+ICB9Cj4KPiArc3RhdGljIGludCB3YWxrX29uZV9zeXNfcmVnKGNvbnN0 IHN0cnVjdCBzeXNfcmVnX2Rlc2MgKnJkLAo+ICsJCQkgICAgdTY0IF9fdXNlciAqKnVpbmQsCj4g KwkJCSAgICB1bnNpZ25lZCBpbnQgKnRvdGFsKQo+ICt7Cj4gKwkvKgo+ICsJICogSWdub3JlIHJl Z2lzdGVycyB3ZSB0cmFwIGJ1dCBkb24ndCBzYXZlLAo+ICsJICogYW5kIGZvciB3aGljaCBubyBj dXN0b20gdXNlciBhY2Nlc3NvciBpcyBwcm92aWRlZC4KPiArCSAqLwo+ICsJaWYgKCEocmQtPnJl ZyB8fCByZC0+Z2V0X3VzZXIpKQo+ICsJCXJldHVybiAwOwo+ICsKPiArCWlmICghY29weV9yZWdf dG9fdXNlcihyZCwgdWluZCkpCj4gKwkJcmV0dXJuIC1FRkFVTFQ7Cj4gKwo+ICsJKCp0b3RhbCkr KzsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICAvKiBBc3N1bWVkIG9yZGVyZWQgdGFibGVzLCBz ZWUga3ZtX3N5c19yZWdfdGFibGVfaW5pdC4gKi8KPiAgc3RhdGljIGludCB3YWxrX3N5c19yZWdz KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IF9fdXNlciAqdWluZCkKPiAgewo+ICAJY29uc3Qg c3RydWN0IHN5c19yZWdfZGVzYyAqaTEsICppMiwgKmVuZDEsICplbmQyOwo+ICAJdW5zaWduZWQg aW50IHRvdGFsID0gMDsKPiAgCXNpemVfdCBudW07Cj4gKwlpbnQgZXJyOwo+Cj4gIAkvKiBXZSBj aGVjayBmb3IgZHVwbGljYXRlcyBoZXJlLCB0byBhbGxvdyBhcmNoLXNwZWNpZmljIG92ZXJyaWRl cy4gKi8KPiAgCWkxID0gZ2V0X3RhcmdldF90YWJsZSh2Y3B1LT5hcmNoLnRhcmdldCwgdHJ1ZSwg Jm51bSk7Cj4gQEAgLTIwOTgsMjEgKzIyOTgsMTMgQEAgc3RhdGljIGludCB3YWxrX3N5c19yZWdz KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IF9fdXNlciAqdWluZCkKPiAgCXdoaWxlIChpMSB8 fCBpMikgewo+ICAJCWludCBjbXAgPSBjbXBfc3lzX3JlZyhpMSwgaTIpOwo+ICAJCS8qIHRhcmdl dC1zcGVjaWZpYyBvdmVycmlkZXMgZ2VuZXJpYyBlbnRyeS4gKi8KPiAtCQlpZiAoY21wIDw9IDAp IHsKPiAtCQkJLyogSWdub3JlIHJlZ2lzdGVycyB3ZSB0cmFwIGJ1dCBkb24ndCBzYXZlLiAqLwo+ IC0JCQlpZiAoaTEtPnJlZykgewo+IC0JCQkJaWYgKCFjb3B5X3JlZ190b191c2VyKGkxLCAmdWlu ZCkpCj4gLQkJCQkJcmV0dXJuIC1FRkFVTFQ7Cj4gLQkJCQl0b3RhbCsrOwo+IC0JCQl9Cj4gLQkJ fSBlbHNlIHsKPiAtCQkJLyogSWdub3JlIHJlZ2lzdGVycyB3ZSB0cmFwIGJ1dCBkb24ndCBzYXZl LiAqLwo+IC0JCQlpZiAoaTItPnJlZykgewo+IC0JCQkJaWYgKCFjb3B5X3JlZ190b191c2VyKGky LCAmdWluZCkpCj4gLQkJCQkJcmV0dXJuIC1FRkFVTFQ7Cj4gLQkJCQl0b3RhbCsrOwo+IC0JCQl9 Cj4gLQkJfQo+ICsJCWlmIChjbXAgPD0gMCkKPiArCQkJZXJyID0gd2Fsa19vbmVfc3lzX3JlZyhp MSwgJnVpbmQsICZ0b3RhbCk7Cj4gKwkJZWxzZQo+ICsJCQllcnIgPSB3YWxrX29uZV9zeXNfcmVn KGkyLCAmdWluZCwgJnRvdGFsKTsKPiArCj4gKwkJaWYgKGVycikKPiArCQkJcmV0dXJuIGVycjsK Pgo+ICAJCWlmIChjbXAgPD0gMCAmJiArK2kxID09IGVuZDEpCj4gIAkJCWkxID0gTlVMTDsKCgot LQpBbGV4IEJlbm7DqWUKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18Ka3ZtYXJtIG1haWxpbmcgbGlzdAprdm1hcm1AbGlzdHMuY3MuY29sdW1iaWEuZWR1Cmh0 dHBzOi8vbGlzdHMuY3MuY29sdW1iaWEuZWR1L21haWxtYW4vbGlzdGluZm8va3ZtYXJtCg==