From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH] drm/i915: page table abstractions Date: Tue, 24 Feb 2015 14:03:50 +0200 Message-ID: <87mw43frdl.fsf@gaia.fi.intel.com> References: <1424706272-3016-2-git-send-email-michel.thierry@intel.com> <1424776462-25328-1-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 mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 33FD66E40B for ; Tue, 24 Feb 2015 04:04:05 -0800 (PST) In-Reply-To: <1424776462-25328-1-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 , intel-gfx@lists.freedesktop.org Cc: Ben Widawsky List-Id: intel-gfx@lists.freedesktop.org TWljaGVsIFRoaWVycnkgPG1pY2hlbC50aGllcnJ5QGludGVsLmNvbT4gd3JpdGVzOgoKPiBGcm9t OiBCZW4gV2lkYXdza3kgPGJlbmphbWluLndpZGF3c2t5QGludGVsLmNvbT4KPgo+IFdoZW4gd2Ug bW92ZSB0byBkeW5hbWljIHBhZ2UgYWxsb2NhdGlvbiwga2VlcGluZyBwYWdlX2RpcmVjdG9yeSBh bmQgcGFnZXRhYnMgYXMKPiBzZXBhcmF0ZSBzdHJ1Y3R1cmVzIHdpbGwgaGVscCB0byBicmVhayBh Y3Rpb25zIGludG8gc2ltcGxlciB0YXNrcy4KPgo+IFRvIGhlbHAgdHJhbnNpdGlvbiB0aGUgY29k ZSBuaWNlbHkgdGhlcmUgaXMgc29tZSB3YXN0ZWQgc3BhY2UgaW4gZ2VuNi83Lgo+IFRoaXMgd2ls bCBiZSBhbWVsaW9yYXRlZCBzaG9ydGx5Lgo+Cj4gRm9sbG93aW5nIHRoZSB4ODYgcGFnZXRhYmxl IHRlcm1pbm9sb2d5Ogo+IFBEUEUgPSBzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVy X2VudHJ5Lgo+IFBERSA9IHN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5X2VudHJ5IFtwYWdlX2Rp cmVjdG9yeV0uCj4gUFRFID0gc3RydWN0IGk5MTVfcGFnZV90YWJsZV9lbnRyeSBbcGFnZV90YWJs ZXNdLgo+Cj4gdjI6IGZpeGVkIG1pc21hdGNoZXMgYWZ0ZXIgY2xlYW4tdXAvcmViYXNlLgo+Cj4g djM6IENsYXJpZnkgdGhlIG5hbWVzIG9mIHRoZSBtdWx0aXBsZSBsZXZlbHMgb2YgcGFnZSB0YWJs ZXMgKERhbmllbCkKPgo+IHY0OiBBZGRyZXNzaW5nIE1pa2EncyByZXZpZXcgY29tbWVudHMuCj4g cy9nZW44X2ZyZWVfcGFnZV9kaXJlY3Rvcmllcy9nZW44X2ZyZWVfcGFnZV9kaXJlY3RvcnkgYW5k IGZyZWUgdGhlCj4gcGFnZSB0YWJsZXMgZm9yIHRoZSBkaXJlY3RvcnkgdGhlcmUuCj4gSW4gZ2Vu OF9wcGd0dF9hbGxvY2F0ZV9wYWdlX2RpcmVjdG9yaWVzLCBkbyBub3QgbGVhayBwcmV2aW91c2x5 IGFsbG9jYXRlZAo+IHB0IGluIGNhc2UgdGhlIHBhZ2VfZGlyZWN0b3J5IGFsbG9jIGZhaWxzLgo+ IFVwZGF0ZSBlcnJvciByZXR1cm4gaGFuZGxpbmcgaW4gZ2VuOF9wcGd0dF9hbGxvYy4KPgo+IHY1 OiBEbyBub3QgbGVhayBwdCBvbiBlcnJvciBpbiBnZW42X3BwZ3R0X2FsbG9jYXRlX3BhZ2VfdGFi bGVzLiAoTWlrYSkKPgo+IENjOiBNaWthIEt1b3BwYWxhIDxtaWthLmt1b3BwYWxhQGxpbnV4Lmlu dGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBCZW4gV2lkYXdza3kgPGJlbkBid2lkYXdzay5uZXQ+ Cj4gU2lnbmVkLW9mZi1ieTogTWljaGVsIFRoaWVycnkgPG1pY2hlbC50aGllcnJ5QGludGVsLmNv bT4gKHYyKykKClJldmlld2VkLWJ5OiBNaWthIEt1b3BwYWxhIDxtaWthLmt1b3BwYWxhQGludGVs LmNvbT4KCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jIHwgMTgw ICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9ndHQuaCB8ICAyMyArKysrLQo+ICAyIGZpbGVzIGNoYW5nZWQsIDExMSBp bnNlcnRpb25zKCspLCA5MiBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2d0dC5jCj4gaW5kZXggZTU0YjJhMC4uYjRkZWUzNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2d0dC5jCj4gQEAgLTMzOCw3ICszMzgsOCBAQCBzdGF0aWMgdm9pZCBnZW44X3BwZ3R0 X2NsZWFyX3JhbmdlKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+ICAJCQkJICAgICAg STkxNV9DQUNIRV9MTEMsIHVzZV9zY3JhdGNoKTsKPiAgCj4gIAl3aGlsZSAobnVtX2VudHJpZXMp IHsKPiAtCQlzdHJ1Y3QgcGFnZSAqcGFnZV90YWJsZSA9IHBwZ3R0LT5nZW44X3B0X3BhZ2VzW3Bk cGVdW3BkZV07Cj4gKwkJc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfZW50cnkgKnBkID0gJnBw Z3R0LT5wZHAucGFnZV9kaXJlY3RvcnlbcGRwZV07Cj4gKwkJc3RydWN0IHBhZ2UgKnBhZ2VfdGFi bGUgPSBwZC0+cGFnZV90YWJsZXNbcGRlXS5wYWdlOwo+ICAKPiAgCQlsYXN0X3B0ZSA9IHB0ZSAr IG51bV9lbnRyaWVzOwo+ICAJCWlmIChsYXN0X3B0ZSA+IEdFTjhfUFRFU19QRVJfUEFHRSkKPiBA QCAtMzgyLDggKzM4MywxMiBAQCBzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X2luc2VydF9lbnRyaWVz KHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+ICAJCWlmIChXQVJOX09OKHBkcGUgPj0g R0VOOF9MRUdBQ1lfUERQRVMpKQo+ICAJCQlicmVhazsKPiAgCj4gLQkJaWYgKHB0X3ZhZGRyID09 IE5VTEwpCj4gLQkJCXB0X3ZhZGRyID0ga21hcF9hdG9taWMocHBndHQtPmdlbjhfcHRfcGFnZXNb cGRwZV1bcGRlXSk7Cj4gKwkJaWYgKHB0X3ZhZGRyID09IE5VTEwpIHsKPiArCQkJc3RydWN0IGk5 MTVfcGFnZV9kaXJlY3RvcnlfZW50cnkgKnBkID0gJnBwZ3R0LT5wZHAucGFnZV9kaXJlY3Rvcnlb cGRwZV07Cj4gKwkJCXN0cnVjdCBwYWdlICpwYWdlX3RhYmxlID0gcGQtPnBhZ2VfdGFibGVzW3Bk ZV0ucGFnZTsKPiArCj4gKwkJCXB0X3ZhZGRyID0ga21hcF9hdG9taWMocGFnZV90YWJsZSk7Cj4g KwkJfQo+ICAKPiAgCQlwdF92YWRkcltwdGVdID0KPiAgCQkJZ2VuOF9wdGVfZW5jb2RlKHNnX3Bh Z2VfaXRlcl9kbWFfYWRkcmVzcygmc2dfaXRlciksCj4gQEAgLTQwNywyOSArNDEyLDMzIEBAIHN0 YXRpYyB2b2lkIGdlbjhfcHBndHRfaW5zZXJ0X2VudHJpZXMoc3RydWN0IGk5MTVfYWRkcmVzc19z cGFjZSAqdm0sCj4gIAl9Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIGdlbjhfZnJlZV9wYWdlX3Rh YmxlcyhzdHJ1Y3QgcGFnZSAqKnB0X3BhZ2VzKQo+ICtzdGF0aWMgdm9pZCBnZW44X2ZyZWVfcGFn ZV90YWJsZXMoc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfZW50cnkgKnBkKQo+ICB7Cj4gIAlp bnQgaTsKPiAgCj4gLQlpZiAocHRfcGFnZXMgPT0gTlVMTCkKPiArCWlmIChwZC0+cGFnZV90YWJs ZXMgPT0gTlVMTCkKPiAgCQlyZXR1cm47Cj4gIAo+ICAJZm9yIChpID0gMDsgaSA8IEdFTjhfUERF U19QRVJfUEFHRTsgaSsrKQo+IC0JCWlmIChwdF9wYWdlc1tpXSkKPiAtCQkJX19mcmVlX3BhZ2Vz KHB0X3BhZ2VzW2ldLCAwKTsKPiArCQlpZiAocGQtPnBhZ2VfdGFibGVzW2ldLnBhZ2UpCj4gKwkJ CV9fZnJlZV9wYWdlKHBkLT5wYWdlX3RhYmxlc1tpXS5wYWdlKTsKPiAgfQo+ICAKPiAtc3RhdGlj IHZvaWQgZ2VuOF9wcGd0dF9mcmVlKGNvbnN0IHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkK PiArc3RhdGljIHZvaWQgZ2VuOF9mcmVlX3BhZ2VfZGlyZWN0b3J5KHN0cnVjdCBpOTE1X3BhZ2Vf ZGlyZWN0b3J5X2VudHJ5ICpwZCkKPiArewo+ICsJZ2VuOF9mcmVlX3BhZ2VfdGFibGVzKHBkKTsK PiArCWtmcmVlKHBkLT5wYWdlX3RhYmxlcyk7Cj4gKwlfX2ZyZWVfcGFnZShwZC0+cGFnZSk7Cj4g K30KPiArCj4gK3N0YXRpYyB2b2lkIGdlbjhfcHBndHRfZnJlZShzdHJ1Y3QgaTkxNV9od19wcGd0 dCAqcHBndHQpCj4gIHsKPiAgCWludCBpOwo+ICAKPiAgCWZvciAoaSA9IDA7IGkgPCBwcGd0dC0+ bnVtX3BkX3BhZ2VzOyBpKyspIHsKPiAtCQlnZW44X2ZyZWVfcGFnZV90YWJsZXMocHBndHQtPmdl bjhfcHRfcGFnZXNbaV0pOwo+IC0JCWtmcmVlKHBwZ3R0LT5nZW44X3B0X3BhZ2VzW2ldKTsKPiAr CQlnZW44X2ZyZWVfcGFnZV9kaXJlY3RvcnkoJnBwZ3R0LT5wZHAucGFnZV9kaXJlY3RvcnlbaV0p Owo+ICAJCWtmcmVlKHBwZ3R0LT5nZW44X3B0X2RtYV9hZGRyW2ldKTsKPiAgCX0KPiAtCj4gLQlf X2ZyZWVfcGFnZXMocHBndHQtPnBkX3BhZ2VzLCBnZXRfb3JkZXIocHBndHQtPm51bV9wZF9wYWdl cyA8PCBQQUdFX1NISUZUKSk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGdlbjhfcHBndHRfdW5t YXBfcGFnZXMoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQo+IEBAIC00NjQsODYgKzQ3Myw3 NyBAQCBzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X2NsZWFudXAoc3RydWN0IGk5MTVfYWRkcmVzc19z cGFjZSAqdm0pCj4gIAlnZW44X3BwZ3R0X2ZyZWUocHBndHQpOwo+ICB9Cj4gIAo+IC1zdGF0aWMg c3RydWN0IHBhZ2UgKipfX2dlbjhfYWxsb2NfcGFnZV90YWJsZXModm9pZCkKPiArc3RhdGljIGlu dCBnZW44X3BwZ3R0X2FsbG9jYXRlX2RtYShzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCj4g IHsKPiAtCXN0cnVjdCBwYWdlICoqcHRfcGFnZXM7Cj4gIAlpbnQgaTsKPiAgCj4gLQlwdF9wYWdl cyA9IGtjYWxsb2MoR0VOOF9QREVTX1BFUl9QQUdFLCBzaXplb2Yoc3RydWN0IHBhZ2UgKiksIEdG UF9LRVJORUwpOwo+IC0JaWYgKCFwdF9wYWdlcykKPiAtCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVN KTsKPiAtCj4gLQlmb3IgKGkgPSAwOyBpIDwgR0VOOF9QREVTX1BFUl9QQUdFOyBpKyspIHsKPiAt CQlwdF9wYWdlc1tpXSA9IGFsbG9jX3BhZ2UoR0ZQX0tFUk5FTCk7Cj4gLQkJaWYgKCFwdF9wYWdl c1tpXSkKPiAtCQkJZ290byBiYWlsOwo+ICsJZm9yIChpID0gMDsgaSA8IHBwZ3R0LT5udW1fcGRf cGFnZXM7IGkrKykgewo+ICsJCXBwZ3R0LT5nZW44X3B0X2RtYV9hZGRyW2ldID0ga2NhbGxvYyhH RU44X1BERVNfUEVSX1BBR0UsCj4gKwkJCQkJCSAgICAgc2l6ZW9mKGRtYV9hZGRyX3QpLAo+ICsJ CQkJCQkgICAgIEdGUF9LRVJORUwpOwo+ICsJCWlmICghcHBndHQtPmdlbjhfcHRfZG1hX2FkZHJb aV0pCj4gKwkJCXJldHVybiAtRU5PTUVNOwo+ICAJfQo+ICAKPiAtCXJldHVybiBwdF9wYWdlczsK PiAtCj4gLWJhaWw6Cj4gLQlnZW44X2ZyZWVfcGFnZV90YWJsZXMocHRfcGFnZXMpOwo+IC0Ja2Zy ZWUocHRfcGFnZXMpOwo+IC0JcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gKwlyZXR1cm4gMDsK PiAgfQo+ICAKPiAtc3RhdGljIGludCBnZW44X3BwZ3R0X2FsbG9jYXRlX3BhZ2VfdGFibGVzKHN0 cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKPiAtCQkJCQkgICBjb25zdCBpbnQgbWF4X3BkcCkK PiArc3RhdGljIGludCBnZW44X3BwZ3R0X2FsbG9jYXRlX3BhZ2VfdGFibGVzKHN0cnVjdCBpOTE1 X2h3X3BwZ3R0ICpwcGd0dCkKPiAgewo+IC0Jc3RydWN0IHBhZ2UgKipwdF9wYWdlc1tHRU44X0xF R0FDWV9QRFBFU107Cj4gLQlpbnQgaSwgcmV0Owo+ICsJaW50IGksIGo7Cj4gIAo+IC0JZm9yIChp ID0gMDsgaSA8IG1heF9wZHA7IGkrKykgewo+IC0JCXB0X3BhZ2VzW2ldID0gX19nZW44X2FsbG9j X3BhZ2VfdGFibGVzKCk7Cj4gLQkJaWYgKElTX0VSUihwdF9wYWdlc1tpXSkpIHsKPiAtCQkJcmV0 ID0gUFRSX0VSUihwdF9wYWdlc1tpXSk7Cj4gLQkJCWdvdG8gdW53aW5kX291dDsKPiArCWZvciAo aSA9IDA7IGkgPCBwcGd0dC0+bnVtX3BkX3BhZ2VzOyBpKyspIHsKPiArCQlmb3IgKGogPSAwOyBq IDwgR0VOOF9QREVTX1BFUl9QQUdFOyBqKyspIHsKPiArCQkJc3RydWN0IGk5MTVfcGFnZV90YWJs ZV9lbnRyeSAqcHQgPSAmcHBndHQtPnBkcC5wYWdlX2RpcmVjdG9yeVtpXS5wYWdlX3RhYmxlc1tq XTsKPiArCj4gKwkJCXB0LT5wYWdlID0gYWxsb2NfcGFnZShHRlBfS0VSTkVMIHwgX19HRlBfWkVS Tyk7Cj4gKwkJCWlmICghcHQtPnBhZ2UpCj4gKwkJCQlnb3RvIHVud2luZF9vdXQ7Cj4gIAkJfQo+ ICAJfQo+ICAKPiAtCS8qIE5COiBBdm9pZCB0b3VjaGluZyBnZW44X3B0X3BhZ2VzIHVudGlsIGxh c3QgdG8ga2VlcCB0aGUgYWxsb2NhdGlvbiwKPiAtCSAqICJhdG9taWMiIC0gZm9yIGNsZWFudXAg cHVycG9zZXMuCj4gLQkgKi8KPiAtCWZvciAoaSA9IDA7IGkgPCBtYXhfcGRwOyBpKyspCj4gLQkJ cHBndHQtPmdlbjhfcHRfcGFnZXNbaV0gPSBwdF9wYWdlc1tpXTsKPiAtCj4gIAlyZXR1cm4gMDsK PiAgCj4gIHVud2luZF9vdXQ6Cj4gLQl3aGlsZSAoaS0tKSB7Cj4gLQkJZ2VuOF9mcmVlX3BhZ2Vf dGFibGVzKHB0X3BhZ2VzW2ldKTsKPiAtCQlrZnJlZShwdF9wYWdlc1tpXSk7Cj4gLQl9Cj4gKwl3 aGlsZSAoaS0tKQo+ICsJCWdlbjhfZnJlZV9wYWdlX3RhYmxlcygmcHBndHQtPnBkcC5wYWdlX2Rp cmVjdG9yeVtpXSk7Cj4gIAo+IC0JcmV0dXJuIHJldDsKPiArCXJldHVybiAtRU5PTUVNOwo+ICB9 Cj4gIAo+IC1zdGF0aWMgaW50IGdlbjhfcHBndHRfYWxsb2NhdGVfZG1hKHN0cnVjdCBpOTE1X2h3 X3BwZ3R0ICpwcGd0dCkKPiArc3RhdGljIGludCBnZW44X3BwZ3R0X2FsbG9jYXRlX3BhZ2VfZGly ZWN0b3JpZXMoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LAo+ICsJCQkJCQljb25zdCBpbnQg bWF4X3BkcCkKPiAgewo+ICAJaW50IGk7Cj4gIAo+IC0JZm9yIChpID0gMDsgaSA8IHBwZ3R0LT5u dW1fcGRfcGFnZXM7IGkrKykgewo+IC0JCXBwZ3R0LT5nZW44X3B0X2RtYV9hZGRyW2ldID0ga2Nh bGxvYyhHRU44X1BERVNfUEVSX1BBR0UsCj4gLQkJCQkJCSAgICAgc2l6ZW9mKGRtYV9hZGRyX3Qp LAo+IC0JCQkJCQkgICAgIEdGUF9LRVJORUwpOwo+IC0JCWlmICghcHBndHQtPmdlbjhfcHRfZG1h X2FkZHJbaV0pCj4gLQkJCXJldHVybiAtRU5PTUVNOwo+IC0JfQo+ICsJZm9yIChpID0gMDsgaSA8 IG1heF9wZHA7IGkrKykgewo+ICsJCXN0cnVjdCBpOTE1X3BhZ2VfdGFibGVfZW50cnkgKnB0Owo+ ICAKPiAtCXJldHVybiAwOwo+IC19Cj4gKwkJcHQgPSBrY2FsbG9jKEdFTjhfUERFU19QRVJfUEFH RSwgc2l6ZW9mKCpwdCksIEdGUF9LRVJORUwpOwo+ICsJCWlmICghcHQpCj4gKwkJCWdvdG8gdW53 aW5kX291dDsKPiAgCj4gLXN0YXRpYyBpbnQgZ2VuOF9wcGd0dF9hbGxvY2F0ZV9wYWdlX2RpcmVj dG9yaWVzKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKPiAtCQkJCQkJY29uc3QgaW50IG1h eF9wZHApCj4gLXsKPiAtCXBwZ3R0LT5wZF9wYWdlcyA9IGFsbG9jX3BhZ2VzKEdGUF9LRVJORUws IGdldF9vcmRlcihtYXhfcGRwIDw8IFBBR0VfU0hJRlQpKTsKPiAtCWlmICghcHBndHQtPnBkX3Bh Z2VzKQo+IC0JCXJldHVybiAtRU5PTUVNOwo+ICsJCXBwZ3R0LT5wZHAucGFnZV9kaXJlY3Rvcnlb aV0ucGFnZSA9IGFsbG9jX3BhZ2UoR0ZQX0tFUk5FTCk7Cj4gKwkJaWYgKCFwcGd0dC0+cGRwLnBh Z2VfZGlyZWN0b3J5W2ldLnBhZ2UpIHsKPiArCQkJa2ZyZWUocHQpOwo+ICsJCQlnb3RvIHVud2lu ZF9vdXQ7Cj4gKwkJfQo+ICsKPiArCQlwcGd0dC0+cGRwLnBhZ2VfZGlyZWN0b3J5W2ldLnBhZ2Vf dGFibGVzID0gcHQ7Cj4gKwl9Cj4gIAo+IC0JcHBndHQtPm51bV9wZF9wYWdlcyA9IDEgPDwgZ2V0 X29yZGVyKG1heF9wZHAgPDwgUEFHRV9TSElGVCk7Cj4gKwlwcGd0dC0+bnVtX3BkX3BhZ2VzID0g bWF4X3BkcDsKPiAgCUJVR19PTihwcGd0dC0+bnVtX3BkX3BhZ2VzID4gR0VOOF9MRUdBQ1lfUERQ RVMpOwo+ICAKPiAgCXJldHVybiAwOwo+ICsKPiArdW53aW5kX291dDoKPiArCXdoaWxlIChpLS0p IHsKPiArCQlrZnJlZShwcGd0dC0+cGRwLnBhZ2VfZGlyZWN0b3J5W2ldLnBhZ2VfdGFibGVzKTsK PiArCQlfX2ZyZWVfcGFnZShwcGd0dC0+cGRwLnBhZ2VfZGlyZWN0b3J5W2ldLnBhZ2UpOwo+ICsJ fQo+ICsKPiArCXJldHVybiAtRU5PTUVNOwo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50IGdlbjhfcHBn dHRfYWxsb2Moc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LAo+IEBAIC01NTUsMTggKzU1NSwy MCBAQCBzdGF0aWMgaW50IGdlbjhfcHBndHRfYWxsb2Moc3RydWN0IGk5MTVfaHdfcHBndHQgKnBw Z3R0LAo+ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0Owo+ICAKPiAtCXJldCA9IGdlbjhfcHBn dHRfYWxsb2NhdGVfcGFnZV90YWJsZXMocHBndHQsIG1heF9wZHApOwo+IC0JaWYgKHJldCkgewo+ IC0JCV9fZnJlZV9wYWdlcyhwcGd0dC0+cGRfcGFnZXMsIGdldF9vcmRlcihtYXhfcGRwIDw8IFBB R0VfU0hJRlQpKTsKPiAtCQlyZXR1cm4gcmV0Owo+IC0JfQo+ICsJcmV0ID0gZ2VuOF9wcGd0dF9h bGxvY2F0ZV9wYWdlX3RhYmxlcyhwcGd0dCk7Cj4gKwlpZiAocmV0KQo+ICsJCWdvdG8gZXJyX291 dDsKPiAgCj4gIAlwcGd0dC0+bnVtX3BkX2VudHJpZXMgPSBtYXhfcGRwICogR0VOOF9QREVTX1BF Ul9QQUdFOwo+ICAKPiAgCXJldCA9IGdlbjhfcHBndHRfYWxsb2NhdGVfZG1hKHBwZ3R0KTsKPiAg CWlmIChyZXQpCj4gLQkJZ2VuOF9wcGd0dF9mcmVlKHBwZ3R0KTsKPiArCQlnb3RvIGVycl9vdXQ7 Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gIAo+ICtlcnJfb3V0Ogo+ICsJZ2VuOF9wcGd0dF9mcmVlKHBw Z3R0KTsKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4gQEAgLTU3Nyw3ICs1NzksNyBAQCBzdGF0 aWMgaW50IGdlbjhfcHBndHRfc2V0dXBfcGFnZV9kaXJlY3RvcmllcyhzdHJ1Y3QgaTkxNV9od19w cGd0dCAqcHBndHQsCj4gIAlpbnQgcmV0Owo+ICAKPiAgCXBkX2FkZHIgPSBwY2lfbWFwX3BhZ2Uo cHBndHQtPmJhc2UuZGV2LT5wZGV2LAo+IC0JCQkgICAgICAgJnBwZ3R0LT5wZF9wYWdlc1twZF0s IDAsCj4gKwkJCSAgICAgICBwcGd0dC0+cGRwLnBhZ2VfZGlyZWN0b3J5W3BkXS5wYWdlLCAwLAo+ ICAJCQkgICAgICAgUEFHRV9TSVpFLCBQQ0lfRE1BX0JJRElSRUNUSU9OQUwpOwo+ICAKPiAgCXJl dCA9IHBjaV9kbWFfbWFwcGluZ19lcnJvcihwcGd0dC0+YmFzZS5kZXYtPnBkZXYsIHBkX2FkZHIp Owo+IEBAIC01OTcsNyArNTk5LDcgQEAgc3RhdGljIGludCBnZW44X3BwZ3R0X3NldHVwX3BhZ2Vf dGFibGVzKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKPiAgCXN0cnVjdCBwYWdlICpwOwo+ ICAJaW50IHJldDsKPiAgCj4gLQlwID0gcHBndHQtPmdlbjhfcHRfcGFnZXNbcGRdW3B0XTsKPiAr CXAgPSBwcGd0dC0+cGRwLnBhZ2VfZGlyZWN0b3J5W3BkXS5wYWdlX3RhYmxlc1twdF0ucGFnZTsK PiAgCXB0X2FkZHIgPSBwY2lfbWFwX3BhZ2UocHBndHQtPmJhc2UuZGV2LT5wZGV2LAo+ICAJCQkg ICAgICAgcCwgMCwgUEFHRV9TSVpFLCBQQ0lfRE1BX0JJRElSRUNUSU9OQUwpOwo+ICAJcmV0ID0g cGNpX2RtYV9tYXBwaW5nX2Vycm9yKHBwZ3R0LT5iYXNlLmRldi0+cGRldiwgcHRfYWRkcik7Cj4g QEAgLTY1OCw3ICs2NjAsNyBAQCBzdGF0aWMgaW50IGdlbjhfcHBndHRfaW5pdChzdHJ1Y3QgaTkx NV9od19wcGd0dCAqcHBndHQsIHVpbnQ2NF90IHNpemUpCj4gIAkgKi8KPiAgCWZvciAoaSA9IDA7 IGkgPCBtYXhfcGRwOyBpKyspIHsKPiAgCQlnZW44X3BwZ3R0X3BkZV90ICpwZF92YWRkcjsKPiAt CQlwZF92YWRkciA9IGttYXBfYXRvbWljKCZwcGd0dC0+cGRfcGFnZXNbaV0pOwo+ICsJCXBkX3Zh ZGRyID0ga21hcF9hdG9taWMocHBndHQtPnBkcC5wYWdlX2RpcmVjdG9yeVtpXS5wYWdlKTsKPiAg CQlmb3IgKGogPSAwOyBqIDwgR0VOOF9QREVTX1BFUl9QQUdFOyBqKyspIHsKPiAgCQkJZG1hX2Fk ZHJfdCBhZGRyID0gcHBndHQtPmdlbjhfcHRfZG1hX2FkZHJbaV1bal07Cj4gIAkJCXBkX3ZhZGRy W2pdID0gZ2VuOF9wZGVfZW5jb2RlKHBwZ3R0LT5iYXNlLmRldiwgYWRkciwKPiBAQCAtNzIxLDcg KzcyMyw3IEBAIHN0YXRpYyB2b2lkIGdlbjZfZHVtcF9wcGd0dChzdHJ1Y3QgaTkxNV9od19wcGd0 dCAqcHBndHQsIHN0cnVjdCBzZXFfZmlsZSAqbSkKPiAgCQkJCSAgIGV4cGVjdGVkKTsKPiAgCQlz ZXFfcHJpbnRmKG0sICJcdFBERTogJXhcbiIsIHBkX2VudHJ5KTsKPiAgCj4gLQkJcHRfdmFkZHIg PSBrbWFwX2F0b21pYyhwcGd0dC0+cHRfcGFnZXNbcGRlXSk7Cj4gKwkJcHRfdmFkZHIgPSBrbWFw X2F0b21pYyhwcGd0dC0+cGQucGFnZV90YWJsZXNbcGRlXS5wYWdlKTsKPiAgCQlmb3IgKHB0ZSA9 IDA7IHB0ZSA8IEk5MTVfUFBHVFRfUFRfRU5UUklFUzsgcHRlKz00KSB7Cj4gIAkJCXVuc2lnbmVk IGxvbmcgdmEgPQo+ICAJCQkJKHBkZSAqIFBBR0VfU0laRSAqIEk5MTVfUFBHVFRfUFRfRU5UUklF UykgKwo+IEBAIC05MzYsNyArOTM4LDcgQEAgc3RhdGljIHZvaWQgZ2VuNl9wcGd0dF9jbGVhcl9y YW5nZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiAgCQlpZiAobGFzdF9wdGUgPiBJ OTE1X1BQR1RUX1BUX0VOVFJJRVMpCj4gIAkJCWxhc3RfcHRlID0gSTkxNV9QUEdUVF9QVF9FTlRS SUVTOwo+ICAKPiAtCQlwdF92YWRkciA9IGttYXBfYXRvbWljKHBwZ3R0LT5wdF9wYWdlc1thY3Rf cHRdKTsKPiArCQlwdF92YWRkciA9IGttYXBfYXRvbWljKHBwZ3R0LT5wZC5wYWdlX3RhYmxlc1th Y3RfcHRdLnBhZ2UpOwo+ICAKPiAgCQlmb3IgKGkgPSBmaXJzdF9wdGU7IGkgPCBsYXN0X3B0ZTsg aSsrKQo+ICAJCQlwdF92YWRkcltpXSA9IHNjcmF0Y2hfcHRlOwo+IEBAIC05NjUsNyArOTY3LDcg QEAgc3RhdGljIHZvaWQgZ2VuNl9wcGd0dF9pbnNlcnRfZW50cmllcyhzdHJ1Y3QgaTkxNV9hZGRy ZXNzX3NwYWNlICp2bSwKPiAgCXB0X3ZhZGRyID0gTlVMTDsKPiAgCWZvcl9lYWNoX3NnX3BhZ2Uo cGFnZXMtPnNnbCwgJnNnX2l0ZXIsIHBhZ2VzLT5uZW50cywgMCkgewo+ICAJCWlmIChwdF92YWRk ciA9PSBOVUxMKQo+IC0JCQlwdF92YWRkciA9IGttYXBfYXRvbWljKHBwZ3R0LT5wdF9wYWdlc1th Y3RfcHRdKTsKPiArCQkJcHRfdmFkZHIgPSBrbWFwX2F0b21pYyhwcGd0dC0+cGQucGFnZV90YWJs ZXNbYWN0X3B0XS5wYWdlKTsKPiAgCj4gIAkJcHRfdmFkZHJbYWN0X3B0ZV0gPQo+ICAJCQl2bS0+ cHRlX2VuY29kZShzZ19wYWdlX2l0ZXJfZG1hX2FkZHJlc3MoJnNnX2l0ZXIpLAo+IEBAIC0xMDAw LDggKzEwMDIsOSBAQCBzdGF0aWMgdm9pZCBnZW42X3BwZ3R0X2ZyZWUoc3RydWN0IGk5MTVfaHdf cHBndHQgKnBwZ3R0KQo+ICAKPiAgCWtmcmVlKHBwZ3R0LT5wdF9kbWFfYWRkcik7Cj4gIAlmb3Ig KGkgPSAwOyBpIDwgcHBndHQtPm51bV9wZF9lbnRyaWVzOyBpKyspCj4gLQkJX19mcmVlX3BhZ2Uo cHBndHQtPnB0X3BhZ2VzW2ldKTsKPiAtCWtmcmVlKHBwZ3R0LT5wdF9wYWdlcyk7Cj4gKwkJaWYg KHBwZ3R0LT5wZC5wYWdlX3RhYmxlc1tpXS5wYWdlKQo+ICsJCQlfX2ZyZWVfcGFnZShwcGd0dC0+ cGQucGFnZV90YWJsZXNbaV0ucGFnZSk7Cj4gKwlrZnJlZShwcGd0dC0+cGQucGFnZV90YWJsZXMp Owo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBnZW42X3BwZ3R0X2NsZWFudXAoc3RydWN0IGk5MTVf YWRkcmVzc19zcGFjZSAqdm0pCj4gQEAgLTEwNTgsMTcgKzEwNjEsMTggQEAgYWxsb2M6Cj4gIAo+ ICBzdGF0aWMgaW50IGdlbjZfcHBndHRfYWxsb2NhdGVfcGFnZV90YWJsZXMoc3RydWN0IGk5MTVf aHdfcHBndHQgKnBwZ3R0KQo+ICB7Cj4gKwlzdHJ1Y3QgaTkxNV9wYWdlX3RhYmxlX2VudHJ5ICpw dDsKPiAgCWludCBpOwo+ICAKPiAtCXBwZ3R0LT5wdF9wYWdlcyA9IGtjYWxsb2MocHBndHQtPm51 bV9wZF9lbnRyaWVzLCBzaXplb2Yoc3RydWN0IHBhZ2UgKiksCj4gLQkJCQkgIEdGUF9LRVJORUwp Owo+IC0KPiAtCWlmICghcHBndHQtPnB0X3BhZ2VzKQo+ICsJcHQgPSBrY2FsbG9jKHBwZ3R0LT5u dW1fcGRfZW50cmllcywgc2l6ZW9mKCpwdCksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFwdCkKPiAg CQlyZXR1cm4gLUVOT01FTTsKPiAgCj4gKwlwcGd0dC0+cGQucGFnZV90YWJsZXMgPSBwdDsKPiAr Cj4gIAlmb3IgKGkgPSAwOyBpIDwgcHBndHQtPm51bV9wZF9lbnRyaWVzOyBpKyspIHsKPiAtCQlw cGd0dC0+cHRfcGFnZXNbaV0gPSBhbGxvY19wYWdlKEdGUF9LRVJORUwpOwo+IC0JCWlmICghcHBn dHQtPnB0X3BhZ2VzW2ldKSB7Cj4gKwkJcHRbaV0ucGFnZSA9IGFsbG9jX3BhZ2UoR0ZQX0tFUk5F TCk7Cj4gKwkJaWYgKCFwdC0+cGFnZSkgewo+ICAJCQlnZW42X3BwZ3R0X2ZyZWUocHBndHQpOwo+ ICAJCQlyZXR1cm4gLUVOT01FTTsKPiAgCQl9Cj4gQEAgLTExMDgsOSArMTExMiwxMSBAQCBzdGF0 aWMgaW50IGdlbjZfcHBndHRfc2V0dXBfcGFnZV90YWJsZXMoc3RydWN0IGk5MTVfaHdfcHBndHQg KnBwZ3R0KQo+ICAJaW50IGk7Cj4gIAo+ICAJZm9yIChpID0gMDsgaSA8IHBwZ3R0LT5udW1fcGRf ZW50cmllczsgaSsrKSB7Cj4gKwkJc3RydWN0IHBhZ2UgKnBhZ2U7Cj4gIAkJZG1hX2FkZHJfdCBw dF9hZGRyOwo+ICAKPiAtCQlwdF9hZGRyID0gcGNpX21hcF9wYWdlKGRldi0+cGRldiwgcHBndHQt PnB0X3BhZ2VzW2ldLCAwLCA0MDk2LAo+ICsJCXBhZ2UgPSBwcGd0dC0+cGQucGFnZV90YWJsZXNb aV0ucGFnZTsKPiArCQlwdF9hZGRyID0gcGNpX21hcF9wYWdlKGRldi0+cGRldiwgcGFnZSwgMCwg NDA5NiwKPiAgCQkJCSAgICAgICBQQ0lfRE1BX0JJRElSRUNUSU9OQUwpOwo+ICAKPiAgCQlpZiAo cGNpX2RtYV9tYXBwaW5nX2Vycm9yKGRldi0+cGRldiwgcHRfYWRkcikpIHsKPiBAQCAtMTE1Nyw3 ICsxMTYzLDcgQEAgc3RhdGljIGludCBnZW42X3BwZ3R0X2luaXQoc3RydWN0IGk5MTVfaHdfcHBn dHQgKnBwZ3R0KQo+ICAJcHBndHQtPmJhc2UuaW5zZXJ0X2VudHJpZXMgPSBnZW42X3BwZ3R0X2lu c2VydF9lbnRyaWVzOwo+ICAJcHBndHQtPmJhc2UuY2xlYW51cCA9IGdlbjZfcHBndHRfY2xlYW51 cDsKPiAgCXBwZ3R0LT5iYXNlLnN0YXJ0ID0gMDsKPiAtCXBwZ3R0LT5iYXNlLnRvdGFsID0gIHBw Z3R0LT5udW1fcGRfZW50cmllcyAqIEk5MTVfUFBHVFRfUFRfRU5UUklFUyAqIFBBR0VfU0laRTsK PiArCXBwZ3R0LT5iYXNlLnRvdGFsID0gcHBndHQtPm51bV9wZF9lbnRyaWVzICogSTkxNV9QUEdU VF9QVF9FTlRSSUVTICogUEFHRV9TSVpFOwo+ICAJcHBndHQtPmRlYnVnX2R1bXAgPSBnZW42X2R1 bXBfcHBndHQ7Cj4gIAo+ICAJcHBndHQtPnBkX29mZnNldCA9Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fZ3R0LmgKPiBpbmRleCA4Zjc2OTkwLi5kOWJjMzc1IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZ3R0LmgKPiBAQCAtMTg3LDYgKzE4NywyMCBAQCBzdHJ1Y3QgaTkxNV92bWEg ewo+ICAJCQkgdTMyIGZsYWdzKTsKPiAgfTsKPiAgCj4gK3N0cnVjdCBpOTE1X3BhZ2VfdGFibGVf ZW50cnkgewo+ICsJc3RydWN0IHBhZ2UgKnBhZ2U7Cj4gK307Cj4gKwo+ICtzdHJ1Y3QgaTkxNV9w YWdlX2RpcmVjdG9yeV9lbnRyeSB7Cj4gKwlzdHJ1Y3QgcGFnZSAqcGFnZTsgLyogTlVMTCBmb3Ig R0VONi1HRU43ICovCj4gKwlzdHJ1Y3QgaTkxNV9wYWdlX3RhYmxlX2VudHJ5ICpwYWdlX3RhYmxl czsKPiArfTsKPiArCj4gK3N0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5X3BvaW50ZXJfZW50cnkg ewo+ICsJLyogc3RydWN0IHBhZ2UgKnBhZ2U7ICovCj4gKwlzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVj dG9yeV9lbnRyeSBwYWdlX2RpcmVjdG9yeVtHRU44X0xFR0FDWV9QRFBFU107Cj4gK307Cj4gKwo+ ICBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlIHsKPiAgCXN0cnVjdCBkcm1fbW0gbW07Cj4gIAlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2Owo+IEBAIC0yNzIsMTEgKzI4Niw2IEBAIHN0cnVjdCBpOTE1 X2h3X3BwZ3R0IHsKPiAgCXVuc2lnbmVkIG51bV9wZF9lbnRyaWVzOwo+ICAJdW5zaWduZWQgbnVt X3BkX3BhZ2VzOyAvKiBnZW44KyAqLwo+ICAJdW5pb24gewo+IC0JCXN0cnVjdCBwYWdlICoqcHRf cGFnZXM7Cj4gLQkJc3RydWN0IHBhZ2UgKipnZW44X3B0X3BhZ2VzW0dFTjhfTEVHQUNZX1BEUEVT XTsKPiAtCX07Cj4gLQlzdHJ1Y3QgcGFnZSAqcGRfcGFnZXM7Cj4gLQl1bmlvbiB7Cj4gIAkJdWlu dDMyX3QgcGRfb2Zmc2V0Owo+ICAJCWRtYV9hZGRyX3QgcGRfZG1hX2FkZHJbR0VOOF9MRUdBQ1lf UERQRVNdOwo+ICAJfTsKPiBAQCAtMjg0LDYgKzI5MywxMCBAQCBzdHJ1Y3QgaTkxNV9od19wcGd0 dCB7Cj4gIAkJZG1hX2FkZHJfdCAqcHRfZG1hX2FkZHI7Cj4gIAkJZG1hX2FkZHJfdCAqZ2VuOF9w dF9kbWFfYWRkcltHRU44X0xFR0FDWV9QRFBFU107Cj4gIAl9Owo+ICsJdW5pb24gewo+ICsJCXN0 cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5X3BvaW50ZXJfZW50cnkgcGRwOwo+ICsJCXN0cnVjdCBp OTE1X3BhZ2VfZGlyZWN0b3J5X2VudHJ5IHBkOwo+ICsJfTsKPiAgCj4gIAlzdHJ1Y3QgZHJtX2k5 MTVfZmlsZV9wcml2YXRlICpmaWxlX3ByaXY7Cj4gIAo+IC0tIAo+IDIuMS4xCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==