From mboxrd@z Thu Jan 1 00:00:00 1970 From: akash goel Subject: Re: [PATCH 05/12] drm/i915/bdw: implement alloc/free for 4lvl Date: Wed, 4 Mar 2015 08:18:44 +0530 Message-ID: References: <1424454366-19006-1-git-send-email-michel.thierry@intel.com> <1424454366-19006-6-git-send-email-michel.thierry@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qg0-f45.google.com (mail-qg0-f45.google.com [209.85.192.45]) by gabe.freedesktop.org (Postfix) with ESMTP id BBC846E190 for ; Tue, 3 Mar 2015 18:48:44 -0800 (PST) Received: by mail-qg0-f45.google.com with SMTP id z107so14248422qgd.4 for ; Tue, 03 Mar 2015 18:48:44 -0800 (PST) In-Reply-To: <1424454366-19006-6-git-send-email-michel.thierry@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Michel Thierry Cc: intel-gfx@lists.freedesktop.org, "Goel, Akash" List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBGZWIgMjAsIDIwMTUgYXQgMTE6MTUgUE0sIE1pY2hlbCBUaGllcnJ5CjxtaWNoZWwu dGhpZXJyeUBpbnRlbC5jb20+IHdyb3RlOgo+IEZyb206IEJlbiBXaWRhd3NreSA8YmVuamFtaW4u d2lkYXdza3lAaW50ZWwuY29tPgo+Cj4gVGhlIGNvZGUgZm9yIDRsdmwgd29ya3MganVzdCBhcyBv bmUgd291bGQgZXhwZWN0LCBhbmQgbmljZWx5IGl0IGlzIGFibGUKPiB0byBjYWxsIGludG8gdGhl IGV4aXN0aW5nIDNsdmwgcGFnZSB0YWJsZSBjb2RlIHRvIGhhbmRsZSBhbGwgb2YgdGhlCj4gbG93 ZXIgbGV2ZWxzLgo+Cj4gUE1MNCBoYXMgbm8gc3BlY2lhbCBhdHRyaWJ1dGVzLCBhbmQgdGhlcmUg d2lsbCBhbHdheXMgYmUgYSBQTUw0Lgo+IFNvIHNpbXBseSBpbml0aWFsaXplIGl0IGF0IGNyZWF0 aW9uLCBhbmQgZGVzdHJveSBpdCBhdCB0aGUgZW5kLgo+Cj4gdjI6IFJldHVybiBzb21ldGhpbmcg YXQgdGhlIGVuZCBvZiBnZW44X2FsbG9jX3ZhX3JhbmdlXzRsdmwgdG8ga2VlcCB0aGUKPiBjb21w aWxlciBoYXBweS4gQW5kIGRlZmluZSByZXQgb25seSBpbiBvbmUgcGxhY2UuCj4gVXBkYXRlZCBn ZW44X3BwZ3R0X3VubWFwX3BhZ2VzIGFuZCBnZW44X3BwZ3R0X2ZyZWUgdG8gaGFuZGxlIDRsdmwu Cj4KPiBTaWduZWQtb2ZmLWJ5OiBCZW4gV2lkYXdza3kgPGJlbkBid2lkYXdzay5uZXQ+Cj4gU2ln bmVkLW9mZi1ieTogTWljaGVsIFRoaWVycnkgPG1pY2hlbC50aGllcnJ5QGludGVsLmNvbT4gKHYy KQo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyB8IDI0MCArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZ3R0LmggfCAgMTEgKy0KPiAgMiBmaWxlcyBjaGFuZ2VkLCAyMTcgaW5zZXJ0aW9u cygrKSwgMzQgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+ IGluZGV4IDFlZGNjMTcuLmVkYWRhMzMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZ3R0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9n dHQuYwo+IEBAIC00ODMsOSArNDgzLDEyIEBAIHN0YXRpYyB2b2lkIF9fcGRwX2Zpbmkoc3RydWN0 IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlcl9lbnRyeSAqcGRwKQo+ICBzdGF0aWMgdm9pZCB1 bm1hcF9hbmRfZnJlZV9wZHAoc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlcl9lbnRy eSAqcGRwLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQo+ICB7Cj4gLSAgICAgICBfX3BkcF9maW5pKHBkcCk7Cj4gLSAgICAgICBpZiAoVVNFU19G VUxMXzQ4QklUX1BQR1RUKGRldikpCj4gKyAgICAgICBpZiAoVVNFU19GVUxMXzQ4QklUX1BQR1RU KGRldikpIHsKPiArICAgICAgICAgICAgICAgX19wZHBfZmluaShwZHApOwo+ICsgICAgICAgICAg ICAgICBpOTE1X2RtYV91bm1hcF9zaW5nbGUocGRwLCBkZXYpOwo+ICsgICAgICAgICAgICAgICBf X2ZyZWVfcGFnZShwZHAtPnBhZ2UpOwo+ICAgICAgICAgICAgICAgICBrZnJlZShwZHApOwo+ICsg ICAgICAgfQo+ICB9Cj4KPiAgc3RhdGljIGludCBfX3BkcF9pbml0KHN0cnVjdCBpOTE1X3BhZ2Vf ZGlyZWN0b3J5X3BvaW50ZXJfZW50cnkgKnBkcCwKPiBAQCAtNTExLDYgKzUxNCw2MCBAQCBzdGF0 aWMgaW50IF9fcGRwX2luaXQoc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlcl9lbnRy eSAqcGRwLAo+ICAgICAgICAgcmV0dXJuIDA7Cj4gIH0KPgo+ICtzdGF0aWMgc3RydWN0IGk5MTVf cGFnZV9kaXJlY3RvcnlfcG9pbnRlcl9lbnRyeSAqYWxsb2NfcGRwX3NpbmdsZShzdHJ1Y3QgaTkx NV9od19wcGd0dCAqcHBndHQsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgaTkxNV9wbWw0ICpwbWw0KQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gcHBndHQtPmJhc2UuZGV2Owo+ICsgICAgICAgc3RydWN0IGk5MTVf cGFnZV9kaXJlY3RvcnlfcG9pbnRlcl9lbnRyeSAqcGRwOwo+ICsgICAgICAgaW50IHJldDsKPiAr Cj4gKyAgICAgICBCVUdfT04oIVVTRVNfRlVMTF80OEJJVF9QUEdUVChkZXYpKTsKPiArCj4gKyAg ICAgICBwZHAgPSBrbWFsbG9jKHNpemVvZigqcGRwKSwgR0ZQX0tFUk5FTCk7Cj4gKyAgICAgICBp ZiAoIXBkcCkKPiArICAgICAgICAgICAgICAgcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gKwo+ ICsgICAgICAgcGRwLT5wYWdlID0gYWxsb2NfcGFnZShHRlBfS0VSTkVMIHwgR0ZQX0RNQTMyIHwg X19HRlBfWkVSTyk7Cj4gKyAgICAgICBpZiAoIXBkcC0+cGFnZSkgewo+ICsgICAgICAgICAgICAg ICBrZnJlZShwZHApOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsK PiArICAgICAgIH0KPiArCj4gKyAgICAgICByZXQgPSBfX3BkcF9pbml0KHBkcCwgZGV2KTsKPiAr ICAgICAgIGlmIChyZXQpIHsKPiArICAgICAgICAgICAgICAgX19mcmVlX3BhZ2UocGRwLT5wYWdl KTsKPiArICAgICAgICAgICAgICAga2ZyZWUocGRwKTsKPiArICAgICAgICAgICAgICAgcmV0dXJu IEVSUl9QVFIocmV0KTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBpOTE1X2RtYV9tYXBfcHhf c2luZ2xlKHBkcCwgZGV2KTsKPiArCj4gKyAgICAgICByZXR1cm4gcGRwOwo+ICt9Cj4gKwo+ICtz dGF0aWMgdm9pZCBwbWw0X2Zpbmkoc3RydWN0IGk5MTVfcG1sNCAqcG1sNCkKPiArewo+ICsgICAg ICAgc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0ID0KPiArICAgICAgICAgICAgICAgY29udGFp bmVyX29mKHBtbDQsIHN0cnVjdCBpOTE1X2h3X3BwZ3R0LCBwbWw0KTsKPiArICAgICAgIGk5MTVf ZG1hX3VubWFwX3NpbmdsZShwbWw0LCBwcGd0dC0+YmFzZS5kZXYpOwo+ICsgICAgICAgX19mcmVl X3BhZ2UocG1sNC0+cGFnZSk7Cj4gKyAgICAgICAvKiBIQUNLICovCj4gKyAgICAgICBwbWw0LT5w YWdlID0gTlVMTDsKPiArfQo+ICsKPiArc3RhdGljIGludCBwbWw0X2luaXQoc3RydWN0IGk5MTVf aHdfcHBndHQgKnBwZ3R0KQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgaTkxNV9wbWw0ICpwbWw0ID0g JnBwZ3R0LT5wbWw0Owo+ICsKPiArICAgICAgIHBtbDQtPnBhZ2UgPSBhbGxvY19wYWdlKEdGUF9L RVJORUwgfCBfX0dGUF9aRVJPKTsKPiArICAgICAgIGlmICghcG1sNC0+cGFnZSkKPiArICAgICAg ICAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsgICAgICAgaTkxNV9kbWFfbWFwX3B4X3Np bmdsZShwbWw0LCBwcGd0dC0+YmFzZS5kZXYpOwo+ICsKPiArICAgICAgIHJldHVybiAwOwo+ICt9 Cj4gKwo+ICAvKiBCcm9hZHdlbGwgUGFnZSBEaXJlY3RvcnkgUG9pbnRlciBEZXNjcmlwdG9ycyAq Lwo+ICBzdGF0aWMgaW50IGdlbjhfd3JpdGVfcGRwKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJp bmcsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBlbnRyeSwKPiBAQCAtNzEy LDE0ICs3NjksMTMgQEAgc3RhdGljIHZvaWQgZ2VuOF9mcmVlX3BhZ2VfdGFibGVzKHN0cnVjdCBp OTE1X3BhZ2VfZGlyZWN0b3J5X2VudHJ5ICpwZCwgc3RydWN0IGQKPiAgICAgICAgIH0KPiAgfQo+ Cj4gLXN0YXRpYyB2b2lkIGdlbjhfcHBndHRfdW5tYXBfcGFnZXMoc3RydWN0IGk5MTVfaHdfcHBn dHQgKnBwZ3R0KQo+ICtzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X3VubWFwX3BhZ2VzXzNsdmwoc3Ry dWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlcl9lbnRyeSAqcGRwLAo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICB7 Cj4gLSAgICAgICBzdHJ1Y3QgcGNpX2RldiAqaHdkZXYgPSBwcGd0dC0+YmFzZS5kZXYtPnBkZXY7 Cj4gLSAgICAgICBzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyX2VudHJ5ICpwZHAg PSAmcHBndHQtPnBkcDsgLyogRklYTUU6IDQ4YiAqLwo+ICsgICAgICAgc3RydWN0IHBjaV9kZXYg Kmh3ZGV2ID0gZGV2LT5wZGV2Owo+ICAgICAgICAgaW50IGksIGo7Cj4KPiAtICAgICAgIGZvcl9l YWNoX3NldF9iaXQoaSwgcGRwLT51c2VkX3BkcGVzLAo+IC0gICAgICAgICAgICAgICAgICAgICAg IEk5MTVfUERQRVNfUEVSX1BEUChwcGd0dC0+YmFzZS5kZXYpKSB7Cj4gKyAgICAgICBmb3JfZWFj aF9zZXRfYml0KGksIHBkcC0+dXNlZF9wZHBlcywgSTkxNV9QRFBFU19QRVJfUERQKGRldikpIHsK PiAgICAgICAgICAgICAgICAgc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfZW50cnkgKnBkOwo+ Cj4gICAgICAgICAgICAgICAgIGlmIChXQVJOX09OKCFwZHAtPnBhZ2VfZGlyZWN0b3J5W2ldKSkK PiBAQCAtNzQ3LDI3ICs4MDMsNzMgQEAgc3RhdGljIHZvaWQgZ2VuOF9wcGd0dF91bm1hcF9wYWdl cyhzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCj4gICAgICAgICB9Cj4gIH0KPgo+IC1zdGF0 aWMgdm9pZCBnZW44X3BwZ3R0X2ZyZWUoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQo+ICtz dGF0aWMgdm9pZCBnZW44X3BwZ3R0X3VubWFwX3BhZ2VzXzRsdmwoc3RydWN0IGk5MTVfaHdfcHBn dHQgKnBwZ3R0KQo+ICB7Cj4gKyAgICAgICBzdHJ1Y3QgcGNpX2RldiAqaHdkZXYgPSBwcGd0dC0+ YmFzZS5kZXYtPnBkZXY7Cj4gICAgICAgICBpbnQgaTsKPgo+IC0gICAgICAgaWYgKCFVU0VTX0ZV TExfNDhCSVRfUFBHVFQocHBndHQtPmJhc2UuZGV2KSkgewo+IC0gICAgICAgICAgICAgICBmb3Jf ZWFjaF9zZXRfYml0KGksIHBwZ3R0LT5wZHAudXNlZF9wZHBlcywKPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBJOTE1X1BEUEVTX1BFUl9QRFAocHBndHQtPmJhc2UuZGV2KSkgewo+ IC0gICAgICAgICAgICAgICAgICAgICAgIGlmIChXQVJOX09OKCFwcGd0dC0+cGRwLnBhZ2VfZGly ZWN0b3J5W2ldKSkKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ ICsgICAgICAgZm9yX2VhY2hfc2V0X2JpdChpLCBwcGd0dC0+cG1sNC51c2VkX3BtbDRlcywgR0VO OF9QTUw0RVNfUEVSX1BNTDQpIHsKPiArICAgICAgICAgICAgICAgc3RydWN0IGk5MTVfcGFnZV9k aXJlY3RvcnlfcG9pbnRlcl9lbnRyeSAqcGRwOwo+Cj4gLSAgICAgICAgICAgICAgICAgICAgICAg Z2VuOF9mcmVlX3BhZ2VfdGFibGVzKHBwZ3R0LT5wZHAucGFnZV9kaXJlY3RvcnlbaV0sCj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBwZ3R0LT5iYXNlLmRl dik7Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgdW5tYXBfYW5kX2ZyZWVfcGQocHBndHQtPnBk cC5wYWdlX2RpcmVjdG9yeVtpXSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwcGd0dC0+YmFzZS5kZXYpOwo+IC0gICAgICAgICAgICAgICB9Cj4gLSAgICAgICAg ICAgICAgIHVubWFwX2FuZF9mcmVlX3BkcCgmcHBndHQtPnBkcCwgcHBndHQtPmJhc2UuZGV2KTsK PiAtICAgICAgIH0gZWxzZSB7Cj4gLSAgICAgICAgICAgICAgIEJVRygpOyAvKiB0byBiZSBpbXBs ZW1lbnRlZCBsYXRlciAqLwo+ICsgICAgICAgICAgICAgICBpZiAoV0FSTl9PTighcHBndHQtPnBt bDQucGRwc1tpXSkpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4gKwo+ICsg ICAgICAgICAgICAgICBwZHAgPSBwcGd0dC0+cG1sNC5wZHBzW2ldOwo+ICsgICAgICAgICAgICAg ICBpZiAoIXBkcC0+ZGFkZHIpCgpTaG91bGQgdGhpcyAnaWYnIGNvbmRpdGlvbiBiZSBvdGhlciB3 YXkgcm91bmQgPyBpLmUuICdpZiAocGRwLT5kYWRkciknLgpTYW1lIGFwcGxpZXMgdG8gZ2VuOF9w cGd0dF91bm1hcF9wYWdlc18zbHZsIGFsc28gZm9yIHVuLW1hcHBpbmcgb2YgcGQgcGFnZS4KCgo+ ICsgICAgICAgICAgICAgICAgICAgICAgIHBjaV91bm1hcF9wYWdlKGh3ZGV2LCBwZHAtPmRhZGRy LCBQQUdFX1NJWkUsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJ X0RNQV9CSURJUkVDVElPTkFMKTsKPiArCj4gKyAgICAgICAgICAgICAgIGdlbjhfcHBndHRfdW5t YXBfcGFnZXNfM2x2bChwcGd0dC0+cG1sNC5wZHBzW2ldLAo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcHBndHQtPmJhc2UuZGV2KTsKPiAgICAgICAgIH0KPiAg fQo+Cj4gK3N0YXRpYyB2b2lkIGdlbjhfcHBndHRfdW5tYXBfcGFnZXMoc3RydWN0IGk5MTVfaHdf cHBndHQgKnBwZ3R0KQo+ICt7Cj4gKyAgICAgICBpZiAoIVVTRVNfRlVMTF80OEJJVF9QUEdUVChw cGd0dC0+YmFzZS5kZXYpKQo+ICsgICAgICAgICAgICAgICBnZW44X3BwZ3R0X3VubWFwX3BhZ2Vz XzNsdmwoJnBwZ3R0LT5wZHAsIHBwZ3R0LT5iYXNlLmRldik7Cj4gKyAgICAgICBlbHNlCj4gKyAg ICAgICAgICAgICAgIGdlbjhfcHBndHRfdW5tYXBfcGFnZXNfNGx2bChwcGd0dCk7Cj4gK30KPiAr Cj4gK3N0YXRpYyB2b2lkIGdlbjhfcHBndHRfZnJlZV8zbHZsKHN0cnVjdCBpOTE1X3BhZ2VfZGly ZWN0b3J5X3BvaW50ZXJfZW50cnkgKnBkcCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICt7Cj4gKyAgICAgICBpbnQgaTsKPiArCj4g KyAgICAgICBmb3JfZWFjaF9zZXRfYml0KGksIHBkcC0+dXNlZF9wZHBlcywgSTkxNV9QRFBFU19Q RVJfUERQKGRldikpIHsKPiArICAgICAgICAgICAgICAgaWYgKFdBUk5fT04oIXBkcC0+cGFnZV9k aXJlY3RvcnlbaV0pKQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ICsKPiAr ICAgICAgICAgICAgICAgZ2VuOF9mcmVlX3BhZ2VfdGFibGVzKHBkcC0+cGFnZV9kaXJlY3Rvcnlb aV0sIGRldik7Cj4gKyAgICAgICAgICAgICAgIHVubWFwX2FuZF9mcmVlX3BkKHBkcC0+cGFnZV9k aXJlY3RvcnlbaV0sIGRldik7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgdW5tYXBfYW5kX2Zy ZWVfcGRwKHBkcCwgZGV2KTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZ2VuOF9wcGd0dF9mcmVl XzRsdmwoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQo+ICt7Cj4gKyAgICAgICBpbnQgaTsK PiArCj4gKyAgICAgICBmb3JfZWFjaF9zZXRfYml0KGksIHBwZ3R0LT5wbWw0LnVzZWRfcG1sNGVz LCBHRU44X1BNTDRFU19QRVJfUE1MNCkgewo+ICsgICAgICAgICAgICAgICBpZiAoV0FSTl9PTigh cHBndHQtPnBtbDQucGRwc1tpXSkpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7 Cj4gKwo+ICsgICAgICAgICAgICAgICBnZW44X3BwZ3R0X2ZyZWVfM2x2bChwcGd0dC0+cG1sNC5w ZHBzW2ldLCBwcGd0dC0+YmFzZS5kZXYpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIHBtbDRf ZmluaSgmcHBndHQtPnBtbDQpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X2Zy ZWUoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQo+ICt7Cj4gKyAgICAgICBpZiAoIVVTRVNf RlVMTF80OEJJVF9QUEdUVChwcGd0dC0+YmFzZS5kZXYpKQo+ICsgICAgICAgICAgICAgICBnZW44 X3BwZ3R0X2ZyZWVfM2x2bCgmcHBndHQtPnBkcCwgcHBndHQtPmJhc2UuZGV2KTsKPiArICAgICAg IGVsc2UKPiArICAgICAgICAgICAgICAgZ2VuOF9wcGd0dF9mcmVlXzRsdmwocHBndHQpOwo+ICt9 Cj4gKwo+ICBzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X2NsZWFudXAoc3RydWN0IGk5MTVfYWRkcmVz c19zcGFjZSAqdm0pCj4gIHsKPiAgICAgICAgIHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCA9 Cj4gQEAgLTEwNDAsMTIgKzExNDIsNzQgQEAgZXJyX291dDoKPiAgICAgICAgIHJldHVybiByZXQ7 Cj4gIH0KPgo+IC1zdGF0aWMgaW50IF9fbm9yZXR1cm4gZ2VuOF9hbGxvY192YV9yYW5nZV80bHZs KHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGk5MTVfcG1sNCAqcG1sNCwKPiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHN0YXJ0LAo+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3Qg bGVuZ3RoKQo+ICtzdGF0aWMgaW50IGdlbjhfYWxsb2NfdmFfcmFuZ2VfNGx2bChzdHJ1Y3QgaTkx NV9hZGRyZXNzX3NwYWNlICp2bSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgaTkxNV9wbWw0ICpwbWw0LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVpbnQ2NF90IHN0YXJ0LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVpbnQ2NF90IGxlbmd0aCkKPiAgewo+IC0gICAgICAgQlVHKCk7IC8qIHRvIGJlIGltcGxl bWVudGVkIGxhdGVyICovCj4gKyAgICAgICBERUNMQVJFX0JJVE1BUChuZXdfcGRwcywgR0VOOF9Q TUw0RVNfUEVSX1BNTDQpOwo+ICsgICAgICAgc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0ID0K PiArICAgICAgICAgICAgICAgY29udGFpbmVyX29mKHZtLCBzdHJ1Y3QgaTkxNV9od19wcGd0dCwg YmFzZSk7Cj4gKyAgICAgICBzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyX2VudHJ5 ICpwZHA7Cj4gKyAgICAgICBjb25zdCB1aW50NjRfdCBvcmlnX3N0YXJ0ID0gc3RhcnQ7Cj4gKyAg ICAgICBjb25zdCB1aW50NjRfdCBvcmlnX2xlbmd0aCA9IGxlbmd0aDsKPiArICAgICAgIHVpbnQ2 NF90IHRlbXAsIHBtbDRlOwo+ICsgICAgICAgaW50IHJldCA9IDA7Cj4gKwo+ICsgICAgICAgLyog RG8gdGhlIHBtbDQgYWxsb2NhdGlvbnMgZmlyc3QsIHNvIHdlIGRvbid0IG5lZWQgdG8gdHJhY2sg dGhlIG5ld2x5Cj4gKyAgICAgICAgKiBhbGxvY2F0ZWQgdGFibGVzIGJlbG93IHRoZSBwZHAgKi8K PiArICAgICAgIGJpdG1hcF96ZXJvKG5ld19wZHBzLCBHRU44X1BNTDRFU19QRVJfUE1MNCk7Cj4g Kwo+ICsgICAgICAgLyogVGhlIHBhZ2VfZGlyZWN0b3J5ZWN0b3J5IGFuZCBwYWdldGFibGUgYWxs b2NhdGlvbnMgYXJlIGRvbmUgaW4gdGhlIHNoYXJlZCAzCj4gKyAgICAgICAgKiBhbmQgNCBsZXZl bCBjb2RlLiBKdXN0IGFsbG9jYXRlIHRoZSBwZHBzLgo+ICsgICAgICAgICovCj4gKyAgICAgICBn ZW44X2Zvcl9lYWNoX3BtbDRlKHBkcCwgcG1sNCwgc3RhcnQsIGxlbmd0aCwgdGVtcCwgcG1sNGUp IHsKPiArICAgICAgICAgICAgICAgaWYgKCFwZHApIHsKPiArICAgICAgICAgICAgICAgICAgICAg ICBXQVJOX09OKHRlc3RfYml0KHBtbDRlLCBwbWw0LT51c2VkX3BtbDRlcykpOwo+ICsgICAgICAg ICAgICAgICAgICAgICAgIHBkcCA9IGFsbG9jX3BkcF9zaW5nbGUocHBndHQsIHBtbDQpOwo+ICsg ICAgICAgICAgICAgICAgICAgICAgIGlmIChJU19FUlIocGRwKSkKPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGdvdG8gZXJyX2FsbG9jOwo+ICsKPiArICAgICAgICAgICAgICAgICAg ICAgICBwbWw0LT5wZHBzW3BtbDRlXSA9IHBkcDsKPiArICAgICAgICAgICAgICAgICAgICAgICBz ZXRfYml0KHBtbDRlLCBuZXdfcGRwcyk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgdHJhY2Vf aTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyX2VudHJ5X2FsbG9jKCZwcGd0dC0+YmFzZSwgcG1s NGUsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cG1sNGUgPDwgR0VOOF9QTUw0RV9TSElGVCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHRU44X1BNTDRFX1NISUZUKTsKPiArCj4gKyAgICAgICAg ICAgICAgIH0KPiArICAgICAgIH0KPiArCj4gKyAgICAgICBXQVJOKGJpdG1hcF93ZWlnaHQobmV3 X3BkcHMsIEdFTjhfUE1MNEVTX1BFUl9QTUw0KSA+IDIsCj4gKyAgICAgICAgICAgICJUaGUgYWxs b2NhdGlvbiBoYXMgc3Bhbm5lZCBtb3JlIHRoYW4gNTEyR0IuICIKPiArICAgICAgICAgICAgIkl0 IGlzIGhpZ2hseSBsaWtlbHkgdGhpcyBpcyBpbmNvcnJlY3QuIik7Cj4gKwo+ICsgICAgICAgc3Rh cnQgPSBvcmlnX3N0YXJ0Owo+ICsgICAgICAgbGVuZ3RoID0gb3JpZ19sZW5ndGg7Cj4gKwo+ICsg ICAgICAgZ2VuOF9mb3JfZWFjaF9wbWw0ZShwZHAsIHBtbDQsIHN0YXJ0LCBsZW5ndGgsIHRlbXAs IHBtbDRlKSB7Cj4gKyAgICAgICAgICAgICAgIEJVR19PTighcGRwKTsKPiArCj4gKyAgICAgICAg ICAgICAgIHJldCA9IGdlbjhfYWxsb2NfdmFfcmFuZ2VfM2x2bCh2bSwgcGRwLCBzdGFydCwgbGVu Z3RoKTsKPiArICAgICAgICAgICAgICAgaWYgKHJldCkKPiArICAgICAgICAgICAgICAgICAgICAg ICBnb3RvIGVycl9vdXQ7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgYml0bWFwX29yKHBtbDQt PnVzZWRfcG1sNGVzLCBuZXdfcGRwcywgcG1sNC0+dXNlZF9wbWw0ZXMsCj4gKyAgICAgICAgICAg ICAgICAgR0VOOF9QTUw0RVNfUEVSX1BNTDQpOwo+ICsKPiArICAgICAgIHJldHVybiAwOwo+ICsK PiArZXJyX291dDoKPiArICAgICAgIHN0YXJ0ID0gb3JpZ19zdGFydDsKPiArICAgICAgIGxlbmd0 aCA9IG9yaWdfbGVuZ3RoOwo+ICsgICAgICAgZ2VuOF9mb3JfZWFjaF9wbWw0ZShwZHAsIHBtbDQs IHN0YXJ0LCBsZW5ndGgsIHRlbXAsIHBtbDRlKQo+ICsgICAgICAgICAgICAgICBnZW44X3BwZ3R0 X2ZyZWVfM2x2bChwZHAsIHZtLT5kZXYpOwo+ICsKPiArZXJyX2FsbG9jOgo+ICsgICAgICAgZm9y X2VhY2hfc2V0X2JpdChwbWw0ZSwgbmV3X3BkcHMsIEdFTjhfUE1MNEVTX1BFUl9QTUw0KQo+ICsg ICAgICAgICAgICAgICB1bm1hcF9hbmRfZnJlZV9wZHAocGRwLCB2bS0+ZGV2KTsKPiArCj4gKyAg ICAgICByZXR1cm4gcmV0Owo+ICB9Cj4KPiAgc3RhdGljIGludCBnZW44X2FsbG9jX3ZhX3Jhbmdl KHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+IEBAIC0xMDU0LDE2ICsxMjE4LDE5IEBA IHN0YXRpYyBpbnQgZ2VuOF9hbGxvY192YV9yYW5nZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNl ICp2bSwKPiAgICAgICAgIHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCA9Cj4gICAgICAgICAg ICAgICAgIGNvbnRhaW5lcl9vZih2bSwgc3RydWN0IGk5MTVfaHdfcHBndHQsIGJhc2UpOwo+Cj4g LSAgICAgICBpZiAoIVVTRVNfRlVMTF80OEJJVF9QUEdUVCh2bS0+ZGV2KSkKPiAtICAgICAgICAg ICAgICAgcmV0dXJuIGdlbjhfYWxsb2NfdmFfcmFuZ2VfM2x2bCh2bSwgJnBwZ3R0LT5wZHAsIHN0 YXJ0LCBsZW5ndGgpOwo+IC0gICAgICAgZWxzZQo+ICsgICAgICAgaWYgKFVTRVNfRlVMTF80OEJJ VF9QUEdUVCh2bS0+ZGV2KSkKPiAgICAgICAgICAgICAgICAgcmV0dXJuIGdlbjhfYWxsb2NfdmFf cmFuZ2VfNGx2bCh2bSwgJnBwZ3R0LT5wbWw0LCBzdGFydCwgbGVuZ3RoKTsKPiArICAgICAgIGVs c2UKPiArICAgICAgICAgICAgICAgcmV0dXJuIGdlbjhfYWxsb2NfdmFfcmFuZ2VfM2x2bCh2bSwg JnBwZ3R0LT5wZHAsIHN0YXJ0LCBsZW5ndGgpOwo+ICB9Cj4KPiAgc3RhdGljIHZvaWQgZ2VuOF9w cGd0dF9maW5pX2NvbW1vbihzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCj4gIHsKPiAgICAg ICAgIHVubWFwX2FuZF9mcmVlX3B0KHBwZ3R0LT5zY3JhdGNoX3BkLCBwcGd0dC0+YmFzZS5kZXYp Owo+IC0gICAgICAgdW5tYXBfYW5kX2ZyZWVfcGRwKCZwcGd0dC0+cGRwLCBwcGd0dC0+YmFzZS5k ZXYpOwo+ICsgICAgICAgaWYgKFVTRVNfRlVMTF80OEJJVF9QUEdUVChwcGd0dC0+YmFzZS5kZXYp KQo+ICsgICAgICAgICAgICAgICBwbWw0X2ZpbmkoJnBwZ3R0LT5wbWw0KTsKPiArICAgICAgIGVs c2UKPiArICAgICAgICAgICAgICAgdW5tYXBfYW5kX2ZyZWVfcGRwKCZwcGd0dC0+cGRwLCBwcGd0 dC0+YmFzZS5kZXYpOwo+ICB9Cj4KPiAgLyoqCj4gQEAgLTEwODYsMTQgKzEyNTMsMjEgQEAgc3Rh dGljIGludCBnZW44X3BwZ3R0X2luaXRfY29tbW9uKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0 dCwgdWludDY0X3Qgc2l6ZSkKPgo+ICAgICAgICAgcHBndHQtPnN3aXRjaF9tbSA9IGdlbjhfbW1f c3dpdGNoOwo+Cj4gLSAgICAgICBpZiAoIVVTRVNfRlVMTF80OEJJVF9QUEdUVChwcGd0dC0+YmFz ZS5kZXYpKSB7Cj4gKyAgICAgICBpZiAoVVNFU19GVUxMXzQ4QklUX1BQR1RUKHBwZ3R0LT5iYXNl LmRldikpIHsKPiArICAgICAgICAgICAgICAgaW50IHJldCA9IHBtbDRfaW5pdChwcGd0dCk7Cj4g KyAgICAgICAgICAgICAgIGlmIChyZXQpIHsKPiArICAgICAgICAgICAgICAgICAgICAgICB1bm1h cF9hbmRfZnJlZV9wdChwcGd0dC0+c2NyYXRjaF9wZCwgcHBndHQtPmJhc2UuZGV2KTsKPiArICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICsgICAgICAgICAgICAgICB9Cj4gKyAg ICAgICB9IGVsc2Ugewo+ICAgICAgICAgICAgICAgICBpbnQgcmV0ID0gX19wZHBfaW5pdCgmcHBn dHQtPnBkcCwgZmFsc2UpOwo+ICAgICAgICAgICAgICAgICBpZiAocmV0KSB7Cj4gICAgICAgICAg ICAgICAgICAgICAgICAgdW5tYXBfYW5kX2ZyZWVfcHQocHBndHQtPnNjcmF0Y2hfcGQsIHBwZ3R0 LT5iYXNlLmRldik7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiAgICAg ICAgICAgICAgICAgfQo+IC0gICAgICAgfSBlbHNlCj4gLSAgICAgICAgICAgICAgIHJldHVybiAt RVBFUk07IC8qIE5vdCB5ZXQgaW1wbGVtZW50ZWQgKi8KPiArCj4gKyAgICAgICAgICAgICAgIHRy YWNlX2k5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlcl9lbnRyeV9hbGxvYygmcHBndHQtPmJhc2Us IDAsIDAsIEdFTjhfUE1MNEVfU0hJRlQpOwo+ICsgICAgICAgfQo+Cj4gICAgICAgICByZXR1cm4g MDsKPiAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCj4gaW5kZXggMTQ0ODU4ZS4u MTQ3N2Y1NCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQu aAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCj4gQEAgLTg3LDYg Kzg3LDcgQEAgdHlwZWRlZiBnZW44X2d0dF9wdGVfdCBnZW44X3BwZ3R0X3BkZV90Owo+ICAgKi8K PiAgI2RlZmluZSBHRU44X1BNTDRFU19QRVJfUE1MNCAgICAgICAgICAgNTEyCj4gICNkZWZpbmUg R0VOOF9QTUw0RV9TSElGVCAgICAgICAgICAgICAgIDM5Cj4gKyNkZWZpbmUgR0VOOF9QTUw0RV9N QVNLICAgICAgICAgICAgICAgICAgICAgICAgKEdFTjhfUE1MNEVTX1BFUl9QTUw0IC0gMSkKPiAg I2RlZmluZSBHRU44X1BEUEVfU0hJRlQgICAgICAgICAgICAgICAgICAgICAgICAzMAo+ICAvKiBO QjogR0VOOF9QRFBFX01BU0sgaXMgdW50cnVlIGZvciAzMmIgcGxhdGZvcm1zLCBidXQgaXQgaGFz IG5vIGltcGFjdCBvbiAzMmIgcGFnZQo+ICAgKiB0YWJsZXMgKi8KPiBAQCAtNDI3LDYgKzQyOCwx NCBAQCBzdGF0aWMgaW5saW5lIHVpbnQzMl90IGdlbjZfcGRlX2luZGV4KHVpbnQzMl90IGFkZHIp Cj4gICAgICAgICAgICAgIHRlbXAgPSBtaW4odGVtcCwgbGVuZ3RoKSwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAo+ICAgICAgICAgICAgICBzdGFydCArPSB0ZW1wLCBsZW5ndGgg LT0gdGVtcCkKPgo+ICsjZGVmaW5lIGdlbjhfZm9yX2VhY2hfcG1sNGUocGRwLCBwbWw0LCBzdGFy dCwgbGVuZ3RoLCB0ZW1wLCBpdGVyKSAgICAgIFwKPiArICAgICAgIGZvciAoaXRlciA9IGdlbjhf cG1sNGVfaW5kZXgoc3RhcnQpLCBwZHAgPSAocG1sNCktPnBkcHNbaXRlcl07ICBcCj4gKyAgICAg ICAgICAgIGxlbmd0aCA+IDAgJiYgaXRlciA8IEdFTjhfUE1MNEVTX1BFUl9QTUw0OyAgICAgICAg ICAgICAgICAgXAo+ICsgICAgICAgICAgICBwZHAgPSAocG1sNCktPnBkcHNbKytpdGVyXSwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgdGVtcCA9IEFMSUdO KHN0YXJ0KzEsIDFVTEwgPDwgR0VOOF9QTUw0RV9TSElGVCkgLSBzdGFydCwgICBcCj4gKyAgICAg ICAgICAgIHRlbXAgPSBtaW4odGVtcCwgbGVuZ3RoKSwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAo+ICsgICAgICAgICAgICBzdGFydCArPSB0ZW1wLCBsZW5ndGggLT0gdGVtcCkK PiArCj4gICNkZWZpbmUgZ2VuOF9mb3JfZWFjaF9wZHBlKHBkLCBwZHAsIHN0YXJ0LCBsZW5ndGgs IHRlbXAsIGl0ZXIpICAgICAgICAgXAo+ICAgICAgICAgZ2VuOF9mb3JfZWFjaF9wZHBlX2UocGQs IHBkcCwgc3RhcnQsIGxlbmd0aCwgdGVtcCwgaXRlciwgSTkxNV9QRFBFU19QRVJfUERQKGRldikp Cj4KPiBAQCAtNDU4LDcgKzQ2Nyw3IEBAIHN0YXRpYyBpbmxpbmUgdWludDMyX3QgZ2VuOF9wZHBl X2luZGV4KHVpbnQ2NF90IGFkZHJlc3MpCj4KPiAgc3RhdGljIGlubGluZSB1aW50MzJfdCBnZW44 X3BtbDRlX2luZGV4KHVpbnQ2NF90IGFkZHJlc3MpCj4gIHsKPiAtICAgICAgIEJVRygpOyAvKiBG b3IgNjRCICovCj4gKyAgICAgICByZXR1cm4gKGFkZHJlc3MgPj4gR0VOOF9QTUw0RV9TSElGVCkg JiBHRU44X1BNTDRFX01BU0s7Cj4gIH0KPgo+ICBzdGF0aWMgaW5saW5lIHNpemVfdCBnZW44X3B0 ZV9jb3VudCh1aW50NjRfdCBhZGRyLCB1aW50NjRfdCBsZW5ndGgpCj4gLS0KPiAyLjEuMQo+Cj4g X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1n ZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHA6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK