From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH] drm/915: Pad GTT views of exec objects up to user specified size Date: Thu, 22 Oct 2015 10:04:55 +0200 Message-ID: <20151022080455.GO16848@phenom.ffwll.local> References: <1445441098-12528-1-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f170.google.com (mail-wi0-f170.google.com [209.85.212.170]) by gabe.freedesktop.org (Postfix) with ESMTPS id BC1896EF40 for ; Thu, 22 Oct 2015 01:04:58 -0700 (PDT) Received: by wicfv8 with SMTP id fv8so108034618wic.0 for ; Thu, 22 Oct 2015 01:04:57 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1445441098-12528-1-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBPY3QgMjEsIDIwMTUgYXQgMDQ6MjQ6NThQTSArMDEwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IE91ciBHUFVzIGltcG9zZSBjZXJ0YWluIHJlcXVpcmVtZW50cyB1cG9uIGJ1ZmZlcnMg dGhhdCBkZXBlbmQgdXBvbiBob3cKPiBleGFjdGx5IHRoZXkgYXJlIHVzZWQuIFR5cGljYWxseSB0 aGlzIGlzIGV4cHJlc3NlZCBhcyB0aGF0IHRoZXkgcmVxdWlyZQo+IGEgbGFyZ2VyIHN1cmZhY2Ug dGhhbiB3b3VsZCBiZSBuYWl2ZWx5IGNvbXB1dGVkIGJ5IHBpdGNoICogaGVpZ2h0Lgo+IE5vcm1h bGx5IHN1Y2ggcmVxdWlyZW1lbnRzIGFyZSBoaWRkZW4gYXdheSBpbiB0aGUgdXNlcnNwYWNlIGRy aXZlciwgYnV0Cj4gd2hlbiB3ZSBhY2NlcHQgcG9pbnRlcnMgZnJvbSBzdHJhbmdlcnMgYW5kIGxh dGVyIGltcG9zZSBleHRyYSBjb25kaXRpb25zCj4gb24gdGhlbSwgdGhlIG9yaWdpbmFsIGNsaWVu dCBhbGxvY2F0b3IgaGFzIG5vIGlkZWEgYWJvdXQgdGhlCj4gbW9uc3Ryb3NpdGllcyBpbiB0aGUg R1BVIGFuZCB3ZSByZXF1aXJlIHRoZSB1c2Vyc3BhY2UgZHJpdmVyIHRvIGluZm9ybQo+IHRoZSBr ZXJuZWwgaG93IG1hbnkgcGFkZGluZyBwYWdlcyBhcmUgcmVxdWlyZWQgYmV5b25kIHRoZSBjbGll bnQKPiBhbGxvY2F0aW9uLgo+IAo+IHYyOiBMb25nIHRpbWUsIG5vIHNlZQo+IAo+IFNpZ25lZC1v ZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IENjOiBUdnJ0 a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgoKVXN1YWwgIm5lZWRzIGlndCAr IG9wZW4tc291cmNlIHVzZXJzcGFjZSIgYnJva2VuIHJlY29yZCBmcm9tIG1haW50YWluZXIsCmlu IGNhc2Ugc29tZW9uZSByZWFsbHkgd2FudHMgdG8gdXNlIHRoaXMuIE5vaXNlcyBJJ3ZlIGhlYXJk IGlzIHRoYXQgaXQncwpmb3Igb3BlbmNsLCBidXQgd2hvIGtub3dzLgotRGFuaWVsCgo+IC0tLQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgfCAgNiArKy0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICAgIHwgNzcgKysrKysrKysr KysrKysrLS0tLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4 ZWNidWZmZXIuYyB8IDE2ICsrKysrKy0KPiAgaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oICAg ICAgICAgICAgICAgIHwgIDUgKy0KPiAgNCBmaWxlcyBjaGFuZ2VkLCA2MCBpbnNlcnRpb25zKCsp LCA0NCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCAyNzcx YjdlZGRlMDIuLmEwY2UwMTFhNWRjMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBA IC0yNzg2LDExICsyNzg2LDEzIEBAIHZvaWQgaTkxNV9nZW1fdm1hX2Rlc3Ryb3koc3RydWN0IGk5 MTVfdm1hICp2bWEpOwo+ICBpbnQgX19tdXN0X2NoZWNrCj4gIGk5MTVfZ2VtX29iamVjdF9waW4o c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgCQkgICAgc3RydWN0IGk5MTVfYWRk cmVzc19zcGFjZSAqdm0sCj4gKwkJICAgIHVpbnQ2NF90IHNpemUsCj4gIAkJICAgIHVpbnQzMl90 IGFsaWdubWVudCwKPiAgCQkgICAgdWludDY0X3QgZmxhZ3MpOwo+ICBpbnQgX19tdXN0X2NoZWNr Cj4gIGk5MTVfZ2VtX29iamVjdF9nZ3R0X3BpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqLAo+ICAJCQkgY29uc3Qgc3RydWN0IGk5MTVfZ2d0dF92aWV3ICp2aWV3LAo+ICsJCQkgdWlu dDY0X3Qgc2l6ZSwKPiAgCQkJIHVpbnQzMl90IGFsaWdubWVudCwKPiAgCQkJIHVpbnQ2NF90IGZs YWdzKTsKPiAgCj4gQEAgLTMwNDgsOCArMzA1MCw4IEBAIGk5MTVfZ2VtX29ial9nZ3R0X3Bpbihz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAJCSAgICAgIHVpbnQzMl90IGFsaWdu bWVudCwKPiAgCQkgICAgICB1bnNpZ25lZCBmbGFncykKPiAgewo+IC0JcmV0dXJuIGk5MTVfZ2Vt X29iamVjdF9waW4ob2JqLCBpOTE1X29ial90b19nZ3R0KG9iaiksCj4gLQkJCQkgICBhbGlnbm1l bnQsIGZsYWdzIHwgUElOX0dMT0JBTCk7Cj4gKwlyZXR1cm4gaTkxNV9nZW1fb2JqZWN0X3Bpbihv YmosIGk5MTVfb2JqX3RvX2dndHQob2JqKSwgMCwgYWxpZ25tZW50LAo+ICsJCQkJICAgZmxhZ3Mg fCBQSU5fR0xPQkFMKTsKPiAgfQo+ICAKPiAgc3RhdGljIGlubGluZSBpbnQKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtLmMKPiBpbmRleCA0ZjQ5YzlkYzI0ZTIuLmQwNzkxMTFkMTVjNSAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW0uYwo+IEBAIC0xNzg0LDcgKzE3ODQsNyBAQCBpbnQgaTkxNV9nZW1f ZmF1bHQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHN0cnVjdCB2bV9mYXVsdCAqdm1mKQo+ ICAJfQo+ICAKPiAgCS8qIE5vdyBwaW4gaXQgaW50byB0aGUgR1RUIGlmIG5lZWRlZCAqLwo+IC0J cmV0ID0gaTkxNV9nZW1fb2JqZWN0X2dndHRfcGluKG9iaiwgJnZpZXcsIDAsIFBJTl9NQVBQQUJM RSk7Cj4gKwlyZXQgPSBpOTE1X2dlbV9vYmplY3RfZ2d0dF9waW4ob2JqLCAmdmlldywgMCwgMCwg UElOX01BUFBBQkxFKTsKPiAgCWlmIChyZXQpCj4gIAkJZ290byB1bmxvY2s7Cj4gIAo+IEBAIC0z MzYyLDIwICszMzYyLDIwIEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV92bWEgKgo+ICBpOTE1X2dlbV9v YmplY3RfYmluZF90b192bShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAJCQkg ICBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiAgCQkJICAgY29uc3Qgc3RydWN0IGk5 MTVfZ2d0dF92aWV3ICpnZ3R0X3ZpZXcsCj4gKwkJCSAgIHVpbnQ2NF90IHNpemUsCj4gIAkJCSAg IHVuc2lnbmVkIGFsaWdubWVudCwKPiAgCQkJICAgdWludDY0X3QgZmxhZ3MpCj4gIHsKPiAgCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBvYmotPmJhc2UuZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAtCXUzMiBmZW5jZV9hbGln bm1lbnQsIHVuZmVuY2VkX2FsaWdubWVudDsKPiAgCXU2NCBzdGFydCwgZW5kOwo+IC0JdTY0IHNp emUsIGZlbmNlX3NpemU7Cj4gIAl1MzIgc2VhcmNoX2ZsYWcsIGFsbG9jX2ZsYWc7Cj4gIAlzdHJ1 Y3QgaTkxNV92bWEgKnZtYTsKPiAgCWludCByZXQ7Cj4gIAo+ICAJaWYgKGk5MTVfaXNfZ2d0dCh2 bSkpIHsKPiAtCQl1MzIgdmlld19zaXplOwo+ICsJCXUzMiBmZW5jZV9zaXplLCBmZW5jZV9hbGln bm1lbnQsIHVuZmVuY2VkX2FsaWdubWVudDsKPiArCQl1NjQgdmlld19zaXplOwo+ICAKPiAgCQlp ZiAoV0FSTl9PTighZ2d0dF92aWV3KSkKPiAgCQkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7Cj4g QEAgLTMzOTMsMjEgKzMzOTMsMjIgQEAgaTkxNV9nZW1fb2JqZWN0X2JpbmRfdG9fdm0oc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgCQkJCQkJCQl2aWV3X3NpemUsCj4gIAkJCQkJ CQkJb2JqLT50aWxpbmdfbW9kZSwKPiAgCQkJCQkJCQlmYWxzZSk7Cj4gLQkJc2l6ZSA9IGZsYWdz ICYgUElOX01BUFBBQkxFID8gZmVuY2Vfc2l6ZSA6IHZpZXdfc2l6ZTsKPiArCQlzaXplID0gbWF4 KHNpemUsIHZpZXdfc2l6ZSk7Cj4gKwkJaWYgKGZsYWdzICYgUElOX01BUFBBQkxFKQo+ICsJCQlz aXplID0gbWF4X3QodTY0LCBzaXplLCBmZW5jZV9zaXplKTsKPiArCj4gKwkJaWYgKGFsaWdubWVu dCA9PSAwKQo+ICsJCQlhbGlnbm1lbnQgPSBmbGFncyAmIFBJTl9NQVBQQUJMRSA/IGZlbmNlX2Fs aWdubWVudCA6Cj4gKwkJCQl1bmZlbmNlZF9hbGlnbm1lbnQ7Cj4gKwkJaWYgKGZsYWdzICYgUElO X01BUFBBQkxFICYmIGFsaWdubWVudCAmIChmZW5jZV9hbGlnbm1lbnQgLSAxKSkgewo+ICsJCQlE Uk1fREVCVUcoIkludmFsaWQgb2JqZWN0ICh2aWV3IHR5cGU9JXUpIGFsaWdubWVudCByZXF1ZXN0 ZWQgJXVcbiIsCj4gKwkJCQkgIGdndHRfdmlldyA/IGdndHRfdmlldy0+dHlwZSA6IDAsCj4gKwkJ CQkgIGFsaWdubWVudCk7Cj4gKwkJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwo+ICsJCX0KPiAg CX0gZWxzZSB7Cj4gLQkJZmVuY2Vfc2l6ZSA9IGk5MTVfZ2VtX2dldF9ndHRfc2l6ZShkZXYsCj4g LQkJCQkJCSAgIG9iai0+YmFzZS5zaXplLAo+IC0JCQkJCQkgICBvYmotPnRpbGluZ19tb2RlKTsK PiAtCQlmZW5jZV9hbGlnbm1lbnQgPSBpOTE1X2dlbV9nZXRfZ3R0X2FsaWdubWVudChkZXYsCj4g LQkJCQkJCQkgICAgIG9iai0+YmFzZS5zaXplLAo+IC0JCQkJCQkJICAgICBvYmotPnRpbGluZ19t b2RlLAo+IC0JCQkJCQkJICAgICB0cnVlKTsKPiAtCQl1bmZlbmNlZF9hbGlnbm1lbnQgPQo+IC0J CQlpOTE1X2dlbV9nZXRfZ3R0X2FsaWdubWVudChkZXYsCj4gLQkJCQkJCSAgIG9iai0+YmFzZS5z aXplLAo+IC0JCQkJCQkgICBvYmotPnRpbGluZ19tb2RlLAo+IC0JCQkJCQkgICBmYWxzZSk7Cj4g LQkJc2l6ZSA9IGZsYWdzICYgUElOX01BUFBBQkxFID8gZmVuY2Vfc2l6ZSA6IG9iai0+YmFzZS5z aXplOwo+ICsJCXNpemUgPSBtYXhfdCh1NjQsIHNpemUsIG9iai0+YmFzZS5zaXplKTsKPiArCQlh bGlnbm1lbnQgPSA0MDk2Owo+ICAJfQo+ICAKPiAgCXN0YXJ0ID0gZmxhZ3MgJiBQSU5fT0ZGU0VU X0JJQVMgPyBmbGFncyAmIFBJTl9PRkZTRVRfTUFTSyA6IDA7Cj4gQEAgLTM0MTgsMjQgKzM0MTks MTQgQEAgaTkxNV9nZW1fb2JqZWN0X2JpbmRfdG9fdm0oc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaiwKPiAgCWlmIChmbGFncyAmIFBJTl9aT05FXzRHKQo+ICAJCWVuZCA9IG1pbl90KHU2 NCwgZW5kLCAxVUxMIDw8IDMyKTsKPiAgCj4gLQlpZiAoYWxpZ25tZW50ID09IDApCj4gLQkJYWxp Z25tZW50ID0gZmxhZ3MgJiBQSU5fTUFQUEFCTEUgPyBmZW5jZV9hbGlnbm1lbnQgOgo+IC0JCQkJ CQl1bmZlbmNlZF9hbGlnbm1lbnQ7Cj4gLQlpZiAoZmxhZ3MgJiBQSU5fTUFQUEFCTEUgJiYgYWxp Z25tZW50ICYgKGZlbmNlX2FsaWdubWVudCAtIDEpKSB7Cj4gLQkJRFJNX0RFQlVHKCJJbnZhbGlk IG9iamVjdCAodmlldyB0eXBlPSV1KSBhbGlnbm1lbnQgcmVxdWVzdGVkICV1XG4iLAo+IC0JCQkg IGdndHRfdmlldyA/IGdndHRfdmlldy0+dHlwZSA6IDAsCj4gLQkJCSAgYWxpZ25tZW50KTsKPiAt CQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKPiAtCX0KPiAtCj4gIAkvKiBJZiBiaW5kaW5nIHRo ZSBvYmplY3QvR0dUVCB2aWV3IHJlcXVpcmVzIG1vcmUgc3BhY2UgdGhhbiB0aGUgZW50aXJlCj4g IAkgKiBhcGVydHVyZSBoYXMsIHJlamVjdCBpdCBlYXJseSBiZWZvcmUgZXZpY3RpbmcgZXZlcnl0 aGluZyBpbiBhIHZhaW4KPiAgCSAqIGF0dGVtcHQgdG8gZmluZCBzcGFjZS4KPiAgCSAqLwo+ICAJ aWYgKHNpemUgPiBlbmQpIHsKPiAtCQlEUk1fREVCVUcoIkF0dGVtcHRpbmcgdG8gYmluZCBhbiBv YmplY3QgKHZpZXcgdHlwZT0ldSkgbGFyZ2VyIHRoYW4gdGhlIGFwZXJ0dXJlOiBzaXplPSVsbHUg PiAlcyBhcGVydHVyZT0lbGx1XG4iLAo+ICsJCURSTV9ERUJVRygiQXR0ZW1wdGluZyB0byBiaW5k IGFuIG9iamVjdCAodmlldyB0eXBlPSV1KSBsYXJnZXIgdGhhbiB0aGUgYXBlcnR1cmU6IHJlcXVl c3Q9JWxsdSBbb2JqZWN0PSV6ZF0gPiAlcyBhcGVydHVyZT0lbGx1XG4iLAo+ICAJCQkgIGdndHRf dmlldyA/IGdndHRfdmlldy0+dHlwZSA6IDAsCj4gLQkJCSAgc2l6ZSwKPiArCQkJICBzaXplLCBv YmotPmJhc2Uuc2l6ZSwKPiAgCQkJICBmbGFncyAmIFBJTl9NQVBQQUJMRSA/ICJtYXBwYWJsZSIg OiAidG90YWwiLAo+ICAJCQkgIGVuZCk7Cj4gIAkJcmV0dXJuIEVSUl9QVFIoLUUyQklHKTsKPiBA QCAtMzg5Miw3ICszODgzLDcgQEAgaTkxNV9nZW1fb2JqZWN0X3Bpbl90b19kaXNwbGF5X3BsYW5l KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gIAkgKiAoZS5nLiBsaWJrbXMgZm9y IHRoZSBib290dXAgc3BsYXNoKSwgd2UgaGF2ZSB0byBlbnN1cmUgdGhhdCB3ZQo+ICAJICogYWx3 YXlzIHVzZSBtYXBfYW5kX2ZlbmNlYWJsZSBmb3IgYWxsIHNjYW5vdXQgYnVmZmVycy4KPiAgCSAq Lwo+IC0JcmV0ID0gaTkxNV9nZW1fb2JqZWN0X2dndHRfcGluKG9iaiwgdmlldywgYWxpZ25tZW50 LAo+ICsJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X2dndHRfcGluKG9iaiwgdmlldywgMCwgYWxpZ25t ZW50LAo+ICAJCQkJICAgICAgIHZpZXctPnR5cGUgPT0gSTkxNV9HR1RUX1ZJRVdfTk9STUFMID8K PiAgCQkJCSAgICAgICBQSU5fTUFQUEFCTEUgOiAwKTsKPiAgCWlmIChyZXQpCj4gQEAgLTQwNDMs MTIgKzQwMzQsMTcgQEAgaTkxNV9nZW1fcmluZ190aHJvdHRsZShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCj4gIH0KPiAgCj4gIHN0YXRpYyBib29sCj4gLWk5 MTVfdm1hX21pc3BsYWNlZChzdHJ1Y3QgaTkxNV92bWEgKnZtYSwgdWludDMyX3QgYWxpZ25tZW50 LCB1aW50NjRfdCBmbGFncykKPiAraTkxNV92bWFfbWlzcGxhY2VkKHN0cnVjdCBpOTE1X3ZtYSAq dm1hLAo+ICsJCSAgIHVpbnQ2NF90IHNpemUsCj4gKwkJICAgdWludDMyX3QgYWxpZ25tZW50LAo+ ICsJCSAgIHVpbnQ2NF90IGZsYWdzKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqID0gdm1hLT5vYmo7Cj4gIAo+IC0JaWYgKGFsaWdubWVudCAmJgo+IC0JICAgIHZtYS0+ bm9kZS5zdGFydCAmIChhbGlnbm1lbnQgLSAxKSkKPiArCWlmICh2bWEtPm5vZGUuc2l6ZSA8IHNp emUpCj4gKwkJcmV0dXJuIHRydWU7Cj4gKwo+ICsJaWYgKGFsaWdubWVudCAmJiB2bWEtPm5vZGUu c3RhcnQgJiAoYWxpZ25tZW50IC0gMSkpCj4gIAkJcmV0dXJuIHRydWU7Cj4gIAo+ICAJaWYgKGZs YWdzICYgUElOX01BUFBBQkxFICYmICFvYmotPm1hcF9hbmRfZmVuY2VhYmxlKQo+IEBAIC00MDg4 LDYgKzQwODQsNyBAQCBzdGF0aWMgaW50Cj4gIGk5MTVfZ2VtX29iamVjdF9kb19waW4oc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgCQkgICAgICAgc3RydWN0IGk5MTVfYWRkcmVz c19zcGFjZSAqdm0sCj4gIAkJICAgICAgIGNvbnN0IHN0cnVjdCBpOTE1X2dndHRfdmlldyAqZ2d0 dF92aWV3LAo+ICsJCSAgICAgICB1aW50NjRfdCBzaXplLAo+ICAJCSAgICAgICB1aW50MzJfdCBh bGlnbm1lbnQsCj4gIAkJICAgICAgIHVpbnQ2NF90IGZsYWdzKQo+ICB7Cj4gQEAgLTQxMTgsNyAr NDExNSw3IEBAIGk5MTVfZ2VtX29iamVjdF9kb19waW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaiwKPiAgCQlpZiAoV0FSTl9PTih2bWEtPnBpbl9jb3VudCA9PSBEUk1fSTkxNV9HRU1f T0JKRUNUX01BWF9QSU5fQ09VTlQpKQo+ICAJCQlyZXR1cm4gLUVCVVNZOwo+ICAKPiAtCQlpZiAo aTkxNV92bWFfbWlzcGxhY2VkKHZtYSwgYWxpZ25tZW50LCBmbGFncykpIHsKPiArCQlpZiAoaTkx NV92bWFfbWlzcGxhY2VkKHZtYSwgc2l6ZSwgYWxpZ25tZW50LCBmbGFncykpIHsKPiAgCQkJV0FS Tih2bWEtPnBpbl9jb3VudCwKPiAgCQkJICAgICAiYm8gaXMgYWxyZWFkeSBwaW5uZWQgaW4gJXMg d2l0aCBpbmNvcnJlY3QgYWxpZ25tZW50OiIKPiAgCQkJICAgICAiIG9mZnNldD0lMDh4ICUwOHgs IHJlcS5hbGlnbm1lbnQ9JXgsIHJlcS5tYXBfYW5kX2ZlbmNlYWJsZT0lZCwiCj4gQEAgLTQxMzks OCArNDEzNiw4IEBAIGk5MTVfZ2VtX29iamVjdF9kb19waW4oc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaiwKPiAgCj4gIAlib3VuZCA9IHZtYSA/IHZtYS0+Ym91bmQgOiAwOwo+ICAJaWYg KHZtYSA9PSBOVUxMIHx8ICFkcm1fbW1fbm9kZV9hbGxvY2F0ZWQoJnZtYS0+bm9kZSkpIHsKPiAt CQl2bWEgPSBpOTE1X2dlbV9vYmplY3RfYmluZF90b192bShvYmosIHZtLCBnZ3R0X3ZpZXcsIGFs aWdubWVudCwKPiAtCQkJCQkJIGZsYWdzKTsKPiArCQl2bWEgPSBpOTE1X2dlbV9vYmplY3RfYmlu ZF90b192bShvYmosIHZtLCBnZ3R0X3ZpZXcsCj4gKwkJCQkJCSBzaXplLCBhbGlnbm1lbnQsIGZs YWdzKTsKPiAgCQlpZiAoSVNfRVJSKHZtYSkpCj4gIAkJCXJldHVybiBQVFJfRVJSKHZtYSk7Cj4g IAl9IGVsc2Ugewo+IEBAIC00MTYyLDE3ICs0MTU5LDE5IEBAIGk5MTVfZ2VtX29iamVjdF9kb19w aW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgaW50Cj4gIGk5MTVfZ2VtX29i amVjdF9waW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgCQkgICAgc3RydWN0 IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4gKwkJICAgIHVpbnQ2NF90IHNpemUsCj4gIAkJICAg IHVpbnQzMl90IGFsaWdubWVudCwKPiAgCQkgICAgdWludDY0X3QgZmxhZ3MpCj4gIHsKPiAgCXJl dHVybiBpOTE1X2dlbV9vYmplY3RfZG9fcGluKG9iaiwgdm0sCj4gIAkJCQkgICAgICBpOTE1X2lz X2dndHQodm0pID8gJmk5MTVfZ2d0dF92aWV3X25vcm1hbCA6IE5VTEwsCj4gLQkJCQkgICAgICBh bGlnbm1lbnQsIGZsYWdzKTsKPiArCQkJCSAgICAgIHNpemUsIGFsaWdubWVudCwgZmxhZ3MpOwo+ ICB9Cj4gIAo+ICBpbnQKPiAgaTkxNV9nZW1fb2JqZWN0X2dndHRfcGluKHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmosCj4gIAkJCSBjb25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZp ZXcsCj4gKwkJCSB1aW50NjRfdCBzaXplLAo+ICAJCQkgdWludDMyX3QgYWxpZ25tZW50LAo+ICAJ CQkgdWludDY0X3QgZmxhZ3MpCj4gIHsKPiBAQCAtNDE4MCw3ICs0MTc5LDcgQEAgaTkxNV9nZW1f b2JqZWN0X2dndHRfcGluKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gIAkJcmV0 dXJuIC1FSU5WQUw7Cj4gIAo+ICAJcmV0dXJuIGk5MTVfZ2VtX29iamVjdF9kb19waW4ob2JqLCBp OTE1X29ial90b19nZ3R0KG9iaiksIHZpZXcsCj4gLQkJCQkgICAgICBhbGlnbm1lbnQsIGZsYWdz IHwgUElOX0dMT0JBTCk7Cj4gKwkJCQkgICAgICBzaXplLCBhbGlnbm1lbnQsIGZsYWdzIHwgUElO X0dMT0JBTCk7Cj4gIH0KPiAgCj4gIHZvaWQKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fZXhlY2J1ZmZlci5jCj4gaW5kZXggMDQ1YTc2MzFmYWEwLi5iNmJjMjJkNDk2MjggMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4gQEAgLTYwNSwx MCArNjA1LDE0IEBAIGk5MTVfZ2VtX2V4ZWNidWZmZXJfcmVzZXJ2ZV92bWEoc3RydWN0IGk5MTVf dm1hICp2bWEsCj4gIAkJCWZsYWdzIHw9IFBJTl9ISUdIOwo+ICAJfQo+ICAKPiAtCXJldCA9IGk5 MTVfZ2VtX29iamVjdF9waW4ob2JqLCB2bWEtPnZtLCBlbnRyeS0+YWxpZ25tZW50LCBmbGFncyk7 Cj4gKwlyZXQgPSBpOTE1X2dlbV9vYmplY3RfcGluKG9iaiwgdm1hLT52bSwKPiArCQkJCSAgZW50 cnktPnJzdmQxLCAvKiBwYWRfdG9fc2l6ZSAqLwo+ICsJCQkJICBlbnRyeS0+YWxpZ25tZW50LAo+ ICsJCQkJICBmbGFncyk7Cj4gIAlpZiAoKHJldCA9PSAtRU5PU1BDICB8fCByZXQgPT0gLUUyQklH KSAmJgo+ICAJICAgIG9ubHlfbWFwcGFibGVfZm9yX3JlbG9jKGVudHJ5LT5mbGFncykpCj4gIAkJ cmV0ID0gaTkxNV9nZW1fb2JqZWN0X3BpbihvYmosIHZtYS0+dm0sCj4gKwkJCQkJICBlbnRyeS0+ cnN2ZDEsIC8qIHBhZF90b19zaXplICovCj4gIAkJCQkJICBlbnRyeS0+YWxpZ25tZW50LAo+ICAJ CQkJCSAgZmxhZ3MgJiB+UElOX01BUFBBQkxFKTsKPiAgCWlmIChyZXQpCj4gQEAgLTY3Miw2ICs2 NzYsOSBAQCBlYl92bWFfbWlzcGxhY2VkKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICAJICAgIHZt YS0+bm9kZS5zdGFydCAmIChlbnRyeS0+YWxpZ25tZW50IC0gMSkpCj4gIAkJcmV0dXJuIHRydWU7 Cj4gIAo+ICsJaWYgKHZtYS0+bm9kZS5zaXplIDwgZW50cnktPnJzdmQxKSAvKiBwYWRfdG9fc2l6 ZSAqLwo+ICsJCXJldHVybiB0cnVlOwo+ICsKPiAgCWlmIChlbnRyeS0+ZmxhZ3MgJiBfX0VYRUNf T0JKRUNUX05FRURTX0JJQVMgJiYKPiAgCSAgICB2bWEtPm5vZGUuc3RhcnQgPCBCQVRDSF9PRkZT RVRfQklBUykKPiAgCQlyZXR1cm4gdHJ1ZTsKPiBAQCAtOTg4LDYgKzk5NSwxMyBAQCB2YWxpZGF0 ZV9leGVjX2xpc3Qoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQlpZiAoZXhlY1tpXS5hbGln bm1lbnQgJiYgIWlzX3Bvd2VyX29mXzIoZXhlY1tpXS5hbGlnbm1lbnQpKQo+ICAJCQlyZXR1cm4g LUVJTlZBTDsKPiAgCj4gKwkJLyogcGFkX3RvX3NpemUgd2FzIG9uY2UgYSByZXNlcnZlZCBmaWVs ZCwgc28gc2FuaXRpemUgaXQgKi8KPiArCQlpZiAoZXhlY1tpXS5mbGFncyAmIEVYRUNfT0JKRUNU X1BBRF9UT19TSVpFKSB7Cj4gKwkJCWlmIChvZmZzZXRfaW5fcGFnZShleGVjW2ldLnJzdmQxKSkK PiArCQkJCXJldHVybiAtRUlOVkFMOwo+ICsJCX0gZWxzZQo+ICsJCQlleGVjW2ldLnJzdmQxID0g MDsKPiArCj4gIAkJLyogRmlyc3QgY2hlY2sgZm9yIG1hbGljaW91cyBpbnB1dCBjYXVzaW5nIG92 ZXJmbG93IGluCj4gIAkJICogdGhlIHdvcnN0IGNhc2Ugd2hlcmUgd2UgbmVlZCB0byBhbGxvY2F0 ZSB0aGUgZW50aXJlCj4gIAkJICogcmVsb2NhdGlvbiB0cmVlIGFzIGEgc2luZ2xlIGFycmF5Lgo+ IGRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmggYi9pbmNsdWRlL3VhcGkv ZHJtL2k5MTVfZHJtLmgKPiBpbmRleCAwOGUwNDdjYmE3NmEuLjY3OGY3ZDUzMjBhZSAxMDA2NDQK PiAtLS0gYS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKPiArKysgYi9pbmNsdWRlL3VhcGkv ZHJtL2k5MTVfZHJtLmgKPiBAQCAtNjkxLDEwICs2OTEsMTEgQEAgc3RydWN0IGRybV9pOTE1X2dl bV9leGVjX29iamVjdDIgewo+ICAjZGVmaW5lIEVYRUNfT0JKRUNUX05FRURTX0dUVAkoMTw8MSkK PiAgI2RlZmluZSBFWEVDX09CSkVDVF9XUklURQkoMTw8MikKPiAgI2RlZmluZSBFWEVDX09CSkVD VF9TVVBQT1JUU180OEJfQUREUkVTUyAoMTw8MykKPiAtI2RlZmluZSBfX0VYRUNfT0JKRUNUX1VO S05PV05fRkxBR1MgLShFWEVDX09CSkVDVF9TVVBQT1JUU180OEJfQUREUkVTUzw8MSkKPiArI2Rl ZmluZSBFWEVDX09CSkVDVF9QQURfVE9fU0laRQkoMTw8NCkKPiArI2RlZmluZSBfX0VYRUNfT0JK RUNUX1VOS05PV05fRkxBR1MgLShFWEVDX09CSkVDVF9QQURfVE9fU0laRTw8MSkKPiAgCV9fdTY0 IGZsYWdzOwo+ICAKPiAtCV9fdTY0IHJzdmQxOwo+ICsJX191NjQgcnN2ZDE7IC8qIHBhZF90b19z aXplICovCj4gIAlfX3U2NCByc3ZkMjsKPiAgfTsKPiAgCj4gLS0gCj4gMi42LjEKPiAKPiBfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBt YWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cDovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAoKLS0gCkRhbmll bCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9n LmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==