From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: Re: [PATCH v3 6/8] xen: Use the typesafe mfn and gfn in map_mmio_regions... Date: Thu, 23 Jun 2016 15:05:07 +0100 (BST) Message-ID: References: <1466515243-27264-1-git-send-email-julien.grall@arm.com> <1466515243-27264-7-git-send-email-julien.grall@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1466515243-27264-7-git-send-email-julien.grall@arm.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Julien Grall Cc: Tim Deegan , sstabellini@kernel.org, Wei Liu , George Dunlap , Andrew Cooper , Ian Jackson , xen-devel@lists.xen.org, Jan Beulich List-Id: xen-devel@lists.xenproject.org T24gVHVlLCAyMSBKdW4gMjAxNiwgSnVsaWVuIEdyYWxsIHdyb3RlOgo+IHRvIGF2b2lkIG1peGlu ZyBtYWNoaW5lIGZyYW1lIHdpdGggZ3Vlc3QgZnJhbWUuCj4gCj4gU2lnbmVkLW9mZi1ieTogSnVs aWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4KPiBBY2tlZC1ieTogSmFuIEJldWxpY2gg PGpiZXVsaWNoQHN1c2UuY29tPgo+IAo+IC0tLQo+IENjOiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNz dGFiZWxsaW5pQGtlcm5lbC5vcmc+Cj4gQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNv bT4KPiBDYzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KPiBDYzog R2VvcmdlIER1bmxhcCA8Z2VvcmdlLmR1bmxhcEBldS5jaXRyaXguY29tPgo+IENjOiBJYW4gSmFj a3NvbiA8aWFuLmphY2tzb25AZXUuY2l0cml4LmNvbT4KPiBDYzogS29ucmFkIFJ6ZXN6dXRlayBX aWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgo+IENjOiBUaW0gRGVlZ2FuIDx0aW1AeGVuLm9y Zz4KPiBDYzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KPiAKPiAgICAgQ2hhbmdlcyBp biB2MzoKPiAgICAgICAgIC0gVXNlIG1mbl9hZGQgd2hlbiBpdCBpcyBwb3NzaWJsZQo+ICAgICAg ICAgLSBBZGQgSmFuJ3MgYWNrZWQtYnkKPiAtLS0KPiAgeGVuL2FyY2gvYXJtL2RvbWFpbl9idWls ZC5jICAgICAgfCAgNCArKy0tCj4gIHhlbi9hcmNoL2FybS9naWMtdjIuYyAgICAgICAgICAgIHwg IDQgKystLQo+ICB4ZW4vYXJjaC9hcm0vcDJtLmMgICAgICAgICAgICAgICB8IDIyICsrKysrKysr KysrLS0tLS0tLS0tLS0KPiAgeGVuL2FyY2gvYXJtL3BsYXRmb3Jtcy9leHlub3M1LmMgfCAgOCAr KysrLS0tLQo+ICB4ZW4vYXJjaC9hcm0vcGxhdGZvcm1zL29tYXA1LmMgICB8IDE2ICsrKysrKysr LS0tLS0tLS0KPiAgeGVuL2FyY2gvYXJtL3ZnaWMtdjIuYyAgICAgICAgICAgfCAgNCArKy0tCj4g IHhlbi9hcmNoL3g4Ni9tbS9wMm0uYyAgICAgICAgICAgIHwgMTggKysrKysrKysrKy0tLS0tLS0t Cj4gIHhlbi9jb21tb24vZG9tY3RsLmMgICAgICAgICAgICAgIHwgIDQgKystLQo+ICB4ZW4vaW5j bHVkZS94ZW4vcDJtLWNvbW1vbi5oICAgICB8ICA4ICsrKystLS0tCj4gIDkgZmlsZXMgY2hhbmdl ZCwgNDUgaW5zZXJ0aW9ucygrKSwgNDMgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL3hl bi9hcmNoL2FybS9kb21haW5fYnVpbGQuYyBiL3hlbi9hcmNoL2FybS9kb21haW5fYnVpbGQuYwo+ IGluZGV4IDkwMzU0ODYuLjQ5MTg1ZjAgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gvYXJtL2RvbWFp bl9idWlsZC5jCj4gKysrIGIveGVuL2FyY2gvYXJtL2RvbWFpbl9idWlsZC5jCj4gQEAgLTEwMzYs OSArMTAzNiw5IEBAIHN0YXRpYyBpbnQgbWFwX3JhbmdlX3RvX2RvbWFpbihjb25zdCBzdHJ1Y3Qg ZHRfZGV2aWNlX25vZGUgKmRldiwKPiAgICAgIGlmICggbmVlZF9tYXBwaW5nICkKPiAgICAgIHsK PiAgICAgICAgICByZXMgPSBtYXBfbW1pb19yZWdpb25zKGQsCj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwYWRkcl90b19wZm4oYWRkciksCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBfZ2ZuKHBhZGRyX3RvX3BmbihhZGRyKSksCj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBESVZfUk9VTkRfVVAobGVuLCBQQUdFX1NJWkUpLAo+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcGFkZHJfdG9fcGZuKGFkZHIpKTsKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF9tZm4ocGFkZHJfdG9fcGZuKGFkZHIpKSk7Cj4gICAgICAgICAg aWYgKCByZXMgPCAwICkKPiAgICAgICAgICB7Cj4gICAgICAgICAgICAgIHByaW50ayhYRU5MT0df RVJSICJVbmFibGUgdG8gbWFwIDB4JSJQUkl4NjQKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJt L2dpYy12Mi5jIGIveGVuL2FyY2gvYXJtL2dpYy12Mi5jCj4gaW5kZXggNGUyZjRjNy4uMzg5M2Vj ZSAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC9hcm0vZ2ljLXYyLmMKPiArKysgYi94ZW4vYXJjaC9h cm0vZ2ljLXYyLmMKPiBAQCAtNjAxLDkgKzYwMSw5IEBAIHN0YXRpYyBpbnQgZ2ljdjJfbWFwX2h3 ZG93bl9leHRyYV9tYXBwaW5ncyhzdHJ1Y3QgZG9tYWluICpkKQo+ICAgICAgICAgICAgICAgICBk LT5kb21haW5faWQsIHYybV9kYXRhLT5hZGRyLCB2Mm1fZGF0YS0+c2l6ZSwKPiAgICAgICAgICAg ICAgICAgdjJtX2RhdGEtPnNwaV9zdGFydCwgdjJtX2RhdGEtPm5yX3NwaXMpOwo+ICAKPiAtICAg ICAgICByZXQgPSBtYXBfbW1pb19yZWdpb25zKGQsIHBhZGRyX3RvX3Bmbih2Mm1fZGF0YS0+YWRk ciksCj4gKyAgICAgICAgcmV0ID0gbWFwX21taW9fcmVnaW9ucyhkLCBfZ2ZuKHBhZGRyX3RvX3Bm bih2Mm1fZGF0YS0+YWRkcikpLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRElWX1JP VU5EX1VQKHYybV9kYXRhLT5zaXplLCBQQUdFX1NJWkUpLAo+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgcGFkZHJfdG9fcGZuKHYybV9kYXRhLT5hZGRyKSk7Cj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBfbWZuKHBhZGRyX3RvX3Bmbih2Mm1fZGF0YS0+YWRkcikpKTsKPiAgICAg ICAgICBpZiAoIHJldCApCj4gICAgICAgICAgewo+ICAgICAgICAgICAgICBwcmludGsoWEVOTE9H X0VSUiAiR0lDdjI6IE1hcCB2Mm0gZnJhbWUgdG8gZCVkIGZhaWxlZC5cbiIsCj4gZGlmZiAtLWdp dCBhL3hlbi9hcmNoL2FybS9wMm0uYyBiL3hlbi9hcmNoL2FybS9wMm0uYwo+IGluZGV4IGFhNGU3 NzQuLjQ3Y2IzODMgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gvYXJtL3AybS5jCj4gKysrIGIveGVu L2FyY2gvYXJtL3AybS5jCj4gQEAgLTEyNDUsMjcgKzEyNDUsMjcgQEAgaW50IHVubWFwX3JlZ2lv bnNfcndfY2FjaGUoc3RydWN0IGRvbWFpbiAqZCwKPiAgfQo+ICAKPiAgaW50IG1hcF9tbWlvX3Jl Z2lvbnMoc3RydWN0IGRvbWFpbiAqZCwKPiAtICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg bG9uZyBzdGFydF9nZm4sCj4gKyAgICAgICAgICAgICAgICAgICAgIGdmbl90IHN0YXJ0X2dmbiwK PiAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBuciwKPiAtICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgbG9uZyBtZm4pCj4gKyAgICAgICAgICAgICAgICAgICAgIG1mbl90 IG1mbikKPiAgewo+ICAgICAgcmV0dXJuIGFwcGx5X3AybV9jaGFuZ2VzKGQsIElOU0VSVCwKPiAt ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZm5fdG9fcGFkZHIoc3RhcnRfZ2ZuKSwKPiAt ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZm5fdG9fcGFkZHIoc3RhcnRfZ2ZuICsgbnIp LAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBmbl90b19wYWRkcihtZm4pLAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBmbl90b19wYWRkcihnZm5feChzdGFydF9nZm4p KSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZm5fdG9fcGFkZHIoZ2ZuX3goc3Rh cnRfZ2ZuKSArIG5yKSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZm5fdG9fcGFk ZHIobWZuX3gobWZuKSksCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFUVFJfREVW LCAwLCBwMm1fbW1pb19kaXJlY3QsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC0+ YXJjaC5wMm0uZGVmYXVsdF9hY2Nlc3MpOwoKQW55IHJlYXNvbiB3aHkgeW91IGRpZG4ndCBwdXNo IHRoZXNlIGNoYW5nZXMgZG93biB0byBhcHBseV9wMm1fY2hhbmdlcyB0b28/CgoKPiAgfQo+ICAK PiAgaW50IHVubWFwX21taW9fcmVnaW9ucyhzdHJ1Y3QgZG9tYWluICpkLAo+IC0gICAgICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnRfZ2ZuLAo+ICsgICAgICAgICAgICAgICAg ICAgICAgIGdmbl90IHN0YXJ0X2dmbiwKPiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBsb25nIG5yLAo+IC0gICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbWZuKQo+ ICsgICAgICAgICAgICAgICAgICAgICAgIG1mbl90IG1mbikKPiAgewo+ICAgICAgcmV0dXJuIGFw cGx5X3AybV9jaGFuZ2VzKGQsIFJFTU9WRSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwZm5fdG9fcGFkZHIoc3RhcnRfZ2ZuKSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwZm5fdG9fcGFkZHIoc3RhcnRfZ2ZuICsgbnIpLAo+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBmbl90b19wYWRkcihtZm4pLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBmbl90b19wYWRkcihnZm5feChzdGFydF9nZm4pKSwKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwZm5fdG9fcGFkZHIoZ2ZuX3goc3RhcnRfZ2ZuKSArIG5yKSwKPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwZm5fdG9fcGFkZHIobWZuX3gobWZuKSksCj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTUFUVFJfREVWLCAwLCBwMm1faW52YWxpZCwKPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkLT5hcmNoLnAybS5kZWZhdWx0X2FjY2Vzcyk7Cj4gIH0K PiBAQCAtMTI4MCw3ICsxMjgwLDcgQEAgaW50IG1hcF9kZXZfbW1pb19yZWdpb24oc3RydWN0IGRv bWFpbiAqZCwKPiAgICAgIGlmICggIShuciAmJiBpb21lbV9hY2Nlc3NfcGVybWl0dGVkKGQsIHN0 YXJ0X2dmbiwgc3RhcnRfZ2ZuICsgbnIgLSAxKSkgKQo+ICAgICAgICAgIHJldHVybiAwOwo+ICAK PiAtICAgIHJlcyA9IG1hcF9tbWlvX3JlZ2lvbnMoZCwgc3RhcnRfZ2ZuLCBuciwgbWZuKTsKPiAr ICAgIHJlcyA9IG1hcF9tbWlvX3JlZ2lvbnMoZCwgX2dmbihzdGFydF9nZm4pLCBuciwgX21mbiht Zm4pKTsKPiAgICAgIGlmICggcmVzIDwgMCApCj4gICAgICB7Cj4gICAgICAgICAgcHJpbnRrKFhF TkxPR19HX0VSUiAiVW5hYmxlIHRvIG1hcCBbJSNseCAtICUjbHhdIGluIERvbSVkXG4iLAo+IGRp ZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vcGxhdGZvcm1zL2V4eW5vczUuYyBiL3hlbi9hcmNoL2Fy bS9wbGF0Zm9ybXMvZXh5bm9zNS5jCj4gaW5kZXggYmY0OTY0ZC4uYzQzOTM0ZiAxMDA2NDQKPiAt LS0gYS94ZW4vYXJjaC9hcm0vcGxhdGZvcm1zL2V4eW5vczUuYwo+ICsrKyBiL3hlbi9hcmNoL2Fy bS9wbGF0Zm9ybXMvZXh5bm9zNS5jCj4gQEAgLTgzLDEyICs4MywxMiBAQCBzdGF0aWMgaW50IGV4 eW5vczVfaW5pdF90aW1lKHZvaWQpCj4gIHN0YXRpYyBpbnQgZXh5bm9zNTI1MF9zcGVjaWZpY19t YXBwaW5nKHN0cnVjdCBkb21haW4gKmQpCj4gIHsKPiAgICAgIC8qIE1hcCB0aGUgY2hpcCBJRCAq Lwo+IC0gICAgbWFwX21taW9fcmVnaW9ucyhkLCBwYWRkcl90b19wZm4oRVhZTk9TNV9QQV9DSElQ SUQpLCAxLAo+IC0gICAgICAgICAgICAgICAgICAgICBwYWRkcl90b19wZm4oRVhZTk9TNV9QQV9D SElQSUQpKTsKPiArICAgIG1hcF9tbWlvX3JlZ2lvbnMoZCwgX2dmbihwYWRkcl90b19wZm4oRVhZ Tk9TNV9QQV9DSElQSUQpKSwgMSwKPiArICAgICAgICAgICAgICAgICAgICAgX21mbihwYWRkcl90 b19wZm4oRVhZTk9TNV9QQV9DSElQSUQpKSk7Cj4gIAo+ICAgICAgLyogTWFwIHRoZSBQV00gcmVn aW9uICovCj4gLSAgICBtYXBfbW1pb19yZWdpb25zKGQsIHBhZGRyX3RvX3BmbihFWFlOT1M1X1BB X1RJTUVSKSwgMiwKPiAtICAgICAgICAgICAgICAgICAgICAgcGFkZHJfdG9fcGZuKEVYWU5PUzVf UEFfVElNRVIpKTsKPiArICAgIG1hcF9tbWlvX3JlZ2lvbnMoZCwgX2dmbihwYWRkcl90b19wZm4o RVhZTk9TNV9QQV9USU1FUikpLCAyLAo+ICsgICAgICAgICAgICAgICAgICAgICBfbWZuKHBhZGRy X3RvX3BmbihFWFlOT1M1X1BBX1RJTUVSKSkpOwo+ICAKPiAgICAgIHJldHVybiAwOwo+ICB9Cj4g ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9wbGF0Zm9ybXMvb21hcDUuYyBiL3hlbi9hcmNoL2Fy bS9wbGF0Zm9ybXMvb21hcDUuYwo+IGluZGV4IGE0OWJhNjIuLjUzOTU4OGUgMTAwNjQ0Cj4gLS0t IGEveGVuL2FyY2gvYXJtL3BsYXRmb3Jtcy9vbWFwNS5jCj4gKysrIGIveGVuL2FyY2gvYXJtL3Bs YXRmb3Jtcy9vbWFwNS5jCj4gQEAgLTEwMiwyMCArMTAyLDIwIEBAIHN0YXRpYyBpbnQgb21hcDVf aW5pdF90aW1lKHZvaWQpCj4gIHN0YXRpYyBpbnQgb21hcDVfc3BlY2lmaWNfbWFwcGluZyhzdHJ1 Y3QgZG9tYWluICpkKQo+ICB7Cj4gICAgICAvKiBNYXAgdGhlIFBSTSBtb2R1bGUgKi8KPiAtICAg IG1hcF9tbWlvX3JlZ2lvbnMoZCwgcGFkZHJfdG9fcGZuKE9NQVA1X1BSTV9CQVNFKSwgMiwKPiAt ICAgICAgICAgICAgICAgICAgICAgcGFkZHJfdG9fcGZuKE9NQVA1X1BSTV9CQVNFKSk7Cj4gKyAg ICBtYXBfbW1pb19yZWdpb25zKGQsIF9nZm4ocGFkZHJfdG9fcGZuKE9NQVA1X1BSTV9CQVNFKSks IDIsCj4gKyAgICAgICAgICAgICAgICAgICAgIF9tZm4ocGFkZHJfdG9fcGZuKE9NQVA1X1BSTV9C QVNFKSkpOwo+ICAKPiAgICAgIC8qIE1hcCB0aGUgUFJNX01QVSAqLwo+IC0gICAgbWFwX21taW9f cmVnaW9ucyhkLCBwYWRkcl90b19wZm4oT01BUDVfUFJDTV9NUFVfQkFTRSksIDEsCj4gLSAgICAg ICAgICAgICAgICAgICAgIHBhZGRyX3RvX3BmbihPTUFQNV9QUkNNX01QVV9CQVNFKSk7Cj4gKyAg ICBtYXBfbW1pb19yZWdpb25zKGQsIF9nZm4ocGFkZHJfdG9fcGZuKE9NQVA1X1BSQ01fTVBVX0JB U0UpKSwgMSwKPiArICAgICAgICAgICAgICAgICAgICAgX21mbihwYWRkcl90b19wZm4oT01BUDVf UFJDTV9NUFVfQkFTRSkpKTsKPiAgCj4gICAgICAvKiBNYXAgdGhlIFdha2V1cCBHZW4gKi8KPiAt ICAgIG1hcF9tbWlvX3JlZ2lvbnMoZCwgcGFkZHJfdG9fcGZuKE9NQVA1X1dLVVBHRU5fQkFTRSks IDEsCj4gLSAgICAgICAgICAgICAgICAgICAgIHBhZGRyX3RvX3BmbihPTUFQNV9XS1VQR0VOX0JB U0UpKTsKPiArICAgIG1hcF9tbWlvX3JlZ2lvbnMoZCwgX2dmbihwYWRkcl90b19wZm4oT01BUDVf V0tVUEdFTl9CQVNFKSksIDEsCj4gKyAgICAgICAgICAgICAgICAgICAgIF9tZm4ocGFkZHJfdG9f cGZuKE9NQVA1X1dLVVBHRU5fQkFTRSkpKTsKPiAgCj4gICAgICAvKiBNYXAgdGhlIG9uLWNoaXAg U1JBTSAqLwo+IC0gICAgbWFwX21taW9fcmVnaW9ucyhkLCBwYWRkcl90b19wZm4oT01BUDVfU1JB TV9QQSksIDMyLAo+IC0gICAgICAgICAgICAgICAgICAgICBwYWRkcl90b19wZm4oT01BUDVfU1JB TV9QQSkpOwo+ICsgICAgbWFwX21taW9fcmVnaW9ucyhkLCBfZ2ZuKHBhZGRyX3RvX3BmbihPTUFQ NV9TUkFNX1BBKSksIDMyLAo+ICsgICAgICAgICAgICAgICAgICAgICBfbWZuKHBhZGRyX3RvX3Bm bihPTUFQNV9TUkFNX1BBKSkpOwo+ICAKPiAgICAgIHJldHVybiAwOwo+ICB9Cj4gZGlmZiAtLWdp dCBhL3hlbi9hcmNoL2FybS92Z2ljLXYyLmMgYi94ZW4vYXJjaC9hcm0vdmdpYy12Mi5jCj4gaW5k ZXggOWFkYjRhOS4uY2JlNjFjZiAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC9hcm0vdmdpYy12Mi5j Cj4gKysrIGIveGVuL2FyY2gvYXJtL3ZnaWMtdjIuYwo+IEBAIC02ODgsOCArNjg4LDggQEAgc3Rh dGljIGludCB2Z2ljX3YyX2RvbWFpbl9pbml0KHN0cnVjdCBkb21haW4gKmQpCj4gICAgICAgKiBN YXAgdGhlIGdpYyB2aXJ0dWFsIGNwdSBpbnRlcmZhY2UgaW4gdGhlIGdpYyBjcHUgaW50ZXJmYWNl Cj4gICAgICAgKiByZWdpb24gb2YgdGhlIGd1ZXN0Lgo+ICAgICAgICovCj4gLSAgICByZXQgPSBt YXBfbW1pb19yZWdpb25zKGQsIHBhZGRyX3RvX3BmbihjYmFzZSksIGNzaXplIC8gUEFHRV9TSVpF LAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkcl90b19wZm4odmJhc2UpKTsKPiAr ICAgIHJldCA9IG1hcF9tbWlvX3JlZ2lvbnMoZCwgX2dmbihwYWRkcl90b19wZm4oY2Jhc2UpKSwg Y3NpemUgLyBQQUdFX1NJWkUsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tZm4ocGFk ZHJfdG9fcGZuKHZiYXNlKSkpOwo+ICAgICAgaWYgKCByZXQgKQo+ICAgICAgICAgIHJldHVybiBy ZXQ7Cj4gIAo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vcDJtLmMgYi94ZW4vYXJjaC94 ODYvbW0vcDJtLmMKPiBpbmRleCAxNjczM2E0Li42MjU4YTViIDEwMDY0NAo+IC0tLSBhL3hlbi9h cmNoL3g4Ni9tbS9wMm0uYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYwo+IEBAIC0yMjE0 LDkgKzIyMTQsOSBAQCBzdGF0aWMgdW5zaWduZWQgaW50IG1taW9fb3JkZXIoY29uc3Qgc3RydWN0 IGRvbWFpbiAqZCwKPiAgI2RlZmluZSBNQVBfTU1JT19NQVhfSVRFUiA2NCAvKiBwcmV0dHkgYXJi aXRyYXJ5ICovCj4gIAo+ICBpbnQgbWFwX21taW9fcmVnaW9ucyhzdHJ1Y3QgZG9tYWluICpkLAo+ IC0gICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0X2dmbiwKPiArICAgICAg ICAgICAgICAgICAgICAgZ2ZuX3Qgc3RhcnRfZ2ZuLAo+ICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBsb25nIG5yLAo+IC0gICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1m bikKPiArICAgICAgICAgICAgICAgICAgICAgbWZuX3QgbWZuKQo+ICB7Cj4gICAgICBpbnQgcmV0 ID0gMDsKPiAgICAgIHVuc2lnbmVkIGxvbmcgaTsKPiBAQCAtMjIyOSwxMCArMjIyOSwxMSBAQCBp bnQgbWFwX21taW9fcmVnaW9ucyhzdHJ1Y3QgZG9tYWluICpkLAo+ICAgICAgICAgICAgaSArPSAx VUwgPDwgb3JkZXIsICsraXRlciApCj4gICAgICB7Cj4gICAgICAgICAgLyogT1InaW5nIGdmbiBh bmQgbWZuIHZhbHVlcyB3aWxsIHJldHVybiBhbiBvcmRlciBzdWl0YWJsZSB0byBib3RoLiAqLwo+ IC0gICAgICAgIGZvciAoIG9yZGVyID0gbW1pb19vcmRlcihkLCAoc3RhcnRfZ2ZuICsgaSkgfCAo bWZuICsgaSksIG5yIC0gaSk7IDsKPiArICAgICAgICBmb3IgKCBvcmRlciA9IG1taW9fb3JkZXIo ZCwgKGdmbl94KHN0YXJ0X2dmbikgKyBpKSB8IChtZm5feChtZm4pICsgaSksIG5yIC0gaSk7IDsK PiAgICAgICAgICAgICAgICBvcmRlciA9IHJldCAtIDEgKQo+ICAgICAgICAgIHsKPiAtICAgICAg ICAgICAgcmV0ID0gc2V0X21taW9fcDJtX2VudHJ5KGQsIHN0YXJ0X2dmbiArIGksIF9tZm4obWZu ICsgaSksIG9yZGVyLAo+ICsgICAgICAgICAgICByZXQgPSBzZXRfbW1pb19wMm1fZW50cnkoZCwg Z2ZuX3goc3RhcnRfZ2ZuKSArIGksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBtZm5fYWRkKG1mbiwgaSksIG9yZGVyLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcDJtX2dldF9ob3N0cDJtKGQpLT5kZWZhdWx0X2FjY2Vzcyk7Cj4gICAgICAg ICAgICAgIGlmICggcmV0IDw9IDAgKQo+ICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gQEAgLTIy NDYsOSArMjI0Nyw5IEBAIGludCBtYXBfbW1pb19yZWdpb25zKHN0cnVjdCBkb21haW4gKmQsCj4g IH0KPiAgCj4gIGludCB1bm1hcF9tbWlvX3JlZ2lvbnMoc3RydWN0IGRvbWFpbiAqZCwKPiAtICAg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0X2dmbiwKPiArICAgICAgICAg ICAgICAgICAgICAgICBnZm5fdCBzdGFydF9nZm4sCj4gICAgICAgICAgICAgICAgICAgICAgICAg dW5zaWduZWQgbG9uZyBuciwKPiAtICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25n IG1mbikKPiArICAgICAgICAgICAgICAgICAgICAgICBtZm5fdCBtZm4pCj4gIHsKPiAgICAgIGlu dCByZXQgPSAwOwo+ICAgICAgdW5zaWduZWQgbG9uZyBpOwo+IEBAIC0yMjYxLDEwICsyMjYyLDEx IEBAIGludCB1bm1hcF9tbWlvX3JlZ2lvbnMoc3RydWN0IGRvbWFpbiAqZCwKPiAgICAgICAgICAg IGkgKz0gMVVMIDw8IG9yZGVyLCArK2l0ZXIgKQo+ICAgICAgewo+ICAgICAgICAgIC8qIE9SJ2lu ZyBnZm4gYW5kIG1mbiB2YWx1ZXMgd2lsbCByZXR1cm4gYW4gb3JkZXIgc3VpdGFibGUgdG8gYm90 aC4gKi8KPiAtICAgICAgICBmb3IgKCBvcmRlciA9IG1taW9fb3JkZXIoZCwgKHN0YXJ0X2dmbiAr IGkpIHwgKG1mbiArIGkpLCBuciAtIGkpOyA7Cj4gKyAgICAgICAgZm9yICggb3JkZXIgPSBtbWlv X29yZGVyKGQsIChnZm5feChzdGFydF9nZm4pICsgaSkgfCAobWZuX3gobWZuKSArIGkpLCBuciAt IGkpOyA7Cj4gICAgICAgICAgICAgICAgb3JkZXIgPSByZXQgLSAxICkKPiAgICAgICAgICB7Cj4g LSAgICAgICAgICAgIHJldCA9IGNsZWFyX21taW9fcDJtX2VudHJ5KGQsIHN0YXJ0X2dmbiArIGks IF9tZm4obWZuICsgaSksIG9yZGVyKTsKPiArICAgICAgICAgICAgcmV0ID0gY2xlYXJfbW1pb19w Mm1fZW50cnkoZCwgZ2ZuX3goc3RhcnRfZ2ZuKSArIGksCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG1mbl9hZGQobWZuLCBpKSwgb3JkZXIpOwo+ICAgICAgICAgICAg ICBpZiAoIHJldCA8PSAwICkKPiAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICAgICAgICAgICAg ICBBU1NFUlQocmV0IDw9IG9yZGVyKTsKPiBkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9kb21jdGwu YyBiL3hlbi9jb21tb24vZG9tY3RsLmMKPiBpbmRleCBlNDM5MDRlLi5iNzg0ZTZjIDEwMDY0NAo+ IC0tLSBhL3hlbi9jb21tb24vZG9tY3RsLmMKPiArKysgYi94ZW4vY29tbW9uL2RvbWN0bC5jCj4g QEAgLTEwNzQsNyArMTA3NCw3IEBAIGxvbmcgZG9fZG9tY3RsKFhFTl9HVUVTVF9IQU5ETEVfUEFS QU0oeGVuX2RvbWN0bF90KSB1X2RvbWN0bCkKPiAgICAgICAgICAgICAgICAgICAgICJtZW1vcnlf bWFwOmFkZDogZG9tJWQgZ2ZuPSVseCBtZm49JWx4IG5yPSVseFxuIiwKPiAgICAgICAgICAgICAg ICAgICAgIGQtPmRvbWFpbl9pZCwgZ2ZuLCBtZm4sIG5yX21mbnMpOwo+ICAKPiAtICAgICAgICAg ICAgcmV0ID0gbWFwX21taW9fcmVnaW9ucyhkLCBnZm4sIG5yX21mbnMsIG1mbik7Cj4gKyAgICAg ICAgICAgIHJldCA9IG1hcF9tbWlvX3JlZ2lvbnMoZCwgX2dmbihnZm4pLCBucl9tZm5zLCBfbWZu KG1mbikpOwo+ICAgICAgICAgICAgICBpZiAoIHJldCA8IDAgKQo+ICAgICAgICAgICAgICAgICAg cHJpbnRrKFhFTkxPR19HX1dBUk5JTkcKPiAgICAgICAgICAgICAgICAgICAgICAgICAibWVtb3J5 X21hcDpmYWlsOiBkb20lZCBnZm49JWx4IG1mbj0lbHggbnI9JWx4IHJldDolbGRcbiIsCj4gQEAg LTEwODYsNyArMTA4Niw3IEBAIGxvbmcgZG9fZG9tY3RsKFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0o eGVuX2RvbWN0bF90KSB1X2RvbWN0bCkKPiAgICAgICAgICAgICAgICAgICAgICJtZW1vcnlfbWFw OnJlbW92ZTogZG9tJWQgZ2ZuPSVseCBtZm49JWx4IG5yPSVseFxuIiwKPiAgICAgICAgICAgICAg ICAgICAgIGQtPmRvbWFpbl9pZCwgZ2ZuLCBtZm4sIG5yX21mbnMpOwo+ICAKPiAtICAgICAgICAg ICAgcmV0ID0gdW5tYXBfbW1pb19yZWdpb25zKGQsIGdmbiwgbnJfbWZucywgbWZuKTsKPiArICAg ICAgICAgICAgcmV0ID0gdW5tYXBfbW1pb19yZWdpb25zKGQsIF9nZm4oZ2ZuKSwgbnJfbWZucywg X21mbihtZm4pKTsKPiAgICAgICAgICAgICAgaWYgKCByZXQgPCAwICYmIGlzX2hhcmR3YXJlX2Rv bWFpbihjdXJyZW50LT5kb21haW4pICkKPiAgICAgICAgICAgICAgICAgIHByaW50ayhYRU5MT0df RVJSCj4gICAgICAgICAgICAgICAgICAgICAgICAgIm1lbW9yeV9tYXA6IGVycm9yICVsZCByZW1v dmluZyBkb20lZCBhY2Nlc3MgdG8gWyVseCwlbHhdXG4iLAo+IGRpZmYgLS1naXQgYS94ZW4vaW5j bHVkZS94ZW4vcDJtLWNvbW1vbi5oIGIveGVuL2luY2x1ZGUveGVuL3AybS1jb21tb24uaAo+IGlu ZGV4IDYzNzRhNWIuLmI0ZjkwNzcgMTAwNjQ0Cj4gLS0tIGEveGVuL2luY2x1ZGUveGVuL3AybS1j b21tb24uaAo+ICsrKyBiL3hlbi9pbmNsdWRlL3hlbi9wMm0tY29tbW9uLmgKPiBAQCAtMzcsMTMg KzM3LDEzIEBAIHR5cGVkZWYgZW51bSB7Cj4gICAqICAqIHRoZSBndWVzdCBwaHlzaWNhbCBhZGRy ZXNzIHNwYWNlIHRvIG1hcCwgc3RhcnRpbmcgZnJvbSB0aGUgbWFjaGluZQo+ICAgKiAgICogZnJh bWUgbnVtYmVyIG1mbi4gKi8KPiAgaW50IG1hcF9tbWlvX3JlZ2lvbnMoc3RydWN0IGRvbWFpbiAq ZCwKPiAtICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzdGFydF9nZm4sCj4gKyAg ICAgICAgICAgICAgICAgICAgIGdmbl90IHN0YXJ0X2dmbiwKPiAgICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgbG9uZyBuciwKPiAtICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9u ZyBtZm4pOwo+ICsgICAgICAgICAgICAgICAgICAgICBtZm5fdCBtZm4pOwo+ICBpbnQgdW5tYXBf bW1pb19yZWdpb25zKHN0cnVjdCBkb21haW4gKmQsCj4gLSAgICAgICAgICAgICAgICAgICAgICAg dW5zaWduZWQgbG9uZyBzdGFydF9nZm4sCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZ2ZuX3Qg c3RhcnRfZ2ZuLAo+ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbnIsCj4g LSAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBtZm4pOwo+ICsgICAgICAgICAg ICAgICAgICAgICAgIG1mbl90IG1mbik7Cj4gIAo+ICAvKgo+ICAgKiBTZXQgYWNjZXNzIHR5cGUg Zm9yIGEgcmVnaW9uIG9mIGdmbnMuCj4gLS0gCj4gMS45LjEKPiAKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVu LWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==