From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 09/38] drm/i915: Move vma lookup to its own lock Date: Fri, 18 Jan 2019 16:14:49 +0000 Message-ID: <6ed9423e-bb2a-f5bf-55a8-fe8fdc04ed5e@linux.intel.com> References: <20190118140109.25261-1-chris@chris-wilson.co.uk> <20190118140109.25261-10-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8A3EC6F85A for ; Fri, 18 Jan 2019 16:14:49 +0000 (UTC) In-Reply-To: <20190118140109.25261-10-chris@chris-wilson.co.uk> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDE4LzAxLzIwMTkgMTQ6MDAsIENocmlzIFdpbHNvbiB3cm90ZToKPiBSZW1vdmUgdGhlIHN0 cnVjdF9tdXRleCByZXF1aXJlbWVudCBmb3IgbG9va2luZyB1cCB0aGUgdm1hIGZvciBhbgo+IG9i amVjdC4KCldpdGggdGhlIGNoYW5nZSBsb2cgYWRkZWQ6CgpSZXZpZXdlZC1ieTogVHZydGtvIFVy c3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCkl0J3Mgbm90IGNvb2wgdG8ga2VlcCBv bWl0dGluZyBpdCBhbmQgY3JlYXRpbmcgZXh0cmEgY3Jvc3MgcmVmZXJlbmNpbmcgCndvcmsgZXZl cnkgdGltZSB5b3UgcG9zdCBpdC4gSXQncyBub3QgbGlrZSB3ZSBkb24ndCBoYXZlIGVub3VnaCB3 b3JrIAphbHJlYWR5Li4KClJlZ2FyZHMsCgpUdnJ0a28KCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMg V2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgICB8ICA2ICstLQo+ICAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICAgfCAzMyArKysrKysrLS0tLS0KPiAgIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX29iamVjdC5oICAgIHwgNDUgKysrKysrKysrLS0tLS0tLQo+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuYyAgICAgICAgICAgfCA2NiArKysrKysr KysrKysrKysrLS0tLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuaCAgICAg ICAgICAgfCAgMiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfdm1h LmMgfCAgNCArLQo+ICAgNiBmaWxlcyBjaGFuZ2VkLCA5OCBpbnNlcnRpb25zKCspLCA1OCBkZWxl dGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1 Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IGluZGV4IDNlYzM2 OTk4MGQ0MC4uMmE2ZTQwNDRmMjViIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZGVidWdmcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2Zz LmMKPiBAQCAtMTU5LDE0ICsxNTksMTQgQEAgZGVzY3JpYmVfb2JqKHN0cnVjdCBzZXFfZmlsZSAq bSwgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiAgIAkJICAgb2JqLT5tbS5tYWR2 ID09IEk5MTVfTUFEVl9ET05UTkVFRCA/ICIgcHVyZ2VhYmxlIiA6ICIiKTsKPiAgIAlpZiAob2Jq LT5iYXNlLm5hbWUpCj4gICAJCXNlcV9wcmludGYobSwgIiAobmFtZTogJWQpIiwgb2JqLT5iYXNl Lm5hbWUpOwo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeSh2bWEsICZvYmotPnZtYV9saXN0LCBvYmpf bGluaykgewo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeSh2bWEsICZvYmotPnZtYS5saXN0LCBvYmpf bGluaykgewo+ICAgCQlpZiAoaTkxNV92bWFfaXNfcGlubmVkKHZtYSkpCj4gICAJCQlwaW5fY291 bnQrKzsKPiAgIAl9Cj4gICAJc2VxX3ByaW50ZihtLCAiIChwaW5uZWQgeCAlZCkiLCBwaW5fY291 bnQpOwo+ICAgCWlmIChvYmotPnBpbl9nbG9iYWwpCj4gICAJCXNlcV9wcmludGYobSwgIiAoZ2xv YmFsKSIpOwo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeSh2bWEsICZvYmotPnZtYV9saXN0LCBvYmpf bGluaykgewo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeSh2bWEsICZvYmotPnZtYS5saXN0LCBvYmpf bGluaykgewo+ICAgCQlpZiAoIWRybV9tbV9ub2RlX2FsbG9jYXRlZCgmdm1hLT5ub2RlKSkKPiAg IAkJCWNvbnRpbnVlOwo+ICAgCj4gQEAgLTMyMiw3ICszMjIsNyBAQCBzdGF0aWMgaW50IHBlcl9m aWxlX3N0YXRzKGludCBpZCwgdm9pZCAqcHRyLCB2b2lkICpkYXRhKQo+ICAgCWlmIChvYmotPmJh c2UubmFtZSB8fCBvYmotPmJhc2UuZG1hX2J1ZikKPiAgIAkJc3RhdHMtPnNoYXJlZCArPSBvYmot PmJhc2Uuc2l6ZTsKPiAgIAo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeSh2bWEsICZvYmotPnZtYV9s aXN0LCBvYmpfbGluaykgewo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeSh2bWEsICZvYmotPnZtYS5s aXN0LCBvYmpfbGluaykgewo+ICAgCQlpZiAoIWRybV9tbV9ub2RlX2FsbG9jYXRlZCgmdm1hLT5u b2RlKSkKPiAgIAkJCWNvbnRpbnVlOwo+ICAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gaW5k ZXggNTM4ZmE1NDA0NjAzLi4xNWFjZDA1MmRhNDYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt LmMKPiBAQCAtNDM3LDE1ICs0MzcsMTkgQEAgaW50IGk5MTVfZ2VtX29iamVjdF91bmJpbmQoc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiAgIAlpZiAocmV0KQo+ICAgCQlyZXR1cm4g cmV0Owo+ICAgCj4gLQl3aGlsZSAoKHZtYSA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbCgmb2Jq LT52bWFfbGlzdCwKPiAtCQkJCQkgICAgICAgc3RydWN0IGk5MTVfdm1hLAo+IC0JCQkJCSAgICAg ICBvYmpfbGluaykpKSB7Cj4gKwlzcGluX2xvY2soJm9iai0+dm1hLmxvY2spOwo+ICsJd2hpbGUg KCFyZXQgJiYgKHZtYSA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbCgmb2JqLT52bWEubGlzdCwK PiArCQkJCQkJICAgICAgIHN0cnVjdCBpOTE1X3ZtYSwKPiArCQkJCQkJICAgICAgIG9ial9saW5r KSkpIHsKPiAgIAkJbGlzdF9tb3ZlX3RhaWwoJnZtYS0+b2JqX2xpbmssICZzdGlsbF9pbl9saXN0 KTsKPiArCQlzcGluX3VubG9jaygmb2JqLT52bWEubG9jayk7Cj4gKwo+ICAgCQlyZXQgPSBpOTE1 X3ZtYV91bmJpbmQodm1hKTsKPiAtCQlpZiAocmV0KQo+IC0JCQlicmVhazsKPiArCj4gKwkJc3Bp bl9sb2NrKCZvYmotPnZtYS5sb2NrKTsKPiAgIAl9Cj4gLQlsaXN0X3NwbGljZSgmc3RpbGxfaW5f bGlzdCwgJm9iai0+dm1hX2xpc3QpOwo+ICsJbGlzdF9zcGxpY2UoJnN0aWxsX2luX2xpc3QsICZv YmotPnZtYS5saXN0KTsKPiArCXNwaW5fdW5sb2NrKCZvYmotPnZtYS5sb2NrKTsKPiAgIAo+ICAg CXJldHVybiByZXQ7Cj4gICB9Cj4gQEAgLTM0ODksNyArMzQ5Myw3IEBAIGludCBpOTE1X2dlbV9v YmplY3Rfc2V0X2NhY2hlX2xldmVsKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4g ICAJICogcmVhZGluZyBhbiBpbnZhbGlkIFBURSBvbiBvbGRlciBhcmNoaXRlY3R1cmVzLgo+ICAg CSAqLwo+ICAgcmVzdGFydDoKPiAtCWxpc3RfZm9yX2VhY2hfZW50cnkodm1hLCAmb2JqLT52bWFf bGlzdCwgb2JqX2xpbmspIHsKPiArCWxpc3RfZm9yX2VhY2hfZW50cnkodm1hLCAmb2JqLT52bWEu bGlzdCwgb2JqX2xpbmspIHsKPiAgIAkJaWYgKCFkcm1fbW1fbm9kZV9hbGxvY2F0ZWQoJnZtYS0+ bm9kZSkpCj4gICAJCQljb250aW51ZTsKPiAgIAo+IEBAIC0zNTY3LDcgKzM1NzEsNyBAQCBpbnQg aTkxNV9nZW1fb2JqZWN0X3NldF9jYWNoZV9sZXZlbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqLAo+ICAgCQkJICovCj4gICAJCX0KPiAgIAo+IC0JCWxpc3RfZm9yX2VhY2hfZW50cnko dm1hLCAmb2JqLT52bWFfbGlzdCwgb2JqX2xpbmspIHsKPiArCQlsaXN0X2Zvcl9lYWNoX2VudHJ5 KHZtYSwgJm9iai0+dm1hLmxpc3QsIG9ial9saW5rKSB7Cj4gICAJCQlpZiAoIWRybV9tbV9ub2Rl X2FsbG9jYXRlZCgmdm1hLT5ub2RlKSkKPiAgIAkJCQljb250aW51ZTsKPiAgIAo+IEBAIC0zNTc3 LDcgKzM1ODEsNyBAQCBpbnQgaTkxNV9nZW1fb2JqZWN0X3NldF9jYWNoZV9sZXZlbChzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAgCQl9Cj4gICAJfQo+ICAgCj4gLQlsaXN0X2Zv cl9lYWNoX2VudHJ5KHZtYSwgJm9iai0+dm1hX2xpc3QsIG9ial9saW5rKQo+ICsJbGlzdF9mb3Jf ZWFjaF9lbnRyeSh2bWEsICZvYmotPnZtYS5saXN0LCBvYmpfbGluaykKPiAgIAkJdm1hLT5ub2Rl LmNvbG9yID0gY2FjaGVfbGV2ZWw7Cj4gICAJaTkxNV9nZW1fb2JqZWN0X3NldF9jYWNoZV9jb2hl cmVuY3kob2JqLCBjYWNoZV9sZXZlbCk7Cj4gICAJb2JqLT5jYWNoZV9kaXJ0eSA9IHRydWU7IC8q IEFsd2F5cyBpbnZhbGlkYXRlIHN0YWxlIGNhY2hlbGluZXMgKi8KPiBAQCAtNDE1Myw3ICs0MTU3 LDkgQEAgdm9pZCBpOTE1X2dlbV9vYmplY3RfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqLAo+ICAgewo+ICAgCW11dGV4X2luaXQoJm9iai0+bW0ubG9jayk7Cj4gICAKPiAtCUlO SVRfTElTVF9IRUFEKCZvYmotPnZtYV9saXN0KTsKPiArCXNwaW5fbG9ja19pbml0KCZvYmotPnZt YS5sb2NrKTsKPiArCUlOSVRfTElTVF9IRUFEKCZvYmotPnZtYS5saXN0KTsKPiArCj4gICAJSU5J VF9MSVNUX0hFQUQoJm9iai0+bHV0X2xpc3QpOwo+ICAgCUlOSVRfTElTVF9IRUFEKCZvYmotPmJh dGNoX3Bvb2xfbGluayk7Cj4gICAKPiBAQCAtNDMxOSwxNCArNDMyNSwxMyBAQCBzdGF0aWMgdm9p ZCBfX2k5MTVfZ2VtX2ZyZWVfb2JqZWN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwK PiAgIAkJbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAKPiAgIAkJR0VN X0JVR19PTihpOTE1X2dlbV9vYmplY3RfaXNfYWN0aXZlKG9iaikpOwo+IC0JCWxpc3RfZm9yX2Vh Y2hfZW50cnlfc2FmZSh2bWEsIHZuLAo+IC0JCQkJCSAmb2JqLT52bWFfbGlzdCwgb2JqX2xpbmsp IHsKPiArCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodm1hLCB2biwgJm9iai0+dm1hLmxpc3Qs IG9ial9saW5rKSB7Cj4gICAJCQlHRU1fQlVHX09OKGk5MTVfdm1hX2lzX2FjdGl2ZSh2bWEpKTsK PiAgIAkJCXZtYS0+ZmxhZ3MgJj0gfkk5MTVfVk1BX1BJTl9NQVNLOwo+ICAgCQkJaTkxNV92bWFf ZGVzdHJveSh2bWEpOwo+ICAgCQl9Cj4gLQkJR0VNX0JVR19PTighbGlzdF9lbXB0eSgmb2JqLT52 bWFfbGlzdCkpOwo+IC0JCUdFTV9CVUdfT04oIVJCX0VNUFRZX1JPT1QoJm9iai0+dm1hX3RyZWUp KTsKPiArCQlHRU1fQlVHX09OKCFsaXN0X2VtcHR5KCZvYmotPnZtYS5saXN0KSk7Cj4gKwkJR0VN X0JVR19PTighUkJfRU1QVFlfUk9PVCgmb2JqLT52bWEudHJlZSkpOwo+ICAgCj4gICAJCS8qIFRo aXMgc2VyaWFsaXplcyBmcmVlaW5nIHdpdGggdGhlIHNocmlua2VyLiBTaW5jZSB0aGUgZnJlZQo+ ICAgCQkgKiBpcyBkZWxheWVkLCBmaXJzdCBieSBSQ1UgdGhlbiBieSB0aGUgd29ya3F1ZXVlLCB3 ZSB3YW50IHRoZQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9v YmplY3QuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX29iamVjdC5oCj4gaW5kZXgg Y2IxYjAxNDRkMjc0Li41YTMzYjZkOWY5NDIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fb2JqZWN0LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9vYmplY3QuaAo+IEBAIC04NywyNCArODcsMzMgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3Qgewo+ICAgCj4gICAJY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Rfb3BzICpv cHM7Cj4gICAKPiAtCS8qKgo+IC0JICogQHZtYV9saXN0OiBMaXN0IG9mIFZNQXMgYmFja2VkIGJ5 IHRoaXMgb2JqZWN0Cj4gLQkgKgo+IC0JICogVGhlIFZNQSBvbiB0aGlzIGxpc3QgYXJlIG9yZGVy ZWQgYnkgdHlwZSwgYWxsIEdHVFQgdm1hIGFyZSBwbGFjZWQKPiAtCSAqIGF0IHRoZSBoZWFkIGFu ZCBhbGwgcHBHVFQgdm1hIGFyZSBwbGFjZWQgYXQgdGhlIHRhaWwuIFRoZSBkaWZmZXJlbnQKPiAt CSAqIHR5cGVzIG9mIEdHVFQgdm1hIGFyZSB1bm9yZGVyZWQgYmV0d2VlbiB0aGVtc2VsdmVzLCB1 c2UgdGhlCj4gLQkgKiBAdm1hX3RyZWUgKHdoaWNoIGhhcyBhIGRlZmluZWQgb3JkZXIgYmV0d2Vl biBhbGwgVk1BKSB0byBmaW5kIGFuCj4gLQkgKiBleGFjdCBtYXRjaC4KPiAtCSAqLwo+IC0Jc3Ry dWN0IGxpc3RfaGVhZCB2bWFfbGlzdDsKPiAtCS8qKgo+IC0JICogQHZtYV90cmVlOiBPcmRlcmVk IHRyZWUgb2YgVk1BcyBiYWNrZWQgYnkgdGhpcyBvYmplY3QKPiAtCSAqCj4gLQkgKiBBbGwgVk1B IGNyZWF0ZWQgZm9yIHRoaXMgb2JqZWN0IGFyZSBwbGFjZWQgaW4gdGhlIEB2bWFfdHJlZSBmb3IK PiAtCSAqIGZhc3QgcmV0cmlldmFsIHZpYSBhIGJpbmFyeSBzZWFyY2ggaW4gaTkxNV92bWFfaW5z dGFuY2UoKS4KPiAtCSAqIFRoZXkgYXJlIGFsc28gYWRkZWQgdG8gQHZtYV9saXN0IGZvciBlYXN5 IGl0ZXJhdGlvbi4KPiAtCSAqLwo+IC0Jc3RydWN0IHJiX3Jvb3Qgdm1hX3RyZWU7Cj4gKwlzdHJ1 Y3Qgewo+ICsJCS8qKgo+ICsJCSAqIEB2bWEubG9jazogcHJvdGVjdCB0aGUgbGlzdC90cmVlIG9m IHZtYXMKPiArCQkgKi8KPiArCQlzdHJ1Y3Qgc3BpbmxvY2sgbG9jazsKPiArCj4gKwkJLyoqCj4g KwkJICogQHZtYS5saXN0OiBMaXN0IG9mIFZNQXMgYmFja2VkIGJ5IHRoaXMgb2JqZWN0Cj4gKwkJ ICoKPiArCQkgKiBUaGUgVk1BIG9uIHRoaXMgbGlzdCBhcmUgb3JkZXJlZCBieSB0eXBlLCBhbGwg R0dUVCB2bWEgYXJlCj4gKwkJICogcGxhY2VkIGF0IHRoZSBoZWFkIGFuZCBhbGwgcHBHVFQgdm1h IGFyZSBwbGFjZWQgYXQgdGhlIHRhaWwuCj4gKwkJICogVGhlIGRpZmZlcmVudCB0eXBlcyBvZiBH R1RUIHZtYSBhcmUgdW5vcmRlcmVkIGJldHdlZW4KPiArCQkgKiB0aGVtc2VsdmVzLCB1c2UgdGhl IEB2bWEudHJlZSAod2hpY2ggaGFzIGEgZGVmaW5lZCBvcmRlcgo+ICsJCSAqIGJldHdlZW4gYWxs IFZNQSkgdG8gcXVpY2tseSBmaW5kIGFuIGV4YWN0IG1hdGNoLgo+ICsJCSAqLwo+ICsJCXN0cnVj dCBsaXN0X2hlYWQgbGlzdDsKPiArCj4gKwkJLyoqCj4gKwkJICogQHZtYS50cmVlOiBPcmRlcmVk IHRyZWUgb2YgVk1BcyBiYWNrZWQgYnkgdGhpcyBvYmplY3QKPiArCQkgKgo+ICsJCSAqIEFsbCBW TUEgY3JlYXRlZCBmb3IgdGhpcyBvYmplY3QgYXJlIHBsYWNlZCBpbiB0aGUgQHZtYS50cmVlCj4g KwkJICogZm9yIGZhc3QgcmV0cmlldmFsIHZpYSBhIGJpbmFyeSBzZWFyY2ggaW4KPiArCQkgKiBp OTE1X3ZtYV9pbnN0YW5jZSgpLiBUaGV5IGFyZSBhbHNvIGFkZGVkIHRvIEB2bWEubGlzdCBmb3IK PiArCQkgKiBlYXN5IGl0ZXJhdGlvbi4KPiArCQkgKi8KPiArCQlzdHJ1Y3QgcmJfcm9vdCB0cmVl Owo+ICsJfSB2bWE7Cj4gICAKPiAgIAkvKioKPiAgIAkgKiBAbHV0X2xpc3Q6IExpc3Qgb2Ygdm1h IGxvb2t1cCBlbnRyaWVzIGluIHVzZSBmb3IgdGhpcyBvYmplY3QuCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3ZtYS5jCj4gaW5kZXggZGNiZDBkMzQ1YzcyLi5kODNiOGFkNWY4NTkgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfdm1hLmMKPiBAQCAtMTg3LDMyICsxODcsNTIgQEAgdm1hX2NyZWF0ZShzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAgCQkJCQkJCQlpOTE1X2dlbV9vYmplY3RfZ2V0 X3N0cmlkZShvYmopKTsKPiAgIAkJR0VNX0JVR19PTighaXNfcG93ZXJfb2ZfMih2bWEtPmZlbmNl X2FsaWdubWVudCkpOwo+ICAgCj4gLQkJLyoKPiAtCQkgKiBXZSBwdXQgdGhlIEdHVFQgdm1hIGF0 IHRoZSBzdGFydCBvZiB0aGUgdm1hLWxpc3QsIGZvbGxvd2VkCj4gLQkJICogYnkgdGhlIHBwR0dU VCB2bWEuIFRoaXMgYWxsb3dzIHVzIHRvIGJyZWFrIGVhcmx5IHdoZW4KPiAtCQkgKiBpdGVyYXRp bmcgb3ZlciBvbmx5IHRoZSBHR1RUIHZtYSBmb3IgYW4gb2JqZWN0LCBzZWUKPiAtCQkgKiBmb3Jf ZWFjaF9nZ3R0X3ZtYSgpCj4gLQkJICovCj4gICAJCXZtYS0+ZmxhZ3MgfD0gSTkxNV9WTUFfR0dU VDsKPiAtCQlsaXN0X2FkZCgmdm1hLT5vYmpfbGluaywgJm9iai0+dm1hX2xpc3QpOwo+IC0JfSBl bHNlIHsKPiAtCQlsaXN0X2FkZF90YWlsKCZ2bWEtPm9ial9saW5rLCAmb2JqLT52bWFfbGlzdCk7 Cj4gICAJfQo+ICAgCj4gKwlzcGluX2xvY2soJm9iai0+dm1hLmxvY2spOwo+ICsKPiAgIAlyYiA9 IE5VTEw7Cj4gLQlwID0gJm9iai0+dm1hX3RyZWUucmJfbm9kZTsKPiArCXAgPSAmb2JqLT52bWEu dHJlZS5yYl9ub2RlOwo+ICAgCXdoaWxlICgqcCkgewo+ICAgCQlzdHJ1Y3QgaTkxNV92bWEgKnBv czsKPiArCQlsb25nIGNtcDsKPiAgIAo+ICAgCQlyYiA9ICpwOwo+ICAgCQlwb3MgPSByYl9lbnRy eShyYiwgc3RydWN0IGk5MTVfdm1hLCBvYmpfbm9kZSk7Cj4gLQkJaWYgKGk5MTVfdm1hX2NvbXBh cmUocG9zLCB2bSwgdmlldykgPCAwKQo+ICsKPiArCQkvKgo+ICsJCSAqIElmIHRoZSB2aWV3IGFs cmVhZHkgZXhpc3RzIGluIHRoZSB0cmVlLCBhbm90aGVyIHRocmVhZAo+ICsJCSAqIGFscmVhZHkg Y3JlYXRlZCBhIG1hdGNoaW5nIHZtYSwgc28gcmV0dXJuIHRoZSBvbGRlciBpbnN0YW5jZQo+ICsJ CSAqIGFuZCBkaXNwb3NlIG9mIG91cnMuCj4gKwkJICovCj4gKwkJY21wID0gaTkxNV92bWFfY29t cGFyZShwb3MsIHZtLCB2aWV3KTsKPiArCQlpZiAoY21wID09IDApIHsKPiArCQkJc3Bpbl91bmxv Y2soJm9iai0+dm1hLmxvY2spOwo+ICsJCQlrbWVtX2NhY2hlX2ZyZWUodm0tPmk5MTUtPnZtYXMs IHZtYSk7Cj4gKwkJCXJldHVybiBwb3M7Cj4gKwkJfQo+ICsKPiArCQlpZiAoY21wIDwgMCkKPiAg IAkJCXAgPSAmcmItPnJiX3JpZ2h0Owo+ICAgCQllbHNlCj4gICAJCQlwID0gJnJiLT5yYl9sZWZ0 Owo+ICAgCX0KPiAgIAlyYl9saW5rX25vZGUoJnZtYS0+b2JqX25vZGUsIHJiLCBwKTsKPiAtCXJi X2luc2VydF9jb2xvcigmdm1hLT5vYmpfbm9kZSwgJm9iai0+dm1hX3RyZWUpOwo+ICsJcmJfaW5z ZXJ0X2NvbG9yKCZ2bWEtPm9ial9ub2RlLCAmb2JqLT52bWEudHJlZSk7Cj4gKwo+ICsJaWYgKGk5 MTVfdm1hX2lzX2dndHQodm1hKSkKPiArCQkvKgo+ICsJCSAqIFdlIHB1dCB0aGUgR0dUVCB2bWEg YXQgdGhlIHN0YXJ0IG9mIHRoZSB2bWEtbGlzdCwgZm9sbG93ZWQKPiArCQkgKiBieSB0aGUgcHBH R1RUIHZtYS4gVGhpcyBhbGxvd3MgdXMgdG8gYnJlYWsgZWFybHkgd2hlbgo+ICsJCSAqIGl0ZXJh dGluZyBvdmVyIG9ubHkgdGhlIEdHVFQgdm1hIGZvciBhbiBvYmplY3QsIHNlZQo+ICsJCSAqIGZv cl9lYWNoX2dndHRfdm1hKCkKPiArCQkgKi8KPiArCQlsaXN0X2FkZCgmdm1hLT5vYmpfbGluaywg Jm9iai0+dm1hLmxpc3QpOwo+ICsJZWxzZQo+ICsJCWxpc3RfYWRkX3RhaWwoJnZtYS0+b2JqX2xp bmssICZvYmotPnZtYS5saXN0KTsKPiArCj4gKwlzcGluX3VubG9jaygmb2JqLT52bWEubG9jayk7 Cj4gICAKPiAgIAltdXRleF9sb2NrKCZ2bS0+bXV0ZXgpOwo+ICAgCWxpc3RfYWRkKCZ2bWEtPnZt X2xpbmssICZ2bS0+dW5ib3VuZF9saXN0KTsKPiBAQCAtMjMyLDcgKzI1Miw3IEBAIHZtYV9sb29r dXAoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgIHsKPiAgIAlzdHJ1Y3QgcmJf bm9kZSAqcmI7Cj4gICAKPiAtCXJiID0gb2JqLT52bWFfdHJlZS5yYl9ub2RlOwo+ICsJcmIgPSBv YmotPnZtYS50cmVlLnJiX25vZGU7Cj4gICAJd2hpbGUgKHJiKSB7Cj4gICAJCXN0cnVjdCBpOTE1 X3ZtYSAqdm1hID0gcmJfZW50cnkocmIsIHN0cnVjdCBpOTE1X3ZtYSwgb2JqX25vZGUpOwo+ICAg CQlsb25nIGNtcDsKPiBAQCAtMjcyLDE2ICsyOTIsMTggQEAgaTkxNV92bWFfaW5zdGFuY2Uoc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgIHsKPiAgIAlzdHJ1Y3QgaTkxNV92bWEg KnZtYTsKPiAgIAo+IC0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmb2JqLT5iYXNlLmRldi0+c3RydWN0 X211dGV4KTsKPiAgIAlHRU1fQlVHX09OKHZpZXcgJiYgIWk5MTVfaXNfZ2d0dCh2bSkpOwo+ICAg CUdFTV9CVUdfT04odm0tPmNsb3NlZCk7Cj4gICAKPiArCXNwaW5fbG9jaygmb2JqLT52bWEubG9j ayk7Cj4gICAJdm1hID0gdm1hX2xvb2t1cChvYmosIHZtLCB2aWV3KTsKPiAtCWlmICghdm1hKQo+ ICsJc3Bpbl91bmxvY2soJm9iai0+dm1hLmxvY2spOwo+ICsKPiArCS8qIHZtYV9jcmVhdGUoKSB3 aWxsIHJlc29sdmUgdGhlIHJhY2UgaWYgYW5vdGhlciBjcmVhdGVzIHRoZSB2bWEgKi8KPiArCWlm ICh1bmxpa2VseSghdm1hKSkKPiAgIAkJdm1hID0gdm1hX2NyZWF0ZShvYmosIHZtLCB2aWV3KTsK PiAgIAo+ICAgCUdFTV9CVUdfT04oIUlTX0VSUih2bWEpICYmIGk5MTVfdm1hX2NvbXBhcmUodm1h LCB2bSwgdmlldykpOwo+IC0JR0VNX0JVR19PTighSVNfRVJSKHZtYSkgJiYgdm1hX2xvb2t1cChv YmosIHZtLCB2aWV3KSAhPSB2bWEpOwo+ICAgCXJldHVybiB2bWE7Cj4gICB9Cj4gICAKPiBAQCAt ODA4LDE0ICs4MzAsMTggQEAgc3RhdGljIHZvaWQgX19pOTE1X3ZtYV9kZXN0cm95KHN0cnVjdCBp OTE1X3ZtYSAqdm1hKQo+ICAgCj4gICAJR0VNX0JVR19PTihpOTE1X2dlbV9hY3RpdmVfaXNzZXQo JnZtYS0+bGFzdF9mZW5jZSkpOwo+ICAgCj4gLQlsaXN0X2RlbCgmdm1hLT5vYmpfbGluayk7Cj4g LQo+ICAgCW11dGV4X2xvY2soJnZtYS0+dm0tPm11dGV4KTsKPiAgIAlsaXN0X2RlbCgmdm1hLT52 bV9saW5rKTsKPiAgIAltdXRleF91bmxvY2soJnZtYS0+dm0tPm11dGV4KTsKPiAgIAo+IC0JaWYg KHZtYS0+b2JqKQo+IC0JCXJiX2VyYXNlKCZ2bWEtPm9ial9ub2RlLCAmdm1hLT5vYmotPnZtYV90 cmVlKTsKPiArCWlmICh2bWEtPm9iaikgewo+ICsJCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmogPSB2bWEtPm9iajsKPiArCj4gKwkJc3Bpbl9sb2NrKCZvYmotPnZtYS5sb2NrKTsKPiAr CQlsaXN0X2RlbCgmdm1hLT5vYmpfbGluayk7Cj4gKwkJcmJfZXJhc2UoJnZtYS0+b2JqX25vZGUs ICZ2bWEtPm9iai0+dm1hLnRyZWUpOwo+ICsJCXNwaW5fdW5sb2NrKCZvYmotPnZtYS5sb2NrKTsK PiArCX0KPiAgIAo+ICAgCXJidHJlZV9wb3N0b3JkZXJfZm9yX2VhY2hfZW50cnlfc2FmZShpdGVy LCBuLCAmdm1hLT5hY3RpdmUsIG5vZGUpIHsKPiAgIAkJR0VNX0JVR19PTihpOTE1X2dlbV9hY3Rp dmVfaXNzZXQoJml0ZXItPmJhc2UpKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV92bWEuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmgKPiBpbmRleCA0 ZjdjMWM3NTk5ZjQuLjcyNTJhYmM3M2QzZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3ZtYS5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuaAo+ IEBAIC00MjUsNyArNDI1LDcgQEAgdm9pZCBpOTE1X3ZtYV9wYXJrZWQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUpOwo+ICAgICogb3IgdGhlIGxpc3QgaXMgZW1wdHkgb2ZjLgo+ICAgICov Cj4gICAjZGVmaW5lIGZvcl9lYWNoX2dndHRfdm1hKFYsIE9CSikgXAo+IC0JbGlzdF9mb3JfZWFj aF9lbnRyeShWLCAmKE9CSiktPnZtYV9saXN0LCBvYmpfbGluaykJCVwKPiArCWxpc3RfZm9yX2Vh Y2hfZW50cnkoViwgJihPQkopLT52bWEubGlzdCwgb2JqX2xpbmspCQlcCj4gICAJCWZvcl9lYWNo X3VudGlsKCFpOTE1X3ZtYV9pc19nZ3R0KFYpKQo+ICAgCj4gICAjZW5kaWYKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfdm1hLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV92bWEuYwo+IGluZGV4IGZmYTc0MjkwZTA1NC4uZjEw MDhiMDdkZmQyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9p OTE1X3ZtYS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfdm1h LmMKPiBAQCAtNjcwLDcgKzY3MCw3IEBAIHN0YXRpYyBpbnQgaWd0X3ZtYV9wYXJ0aWFsKHZvaWQg KmFyZykKPiAgIAkJfQo+ICAgCj4gICAJCWNvdW50ID0gMDsKPiAtCQlsaXN0X2Zvcl9lYWNoX2Vu dHJ5KHZtYSwgJm9iai0+dm1hX2xpc3QsIG9ial9saW5rKQo+ICsJCWxpc3RfZm9yX2VhY2hfZW50 cnkodm1hLCAmb2JqLT52bWEubGlzdCwgb2JqX2xpbmspCj4gICAJCQljb3VudCsrOwo+ICAgCQlp ZiAoY291bnQgIT0gbnZtYSkgewo+ICAgCQkJcHJfZXJyKCIoJXMpIEFsbCBwYXJ0aWFsIHZtYSB3 ZXJlIG5vdCByZWNvcmRlZCBvbiB0aGUgb2JqLT52bWFfbGlzdDogZm91bmQgJXUsIGV4cGVjdGVk ICV1XG4iLAo+IEBAIC02OTksNyArNjk5LDcgQEAgc3RhdGljIGludCBpZ3Rfdm1hX3BhcnRpYWwo dm9pZCAqYXJnKQo+ICAgCQlpOTE1X3ZtYV91bnBpbih2bWEpOwo+ICAgCj4gICAJCWNvdW50ID0g MDsKPiAtCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwgJm9iai0+dm1hX2xpc3QsIG9ial9saW5r KQo+ICsJCWxpc3RfZm9yX2VhY2hfZW50cnkodm1hLCAmb2JqLT52bWEubGlzdCwgb2JqX2xpbmsp Cj4gICAJCQljb3VudCsrOwo+ICAgCQlpZiAoY291bnQgIT0gbnZtYSkgewo+ICAgCQkJcHJfZXJy KCIoJXMpIGFsbG9jYXRlZCBhbiBleHRyYSBmdWxsIHZtYSFcbiIsIHAtPm5hbWUpOwo+IApfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFp bGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK