From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= Subject: Re: [PATCH v2 2/2] block/xen-blkfront: Handle non-indirect grant with 64KB pages Date: Thu, 12 Nov 2015 17:40:49 +0100 Message-ID: <5644C111.2020006__25586.0103214674$1447346533$gmane$org@citrix.com> References: <1445264354-23648-1-git-send-email-julien.grall@citrix.com> <1445264354-23648-3-git-send-email-julien.grall@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1Zwuvg-0007be-SF for xen-devel@lists.xenproject.org; Thu, 12 Nov 2015 16:40:57 +0000 In-Reply-To: <1445264354-23648-3-git-send-email-julien.grall@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Julien Grall , xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org Cc: Boris Ostrovsky , David Vrabel List-Id: xen-devel@lists.xenproject.org RWwgMTkvMTAvMTUgYSBsZXMgMTYuMTksIEp1bGllbiBHcmFsbCBoYSBlc2NyaXQ6Cj4gVGhlIG1p bmltYWwgc2l6ZSBvZiByZXF1ZXN0IGluIHRoZSBibG9jayBmcmFtZXdvcmsgaXMgYWx3YXlzIFBB R0VfU0laRS4KPiBJdCBtZWFucyB0aGF0IHdoZW4gNjRLQiBndWVzdCBpcyBzdXBwb3J0LCB0aGUg cmVxdWVzdCB3aWxsIGF0IGxlYXN0IGJlCj4gNjRLQi4KPiAKPiBBbHRob3VnaCwgaWYgdGhlIGJh Y2tlbmQgZG9lc24ndCBzdXBwb3J0IGluZGlyZWN0IGRlc2NyaXB0b3IgKHN1Y2ggYXMgUURJU0sK PiBpbiBRRU1VKSwgYSByaW5nIHJlcXVlc3QgaXMgb25seSBhYmxlIHRvIGFjY29tbW9kYXRlIDEx IHNlZ21lbnRzIG9mIDRLQgo+IChpLmUgNDRLQikuCj4gCj4gVGhlIGN1cnJlbnQgZnJvbnRlbmQg aXMgYXNzdW1pbmcgdGhhdCBhbiBJL08gcmVxdWVzdCB3aWxsIGFsd2F5cyBmaXQgaW4KPiBhIHJp bmcgcmVxdWVzdC4gVGhpcyBpcyBub3QgdHJ1ZSBhbnkgbW9yZSB3aGVuIHVzaW5nIDY0S0IgcGFn ZQo+IGdyYW51bGFyaXR5IGFuZCB3aWxsIHRoZXJlZm9yZSBjcmFzaCBkdXJpbmcgYm9vdC4KPiAK PiBPbiBBUk02NCwgdGhlIEFCSSBpcyBjb21wbGV0ZWx5IG5ldXRyYWwgdG8gdGhlIHBhZ2UgZ3Jh bnVsYXJpdHkgdXNlZCBieQo+IHRoZSBkb21VLiBUaGUgZ3Vlc3QgaGFzIHRoZSBjaG9pY2UgYmV0 d2VlbiBkaWZmZXJlbnQgcGFnZSBncmFudWxhcml0eQo+IHN1cHBvcnRlZCBieSB0aGUgcHJvY2Vz c29ycyAoZm9yIGluc3RhbmNlIG9uIEFSTTY0OiA0S0IsIDE2S0IsIDY0S0IpLgo+IFRoaXMgY2Fu J3QgYmUgZW5mb3JjZWQgYnkgdGhlIGh5cGVydmlzb3IgYW5kIHRoZXJlZm9yZSBpdCdzIHBvc3Np YmxlIHRvCj4gcnVuIGd1ZXN0cyB1c2luZyBkaWZmZXJlbnQgcGFnZSBncmFudWxhcml0eS4KPiAK PiBTbyB3ZSBjYW4ndCBtYW5kYXRlIHRoZSBibG9jayBiYWNrZW5kIHRvIHN1cHBvcnQgaW5kaXJl Y3QgZGVzY3JpcHRvcgo+IHdoZW4gdGhlIGZyb250ZW5kIGlzIHVzaW5nIDY0S0IgcGFnZSBncmFu dWxhcml0eSBhbmQgaGF2ZSB0byBmaXggaXQKPiBwcm9wZXJseSBpbiB0aGUgZnJvbnRlbmQuCj4g Cj4gVGhlIHNvbHV0aW9uIGV4cG9zZWQgYmVsb3cgaXMgYmFzZWQgb24gbW9kaWZ5aW5nIGRpcmVj dGx5IHRoZSBmcm9udGVuZAo+IGd1ZXN0IHJhdGhlciB0aGFuIGFza2luZyB0aGUgYmxvY2sgZnJh bWV3b3JrIHRvIHN1cHBvcnQgc21hbGxlciBzaXplCj4gKGkuZSA8IFBBR0VfU0laRSkuIFRoaXMg aXMgYmVjYXVzZSB0aGUgY2hhbmdlIGlzIHRoZSBibG9jayBmcmFtZXdvcmsgYXJlCj4gbm90IHRy aXZpYWwgYXMgZXZlcnl0aGluZyBzZWVtcyB0byByZWx5aW5nIG9uIGEgc3RydWN0ICpwYWdlIChz ZWUgWzFdKS4KPiBBbHRob3VnaCwgaXQgbWF5IGJlIHBvc3NpYmxlIHRoYXQgc29tZW9uZSBzdWNj ZWVkIHRvIGRvIGl0IGluIHRoZSBmdXR1cmUKPiBhbmQgd2Ugd291bGQgdGhlcmVmb3JlIGJlIGFi bGUgdG8gdXNlIGl0Lgo+IAo+IEdpdmVuIHRoYXQgYSBibG9jayByZXF1ZXN0IG1heSBub3QgZml0 IGluIGEgc2luZ2xlIHJpbmcgcmVxdWVzdCwgYQo+IHNlY29uZCByZXF1ZXN0IGlzIGludHJvZHVj ZWQgZm9yIHRoZSBkYXRhIHRoYXQgY2Fubm90IGZpdCBpbiB0aGUgZmlyc3QKPiBvbmUuIFRoaXMg bWVhbnMgdGhhdCB0aGUgc2Vjb25kIHJpbmcgcmVxdWVzdCBzaG91bGQgbmV2ZXIgYmUgdXNlZCBv bgo+IExpbnV4IGlmIHRoZSBwYWdlIHNpemUgaXMgc21hbGxlciB0aGFuIDQ0S0IuCj4gCj4gVG8g YWNoaWV2ZSB0aGUgc3VwcG9ydCBvZiB0aGUgZXh0cmEgcmluZyByZXF1ZXN0LCB0aGUgYmxvY2sg cXVldWUgc2l6ZQo+IGlzIGRpdmlkZWQgYnkgdHdvLiBUaGVyZWZvcmUsIHRoZSByaW5nIHdpbGwg YWx3YXlzIGNvbnRhaW4gZW5vdWdoIHNwYWNlCj4gdG8gYWNjb21tb2RhdGUgMiByaW5nIHJlcXVl c3RzLiBXaGlsZSB0aGlzIHdpbGwgcmVkdWNlIHRoZSBvdmVyYWxsCj4gcGVyZm9ybWFuY2UsIGl0 IHdpbGwgbWFrZSB0aGUgaW1wbGVtZW50YXRpb24gbW9yZSBjb250YWluZWQuIFRoZSB3YXkKPiBm b3J3YXJkIHRvIGdldCBiZXR0ZXIgcGVyZm9ybWFuY2UgaXMgdG8gaW1wbGVtZW50IGluIHRoZSBi YWNrZW5kIGVpdGhlcgo+IGluZGlyZWN0IGRlc2NyaXB0b3Igb3IgbXVsdGlwbGUgZ3JhbnRzIHJp bmcuCj4gCj4gTm90ZSB0aGF0IHRoZSBwYXJhbWV0ZXJzIGJsa19xdWV1ZV9tYXhfKiBoZWxwZXJz IGhhdmVuJ3QgYmVlbiB1cGRhdGVkLgo+IFRoZSBibG9jayBjb2RlIHdpbGwgc2V0IHRoZSBtaW1p bXVtIHNpemUgc3VwcG9ydGVkIGFuZCB3ZSBtYXkgYmUgYWJsZQo+IHRvIHN1cHBvcnQgZGlyZWN0 bHkgYW55IGNoYW5nZSBpbiB0aGUgYmxvY2sgZnJhbWV3b3JrIHRoYXQgbG93ZXIgZG93bgo+IHRo ZSBtaW5pbWFsIHNpemUgb2YgYSByZXF1ZXN0Lgo+IAo+IFsxXSBodHRwOi8vbGlzdHMueGVuLm9y Zy9hcmNoaXZlcy9odG1sL3hlbi1kZXZlbC8yMDE1LTA4L21zZzAyMjAwLmh0bWwKPiAKPiBTaWdu ZWQtb2ZmLWJ5OiBKdWxpZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBjaXRyaXguY29tPgoKTEdUTSwg b25seSBhIGNvdXBsZSBvZiB0eXBvcyBhbmQgYSBzaW1wbGlmaWNhdGlvbjoKClNpZ25lZC1vZmYt Ynk6IFJvZ2VyIFBhdSBNb25uw6kgPHJvZ2VyLnBhdUBjaXRyaXguY29tPgoKPiAtLS0KPiBDYzog S29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgo+IENjOiAiUm9n ZXIgUGF1IE1vbm7DqSIgPHJvZ2VyLnBhdUBjaXRyaXguY29tPgo+IENjOiBCb3JpcyBPc3Ryb3Zz a3kgPGJvcmlzLm9zdHJvdnNreUBvcmFjbGUuY29tPgo+IENjOiBEYXZpZCBWcmFiZWwgPGRhdmlk LnZyYWJlbEBjaXRyaXguY29tPgo+IAo+ICAgICBDaGFuZ2VzIGluIHYyOgo+ICAgICAgICAgLSBV cGRhdGUgdGhlIGNvbW1pdCBtZXNzYWdlCj4gICAgICAgICAtIFR5cG9lcwo+ICAgICAgICAgLSBS ZW5hbWUgcmluZ19yZXEyL2lkMiB0byBleHRyYV9yaW5nX3JlcS9leHRyYV9pZAo+IC0tLQo+ICBk cml2ZXJzL2Jsb2NrL3hlbi1ibGtmcm9udC5jIHwgMjAwICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDE4NCBpbnNlcnRpb25zKCsp LCAxNiBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay94ZW4tYmxr ZnJvbnQuYyBiL2RyaXZlcnMvYmxvY2sveGVuLWJsa2Zyb250LmMKPiBpbmRleCA1OTgyNzY4Li44 ZWEyYzk3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvYmxvY2sveGVuLWJsa2Zyb250LmMKPiArKysg Yi9kcml2ZXJzL2Jsb2NrL3hlbi1ibGtmcm9udC5jCj4gQEAgLTYwLDYgKzYwLDIwIEBACj4gIAo+ ICAjaW5jbHVkZSA8YXNtL3hlbi9oeXBlcnZpc29yLmg+Cj4gIAo+ICsvKgo+ICsgKiBUaGUgbWlu aW1hbCBzaXplIG9mIHNlZ21lbnQgc3VwcG9ydGQgYnkgdGhlIGJsb2NrIGZyYW1ld29yayBpcyBQ QUdFX1NJWkUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBec3VwcG9ydGVkCj4g KyAqIFdoZW4gTGludXggaXMgdXNpbmcgYSBkaWZmZXJlbnQgcGFnZSBzaXplIHRoYW4geGVuLCBp dCBtYXkgbm90IGJlIHBvc3NpYmxlCj4gKyAqIHRvIHB1dCBhbGwgdGhlIGRhdGEgaW4gYSBzaW5n bGUgc2VnbWVudC4KPiArICogVGhpcyBjYW4gaGFwcGVuIHdoZW4gdGhlIGJhY2tlbmQgZG9lc24n dCBzdXBwb3J0IGluZGlyZWN0IGRlc2NyaXB0b3IgYW5kCj4gKyAqIHRoZXJlZm9yZSB0aGUgbWF4 aW11bSBhbW91bnQgb2YgZGF0YSB0aGF0IGEgcmVxdWVzdCBjYW4gY2FycnkgaXMKPiArICogQkxL SUZfTUFYX1NFR01FTlRTX1BFUl9SRVFVRVNUICogWEVOX1BBR0VfU0laRSA9IDQ0S0IKPiArICoK PiArICogTm90ZSB0aGF0IHdlIG9ubHkgc3VwcG9ydCBvbmUgZXh0cmEgcmVxdWVzdC4gU28gdGhl IExpbnV4IHBhZ2Ugc2l6ZQo+ICsgKiBzaG91bGQgYmUgPD0gKCAyICogQkxLSUZfTUFYX1NFR01F TlRTX1BFUl9SRVFVRVNUICogWEVOX1BBR0VfU0laRSkgPQo+ICsgKiA4OEtCLgo+ICsgKi8KPiAr I2RlZmluZSBIQVNfRVhUUkFfUkVRIChCTEtJRl9NQVhfU0VHTUVOVFNfUEVSX1JFUVVFU1QgPCBY RU5fUEZOX1BFUl9QQUdFKQo+ICsKPiAgZW51bSBibGtpZl9zdGF0ZSB7Cj4gIAlCTEtJRl9TVEFU RV9ESVNDT05ORUNURUQsCj4gIAlCTEtJRl9TVEFURV9DT05ORUNURUQsCj4gQEAgLTc5LDYgKzkz LDE4IEBAIHN0cnVjdCBibGtfc2hhZG93IHsKPiAgCXN0cnVjdCBncmFudCAqKmluZGlyZWN0X2dy YW50czsKPiAgCXN0cnVjdCBzY2F0dGVybGlzdCAqc2c7Cj4gIAl1bnNpZ25lZCBpbnQgbnVtX3Nn Owo+ICsJZW51bSB7Cj4gKwkJUkVRX1dBSVRJTkcsCj4gKwkJUkVRX0RPTkUsCj4gKwkJUkVRX0ZB SUwKPiArCX0gc3RhdHVzOwo+ICsKPiArCSNkZWZpbmUgTk9fQVNTT0NJQVRFRF9JRCB+MFVMCj4g KwkvKgo+ICsJICogSWQgb2YgdGhlIHNpYmxpbmcgaWYgd2UgZXZlciBuZWVkIDIgcmVxdWVzdHMg d2hlbiBoYW5kbGluZyBhCj4gKwkgKiBibG9jayBJL08gcmVxdWVzdAo+ICsJICovCj4gKwl1bnNp Z25lZCBsb25nIGFzc29jaWF0ZWRfaWQ7Cj4gIH07Cj4gIAo+ICBzdHJ1Y3Qgc3BsaXRfYmlvIHsK PiBAQCAtNDY3LDYgKzQ5Myw4IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGJsa2lmX3JpbmdfZ2V0 X3JlcXVlc3Qoc3RydWN0IGJsa2Zyb250X2luZm8gKmluZm8sCj4gIAo+ICAJaWQgPSBnZXRfaWRf ZnJvbV9mcmVlbGlzdChpbmZvKTsKPiAgCWluZm8tPnNoYWRvd1tpZF0ucmVxdWVzdCA9IHJlcTsK PiArCWluZm8tPnNoYWRvd1tpZF0uc3RhdHVzID0gUkVRX1dBSVRJTkc7Cj4gKwlpbmZvLT5zaGFk b3dbaWRdLmFzc29jaWF0ZWRfaWQgPSBOT19BU1NPQ0lBVEVEX0lEOwo+ICAKPiAgCSgqcmluZ19y ZXEpLT51LnJ3LmlkID0gaWQ7Cj4gIAo+IEBAIC01MDgsNiArNTM2LDkgQEAgc3RydWN0IHNldHVw X3J3X3JlcSB7Cj4gIAlib29sIG5lZWRfY29weTsKPiAgCXVuc2lnbmVkIGludCBidmVjX29mZjsK PiAgCWNoYXIgKmJ2ZWNfZGF0YTsKPiArCj4gKwlib29sIHJlcXVpcmVfZXh0cmFfcmVxOwo+ICsJ c3RydWN0IGJsa2lmX3JlcXVlc3QgKmV4dHJhX3JpbmdfcmVxOwo+ICB9Owo+ICAKPiAgc3RhdGlj IHZvaWQgYmxraWZfc2V0dXBfcndfcmVxX2dyYW50KHVuc2lnbmVkIGxvbmcgZ2ZuLCB1bnNpZ25l ZCBpbnQgb2Zmc2V0LAo+IEBAIC01MjEsOCArNTUyLDI0IEBAIHN0YXRpYyB2b2lkIGJsa2lmX3Nl dHVwX3J3X3JlcV9ncmFudCh1bnNpZ25lZCBsb25nIGdmbiwgdW5zaWduZWQgaW50IG9mZnNldCwK PiAgCXVuc2lnbmVkIGludCBncmFudF9pZHggPSBzZXR1cC0+Z3JhbnRfaWR4Owo+ICAJc3RydWN0 IGJsa2lmX3JlcXVlc3QgKnJpbmdfcmVxID0gc2V0dXAtPnJpbmdfcmVxOwo+ICAJc3RydWN0IGJs a2Zyb250X2luZm8gKmluZm8gPSBzZXR1cC0+aW5mbzsKPiArCS8qCj4gKwkgKiBXZSBhbHdheXMg dXNlIHRoZSBzaGFkb3cgb2YgdGhlIGZpcnN0IHJlcXVlc3QgdG8gc3RvcmUgdGhlIGxpc3QKPiAr CSAqIG9mIGdyYW50IGFzc29jaWF0ZWQgdG8gdGhlIGJsb2NrIEkvTyByZXF1ZXN0LiBUaGlzIG1h ZGUgdGhlCj4gKwkgKiBjb21wbGV0aW9uIG1vcmUgZWFzeSB0byBoYW5kbGUgZXZlbiBpZiB0aGUg YmxvY2sgSS9PIHJlcXVlc3QgaXMKPiArCSAqIHNwbGl0Lgo+ICsJICovCj4gIAlzdHJ1Y3QgYmxr X3NoYWRvdyAqc2hhZG93ID0gJmluZm8tPnNoYWRvd1tzZXR1cC0+aWRdOwo+ICAKPiArCWlmICh1 bmxpa2VseShzZXR1cC0+cmVxdWlyZV9leHRyYV9yZXEgJiYKPiArCQkgICAgIGdyYW50X2lkeCA+ PSBCTEtJRl9NQVhfU0VHTUVOVFNfUEVSX1JFUVVFU1QpKSB7Cj4gKwkJLyoKPiArCQkgKiBXZSBh cmUgdXNpbmcgdGhlIHNlY29uZCByZXF1ZXN0LCBzZXR1cCBncmFudF9pZHgKPiArCQkgKiB0byBi ZSB0aGUgaW5kZXggb2YgdGhlIHNlZ21lbnQgYXJyYXkKPiArCQkgKi8KPiArCQlncmFudF9pZHgg LT0gQkxLSUZfTUFYX1NFR01FTlRTX1BFUl9SRVFVRVNUOwo+ICsJCXJpbmdfcmVxID0gc2V0dXAt PmV4dHJhX3JpbmdfcmVxOwo+ICsJfQo+ICsKPiAgCWlmICgocmluZ19yZXEtPm9wZXJhdGlvbiA9 PSBCTEtJRl9PUF9JTkRJUkVDVCkgJiYKPiAgCSAgICAoZ3JhbnRfaWR4ICUgR1JBTlRTX1BFUl9J TkRJUkVDVF9GUkFNRSA9PSAwKSkgewo+ICAJCWlmIChzZXR1cC0+c2VnbWVudHMpCj4gQEAgLTUz Nyw3ICs1ODQsMTEgQEAgc3RhdGljIHZvaWQgYmxraWZfc2V0dXBfcndfcmVxX2dyYW50KHVuc2ln bmVkIGxvbmcgZ2ZuLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LAo+ICAKPiAgCWdudF9saXN0X2VudHJ5 ID0gZ2V0X2dyYW50KCZzZXR1cC0+Z3JlZl9oZWFkLCBnZm4sIGluZm8pOwo+ICAJcmVmID0gZ250 X2xpc3RfZW50cnktPmdyZWY7Cj4gLQlzaGFkb3ctPmdyYW50c191c2VkW2dyYW50X2lkeF0gPSBn bnRfbGlzdF9lbnRyeTsKPiArCS8qCj4gKwkgKiBBbGwgdGhlIGdyYW50cyBhcmUgc3RvcmVkIGlu IHRoZSBzaGFkb3cgb2YgdGhlIGZpcnN0Cj4gKwkgKiByZXF1ZXN0LiBUaGVyZWZvcmUgd2UgaGF2 ZSB0byB1c2UgdGhlIGdsb2JhbCBpbmRleAo+ICsJICovCj4gKwlzaGFkb3ctPmdyYW50c191c2Vk W3NldHVwLT5ncmFudF9pZHhdID0gZ250X2xpc3RfZW50cnk7Cj4gIAo+ICAJaWYgKHNldHVwLT5u ZWVkX2NvcHkpIHsKPiAgCQl2b2lkICpzaGFyZWRfZGF0YTsKPiBAQCAtNTc5LDExICs2MzAsMzEg QEAgc3RhdGljIHZvaWQgYmxraWZfc2V0dXBfcndfcmVxX2dyYW50KHVuc2lnbmVkIGxvbmcgZ2Zu LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LAo+ICAJKHNldHVwLT5ncmFudF9pZHgpKys7Cj4gIH0KPiAg Cj4gK3N0YXRpYyB2b2lkIGJsa2lmX3NldHVwX2V4dHJhX3JlcShzdHJ1Y3QgYmxraWZfcmVxdWVz dCAqZmlyc3QsCj4gKwkJCQkgIHN0cnVjdCBibGtpZl9yZXF1ZXN0ICpzZWNvbmQpCj4gK3sKPiAr CXVpbnQxNl90IG5yX3NlZ21lbnRzID0gZmlyc3QtPnUucncubnJfc2VnbWVudHM7Cj4gKwo+ICsJ LyoKPiArCSAqIFRoZSBzZWNvbmQgcmVxdWVzdCBpcyBvbmx5IHByZXNlbnQgd2hlbiB0aGUgZmly c3QgcmVxdWVzdCB1c2VzCj4gKwkgKiBhbGwgaXRzIHNlZ21lbnRzLiBJdCdzIGFsd2F5cyB0aGUg Y29udGludWl0eSBvZiB0aGUgZmlyc3Qgb25lLgo+ICsJICovCj4gKwlmaXJzdC0+dS5ydy5ucl9z ZWdtZW50cyA9IEJMS0lGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVTVDsKPiArCj4gKwlzZWNvbmQt PnUucncubnJfc2VnbWVudHMgPSBucl9zZWdtZW50cyAtIEJMS0lGX01BWF9TRUdNRU5UU19QRVJf UkVRVUVTVDsKPiArCXNlY29uZC0+dS5ydy5zZWN0b3JfbnVtYmVyID0gZmlyc3QtPnUucncuc2Vj dG9yX251bWJlciArCj4gKwkJKEJMS0lGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVTVCAqIFhFTl9Q QUdFX1NJWkUpIC8gNTEyOwo+ICsKPiArCXNlY29uZC0+dS5ydy5oYW5kbGUgPSBmaXJzdC0+dS5y dy5oYW5kbGU7Cj4gKwlzZWNvbmQtPm9wZXJhdGlvbiA9IGZpcnN0LT5vcGVyYXRpb247Cj4gK30K PiArCj4gIHN0YXRpYyBpbnQgYmxraWZfcXVldWVfcndfcmVxKHN0cnVjdCByZXF1ZXN0ICpyZXEp Cj4gIHsKPiAgCXN0cnVjdCBibGtmcm9udF9pbmZvICppbmZvID0gcmVxLT5ycV9kaXNrLT5wcml2 YXRlX2RhdGE7Cj4gLQlzdHJ1Y3QgYmxraWZfcmVxdWVzdCAqcmluZ19yZXE7Cj4gLQl1bnNpZ25l ZCBsb25nIGlkOwo+ICsJc3RydWN0IGJsa2lmX3JlcXVlc3QgKnJpbmdfcmVxLCAqZXh0cmFfcmlu Z19yZXEgPSBOVUxMOwo+ICsJdW5zaWduZWQgbG9uZyBpZCwgZXh0cmFfaWQgPSBOT19BU1NPQ0lB VEVEX0lEOwo+ICsJYm9vbCByZXF1aXJlX2V4dHJhX3JlcSA9IGZhbHNlOwo+ICAJaW50IGk7Cj4g IAlzdHJ1Y3Qgc2V0dXBfcndfcmVxIHNldHVwID0gewo+ICAJCS5ncmFudF9pZHggPSAwLAo+IEBA IC02MjgsMTkgKzY5OSwxOSBAQCBzdGF0aWMgaW50IGJsa2lmX3F1ZXVlX3J3X3JlcShzdHJ1Y3Qg cmVxdWVzdCAqcmVxKQo+ICAJLyogRmlsbCBvdXQgYSBjb21tdW5pY2F0aW9ucyByaW5nIHN0cnVj dHVyZS4gKi8KPiAgCWlkID0gYmxraWZfcmluZ19nZXRfcmVxdWVzdChpbmZvLCByZXEsICZyaW5n X3JlcSk7Cj4gIAo+IC0JQlVHX09OKGluZm8tPm1heF9pbmRpcmVjdF9zZWdtZW50cyA9PSAwICYm Cj4gLQkgICAgICAgR1JFRlMocmVxLT5ucl9waHlzX3NlZ21lbnRzKSA+IEJMS0lGX01BWF9TRUdN RU5UU19QRVJfUkVRVUVTVCk7Cj4gLQlCVUdfT04oaW5mby0+bWF4X2luZGlyZWN0X3NlZ21lbnRz ICYmCj4gLQkgICAgICAgR1JFRlMocmVxLT5ucl9waHlzX3NlZ21lbnRzKSA+IGluZm8tPm1heF9p bmRpcmVjdF9zZWdtZW50cyk7Cj4gLQo+ICAJbnVtX3NnID0gYmxrX3JxX21hcF9zZyhyZXEtPnEs IHJlcSwgaW5mby0+c2hhZG93W2lkXS5zZyk7Cj4gIAludW1fZ3JhbnQgPSAwOwo+ICAJLyogQ2Fs Y3VsYXRlIHRoZSBudW1iZXIgb2YgZ3JhbnQgdXNlZCAqLwo+ICAJZm9yX2VhY2hfc2coaW5mby0+ c2hhZG93W2lkXS5zZywgc2csIG51bV9zZywgaSkKPiAgCSAgICAgICBudW1fZ3JhbnQgKz0gZ250 dGFiX2NvdW50X2dyYW50KHNnLT5vZmZzZXQsIHNnLT5sZW5ndGgpOwo+ICAKPiArCXJlcXVpcmVf ZXh0cmFfcmVxID0gaW5mby0+bWF4X2luZGlyZWN0X3NlZ21lbnRzID09IDAgJiYKPiArCQludW1f Z3JhbnQgPiBCTEtJRl9NQVhfU0VHTUVOVFNfUEVSX1JFUVVFU1Q7Cj4gKwlCVUdfT04oIUhBU19F WFRSQV9SRVEgJiYgcmVxdWlyZV9leHRyYV9yZXEpOwo+ICsKPiAgCWluZm8tPnNoYWRvd1tpZF0u bnVtX3NnID0gbnVtX3NnOwo+IC0JaWYgKG51bV9ncmFudCA+IEJMS0lGX01BWF9TRUdNRU5UU19Q RVJfUkVRVUVTVCkgewo+ICsJaWYgKG51bV9ncmFudCA+IEJMS0lGX01BWF9TRUdNRU5UU19QRVJf UkVRVUVTVCAmJgo+ICsJICAgIGxpa2VseSghcmVxdWlyZV9leHRyYV9yZXEpKSB7Cj4gIAkJLyoK PiAgCQkgKiBUaGUgaW5kaXJlY3Qgb3BlcmF0aW9uIGNhbiBvbmx5IGJlIGEgQkxLSUZfT1BfUkVB RCBvcgo+ICAJCSAqIEJMS0lGX09QX1dSSVRFCj4gQEAgLTY4MCwxMCArNzUxLDMwIEBAIHN0YXRp YyBpbnQgYmxraWZfcXVldWVfcndfcmVxKHN0cnVjdCByZXF1ZXN0ICpyZXEpCj4gIAkJCX0KPiAg CQl9Cj4gIAkJcmluZ19yZXEtPnUucncubnJfc2VnbWVudHMgPSBudW1fZ3JhbnQ7Cj4gKwkJaWYg KHVubGlrZWx5KHJlcXVpcmVfZXh0cmFfcmVxKSkgewo+ICsJCQlleHRyYV9pZCA9IGJsa2lmX3Jp bmdfZ2V0X3JlcXVlc3QoaW5mbywgcmVxLAo+ICsJCQkJCQkJICAmZXh0cmFfcmluZ19yZXEpOwo+ ICsJCQkvKgo+ICsJCQkgKiBPbmx5IHRoZSBmaXJzdCByZXF1ZXN0IGNvbnRhaW5zIHRoZSBzY2F0 dGVyLWdhdGhlcgo+ICsJCQkgKiBsaXN0Lgo+ICsJCQkgKi8KPiArCQkJaW5mby0+c2hhZG93W2V4 dHJhX2lkXS5udW1fc2cgPSAwOwo+ICsKPiArCQkJYmxraWZfc2V0dXBfZXh0cmFfcmVxKHJpbmdf cmVxLCBleHRyYV9yaW5nX3JlcSk7Cj4gKwo+ICsJCQkvKiBMaW5rIHRoZSAyIHJlcXVlc3RzIHRv Z2V0aGVyICovCj4gKwkJCWluZm8tPnNoYWRvd1tleHRyYV9pZF0uYXNzb2NpYXRlZF9pZCA9IGlk Owo+ICsJCQlpbmZvLT5zaGFkb3dbaWRdLmFzc29jaWF0ZWRfaWQgPSBleHRyYV9pZDsKPiArCQl9 Cj4gIAl9Cj4gIAo+ICAJc2V0dXAucmluZ19yZXEgPSByaW5nX3JlcTsKPiAgCXNldHVwLmlkID0g aWQ7Cj4gKwo+ICsJc2V0dXAucmVxdWlyZV9leHRyYV9yZXEgPSByZXF1aXJlX2V4dHJhX3JlcTsK PiArCWlmICh1bmxpa2VseShyZXF1aXJlX2V4dHJhX3JlcSkpCj4gKwkJc2V0dXAuZXh0cmFfcmlu Z19yZXEgPSBleHRyYV9yaW5nX3JlcTsKPiArCj4gIAlmb3JfZWFjaF9zZyhpbmZvLT5zaGFkb3db aWRdLnNnLCBzZywgbnVtX3NnLCBpKSB7Cj4gIAkJQlVHX09OKHNnLT5vZmZzZXQgKyBzZy0+bGVu Z3RoID4gUEFHRV9TSVpFKTsKPiAgCj4gQEAgLTcwNiw2ICs3OTcsOCBAQCBzdGF0aWMgaW50IGJs a2lmX3F1ZXVlX3J3X3JlcShzdHJ1Y3QgcmVxdWVzdCAqcmVxKQo+ICAKPiAgCS8qIEtlZXAgYSBw cml2YXRlIGNvcHkgc28gd2UgY2FuIHJlaXNzdWUgcmVxdWVzdHMgd2hlbiByZWNvdmVyaW5nLiAq Lwo+ICAJaW5mby0+c2hhZG93W2lkXS5yZXEgPSAqcmluZ19yZXE7Cj4gKwlpZiAodW5saWtlbHko cmVxdWlyZV9leHRyYV9yZXEpKQo+ICsJCWluZm8tPnNoYWRvd1tleHRyYV9pZF0ucmVxID0gKmV4 dHJhX3JpbmdfcmVxOwo+ICAKPiAgCWlmIChuZXdfcGVyc2lzdGVudF9nbnRzKQo+ICAJCWdudHRh Yl9mcmVlX2dyYW50X3JlZmVyZW5jZXMoc2V0dXAuZ3JlZl9oZWFkKTsKPiBAQCAtNzk3LDcgKzg5 MCwxNiBAQCBzdGF0aWMgaW50IHhsdmJkX2luaXRfYmxrX3F1ZXVlKHN0cnVjdCBnZW5kaXNrICpn ZCwgdTE2IHNlY3Rvcl9zaXplLAo+ICAJbWVtc2V0KCZpbmZvLT50YWdfc2V0LCAwLCBzaXplb2Yo aW5mby0+dGFnX3NldCkpOwo+ICAJaW5mby0+dGFnX3NldC5vcHMgPSAmYmxrZnJvbnRfbXFfb3Bz Owo+ICAJaW5mby0+dGFnX3NldC5ucl9od19xdWV1ZXMgPSAxOwo+IC0JaW5mby0+dGFnX3NldC5x dWV1ZV9kZXB0aCA9ICBCTEtfUklOR19TSVpFKGluZm8pOwo+ICsJaWYgKEhBU19FWFRSQV9SRVEg JiYgaW5mby0+bWF4X2luZGlyZWN0X3NlZ21lbnRzID09IDApIHsKPiArCQkvKgo+ICsJCSAqIFdo ZW4gaW5kaXJlY3QgZGVzY3JpcHRpb3IgaXMgbm90IHN1cHBvcnRlZCwgdGhlIEkvTyByZXF1ZXN0 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5kZXNjcmlwdG9ycyBhcmUKPiArCQkg KiB3aWxsIGJlIHNwbGl0IGJldHdlZW4gbXVsdGlwbGUgcmVxdWVzdCBpbiB0aGUgcmluZy4KPiAr CQkgKiBUbyBhdm9pZCBwcm9ibGVtcyB3aGVuIHNlbmRpbmcgdGhlIHJlcXVlc3QsIGRpdmlkZSBi eQo+ICsJCSAqIDIgdGhlIGRlcHRoIG9mIHRoZSBxdWV1ZS4KPiArCQkgKi8KPiArCQlpbmZvLT50 YWdfc2V0LnF1ZXVlX2RlcHRoID0gIEJMS19SSU5HX1NJWkUoaW5mbykgLyAyOwo+ICsJfSBlbHNl Cj4gKwkJaW5mby0+dGFnX3NldC5xdWV1ZV9kZXB0aCA9IEJMS19SSU5HX1NJWkUoaW5mbyk7Cj4g IAlpbmZvLT50YWdfc2V0Lm51bWFfbm9kZSA9IE5VTUFfTk9fTk9ERTsKPiAgCWluZm8tPnRhZ19z ZXQuZmxhZ3MgPSBCTEtfTVFfRl9TSE9VTERfTUVSR0UgfCBCTEtfTVFfRl9TR19NRVJHRTsKPiAg CWluZm8tPnRhZ19zZXQuY21kX3NpemUgPSAwOwo+IEBAIC0xMjE3LDE5ICsxMzE5LDY3IEBAIHN0 YXRpYyB2b2lkIGJsa2lmX2NvcHlfZnJvbV9ncmFudCh1bnNpZ25lZCBsb25nIGdmbiwgdW5zaWdu ZWQgaW50IG9mZnNldCwKPiAgCWt1bm1hcF9hdG9taWMoc2hhcmVkX2RhdGEpOwo+ICB9Cj4gIAo+ IC1zdGF0aWMgdm9pZCBibGtpZl9jb21wbGV0aW9uKHN0cnVjdCBibGtfc2hhZG93ICpzLCBzdHJ1 Y3QgYmxrZnJvbnRfaW5mbyAqaW5mbywKPiArc3RhdGljIGJvb2wgYmxraWZfY29tcGxldGlvbih1 bnNpZ25lZCBsb25nICppZCwgc3RydWN0IGJsa2Zyb250X2luZm8gKmluZm8sCj4gIAkJCSAgICAg c3RydWN0IGJsa2lmX3Jlc3BvbnNlICpicmV0KQo+ICB7Cj4gIAlpbnQgaSA9IDA7Cj4gIAlzdHJ1 Y3Qgc2NhdHRlcmxpc3QgKnNnOwo+ICAJaW50IG51bV9zZywgbnVtX2dyYW50Owo+ICsJc3RydWN0 IGJsa19zaGFkb3cgKnMgPSAmaW5mby0+c2hhZG93WyppZF07Cj4gIAlzdHJ1Y3QgY29weV9mcm9t X2dyYW50IGRhdGEgPSB7Cj4gLQkJLnMgPSBzLAo+ICAJCS5ncmFudF9pZHggPSAwLAo+ICAJfTsK PiAgCj4gIAludW1fZ3JhbnQgPSBzLT5yZXEub3BlcmF0aW9uID09IEJMS0lGX09QX0lORElSRUNU ID8KPiAgCQlzLT5yZXEudS5pbmRpcmVjdC5ucl9zZWdtZW50cyA6IHMtPnJlcS51LnJ3Lm5yX3Nl Z21lbnRzOwo+ICsKPiArCS8qIFRoZSBJL08gcmVxdWVzdCBtYXkgYmUgc3BsaXQgaW4gdHdvICov Cj4gKwlpZiAodW5saWtlbHkocy0+YXNzb2NpYXRlZF9pZCAhPSBOT19BU1NPQ0lBVEVEX0lEKSkg ewo+ICsJCXN0cnVjdCBibGtfc2hhZG93ICpzMiA9ICZpbmZvLT5zaGFkb3dbcy0+YXNzb2NpYXRl ZF9pZF07Cj4gKwo+ICsJCS8qIEtlZXAgdGhlIHN0YXR1cyBvZiB0aGUgY3VycmVudCByZXNwb25z ZSBpbiBzaGFkb3cgKi8KPiArCQlzLT5zdGF0dXMgPSAoYnJldC0+c3RhdHVzID09IEJMS0lGX1JT UF9PS0FZKSA/Cj4gKwkJCVJFUV9ET05FIDogUkVRX0ZBSUw7Cj4gKwo+ICsJCS8qIFdhaXQgdGhl IHNlY29uZCByZXNwb25zZSBpZiBub3QgeWV0IGhlcmUgKi8KPiArCQlpZiAoczItPnN0YXR1cyA9 PSBSRVFfV0FJVElORykKPiArCQkJcmV0dXJuIDA7Cj4gKwo+ICsJCS8qCj4gKwkJICogVGhlIHN0 YXR1cyBvZiB0aGUgY3VycmVudCByZXNwb25zZSB3aWxsIGJlIHVzZWQgaW4KPiArCQkgKiBvcmRl ciB0byBrbm93IGlmIHRoZSByZXF1ZXN0IGhhcyBmYWlsZWQuCj4gKwkJICogVXBkYXRlIHRoZSBj dXJyZW50IHJlc3BvbnNlIHN0YXR1cyBvbmx5IGlmIGhhcyBub3QKPiArCQkgKiBmYWlsZWQuCj4g KwkJICovCj4gKwkJaWYgKGJyZXQtPnN0YXR1cyA9PSBCTEtJRl9SU1BfT0tBWSAmJiBzMi0+c3Rh dHVzID09IFJFUV9GQUlMKQoKVGhpcyBjb3VsZCBiZSBzaW1wbGlmaWVkIGJ5IG9ubHkgY2hlY2tp bmcgaWYgczItPnN0YXR1cyA9PSBSRVFfRkFJTC4KCj4gKwkJCWJyZXQtPnN0YXR1cyA9IEJMS0lG X1JTUF9FUlJPUjsKPiArCj4gKwkJLyoKPiArCQkgKiBBbGwgdGhlIGdyYW50cyBpcyBzdG9yZWQg aW4gdGhlIGZpcnN0IHNoYWRvdyBpbiBvcmRlcgo+ICsJCSAqIHRvIG1ha2UgdGhlIGNvbXBsZXRp b24gY29kZSBzaW1wbGVyLgo+ICsJCSAqLwo+ICsJCW51bV9ncmFudCArPSBzMi0+cmVxLnUucncu bnJfc2VnbWVudHM7Cj4gKwo+ICsJCS8qCj4gKwkJICogVGhlIHR3byByZXNwb25zZXMgbWF5IG5v dCBjb21lIGluIG9yZGVyLiBPbmx5IHRoZQo+ICsJCSAqIGZpcnN0IHJlcXVlc3Qgd2lsbCBzdG9y ZSB0aGUgc2NhdHRlci1nYXRoZXIgbGlzdAo+ICsJCSAqLwo+ICsJCWlmIChzMi0+bnVtX3NnICE9 IDApIHsKPiArCQkJLyogVXBkYXRlICJpZCIgd2l0aCB0aGUgSUQgb2YgdGhlIGZpcnN0IHJlc3Bv bnNlICovCj4gKwkJCSppZCA9IHMtPmFzc29jaWF0ZWRfaWQ7Cj4gKwkJCXMgPSBzMjsKPiArCQl9 Cj4gKwo+ICsJCS8qCj4gKwkJICogV2UgZG9uJ3QgbmVlZCBhbnltb3JlIHRoZSBzZWNvbmQgcmVx dWVzdCwgc28gcmVjeWNsaW5nCj4gKwkJICogaXQgbm93Lgo+ICsJCSAqLwo+ICsJCWlmIChhZGRf aWRfdG9fZnJlZWxpc3QoaW5mbywgcy0+YXNzb2NpYXRlZF9pZCkpCj4gKwkJCVdBUk4oMSwgIiVz OiBjYW4ndCByZWN5Y2xlIHRoZSBzZWNvbmQgcGFydCAoaWQgPSAlbGQpIG9mIHRoZSByZXF1ZXN0 XG4iLAo+ICsJCQkgICAgIGluZm8tPmdkLT5kaXNrX25hbWUsIHMtPmFzc29jaWF0ZWRfaWQpOwo+ ICsJfQo+ICsKPiArCWRhdGEucyA9IHM7Cj4gIAludW1fc2cgPSBzLT5udW1fc2c7Cj4gIAo+ICAJ aWYgKGJyZXQtPm9wZXJhdGlvbiA9PSBCTEtJRl9PUF9SRUFEICYmIGluZm8tPmZlYXR1cmVfcGVy c2lzdGVudCkgewo+IEBAIC0xMjk5LDYgKzE0NDksOCBAQCBzdGF0aWMgdm9pZCBibGtpZl9jb21w bGV0aW9uKHN0cnVjdCBibGtfc2hhZG93ICpzLCBzdHJ1Y3QgYmxrZnJvbnRfaW5mbyAqaW5mbywK PiAgCQkJfQo+ICAJCX0KPiAgCX0KPiArCj4gKwlyZXR1cm4gMTsKPiAgfQo+ICAKPiAgc3RhdGlj IGlycXJldHVybl90IGJsa2lmX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaWQpCj4gQEAg LTEzMzksOCArMTQ5MSwxNCBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgYmxraWZfaW50ZXJydXB0KGlu dCBpcnEsIHZvaWQgKmRldl9pZCkKPiAgCQl9Cj4gIAkJcmVxICA9IGluZm8tPnNoYWRvd1tpZF0u cmVxdWVzdDsKPiAgCj4gLQkJaWYgKGJyZXQtPm9wZXJhdGlvbiAhPSBCTEtJRl9PUF9ESVNDQVJE KQo+IC0JCQlibGtpZl9jb21wbGV0aW9uKCZpbmZvLT5zaGFkb3dbaWRdLCBpbmZvLCBicmV0KTsK PiArCQlpZiAoYnJldC0+b3BlcmF0aW9uICE9IEJMS0lGX09QX0RJU0NBUkQpIHsKPiArCQkJLyoK PiArCQkJICogV2UgbWF5IG5lZWQgdG8gd2FpdCBmb3IgYW4gZXh0cmEgcmVzcG9uc2UgaWYgdGhl Cj4gKwkJCSAqIEkvTyByZXF1ZXN0IGlzIHNwbGl0IGluIDIKPiArCQkJICovCj4gKwkJCWlmICgh YmxraWZfY29tcGxldGlvbigmaWQsIGluZm8sIGJyZXQpKQo+ICsJCQkJY29udGludWU7Cj4gKwkJ fQo+ICAKPiAgCQlpZiAoYWRkX2lkX3RvX2ZyZWVsaXN0KGluZm8sIGlkKSkgewo+ICAJCQlXQVJO KDEsICIlczogcmVzcG9uc2UgdG8gJXMgKGlkICVsZCkgY291bGRuJ3QgYmUgcmVjeWNsZWQhXG4i LAo+IEBAIC0xODYzLDggKzIwMjEsMTggQEAgc3RhdGljIGludCBibGtmcm9udF9zZXR1cF9pbmRp cmVjdChzdHJ1Y3QgYmxrZnJvbnRfaW5mbyAqaW5mbykKPiAgCXVuc2lnbmVkIGludCBwc2Vncywg Z3JhbnRzOwo+ICAJaW50IGVyciwgaTsKPiAgCj4gLQlpZiAoaW5mby0+bWF4X2luZGlyZWN0X3Nl Z21lbnRzID09IDApCj4gLQkJZ3JhbnRzID0gQkxLSUZfTUFYX1NFR01FTlRTX1BFUl9SRVFVRVNU Owo+ICsJaWYgKGluZm8tPm1heF9pbmRpcmVjdF9zZWdtZW50cyA9PSAwKSB7Cj4gKwkJaWYgKCFI QVNfRVhUUkFfUkVRKQo+ICsJCQlncmFudHMgPSBCTEtJRl9NQVhfU0VHTUVOVFNfUEVSX1JFUVVF U1Q7Cj4gKwkJZWxzZSB7Cj4gKwkJCS8qCj4gKwkJCSAqIFdoZW4gYW4gZXh0cmEgcmVxIGlzIHJl cXVpcmVkLCB0aGUgbWF4aW11bQo+ICsJCQkgKiBncmFudHMgc3VwcG9ydGVkIGlzIHJlbGF0ZWQg dG8gdGhlIHNpemUgb2YgdGhlCj4gKwkJCSAqIExpbnV4IGJsb2NrIHNlZ21lbnQKPiArCQkJICov Cj4gKwkJCWdyYW50cyA9IEdSQU5UU19QRVJfUFNFRzsKPiArCQl9Cj4gKwl9Cj4gIAllbHNlCj4g IAkJZ3JhbnRzID0gaW5mby0+bWF4X2luZGlyZWN0X3NlZ21lbnRzOwo+ICAJcHNlZ3MgPSBncmFu dHMgLyBHUkFOVFNfUEVSX1BTRUc7Cj4gCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMu eGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK