From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Deucher Subject: Re: [PATCH] drm/mm: Support 4 GiB and larger ranges Date: Wed, 4 Mar 2015 11:20:15 -0500 Message-ID: References: <1422000306-27926-1-git-send-email-thierry.reding@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1422000306-27926-1-git-send-email-thierry.reding@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Thierry Reding Cc: Daniel Vetter , Thomas Hellstrom , Intel Graphics Development , Maling list - DRI developers , Russell King List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBKYW4gMjMsIDIwMTUgYXQgMzowNSBBTSwgVGhpZXJyeSBSZWRpbmcKPHRoaWVycnku cmVkaW5nQGdtYWlsLmNvbT4gd3JvdGU6Cj4gRnJvbTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdA bnZpZGlhLmNvbT4KPgo+IFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIGxpbWl0ZWQgYnkg dGhlIG51bWJlciBvZiBhZGRyZXNzZXMgdGhhdAo+IGZpdCBpbnRvIGFuIHVuc2lnbmVkIGxvbmcu IFRoaXMgY2F1c2VzIHByb2JsZW1zIG9uIDMyLWJpdCBUZWdyYSB3aGVyZQo+IHVuc2lnbmVkIGxv bmcgaXMgMzItYml0IGJ1dCBkcm1fbW0gaXMgdXNlZCB0byBtYW5hZ2UgYW4gSU9WQSBzcGFjZSBv Zgo+IDQgR2lCLiBHaXZlbiB0aGUgMzItYml0IGxpbWl0YXRpb24sIHRoZSByYW5nZSBpcyBsaW1p dGVkIHRvIDQgR2lCIC0gMQo+IChvciA0IEdpQiAtIDQgS2lCIGZvciBwYWdlIGdyYW51bGFyaXR5 KS4KPgo+IFRoaXMgY29tbWl0IGNoYW5nZXMgdGhlIHN0YXJ0IGFuZCBzaXplIG9mIHRoZSByYW5n ZSB0byBiZSBhbiB1bnNpZ25lZAo+IDY0LWJpdCBpbnRlZ2VyLCB0aHVzIGFsbG93aW5nIG11Y2gg bGFyZ2VyIHJhbmdlcyB0byBiZSBzdXBwb3J0ZWQuCj4KPiBTaWduZWQtb2ZmLWJ5OiBUaGllcnJ5 IFJlZGluZyA8dHJlZGluZ0BudmlkaWEuY29tPgoKRGlkIHRoaXMgbGFuZCB5ZXQ/ICBJIHRoaW5r IHdlIG5lZWQgdGhpcyBmb3IgZm9yIHRoZSBmdWxsIGZpeCBmb3IgdGhlCmNhc2Ugd2hlbiBkZXZp Y2UgYWRkcmVzcyBzcGFjZSBkb2VzIG5vdCBtYXRjaCBDUFUgYWRkcmVzcyBzcGFjZS4KRS5nLiwg cmFkZW9ucyBoYXZlIDQwIG9yIDQ4IGJpdCBpbnRlcm5hbCBhZGRyZXNzIHNwYWNlcy4gIE9uIHJh ZGVvbidzCndpdGggNEdCIG9yIG1vcmUgdnJhbSwgdGhlIGdhcnQgYXBlcnR1cmUgZW5kcyB1cCBh Ym92ZSB0aGF0IGluIHRoZQpHUFUncyBhZGRyZXNzIHNwYWNlIHdoaWNoIGVuZHMgdXAgZ2V0dGlu ZyB0cnVuY2F0ZWQgb24gMzIgYml0LiAgU2VlCnRoZSBkaXNjdXNzaW9uIGhlcmU6Cmh0dHA6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvYXJjaGl2ZXMvZHJpLWRldmVsLzIwMTUtTWFyY2gvMDc4NjE0 Lmh0bWwKCkFsZXgKCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fbW0uYyB8IDE1MiArKysr KysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICBpbmNsdWRlL2Ry bS9kcm1fbW0uaCAgICAgfCAgNTIgKysrKysrKystLS0tLS0tLQo+ICAyIGZpbGVzIGNoYW5nZWQs IDEwNSBpbnNlcnRpb25zKCspLCA5OSBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX21tLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX21tLmMKPiBpbmRleCAw NGEyMDllMmI2NmQuLjdmYzZmOGJkNDgyMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v ZHJtX21tLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX21tLmMKPiBAQCAtOTEsMjkgKzkx LDI5IEBACj4gICAqLwo+Cj4gIHN0YXRpYyBzdHJ1Y3QgZHJtX21tX25vZGUgKmRybV9tbV9zZWFy Y2hfZnJlZV9nZW5lcmljKGNvbnN0IHN0cnVjdCBkcm1fbW0gKm1tLAo+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSwKPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1NjQgc2l6ZSwK PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBhbGlnbm1lbnQsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdW5zaWduZWQgbG9uZyBjb2xvciwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBlbnVtIGRybV9tbV9zZWFyY2hfZmxhZ3MgZmxhZ3MpOwo+ICBz dGF0aWMgc3RydWN0IGRybV9tbV9ub2RlICpkcm1fbW1fc2VhcmNoX2ZyZWVfaW5fcmFuZ2VfZ2Vu ZXJpYyhjb25zdCBzdHJ1Y3QgZHJtX21tICptbSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNpemUsCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTY0IHNpemUsCj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYWxpZ25tZW50 LAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGxvbmcgY29sb3IsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgbG9uZyBzdGFydCwKPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGVuZCwKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1NjQgc3RhcnQsCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTY0IGVuZCwKPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGRybV9tbV9zZWFy Y2hfZmxhZ3MgZmxhZ3MpOwo+Cj4gIHN0YXRpYyB2b2lkIGRybV9tbV9pbnNlcnRfaGVscGVyKHN0 cnVjdCBkcm1fbW1fbm9kZSAqaG9sZV9ub2RlLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCBkcm1fbW1fbm9kZSAqbm9kZSwKPiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNpemUsIHVuc2lnbmVkIGFsaWdubWVudCwKPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1NjQgc2l6ZSwgdW5zaWduZWQgYWxpZ25tZW50 LAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgY29sb3Is Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBkcm1fbW1fYWxsb2NhdG9y X2ZsYWdzIGZsYWdzKQo+ICB7Cj4gICAgICAgICBzdHJ1Y3QgZHJtX21tICptbSA9IGhvbGVfbm9k ZS0+bW07Cj4gLSAgICAgICB1bnNpZ25lZCBsb25nIGhvbGVfc3RhcnQgPSBkcm1fbW1faG9sZV9u b2RlX3N0YXJ0KGhvbGVfbm9kZSk7Cj4gLSAgICAgICB1bnNpZ25lZCBsb25nIGhvbGVfZW5kID0g ZHJtX21tX2hvbGVfbm9kZV9lbmQoaG9sZV9ub2RlKTsKPiAtICAgICAgIHVuc2lnbmVkIGxvbmcg YWRqX3N0YXJ0ID0gaG9sZV9zdGFydDsKPiAtICAgICAgIHVuc2lnbmVkIGxvbmcgYWRqX2VuZCA9 IGhvbGVfZW5kOwo+ICsgICAgICAgdTY0IGhvbGVfc3RhcnQgPSBkcm1fbW1faG9sZV9ub2RlX3N0 YXJ0KGhvbGVfbm9kZSk7Cj4gKyAgICAgICB1NjQgaG9sZV9lbmQgPSBkcm1fbW1faG9sZV9ub2Rl X2VuZChob2xlX25vZGUpOwo+ICsgICAgICAgdTY0IGFkal9zdGFydCA9IGhvbGVfc3RhcnQ7Cj4g KyAgICAgICB1NjQgYWRqX2VuZCA9IGhvbGVfZW5kOwo+Cj4gICAgICAgICBCVUdfT04obm9kZS0+ YWxsb2NhdGVkKTsKPgo+IEBAIC0xMjQsMTIgKzEyNCwxNSBAQCBzdGF0aWMgdm9pZCBkcm1fbW1f aW5zZXJ0X2hlbHBlcihzdHJ1Y3QgZHJtX21tX25vZGUgKmhvbGVfbm9kZSwKPiAgICAgICAgICAg ICAgICAgYWRqX3N0YXJ0ID0gYWRqX2VuZCAtIHNpemU7Cj4KPiAgICAgICAgIGlmIChhbGlnbm1l bnQpIHsKPiAtICAgICAgICAgICAgICAgdW5zaWduZWQgdG1wID0gYWRqX3N0YXJ0ICUgYWxpZ25t ZW50Owo+IC0gICAgICAgICAgICAgICBpZiAodG1wKSB7Cj4gKyAgICAgICAgICAgICAgIHU2NCB0 bXAgPSBhZGpfc3RhcnQ7Cj4gKyAgICAgICAgICAgICAgIHVuc2lnbmVkIHJlbTsKPiArCj4gKyAg ICAgICAgICAgICAgIHJlbSA9IGRvX2Rpdih0bXAsIGFsaWdubWVudCk7Cj4gKyAgICAgICAgICAg ICAgIGlmIChyZW0pIHsKPiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBEUk1f TU1fQ1JFQVRFX1RPUCkKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkal9zdGFy dCAtPSB0bXA7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGpfc3RhcnQgLT0g cmVtOwo+ICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGFkal9zdGFydCArPSBhbGlnbm1lbnQgLSB0bXA7Cj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBhZGpfc3RhcnQgKz0gYWxpZ25tZW50IC0gcmVtOwo+ICAgICAg ICAgICAgICAgICB9Cj4gICAgICAgICB9Cj4KPiBAQCAtMTc2LDkgKzE3OSw5IEBAIHN0YXRpYyB2 b2lkIGRybV9tbV9pbnNlcnRfaGVscGVyKHN0cnVjdCBkcm1fbW1fbm9kZSAqaG9sZV9ub2RlLAo+ ICBpbnQgZHJtX21tX3Jlc2VydmVfbm9kZShzdHJ1Y3QgZHJtX21tICptbSwgc3RydWN0IGRybV9t bV9ub2RlICpub2RlKQo+ICB7Cj4gICAgICAgICBzdHJ1Y3QgZHJtX21tX25vZGUgKmhvbGU7Cj4g LSAgICAgICB1bnNpZ25lZCBsb25nIGVuZCA9IG5vZGUtPnN0YXJ0ICsgbm9kZS0+c2l6ZTsKPiAt ICAgICAgIHVuc2lnbmVkIGxvbmcgaG9sZV9zdGFydDsKPiAtICAgICAgIHVuc2lnbmVkIGxvbmcg aG9sZV9lbmQ7Cj4gKyAgICAgICB1NjQgZW5kID0gbm9kZS0+c3RhcnQgKyBub2RlLT5zaXplOwo+ ICsgICAgICAgdTY0IGhvbGVfc3RhcnQ7Cj4gKyAgICAgICB1NjQgaG9sZV9lbmQ7Cj4KPiAgICAg ICAgIEJVR19PTihub2RlID09IE5VTEwpOwo+Cj4gQEAgLTIyNyw3ICsyMzAsNyBAQCBFWFBPUlRf U1lNQk9MKGRybV9tbV9yZXNlcnZlX25vZGUpOwo+ICAgKiAwIG9uIHN1Y2Nlc3MsIC1FTk9TUEMg aWYgdGhlcmUncyBubyBzdWl0YWJsZSBob2xlLgo+ICAgKi8KPiAgaW50IGRybV9tbV9pbnNlcnRf bm9kZV9nZW5lcmljKHN0cnVjdCBkcm1fbW0gKm1tLCBzdHJ1Y3QgZHJtX21tX25vZGUgKm5vZGUs Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSwgdW5z aWduZWQgYWxpZ25tZW50LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1NjQgc2l6 ZSwgdW5zaWduZWQgYWxpZ25tZW50LAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBsb25nIGNvbG9yLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVt IGRybV9tbV9zZWFyY2hfZmxhZ3Mgc2ZsYWdzLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBlbnVtIGRybV9tbV9hbGxvY2F0b3JfZmxhZ3MgYWZsYWdzKQo+IEBAIC0yNDYsMTYgKzI0 OSwxNiBAQCBFWFBPUlRfU1lNQk9MKGRybV9tbV9pbnNlcnRfbm9kZV9nZW5lcmljKTsKPgo+ICBz dGF0aWMgdm9pZCBkcm1fbW1faW5zZXJ0X2hlbHBlcl9yYW5nZShzdHJ1Y3QgZHJtX21tX25vZGUg KmhvbGVfbm9kZSwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgZHJtX21tX25vZGUgKm5vZGUsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdW5zaWduZWQgbG9uZyBzaXplLCB1bnNpZ25lZCBhbGlnbm1lbnQsCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTY0IHNpemUsIHVuc2lnbmVkIGFsaWdubWVu dCwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25n IGNvbG9yLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLAo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHU2NCBzdGFydCwgdTY0IGVuZCwKPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBlbnVtIGRybV9tbV9hbGxvY2F0b3JfZmxhZ3MgZmxhZ3MpCj4g IHsKPiAgICAgICAgIHN0cnVjdCBkcm1fbW0gKm1tID0gaG9sZV9ub2RlLT5tbTsKPiAtICAgICAg IHVuc2lnbmVkIGxvbmcgaG9sZV9zdGFydCA9IGRybV9tbV9ob2xlX25vZGVfc3RhcnQoaG9sZV9u b2RlKTsKPiAtICAgICAgIHVuc2lnbmVkIGxvbmcgaG9sZV9lbmQgPSBkcm1fbW1faG9sZV9ub2Rl X2VuZChob2xlX25vZGUpOwo+IC0gICAgICAgdW5zaWduZWQgbG9uZyBhZGpfc3RhcnQgPSBob2xl X3N0YXJ0Owo+IC0gICAgICAgdW5zaWduZWQgbG9uZyBhZGpfZW5kID0gaG9sZV9lbmQ7Cj4gKyAg ICAgICB1NjQgaG9sZV9zdGFydCA9IGRybV9tbV9ob2xlX25vZGVfc3RhcnQoaG9sZV9ub2RlKTsK PiArICAgICAgIHU2NCBob2xlX2VuZCA9IGRybV9tbV9ob2xlX25vZGVfZW5kKGhvbGVfbm9kZSk7 Cj4gKyAgICAgICB1NjQgYWRqX3N0YXJ0ID0gaG9sZV9zdGFydDsKPiArICAgICAgIHU2NCBhZGpf ZW5kID0gaG9sZV9lbmQ7Cj4KPiAgICAgICAgIEJVR19PTighaG9sZV9ub2RlLT5ob2xlX2ZvbGxv d3MgfHwgbm9kZS0+YWxsb2NhdGVkKTsKPgo+IEBAIC0yNzEsMTIgKzI3NCwxNSBAQCBzdGF0aWMg dm9pZCBkcm1fbW1faW5zZXJ0X2hlbHBlcl9yYW5nZShzdHJ1Y3QgZHJtX21tX25vZGUgKmhvbGVf bm9kZSwKPiAgICAgICAgICAgICAgICAgbW0tPmNvbG9yX2FkanVzdChob2xlX25vZGUsIGNvbG9y LCAmYWRqX3N0YXJ0LCAmYWRqX2VuZCk7Cj4KPiAgICAgICAgIGlmIChhbGlnbm1lbnQpIHsKPiAt ICAgICAgICAgICAgICAgdW5zaWduZWQgdG1wID0gYWRqX3N0YXJ0ICUgYWxpZ25tZW50Owo+IC0g ICAgICAgICAgICAgICBpZiAodG1wKSB7Cj4gKyAgICAgICAgICAgICAgIHU2NCB0bXAgPSBhZGpf c3RhcnQ7Cj4gKyAgICAgICAgICAgICAgIHVuc2lnbmVkIHJlbTsKPiArCj4gKyAgICAgICAgICAg ICAgIHJlbSA9IGRvX2Rpdih0bXAsIGFsaWdubWVudCk7Cj4gKyAgICAgICAgICAgICAgIGlmIChy ZW0pIHsKPiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBEUk1fTU1fQ1JFQVRF X1RPUCkKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkal9zdGFydCAtPSB0bXA7 Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGpfc3RhcnQgLT0gcmVtOwo+ICAg ICAgICAgICAgICAgICAgICAgICAgIGVsc2UKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGFkal9zdGFydCArPSBhbGlnbm1lbnQgLSB0bXA7Cj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBhZGpfc3RhcnQgKz0gYWxpZ25tZW50IC0gcmVtOwo+ICAgICAgICAgICAgICAg ICB9Cj4gICAgICAgICB9Cj4KPiBAQCAtMzI0LDkgKzMzMCw5IEBAIHN0YXRpYyB2b2lkIGRybV9t bV9pbnNlcnRfaGVscGVyX3JhbmdlKHN0cnVjdCBkcm1fbW1fbm9kZSAqaG9sZV9ub2RlLAo+ICAg KiAwIG9uIHN1Y2Nlc3MsIC1FTk9TUEMgaWYgdGhlcmUncyBubyBzdWl0YWJsZSBob2xlLgo+ICAg Ki8KPiAgaW50IGRybV9tbV9pbnNlcnRfbm9kZV9pbl9yYW5nZV9nZW5lcmljKHN0cnVjdCBkcm1f bW0gKm1tLCBzdHJ1Y3QgZHJtX21tX25vZGUgKm5vZGUsCj4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSwgdW5zaWduZWQgYWxpZ25tZW50 LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1NjQgc2l6ZSwgdW5z aWduZWQgYWxpZ25tZW50LAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBsb25nIGNvbG9yLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwKPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTY0IHN0YXJ0LCB1NjQgZW5kLAo+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGRybV9tbV9zZWFyY2hf ZmxhZ3Mgc2ZsYWdzLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl bnVtIGRybV9tbV9hbGxvY2F0b3JfZmxhZ3MgYWZsYWdzKQo+ICB7Cj4gQEAgLTM4NywzMiArMzkz LDM0IEBAIHZvaWQgZHJtX21tX3JlbW92ZV9ub2RlKHN0cnVjdCBkcm1fbW1fbm9kZSAqbm9kZSkK PiAgfQo+ICBFWFBPUlRfU1lNQk9MKGRybV9tbV9yZW1vdmVfbm9kZSk7Cj4KPiAtc3RhdGljIGlu dCBjaGVja19mcmVlX2hvbGUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQs Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzaXplLCB1bnNpZ25l ZCBhbGlnbm1lbnQpCj4gK3N0YXRpYyBpbnQgY2hlY2tfZnJlZV9ob2xlKHU2NCBzdGFydCwgdTY0 IGVuZCwgdTY0IHNpemUsIHVuc2lnbmVkIGFsaWdubWVudCkKPiAgewo+ICAgICAgICAgaWYgKGVu ZCAtIHN0YXJ0IDwgc2l6ZSkKPiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4KPiAgICAgICAg IGlmIChhbGlnbm1lbnQpIHsKPiAtICAgICAgICAgICAgICAgdW5zaWduZWQgdG1wID0gc3RhcnQg JSBhbGlnbm1lbnQ7Cj4gKyAgICAgICAgICAgICAgIHU2NCB0bXAgPSBzdGFydDsKPiArICAgICAg ICAgICAgICAgdW5zaWduZWQgcmVtOwo+ICsKPiArICAgICAgICAgICAgICAgcmVtID0gZG9fZGl2 KHRtcCwgYWxpZ25tZW50KTsKPiAgICAgICAgICAgICAgICAgaWYgKHRtcCkKPiAtICAgICAgICAg ICAgICAgICAgICAgICBzdGFydCArPSBhbGlnbm1lbnQgLSB0bXA7Cj4gKyAgICAgICAgICAgICAg ICAgICAgICAgc3RhcnQgKz0gYWxpZ25tZW50IC0gcmVtOwo+ICAgICAgICAgfQo+Cj4gICAgICAg ICByZXR1cm4gZW5kID49IHN0YXJ0ICsgc2l6ZTsKPiAgfQo+Cj4gIHN0YXRpYyBzdHJ1Y3QgZHJt X21tX25vZGUgKmRybV9tbV9zZWFyY2hfZnJlZV9nZW5lcmljKGNvbnN0IHN0cnVjdCBkcm1fbW0g Km1tLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1NjQgc2l6ZSwKPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBhbGlnbm1lbnQsCj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgbG9uZyBjb2xvciwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBlbnVtIGRybV9tbV9zZWFyY2hfZmxhZ3MgZmxhZ3MpCj4gIHsKPiAgICAg ICAgIHN0cnVjdCBkcm1fbW1fbm9kZSAqZW50cnk7Cj4gICAgICAgICBzdHJ1Y3QgZHJtX21tX25v ZGUgKmJlc3Q7Cj4gLSAgICAgICB1bnNpZ25lZCBsb25nIGFkal9zdGFydDsKPiAtICAgICAgIHVu c2lnbmVkIGxvbmcgYWRqX2VuZDsKPiAtICAgICAgIHVuc2lnbmVkIGxvbmcgYmVzdF9zaXplOwo+ ICsgICAgICAgdTY0IGFkal9zdGFydDsKPiArICAgICAgIHU2NCBhZGpfZW5kOwo+ICsgICAgICAg dTY0IGJlc3Rfc2l6ZTsKPgo+ICAgICAgICAgQlVHX09OKG1tLT5zY2FubmVkX2Jsb2Nrcyk7Cj4K PiBAQCAtNDIxLDcgKzQyOSw3IEBAIHN0YXRpYyBzdHJ1Y3QgZHJtX21tX25vZGUgKmRybV9tbV9z ZWFyY2hfZnJlZV9nZW5lcmljKGNvbnN0IHN0cnVjdCBkcm1fbW0gKm1tLAo+Cj4gICAgICAgICBf X2RybV9tbV9mb3JfZWFjaF9ob2xlKGVudHJ5LCBtbSwgYWRqX3N0YXJ0LCBhZGpfZW5kLAo+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyAmIERSTV9NTV9TRUFSQ0hfQkVMT1cp IHsKPiAtICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBob2xlX3NpemUgPSBhZGpfZW5kIC0g YWRqX3N0YXJ0Owo+ICsgICAgICAgICAgICAgICB1NjQgaG9sZV9zaXplID0gYWRqX2VuZCAtIGFk al9zdGFydDsKPgo+ICAgICAgICAgICAgICAgICBpZiAobW0tPmNvbG9yX2FkanVzdCkgewo+ICAg ICAgICAgICAgICAgICAgICAgICAgIG1tLT5jb2xvcl9hZGp1c3QoZW50cnksIGNvbG9yLCAmYWRq X3N0YXJ0LCAmYWRqX2VuZCk7Cj4gQEAgLTQ0NSwxOCArNDUzLDE4IEBAIHN0YXRpYyBzdHJ1Y3Qg ZHJtX21tX25vZGUgKmRybV9tbV9zZWFyY2hfZnJlZV9nZW5lcmljKGNvbnN0IHN0cnVjdCBkcm1f bW0gKm1tLAo+ICB9Cj4KPiAgc3RhdGljIHN0cnVjdCBkcm1fbW1fbm9kZSAqZHJtX21tX3NlYXJj aF9mcmVlX2luX3JhbmdlX2dlbmVyaWMoY29uc3Qgc3RydWN0IGRybV9tbSAqbW0sCj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBsb25nIHNpemUsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1NjQgc2l6ZSwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGFsaWdubWVudCwKPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxv bmcgY29sb3IsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0LAo+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBlbmQsCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1NjQg c3RhcnQsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1NjQgZW5kLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZW51bSBkcm1fbW1fc2VhcmNoX2ZsYWdzIGZsYWdzKQo+ICB7Cj4g ICAgICAgICBzdHJ1Y3QgZHJtX21tX25vZGUgKmVudHJ5Owo+ICAgICAgICAgc3RydWN0IGRybV9t bV9ub2RlICpiZXN0Owo+IC0gICAgICAgdW5zaWduZWQgbG9uZyBhZGpfc3RhcnQ7Cj4gLSAgICAg ICB1bnNpZ25lZCBsb25nIGFkal9lbmQ7Cj4gLSAgICAgICB1bnNpZ25lZCBsb25nIGJlc3Rfc2l6 ZTsKPiArICAgICAgIHU2NCBhZGpfc3RhcnQ7Cj4gKyAgICAgICB1NjQgYWRqX2VuZDsKPiArICAg ICAgIHU2NCBiZXN0X3NpemU7Cj4KPiAgICAgICAgIEJVR19PTihtbS0+c2Nhbm5lZF9ibG9ja3Mp Owo+Cj4gQEAgLTQ2NSw3ICs0NzMsNyBAQCBzdGF0aWMgc3RydWN0IGRybV9tbV9ub2RlICpkcm1f bW1fc2VhcmNoX2ZyZWVfaW5fcmFuZ2VfZ2VuZXJpYyhjb25zdCBzdHJ1Y3QgZHJtXwo+Cj4gICAg ICAgICBfX2RybV9tbV9mb3JfZWFjaF9ob2xlKGVudHJ5LCBtbSwgYWRqX3N0YXJ0LCBhZGpfZW5k LAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyAmIERSTV9NTV9TRUFSQ0hf QkVMT1cpIHsKPiAtICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBob2xlX3NpemUgPSBhZGpf ZW5kIC0gYWRqX3N0YXJ0Owo+ICsgICAgICAgICAgICAgICB1NjQgaG9sZV9zaXplID0gYWRqX2Vu ZCAtIGFkal9zdGFydDsKPgo+ICAgICAgICAgICAgICAgICBpZiAoYWRqX3N0YXJ0IDwgc3RhcnQp Cj4gICAgICAgICAgICAgICAgICAgICAgICAgYWRqX3N0YXJ0ID0gc3RhcnQ7Cj4gQEAgLTU2MSw3 ICs1NjksNyBAQCBFWFBPUlRfU1lNQk9MKGRybV9tbV9yZXBsYWNlX25vZGUpOwo+ICAgKiBhZGRp bmcvcmVtb3Zpbmcgbm9kZXMgdG8vZnJvbSB0aGUgc2NhbiBsaXN0IGFyZSBhbGxvd2VkLgo+ICAg Ki8KPiAgdm9pZCBkcm1fbW1faW5pdF9zY2FuKHN0cnVjdCBkcm1fbW0gKm1tLAo+IC0gICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNpemUsCj4gKyAgICAgICAgICAgICAgICAgICAg IHU2NCBzaXplLAo+ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBhbGlnbm1lbnQsCj4g ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgY29sb3IpCj4gIHsKPiBAQCAtNTk0 LDExICs2MDIsMTEgQEAgRVhQT1JUX1NZTUJPTChkcm1fbW1faW5pdF9zY2FuKTsKPiAgICogYWRk aW5nL3JlbW92aW5nIG5vZGVzIHRvL2Zyb20gdGhlIHNjYW4gbGlzdCBhcmUgYWxsb3dlZC4KPiAg ICovCj4gIHZvaWQgZHJtX21tX2luaXRfc2Nhbl93aXRoX3JhbmdlKHN0cnVjdCBkcm1fbW0gKm1t LAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSwK PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1NjQgc2l6ZSwKPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBhbGlnbm1lbnQsCj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBjb2xvciwKPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0LAo+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZW5kKQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHU2NCBzdGFydCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1NjQgZW5kKQo+ICB7Cj4gICAgICAgICBtbS0+c2Nhbl9jb2xvciA9IGNvbG9yOwo+ICAg ICAgICAgbW0tPnNjYW5fYWxpZ25tZW50ID0gYWxpZ25tZW50Owo+IEBAIC02MjcsOCArNjM1LDgg QEAgYm9vbCBkcm1fbW1fc2Nhbl9hZGRfYmxvY2soc3RydWN0IGRybV9tbV9ub2RlICpub2RlKQo+ ICB7Cj4gICAgICAgICBzdHJ1Y3QgZHJtX21tICptbSA9IG5vZGUtPm1tOwo+ICAgICAgICAgc3Ry dWN0IGRybV9tbV9ub2RlICpwcmV2X25vZGU7Cj4gLSAgICAgICB1bnNpZ25lZCBsb25nIGhvbGVf c3RhcnQsIGhvbGVfZW5kOwo+IC0gICAgICAgdW5zaWduZWQgbG9uZyBhZGpfc3RhcnQsIGFkal9l bmQ7Cj4gKyAgICAgICB1NjQgaG9sZV9zdGFydCwgaG9sZV9lbmQ7Cj4gKyAgICAgICB1NjQgYWRq X3N0YXJ0LCBhZGpfZW5kOwo+Cj4gICAgICAgICBtbS0+c2Nhbm5lZF9ibG9ja3MrKzsKPgo+IEBA IC03MzEsNyArNzM5LDcgQEAgRVhQT1JUX1NZTUJPTChkcm1fbW1fY2xlYW4pOwo+ICAgKgo+ICAg KiBOb3RlIHRoYXQgQG1tIG11c3QgYmUgY2xlYXJlZCB0byAwIGJlZm9yZSBjYWxsaW5nIHRoaXMg ZnVuY3Rpb24uCj4gICAqLwo+IC12b2lkIGRybV9tbV9pbml0KHN0cnVjdCBkcm1fbW0gKiBtbSwg dW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBzaXplKQo+ICt2b2lkIGRybV9tbV9p bml0KHN0cnVjdCBkcm1fbW0gKiBtbSwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSkKPiAgewo+ICAgICAg ICAgSU5JVF9MSVNUX0hFQUQoJm1tLT5ob2xlX3N0YWNrKTsKPiAgICAgICAgIG1tLT5zY2FubmVk X2Jsb2NrcyA9IDA7Cj4gQEAgLTc2NiwxOCArNzc0LDE3IEBAIHZvaWQgZHJtX21tX3Rha2Vkb3du KHN0cnVjdCBkcm1fbW0gKiBtbSkKPiAgfQo+ICBFWFBPUlRfU1lNQk9MKGRybV9tbV90YWtlZG93 bik7Cj4KPiAtc3RhdGljIHVuc2lnbmVkIGxvbmcgZHJtX21tX2RlYnVnX2hvbGUoc3RydWN0IGRy bV9tbV9ub2RlICplbnRyeSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBjaGFyICpwcmVmaXgpCj4gK3N0YXRpYyB1NjQgZHJtX21tX2RlYnVnX2hvbGUoc3Ry dWN0IGRybV9tbV9ub2RlICplbnRyeSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgY2hhciAqcHJlZml4KQo+ICB7Cj4gLSAgICAgICB1bnNpZ25lZCBsb25nIGhv bGVfc3RhcnQsIGhvbGVfZW5kLCBob2xlX3NpemU7Cj4gKyAgICAgICB1NjQgaG9sZV9zdGFydCwg aG9sZV9lbmQsIGhvbGVfc2l6ZTsKPgo+ICAgICAgICAgaWYgKGVudHJ5LT5ob2xlX2ZvbGxvd3Mp IHsKPiAgICAgICAgICAgICAgICAgaG9sZV9zdGFydCA9IGRybV9tbV9ob2xlX25vZGVfc3RhcnQo ZW50cnkpOwo+ICAgICAgICAgICAgICAgICBob2xlX2VuZCA9IGRybV9tbV9ob2xlX25vZGVfZW5k KGVudHJ5KTsKPiAgICAgICAgICAgICAgICAgaG9sZV9zaXplID0gaG9sZV9lbmQgLSBob2xlX3N0 YXJ0Owo+IC0gICAgICAgICAgICAgICBwcmludGsoS0VSTl9ERUJVRyAiJXMgMHglMDhseC0weCUw OGx4OiAlOGx1OiBmcmVlXG4iLAo+IC0gICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCwgaG9s ZV9zdGFydCwgaG9sZV9lbmQsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgaG9sZV9zaXplKTsK PiArICAgICAgICAgICAgICAgcHJfZGVidWcoIiVzICUjbGx4LSUjbGx4OiAlbGx1OiBmcmVlXG4i LCBwcmVmaXgsIGhvbGVfc3RhcnQsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGhvbGVfZW5k LCBob2xlX3NpemUpOwo+ICAgICAgICAgICAgICAgICByZXR1cm4gaG9sZV9zaXplOwo+ICAgICAg ICAgfQo+Cj4gQEAgLTc5MiwzNSArNzk5LDM0IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGRybV9t bV9kZWJ1Z19ob2xlKHN0cnVjdCBkcm1fbW1fbm9kZSAqZW50cnksCj4gIHZvaWQgZHJtX21tX2Rl YnVnX3RhYmxlKHN0cnVjdCBkcm1fbW0gKm1tLCBjb25zdCBjaGFyICpwcmVmaXgpCj4gIHsKPiAg ICAgICAgIHN0cnVjdCBkcm1fbW1fbm9kZSAqZW50cnk7Cj4gLSAgICAgICB1bnNpZ25lZCBsb25n IHRvdGFsX3VzZWQgPSAwLCB0b3RhbF9mcmVlID0gMCwgdG90YWwgPSAwOwo+ICsgICAgICAgdTY0 IHRvdGFsX3VzZWQgPSAwLCB0b3RhbF9mcmVlID0gMCwgdG90YWwgPSAwOwo+Cj4gICAgICAgICB0 b3RhbF9mcmVlICs9IGRybV9tbV9kZWJ1Z19ob2xlKCZtbS0+aGVhZF9ub2RlLCBwcmVmaXgpOwo+ Cj4gICAgICAgICBkcm1fbW1fZm9yX2VhY2hfbm9kZShlbnRyeSwgbW0pIHsKPiAtICAgICAgICAg ICAgICAgcHJpbnRrKEtFUk5fREVCVUcgIiVzIDB4JTA4bHgtMHglMDhseDogJThsdTogdXNlZFxu IiwKPiAtICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXgsIGVudHJ5LT5zdGFydCwgZW50cnkt PnN0YXJ0ICsgZW50cnktPnNpemUsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgZW50cnktPnNp emUpOwo+ICsgICAgICAgICAgICAgICBwcl9kZWJ1ZygiJXMgJSNsbHgtJSNsbHg6ICVsbHU6IHVz ZWRcbiIsIHByZWZpeCwgZW50cnktPnN0YXJ0LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICBl bnRyeS0+c3RhcnQgKyBlbnRyeS0+c2l6ZSwgZW50cnktPnNpemUpOwo+ICAgICAgICAgICAgICAg ICB0b3RhbF91c2VkICs9IGVudHJ5LT5zaXplOwo+ICAgICAgICAgICAgICAgICB0b3RhbF9mcmVl ICs9IGRybV9tbV9kZWJ1Z19ob2xlKGVudHJ5LCBwcmVmaXgpOwo+ICAgICAgICAgfQo+ICAgICAg ICAgdG90YWwgPSB0b3RhbF9mcmVlICsgdG90YWxfdXNlZDsKPgo+IC0gICAgICAgcHJpbnRrKEtF Uk5fREVCVUcgIiVzIHRvdGFsOiAlbHUsIHVzZWQgJWx1IGZyZWUgJWx1XG4iLCBwcmVmaXgsIHRv dGFsLAo+IC0gICAgICAgICAgICAgICB0b3RhbF91c2VkLCB0b3RhbF9mcmVlKTsKPiArICAgICAg IHByX2RlYnVnKCIlcyB0b3RhbDogJWxsdSwgdXNlZCAlbGx1IGZyZWUgJWxsdVxuIiwgcHJlZml4 LCB0b3RhbCwKPiArICAgICAgICAgICAgICAgIHRvdGFsX3VzZWQsIHRvdGFsX2ZyZWUpOwo+ICB9 Cj4gIEVYUE9SVF9TWU1CT0woZHJtX21tX2RlYnVnX3RhYmxlKTsKPgo+ICAjaWYgZGVmaW5lZChD T05GSUdfREVCVUdfRlMpCj4gLXN0YXRpYyB1bnNpZ25lZCBsb25nIGRybV9tbV9kdW1wX2hvbGUo c3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgZHJtX21tX25vZGUgKmVudHJ5KQo+ICtzdGF0aWMg dTY0IGRybV9tbV9kdW1wX2hvbGUoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgZHJtX21tX25v ZGUgKmVudHJ5KQo+ICB7Cj4gLSAgICAgICB1bnNpZ25lZCBsb25nIGhvbGVfc3RhcnQsIGhvbGVf ZW5kLCBob2xlX3NpemU7Cj4gKyAgICAgICB1NjQgaG9sZV9zdGFydCwgaG9sZV9lbmQsIGhvbGVf c2l6ZTsKPgo+ICAgICAgICAgaWYgKGVudHJ5LT5ob2xlX2ZvbGxvd3MpIHsKPiAgICAgICAgICAg ICAgICAgaG9sZV9zdGFydCA9IGRybV9tbV9ob2xlX25vZGVfc3RhcnQoZW50cnkpOwo+ICAgICAg ICAgICAgICAgICBob2xlX2VuZCA9IGRybV9tbV9ob2xlX25vZGVfZW5kKGVudHJ5KTsKPiAgICAg ICAgICAgICAgICAgaG9sZV9zaXplID0gaG9sZV9lbmQgLSBob2xlX3N0YXJ0Owo+IC0gICAgICAg ICAgICAgICBzZXFfcHJpbnRmKG0sICIweCUwOGx4LTB4JTA4bHg6IDB4JTA4bHg6IGZyZWVcbiIs Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob2xlX3N0YXJ0LCBob2xlX2VuZCwg aG9sZV9zaXplKTsKPiArICAgICAgICAgICAgICAgc2VxX3ByaW50ZihtLCAiJSNsbHgtJSNsbHg6 ICVsbHU6IGZyZWVcbiIsIGhvbGVfc3RhcnQsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg aG9sZV9lbmQsIGhvbGVfc2l6ZSk7Cj4gICAgICAgICAgICAgICAgIHJldHVybiBob2xlX3NpemU7 Cj4gICAgICAgICB9Cj4KPiBAQCAtODM1LDIwICs4NDEsMjAgQEAgc3RhdGljIHVuc2lnbmVkIGxv bmcgZHJtX21tX2R1bXBfaG9sZShzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBkcm1fbW1fbm9k ZSAqZW4KPiAgaW50IGRybV9tbV9kdW1wX3RhYmxlKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0 IGRybV9tbSAqbW0pCj4gIHsKPiAgICAgICAgIHN0cnVjdCBkcm1fbW1fbm9kZSAqZW50cnk7Cj4g LSAgICAgICB1bnNpZ25lZCBsb25nIHRvdGFsX3VzZWQgPSAwLCB0b3RhbF9mcmVlID0gMCwgdG90 YWwgPSAwOwo+ICsgICAgICAgdTY0IHRvdGFsX3VzZWQgPSAwLCB0b3RhbF9mcmVlID0gMCwgdG90 YWwgPSAwOwo+Cj4gICAgICAgICB0b3RhbF9mcmVlICs9IGRybV9tbV9kdW1wX2hvbGUobSwgJm1t LT5oZWFkX25vZGUpOwo+Cj4gICAgICAgICBkcm1fbW1fZm9yX2VhY2hfbm9kZShlbnRyeSwgbW0p IHsKPiAtICAgICAgICAgICAgICAgc2VxX3ByaW50ZihtLCAiMHglMDhseC0weCUwOGx4OiAweCUw OGx4OiB1c2VkXG4iLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnktPnN0 YXJ0LCBlbnRyeS0+c3RhcnQgKyBlbnRyeS0+c2l6ZSwKPiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGVudHJ5LT5zaXplKTsKPiArICAgICAgICAgICAgICAgc2VxX3ByaW50ZihtLCAi JSMwMTZsbHgtJSMwMTZsbHg6ICVsbHU6IHVzZWRcbiIsIGVudHJ5LT5zdGFydCwKPiArICAgICAg ICAgICAgICAgICAgICAgICAgICBlbnRyeS0+c3RhcnQgKyBlbnRyeS0+c2l6ZSwgZW50cnktPnNp emUpOwo+ICAgICAgICAgICAgICAgICB0b3RhbF91c2VkICs9IGVudHJ5LT5zaXplOwo+ICAgICAg ICAgICAgICAgICB0b3RhbF9mcmVlICs9IGRybV9tbV9kdW1wX2hvbGUobSwgZW50cnkpOwo+ICAg ICAgICAgfQo+ICAgICAgICAgdG90YWwgPSB0b3RhbF9mcmVlICsgdG90YWxfdXNlZDsKPgo+IC0g ICAgICAgc2VxX3ByaW50ZihtLCAidG90YWw6ICVsdSwgdXNlZCAlbHUgZnJlZSAlbHVcbiIsIHRv dGFsLCB0b3RhbF91c2VkLCB0b3RhbF9mcmVlKTsKPiArICAgICAgIHNlcV9wcmludGYobSwgInRv dGFsOiAlbGx1LCB1c2VkICVsbHUgZnJlZSAlbGx1XG4iLCB0b3RhbCwKPiArICAgICAgICAgICAg ICAgICAgdG90YWxfdXNlZCwgdG90YWxfZnJlZSk7Cj4gICAgICAgICByZXR1cm4gMDsKPiAgfQo+ ICBFWFBPUlRfU1lNQk9MKGRybV9tbV9kdW1wX3RhYmxlKTsKPiBkaWZmIC0tZ2l0IGEvaW5jbHVk ZS9kcm0vZHJtX21tLmggYi9pbmNsdWRlL2RybS9kcm1fbW0uaAo+IGluZGV4IGEyNGFkZGZkZmNl Yy4uMGRlNjI5MGRmNGRhIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9tbS5oCj4gKysr IGIvaW5jbHVkZS9kcm0vZHJtX21tLmgKPiBAQCAtNjgsOCArNjgsOCBAQCBzdHJ1Y3QgZHJtX21t X25vZGUgewo+ICAgICAgICAgdW5zaWduZWQgc2Nhbm5lZF9wcmVjZWVkc19ob2xlIDogMTsKPiAg ICAgICAgIHVuc2lnbmVkIGFsbG9jYXRlZCA6IDE7Cj4gICAgICAgICB1bnNpZ25lZCBsb25nIGNv bG9yOwo+IC0gICAgICAgdW5zaWduZWQgbG9uZyBzdGFydDsKPiAtICAgICAgIHVuc2lnbmVkIGxv bmcgc2l6ZTsKPiArICAgICAgIHU2NCBzdGFydDsKPiArICAgICAgIHU2NCBzaXplOwo+ICAgICAg ICAgc3RydWN0IGRybV9tbSAqbW07Cj4gIH07Cj4KPiBAQCAtODIsMTYgKzgyLDE2IEBAIHN0cnVj dCBkcm1fbW0gewo+ICAgICAgICAgdW5zaWduZWQgaW50IHNjYW5fY2hlY2tfcmFuZ2UgOiAxOwo+ ICAgICAgICAgdW5zaWduZWQgc2Nhbl9hbGlnbm1lbnQ7Cj4gICAgICAgICB1bnNpZ25lZCBsb25n IHNjYW5fY29sb3I7Cj4gLSAgICAgICB1bnNpZ25lZCBsb25nIHNjYW5fc2l6ZTsKPiAtICAgICAg IHVuc2lnbmVkIGxvbmcgc2Nhbl9oaXRfc3RhcnQ7Cj4gLSAgICAgICB1bnNpZ25lZCBsb25nIHNj YW5faGl0X2VuZDsKPiArICAgICAgIHU2NCBzY2FuX3NpemU7Cj4gKyAgICAgICB1NjQgc2Nhbl9o aXRfc3RhcnQ7Cj4gKyAgICAgICB1NjQgc2Nhbl9oaXRfZW5kOwo+ICAgICAgICAgdW5zaWduZWQg c2Nhbm5lZF9ibG9ja3M7Cj4gLSAgICAgICB1bnNpZ25lZCBsb25nIHNjYW5fc3RhcnQ7Cj4gLSAg ICAgICB1bnNpZ25lZCBsb25nIHNjYW5fZW5kOwo+ICsgICAgICAgdTY0IHNjYW5fc3RhcnQ7Cj4g KyAgICAgICB1NjQgc2Nhbl9lbmQ7Cj4gICAgICAgICBzdHJ1Y3QgZHJtX21tX25vZGUgKnByZXZf c2Nhbm5lZF9ub2RlOwo+Cj4gICAgICAgICB2b2lkICgqY29sb3JfYWRqdXN0KShzdHJ1Y3QgZHJt X21tX25vZGUgKm5vZGUsIHVuc2lnbmVkIGxvbmcgY29sb3IsCj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBsb25nICpzdGFydCwgdW5zaWduZWQgbG9uZyAqZW5kKTsKPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU2NCAqc3RhcnQsIHU2NCAqZW5kKTsKPiAgfTsK Pgo+ICAvKioKPiBAQCAtMTI0LDcgKzEyNCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBkcm1fbW1f aW5pdGlhbGl6ZWQoc3RydWN0IGRybV9tbSAqbW0pCj4gICAgICAgICByZXR1cm4gbW0tPmhvbGVf c3RhY2submV4dDsKPiAgfQo+Cj4gLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBfX2RybV9t bV9ob2xlX25vZGVfc3RhcnQoc3RydWN0IGRybV9tbV9ub2RlICpob2xlX25vZGUpCj4gK3N0YXRp YyBpbmxpbmUgdTY0IF9fZHJtX21tX2hvbGVfbm9kZV9zdGFydChzdHJ1Y3QgZHJtX21tX25vZGUg KmhvbGVfbm9kZSkKPiAgewo+ICAgICAgICAgcmV0dXJuIGhvbGVfbm9kZS0+c3RhcnQgKyBob2xl X25vZGUtPnNpemU7Cj4gIH0KPiBAQCAtMTQwLDEzICsxNDAsMTMgQEAgc3RhdGljIGlubGluZSB1 bnNpZ25lZCBsb25nIF9fZHJtX21tX2hvbGVfbm9kZV9zdGFydChzdHJ1Y3QgZHJtX21tX25vZGUg KmhvbGVfbm8KPiAgICogUmV0dXJuczoKPiAgICogU3RhcnQgb2YgdGhlIHN1YnNlcXVlbnQgaG9s ZS4KPiAgICovCj4gLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBkcm1fbW1faG9sZV9ub2Rl X3N0YXJ0KHN0cnVjdCBkcm1fbW1fbm9kZSAqaG9sZV9ub2RlKQo+ICtzdGF0aWMgaW5saW5lIHU2 NCBkcm1fbW1faG9sZV9ub2RlX3N0YXJ0KHN0cnVjdCBkcm1fbW1fbm9kZSAqaG9sZV9ub2RlKQo+ ICB7Cj4gICAgICAgICBCVUdfT04oIWhvbGVfbm9kZS0+aG9sZV9mb2xsb3dzKTsKPiAgICAgICAg IHJldHVybiBfX2RybV9tbV9ob2xlX25vZGVfc3RhcnQoaG9sZV9ub2RlKTsKPiAgfQo+Cj4gLXN0 YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBfX2RybV9tbV9ob2xlX25vZGVfZW5kKHN0cnVjdCBk cm1fbW1fbm9kZSAqaG9sZV9ub2RlKQo+ICtzdGF0aWMgaW5saW5lIHU2NCBfX2RybV9tbV9ob2xl X25vZGVfZW5kKHN0cnVjdCBkcm1fbW1fbm9kZSAqaG9sZV9ub2RlKQo+ICB7Cj4gICAgICAgICBy ZXR1cm4gbGlzdF9lbnRyeShob2xlX25vZGUtPm5vZGVfbGlzdC5uZXh0LAo+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IGRybV9tbV9ub2RlLCBub2RlX2xpc3QpLT5zdGFydDsKPiBA QCAtMTYzLDcgKzE2Myw3IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBfX2RybV9tbV9o b2xlX25vZGVfZW5kKHN0cnVjdCBkcm1fbW1fbm9kZSAqaG9sZV9ub2RlCj4gICAqIFJldHVybnM6 Cj4gICAqIEVuZCBvZiB0aGUgc3Vic2VxdWVudCBob2xlLgo+ICAgKi8KPiAtc3RhdGljIGlubGlu ZSB1bnNpZ25lZCBsb25nIGRybV9tbV9ob2xlX25vZGVfZW5kKHN0cnVjdCBkcm1fbW1fbm9kZSAq aG9sZV9ub2RlKQo+ICtzdGF0aWMgaW5saW5lIHU2NCBkcm1fbW1faG9sZV9ub2RlX2VuZChzdHJ1 Y3QgZHJtX21tX25vZGUgKmhvbGVfbm9kZSkKPiAgewo+ICAgICAgICAgcmV0dXJuIF9fZHJtX21t X2hvbGVfbm9kZV9lbmQoaG9sZV9ub2RlKTsKPiAgfQo+IEBAIC0yMjIsNyArMjIyLDcgQEAgaW50 IGRybV9tbV9yZXNlcnZlX25vZGUoc3RydWN0IGRybV9tbSAqbW0sIHN0cnVjdCBkcm1fbW1fbm9k ZSAqbm9kZSk7Cj4KPiAgaW50IGRybV9tbV9pbnNlcnRfbm9kZV9nZW5lcmljKHN0cnVjdCBkcm1f bW0gKm1tLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX21tX25v ZGUgKm5vZGUsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg c2l6ZSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTY0IHNpemUsCj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGFsaWdubWVudCwKPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBjb2xvciwKPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZW51bSBkcm1fbW1fc2VhcmNoX2ZsYWdzIHNmbGFncywKPiBAQCAt MjQ1LDcgKzI0NSw3IEBAIGludCBkcm1fbW1faW5zZXJ0X25vZGVfZ2VuZXJpYyhzdHJ1Y3QgZHJt X21tICptbSwKPiAgICovCj4gIHN0YXRpYyBpbmxpbmUgaW50IGRybV9tbV9pbnNlcnRfbm9kZShz dHJ1Y3QgZHJtX21tICptbSwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IGRybV9tbV9ub2RlICpub2RlLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1bnNpZ25lZCBsb25nIHNpemUsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHU2NCBzaXplLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBhbGlnbm1lbnQsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGVudW0gZHJtX21tX3NlYXJjaF9mbGFncyBmbGFncykKPiAgewo+IEBAIC0yNTUsMTEgKzI1 NSwxMSBAQCBzdGF0aWMgaW5saW5lIGludCBkcm1fbW1faW5zZXJ0X25vZGUoc3RydWN0IGRybV9t bSAqbW0sCj4KPiAgaW50IGRybV9tbV9pbnNlcnRfbm9kZV9pbl9yYW5nZV9nZW5lcmljKHN0cnVj dCBkcm1fbW0gKm1tLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgZHJtX21tX25vZGUgKm5vZGUsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSwKPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdTY0IHNpemUsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGFsaWdubWVudCwKPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBjb2xvciwKPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzdGFydCwKPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBlbmQsCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU2NCBzdGFydCwKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdTY0IGVuZCwKPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZW51bSBkcm1fbW1fc2VhcmNoX2ZsYWdzIHNmbGFncywKPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBkcm1fbW1fYWxsb2Nh dG9yX2ZsYWdzIGFmbGFncyk7Cj4gIC8qKgo+IEBAIC0yODIsMTAgKzI4MiwxMCBAQCBpbnQgZHJt X21tX2luc2VydF9ub2RlX2luX3JhbmdlX2dlbmVyaWMoc3RydWN0IGRybV9tbSAqbW0sCj4gICAq Lwo+ICBzdGF0aWMgaW5saW5lIGludCBkcm1fbW1faW5zZXJ0X25vZGVfaW5fcmFuZ2Uoc3RydWN0 IGRybV9tbSAqbW0sCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBkcm1fbW1fbm9kZSAqbm9kZSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzaXplLAo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1NjQgc2l6ZSwKPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYWxpZ25tZW50LAo+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25n IHN0YXJ0LAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBsb25nIGVuZCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdTY0IHN0YXJ0LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1NjQgZW5kLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBlbnVtIGRybV9tbV9zZWFyY2hfZmxhZ3MgZmxhZ3MpCj4gIHsKPiAgICAgICAg IHJldHVybiBkcm1fbW1faW5zZXJ0X25vZGVfaW5fcmFuZ2VfZ2VuZXJpYyhtbSwgbm9kZSwgc2l6 ZSwgYWxpZ25tZW50LAo+IEBAIC0yOTYsMjEgKzI5NiwyMSBAQCBzdGF0aWMgaW5saW5lIGludCBk cm1fbW1faW5zZXJ0X25vZGVfaW5fcmFuZ2Uoc3RydWN0IGRybV9tbSAqbW0sCj4gIHZvaWQgZHJt X21tX3JlbW92ZV9ub2RlKHN0cnVjdCBkcm1fbW1fbm9kZSAqbm9kZSk7Cj4gIHZvaWQgZHJtX21t X3JlcGxhY2Vfbm9kZShzdHJ1Y3QgZHJtX21tX25vZGUgKm9sZCwgc3RydWN0IGRybV9tbV9ub2Rl ICpuZXcpOwo+ICB2b2lkIGRybV9tbV9pbml0KHN0cnVjdCBkcm1fbW0gKm1tLAo+IC0gICAgICAg ICAgICAgICAgdW5zaWduZWQgbG9uZyBzdGFydCwKPiAtICAgICAgICAgICAgICAgIHVuc2lnbmVk IGxvbmcgc2l6ZSk7Cj4gKyAgICAgICAgICAgICAgICB1NjQgc3RhcnQsCj4gKyAgICAgICAgICAg ICAgICB1NjQgc2l6ZSk7Cj4gIHZvaWQgZHJtX21tX3Rha2Vkb3duKHN0cnVjdCBkcm1fbW0gKm1t KTsKPiAgYm9vbCBkcm1fbW1fY2xlYW4oc3RydWN0IGRybV9tbSAqbW0pOwo+Cj4gIHZvaWQgZHJt X21tX2luaXRfc2NhbihzdHJ1Y3QgZHJtX21tICptbSwKPiAtICAgICAgICAgICAgICAgICAgICAg dW5zaWduZWQgbG9uZyBzaXplLAo+ICsgICAgICAgICAgICAgICAgICAgICB1NjQgc2l6ZSwKPiAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYWxpZ25tZW50LAo+ICAgICAgICAgICAgICAg ICAgICAgICB1bnNpZ25lZCBsb25nIGNvbG9yKTsKPiAgdm9pZCBkcm1fbW1faW5pdF9zY2FuX3dp dGhfcmFuZ2Uoc3RydWN0IGRybV9tbSAqbW0sCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdW5zaWduZWQgbG9uZyBzaXplLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHU2NCBzaXplLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGFsaWdubWVudCwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBs b25nIGNvbG9yLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxv bmcgc3RhcnQsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9u ZyBlbmQpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU2NCBzdGFydCwKPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1NjQgZW5kKTsKPiAgYm9vbCBkcm1fbW1f c2Nhbl9hZGRfYmxvY2soc3RydWN0IGRybV9tbV9ub2RlICpub2RlKTsKPiAgYm9vbCBkcm1fbW1f c2Nhbl9yZW1vdmVfYmxvY2soc3RydWN0IGRybV9tbV9ub2RlICpub2RlKTsKPgo+IC0tCj4gMi4x LjMKPgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4g ZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK PiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZl bCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==