From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: Re: [PATCH v2 02/21] xen/arm: make allocate_memory work for non 1:1 mapped guests Date: Mon, 9 Jul 2018 16:02:21 -0700 (PDT) Message-ID: References: <1530918736-13965-2-git-send-email-sstabellini@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Julien Grall Cc: Stefano Stabellini , Stefano Stabellini , andrii_anisov@epam.com, xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org T24gTW9uLCA5IEp1bCAyMDE4LCBKdWxpZW4gR3JhbGwgd3JvdGU6Cj4gSGkgU3RlZmFubywKPiAK PiBPbiAwNy8wNy8xOCAwMDoxMSwgU3RlZmFubyBTdGFiZWxsaW5pIHdyb3RlOgo+ID4gRXh0ZW5k IGFsbG9jYXRlX21lbW9yeSB0byB3b3JrIGZvciBub24gMToxIG1hcHBlZCBkb21Vcy4gU3BlY2lm aWNhbGx5LAo+ID4gbWVtb3J5IGFsbG9jYXRlZCBmb3IgZG9tVSB3aWxsIGJlIG1hcHBlZCBpbnRv IHRoZSBkb21VIHBzZXVkby1waHlzaWNhbAo+ID4gYWRkcmVzcyBzcGFjZSBhdCB0aGUgYXBwcm9w cmlhdGUgYWRkcmVzc2VzIGFjY29yZGluZyB0byB0aGUgZ3Vlc3QgbWVtb3J5Cj4gPiBtYXA6IEdV RVNUX1JBTTBfQkFTRSBhbmQgR1VFU1RfUkFNMV9CQVNFLgo+ID4gCj4gPiBUbyBkbyB0aGF0LCBp bnNlcnRfMTFfYmFuayBoYXMgYmVlbiBleHRlbmRlZCB0byBkZWFsIHdpdGggbm9uLWRvbTAKPiA+ IG1hcHBpbmdzIHN0YXJ0aW5nIGZyb20gR1VFU1RfUkFNMF9CQVNFLiBpbnNlcnRfMTFfYmFuayBo YXMgYmVlbiByZW5hbWVkCj4gPiB0byBpbnNlcnRfYmFuay4KPiA+IAo+ID4gU2lnbmVkLW9mZi1i eTogU3RlZmFubyBTdGFiZWxsaW5pIDxzdGVmYW5vc0B4aWxpbnguY29tPgo+ID4gCj4gPiAtLS0K PiA+IENoYW5nZXMgaW4gdjI6Cj4gPiAtIG5ldyBwYXRjaAo+ID4gLS0tCj4gPiAgIHhlbi9hcmNo L2FybS9kb21haW5fYnVpbGQuYyB8IDU3Cj4gPiArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0tLS0tLS0tLS0KPiA+ICAgMSBmaWxlIGNoYW5nZWQsIDQ0IGluc2VydGlvbnMoKyks IDEzIGRlbGV0aW9ucygtKQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2RvbWFp bl9idWlsZC5jIGIveGVuL2FyY2gvYXJtL2RvbWFpbl9idWlsZC5jCj4gPiBpbmRleCAxODJlM2Q1 Li4yYTY2MTlhIDEwMDY0NAo+ID4gLS0tIGEveGVuL2FyY2gvYXJtL2RvbWFpbl9idWlsZC5jCj4g PiArKysgYi94ZW4vYXJjaC9hcm0vZG9tYWluX2J1aWxkLmMKPiA+IEBAIC05NywyNyArOTcsNTEg QEAgc3RhdGljIHVuc2lnbmVkIGludCBnZXRfYWxsb2NhdGlvbl9zaXplKHBhZGRyX3Qgc2l6ZSkK PiA+ICAgICogUmV0dXJucyBmYWxzZSBpZiB0aGUgbWVtb3J5IHdvdWxkIGJlIGJlbG93IGJhbmsg MCBvciB3ZSBoYXZlIHJ1bgo+ID4gICAgKiBvdXQgb2YgYmFua3MuIEluIHRoaXMgY2FzZSBpdCB3 aWxsIGZyZWUgdGhlIHBhZ2VzLgo+ID4gICAgKi8KPiA+IC1zdGF0aWMgYm9vbCBpbnNlcnRfMTFf YmFuayhzdHJ1Y3QgZG9tYWluICpkLAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBrZXJuZWxfaW5mbyAqa2luZm8sCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IHBhZ2VfaW5mbyAqcGcsCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgaW50IG9yZGVyKQo+ID4gK3N0YXRpYyBib29sIGluc2VydF9iYW5rKHN0cnVjdCBkb21h aW4gKmQsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGtlcm5lbF9pbmZvICpr aW5mbywKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwZywK PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgb3JkZXIsCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgYm9vbCBtYXBfMTEpCj4gPiAgIHsKPiA+IC0gICAgaW50IHJl cywgaTsKPiA+ICsgICAgaW50IHJlcywgaSwgbnJfbWVtX2JhbmtzID0gbWFwXzExID8gTlJfTUVN X0JBTktTIDogMjsKPiAKPiBucl9tZW1fYmFua3Mgc2hvdWxkIGJlIHVuc2lnbmVkLiBJIGFsc28g d291bGQgZHJvcCAibWVtXyIgdG8gc2hvcnRlbiBhIGJpdCB0aGUKPiBuYW1lLgoKT0sKCgo+ID4g ICAgICAgbWZuX3Qgc21mbjsKPiA+ICAgICAgIHBhZGRyX3Qgc3RhcnQsIHNpemU7Cj4gPiArICAg IHN0cnVjdCBtZW1iYW5rICpiYW5rOwo+ID4gICAgICAgICBzbWZuID0gcGFnZV90b19tZm4ocGcp Owo+ID4gICAgICAgc3RhcnQgPSBtZm5fdG9fbWFkZHIoc21mbik7Cj4gCj4gVGhlIG5ldyBjb2Rl IGlzIHByZXR0eSBob3JyaWJsZSB0byByZWFkLiBDYW4geW91IHBsZWFzZSBhZGQgc29tZSBjb21t ZW50cyB0bwo+IGhlbHAgdW5kZXJzdGFuZGluZyBpdD8KPiAKPiBIZXJlIGlzIGFscmVhZHkgYW4g ZXhhbXBsZSB3aGVyZSB5b3Ugc2V0IHN0YXJ0IHRvIE1GTi4gQnV0IHRoZW4gb3ZlcnJpZGUgYWZ0 ZXIKPiB3aXRoIG5vbmUgY29tbWVudCB0byB1bmRlcnN0YW5kIHdoeS4KPiAKPiBBbHNvLCB0aGlz IGNvZGUgYXMgYWx3YXlzIGFzc3VtZWQgTUZOID09IEdGTiBzbyBzdGFydCB3YXMgbWFraW5nIHNl bnNlLiBOb3csCj4geW91IHJlLXB1cnBvc2UgaXQgdG8ganVzdCB0aGUgZ3Vlc3QtcGh5c2ljYWwg YWRkcmVzcy4gU28gbW9yZSBsaWtlbHkgeW91IHdhbnQKPiB0byByZXdvcmsgdGhlIGNvZGUgYSBi aXQuCgpJJ2xsIGFkZCBtb3JlIGNvbW1lbnRzIGluIHRoZSBjb2RlLiBOZXh0IHRpbWUgdGhlIHBh dGNoIHdpbGwgYmUgY2xlYXJlci4KVGhpcyBpcyBhIHNuaXBwZXQgdG8gZ2l2ZSB5b3UgYW4gaWRl YSwgYnV0IGl0IG1pZ2h0IGJlIGJlc3QgZm9yIHlvdSB0bwpqdXN0IHdhaXQgZm9yIHRoZSBuZXh0 IHZlcnNpb24gYmVmb3JlIHJlYWRpbmcgdGhpcyBhZ2Fpbi4KCiAgICAvKgogICAgICogc21mbjog dGhlIGFkZHJlc3Mgb2YgdGhlIHNldCBvZiBwYWdlcyB0byBtYXAKICAgICAqIHN0YXJ0OiB0aGUg YWRkcmVzcyBpbiBndWVzdCBwc2V1ZG8tcGh5c2ljYWwgbWVtb3J5IHdoZXJlIHRvIG1hcAogICAg ICogICAgICAgIHRoZSBwYWdlcwogICAgICovCiAgICBzbWZuID0gcGFnZV90b19tZm4ocGcpOwog ICAgc3RhcnQgPSBtZm5fdG9fbWFkZHIoc21mbik7CiAgICBzaXplID0gcGZuX3RvX3BhZGRyKDFV TCA8PCBvcmRlcik7CiAgICBpZiAoICFpc19oYXJkd2FyZV9kb21haW4oZCkgKQogICAgewogICAg ICAgIC8qCiAgICAgICAgICogRG9tMCBpcyAxOjEgbWFwcGVkLCBzbyBzdGFydCBpcyB0aGUgc2Ft ZSBhcyAoc21mbiA8PAogICAgICAgICAqIFBBR0VfU0hJRlQpLgogICAgICAgICAqCiAgICAgICAg ICogSW5zdGVhZCwgRG9tVSBtZW1vcnkgaXMgcHJvdmlkZWQgaW4gdHdvIGJhbmtzOgogICAgICAg ICAqICAgR1VFU1RfUkFNMF9CQVNFIC0gR1VFU1RfUkFNMF9CQVNFICsgR1VFU1RfUkFNMF9TSVpF CiAgICAgICAgICogICBHVUVTVF9SQU0xX0JBU0UgLSBHVUVTVF9SQU0xX0JBU0UgKyBHVUVTVF9S QU0xX1NJWkUKICAgICAgICAgKiAKICAgICAgICAgKiBGaW5kIHRoZSByaWdodCBzdGFydCBhZGRy ZXNzIGZvciBEb21VcyBhY2NvcmRpbmdseS4KICAgICAgICAgKi8KICAKCgo+ID4gICAgICAgc2l6 ZSA9IHBmbl90b19wYWRkcigxVUwgPDwgb3JkZXIpOwo+ID4gKyAgICBpZiAoICFtYXBfMTEgKQo+ IAo+IEkgYW0gbm90IHN1cmUgd2h5IG1hcF8xMSB3b3VsZCBtZWFuIERvbVU/IEkgZG9uJ3Qgc2Vl IGFueSByZWFzb24gdG8gbm90IGFsbG93Cj4gdGhhdCBmb3IgRG9tMC4gTm90ZSB0aGF0IEkgYW0g bm90IGFza2luZyB0byBkbyBpdCwganVzdCBoYXZpbmcgY2xlYXJlciBuYW1lLgoKR29vZCBwb2lu dC4gSSB0aGluayBJIHNob3VsZCBqdXN0IGRyb3AgdGhlIG9wdGlvbiwgd2hpY2ggaXMganVzdApj b25mdXNpbmcsIGFuZCBrZWVwIHVzaW5nIGlzX2hhcmR3YXJlX2RvbWFpbihkKSBjaGVja3MgbGlr ZSBpbgphbGxvY2F0ZV9tZW1vcnkuIE90aGVyd2lzZSBsZXQgbWUga25vdyBpZiB5b3UgaGF2ZSBh IGJldHRlciBpZGVhLgoKCj4gPiArICAgIHsKPiA+ICsgICAgICAgIHN0YXJ0ID0gR1VFU1RfUkFN MF9CQVNFOwo+ID4gKyAgICAgICAgaWYgKCBraW5mby0+bWVtLm5yX2JhbmtzID4gMCApCj4gPiAr ICAgICAgICB7Cj4gPiArICAgICAgICAgICAgZm9yKCBpID0gMDsgaSA8IGtpbmZvLT5tZW0ubnJf YmFua3M7IGkrKyApCj4gPiArICAgICAgICAgICAgewo+ID4gKyAgICAgICAgICAgICAgICBiYW5r ID0gJmtpbmZvLT5tZW0uYmFua1tpXTsKPiA+ICsgICAgICAgICAgICAgICAgc3RhcnQgPSBiYW5r LT5zdGFydCArIGJhbmstPnNpemU7Cj4gPiArICAgICAgICAgICAgfQo+ID4gKyAgICAgICAgICAg IGlmICggYmFuay0+c3RhcnQgPT0gR1VFU1RfUkFNMF9CQVNFICYmCj4gPiArICAgICAgICAgICAg ICAgICAgICBzdGFydCArIHNpemUgPiAoR1VFU1RfUkFNMF9CQVNFICsgR1VFU1RfUkFNMF9TSVpF KSApCj4gCj4gVGhlIGluZGVudGF0aW9uIGxvb2tzIHdyb25nLgoKT0sKCgo+ID4gKyAgICAgICAg ICAgICAgICBzdGFydCA9IEdVRVNUX1JBTTFfQkFTRTsKPiA+ICsgICAgICAgICAgICBpZiAoIGJh bmstPnN0YXJ0ID09IEdVRVNUX1JBTTFfQkFTRSAmJgo+ID4gKyAgICAgICAgICAgICAgICAgICAg c3RhcnQgKyBzaXplID4gKEdVRVNUX1JBTTFfQkFTRSArIEdVRVNUX1JBTTFfU0laRSkgKQo+ID4g KyAgICAgICAgICAgIHsKPiA+ICsgICAgICAgICAgICAgICAgRDExUFJJTlQoIkFsbG9jYXRpb24g b2YgZG9tYWluIG1lbW9yeSBleGNlZWRzIG1heAo+ID4gYW1vdW50XG4iKTsKPiAKPiBUaGlzIGxv b2tzIHF1aXRlIHN0cmFuZ2UgdG8gdXNlIEQxMVBSSU5UIGhlcmUgYXMgdGhpcyByZWxhdGVkIHRv IGRpcmVjdC1kb21haW4KPiBtYXBwZWQuCiAKWW91IGFyZSByaWdodCwgYnV0IEkgZGlkbid0IGZl ZWwgbGlrZSByZXBsYWNpbmcgYWxsIEQxMVBSSU5UCm9jY3VycmVuY2VzLiBTaG91bGQgSSBkbyB0 aGF0PyBPciBzaG91bGQgSSBjaGFuZ2UganVzdCB0aGlzIGluc3RhbmNlPyBJCmNvdWxkIGFsc28g anVzdCBkcm9wIHRoaXMgRDExUFJJTlQsIGdpdmVuIHRoYXQgdGhlIHByaW50ayBpcyBub3QgZXZl bgplbmFibGVkIGJ5IGRlZmF1bHQuIExldCBtZSBrbm93LgoKCj4gPiArICAgICAgICAgICAgICAg IGdvdG8gZmFpbDsKPiA+ICsgICAgICAgICAgICB9Cj4gPiArICAgICAgICB9Cj4gPiArICAgIH0K PiA+ICAgLSAgICBEMTFQUklOVCgiQWxsb2NhdGVkICUjIlBSSXBhZGRyIi0lIyJQUklwYWRkciIg KCVsZE1CLyVsZE1CLCBvcmRlcgo+ID4gJWQpXG4iLAo+ID4gKyAgICBEMTFQUklOVCgiQWxsb2Nh dGVkICUjIlBSSXBhZGRyIi0lIyJQUklwYWRkciI6JSMiUFJJcGFkZHIiLSUjIlBSSXBhZGRyIgo+ ID4gKCVsZE1CLyVsZE1CLCBvcmRlciAlZClcbiIsCj4gPiArICAgICAgICAgICAgIG1mbl90b19t YWRkcihzbWZuKSwgbWZuX3RvX21hZGRyKHNtZm4pICsgc2l6ZSwKPiA+ICAgICAgICAgICAgICAg IHN0YXJ0LCBzdGFydCArIHNpemUsCj4gPiAgICAgICAgICAgICAgICAxVUwgPDwgKG9yZGVyICsg UEFHRV9TSElGVCAtIDIwKSwKPiA+ICAgICAgICAgICAgICAgIC8qIERvbid0IHdhbnQgZm9ybWF0 IHRoaXMgYXMgUFJJcGFkZHIgKDE2IGRpZ2l0IGhleCkgKi8KPiA+ICAgICAgICAgICAgICAgICh1 bnNpZ25lZCBsb25nKShraW5mby0+dW5hc3NpZ25lZF9tZW0gPj4gMjApLAo+ID4gICAgICAgICAg ICAgICAgb3JkZXIpOwo+ID4gICAtICAgIGlmICgga2luZm8tPm1lbS5ucl9iYW5rcyA+IDAgJiYK PiA+ICsgICAgaWYgKCBtYXBfMTEgJiYga2luZm8tPm1lbS5ucl9iYW5rcyA+IDAgJiYKPiAKPiBX aHkgZG8geW91IGRyb3AgdGhhdCBjaGVjaz8gSXQgc2hvdWxkIGJlIGhhcm1sZXNzIGZvciBub24t ZGlyZWN0IG1hcHBlZAo+IGRvbWFpbi4KCllvdSBhcmUgcmlnaHQuIEknbGwgcmVtb3ZlIHRoaXMg Y2hhbmdlLgoKCj4gPiAgICAgICAgICAgIHNpemUgPCBNQigxMjgpICYmID4gICAgICAgICAgICBz dGFydCArIHNpemUgPAo+ID4ga2luZm8tPm1lbS5iYW5rWzBdLnN0YXJ0ICkKPiA+ICAgICAgIHsK PiA+IEBAIC0xMjUsNyArMTQ5LDcgQEAgc3RhdGljIGJvb2wgaW5zZXJ0XzExX2Jhbmsoc3RydWN0 IGRvbWFpbiAqZCwKPiA+ICAgICAgICAgICBnb3RvIGZhaWw7Cj4gPiAgICAgICB9Cj4gPiAgIC0g ICAgcmVzID0gZ3Vlc3RfcGh5c21hcF9hZGRfcGFnZShkLCBfZ2ZuKG1mbl94KHNtZm4pKSwgc21m biwgb3JkZXIpOwo+ID4gKyAgICByZXMgPSBndWVzdF9waHlzbWFwX2FkZF9wYWdlKGQsIGdhZGRy X3RvX2dmbihzdGFydCksIHNtZm4sIG9yZGVyKTsKPiA+ICAgICAgIGlmICggcmVzICkKPiA+ICAg ICAgICAgICBwYW5pYygiRmFpbGVkIG1hcCBwYWdlcyB0byBET00wOiAlZCIsIHJlcyk7Cj4gPiAg IEBAIC0xNDEsNyArMTY1LDcgQEAgc3RhdGljIGJvb2wgaW5zZXJ0XzExX2Jhbmsoc3RydWN0IGRv bWFpbiAqZCwKPiA+ICAgICAgICAgZm9yKCBpID0gMDsgaSA8IGtpbmZvLT5tZW0ubnJfYmFua3M7 IGkrKyApCj4gPiAgICAgICB7Cj4gPiAtICAgICAgICBzdHJ1Y3QgbWVtYmFuayAqYmFuayA9ICZr aW5mby0+bWVtLmJhbmtbaV07Cj4gPiArICAgICAgICBiYW5rID0gJmtpbmZvLT5tZW0uYmFua1tp XTsKPiA+ICAgICAgICAgICAgIC8qIElmIHBvc3NpYmxlIG1lcmdlIG5ldyBtZW1vcnkgaW50byB0 aGUgc3RhcnQgb2YgdGhlIGJhbmsgKi8KPiA+ICAgICAgICAgICBpZiAoIGJhbmstPnN0YXJ0ID09 IHN0YXJ0K3NpemUgKQo+ID4gQEAgLTE2NCw3ICsxODgsNyBAQCBzdGF0aWMgYm9vbCBpbnNlcnRf MTFfYmFuayhzdHJ1Y3QgZG9tYWluICpkLAo+ID4gICAgICAgICAgICAqIGNvdWxkIGhhdmUgaW5z ZXJ0ZWQgdGhlIG1lbW9yeSBpbnRvL2JlZm9yZSB3ZSB3b3VsZCBhbHJlYWR5Cj4gPiAgICAgICAg ICAgICogaGF2ZSBkb25lIHNvLCBzbyB0aGlzIG11c3QgYmUgdGhlIHJpZ2h0IHBsYWNlLgo+ID4g ICAgICAgICAgICAqLwo+ID4gLSAgICAgICAgaWYgKCBzdGFydCArIHNpemUgPCBiYW5rLT5zdGFy dCAmJiBraW5mby0+bWVtLm5yX2JhbmtzIDwKPiA+IE5SX01FTV9CQU5LUyApCj4gPiArICAgICAg ICBpZiAoIHN0YXJ0ICsgc2l6ZSA8IGJhbmstPnN0YXJ0ICYmIGtpbmZvLT5tZW0ubnJfYmFua3Mg PAo+ID4gbnJfbWVtX2JhbmtzICkKPiA+ICAgICAgICAgICB7Cj4gPiAgICAgICAgICAgICAgIG1l bW1vdmUoYmFuayArIDEsIGJhbmssCj4gPiAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKCpi YW5rKSAqIChraW5mby0+bWVtLm5yX2JhbmtzIC0gaSkpOwo+ID4gQEAgLTE3NSw3ICsxOTksNyBA QCBzdGF0aWMgYm9vbCBpbnNlcnRfMTFfYmFuayhzdHJ1Y3QgZG9tYWluICpkLAo+ID4gICAgICAg ICAgIH0KPiA+ICAgICAgIH0KPiA+ICAgLSAgICBpZiAoIGkgPT0ga2luZm8tPm1lbS5ucl9iYW5r cyAmJiBraW5mby0+bWVtLm5yX2JhbmtzIDwgTlJfTUVNX0JBTktTICkKPiA+ICsgICAgaWYgKCBp ID09IGtpbmZvLT5tZW0ubnJfYmFua3MgJiYga2luZm8tPm1lbS5ucl9iYW5rcyA8IG5yX21lbV9i YW5rcyApCj4gPiAgICAgICB7Cj4gPiAgICAgICAgICAgc3RydWN0IG1lbWJhbmsgKmJhbmsgPSAm a2luZm8tPm1lbS5iYW5rW2tpbmZvLT5tZW0ubnJfYmFua3NdOwo+ID4gICBAQCAtMjUzLDYgKzI3 Nyw3IEBAIHN0YXRpYyB2b2lkIGFsbG9jYXRlX21lbW9yeShzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1 Y3QKPiA+IGtlcm5lbF9pbmZvICpraW5mbykKPiA+ICAgICAgIHN0cnVjdCBwYWdlX2luZm8gKnBn Owo+ID4gICAgICAgdW5zaWduZWQgaW50IG9yZGVyID0gZ2V0X2FsbG9jYXRpb25fc2l6ZShraW5m by0+dW5hc3NpZ25lZF9tZW0pOwo+ID4gICAgICAgaW50IGk7Cj4gPiArICAgIGJvb2wgaHdkb20g PSBkLT5kb21haW5faWQgPT0gMDsKPiAKPiBZb3Ugc2hvdWxkIHVzZSBpc19oYXJkd2FyZV9kb21h aW4oLi4uKS4KClllcywgSSdsbCBkbyB0aGF0IGhlcmUgYW5kIGVsc2V3aGVyZSBpbiB0aGlzIHBh dGNoCgoKPiA+ICAgICAgICAgYm9vbCBsb3dtZW0gPSB0cnVlOwo+ID4gICAgICAgdW5zaWduZWQg aW50IGJpdHM7Cj4gPiBAQCAtMjYzLDYgKzI4OCwxMiBAQCBzdGF0aWMgdm9pZCBhbGxvY2F0ZV9t ZW1vcnkoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0Cj4gPiBrZXJuZWxfaW5mbyAqa2luZm8pCj4g PiAgICAgICAgIGtpbmZvLT5tZW0ubnJfYmFua3MgPSAwOwo+ID4gICArICAgIGlmICggIWh3ZG9t ICkKPiA+ICsgICAgewo+ID4gKyAgICAgICAgbG93bWVtID0gZmFsc2U7Cj4gPiArICAgICAgICBn b3RvIGdvdF9iYW5rMDsKPiA+ICsgICAgfQo+IAo+IENhbiB5b3UgZXhwbGFpbiB3aHkgeW91IG5l ZWQgdGhpcz8KClllcywgSSdsbCBhZGQgYSBjb21tZW50LiBUaGUgZmlyc3QgcGFydCBvZiBhbGxv Y2F0ZV9tZW1vcnkgdHJpZXMgdG8KYWxsb2NhdGUgbWVtb3J5IGFzIGxvdyBhcyBwb3NzaWJsZSwg d2hpY2ggaXMgZmluZSBmb3IgZG9tMCBidXQgaXQgaXMKdW5uZWNlc3NhcnkgZm9yIERvbVVzLCBn aXZlbiB0aGF0IHRoZXkgYXJlIG5vdCAxOjEgbWFwcGVkLiBTbywgdGhpcwpjaGVjayBpcyBtZWFu dCB0byBnbyBzdHJhaWdodCB0byB0aGUgcmVndWxhciBhbGxvY2F0aW9uIGZvciBEb21VcywKc2tp cHBpbmcgdGhlIHNwZWNpYWwgYmVsb3ctNEcgYWxsb2NhdGlvbiBsb29wLgoKCj4gPiArCj4gPiAg ICAgICAvKgo+ID4gICAgICAgICogRmlyc3QgdHJ5IGFuZCBhbGxvY2F0ZSB0aGUgbGFyZ2VzdCB0 aGluZyB3ZSBjYW4gYXMgbG93IGFzCj4gPiAgICAgICAgKiBwb3NzaWJsZSB0byBiZSBiYW5rIDAu Cj4gPiBAQCAtMjc0LDcgKzMwNSw3IEBAIHN0YXRpYyB2b2lkIGFsbG9jYXRlX21lbW9yeShzdHJ1 Y3QgZG9tYWluICpkLCBzdHJ1Y3QKPiA+IGtlcm5lbF9pbmZvICpraW5mbykKPiA+ICAgICAgICAg ICAgICAgcGcgPSBhbGxvY19kb21oZWFwX3BhZ2VzKGQsIG9yZGVyLCBNRU1GX2JpdHMoYml0cykp Owo+ID4gICAgICAgICAgICAgICBpZiAoIHBnICE9IE5VTEwgKQo+ID4gICAgICAgICAgICAgICB7 Cj4gPiAtICAgICAgICAgICAgICAgIGlmICggIWluc2VydF8xMV9iYW5rKGQsIGtpbmZvLCBwZywg b3JkZXIpICkKPiA+ICsgICAgICAgICAgICAgICAgaWYgKCAhaW5zZXJ0X2JhbmsoZCwga2luZm8s IHBnLCBvcmRlciwgaHdkb20pICkKPiA+ICAgICAgICAgICAgICAgICAgICAgICBCVUcoKTsgLyog Q2Fubm90IGZhaWwgZm9yIGZpcnN0IGJhbmsgKi8KPiA+ICAgICAgICAgICAgICAgICAgICAgZ290 byBnb3RfYmFuazA7Cj4gPiBAQCAtMzE5LDcgKzM1MCw3IEBAIHN0YXRpYyB2b2lkIGFsbG9jYXRl X21lbW9yeShzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QKPiA+IGtlcm5lbF9pbmZvICpraW5mbykK PiA+ICAgICAgICAgICAgICAgYnJlYWs7Cj4gPiAgICAgICAgICAgfQo+ID4gICAtICAgICAgICBp ZiAoICFpbnNlcnRfMTFfYmFuayhkLCBraW5mbywgcGcsIG9yZGVyKSApCj4gPiArICAgICAgICBp ZiAoICFpbnNlcnRfYmFuayhkLCBraW5mbywgcGcsIG9yZGVyLCBod2RvbSkgKQo+ID4gICAgICAg ICAgIHsKPiA+ICAgICAgICAgICAgICAgaWYgKCBraW5mby0+bWVtLm5yX2JhbmtzID09IE5SX01F TV9CQU5LUyApCj4gPiAgICAgICAgICAgICAgICAgICAvKiBOb3RoaW5nIG1vcmUgd2UgY2FuIGRv LiAqLwo+ID4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpo dHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs