From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v3] drm/i915/gtt: Pull global wc page stash under its own locking Date: Wed, 4 Jul 2018 16:41:20 +0100 Message-ID: References: <20180704113945.2010-1-chris@chris-wilson.co.uk> <20180704153248.5340-1-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 mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 41BCC884B0 for ; Wed, 4 Jul 2018 15:41:24 +0000 (UTC) In-Reply-To: <20180704153248.5340-1-chris@chris-wilson.co.uk> Content-Language: en-GB 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 Ck9uIDA0LzA3LzIwMTggMTY6MzIsIENocmlzIFdpbHNvbiB3cm90ZToKPiBDdXJyZW50bHksIHRo ZSB3Yy1zdGFzaCB1c2VkIGZvciBwcm92aWRpbmcgZmx1c2hlZCBXQyBwYWdlcyByZWFkeSBmb3IK PiBjb25zdHJ1Y3RpbmcgdGhlIHBhZ2UgZGlyZWN0b3JpZXMgaXMgYXNzdW1lZCB0byBiZSBwcm90 ZWN0ZWQgYnkgdGhlCj4gc3RydWN0X211dGV4LiBIb3dldmVyLCB3ZSB3YW50IHRvIHJlbW92ZSB0 aGlzIGdsb2JhbCBsb2NrIGFuZCBzbyBtdXN0Cj4gaW5zdGFsbCBhIHJlcGxhY2VtZW50IGdsb2Jh bCBsb2NrIGZvciBhY2Nlc3NpbmcgdGhlIGdsb2JhbCB3Yy1zdGFzaCAodGhlCj4gcGVyLXZtIHN0 YXNoIGNvbnRpbnVlcyB0byBiZSBndWFyZGVkIGJ5IHRoZSB2bSkuCj4gCj4gV2UgbmVlZCB0byBw dXNoIGFoZWFkIG9uIHRoaXMgcGF0Y2ggZHVlIHRvIGFuIG92ZXJzaWdodCBpbiBoYXN0aWx5Cj4g cmVtb3ZpbmcgdGhlIHN0cnVjdF9tdXRleCBndWFyZCBhcm91bmQgdGhlIGlndF9wcGd0dF9hbGxv YyBzZWxmdGVzdC4gTm8KPiBtYXR0ZXIsIGl0IHdpbGwgcHJvdmUgdmVyeSB1c2VmdWwgKGkuZS4g d2lsbCBiZSByZXF1aXJlZCkgaW4gdGhlIG5lYXIKPiBmdXR1cmUuCj4gCj4gdjI6IFJlc3RvcmUg dGhlIG9uc3RhY2sgc3Rhc2ggc28gdGhhdCB3ZSBjYW4gZHJvcCB0aGUgdm0tPm11dGV4IGluCj4g ZnV0dXJlIGFjcm9zcyB0aGUgYWxsb2NhdGlvbi4KPiB2MzogUmVzdG9yZSB0aGUgbG9zdCBwYWdl dmVjX2luaXQgb2YgdGhlIG9uc3RhY2sgYWxsb2NhdGlvbiwgYW5kIHJlcGFpbnQKPiBmdW5jdGlv biBuYW1lcy4KPiAKPiBGaXhlczogMWY2ZjAwMjM4YWJmICgiZHJtL2k5MTUvc2VsZnRlc3RzOiBE cm9wIHN0cnVjdF9tdXRleCBhcm91bmQgbG93bGV2ZWwgcGdndHQgYWxsb2NhdGlvbiIpCj4gU2ln bmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gQ2M6 IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Cj4gLS0tCj4gICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICB8ICAgMiArLQo+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgfCAxNDcgKysrKysrKysrKysrKysrKysrLS0tLS0tLS0t LQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmggfCAgIDcgKy0KPiAgIDMg ZmlsZXMgY2hhbmdlZCwgMTA1IGluc2VydGlvbnMoKyksIDUxIGRlbGV0aW9ucygtKQo+IAo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IDJjZWZlNGMzMGY4OC4uZTVhMGE2NWVjMmU5IDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTk1Miw3ICs5NTIsNyBAQCBzdHJ1Y3Qg aTkxNV9nZW1fbW0gewo+ICAgCS8qKgo+ICAgCSAqIFNtYWxsIHN0YXNoIG9mIFdDIHBhZ2VzCj4g ICAJICovCj4gLQlzdHJ1Y3QgcGFnZXZlYyB3Y19zdGFzaDsKPiArCXN0cnVjdCBwYWdlc3Rhc2gg d2Nfc3Rhc2g7Cj4gICAKPiAgIAkvKioKPiAgIAkgKiB0bXBmcyBpbnN0YW5jZSB1c2VkIGZvciBz aG1lbSBiYWNrZWQgb2JqZWN0cwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gaW5k ZXggYzZhYTc2MWNhMDg1Li5mZGI2MzgyNGM1YjMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9ndHQuYwo+IEBAIC0zNzUsMjcgKzM3NSw2MCBAQCBzdGF0aWMgZ2VuNl9wdGVfdCBpcmlz X3B0ZV9lbmNvZGUoZG1hX2FkZHJfdCBhZGRyLAo+ICAgCXJldHVybiBwdGU7Cj4gICB9Cj4gICAK PiArc3RhdGljIHZvaWQgc3Rhc2hfaW5pdChzdHJ1Y3QgcGFnZXN0YXNoICpzdGFzaCkKPiArewo+ ICsJcGFnZXZlY19pbml0KCZzdGFzaC0+cHZlYyk7Cj4gKwlzcGluX2xvY2tfaW5pdCgmc3Rhc2gt PmxvY2spOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IHBhZ2UgKnN0YXNoX3BvcChzdHJ1Y3Qg cGFnZXN0YXNoICpzdGFzaCkKPiArewo+ICsJc3RydWN0IHBhZ2UgKnBhZ2UgPSBOVUxMOwo+ICsK PiArCXNwaW5fbG9jaygmc3Rhc2gtPmxvY2spOwo+ICsJaWYgKGxpa2VseShzdGFzaC0+cHZlYy5u cikpCj4gKwkJcGFnZSA9IHN0YXNoLT5wdmVjLnBhZ2VzWy0tc3Rhc2gtPnB2ZWMubnJdOwo+ICsJ c3Bpbl91bmxvY2soJnN0YXNoLT5sb2NrKTsKPiArCj4gKwlyZXR1cm4gcGFnZTsKPiArfQo+ICsK PiArc3RhdGljIHZvaWQgc3Rhc2hfcHVzaF9wYWdldmVjKHN0cnVjdCBwYWdlc3Rhc2ggKnN0YXNo LCBzdHJ1Y3QgcGFnZXZlYyAqcHZlYykKPiArewo+ICsJaW50IG5yOwo+ICsKPiArCXNwaW5fbG9j aygmc3Rhc2gtPmxvY2spOwo+ICsKPiArCW5yID0gbWluX3QoaW50LCBwdmVjLT5uciwgcGFnZXZl Y19zcGFjZSgmc3Rhc2gtPnB2ZWMpKTsKPiArCW1lbWNweShzdGFzaC0+cHZlYy5wYWdlcyArIHN0 YXNoLT5wdmVjLm5yLAo+ICsJICAgICAgIHB2ZWMtPnBhZ2VzICsgcHZlYy0+bnIgLSBuciwKPiAr CSAgICAgICBzaXplb2YocHZlYy0+cGFnZXNbMF0pICogbnIpOwo+ICsJc3Rhc2gtPnB2ZWMubnIg Kz0gbnI7Cj4gKwo+ICsJc3Bpbl91bmxvY2soJnN0YXNoLT5sb2NrKTsKPiArCj4gKwlwdmVjLT5u ciAtPSBucjsKPiArfQo+ICsKPiAgIHN0YXRpYyBzdHJ1Y3QgcGFnZSAqdm1fYWxsb2NfcGFnZShz dHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwgZ2ZwX3QgZ2ZwKQo+ICAgewo+IC0Jc3RydWN0 IHBhZ2V2ZWMgKnB2ZWMgPSAmdm0tPmZyZWVfcGFnZXM7Cj4gLQlzdHJ1Y3QgcGFnZXZlYyBzdGFz aDsKPiArCXN0cnVjdCBwYWdldmVjIHN0YWNrOwo+ICsJc3RydWN0IHBhZ2UgKnBhZ2U7Cj4gICAK PiAgIAlpZiAoSTkxNV9TRUxGVEVTVF9PTkxZKHNob3VsZF9mYWlsKCZ2bS0+ZmF1bHRfYXR0ciwg MSkpKQo+ICAgCQlpOTE1X2dlbV9zaHJpbmtfYWxsKHZtLT5pOTE1KTsKPiAgIAo+IC0JaWYgKGxp a2VseShwdmVjLT5ucikpCj4gLQkJcmV0dXJuIHB2ZWMtPnBhZ2VzWy0tcHZlYy0+bnJdOwo+ICsJ cGFnZSA9IHN0YXNoX3BvcCgmdm0tPmZyZWVfcGFnZXMpOwo+ICsJaWYgKHBhZ2UpCj4gKwkJcmV0 dXJuIHBhZ2U7Cj4gICAKPiAgIAlpZiAoIXZtLT5wdF9rbWFwX3djKQo+ICAgCQlyZXR1cm4gYWxs b2NfcGFnZShnZnApOwo+ICAgCj4gLQkvKiBBIHBsYWNlaG9sZGVyIGZvciBhIHNwZWNpZmljIG11 dGV4IHRvIGd1YXJkIHRoZSBXQyBzdGFzaCAqLwo+IC0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmdm0t Pmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0KPiAgIAkvKiBMb29rIGluIG91ciBnbG9iYWwg c3Rhc2ggb2YgV0MgcGFnZXMuLi4gKi8KPiAtCXB2ZWMgPSAmdm0tPmk5MTUtPm1tLndjX3N0YXNo Owo+IC0JaWYgKGxpa2VseShwdmVjLT5ucikpCj4gLQkJcmV0dXJuIHB2ZWMtPnBhZ2VzWy0tcHZl Yy0+bnJdOwo+ICsJcGFnZSA9IHN0YXNoX3BvcCgmdm0tPmk5MTUtPm1tLndjX3N0YXNoKTsKPiAr CWlmIChwYWdlKQo+ICsJCXJldHVybiBwYWdlOwo+ICAgCj4gICAJLyoKPiAgIAkgKiBPdGhlcndp c2UgYmF0Y2ggYWxsb2NhdGUgcGFnZXMgdG8gYW1vcml0aXplIGNvc3Qgb2Ygc2V0X3BhZ2VzX3dj Lgo+IEBAIC00MDUsNyArNDM4LDcgQEAgc3RhdGljIHN0cnVjdCBwYWdlICp2bV9hbGxvY19wYWdl KHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLCBnZnBfdCBnZnApCj4gICAJICogU28gd2Ug YWRkIG91ciBXQiBwYWdlcyBpbnRvIGEgdGVtcG9yYXJ5IHB2ZWMgb24gdGhlIHN0YWNrIGFuZCBt ZXJnZQo+ICAgCSAqIHRoZW0gaW50byB0aGUgV0Mgc3Rhc2ggYWZ0ZXIgYWxsIHRoZSBhbGxvY2F0 aW9ucyBhcmUgY29tcGxldGUuCj4gICAJICovCj4gLQlwYWdldmVjX2luaXQoJnN0YXNoKTsKPiAr CXBhZ2V2ZWNfaW5pdCgmc3RhY2spOwo+ICAgCWRvIHsKPiAgIAkJc3RydWN0IHBhZ2UgKnBhZ2U7 Cj4gICAKPiBAQCAtNDEzLDU5ICs0NDYsNjcgQEAgc3RhdGljIHN0cnVjdCBwYWdlICp2bV9hbGxv Y19wYWdlKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLCBnZnBfdCBnZnApCj4gICAJCWlm ICh1bmxpa2VseSghcGFnZSkpCj4gICAJCQlicmVhazsKPiAgIAo+IC0JCXN0YXNoLnBhZ2VzW3N0 YXNoLm5yKytdID0gcGFnZTsKPiAtCX0gd2hpbGUgKHN0YXNoLm5yIDwgcGFnZXZlY19zcGFjZShw dmVjKSk7Cj4gKwkJc3RhY2sucGFnZXNbc3RhY2subnIrK10gPSBwYWdlOwo+ICsJfSB3aGlsZSAo cGFnZXZlY19zcGFjZSgmc3RhY2spKTsKPiAgIAo+IC0JaWYgKHN0YXNoLm5yKSB7Cj4gLQkJaW50 IG5yID0gbWluX3QoaW50LCBzdGFzaC5uciwgcGFnZXZlY19zcGFjZShwdmVjKSk7Cj4gLQkJc3Ry dWN0IHBhZ2UgKipwYWdlcyA9IHN0YXNoLnBhZ2VzICsgc3Rhc2gubnIgLSBucjsKPiArCWlmIChz dGFjay5uciAmJiAhc2V0X3BhZ2VzX2FycmF5X3djKHN0YWNrLnBhZ2VzLCBzdGFjay5ucikpIHsK PiArCQlwYWdlID0gc3RhY2sucGFnZXNbLS1zdGFjay5ucl07Cj4gICAKPiAtCQlpZiAobnIgJiYg IXNldF9wYWdlc19hcnJheV93YyhwYWdlcywgbnIpKSB7Cj4gLQkJCW1lbWNweShwdmVjLT5wYWdl cyArIHB2ZWMtPm5yLAo+IC0JCQkgICAgICAgcGFnZXMsIHNpemVvZihwYWdlc1swXSkgKiBucik7 Cj4gLQkJCXB2ZWMtPm5yICs9IG5yOwo+IC0JCQlzdGFzaC5uciAtPSBucjsKPiAtCQl9Cj4gKwkJ LyogTWVyZ2Ugc3BhcmUgV0MgcGFnZXMgdG8gdGhlIGdsb2JhbCBzdGFzaCAqLwo+ICsJCXN0YXNo X3B1c2hfcGFnZXZlYygmdm0tPmk5MTUtPm1tLndjX3N0YXNoLCAmc3RhY2spOwo+ICsKPiArCQkv KiBQdXNoIGFueSBzdXJwbHVzIFdDIHBhZ2VzIG9udG8gdGhlIGxvY2FsIFZNIHN0YXNoICovCj4g KwkJaWYgKHN0YWNrLm5yKQo+ICsJCQlzdGFzaF9wdXNoX3BhZ2V2ZWMoJnZtLT5mcmVlX3BhZ2Vz LCAmc3RhY2spOwo+ICsJfQo+ICAgCj4gLQkJcGFnZXZlY19yZWxlYXNlKCZzdGFzaCk7Cj4gKwkv KiBSZXR1cm4gdW53YW50ZWQgbGVmdG92ZXJzICovCj4gKwlpZiAodW5saWtlbHkoc3RhY2subnIp KSB7Cj4gKwkJV0FSTl9PTl9PTkNFKHNldF9wYWdlc19hcnJheV93YihzdGFjay5wYWdlcywgc3Rh Y2subnIpKTsKPiArCQlfX3BhZ2V2ZWNfcmVsZWFzZSgmc3RhY2spOwo+ICAgCX0KPiAgIAo+IC0J cmV0dXJuIGxpa2VseShwdmVjLT5ucikgPyBwdmVjLT5wYWdlc1stLXB2ZWMtPm5yXSA6IE5VTEw7 Cj4gKwlyZXR1cm4gcGFnZTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIHZvaWQgdm1fZnJlZV9wYWdl c19yZWxlYXNlKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+ICAgCQkJCSAgYm9vbCBp bW1lZGlhdGUpCj4gICB7Cj4gLQlzdHJ1Y3QgcGFnZXZlYyAqcHZlYyA9ICZ2bS0+ZnJlZV9wYWdl czsKPiArCXN0cnVjdCBwYWdldmVjICpwdmVjID0gJnZtLT5mcmVlX3BhZ2VzLnB2ZWM7Cj4gKwlz dHJ1Y3QgcGFnZXZlYyBzdGFjazsKPiAgIAo+ICsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmdm0tPmZy ZWVfcGFnZXMubG9jayk7Cj4gICAJR0VNX0JVR19PTighcGFnZXZlY19jb3VudChwdmVjKSk7Cj4g ICAKPiAgIAlpZiAodm0tPnB0X2ttYXBfd2MpIHsKPiAtCQlzdHJ1Y3QgcGFnZXZlYyAqc3Rhc2gg PSAmdm0tPmk5MTUtPm1tLndjX3N0YXNoOwo+IC0KPiAtCQkvKiBXaGVuIHdlIHVzZSBXQywgZmly c3QgZmlsbCB1cCB0aGUgZ2xvYmFsIHN0YXNoIGFuZCB0aGVuCj4gKwkJLyoKPiArCQkgKiBXaGVu IHdlIHVzZSBXQywgZmlyc3QgZmlsbCB1cCB0aGUgZ2xvYmFsIHN0YXNoIGFuZCB0aGVuCj4gICAJ CSAqIG9ubHkgaWYgZnVsbCBpbW1lZGlhdGVseSBmcmVlIHRoZSBvdmVyZmxvdy4KPiAgIAkJICov Cj4gKwkJc3Rhc2hfcHVzaF9wYWdldmVjKCZ2bS0+aTkxNS0+bW0ud2Nfc3Rhc2gsIHB2ZWMpOwo+ ICAgCj4gLQkJbG9ja2RlcF9hc3NlcnRfaGVsZCgmdm0tPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgp Owo+IC0JCWlmIChwYWdldmVjX3NwYWNlKHN0YXNoKSkgewo+IC0JCQlkbyB7Cj4gLQkJCQlzdGFz aC0+cGFnZXNbc3Rhc2gtPm5yKytdID0KPiAtCQkJCQlwdmVjLT5wYWdlc1stLXB2ZWMtPm5yXTsK PiAtCQkJCWlmICghcHZlYy0+bnIpCj4gLQkJCQkJcmV0dXJuOwo+IC0JCQl9IHdoaWxlIChwYWdl dmVjX3NwYWNlKHN0YXNoKSk7Cj4gLQo+IC0JCQkvKiBBcyB3ZSBoYXZlIG1hZGUgc29tZSByb29t IGluIHRoZSBWTSdzIGZyZWVfcGFnZXMsCj4gLQkJCSAqIHdlIGNhbiB3YWl0IGZvciBpdCB0byBm aWxsIGFnYWluLiBVbmxlc3Mgd2UgYXJlCj4gLQkJCSAqIGluc2lkZSBpOTE1X2FkZHJlc3Nfc3Bh Y2VfZmluaSgpIGFuZCBtdXN0Cj4gLQkJCSAqIGltbWVkaWF0ZWx5IHJlbGVhc2UgdGhlIHBhZ2Vz IQo+IC0JCQkgKi8KPiAtCQkJaWYgKCFpbW1lZGlhdGUpCj4gLQkJCQlyZXR1cm47Cj4gLQkJfQo+ ICsJCS8qCj4gKwkJICogQXMgd2UgaGF2ZSBtYWRlIHNvbWUgcm9vbSBpbiB0aGUgVk0ncyBmcmVl X3BhZ2VzLAo+ICsJCSAqIHdlIGNhbiB3YWl0IGZvciBpdCB0byBmaWxsIGFnYWluLiBVbmxlc3Mg d2UgYXJlCj4gKwkJICogaW5zaWRlIGk5MTVfYWRkcmVzc19zcGFjZV9maW5pKCkgYW5kIG11c3QK PiArCQkgKiBpbW1lZGlhdGVseSByZWxlYXNlIHRoZSBwYWdlcyEKPiArCQkgKi8KPiArCQlpZiAo cHZlYy0+bnIgPD0gKGltbWVkaWF0ZSA/IDAgOiBQQUdFVkVDX1NJWkUgLSAxKSkKPiArCQkJcmV0 dXJuOwo+ICsKPiArCQkvKgo+ICsJCSAqIFdlIGhhdmUgdG8gZHJvcCB0aGUgbG9jayB0byBhbGxv dyBvdXJzZWx2ZXMgdG8gc2xlZXAsCj4gKwkJICogc28gdGFrZSBhIGNvcHkgb2YgdGhlIHB2ZWMg YW5kIGNsZWFyIHRoZSBzdGFzaCBmb3IKPiArCQkgKiBvdGhlcnMgdG8gdXNlIGl0IGFzIHdlIHNs ZWVwLgo+ICsJCSAqLwo+ICsJCXN0YWNrID0gKnB2ZWM7Cj4gKwkJcGFnZXZlY19yZWluaXQocHZl Yyk7Cj4gKwkJc3Bpbl91bmxvY2soJnZtLT5mcmVlX3BhZ2VzLmxvY2spOwo+ICAgCj4gKwkJcHZl YyA9ICZzdGFjazsKPiAgIAkJc2V0X3BhZ2VzX2FycmF5X3diKHB2ZWMtPnBhZ2VzLCBwdmVjLT5u cik7Cj4gKwo+ICsJCXNwaW5fbG9jaygmdm0tPmZyZWVfcGFnZXMubG9jayk7Cj4gICAJfQo+ICAg Cj4gICAJX19wYWdldmVjX3JlbGVhc2UocHZlYyk7Cj4gQEAgLTQ4MSw4ICs1MjIsMTAgQEAgc3Rh dGljIHZvaWQgdm1fZnJlZV9wYWdlKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLCBzdHJ1 Y3QgcGFnZSAqcGFnZSkKPiAgIAkgKiB1bmNvbmRpdGlvbmFsIG1pZ2h0X3NsZWVwKCkgZm9yIGV2 ZXJ5Ym9keS4KPiAgIAkgKi8KPiAgIAltaWdodF9zbGVlcCgpOwo+IC0JaWYgKCFwYWdldmVjX2Fk ZCgmdm0tPmZyZWVfcGFnZXMsIHBhZ2UpKQo+ICsJc3Bpbl9sb2NrKCZ2bS0+ZnJlZV9wYWdlcy5s b2NrKTsKPiArCWlmICghcGFnZXZlY19hZGQoJnZtLT5mcmVlX3BhZ2VzLnB2ZWMsIHBhZ2UpKQo+ ICAgCQl2bV9mcmVlX3BhZ2VzX3JlbGVhc2Uodm0sIGZhbHNlKTsKPiArCXNwaW5fdW5sb2NrKCZ2 bS0+ZnJlZV9wYWdlcy5sb2NrKTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIGludCBfX3NldHVwX3Bh Z2VfZG1hKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+IEBAIC0yMTEyLDE4ICsyMTU1 LDIyIEBAIHN0YXRpYyB2b2lkIGk5MTVfYWRkcmVzc19zcGFjZV9pbml0KHN0cnVjdCBpOTE1X2Fk ZHJlc3Nfc3BhY2UgKnZtLAo+ICAgCWRybV9tbV9pbml0KCZ2bS0+bW0sIDAsIHZtLT50b3RhbCk7 Cj4gICAJdm0tPm1tLmhlYWRfbm9kZS5jb2xvciA9IEk5MTVfQ09MT1JfVU5FVklDVEFCTEU7Cj4g ICAKPiArCXN0YXNoX2luaXQoJnZtLT5mcmVlX3BhZ2VzKTsKPiArCj4gICAJSU5JVF9MSVNUX0hF QUQoJnZtLT5hY3RpdmVfbGlzdCk7Cj4gICAJSU5JVF9MSVNUX0hFQUQoJnZtLT5pbmFjdGl2ZV9s aXN0KTsKPiAgIAlJTklUX0xJU1RfSEVBRCgmdm0tPnVuYm91bmRfbGlzdCk7Cj4gICAKPiAgIAls aXN0X2FkZF90YWlsKCZ2bS0+Z2xvYmFsX2xpbmssICZkZXZfcHJpdi0+dm1fbGlzdCk7Cj4gLQlw YWdldmVjX2luaXQoJnZtLT5mcmVlX3BhZ2VzKTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIHZvaWQg aTkxNV9hZGRyZXNzX3NwYWNlX2Zpbmkoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCj4g ICB7Cj4gLQlpZiAocGFnZXZlY19jb3VudCgmdm0tPmZyZWVfcGFnZXMpKQo+ICsJc3Bpbl9sb2Nr KCZ2bS0+ZnJlZV9wYWdlcy5sb2NrKTsKPiArCWlmIChwYWdldmVjX2NvdW50KCZ2bS0+ZnJlZV9w YWdlcy5wdmVjKSkKPiAgIAkJdm1fZnJlZV9wYWdlc19yZWxlYXNlKHZtLCB0cnVlKTsKPiArCUdF TV9CVUdfT04ocGFnZXZlY19jb3VudCgmdm0tPmZyZWVfcGFnZXMucHZlYykpOwo+ICsJc3Bpbl91 bmxvY2soJnZtLT5mcmVlX3BhZ2VzLmxvY2spOwo+ICAgCj4gICAJZHJtX21tX3Rha2Vkb3duKCZ2 bS0+bW0pOwo+ICAgCWxpc3RfZGVsKCZ2bS0+Z2xvYmFsX2xpbmspOwo+IEBAIC0yOTE4LDcgKzI5 NjUsNyBAQCB2b2lkIGk5MTVfZ2d0dF9jbGVhbnVwX2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiAgIAo+ICAgCWdndHQtPnZtLmNsZWFudXAoJmdndHQtPnZtKTsKPiAgIAo+ IC0JcHZlYyA9ICZkZXZfcHJpdi0+bW0ud2Nfc3Rhc2g7Cj4gKwlwdmVjID0gJmRldl9wcml2LT5t bS53Y19zdGFzaC5wdmVjOwo+ICAgCWlmIChwdmVjLT5ucikgewo+ICAgCQlzZXRfcGFnZXNfYXJy YXlfd2IocHZlYy0+cGFnZXMsIHB2ZWMtPm5yKTsKPiAgIAkJX19wYWdldmVjX3JlbGVhc2UocHZl Yyk7Cj4gQEAgLTM1MTgsNiArMzU2NSw4IEBAIGludCBpOTE1X2dndHRfaW5pdF9odyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCA9 ICZkZXZfcHJpdi0+Z2d0dDsKPiAgIAlpbnQgcmV0Owo+ICAgCj4gKwlzdGFzaF9pbml0KCZkZXZf cHJpdi0+bW0ud2Nfc3Rhc2gpOwo+ICsKPiAgIAlJTklUX0xJU1RfSEVBRCgmZGV2X3ByaXYtPnZt X2xpc3QpOwo+ICAgCj4gICAJLyogTm90ZSB0aGF0IHdlIHVzZSBwYWdlIGNvbG91cmluZyB0byBl bmZvcmNlIGEgZ3VhcmQgcGFnZSBhdCB0aGUKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZ3R0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQu aAo+IGluZGV4IDlhNDgyNGNhZTY4ZC4uOWMyMDg5YzI3MGY4IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZ3R0LmgKPiBAQCAtMjcwLDYgKzI3MCwxMSBAQCBzdHJ1Y3QgaTkxNV92bWFf b3BzIHsKPiAgIAl2b2lkICgqY2xlYXJfcGFnZXMpKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKTsKPiAg IH07Cj4gICAKPiArc3RydWN0IHBhZ2VzdGFzaCB7Cj4gKwlzcGlubG9ja190IGxvY2s7Cj4gKwlz dHJ1Y3QgcGFnZXZlYyBwdmVjOwo+ICt9Owo+ICsKPiAgIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3Bh Y2Ugewo+ICAgCXN0cnVjdCBkcm1fbW0gbW07Cj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTU7Cj4gQEAgLTMyNCw3ICszMjksNyBAQCBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlIHsK PiAgIAkgKi8KPiAgIAlzdHJ1Y3QgbGlzdF9oZWFkIHVuYm91bmRfbGlzdDsKPiAgIAo+IC0Jc3Ry dWN0IHBhZ2V2ZWMgZnJlZV9wYWdlczsKPiArCXN0cnVjdCBwYWdlc3Rhc2ggZnJlZV9wYWdlczsK PiAgIAlib29sIHB0X2ttYXBfd2M7Cj4gICAKPiAgIAkvKiBGSVhNRTogTmVlZCBhIG1vcmUgZ2Vu ZXJpYyByZXR1cm4gdHlwZSAqLwo+IAoKUmV2aWV3ZWQtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0 a28udXJzdWxpbkBpbnRlbC5jb20+CgpSZWdhcmRzLAoKVHZydGtvCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=