From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michel Thierry Subject: [PATCH v6 07/19] drm/i915/gen8: implement alloc/free for 4lvl Date: Wed, 29 Jul 2015 17:23:51 +0100 Message-ID: <1438187043-34267-8-git-send-email-michel.thierry@intel.com> References: <1438187043-34267-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 mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 3BB9D6EC27 for ; Wed, 29 Jul 2015 09:24:13 -0700 (PDT) In-Reply-To: <1438187043-34267-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: intel-gfx@lists.freedesktop.org Cc: akash.goel@intel.com List-Id: intel-gfx@lists.freedesktop.org UE1MNCBoYXMgbm8gc3BlY2lhbCBhdHRyaWJ1dGVzLCBhbmQgdGhlcmUgd2lsbCBhbHdheXMgYmUg YSBQTUw0LgpTbyBzaW1wbHkgaW5pdGlhbGl6ZSBpdCBhdCBjcmVhdGlvbiwgYW5kIGRlc3Ryb3kg aXQgYXQgdGhlIGVuZC4KClRoZSBjb2RlIGZvciA0bHZsIGlzIGFibGUgdG8gY2FsbCBpbnRvIHRo ZSBleGlzdGluZyAzbHZsIHBhZ2UgdGFibGUgY29kZQp0byBoYW5kbGUgYWxsIG9mIHRoZSBsb3dl ciBsZXZlbHMuCgp2MjogUmV0dXJuIHNvbWV0aGluZyBhdCB0aGUgZW5kIG9mIGdlbjhfYWxsb2Nf dmFfcmFuZ2VfNGx2bCB0byBrZWVwIHRoZQpjb21waWxlciBoYXBweS4gQW5kIGRlZmluZSByZXQg b25seSBpbiBvbmUgcGxhY2UuClVwZGF0ZWQgZ2VuOF9wcGd0dF91bm1hcF9wYWdlcyBhbmQgZ2Vu OF9wcGd0dF9mcmVlIHRvIGhhbmRsZSA0bHZsLgp2MzogVXNlIGk5MTVfZG1hX3VubWFwX3Npbmds ZSBpbnN0ZWFkIG9mIHBjaSBBUEkuIEZpeCBhCmNvdXBsZSBvZiBpbmNvcnJlY3QgY2hlY2tzIHdo ZW4gdW5tYXBwaW5nIHBkcCBhbmQgcGQgcGFnZXMgKEFrYXNoKS4KdjQ6IENhbGwgX19wZHBfZmlu aSBhbHNvIGZvciAzMmIgUFBHVFQuIENsZWFuIHVwIGFsbG9jX3BkcCBwYXJhbSBsaXN0Lgp2NTog UHJldmVudCAoaGFybWxlc3MpIG91dCBvZiByYW5nZSBhY2Nlc3MgaW4gZ2VuOF9mb3JfZWFjaF9w bWw0ZS4KdjY6IFNpbXBsaWZ5IGFsbG9jX3ZtYV9yYW5nZV80bHZsIGFuZCBnZW44X3BwZ3R0X2lu aXRfY29tbW9uIGVycm9yCnBhdGhzLiAoQWthc2gpCnY3OiBSZWJhc2UsIHMvZ2VuOF9wcGd0dF9m cmVlXyovZ2VuOF9wcGd0dF9jbGVhbnVwXyovLgp2ODogQ2hhbmdlIGxvY2F0aW9uIG9mIHBtbDRf aW5pdC9maW5pLiBJdCB3aWxsIG1ha2UgbmV4dCBwYXRjaGVzCmNsZWFuZXIuCnY5OiBSZWJhc2Ug YWZ0ZXIgTWlrYSdzIHBwZ3R0IGNsZWFudXAgLyBzY3JhdGNoIG1lcmdlIHBhdGNoIHNlcmllcywg d2hpbGUKdHJ5aW5nIHRvIHJldXNlIGFzIG11Y2ggYXMgcG9zc2libGUgZm9yIHBkcCBhbGxvYy4g cG1sNF9pbml0L2ZpbmkKcmVwbGFjZWQgYnkgc2V0dXAvY2xlYW51cF9weCBtYWNyb3MuCnYxMDog UmViYXNlIGFmdGVyIE1pa2EncyBtZXJnZWQgcHBndHQgY2xlYW51cCBwYXRjaCBzZXJpZXMuCnYx MTogUmViYXNlIGFmdGVyIGZpbmFsIG1lcmdlZCB2ZXJzaW9uIG9mIE1pa2EncyBwcGd0dC9zY3Jh dGNoCnBhdGNoZXMuCnYxMjogRml4IHBkcGUgc3RhcnQgdmFsdWUgaW4gdHJhY2UgKEFrYXNoKQp2 MTM6IERlZmluZSBhbGwgNGx2bCBmdW5jdGlvbnMgaW4gdGhpcyBwYXRjaCBkaXJlY3RseSwgaW5z dGVhZCBvZgpwcmV2aW91cyBwYXRjaGVzLCBhZGQgaTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVy X2VudHJ5X2FsbG9jIGhlcmUsCnVzZSB0ZXN0X2JpdCB0byBkZXRlY3Qgd2hlbiBwZHAgaXMgYWxy ZWFkeSBhbGxvY2F0ZWQgKEFrYXNoKS4KdjE0OiBNb3ZlIHBkcCBhbGxvY2F0aW9uIGludG8gYSBu ZXcgZ2VuOF9wcGd0dF9hbGxvY19wYWdlX2RpcnBvaW50ZXJzCmZ1bmN0aW9uLCBhcyB3ZSBkbyBm b3IgcGRzIGFuZCBwdHM7IG1vdmUgcGQgYW5kIHBkcCBzZXR1cCBmdW5jdGlvbnMgdG8KdGhpcyBw YXRjaCAoQWthc2gpCgpDYzogQWthc2ggR29lbCA8YWthc2guZ29lbEBpbnRlbC5jb20+ClNpZ25l ZC1vZmYtYnk6IEJlbiBXaWRhd3NreSA8YmVuQGJ3aWRhd3NrLm5ldD4KU2lnbmVkLW9mZi1ieTog TWljaGVsIFRoaWVycnkgPG1pY2hlbC50aGllcnJ5QGludGVsLmNvbT4gKHYyKykKLS0tCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyB8IDIzOSArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKystLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oIHwg IDE1ICsrLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90cmFjZS5oICAgfCAgIDggKysKIDMg ZmlsZXMgY2hhbmdlZCwgMjQ1IGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKaW5kZXggMWExMjBhNC4uNDE3OWI4MCAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKQEAgLTIxMCw2ICsyMTAsOSBAQCBzdGF0aWMgZ2VuOF9w ZGVfdCBnZW44X3BkZV9lbmNvZGUoY29uc3QgZG1hX2FkZHJfdCBhZGRyLAogCXJldHVybiBwZGU7 CiB9CiAKKyNkZWZpbmUgZ2VuOF9wZHBlX2VuY29kZSBnZW44X3BkZV9lbmNvZGUKKyNkZWZpbmUg Z2VuOF9wbWw0ZV9lbmNvZGUgZ2VuOF9wZGVfZW5jb2RlCisKIHN0YXRpYyBnZW42X3B0ZV90IHNu Yl9wdGVfZW5jb2RlKGRtYV9hZGRyX3QgYWRkciwKIAkJCQkgZW51bSBpOTE1X2NhY2hlX2xldmVs IGxldmVsLAogCQkJCSBib29sIHZhbGlkLCB1MzIgdW51c2VkKQpAQCAtNTU5LDEyICs1NjIsNzMg QEAgc3RhdGljIHZvaWQgX19wZHBfZmluaShzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9wb2lu dGVyICpwZHApCiAJcGRwLT5wYWdlX2RpcmVjdG9yeSA9IE5VTEw7CiB9CiAKK3N0YXRpYyBzdHJ1 Y3QKK2k5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlciAqYWxsb2NfcGRwKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCit7CisJc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlciAqcGRwOwor CWludCByZXQgPSAtRU5PTUVNOworCisJV0FSTl9PTighVVNFU19GVUxMXzQ4QklUX1BQR1RUKGRl dikpOworCisJcGRwID0ga3phbGxvYyhzaXplb2YoKnBkcCksIEdGUF9LRVJORUwpOworCWlmICgh cGRwKQorCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKKworCXJldCA9IF9fcGRwX2luaXQoZGV2 LCBwZHApOworCWlmIChyZXQpCisJCWdvdG8gZmFpbF9iaXRtYXA7CisKKwlyZXQgPSBzZXR1cF9w eChkZXYsIHBkcCk7CisJaWYgKHJldCkKKwkJZ290byBmYWlsX3BhZ2VfbTsKKworCXJldHVybiBw ZHA7CisKK2ZhaWxfcGFnZV9tOgorCV9fcGRwX2ZpbmkocGRwKTsKK2ZhaWxfYml0bWFwOgorCWtm cmVlKHBkcCk7CisKKwlyZXR1cm4gRVJSX1BUUihyZXQpOworfQorCiBzdGF0aWMgdm9pZCBmcmVl X3BkcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkgICAgIHN0cnVjdCBpOTE1X3BhZ2VfZGly ZWN0b3J5X3BvaW50ZXIgKnBkcCkKIHsKIAlfX3BkcF9maW5pKHBkcCk7Ci0JaWYgKFVTRVNfRlVM TF80OEJJVF9QUEdUVChkZXYpKQorCWlmIChVU0VTX0ZVTExfNDhCSVRfUFBHVFQoZGV2KSkgewor CQljbGVhbnVwX3B4KGRldiwgcGRwKTsKIAkJa2ZyZWUocGRwKTsKKwl9Cit9CisKK3N0YXRpYyB2 b2lkCitnZW44X3NldHVwX3BhZ2VfZGlyZWN0b3J5KHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0 dCwKKwkJCSAgc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlciAqcGRwLAorCQkJICBz dHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeSAqcGQsCisJCQkgIGludCBpbmRleCkKK3sKKwlnZW44 X3BwZ3R0X3BkcGVfdCAqcGFnZV9kaXJlY3RvcnlwbzsKKworCWlmICghVVNFU19GVUxMXzQ4QklU X1BQR1RUKHBwZ3R0LT5iYXNlLmRldikpCisJCXJldHVybjsKKworCXBhZ2VfZGlyZWN0b3J5cG8g PSBrbWFwX3B4KHBkcCk7CisJcGFnZV9kaXJlY3Rvcnlwb1tpbmRleF0gPSBnZW44X3BkcGVfZW5j b2RlKHB4X2RtYShwZCksIEk5MTVfQ0FDSEVfTExDKTsKKwlrdW5tYXBfcHgocHBndHQsIHBhZ2Vf ZGlyZWN0b3J5cG8pOworfQorCitzdGF0aWMgdm9pZAorZ2VuOF9zZXR1cF9wYWdlX2RpcmVjdG9y eV9wb2ludGVyKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKKwkJCQkgIHN0cnVjdCBpOTE1 X3BtbDQgKnBtbDQsCisJCQkJICBzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyICpw ZHAsCisJCQkJICBpbnQgaW5kZXgpCit7CisJZ2VuOF9wcGd0dF9wbWw0ZV90ICpwYWdlbWFwID0g a21hcF9weChwbWw0KTsKKworCVdBUk5fT04oIVVTRVNfRlVMTF80OEJJVF9QUEdUVChwcGd0dC0+ YmFzZS5kZXYpKTsKKwlwYWdlbWFwW2luZGV4XSA9IGdlbjhfcG1sNGVfZW5jb2RlKHB4X2RtYShw ZHApLCBJOTE1X0NBQ0hFX0xMQyk7CisJa3VubWFwX3B4KHBwZ3R0LCBwYWdlbWFwKTsKIH0KIAog LyogQnJvYWR3ZWxsIFBhZ2UgRGlyZWN0b3J5IFBvaW50ZXIgRGVzY3JpcHRvcnMgKi8KQEAgLTc4 NCwxMiArODQ4LDkgQEAgc3RhdGljIHZvaWQgZ2VuOF9mcmVlX3NjcmF0Y2goc3RydWN0IGk5MTVf YWRkcmVzc19zcGFjZSAqdm0pCiAJZnJlZV9zY3JhdGNoX3BhZ2UoZGV2LCB2bS0+c2NyYXRjaF9w YWdlKTsKIH0KIAotc3RhdGljIHZvaWQgZ2VuOF9wcGd0dF9jbGVhbnVwKHN0cnVjdCBpOTE1X2Fk ZHJlc3Nfc3BhY2UgKnZtKQorc3RhdGljIHZvaWQgZ2VuOF9wcGd0dF9jbGVhbnVwXzNsdmwoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCQkgICAgc3RydWN0IGk5MTVfcGFnZV9kaXJlY3Rvcnlf cG9pbnRlciAqcGRwKQogewotCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCA9Ci0JCWNvbnRh aW5lcl9vZih2bSwgc3RydWN0IGk5MTVfaHdfcHBndHQsIGJhc2UpOwotCXN0cnVjdCBpOTE1X3Bh Z2VfZGlyZWN0b3J5X3BvaW50ZXIgKnBkcCA9ICZwcGd0dC0+cGRwOyAvKiBGSVhNRTogNDhiICov Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHBwZ3R0LT5iYXNlLmRldjsKIAlpbnQgaTsKIAog CWZvcl9lYWNoX3NldF9iaXQoaSwgcGRwLT51c2VkX3BkcGVzLCBJOTE1X1BEUEVTX1BFUl9QRFAo ZGV2KSkgewpAQCAtODAxLDYgKzg2MiwzMSBAQCBzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X2NsZWFu dXAoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCiAJfQogCiAJZnJlZV9wZHAoZGV2LCBw ZHApOworfQorCitzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X2NsZWFudXBfNGx2bChzdHJ1Y3QgaTkx NV9od19wcGd0dCAqcHBndHQpCit7CisJaW50IGk7CisKKwlmb3JfZWFjaF9zZXRfYml0KGksIHBw Z3R0LT5wbWw0LnVzZWRfcG1sNGVzLCBHRU44X1BNTDRFU19QRVJfUE1MNCkgeworCQlpZiAoV0FS Tl9PTighcHBndHQtPnBtbDQucGRwc1tpXSkpCisJCQljb250aW51ZTsKKworCQlnZW44X3BwZ3R0 X2NsZWFudXBfM2x2bChwcGd0dC0+YmFzZS5kZXYsIHBwZ3R0LT5wbWw0LnBkcHNbaV0pOworCX0K KworCWNsZWFudXBfcHgocHBndHQtPmJhc2UuZGV2LCAmcHBndHQtPnBtbDQpOworfQorCitzdGF0 aWMgdm9pZCBnZW44X3BwZ3R0X2NsZWFudXAoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0p Cit7CisJc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0ID0KKwkJY29udGFpbmVyX29mKHZtLCBz dHJ1Y3QgaTkxNV9od19wcGd0dCwgYmFzZSk7CisKKwlpZiAoIVVTRVNfRlVMTF80OEJJVF9QUEdU VChwcGd0dC0+YmFzZS5kZXYpKQorCQlnZW44X3BwZ3R0X2NsZWFudXBfM2x2bChwcGd0dC0+YmFz ZS5kZXYsICZwcGd0dC0+cGRwKTsKKwllbHNlCisJCWdlbjhfcHBndHRfY2xlYW51cF80bHZsKHBw Z3R0KTsKIAogCWdlbjhfZnJlZV9zY3JhdGNoKHZtKTsKIH0KQEAgLTkyMiw2ICsxMDA4LDYwIEBA IHVud2luZF9vdXQ6CiAJcmV0dXJuIC1FTk9NRU07CiB9CiAKKy8qKgorICogZ2VuOF9wcGd0dF9h bGxvY19wYWdlX2RpcnBvaW50ZXJzKCkgLSBBbGxvY2F0ZSBwZHBzIGZvciBWQSByYW5nZS4KKyAq IEB2bToJTWFzdGVyIHZtIHN0cnVjdHVyZS4KKyAqIEBwbWw0OglQYWdlIG1hcCBsZXZlbCA0IGZv ciB0aGlzIGFkZHJlc3MgcmFuZ2UuCisgKiBAc3RhcnQ6CVN0YXJ0aW5nIHZpcnR1YWwgYWRkcmVz cyB0byBiZWdpbiBhbGxvY2F0aW9ucy4KKyAqIEBsZW5ndGg6CVNpemUgb2YgdGhlIGFsbG9jYXRp b25zLgorICogQG5ld19wZHBzOglCaXRtYXAgc2V0IGJ5IGZ1bmN0aW9uIHdpdGggbmV3IGFsbG9j YXRpb25zLiBMaWtlbHkgdXNlZCBieSB0aGUKKyAqCQljYWxsZXIgdG8gZnJlZSBvbiBlcnJvci4K KyAqCisgKiBBbGxvY2F0ZSB0aGUgcmVxdWlyZWQgbnVtYmVyIG9mIHBhZ2UgZGlyZWN0b3J5IHBv aW50ZXJzLiBFeHRyZW1lbHkgc2ltaWxhciB0bworICogZ2VuOF9wcGd0dF9hbGxvY19wYWdlX2Rp cmVjdG9yaWVzKCkgYW5kIGdlbjhfcHBndHRfYWxsb2NfcGFnZXRhYnMoKS4KKyAqIFRoZSBtYWlu IGRpZmZlcmVuY2UgaXMgaGVyZSB3ZSBhcmUgbGltaXRlZCBieSB0aGUgcG1sNCBib3VuZGFyeSAo aW5zdGVhZCBvZgorICogdGhlIHBhZ2UgZGlyZWN0b3J5IHBvaW50ZXIpLgorICoKKyAqIFJldHVy bjogMCBpZiBzdWNjZXNzOyBuZWdhdGl2ZSBlcnJvciBjb2RlIG90aGVyd2lzZS4KKyAqLworc3Rh dGljIGludAorZ2VuOF9wcGd0dF9hbGxvY19wYWdlX2RpcnBvaW50ZXJzKHN0cnVjdCBpOTE1X2Fk ZHJlc3Nfc3BhY2UgKnZtLAorCQkJCSAgc3RydWN0IGk5MTVfcG1sNCAqcG1sNCwKKwkJCQkgIHVp bnQ2NF90IHN0YXJ0LAorCQkJCSAgdWludDY0X3QgbGVuZ3RoLAorCQkJCSAgdW5zaWduZWQgbG9u ZyAqbmV3X3BkcHMpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHZtLT5kZXY7CisJc3Ry dWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlciAqcGRwOworCXVpbnQ2NF90IHRlbXA7CisJ dWludDMyX3QgcG1sNGU7CisKKwlXQVJOX09OKCFiaXRtYXBfZW1wdHkobmV3X3BkcHMsIEdFTjhf UE1MNEVTX1BFUl9QTUw0KSk7CisKKwlnZW44X2Zvcl9lYWNoX3BtbDRlKHBkcCwgcG1sNCwgc3Rh cnQsIGxlbmd0aCwgdGVtcCwgcG1sNGUpIHsKKwkJaWYgKCF0ZXN0X2JpdChwbWw0ZSwgcG1sNC0+ dXNlZF9wbWw0ZXMpKSB7CisJCQlwZHAgPSBhbGxvY19wZHAoZGV2KTsKKwkJCWlmIChJU19FUlIo cGRwKSkKKwkJCQlnb3RvIHVud2luZF9vdXQ7CisKKwkJCXBtbDQtPnBkcHNbcG1sNGVdID0gcGRw OworCQkJX19zZXRfYml0KHBtbDRlLCBuZXdfcGRwcyk7CisJCQl0cmFjZV9pOTE1X3BhZ2VfZGly ZWN0b3J5X3BvaW50ZXJfZW50cnlfYWxsb2Modm0sCisJCQkJCQkJCSAgICAgIHBtbDRlLAorCQkJ CQkJCQkgICAgICBzdGFydCwKKwkJCQkJCQkJICAgICAgR0VOOF9QTUw0RV9TSElGVCk7CisJCX0K Kwl9CisKKwlyZXR1cm4gMDsKKwordW53aW5kX291dDoKKwlmb3JfZWFjaF9zZXRfYml0KHBtbDRl LCBuZXdfcGRwcywgR0VOOF9QTUw0RVNfUEVSX1BNTDQpCisJCWZyZWVfcGRwKGRldiwgcG1sNC0+ cGRwc1twbWw0ZV0pOworCisJcmV0dXJuIC1FTk9NRU07Cit9CisKIHN0YXRpYyB2b2lkCiBmcmVl X2dlbjhfdGVtcF9iaXRtYXBzKHVuc2lnbmVkIGxvbmcgKm5ld19wZHMsIHVuc2lnbmVkIGxvbmcg KipuZXdfcHRzLAogCQkgICAgICAgdWludDMyX3QgcGRwZXMpCkBAIC05ODMsMTQgKzExMjMsMTUg QEAgc3RhdGljIHZvaWQgbWFya190bGJzX2RpcnR5KHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0 dCkKIAlwcGd0dC0+cGRfZGlydHlfcmluZ3MgPSBJTlRFTF9JTkZPKHBwZ3R0LT5iYXNlLmRldikt PnJpbmdfbWFzazsKIH0KIAotc3RhdGljIGludCBnZW44X2FsbG9jX3ZhX3JhbmdlKHN0cnVjdCBp OTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAotCQkJICAgICAgIHVpbnQ2NF90IHN0YXJ0LCB1aW50NjRf dCBsZW5ndGgpCitzdGF0aWMgaW50IGdlbjhfYWxsb2NfdmFfcmFuZ2VfM2x2bChzdHJ1Y3QgaTkx NV9hZGRyZXNzX3NwYWNlICp2bSwKKwkJCQkgICAgc3RydWN0IGk5MTVfcGFnZV9kaXJlY3Rvcnlf cG9pbnRlciAqcGRwLAorCQkJCSAgICB1aW50NjRfdCBzdGFydCwKKwkJCQkgICAgdWludDY0X3Qg bGVuZ3RoKQogewogCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCA9CiAJCWNvbnRhaW5lcl9v Zih2bSwgc3RydWN0IGk5MTVfaHdfcHBndHQsIGJhc2UpOwogCXVuc2lnbmVkIGxvbmcgKm5ld19w YWdlX2RpcnMsICoqbmV3X3BhZ2VfdGFibGVzOwogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSB2 bS0+ZGV2OwotCXN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5X3BvaW50ZXIgKnBkcCA9ICZwcGd0 dC0+cGRwOyAvKiBGSVhNRTogNDhiICovCiAJc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnkgKnBk OwogCWNvbnN0IHVpbnQ2NF90IG9yaWdfc3RhcnQgPSBzdGFydDsKIAljb25zdCB1aW50NjRfdCBv cmlnX2xlbmd0aCA9IGxlbmd0aDsKQEAgLTEwNzEsNiArMTIxMiw3IEBAIHN0YXRpYyBpbnQgZ2Vu OF9hbGxvY192YV9yYW5nZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKIAogCQlrdW5t YXBfcHgocHBndHQsIHBhZ2VfZGlyZWN0b3J5KTsKIAkJX19zZXRfYml0KHBkcGUsIHBkcC0+dXNl ZF9wZHBlcyk7CisJCWdlbjhfc2V0dXBfcGFnZV9kaXJlY3RvcnkocHBndHQsIHBkcCwgcGQsIHBk cGUpOwogCX0KIAogCWZyZWVfZ2VuOF90ZW1wX2JpdG1hcHMobmV3X3BhZ2VfZGlycywgbmV3X3Bh Z2VfdGFibGVzLCBwZHBlcyk7CkBAIC0xMDkxLDYgKzEyMzMsNjggQEAgZXJyX291dDoKIAlyZXR1 cm4gcmV0OwogfQogCitzdGF0aWMgaW50IGdlbjhfYWxsb2NfdmFfcmFuZ2VfNGx2bChzdHJ1Y3Qg aTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKKwkJCQkgICAgc3RydWN0IGk5MTVfcG1sNCAqcG1sNCwK KwkJCQkgICAgdWludDY0X3Qgc3RhcnQsCisJCQkJICAgIHVpbnQ2NF90IGxlbmd0aCkKK3sKKwlE RUNMQVJFX0JJVE1BUChuZXdfcGRwcywgR0VOOF9QTUw0RVNfUEVSX1BNTDQpOworCXN0cnVjdCBp OTE1X2h3X3BwZ3R0ICpwcGd0dCA9CisJCQljb250YWluZXJfb2Yodm0sIHN0cnVjdCBpOTE1X2h3 X3BwZ3R0LCBiYXNlKTsKKwlzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyICpwZHA7 CisJdWludDY0X3QgdGVtcCwgcG1sNGU7CisJaW50IHJldCA9IDA7CisKKwkvKiBEbyB0aGUgcG1s NCBhbGxvY2F0aW9ucyBmaXJzdCwgc28gd2UgZG9uJ3QgbmVlZCB0byB0cmFjayB0aGUgbmV3bHkK KwkgKiBhbGxvY2F0ZWQgdGFibGVzIGJlbG93IHRoZSBwZHAgKi8KKwliaXRtYXBfemVybyhuZXdf cGRwcywgR0VOOF9QTUw0RVNfUEVSX1BNTDQpOworCisJLyogVGhlIHBhZ2VkaXJlY3RvcnkgYW5k IHBhZ2V0YWJsZSBhbGxvY2F0aW9ucyBhcmUgZG9uZSBpbiB0aGUgc2hhcmVkIDMKKwkgKiBhbmQg NCBsZXZlbCBjb2RlLiBKdXN0IGFsbG9jYXRlIHRoZSBwZHBzLgorCSAqLworCXJldCA9IGdlbjhf cHBndHRfYWxsb2NfcGFnZV9kaXJwb2ludGVycyh2bSwgcG1sNCwgc3RhcnQsIGxlbmd0aCwKKwkJ CQkJCW5ld19wZHBzKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJV0FSTihiaXRtYXBf d2VpZ2h0KG5ld19wZHBzLCBHRU44X1BNTDRFU19QRVJfUE1MNCkgPiAyLAorCSAgICAgIlRoZSBh bGxvY2F0aW9uIGhhcyBzcGFubmVkIG1vcmUgdGhhbiA1MTJHQi4gIgorCSAgICAgIkl0IGlzIGhp Z2hseSBsaWtlbHkgdGhpcyBpcyBpbmNvcnJlY3QuIik7CisKKwlnZW44X2Zvcl9lYWNoX3BtbDRl KHBkcCwgcG1sNCwgc3RhcnQsIGxlbmd0aCwgdGVtcCwgcG1sNGUpIHsKKwkJV0FSTl9PTighcGRw KTsKKworCQlyZXQgPSBnZW44X2FsbG9jX3ZhX3JhbmdlXzNsdmwodm0sIHBkcCwgc3RhcnQsIGxl bmd0aCk7CisJCWlmIChyZXQpCisJCQlnb3RvIGVycl9vdXQ7CisKKwkJZ2VuOF9zZXR1cF9wYWdl X2RpcmVjdG9yeV9wb2ludGVyKHBwZ3R0LCBwbWw0LCBwZHAsIHBtbDRlKTsKKwl9CisKKwliaXRt YXBfb3IocG1sNC0+dXNlZF9wbWw0ZXMsIG5ld19wZHBzLCBwbWw0LT51c2VkX3BtbDRlcywKKwkJ ICBHRU44X1BNTDRFU19QRVJfUE1MNCk7CisKKwlyZXR1cm4gMDsKKworZXJyX291dDoKKwlmb3Jf ZWFjaF9zZXRfYml0KHBtbDRlLCBuZXdfcGRwcywgR0VOOF9QTUw0RVNfUEVSX1BNTDQpCisJCWdl bjhfcHBndHRfY2xlYW51cF8zbHZsKHZtLT5kZXYsIHBtbDQtPnBkcHNbcG1sNGVdKTsKKworCXJl dHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgZ2VuOF9hbGxvY192YV9yYW5nZShzdHJ1Y3QgaTkx NV9hZGRyZXNzX3NwYWNlICp2bSwKKwkJCSAgICAgICB1aW50NjRfdCBzdGFydCwgdWludDY0X3Qg bGVuZ3RoKQoreworCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCA9CisJCWNvbnRhaW5lcl9v Zih2bSwgc3RydWN0IGk5MTVfaHdfcHBndHQsIGJhc2UpOworCisJaWYgKFVTRVNfRlVMTF80OEJJ VF9QUEdUVCh2bS0+ZGV2KSkKKwkJcmV0dXJuIGdlbjhfYWxsb2NfdmFfcmFuZ2VfNGx2bCh2bSwg JnBwZ3R0LT5wbWw0LCBzdGFydCwgbGVuZ3RoKTsKKwllbHNlCisJCXJldHVybiBnZW44X2FsbG9j X3ZhX3JhbmdlXzNsdmwodm0sICZwcGd0dC0+cGRwLCBzdGFydCwgbGVuZ3RoKTsKK30KKwogLyoK ICAqIEdFTjggbGVnYWN5IHBwZ3R0IHByb2dyYW1taW5nIGlzIGFjY29tcGxpc2hlZCB0aHJvdWdo IGEgbWF4IDQgUERQIHJlZ2lzdGVycwogICogd2l0aCBhIG5ldCBlZmZlY3QgcmVzZW1ibGluZyBh IDItbGV2ZWwgcGFnZSB0YWJsZSBpbiBub3JtYWwgeDg2IHRlcm1zLiBFYWNoCkBAIC0xMTE2LDkg KzEzMjAsMTQgQEAgc3RhdGljIGludCBnZW44X3BwZ3R0X2luaXQoc3RydWN0IGk5MTVfaHdfcHBn dHQgKnBwZ3R0KQogCiAJcHBndHQtPnN3aXRjaF9tbSA9IGdlbjhfbW1fc3dpdGNoOwogCi0JaWYg KCFVU0VTX0ZVTExfNDhCSVRfUFBHVFQocHBndHQtPmJhc2UuZGV2KSkgewotCQlyZXQgPSBfX3Bk cF9pbml0KGZhbHNlLCAmcHBndHQtPnBkcCk7CisJaWYgKFVTRVNfRlVMTF80OEJJVF9QUEdUVChw cGd0dC0+YmFzZS5kZXYpKSB7CisJCXJldCA9IHNldHVwX3B4KHBwZ3R0LT5iYXNlLmRldiwgJnBw Z3R0LT5wbWw0KTsKKwkJaWYgKHJldCkKKwkJCWdvdG8gZnJlZV9zY3JhdGNoOwogCisJCXBwZ3R0 LT5iYXNlLnRvdGFsID0gMVVMTCA8PCA0ODsKKwl9IGVsc2UgeworCQlyZXQgPSBfX3BkcF9pbml0 KGZhbHNlLCAmcHBndHQtPnBkcCk7CiAJCWlmIChyZXQpCiAJCQlnb3RvIGZyZWVfc2NyYXRjaDsK IApAQCAtMTEzMCwxMCArMTMzOSwxMCBAQCBzdGF0aWMgaW50IGdlbjhfcHBndHRfaW5pdChzdHJ1 Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCiAJCQkgKiAyR2lCKS4KIAkJCSAqLwogCQkJcHBndHQt PmJhc2UudG90YWwgPSB0b19pOTE1KHBwZ3R0LT5iYXNlLmRldiktPmd0dC5iYXNlLnRvdGFsOwot CX0gZWxzZSB7Ci0JCXBwZ3R0LT5iYXNlLnRvdGFsID0gMVVMTCA8PCA0ODsKLQkJcmV0ID0gLUVQ RVJNOyAvKiBOb3QgeWV0IGltcGxlbWVudGVkICovCi0JCWdvdG8gZnJlZV9zY3JhdGNoOworCisJ CXRyYWNlX2k5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlcl9lbnRyeV9hbGxvYygmcHBndHQtPmJh c2UsCisJCQkJCQkJICAgICAgMCwgMCwKKwkJCQkJCQkgICAgICBHRU44X1BNTDRFX1NISUZUKTsK IAl9CiAKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2d0dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgKaW5kZXggMDRi YzY2Zi4uMTFkNDRiMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Z3R0LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgKQEAgLTM5LDYg KzM5LDggQEAgc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZTsKIHR5cGVkZWYgdWludDMyX3Qg Z2VuNl9wdGVfdDsKIHR5cGVkZWYgdWludDY0X3QgZ2VuOF9wdGVfdDsKIHR5cGVkZWYgdWludDY0 X3QgZ2VuOF9wZGVfdDsKK3R5cGVkZWYgdWludDY0X3QgZ2VuOF9wcGd0dF9wZHBlX3Q7Cit0eXBl ZGVmIHVpbnQ2NF90IGdlbjhfcHBndHRfcG1sNGVfdDsKIAogI2RlZmluZSBndHRfdG90YWxfZW50 cmllcyhndHQpICgoZ3R0KS5iYXNlLnRvdGFsID4+IFBBR0VfU0hJRlQpCiAKQEAgLTk1LDYgKzk3 LDcgQEAgdHlwZWRlZiB1aW50NjRfdCBnZW44X3BkZV90OwogICovCiAjZGVmaW5lIEdFTjhfUE1M NEVTX1BFUl9QTUw0CQk1MTIKICNkZWZpbmUgR0VOOF9QTUw0RV9TSElGVAkJMzkKKyNkZWZpbmUg R0VOOF9QTUw0RV9NQVNLCQkJKEdFTjhfUE1MNEVTX1BFUl9QTUw0IC0gMSkKICNkZWZpbmUgR0VO OF9QRFBFX1NISUZUCQkJMzAKIC8qIE5COiBHRU44X1BEUEVfTUFTSyBpcyB1bnRydWUgZm9yIDMy YiBwbGF0Zm9ybXMsIGJ1dCBpdCBoYXMgbm8gaW1wYWN0IG9uIDMyYiBwYWdlCiAgKiB0YWJsZXMg Ki8KQEAgLTQ2NSw2ICs0NjgsMTUgQEAgc3RhdGljIGlubGluZSB1aW50MzJfdCBnZW42X3BkZV9p bmRleCh1aW50MzJfdCBhZGRyKQogCSAgICAgdGVtcCA9IG1pbih0ZW1wLCBsZW5ndGgpLAkJCQkJ XAogCSAgICAgc3RhcnQgKz0gdGVtcCwgbGVuZ3RoIC09IHRlbXApCiAKKyNkZWZpbmUgZ2VuOF9m b3JfZWFjaF9wbWw0ZShwZHAsIHBtbDQsIHN0YXJ0LCBsZW5ndGgsIHRlbXAsIGl0ZXIpCVwKKwlm b3IgKGl0ZXIgPSBnZW44X3BtbDRlX2luZGV4KHN0YXJ0KTsJXAorCSAgICAgcGRwID0gKHBtbDQp LT5wZHBzW2l0ZXJdLCBcCisJICAgICBsZW5ndGggPiAwICYmIGl0ZXIgPCBHRU44X1BNTDRFU19Q RVJfUE1MNDsgXAorCSAgICAgaXRlcisrLAkJCQlcCisJICAgICB0ZW1wID0gQUxJR04oc3RhcnQr MSwgMVVMTCA8PCBHRU44X1BNTDRFX1NISUZUKSAtIHN0YXJ0LAlcCisJICAgICB0ZW1wID0gbWlu KHRlbXAsIGxlbmd0aCksCQkJCQlcCisJICAgICBzdGFydCArPSB0ZW1wLCBsZW5ndGggLT0gdGVt cCkKKwogc3RhdGljIGlubGluZSB1aW50MzJfdCBnZW44X3B0ZV9pbmRleCh1aW50NjRfdCBhZGRy ZXNzKQogewogCXJldHVybiBpOTE1X3B0ZV9pbmRleChhZGRyZXNzLCBHRU44X1BERV9TSElGVCk7 CkBAIC00ODIsOCArNDk0LDcgQEAgc3RhdGljIGlubGluZSB1aW50MzJfdCBnZW44X3BkcGVfaW5k ZXgodWludDY0X3QgYWRkcmVzcykKIAogc3RhdGljIGlubGluZSB1aW50MzJfdCBnZW44X3BtbDRl X2luZGV4KHVpbnQ2NF90IGFkZHJlc3MpCiB7Ci0JV0FSTl9PTigxKTsgLyogRm9yIDY0QiAqLwot CXJldHVybiAwOworCXJldHVybiAoYWRkcmVzcyA+PiBHRU44X1BNTDRFX1NISUZUKSAmIEdFTjhf UE1MNEVfTUFTSzsKIH0KIAogc3RhdGljIGlubGluZSBzaXplX3QgZ2VuOF9wdGVfY291bnQodWlu dDY0X3QgYWRkcmVzcywgdWludDY0X3QgbGVuZ3RoKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV90cmFjZS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90cmFjZS5o CmluZGV4IGYyMzBkNzYuLmU2YjVjNzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfdHJhY2UuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RyYWNlLmgKQEAg LTIyMSw2ICsyMjEsMTQgQEAgREVGSU5FX0VWRU5UX1BSSU5UKGk5MTVfcHhfZW50cnksIGk5MTVf cGFnZV9kaXJlY3RvcnlfZW50cnlfYWxsb2MsCiAJCQkgICAgIF9fZW50cnktPnZtLCBfX2VudHJ5 LT5weCwgX19lbnRyeS0+c3RhcnQsIF9fZW50cnktPmVuZCkKICk7CiAKK0RFRklORV9FVkVOVF9Q UklOVChpOTE1X3B4X2VudHJ5LCBpOTE1X3BhZ2VfZGlyZWN0b3J5X3BvaW50ZXJfZW50cnlfYWxs b2MsCisJCSAgIFRQX1BST1RPKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLCB1MzIgcG1s NGUsIHU2NCBzdGFydCwgdTY0IHBtbDRlX3NoaWZ0KSwKKwkJICAgVFBfQVJHUyh2bSwgcG1sNGUs IHN0YXJ0LCBwbWw0ZV9zaGlmdCksCisKKwkJICAgVFBfcHJpbnRrKCJ2bT0lcCwgcG1sNGU9JWQg KDB4JWxseC0weCVsbHgpIiwKKwkJCSAgICAgX19lbnRyeS0+dm0sIF9fZW50cnktPnB4LCBfX2Vu dHJ5LT5zdGFydCwgX19lbnRyeS0+ZW5kKQorKTsKKwogLyogQXZvaWQgZXh0cmEgbWF0aCBiZWNh dXNlIHdlIG9ubHkgc3VwcG9ydCB0d28gc2l6ZXMuIFRoZSBmb3JtYXQgaXMgZGVmaW5lZCBieQog ICogYml0bWFwX3NjbnByaW50Zi4gRWFjaCAzMiBiaXRzIGlzIDggSEVYIGRpZ2l0cyBmb2xsb3dl ZCBieSBjb21tYSAqLwogI2RlZmluZSBUUkFDRV9QVF9TSVpFKGJpdHMpIFwKLS0gCjIuNC41Cgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZngg bWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=