From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v2] drm/i915/gtt: Pull global wc page stash under its own locking Date: Wed, 4 Jul 2018 16:10:45 +0100 Message-ID: <0f39a883-da8c-4e71-d145-ff0fb657983b@linux.intel.com> References: <20180704113945.2010-1-chris@chris-wilson.co.uk> <20180704142514.26997-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 mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id DBEAD6E8B0 for ; Wed, 4 Jul 2018 15:10:47 +0000 (UTC) In-Reply-To: <20180704142514.26997-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 Ck9uIDA0LzA3LzIwMTggMTU6MjUsIENocmlzIFdpbHNvbiB3cm90ZToKPiBDdXJyZW50bHksIHRo ZSB3Yy1zdGFzaCB1c2VkIGZvciBwcm92aWRpbmcgZmx1c2hlZCBXQyBwYWdlcyByZWFkeSBmb3IK PiBjb25zdHJ1Y3RpbmcgdGhlIHBhZ2UgZGlyZWN0b3JpZXMgaXMgYXNzdW1lZCB0byBiZSBwcm90 ZWN0ZWQgYnkgdGhlCj4gc3RydWN0X211dGV4LiBIb3dldmVyLCB3ZSB3YW50IHRvIHJlbW92ZSB0 aGlzIGdsb2JhbCBsb2NrIGFuZCBzbyBtdXN0Cj4gaW5zdGFsbCBhIHJlcGxhY2VtZW50IGdsb2Jh bCBsb2NrIGZvciBhY2Nlc3NpbmcgdGhlIGdsb2JhbCB3Yy1zdGFzaCAodGhlCj4gcGVyLXZtIHN0 YXNoIGNvbnRpbnVlcyB0byBiZSBndWFyZGVkIGJ5IHRoZSB2bSkuCj4gCj4gV2UgbmVlZCB0byBw dXNoIGFoZWFkIG9uIHRoaXMgcGF0Y2ggZHVlIHRvIGFuIG92ZXJzaWdodCBpbiBoYXN0aWx5Cj4g cmVtb3ZpbmcgdGhlIHN0cnVjdF9tdXRleCBndWFyZCBhcm91bmQgdGhlIGlndF9wcGd0dF9hbGxv YyBzZWxmdGVzdC4gTm8KPiBtYXR0ZXIsIGl0IHdpbGwgcHJvdmUgdmVyeSB1c2VmdWwgKGkuZS4g d2lsbCBiZSByZXF1aXJlZCkgaW4gdGhlIG5lYXIKPiBmdXR1cmUuCj4gCj4gdjI6IFJlc3RvcmUg dGhlIG9uc3RhY2sgc3Rhc2ggc28gdGhhdCB3ZSBjYW4gZHJvcCB0aGUgdm0tPm11dGV4IGluCj4g ZnV0dXJlIGFjcm9zcyB0aGUgYWxsb2NhdGlvbi4KPiAKPiBGaXhlczogMWY2ZjAwMjM4YWJmICgi ZHJtL2k5MTUvc2VsZnRlc3RzOiBEcm9wIHN0cnVjdF9tdXRleCBhcm91bmQgbG93bGV2ZWwgcGdn dHQgYWxsb2NhdGlvbiIpCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJp cy13aWxzb24uY28udWs+Cj4gQ2M6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRl bC5jb20+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICB8ICAg MiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgfCAxNTIgKysrKysr KysrKysrKysrKysrLS0tLS0tLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Z3R0LmggfCAgIDcgKy0KPiAgIDMgZmlsZXMgY2hhbmdlZCwgMTA3IGluc2VydGlvbnMoKyksIDU0 IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IDJjZWZlNGMz MGY4OC4uZTVhMGE2NWVjMmU5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTk1 Miw3ICs5NTIsNyBAQCBzdHJ1Y3QgaTkxNV9nZW1fbW0gewo+ICAgCS8qKgo+ICAgCSAqIFNtYWxs IHN0YXNoIG9mIFdDIHBhZ2VzCj4gICAJICovCj4gLQlzdHJ1Y3QgcGFnZXZlYyB3Y19zdGFzaDsK PiArCXN0cnVjdCBwYWdlc3Rhc2ggd2Nfc3Rhc2g7Cj4gICAKPiAgIAkvKioKPiAgIAkgKiB0bXBm cyBpbnN0YW5jZSB1c2VkIGZvciBzaG1lbSBiYWNrZWQgb2JqZWN0cwo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2d0dC5jCj4gaW5kZXggYzZhYTc2MWNhMDg1Li43MDQ4YmZiMjgyZGMgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+IEBAIC0zNzUsMjcgKzM3NSw2MCBAQCBz dGF0aWMgZ2VuNl9wdGVfdCBpcmlzX3B0ZV9lbmNvZGUoZG1hX2FkZHJfdCBhZGRyLAo+ICAgCXJl dHVybiBwdGU7Cj4gICB9Cj4gICAKPiArc3RhdGljIHZvaWQgc3Rhc2hfaW5pdChzdHJ1Y3QgcGFn ZXN0YXNoICpzdGFzaCkKPiArewo+ICsJcGFnZXZlY19pbml0KCZzdGFzaC0+cHZlYyk7Cj4gKwlz cGluX2xvY2tfaW5pdCgmc3Rhc2gtPmxvY2spOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IHBh Z2UgKnN0YXNoX2dldChzdHJ1Y3QgcGFnZXN0YXNoICpzdGFzaCkKCnN0YXNoX2dldF9wYWdlPwoK PiArewo+ICsJc3RydWN0IHBhZ2UgKnBhZ2UgPSBOVUxMOwo+ICsKPiArCXNwaW5fbG9jaygmc3Rh c2gtPmxvY2spOwo+ICsJaWYgKGxpa2VseShzdGFzaC0+cHZlYy5ucikpCj4gKwkJcGFnZSA9IHN0 YXNoLT5wdmVjLnBhZ2VzWy0tc3Rhc2gtPnB2ZWMubnJdOwo+ICsJc3Bpbl91bmxvY2soJnN0YXNo LT5sb2NrKTsKPiArCj4gKwlyZXR1cm4gcGFnZTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgc3Rh c2hfcHVzaChzdHJ1Y3QgcGFnZXN0YXNoICpzdGFzaCwgc3RydWN0IHBhZ2V2ZWMgKnB2ZWMpCgpz dGFzaF9hcHBlbmRfcGFnZXZlYz8KCj4gK3sKPiArCWludCBucjsKPiArCj4gKwlzcGluX2xvY2so JnN0YXNoLT5sb2NrKTsKPiArCj4gKwluciA9IG1pbl90KGludCwgcHZlYy0+bnIsIHBhZ2V2ZWNf c3BhY2UoJnN0YXNoLT5wdmVjKSk7Cj4gKwltZW1jcHkoc3Rhc2gtPnB2ZWMucGFnZXMgKyBzdGFz aC0+cHZlYy5uciwKPiArCSAgICAgICBwdmVjLT5wYWdlcyArIHB2ZWMtPm5yIC0gbnIsCj4gKwkg ICAgICAgc2l6ZW9mKHB2ZWMtPnBhZ2VzWzBdKSAqIG5yKTsKPiArCXN0YXNoLT5wdmVjLm5yICs9 IG5yOwo+ICsKPiArCXNwaW5fdW5sb2NrKCZzdGFzaC0+bG9jayk7Cj4gKwo+ICsJcHZlYy0+bnIg LT0gbnI7Cj4gK30KPiArCj4gICBzdGF0aWMgc3RydWN0IHBhZ2UgKnZtX2FsbG9jX3BhZ2Uoc3Ry dWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sIGdmcF90IGdmcCkKPiAgIHsKPiAtCXN0cnVjdCBw YWdldmVjICpwdmVjID0gJnZtLT5mcmVlX3BhZ2VzOwo+IC0Jc3RydWN0IHBhZ2V2ZWMgc3Rhc2g7 Cj4gKwlzdHJ1Y3QgcGFnZXZlYyBzdGFjazsKPiArCXN0cnVjdCBwYWdlICpwYWdlOwo+ICAgCj4g ICAJaWYgKEk5MTVfU0VMRlRFU1RfT05MWShzaG91bGRfZmFpbCgmdm0tPmZhdWx0X2F0dHIsIDEp KSkKPiAgIAkJaTkxNV9nZW1fc2hyaW5rX2FsbCh2bS0+aTkxNSk7Cj4gICAKPiAtCWlmIChsaWtl bHkocHZlYy0+bnIpKQo+IC0JCXJldHVybiBwdmVjLT5wYWdlc1stLXB2ZWMtPm5yXTsKPiArCXBh Z2UgPSBzdGFzaF9nZXQoJnZtLT5mcmVlX3BhZ2VzKTsKPiArCWlmIChwYWdlKQo+ICsJCXJldHVy biBwYWdlOwo+ICAgCj4gICAJaWYgKCF2bS0+cHRfa21hcF93YykKPiAgIAkJcmV0dXJuIGFsbG9j X3BhZ2UoZ2ZwKTsKPiAgIAo+IC0JLyogQSBwbGFjZWhvbGRlciBmb3IgYSBzcGVjaWZpYyBtdXRl eCB0byBndWFyZCB0aGUgV0Mgc3Rhc2ggKi8KPiAtCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnZtLT5p OTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCj4gICAJLyogTG9vayBpbiBvdXIgZ2xvYmFsIHN0 YXNoIG9mIFdDIHBhZ2VzLi4uICovCj4gLQlwdmVjID0gJnZtLT5pOTE1LT5tbS53Y19zdGFzaDsK PiAtCWlmIChsaWtlbHkocHZlYy0+bnIpKQo+IC0JCXJldHVybiBwdmVjLT5wYWdlc1stLXB2ZWMt Pm5yXTsKPiArCXBhZ2UgPSBzdGFzaF9nZXQoJnZtLT5pOTE1LT5tbS53Y19zdGFzaCk7Cj4gKwlp ZiAocGFnZSkKPiArCQlyZXR1cm4gcGFnZTsKPiAgIAo+ICAgCS8qCj4gICAJICogT3RoZXJ3aXNl IGJhdGNoIGFsbG9jYXRlIHBhZ2VzIHRvIGFtb3JpdGl6ZSBjb3N0IG9mIHNldF9wYWdlc193Yy4K PiBAQCAtNDA1LDcgKzQzOCw2IEBAIHN0YXRpYyBzdHJ1Y3QgcGFnZSAqdm1fYWxsb2NfcGFnZShz dHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwgZ2ZwX3QgZ2ZwKQo+ICAgCSAqIFNvIHdlIGFk ZCBvdXIgV0IgcGFnZXMgaW50byBhIHRlbXBvcmFyeSBwdmVjIG9uIHRoZSBzdGFjayBhbmQgbWVy Z2UKPiAgIAkgKiB0aGVtIGludG8gdGhlIFdDIHN0YXNoIGFmdGVyIGFsbCB0aGUgYWxsb2NhdGlv bnMgYXJlIGNvbXBsZXRlLgo+ICAgCSAqLwo+IC0JcGFnZXZlY19pbml0KCZzdGFzaCk7CgpTdGFj ayBsb29rIHVuaW5pdGlhbGl6ZWQuCgo+ICAgCWRvIHsKPiAgIAkJc3RydWN0IHBhZ2UgKnBhZ2U7 Cj4gICAKPiBAQCAtNDEzLDU5ICs0NDUsNjcgQEAgc3RhdGljIHN0cnVjdCBwYWdlICp2bV9hbGxv Y19wYWdlKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLCBnZnBfdCBnZnApCj4gICAJCWlm ICh1bmxpa2VseSghcGFnZSkpCj4gICAJCQlicmVhazsKPiAgIAo+IC0JCXN0YXNoLnBhZ2VzW3N0 YXNoLm5yKytdID0gcGFnZTsKPiAtCX0gd2hpbGUgKHN0YXNoLm5yIDwgcGFnZXZlY19zcGFjZShw dmVjKSk7Cj4gKwkJc3RhY2sucGFnZXNbc3RhY2subnIrK10gPSBwYWdlOwo+ICsJfSB3aGlsZSAo cGFnZXZlY19zcGFjZSgmc3RhY2spKTsKPiAgIAo+IC0JaWYgKHN0YXNoLm5yKSB7Cj4gLQkJaW50 IG5yID0gbWluX3QoaW50LCBzdGFzaC5uciwgcGFnZXZlY19zcGFjZShwdmVjKSk7Cj4gLQkJc3Ry dWN0IHBhZ2UgKipwYWdlcyA9IHN0YXNoLnBhZ2VzICsgc3Rhc2gubnIgLSBucjsKPiArCWlmIChz dGFjay5uciAmJiAhc2V0X3BhZ2VzX2FycmF5X3djKHN0YWNrLnBhZ2VzLCBzdGFjay5ucikpIHsK PiArCQlwYWdlID0gc3RhY2sucGFnZXNbLS1zdGFjay5ucl07Cj4gICAKPiAtCQlpZiAobnIgJiYg IXNldF9wYWdlc19hcnJheV93YyhwYWdlcywgbnIpKSB7Cj4gLQkJCW1lbWNweShwdmVjLT5wYWdl cyArIHB2ZWMtPm5yLAo+IC0JCQkgICAgICAgcGFnZXMsIHNpemVvZihwYWdlc1swXSkgKiBucik7 Cj4gLQkJCXB2ZWMtPm5yICs9IG5yOwo+IC0JCQlzdGFzaC5uciAtPSBucjsKPiAtCQl9Cj4gKwkJ LyogTWVyZ2Ugc3BhcmUgV0MgcGFnZXMgdG8gdGhlIGdsb2JhbCBzdGFzaCAqLwo+ICsJCXN0YXNo X3B1c2goJnZtLT5pOTE1LT5tbS53Y19zdGFzaCwgJnN0YWNrKTsKPiArCj4gKwkJLyogUHVzaCBh bnkgc3VycGx1cyBXQyBwYWdlcyBvbnRvIHRoZSBsb2NhbCBWTSBzdGFzaCAqLwo+ICsJCWlmIChz dGFjay5ucikKPiArCQkJc3Rhc2hfcHVzaCgmdm0tPmZyZWVfcGFnZXMsICZzdGFjayk7Cj4gKwl9 Cj4gICAKPiAtCQlwYWdldmVjX3JlbGVhc2UoJnN0YXNoKTsKPiArCS8qIFJldHVybiB1bndhbnRl ZCBsZWZ0b3ZlcnMgKi8KPiArCWlmICh1bmxpa2VseShzdGFjay5ucikpIHsKPiArCQlXQVJOX09O X09OQ0Uoc2V0X3BhZ2VzX2FycmF5X3diKHN0YWNrLnBhZ2VzLCBzdGFjay5ucikpOwo+ICsJCV9f cGFnZXZlY19yZWxlYXNlKCZzdGFjayk7CgpIbW0uLiBJIHRob3VnaHQgdGhlcmUgY2FuJ3QgYmUg YW55LiBCdXQgaW4gbXVsdGktdGhyZWFkZWQgY2FzZXMgaXQgY2FuIGJlLgoKPiAgIAl9Cj4gICAK PiAtCXJldHVybiBsaWtlbHkocHZlYy0+bnIpID8gcHZlYy0+cGFnZXNbLS1wdmVjLT5ucl0gOiBO VUxMOwo+ICsJcmV0dXJuIHBhZ2U7Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyB2b2lkIHZtX2ZyZWVf cGFnZXNfcmVsZWFzZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiAtCQkJCSAgYm9v bCBpbW1lZGlhdGUpCj4gKwkJCQkgIHVuc2lnbmVkIGludCBpbW1lZGlhdGUpCgpDaGFuZ2UgdGhl IG5hbWUgYXQgbGVhc3QgaWYgeW91IGNhbm5vdCByZXNpc3QgY2hhbmdpbmcgdGhlIHNlbWFudGlj cy4KCj4gICB7Cj4gLQlzdHJ1Y3QgcGFnZXZlYyAqcHZlYyA9ICZ2bS0+ZnJlZV9wYWdlczsKPiAr CXN0cnVjdCBwYWdldmVjICpwdmVjID0gJnZtLT5mcmVlX3BhZ2VzLnB2ZWM7Cj4gKwlzdHJ1Y3Qg cGFnZXZlYyBzdGFjazsKPiAgIAo+ICsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmdm0tPmZyZWVfcGFn ZXMubG9jayk7Cj4gICAJR0VNX0JVR19PTighcGFnZXZlY19jb3VudChwdmVjKSk7Cj4gICAKPiAg IAlpZiAodm0tPnB0X2ttYXBfd2MpIHsKPiAtCQlzdHJ1Y3QgcGFnZXZlYyAqc3Rhc2ggPSAmdm0t Pmk5MTUtPm1tLndjX3N0YXNoOwo+IC0KPiAtCQkvKiBXaGVuIHdlIHVzZSBXQywgZmlyc3QgZmls bCB1cCB0aGUgZ2xvYmFsIHN0YXNoIGFuZCB0aGVuCj4gKwkJLyoKPiArCQkgKiBXaGVuIHdlIHVz ZSBXQywgZmlyc3QgZmlsbCB1cCB0aGUgZ2xvYmFsIHN0YXNoIGFuZCB0aGVuCj4gICAJCSAqIG9u bHkgaWYgZnVsbCBpbW1lZGlhdGVseSBmcmVlIHRoZSBvdmVyZmxvdy4KPiAgIAkJICovCj4gKwkJ c3Rhc2hfcHVzaCgmdm0tPmk5MTUtPm1tLndjX3N0YXNoLCBwdmVjKTsKPiAgIAo+IC0JCWxvY2tk ZXBfYXNzZXJ0X2hlbGQoJnZtLT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCQlpZiAocGFn ZXZlY19zcGFjZShzdGFzaCkpIHsKPiAtCQkJZG8gewo+IC0JCQkJc3Rhc2gtPnBhZ2VzW3N0YXNo LT5ucisrXSA9Cj4gLQkJCQkJcHZlYy0+cGFnZXNbLS1wdmVjLT5ucl07Cj4gLQkJCQlpZiAoIXB2 ZWMtPm5yKQo+IC0JCQkJCXJldHVybjsKPiAtCQkJfSB3aGlsZSAocGFnZXZlY19zcGFjZShzdGFz aCkpOwo+IC0KPiAtCQkJLyogQXMgd2UgaGF2ZSBtYWRlIHNvbWUgcm9vbSBpbiB0aGUgVk0ncyBm cmVlX3BhZ2VzLAo+IC0JCQkgKiB3ZSBjYW4gd2FpdCBmb3IgaXQgdG8gZmlsbCBhZ2Fpbi4gVW5s ZXNzIHdlIGFyZQo+IC0JCQkgKiBpbnNpZGUgaTkxNV9hZGRyZXNzX3NwYWNlX2ZpbmkoKSBhbmQg bXVzdAo+IC0JCQkgKiBpbW1lZGlhdGVseSByZWxlYXNlIHRoZSBwYWdlcyEKPiAtCQkJICovCj4g LQkJCWlmICghaW1tZWRpYXRlKQo+IC0JCQkJcmV0dXJuOwo+IC0JCX0KPiArCQkvKgo+ICsJCSAq IEFzIHdlIGhhdmUgbWFkZSBzb21lIHJvb20gaW4gdGhlIFZNJ3MgZnJlZV9wYWdlcywKPiArCQkg KiB3ZSBjYW4gd2FpdCBmb3IgaXQgdG8gZmlsbCBhZ2Fpbi4gVW5sZXNzIHdlIGFyZQo+ICsJCSAq IGluc2lkZSBpOTE1X2FkZHJlc3Nfc3BhY2VfZmluaSgpIGFuZCBtdXN0Cj4gKwkJICogaW1tZWRp YXRlbHkgcmVsZWFzZSB0aGUgcGFnZXMhCj4gKwkJICovCj4gKwkJaWYgKHB2ZWMtPm5yIDw9IGlt bWVkaWF0ZSkKPiArCQkJcmV0dXJuOwo+ICsKPiArCQkvKgo+ICsJCSAqIFdlIGhhdmUgdG8gZHJv cCB0aGUgbG9jayB0byBhbGxvdyBvdXJzZWx2ZXMgdG8gc2xlZXAsCj4gKwkJICogc28gdGFrZSBh IGNvcHkgb2YgdGhlIHB2ZWMgYW5kIGNsZWFyIHRoZSBzdGFzaCBmb3IKPiArCQkgKiBvdGhlcnMg dG8gdXNlIGl0IGFzIHdlIHNsZWVwLgo+ICsJCSAqLwo+ICsJCXN0YWNrID0gKnB2ZWM7Cj4gKwkJ cGFnZXZlY19pbml0KHB2ZWMpOwo+ICsJCXNwaW5fdW5sb2NrKCZ2bS0+ZnJlZV9wYWdlcy5sb2Nr KTsKPiAgIAo+ICsJCXB2ZWMgPSAmc3RhY2s7Cj4gICAJCXNldF9wYWdlc19hcnJheV93YihwdmVj LT5wYWdlcywgcHZlYy0+bnIpOwo+ICsKPiArCQlzcGluX2xvY2soJnZtLT5mcmVlX3BhZ2VzLmxv Y2spOwo+ICAgCX0KPiAgIAo+ICAgCV9fcGFnZXZlY19yZWxlYXNlKHB2ZWMpOwo+IEBAIC00ODEs OCArNTIxLDEwIEBAIHN0YXRpYyB2b2lkIHZtX2ZyZWVfcGFnZShzdHJ1Y3QgaTkxNV9hZGRyZXNz X3NwYWNlICp2bSwgc3RydWN0IHBhZ2UgKnBhZ2UpCj4gICAJICogdW5jb25kaXRpb25hbCBtaWdo dF9zbGVlcCgpIGZvciBldmVyeWJvZHkuCj4gICAJICovCj4gICAJbWlnaHRfc2xlZXAoKTsKPiAt CWlmICghcGFnZXZlY19hZGQoJnZtLT5mcmVlX3BhZ2VzLCBwYWdlKSkKPiAtCQl2bV9mcmVlX3Bh Z2VzX3JlbGVhc2Uodm0sIGZhbHNlKTsKPiArCXNwaW5fbG9jaygmdm0tPmZyZWVfcGFnZXMubG9j ayk7Cj4gKwlpZiAoIXBhZ2V2ZWNfYWRkKCZ2bS0+ZnJlZV9wYWdlcy5wdmVjLCBwYWdlKSkKPiAr CQl2bV9mcmVlX3BhZ2VzX3JlbGVhc2Uodm0sIFBBR0VWRUNfU0laRSAtIDEpOwo+ICsJc3Bpbl91 bmxvY2soJnZtLT5mcmVlX3BhZ2VzLmxvY2spOwo+ICAgfQo+ICAgCj4gICBzdGF0aWMgaW50IF9f c2V0dXBfcGFnZV9kbWEoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4gQEAgLTIxMTIs MTggKzIxNTQsMjIgQEAgc3RhdGljIHZvaWQgaTkxNV9hZGRyZXNzX3NwYWNlX2luaXQoc3RydWN0 IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4gICAJZHJtX21tX2luaXQoJnZtLT5tbSwgMCwgdm0t PnRvdGFsKTsKPiAgIAl2bS0+bW0uaGVhZF9ub2RlLmNvbG9yID0gSTkxNV9DT0xPUl9VTkVWSUNU QUJMRTsKPiAgIAo+ICsJc3Rhc2hfaW5pdCgmdm0tPmZyZWVfcGFnZXMpOwo+ICsKPiAgIAlJTklU X0xJU1RfSEVBRCgmdm0tPmFjdGl2ZV9saXN0KTsKPiAgIAlJTklUX0xJU1RfSEVBRCgmdm0tPmlu YWN0aXZlX2xpc3QpOwo+ICAgCUlOSVRfTElTVF9IRUFEKCZ2bS0+dW5ib3VuZF9saXN0KTsKPiAg IAo+ICAgCWxpc3RfYWRkX3RhaWwoJnZtLT5nbG9iYWxfbGluaywgJmRldl9wcml2LT52bV9saXN0 KTsKPiAtCXBhZ2V2ZWNfaW5pdCgmdm0tPmZyZWVfcGFnZXMpOwo+ICAgfQo+ICAgCj4gICBzdGF0 aWMgdm9pZCBpOTE1X2FkZHJlc3Nfc3BhY2VfZmluaShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNl ICp2bSkKPiAgIHsKPiAtCWlmIChwYWdldmVjX2NvdW50KCZ2bS0+ZnJlZV9wYWdlcykpCj4gLQkJ dm1fZnJlZV9wYWdlc19yZWxlYXNlKHZtLCB0cnVlKTsKPiArCXNwaW5fbG9jaygmdm0tPmZyZWVf cGFnZXMubG9jayk7Cj4gKwlpZiAocGFnZXZlY19jb3VudCgmdm0tPmZyZWVfcGFnZXMucHZlYykp Cj4gKwkJdm1fZnJlZV9wYWdlc19yZWxlYXNlKHZtLCAwKTsKPiArCUdFTV9CVUdfT04ocGFnZXZl Y19jb3VudCgmdm0tPmZyZWVfcGFnZXMucHZlYykpOwo+ICsJc3Bpbl91bmxvY2soJnZtLT5mcmVl X3BhZ2VzLmxvY2spOwo+ICAgCj4gICAJZHJtX21tX3Rha2Vkb3duKCZ2bS0+bW0pOwo+ICAgCWxp c3RfZGVsKCZ2bS0+Z2xvYmFsX2xpbmspOwo+IEBAIC0yOTE4LDcgKzI5NjQsNyBAQCB2b2lkIGk5 MTVfZ2d0dF9jbGVhbnVwX2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAg IAo+ICAgCWdndHQtPnZtLmNsZWFudXAoJmdndHQtPnZtKTsKPiAgIAo+IC0JcHZlYyA9ICZkZXZf cHJpdi0+bW0ud2Nfc3Rhc2g7Cj4gKwlwdmVjID0gJmRldl9wcml2LT5tbS53Y19zdGFzaC5wdmVj Owo+ICAgCWlmIChwdmVjLT5ucikgewo+ICAgCQlzZXRfcGFnZXNfYXJyYXlfd2IocHZlYy0+cGFn ZXMsIHB2ZWMtPm5yKTsKPiAgIAkJX19wYWdldmVjX3JlbGVhc2UocHZlYyk7Cj4gQEAgLTM1MTgs NiArMzU2NCw4IEBAIGludCBpOTE1X2dndHRfaW5pdF9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gICAJc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCA9ICZkZXZfcHJpdi0+Z2d0 dDsKPiAgIAlpbnQgcmV0Owo+ICAgCj4gKwlzdGFzaF9pbml0KCZkZXZfcHJpdi0+bW0ud2Nfc3Rh c2gpOwo+ICsKPiAgIAlJTklUX0xJU1RfSEVBRCgmZGV2X3ByaXYtPnZtX2xpc3QpOwo+ICAgCj4g ICAJLyogTm90ZSB0aGF0IHdlIHVzZSBwYWdlIGNvbG91cmluZyB0byBlbmZvcmNlIGEgZ3VhcmQg cGFnZSBhdCB0aGUKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Z3R0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAo+IGluZGV4IDlhNDgy NGNhZTY4ZC4uOWMyMDg5YzI3MGY4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2d0dC5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0 LmgKPiBAQCAtMjcwLDYgKzI3MCwxMSBAQCBzdHJ1Y3QgaTkxNV92bWFfb3BzIHsKPiAgIAl2b2lk ICgqY2xlYXJfcGFnZXMpKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKTsKPiAgIH07Cj4gICAKPiArc3Ry dWN0IHBhZ2VzdGFzaCB7Cj4gKwlzcGlubG9ja190IGxvY2s7Cj4gKwlzdHJ1Y3QgcGFnZXZlYyBw dmVjOwo+ICt9Owo+ICsKPiAgIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2Ugewo+ICAgCXN0cnVj dCBkcm1fbW0gbW07Cj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTU7Cj4gQEAgLTMy NCw3ICszMjksNyBAQCBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlIHsKPiAgIAkgKi8KPiAgIAlz dHJ1Y3QgbGlzdF9oZWFkIHVuYm91bmRfbGlzdDsKPiAgIAo+IC0Jc3RydWN0IHBhZ2V2ZWMgZnJl ZV9wYWdlczsKPiArCXN0cnVjdCBwYWdlc3Rhc2ggZnJlZV9wYWdlczsKPiAgIAlib29sIHB0X2tt YXBfd2M7Cj4gICAKPiAgIAkvKiBGSVhNRTogTmVlZCBhIG1vcmUgZ2VuZXJpYyByZXR1cm4gdHlw ZSAqLwo+IAoKUmVnYXJkcywKClR2cnRrbwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK