From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 10/38] drm/i915: Remove highly confusing i915_gem_obj_ggtt_pin() Date: Wed, 8 Jun 2016 11:43:57 +0200 Message-ID: <20160608094357.GU3363@phenom.ffwll.local> References: <1464972953-2726-1-git-send-email-chris@chris-wilson.co.uk> <1464972953-2726-11-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-wm0-x242.google.com (mail-wm0-x242.google.com [IPv6:2a00:1450:400c:c09::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id 41DEB6E0F1 for ; Wed, 8 Jun 2016 09:44:02 +0000 (UTC) Received: by mail-wm0-x242.google.com with SMTP id m124so1498500wme.3 for ; Wed, 08 Jun 2016 02:44:02 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1464972953-2726-11-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 T24gRnJpLCBKdW4gMDMsIDIwMTYgYXQgMDU6NTU6MjVQTSArMDEwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IFNpbmNlIGk5MTVfZ2VtX29ial9nZ3R0X3BpbigpIGlzIGFuIGlkaW9tIGJyZWFraW5n IGN1cnJ5IGZ1bmN0aW9uIGZvcgo+IGk5MTVfZ2VtX29iamVjdF9nZ3R0X3BpbigpLCBzcGFyZSB1 cyB0aGUgY29uZnVzdGlvbiBhbmQgcmVtb3ZlIGl0Lgo+IFJlbW92aW5nIGl0IG5vdyBzaW1wbGlm aWVzIGxhdGVyIHBhdGNoZXMgdG8gY2hhbmdlIHRoZSBpOTE1X3ZtYV9waW4oKQo+IChhbmQgZnJp ZW5kcykgaW50ZXJmYWNlLgo+IAo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNA Y2hyaXMtd2lsc29uLmNvLnVrPgoKRGlmZiBsb29rcyBsaWtlIGFjY2lkZW50YWxseSBzcXVhc2hl ZCBpbiBzcGVlZC11cCB0byBoZWxwIGdjYyBhbG9uZyB3aXRoCmJpdGZpZWxkcyBpbiB2bWEuIE5l ZWRzIHRvIGJlIHVuc3F1YXNoZWQuCi1EYW5pZWwKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaCAgICAgICAgICAgICAgfCAzNSArKysrKysrKy0tLS0tLS0tLS0tLS0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICAgICAgfCA0NiArKysrKysr KysrKysrLS0tLS0tLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29u dGV4dC5jICAgICAgfCAgNSArKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhl Y2J1ZmZlci5jICAgfCAxMCArKystLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Z3R0LmggICAgICAgICAgfCA0NyArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlbmRlcl9zdGF0ZS5jIHwgIDIgKy0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jICAgfCAgNCArLS0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jICAgICAgfCAgMiArLQo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgICAgICB8ICA4ICsrKy0tCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXkuYyAgICAgICAgIHwgIDMgKy0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jICAgICAgfCAxNiArKysrKy0tLS0tCj4g IDExIGZpbGVzIGNoYW5nZWQsIDg5IGluc2VydGlvbnMoKyksIDg5IGRlbGV0aW9ucygtKQo+IAo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IGY1MzdkOGZjNWUwZi4uODYxZDEzMmIyZmU0 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTI5MzQsMzIgKzI5MzQsMzIgQEAg dm9pZCBpOTE1X2dlbV9mcmVlX29iamVjdChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7Cj4g IGludCBfX211c3RfY2hlY2sKPiAgaTkxNV92bWFfcGluKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLCB1 NjQgc2l6ZSwgdTY0IGFsaWdubWVudCwgdTY0IGZsYWdzKTsKPiAgLyogRmxhZ3MgdXNlZCBieSBw aW4vYmluZCZmcmllbmRzLiAqLwo+IC0jZGVmaW5lIFBJTl9NQVBQQUJMRQkoMTw8MCkKPiAtI2Rl ZmluZSBQSU5fTk9OQkxPQ0sJKDE8PDEpCj4gLSNkZWZpbmUgUElOX0dMT0JBTAkoMTw8MikKPiAt I2RlZmluZSBQSU5fT0ZGU0VUX0JJQVMJKDE8PDMpCj4gLSNkZWZpbmUgUElOX1VTRVIJKDE8PDQp Cj4gLSNkZWZpbmUgUElOX1VQREFURQkoMTw8NSkKPiAtI2RlZmluZSBQSU5fWk9ORV80RwkoMTw8 NikKPiAtI2RlZmluZSBQSU5fSElHSAkoMTw8NykKPiAtI2RlZmluZSBQSU5fT0ZGU0VUX0ZJWEVE CSgxPDw4KQo+ICsjZGVmaW5lIFBJTl9HTE9CQUwJKDE8PDApCj4gKyNkZWZpbmUgUElOX1VTRVIJ KDE8PDEpCj4gKyNkZWZpbmUgUElOX1VQREFURQkoMTw8MikKPiArI2RlZmluZSBQSU5fTUFQUEFC TEUJKDE8PDMpCj4gKyNkZWZpbmUgUElOX1pPTkVfNEcJKDE8PDQpCj4gKyNkZWZpbmUgUElOX05P TkJMT0NLCSgxPDw1KQo+ICsjZGVmaW5lIFBJTl9ISUdICSgxPDw2KQo+ICsjZGVmaW5lIFBJTl9P RkZTRVRfQklBUwkoMTw8NykKPiArI2RlZmluZSBQSU5fT0ZGU0VUX0ZJWEVEICgxPDw4KQo+ICAj ZGVmaW5lIFBJTl9PRkZTRVRfTUFTSyAofjQwOTUpCj4gIAo+ICBzdGF0aWMgaW5saW5lIHZvaWQg X19pOTE1X3ZtYV9waW4oc3RydWN0IGk5MTVfdm1hICp2bWEpCj4gIHsKPiAgCUdFTV9CVUdfT04o dm1hLT5waW5fY291bnQgPT0gRFJNX0k5MTVfR0VNX09CSkVDVF9NQVhfUElOX0NPVU5UKTsKPiAt CXZtYS0+cGluX2NvdW50Kys7Cj4gKwl2bWEtPmZsYWdzKys7Cj4gIH0KPiAgCj4gIHN0YXRpYyBp bmxpbmUgYm9vbCBpOTE1X3ZtYV9pc19waW5uZWQoc3RydWN0IGk5MTVfdm1hICp2bWEpCj4gIHsK PiAtCXJldHVybiB2bWEtPnBpbl9jb3VudDsKPiArCXJldHVybiB2bWEtPmZsYWdzICYgRFJNX0k5 MTVfR0VNX09CSkVDVF9NQVhfUElOX0NPVU5UOwo+ICB9Cj4gIAo+ICBzdGF0aWMgaW5saW5lIHZv aWQgX19pOTE1X3ZtYV91bnBpbihzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKPiAgewo+ICAJR0VNX0JV R19PTighaTkxNV92bWFfaXNfcGlubmVkKHZtYSkpOwo+IC0Jdm1hLT5waW5fY291bnQtLTsKPiAr CXZtYS0+ZmxhZ3MtLTsKPiAgfQo+ICAKPiAgc3RhdGljIGlubGluZSB2b2lkIGk5MTVfdm1hX3Vu cGluKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+IEBAIC0yOTcyLDcgKzI5NzIsNyBAQCBpbnQgX19t dXN0X2NoZWNrCj4gIGk5MTVfZ2VtX29iamVjdF9nZ3R0X3BpbihzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqLAo+ICAJCQkgY29uc3Qgc3RydWN0IGk5MTVfZ2d0dF92aWV3ICp2aWV3LAo+ ICAJCQkgdWludDY0X3Qgc2l6ZSwKPiAtCQkJIHVpbnQzMl90IGFsaWdubWVudCwKPiArCQkJIHVp bnQ2NF90IGFsaWdubWVudCwKPiAgCQkJIHVpbnQ2NF90IGZsYWdzKTsKPiAgCj4gIGludCBpOTE1 X3ZtYV9iaW5kKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLCBlbnVtIGk5MTVfY2FjaGVfbGV2ZWwgY2Fj aGVfbGV2ZWwsCj4gQEAgLTMyMjMsMTUgKzMyMjMsNiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaTkx NV9nZW1fb2JqX2dndHRfYm91bmQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiAg dW5zaWduZWQgbG9uZwo+ICBpOTE1X2dlbV9vYmpfZ2d0dF9zaXplKHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmopOwo+ICAKPiAtc3RhdGljIGlubGluZSBpbnQgX19tdXN0X2NoZWNrCj4g LWk5MTVfZ2VtX29ial9nZ3R0X3BpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ IC0JCSAgICAgIHVpbnQzMl90IGFsaWdubWVudCwKPiAtCQkgICAgICB1bnNpZ25lZCBmbGFncykK PiAtewo+IC0JcmV0dXJuIGk5MTVfZ2VtX29iamVjdF9nZ3R0X3BpbihvYmosICZpOTE1X2dndHRf dmlld19ub3JtYWwsCj4gLQkJCQkJMCwgYWxpZ25tZW50LCBmbGFncyk7Cj4gLX0KPiAtCj4gIHZv aWQgaTkxNV9nZW1fb2JqZWN0X2dndHRfdW5waW5fdmlldyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqLAo+ICAJCQkJICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZpZXcp Owo+ICBzdGF0aWMgaW5saW5lIHZvaWQKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBpbmRleCA3 MWEzMmE5Zjk4NTguLjUzNzc2YTA3MWNlNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ IEBAIC03NzIsNyArNzcyLDkgQEAgaTkxNV9nZW1fZ3R0X3B3cml0ZV9mYXN0KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCj4gIAljaGFyIF9fdXNlciAqdXNlcl9kYXRhOwo+ICAJaW50IHBhZ2Vfb2Zm c2V0LCBwYWdlX2xlbmd0aCwgcmV0Owo+ICAKPiAtCXJldCA9IGk5MTVfZ2VtX29ial9nZ3R0X3Bp bihvYmosIDAsIFBJTl9NQVBQQUJMRSB8IFBJTl9OT05CTE9DSyk7Cj4gKwlyZXQgPSBpOTE1X2dl bV9vYmplY3RfZ2d0dF9waW4ob2JqLCBOVUxMLAo+ICsJCQkJICAgICAgIDAsIDAsCj4gKwkJCQkg ICAgICAgUElOX01BUFBBQkxFIHwgUElOX05PTkJMT0NLKTsKPiAgCWlmIChyZXQpCj4gIAkJZ290 byBvdXQ7Cj4gIAo+IEBAIC0zNDA4LDMyICszNDEwLDM1IEBAIHZvaWQgX19pOTE1X3ZtYV9zZXRf bWFwX2FuZF9mZW5jZWFibGUoc3RydWN0IGk5MTVfdm1hICp2bWEpCj4gIGludAo+ICBpOTE1X3Zt YV9waW4oc3RydWN0IGk5MTVfdm1hICp2bWEsIHU2NCBzaXplLCB1NjQgYWxpZ25tZW50LCB1NjQg ZmxhZ3MpCj4gIHsKPiAtCXVuc2lnbmVkIGJvdW5kID0gdm1hLT5ib3VuZDsKPiArCXVuc2lnbmVk IGJvdW5kOwo+ICAJaW50IHJldDsKPiAgCj4gIAlHRU1fQlVHX09OKChmbGFncyAmIChQSU5fR0xP QkFMIHwgUElOX1VTRVIpKSA9PSAwKTsKPiAgCUdFTV9CVUdfT04oKGZsYWdzICYgUElOX0dMT0JB TCkgJiYgIXZtYS0+aXNfZ2d0dCk7Cj4gIAo+IC0JaWYgKFdBUk5fT04odm1hLT5waW5fY291bnQg PT0gRFJNX0k5MTVfR0VNX09CSkVDVF9NQVhfUElOX0NPVU5UKSkKPiAtCQlyZXR1cm4gLUVCVVNZ Owo+IC0KPiAgCS8qIFBpbiBlYXJseSB0byBwcmV2ZW50IHRoZSBzaHJpbmtlci9ldmljdGlvbiBs b2dpYyBmcm9tIGRlc3Ryb3lpbmcKPiAgCSAqIG91ciB2bWEgYXMgd2UgaW5zZXJ0IGFuZCBiaW5k Lgo+ICAJICovCj4gLQlfX2k5MTVfdm1hX3Bpbih2bWEpOwo+ICsJYm91bmQgPSB2bWEtPmZsYWdz Kys7Cj4gKwlpZiAoV0FSTl9PTigoYm91bmQgJiAweGYpID09IChEUk1fSTkxNV9HRU1fT0JKRUNU X01BWF9QSU5fQ09VTlQtMSkpKSB7Cj4gKwkJcmV0ID0gLUVCVVNZOwo+ICsJCWdvdG8gZXJyOwo+ ICsJfQo+ICAKPiAtCWlmICghYm91bmQpIHsKPiArCWlmICgoYm91bmQgJiAweGZmKSA9PSAwKSB7 Cj4gIAkJcmV0ID0gaTkxNV92bWFfaW5zZXJ0KHZtYSwgc2l6ZSwgYWxpZ25tZW50LCBmbGFncyk7 Cj4gIAkJaWYgKHJldCkKPiAgCQkJZ290byBlcnI7Cj4gIAl9Cj4gIAo+IC0JcmV0ID0gaTkxNV92 bWFfYmluZCh2bWEsIHZtYS0+b2JqLT5jYWNoZV9sZXZlbCwgZmxhZ3MpOwo+IC0JaWYgKHJldCkK PiAtCQlnb3RvIGVycjsKPiArCWlmICh+KGJvdW5kID4+IDQpICYgKGZsYWdzICYgKEdMT0JBTF9C SU5EIHwgTE9DQUxfQklORCkpKSB7Cj4gKwkJcmV0ID0gaTkxNV92bWFfYmluZCh2bWEsIHZtYS0+ b2JqLT5jYWNoZV9sZXZlbCwgZmxhZ3MpOwo+ICsJCWlmIChyZXQpCj4gKwkJCWdvdG8gZXJyOwo+ ICAKPiAtCWlmICgoYm91bmQgXiB2bWEtPmJvdW5kKSAmIEdMT0JBTF9CSU5EKQo+IC0JCV9faTkx NV92bWFfc2V0X21hcF9hbmRfZmVuY2VhYmxlKHZtYSk7Cj4gKwkJaWYgKChib3VuZCBeIHZtYS0+ ZmxhZ3MpICYgKEdMT0JBTF9CSU5EIDw8IDQpKQo+ICsJCQlfX2k5MTVfdm1hX3NldF9tYXBfYW5k X2ZlbmNlYWJsZSh2bWEpOwo+ICsJfQo+ICAKPiAgCUdFTV9CVUdfT04oaTkxNV92bWFfbWlzcGxh Y2VkKHZtYSwgc2l6ZSwgYWxpZ25tZW50LCBmbGFncykpOwo+ICAJcmV0dXJuIDA7Cj4gQEAgLTM0 NDcsMTMgKzM0NTIsMTQgQEAgaW50Cj4gIGk5MTVfZ2VtX29iamVjdF9nZ3R0X3BpbihzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAJCQkgY29uc3Qgc3RydWN0IGk5MTVfZ2d0dF92 aWV3ICp2aWV3LAo+ICAJCQkgdWludDY0X3Qgc2l6ZSwKPiAtCQkJIHVpbnQzMl90IGFsaWdubWVu dCwKPiArCQkJIHVpbnQ2NF90IGFsaWdubWVudCwKPiAgCQkJIHVpbnQ2NF90IGZsYWdzKQo+ICB7 Cj4gIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiAgCWludCByZXQ7Cj4gIAo+IC0JQlVHX09OKCF2 aWV3KTsKPiArCWlmICh2aWV3ID09IE5VTEwpCj4gKwkJdmlldyA9ICZpOTE1X2dndHRfdmlld19u b3JtYWw7Cj4gIAo+ICAJdm1hID0gaTkxNV9nZW1fb2JqX2xvb2t1cF9vcl9jcmVhdGVfZ2d0dF92 bWEob2JqLCB2aWV3KTsKPiAgCWlmIChJU19FUlIodm1hKSkKPiBAQCAtMzQ2NSwxMSArMzQ3MSwx MSBAQCBpOTE1X2dlbV9vYmplY3RfZ2d0dF9waW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaiwKPiAgCj4gIAkJV0FSTih2bWEtPnBpbl9jb3VudCwKPiAgCQkgICAgICJibyBpcyBhbHJl YWR5IHBpbm5lZCBpbiBnZ3R0IHdpdGggaW5jb3JyZWN0IGFsaWdubWVudDoiCj4gLQkJICAgICAi IG9mZnNldD0lMDh4ICUwOHgsIHJlcS5hbGlnbm1lbnQ9JXgsIHJlcS5tYXBfYW5kX2ZlbmNlYWJs ZT0lZCwiCj4gKwkJICAgICAiIG9mZnNldD0lMDh4ICUwOHgsIHJlcS5hbGlnbm1lbnQ9JWxseCwg cmVxLm1hcF9hbmRfZmVuY2VhYmxlPSVkLCIKPiAgCQkgICAgICIgb2JqLT5tYXBfYW5kX2ZlbmNl YWJsZT0lZFxuIiwKPiAgCQkgICAgIHVwcGVyXzMyX2JpdHModm1hLT5ub2RlLnN0YXJ0KSwKPiAg CQkgICAgIGxvd2VyXzMyX2JpdHModm1hLT5ub2RlLnN0YXJ0KSwKPiAtCQkgICAgIGFsaWdubWVu dCwKPiArCQkgICAgIChsb25nIGxvbmcpYWxpZ25tZW50LAo+ICAJCSAgICAgISEoZmxhZ3MgJiBQ SU5fTUFQUEFCTEUpLAo+ICAJCSAgICAgb2JqLT5tYXBfYW5kX2ZlbmNlYWJsZSk7Cj4gIAkJcmV0 ID0gaTkxNV92bWFfdW5iaW5kKHZtYSk7Cj4gQEAgLTM0ODQsMTMgKzM0OTAsNyBAQCB2b2lkCj4g IGk5MTVfZ2VtX29iamVjdF9nZ3R0X3VucGluX3ZpZXcoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaiwKPiAgCQkJCWNvbnN0IHN0cnVjdCBpOTE1X2dndHRfdmlldyAqdmlldykKPiAgewo+ IC0Jc3RydWN0IGk5MTVfdm1hICp2bWEgPSBpOTE1X2dlbV9vYmpfdG9fZ2d0dF92aWV3KG9iaiwg dmlldyk7Cj4gLQo+IC0JR0VNX0JVR19PTighdm1hKTsKPiAtCVdBUk5fT04oaTkxNV92bWFfaXNf cGlubmVkKHZtYSkpOwo+IC0JV0FSTl9PTighaTkxNV9nZW1fb2JqX2dndHRfYm91bmRfdmlldyhv YmosIHZpZXcpKTsKPiAtCj4gLQlfX2k5MTVfdm1hX3VucGluKHZtYSk7Cj4gKwlpOTE1X3ZtYV91 bnBpbihpOTE1X2dlbV9vYmpfdG9fZ2d0dF92aWV3KG9iaiwgdmlldykpOwo+ICB9Cj4gIAo+ICBp bnQKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4gaW5kZXggNWVkOTE0 MDZkNGU5Li5jOWI4YzJjNjI4MjggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fY29udGV4dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Y29udGV4dC5jCj4gQEAgLTcyMiw5ICs3MjIsOCBAQCBzdGF0aWMgaW50IGRvX3Jjc19zd2l0Y2go c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+ICAJ LyogVHJ5aW5nIHRvIHBpbiBmaXJzdCBtYWtlcyBlcnJvciBoYW5kbGluZyBlYXNpZXIuICovCj4g LQlyZXQgPSBpOTE1X2dlbV9vYmpfZ2d0dF9waW4odG8tPmVuZ2luZVtSQ1NdLnN0YXRlLAo+IC0J CQkJICAgIHRvLT5nZ3R0X2FsaWdubWVudCwKPiAtCQkJCSAgICAwKTsKPiArCXJldCA9IGk5MTVf Z2VtX29iamVjdF9nZ3R0X3Bpbih0by0+ZW5naW5lW1JDU10uc3RhdGUsIE5VTEwsIDAsCj4gKwkJ CQkgICAgICAgdG8tPmdndHRfYWxpZ25tZW50LCAwKTsKPiAgCWlmIChyZXQpCj4gIAkJcmV0dXJu IHJldDsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4 ZWNidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+ IGluZGV4IGNjOWMwZTQwNzNmZi4uNjliZjczYjUxZGY5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+IEBAIC0zNCwxMCArMzQsMTAgQEAKPiAgI2lu Y2x1ZGUgPGxpbnV4L2RtYV9yZW1hcHBpbmcuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L3VhY2Nlc3Mu aD4KPiAgCj4gLSNkZWZpbmUgIF9fRVhFQ19PQkpFQ1RfSEFTX1BJTiAoMTw8MzEpCj4gLSNkZWZp bmUgIF9fRVhFQ19PQkpFQ1RfSEFTX0ZFTkNFICgxPDwzMCkKPiAtI2RlZmluZSAgX19FWEVDX09C SkVDVF9ORUVEU19NQVAgKDE8PDI5KQo+IC0jZGVmaW5lICBfX0VYRUNfT0JKRUNUX05FRURTX0JJ QVMgKDE8PDI4KQo+ICsjZGVmaW5lICBfX0VYRUNfT0JKRUNUX0hBU19QSU4gKDFVPDwzMSkKPiAr I2RlZmluZSAgX19FWEVDX09CSkVDVF9IQVNfRkVOQ0UgKDFVPDwzMCkKPiArI2RlZmluZSAgX19F WEVDX09CSkVDVF9ORUVEU19NQVAgKDFVPDwyOSkKPiArI2RlZmluZSAgX19FWEVDX09CSkVDVF9O RUVEU19CSUFTICgxVTw8MjgpCj4gIAo+ICAjZGVmaW5lIEJBVENIX09GRlNFVF9CSUFTICgyNTYq MTAyNCkKPiAgCj4gQEAgLTEyNjMsNyArMTI2Myw3IEBAIGk5MTVfZ2VtX2V4ZWNidWZmZXJfcGFy c2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICAJaWYgKHJldCkKPiAgCQlnb3Rv IGVycjsKPiAgCj4gLQlyZXQgPSBpOTE1X2dlbV9vYmpfZ2d0dF9waW4oc2hhZG93X2JhdGNoX29i aiwgMCwgMCk7Cj4gKwlyZXQgPSBpOTE1X2dlbV9vYmplY3RfZ2d0dF9waW4oc2hhZG93X2JhdGNo X29iaiwgTlVMTCwgMCwgMCwgMCk7Cj4gIAlpZiAocmV0KQo+ICAJCWdvdG8gZXJyOwo+ICAKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAo+IGluZGV4IDJiZDhlYzdlMTk0OC4uNTY1NTM1 OGE2MGUxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5o Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgKPiBAQCAtMTg0LDEz ICsxODQsMzAgQEAgc3RydWN0IGk5MTVfdm1hIHsKPiAgCj4gIAlzdHJ1Y3QgaTkxNV9nZW1fYWN0 aXZlIGxhc3RfcmVhZFtJOTE1X05VTV9FTkdJTkVTXTsKPiAgCj4gLQkvKiogRmxhZ3MgYW5kIGFk ZHJlc3Mgc3BhY2UgdGhpcyBWTUEgaXMgYm91bmQgdG8gKi8KPiArCXVuaW9uIHsKPiArCQlzdHJ1 Y3Qgewo+ICsJCQkvKioKPiArCQkJICogSG93IG1hbnkgdXNlcnMgaGF2ZSBwaW5uZWQgdGhpcyBv YmplY3QgaW4gR1RUIHNwYWNlLiBUaGUgZm9sbG93aW5nCj4gKwkJCSAqIHVzZXJzIGNhbiBlYWNo IGhvbGQgYXQgbW9zdCBvbmUgcmVmZXJlbmNlOiBwd3JpdGUvcHJlYWQsIGV4ZWNidWZmZXIKPiAr CQkJICogKG9iamVjdHMgYXJlIG5vdCBhbGxvd2VkIG11bHRpcGxlIHRpbWVzIGZvciB0aGUgc2Ft ZSBiYXRjaGJ1ZmZlciksCj4gKwkJCSAqIGFuZCB0aGUgZnJhbWVidWZmZXIgY29kZS4gV2hlbiBz d2l0Y2hpbmcvcGFnZWZsaXBwaW5nLCB0aGUKPiArCQkJICogZnJhbWVidWZmZXIgY29kZSBoYXMg YXQgbW9zdCB0d28gYnVmZmVycyBwaW5uZWQgcGVyIGNydGMuCj4gKwkJCSAqCj4gKwkJCSAqIElu IHRoZSB3b3JzdCBjYXNlIHRoaXMgaXMgMSArIDEgKyAxICsgMioyID0gNy4gVGhhdCB3b3VsZCBm aXQgaW50byAzCj4gKwkJCSAqIGJpdHMgd2l0aCBhYnNvbHV0ZWx5IG5vIGhlYWRyb29tLiBTbyB1 c2UgNCBiaXRzLiAqLwo+ICsJCQl1bnNpZ25lZCBpbnQgcGluX2NvdW50IDogNDsKPiArI2RlZmlu ZSBEUk1fSTkxNV9HRU1fT0JKRUNUX01BWF9QSU5fQ09VTlQgMHhmCj4gKwo+ICsJCQkvKiogRmxh Z3MgYW5kIGFkZHJlc3Mgc3BhY2UgdGhpcyBWTUEgaXMgYm91bmQgdG8gKi8KPiAgI2RlZmluZSBH TE9CQUxfQklORAkoMTw8MCkKPiAgI2RlZmluZSBMT0NBTF9CSU5ECSgxPDwxKQo+IC0JdW5zaWdu ZWQgaW50IGJvdW5kIDogNDsKPiAtCXVuc2lnbmVkIGludCBhY3RpdmUgOiBJOTE1X05VTV9FTkdJ TkVTOwo+IC0JYm9vbCBpc19nZ3R0IDogMTsKPiAtCWJvb2wgY2xvc2VkIDogMTsKPiArCQkJdW5z aWduZWQgaW50IGJvdW5kIDogNDsKPiArCQkJdW5zaWduZWQgaW50IGFjdGl2ZSA6IEk5MTVfTlVN X0VOR0lORVM7Cj4gKwkJCWJvb2wgaXNfZ2d0dCA6IDE7Cj4gKwkJCWJvb2wgY2xvc2VkIDogMTsK PiArCQl9Owo+ICsJCXVuc2lnbmVkIGludCBmbGFnczsKPiArCX07Cj4gIAo+ICAJLyoqCj4gIAkg KiBTdXBwb3J0IGRpZmZlcmVudCBHR1RUIHZpZXdzIGludG8gdGhlIHNhbWUgb2JqZWN0Lgo+IEBA IC0yMTUsMzkgKzIzMiwyNyBAQCBzdHJ1Y3QgaTkxNV92bWEgewo+ICAJc3RydWN0IGhsaXN0X25v ZGUgZXhlY19ub2RlOwo+ICAJdW5zaWduZWQgbG9uZyBleGVjX2hhbmRsZTsKPiAgCXN0cnVjdCBk cm1faTkxNV9nZW1fZXhlY19vYmplY3QyICpleGVjX2VudHJ5Owo+IC0KPiAtCS8qKgo+IC0JICog SG93IG1hbnkgdXNlcnMgaGF2ZSBwaW5uZWQgdGhpcyBvYmplY3QgaW4gR1RUIHNwYWNlLiBUaGUg Zm9sbG93aW5nCj4gLQkgKiB1c2VycyBjYW4gZWFjaCBob2xkIGF0IG1vc3Qgb25lIHJlZmVyZW5j ZTogcHdyaXRlL3ByZWFkLCBleGVjYnVmZmVyCj4gLQkgKiAob2JqZWN0cyBhcmUgbm90IGFsbG93 ZWQgbXVsdGlwbGUgdGltZXMgZm9yIHRoZSBzYW1lIGJhdGNoYnVmZmVyKSwKPiAtCSAqIGFuZCB0 aGUgZnJhbWVidWZmZXIgY29kZS4gV2hlbiBzd2l0Y2hpbmcvcGFnZWZsaXBwaW5nLCB0aGUKPiAt CSAqIGZyYW1lYnVmZmVyIGNvZGUgaGFzIGF0IG1vc3QgdHdvIGJ1ZmZlcnMgcGlubmVkIHBlciBj cnRjLgo+IC0JICoKPiAtCSAqIEluIHRoZSB3b3JzdCBjYXNlIHRoaXMgaXMgMSArIDEgKyAxICsg MioyID0gNy4gVGhhdCB3b3VsZCBmaXQgaW50byAzCj4gLQkgKiBiaXRzIHdpdGggYWJzb2x1dGVs eSBubyBoZWFkcm9vbS4gU28gdXNlIDQgYml0cy4gKi8KPiAtCXVuc2lnbmVkIGludCBwaW5fY291 bnQ6NDsKPiAtI2RlZmluZSBEUk1fSTkxNV9HRU1fT0JKRUNUX01BWF9QSU5fQ09VTlQgMHhmCj4g IH07Cj4gIAo+ICBzdGF0aWMgaW5saW5lIGJvb2wgaTkxNV92bWFfaXNfYWN0aXZlKGNvbnN0IHN0 cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICB7Cj4gLQlyZXR1cm4gdm1hLT5hY3RpdmU7Cj4gKwlyZXR1 cm4gdm1hLT5mbGFncyAmICgoKDEgPDwgSTkxNV9OVU1fRU5HSU5FUykgLSAxKSA8PCA4KTsKPiAg fQo+ICAKPiAgc3RhdGljIGlubGluZSB2b2lkIGk5MTVfdm1hX3NldF9hY3RpdmUoc3RydWN0IGk5 MTVfdm1hICp2bWEsIHVuc2lnbmVkIGVuZ2luZSkKPiAgewo+IC0Jdm1hLT5hY3RpdmUgfD0gMSA8 PCBlbmdpbmU7Cj4gKwl2bWEtPmZsYWdzIHw9IDB4MTAwIDw8IGVuZ2luZTsKPiAgfQo+ICAKPiAg c3RhdGljIGlubGluZSB2b2lkIGk5MTVfdm1hX3Vuc2V0X2FjdGl2ZShzdHJ1Y3QgaTkxNV92bWEg KnZtYSwgdW5zaWduZWQgZW5naW5lKQo+ICB7Cj4gLQl2bWEtPmFjdGl2ZSAmPSB+KDEgPDwgZW5n aW5lKTsKPiArCXZtYS0+ZmxhZ3MgJj0gfigweDEwMCA8PCBlbmdpbmUpOwo+ICB9Cj4gIAo+ICBz dGF0aWMgaW5saW5lIGJvb2wgaTkxNV92bWFfaGFzX2FjdGl2ZV9lbmdpbmUoY29uc3Qgc3RydWN0 IGk5MTVfdm1hICp2bWEsCj4gIAkJCQkJICAgICAgdW5zaWduZWQgZW5naW5lKQo+ICB7Cj4gLQly ZXR1cm4gdm1hLT5hY3RpdmUgJiAoMSA8PCBlbmdpbmUpOwo+ICsJcmV0dXJuIHZtYS0+ZmxhZ3Mg JiAoMHgxMDAgPDwgZW5naW5lKTsKPiAgfQo+ICAKPiAgc3RydWN0IGk5MTVfcGFnZV9kbWEgewo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZW5kZXJfc3RhdGUu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlbmRlcl9zdGF0ZS5jCj4gaW5kZXgg YzBhYmU5YTIyMTBmLi40Y2Y4MjY5N2IzZGIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fcmVuZGVyX3N0YXRlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9yZW5kZXJfc3RhdGUuYwo+IEBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyBpbnQg cmVuZGVyX3N0YXRlX2luaXQoc3RydWN0IHJlbmRlcl9zdGF0ZSAqc28sCj4gIAlpZiAoSVNfRVJS KHNvLT5vYmopKQo+ICAJCXJldHVybiBQVFJfRVJSKHNvLT5vYmopOwo+ICAKPiAtCXJldCA9IGk5 MTVfZ2VtX29ial9nZ3R0X3Bpbihzby0+b2JqLCA0MDk2LCAwKTsKPiArCXJldCA9IGk5MTVfZ2Vt X29iamVjdF9nZ3R0X3Bpbihzby0+b2JqLCBOVUxMLCAwLCAwLCAwKTsKPiAgCWlmIChyZXQpCj4g IAkJZ290byBmcmVlX2dlbTsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1 Ym1pc3Npb24uYwo+IGluZGV4IGNjNDc5MmRmMjQ5ZC4uNjNlZjM0Yzc4NDk0IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwo+IEBAIC02MTMsOCArNjEz LDggQEAgc3RhdGljIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpnZW1fYWxsb2NhdGVfZ3Vj X29iaihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCXJldHVybiBOVUxMOwo+ICAJfQo+ICAK PiAtCWlmIChpOTE1X2dlbV9vYmpfZ2d0dF9waW4ob2JqLCBQQUdFX1NJWkUsCj4gLQkJCVBJTl9P RkZTRVRfQklBUyB8IEdVQ19XT1BDTV9UT1ApKSB7Cj4gKwlpZiAoaTkxNV9nZW1fb2JqZWN0X2dn dHRfcGluKG9iaiwgTlVMTCwgMCwgUEFHRV9TSVpFLAo+ICsJCQkJICAgICBQSU5fT0ZGU0VUX0JJ QVMgfCBHVUNfV09QQ01fVE9QKSkgewo+ICAJCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKPiAg CQlyZXR1cm4gTlVMTDsKPiAgCX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZ3VjX2xvYWRlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRl ci5jCj4gaW5kZXggNzRhNWYxMWE1Njg5Li5iZTkzYjQ1ODk2OGEgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCj4gQEAgLTMyMSw3ICszMjEsNyBAQCBzdGF0aWMg aW50IGd1Y191Y29kZV94ZmVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAg CQlyZXR1cm4gcmV0Owo+ICAJfQo+ICAKPiAtCXJldCA9IGk5MTVfZ2VtX29ial9nZ3R0X3Bpbihn dWNfZnctPmd1Y19md19vYmosIDAsIDApOwo+ICsJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X2dndHRf cGluKGd1Y19mdy0+Z3VjX2Z3X29iaiwgTlVMTCwgMCwgMCwgMCk7Cj4gIAlpZiAocmV0KSB7Cj4g IAkJRFJNX0RFQlVHX0RSSVZFUigicGluIGZhaWxlZCAlZFxuIiwgcmV0KTsKPiAgCQlyZXR1cm4g cmV0Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gaW5kZXggOTY0MTA4Y2JiOWMwLi42Y2Rj NDIxZmRjMzcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+IEBAIC03NzQsOCArNzc0 LDkgQEAgc3RhdGljIGludCBpbnRlbF9scl9jb250ZXh0X3BpbihzdHJ1Y3QgaTkxNV9nZW1fY29u dGV4dCAqY3R4LAo+ICAJaWYgKGNlLT5waW5fY291bnQrKykKPiAgCQlyZXR1cm4gMDsKPiAgCj4g LQlyZXQgPSBpOTE1X2dlbV9vYmpfZ2d0dF9waW4oY2UtPnN0YXRlLCBHRU44X0xSX0NPTlRFWFRf QUxJR04sCj4gLQkJCQkgICAgUElOX09GRlNFVF9CSUFTIHwgR1VDX1dPUENNX1RPUCk7Cj4gKwly ZXQgPSBpOTE1X2dlbV9vYmplY3RfZ2d0dF9waW4oY2UtPnN0YXRlLCBOVUxMLAo+ICsJCQkJICAg ICAgIDAsIEdFTjhfTFJfQ09OVEVYVF9BTElHTiwKPiArCQkJCSAgICAgICBQSU5fT0ZGU0VUX0JJ QVMgfCBHVUNfV09QQ01fVE9QKTsKPiAgCWlmIChyZXQpCj4gIAkJZ290byBlcnI7Cj4gIAo+IEBA IC0xMTU0LDcgKzExNTUsOCBAQCBzdGF0aWMgaW50IGxyY19zZXR1cF93YV9jdHhfb2JqKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTMyIHNpemUpCj4gIAkJcmV0dXJuIHJldDsKPiAg CX0KPiAgCj4gLQlyZXQgPSBpOTE1X2dlbV9vYmpfZ2d0dF9waW4oZW5naW5lLT53YV9jdHgub2Jq LCBQQUdFX1NJWkUsIDApOwo+ICsJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X2dndHRfcGluKGVuZ2lu ZS0+d2FfY3R4Lm9iaiwgTlVMTCwKPiArCQkJCSAgICAgICAwLCBQQUdFX1NJWkUsIDApOwo+ICAJ aWYgKHJldCkgewo+ICAJCURSTV9ERUJVR19EUklWRVIoInBpbiBMUkMgV0EgY3R4IGJhY2tpbmcg b2JqIGZhaWxlZDogJWRcbiIsCj4gIAkJCQkgcmV0KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf b3ZlcmxheS5jCj4gaW5kZXggNWY2NDVhZDJiYWJkLi45YjBmYjdlMjNjYmIgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5jCj4gQEAgLTE0MTIsNyArMTQxMiw4IEBAIHZvaWQg aW50ZWxfc2V0dXBfb3ZlcmxheShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g IAkJfQo+ICAJCW92ZXJsYXktPmZsaXBfYWRkciA9IHJlZ19iby0+cGh5c19oYW5kbGUtPmJ1c2Fk ZHI7Cj4gIAl9IGVsc2Ugewo+IC0JCXJldCA9IGk5MTVfZ2VtX29ial9nZ3R0X3BpbihyZWdfYm8s IFBBR0VfU0laRSwgUElOX01BUFBBQkxFKTsKPiArCQlyZXQgPSBpOTE1X2dlbV9vYmplY3RfZ2d0 dF9waW4ocmVnX2JvLCBOVUxMLAo+ICsJCQkJCSAgICAgICAwLCBQQUdFX1NJWkUsIFBJTl9NQVBQ QUJMRSk7Cj4gIAkJaWYgKHJldCkgewo+ICAJCQlEUk1fRVJST1IoImZhaWxlZCB0byBwaW4gb3Zl cmxheSByZWdpc3RlciBib1xuIik7Cj4gIAkJCWdvdG8gb3V0X2ZyZWVfYm87Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+IGluZGV4IGQ2M2U0ZmRjNjBkZS4uZjg2MDM5 NDU1YzVhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZm ZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+IEBA IC02NDgsNyArNjQ4LDcgQEAgaW50IGludGVsX2luaXRfcGlwZV9jb250cm9sKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSwgaW50IHNpemUpCj4gIAkJZ290byBlcnI7Cj4gIAl9Cj4gIAo+ IC0JcmV0ID0gaTkxNV9nZW1fb2JqX2dndHRfcGluKG9iaiwgNDA5NiwgUElOX0hJR0gpOwo+ICsJ cmV0ID0gaTkxNV9nZW1fb2JqZWN0X2dndHRfcGluKG9iaiwgTlVMTCwgMCwgNDA5NiwgUElOX0hJ R0gpOwo+ICAJaWYgKHJldCkKPiAgCQlnb3RvIGVycl91bnJlZjsKPiAgCj4gQEAgLTE4MTYsNyAr MTgxNiw3IEBAIHN0YXRpYyBpbnQgaW5pdF9zdGF0dXNfcGFnZShzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCj4gIAkJCSAqIGFjdHVhbHkgbWFwIGl0KS4KPiAgCQkJICovCj4gIAkJCWZs YWdzIHw9IFBJTl9NQVBQQUJMRTsKPiAtCQlyZXQgPSBpOTE1X2dlbV9vYmpfZ2d0dF9waW4ob2Jq LCA0MDk2LCBmbGFncyk7Cj4gKwkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X2dndHRfcGluKG9iaiwg TlVMTCwgMCwgNDA5NiwgZmxhZ3MpOwo+ICAJCWlmIChyZXQpIHsKPiAgZXJyX3VucmVmOgo+ICAJ CQlpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7Cj4gQEAgLTE4NjMsNyArMTg2Myw3IEBAIGludCBp bnRlbF9yaW5nX3BpbihzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZykKPiAgCWludCByZXQ7Cj4gIAo+ ICAJaWYgKEhBU19MTEMoZGV2X3ByaXYpICYmICFvYmotPnN0b2xlbikgewo+IC0JCXJldCA9IGk5 MTVfZ2VtX29ial9nZ3R0X3BpbihvYmosIFBBR0VfU0laRSwgZmxhZ3MpOwo+ICsJCXJldCA9IGk5 MTVfZ2VtX29iamVjdF9nZ3R0X3BpbihvYmosIE5VTEwsIDAsIFBBR0VfU0laRSwgZmxhZ3MpOwo+ ICAJCWlmIChyZXQpCj4gIAkJCXJldHVybiByZXQ7Cj4gIAo+IEBAIC0xODc3LDggKzE4NzcsOCBA QCBpbnQgaW50ZWxfcmluZ19waW4oc3RydWN0IGludGVsX3JpbmcgKnJpbmcpCj4gIAkJCWdvdG8g ZXJyX3VucGluOwo+ICAJCX0KPiAgCX0gZWxzZSB7Cj4gLQkJcmV0ID0gaTkxNV9nZW1fb2JqX2dn dHRfcGluKG9iaiwgUEFHRV9TSVpFLAo+IC0JCQkJCSAgICBmbGFncyB8IFBJTl9NQVBQQUJMRSk7 Cj4gKwkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X2dndHRfcGluKG9iaiwgTlVMTCwgMCwgUEFHRV9T SVpFLAo+ICsJCQkJCSAgICAgICBmbGFncyB8IFBJTl9NQVBQQUJMRSk7Cj4gIAkJaWYgKHJldCkK PiAgCQkJcmV0dXJuIHJldDsKPiAgCj4gQEAgLTIwMDcsNyArMjAwNyw4IEBAIHN0YXRpYyBpbnQg aW50ZWxfcmluZ19jb250ZXh0X3BpbihzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAo+ICAJ CXJldHVybiAwOwo+ICAKPiAgCWlmIChjZS0+c3RhdGUpIHsKPiAtCQlyZXQgPSBpOTE1X2dlbV9v YmpfZ2d0dF9waW4oY2UtPnN0YXRlLCBjdHgtPmdndHRfYWxpZ25tZW50LCAwKTsKPiArCQlyZXQg PSBpOTE1X2dlbV9vYmplY3RfZ2d0dF9waW4oY2UtPnN0YXRlLCBOVUxMLCAwLAo+ICsJCQkJCSAg ICAgICBjdHgtPmdndHRfYWxpZ25tZW50LCAwKTsKPiAgCQlpZiAocmV0KQo+ICAJCQlnb3RvIGVy cm9yOwo+ICAJfQo+IEBAIC0yNTc0LDcgKzI1NzUsOCBAQCBpbnQgaW50ZWxfaW5pdF9yZW5kZXJf cmluZ19idWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQkJCWk5MTUuc2VtYXBob3Jl cyA9IDA7Cj4gIAkJCX0gZWxzZSB7Cj4gIAkJCQlpOTE1X2dlbV9vYmplY3Rfc2V0X2NhY2hlX2xl dmVsKG9iaiwgSTkxNV9DQUNIRV9MTEMpOwo+IC0JCQkJcmV0ID0gaTkxNV9nZW1fb2JqX2dndHRf cGluKG9iaiwgMCwgUElOX05PTkJMT0NLKTsKPiArCQkJCXJldCA9IGk5MTVfZ2VtX29iamVjdF9n Z3R0X3BpbihvYmosIE5VTEwsCj4gKwkJCQkJCQkgICAgICAgMCwgMCwgMCk7Cj4gIAkJCQlpZiAo cmV0ICE9IDApIHsKPiAgCQkJCQlpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7Cj4gIAkJCQkJRFJN X0VSUk9SKCJGYWlsZWQgdG8gcGluIHNlbWFwaG9yZSBiby4gRGlzYWJsaW5nIHNlbWFwaG9yZXNc biIpOwo+IC0tIAo+IDIuOC4xCj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwg SW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==