From mboxrd@z Thu Jan 1 00:00:00 1970 From: Qiang Yu Subject: [PATCH RFC 17/24] drm/lima: add GPU virtual memory space handing Date: Fri, 18 May 2018 17:28:08 +0800 Message-ID: <20180518092815.25280-18-yuq825@gmail.com> References: <20180518092815.25280-1-yuq825@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180518092815.25280-1-yuq825@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org Cc: Simon Shields , Marek Vasut , Connor Abbott , Neil Armstrong , Andrei Paulau <7134956@gmail.com>, Vasily Khoruzhick , Qiang Yu , Erico Nunes List-Id: devicetree@vger.kernel.org RnJvbTogTGltYSBQcm9qZWN0IERldmVsb3BlcnMgPGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmc+CgpTaWduZWQtb2ZmLWJ5OiBRaWFuZyBZdSA8eXVxODI1QGdtYWlsLmNvbT4KU2lnbmVk LW9mZi1ieTogVmFzaWx5IEtob3J1emhpY2sgPGFuYXJzb3VsQGdtYWlsLmNvbT4KLS0tCiBkcml2 ZXJzL2dwdS9kcm0vbGltYS9saW1hX3ZtLmMgfCAzMTIgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX3ZtLmggfCAgNzMgKysrKysrKysK IDIgZmlsZXMgY2hhbmdlZCwgMzg1IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX3ZtLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2dwdS9kcm0vbGltYS9saW1hX3ZtLmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbGlt YS9saW1hX3ZtLmMgYi9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX3ZtLmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wMGEzZjZiNTlhMzMKLS0tIC9kZXYvbnVsbAor KysgYi9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX3ZtLmMKQEAgLTAsMCArMSwzMTIgQEAKKy8q CisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBMaW1hIFByb2plY3QKKyAqCisgKiBQZXJtaXNz aW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRh aW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50 YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJl IHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRo ZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRl LCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5k IHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQg dG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRo ZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxs IGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9m IHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwg V0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5D TFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ VFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VN RU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBDT1BZUklHSFQgSE9MREVSKFMpIE9SIEFV VEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgorICogT1RIRVIgTElB QklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJ U0UsCisgKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNP RlRXQVJFIE9SIFRIRSBVU0UgT1IKKyAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4K KyAqLworCisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgorI2luY2x1ZGUgPGxpbnV4L2RtYS1tYXBw aW5nLmg+CisjaW5jbHVkZSA8bGludXgvaW50ZXJ2YWxfdHJlZV9nZW5lcmljLmg+CisKKyNpbmNs dWRlICJsaW1hX2RldmljZS5oIgorI2luY2x1ZGUgImxpbWFfdm0uaCIKKyNpbmNsdWRlICJsaW1h X29iamVjdC5oIgorI2luY2x1ZGUgImxpbWFfcmVncy5oIgorCitzdHJ1Y3QgbGltYV9ib192YV9t YXBwaW5nIHsKKwlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CisJc3RydWN0IHJiX25vZGUgcmI7CisJ dWludDMyX3Qgc3RhcnQ7CisJdWludDMyX3QgbGFzdDsKKwl1aW50MzJfdCBfX3N1YnRyZWVfbGFz dDsKK307CisKK3N0cnVjdCBsaW1hX2JvX3ZhIHsKKwlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CisJ dW5zaWduZWQgcmVmX2NvdW50OworCisJc3RydWN0IGxpc3RfaGVhZCBtYXBwaW5nOworCisJc3Ry dWN0IGxpbWFfdm0gKnZtOworfTsKKworI2RlZmluZSBMSU1BX1BERSh2YSkgKHZhID4+IDIyKQor I2RlZmluZSBMSU1BX1BURSh2YSkgKCh2YSAmIDB4M0ZGRkZGKSA+PiAxMikKKworI2RlZmluZSBT VEFSVChub2RlKSAoKG5vZGUpLT5zdGFydCkKKyNkZWZpbmUgTEFTVChub2RlKSAoKG5vZGUpLT5s YXN0KQorCitJTlRFUlZBTF9UUkVFX0RFRklORShzdHJ1Y3QgbGltYV9ib192YV9tYXBwaW5nLCBy YiwgdWludDMyX3QsIF9fc3VidHJlZV9sYXN0LAorCQkgICAgIFNUQVJULCBMQVNULCBzdGF0aWMs IGxpbWFfdm1faXQpCisKKyN1bmRlZiBTVEFSVAorI3VuZGVmIExBU1QKKworc3RhdGljIHZvaWQg bGltYV92bV91bm1hcF9wYWdlX3RhYmxlKHN0cnVjdCBsaW1hX3ZtICp2bSwgdTMyIHN0YXJ0LCB1 MzIgZW5kKQoreworCXUzMiBhZGRyOworCisJZm9yIChhZGRyID0gc3RhcnQ7IGFkZHIgPD0gZW5k OyBhZGRyICs9IExJTUFfUEFHRV9TSVpFKSB7CisJCXUzMiBwZGUgPSBMSU1BX1BERShhZGRyKTsK KwkJdTMyIHB0ZSA9IExJTUFfUFRFKGFkZHIpOworCQl1MzIgKnB0OworCisJCXB0ID0gbGltYV9i b19rbWFwKHZtLT5wdFtwZGVdKTsKKwkJcHRbcHRlXSA9IDA7CisJfQorfQorCitzdGF0aWMgaW50 IGxpbWFfdm1fbWFwX3BhZ2VfdGFibGUoc3RydWN0IGxpbWFfdm0gKnZtLCBkbWFfYWRkcl90ICpk bWEsCisJCQkJICB1MzIgc3RhcnQsIHUzMiBlbmQpCit7CisJdTY0IGFkZHI7CisJaW50IGVyciwg aSA9IDA7CisKKwlmb3IgKGFkZHIgPSBzdGFydDsgYWRkciA8PSBlbmQ7IGFkZHIgKz0gTElNQV9Q QUdFX1NJWkUpIHsKKwkJdTMyIHBkZSA9IExJTUFfUERFKGFkZHIpOworCQl1MzIgcHRlID0gTElN QV9QVEUoYWRkcik7CisJCXUzMiAqcGQsICpwdDsKKworCQlpZiAodm0tPnB0W3BkZV0pCisJCQlw dCA9IGxpbWFfYm9fa21hcCh2bS0+cHRbcGRlXSk7CisJCWVsc2UgeworCQkJdm0tPnB0W3BkZV0g PSBsaW1hX2JvX2NyZWF0ZSgKKwkJCQl2bS0+ZGV2LCBMSU1BX1BBR0VfU0laRSwgMCwgdHRtX2Jv X3R5cGVfa2VybmVsLAorCQkJCU5VTEwsIHZtLT5wZC0+dGJvLnJlc3YpOworCQkJaWYgKElTX0VS Uih2bS0+cHRbcGRlXSkpIHsKKwkJCQllcnIgPSBQVFJfRVJSKHZtLT5wdFtwZGVdKTsKKwkJCQln b3RvIGVycl9vdXQ7CisJCQl9CisKKwkJCXB0ID0gbGltYV9ib19rbWFwKHZtLT5wdFtwZGVdKTsK KwkJCWlmIChJU19FUlIocHQpKSB7CisJCQkJZXJyID0gUFRSX0VSUihwdCk7CisJCQkJZ290byBl cnJfb3V0OworCQkJfQorCisJCQlwZCA9IGxpbWFfYm9fa21hcCh2bS0+cGQpOworCQkJcGRbcGRl XSA9ICpsaW1hX2JvX2dldF9wYWdlcyh2bS0+cHRbcGRlXSkgfCBMSU1BX1ZNX0ZMQUdfUFJFU0VO VDsKKwkJfQorCisJCXB0W3B0ZV0gPSBkbWFbaSsrXSB8IExJTUFfVk1fRkxBR1NfQ0FDSEU7CisJ fQorCisJcmV0dXJuIDA7CisKK2Vycl9vdXQ6CisJaWYgKGFkZHIgIT0gc3RhcnQpCisJCWxpbWFf dm1fdW5tYXBfcGFnZV90YWJsZSh2bSwgc3RhcnQsIGFkZHIgLSAxKTsKKwlyZXR1cm4gZXJyOwor fQorCitzdGF0aWMgc3RydWN0IGxpbWFfYm9fdmEgKgorbGltYV92bV9ib19maW5kKHN0cnVjdCBs aW1hX3ZtICp2bSwgc3RydWN0IGxpbWFfYm8gKmJvKQoreworCXN0cnVjdCBsaW1hX2JvX3ZhICpi b192YSwgKnJldCA9IE5VTEw7CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGJvX3ZhLCAmYm8tPnZh LCBsaXN0KSB7CisJCWlmIChib192YS0+dm0gPT0gdm0pIHsKKwkJCXJldCA9IGJvX3ZhOworCQkJ YnJlYWs7CisJCX0KKwl9CisKKwlyZXR1cm4gcmV0OworfQorCitpbnQgbGltYV92bV9ib19tYXAo c3RydWN0IGxpbWFfdm0gKnZtLCBzdHJ1Y3QgbGltYV9ibyAqYm8sIHUzMiBzdGFydCkKK3sKKwlp bnQgZXJyOworCXN0cnVjdCBsaW1hX2JvX3ZhX21hcHBpbmcgKml0LCAqbWFwcGluZzsKKwl1MzIg ZW5kID0gc3RhcnQgKyBiby0+Z2VtLnNpemUgLSAxOworCWRtYV9hZGRyX3QgKnBhZ2VzX2RtYSA9 IGxpbWFfYm9fZ2V0X3BhZ2VzKGJvKTsKKwlzdHJ1Y3QgbGltYV9ib192YSAqYm9fdmE7CisKKwlp dCA9IGxpbWFfdm1faXRfaXRlcl9maXJzdCgmdm0tPnZhLCBzdGFydCwgZW5kKTsKKwlpZiAoaXQp IHsKKwkJZGV2X2RiZyhiby0+Z2VtLmRldi0+ZGV2LCAibGltYSB2bSBtYXAgdmEgb3ZlcmxhcCAl eC0leCAleC0leFxuIiwKKwkJCXN0YXJ0LCBlbmQsIGl0LT5zdGFydCwgaXQtPmxhc3QpOworCQly ZXR1cm4gLUVJTlZBTDsKKwl9CisKKwltYXBwaW5nID0ga21hbGxvYyhzaXplb2YoKm1hcHBpbmcp LCBHRlBfS0VSTkVMKTsKKwlpZiAoIW1hcHBpbmcpCisJCXJldHVybiAtRU5PTUVNOworCW1hcHBp bmctPnN0YXJ0ID0gc3RhcnQ7CisJbWFwcGluZy0+bGFzdCA9IGVuZDsKKworCWVyciA9IGxpbWFf dm1fbWFwX3BhZ2VfdGFibGUodm0sIHBhZ2VzX2RtYSwgc3RhcnQsIGVuZCk7CisJaWYgKGVycikg eworCQlrZnJlZShtYXBwaW5nKTsKKwkJcmV0dXJuIGVycjsKKwl9CisKKwlsaW1hX3ZtX2l0X2lu c2VydChtYXBwaW5nLCAmdm0tPnZhKTsKKworCWJvX3ZhID0gbGltYV92bV9ib19maW5kKHZtLCBi byk7CisJbGlzdF9hZGRfdGFpbCgmbWFwcGluZy0+bGlzdCwgJmJvX3ZhLT5tYXBwaW5nKTsKKwor CXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBsaW1hX3ZtX3VubWFwKHN0cnVjdCBsaW1hX3Zt ICp2bSwKKwkJCSAgc3RydWN0IGxpbWFfYm9fdmFfbWFwcGluZyAqbWFwcGluZykKK3sKKwlsaW1h X3ZtX2l0X3JlbW92ZShtYXBwaW5nLCAmdm0tPnZhKTsKKworCWxpbWFfdm1fdW5tYXBfcGFnZV90 YWJsZSh2bSwgbWFwcGluZy0+c3RhcnQsIG1hcHBpbmctPmxhc3QpOworCisJbGlzdF9kZWwoJm1h cHBpbmctPmxpc3QpOworCWtmcmVlKG1hcHBpbmcpOworfQorCitpbnQgbGltYV92bV9ib191bm1h cChzdHJ1Y3QgbGltYV92bSAqdm0sIHN0cnVjdCBsaW1hX2JvICpibywgdTMyIHN0YXJ0KQorewor CXN0cnVjdCBsaW1hX2JvX3ZhICpib192YTsKKwlzdHJ1Y3QgbGltYV9ib192YV9tYXBwaW5nICpt YXBwaW5nOworCisJYm9fdmEgPSBsaW1hX3ZtX2JvX2ZpbmQodm0sIGJvKTsKKwlsaXN0X2Zvcl9l YWNoX2VudHJ5KG1hcHBpbmcsICZib192YS0+bWFwcGluZywgbGlzdCkgeworCQlpZiAobWFwcGlu Zy0+c3RhcnQgPT0gc3RhcnQpIHsKKwkJICAgICAgICBsaW1hX3ZtX3VubWFwKHZtLCBtYXBwaW5n KTsKKwkJCWJyZWFrOworCQl9CisJfQorCisJcmV0dXJuIDA7Cit9CisKK2ludCBsaW1hX3ZtX2Jv X2FkZChzdHJ1Y3QgbGltYV92bSAqdm0sIHN0cnVjdCBsaW1hX2JvICpibykKK3sKKwlzdHJ1Y3Qg bGltYV9ib192YSAqYm9fdmE7CisKKwlib192YSA9IGxpbWFfdm1fYm9fZmluZCh2bSwgYm8pOwor CWlmIChib192YSkgeworCQlib192YS0+cmVmX2NvdW50Kys7CisJCXJldHVybiAwOworCX0KKwor CWJvX3ZhID0ga21hbGxvYyhzaXplb2YoKmJvX3ZhKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFib192 YSkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlib192YS0+dm0gPSB2bTsKKwlib192YS0+cmVmX2Nv dW50ID0gMTsKKwlJTklUX0xJU1RfSEVBRCgmYm9fdmEtPm1hcHBpbmcpOworCWxpc3RfYWRkX3Rh aWwoJmJvX3ZhLT5saXN0LCAmYm8tPnZhKTsKKwlyZXR1cm4gMDsKK30KKworaW50IGxpbWFfdm1f Ym9fZGVsKHN0cnVjdCBsaW1hX3ZtICp2bSwgc3RydWN0IGxpbWFfYm8gKmJvKQoreworCXN0cnVj dCBsaW1hX2JvX3ZhICpib192YTsKKwlzdHJ1Y3QgbGltYV9ib192YV9tYXBwaW5nICptYXBwaW5n LCAqdG1wOworCisJYm9fdmEgPSBsaW1hX3ZtX2JvX2ZpbmQodm0sIGJvKTsKKwlpZiAoLS1ib192 YS0+cmVmX2NvdW50ID4gMCkKKwkJcmV0dXJuIDA7CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3Nh ZmUobWFwcGluZywgdG1wLCAmYm9fdmEtPm1hcHBpbmcsIGxpc3QpIHsKKwkgICAgICAgIGxpbWFf dm1fdW5tYXAodm0sIG1hcHBpbmcpOworCX0KKwlsaXN0X2RlbCgmYm9fdmEtPmxpc3QpOworCWtm cmVlKGJvX3ZhKTsKKwlyZXR1cm4gMDsKK30KKworc3RydWN0IGxpbWFfdm0gKmxpbWFfdm1fY3Jl YXRlKHN0cnVjdCBsaW1hX2RldmljZSAqZGV2KQoreworCXN0cnVjdCBsaW1hX3ZtICp2bTsKKwl2 b2lkICpwZDsKKworCXZtID0ga3phbGxvYyhzaXplb2YoKnZtKSwgR0ZQX0tFUk5FTCk7CisJaWYg KCF2bSkKKwkJcmV0dXJuIE5VTEw7CisKKwl2bS0+ZGV2ID0gZGV2OworCXZtLT52YSA9IFJCX1JP T1RfQ0FDSEVEOworCWtyZWZfaW5pdCgmdm0tPnJlZmNvdW50KTsKKworCXZtLT5wZCA9IGxpbWFf Ym9fY3JlYXRlKGRldiwgTElNQV9QQUdFX1NJWkUsIDAsCisJCQkJdHRtX2JvX3R5cGVfa2VybmVs LCBOVUxMLCBOVUxMKTsKKwlpZiAoSVNfRVJSKHZtLT5wZCkpCisJCWdvdG8gZXJyX291dDA7CisK KwlwZCA9IGxpbWFfYm9fa21hcCh2bS0+cGQpOworCWlmIChJU19FUlIocGQpKQorCQlnb3RvIGVy cl9vdXQxOworCisJaWYgKGRldi0+ZGxidV9jcHUpIHsKKwkJaW50IGVyciA9IGxpbWFfdm1fbWFw X3BhZ2VfdGFibGUoCisJCQl2bSwgJmRldi0+ZGxidV9kbWEsIExJTUFfVkFfUkVTRVJWRV9ETEJV LAorCQkJTElNQV9WQV9SRVNFUlZFX0RMQlUgKyBMSU1BX1BBR0VfU0laRSAtIDEpOworCQlpZiAo ZXJyKQorCQkJZ290byBlcnJfb3V0MTsKKwl9CisKKwlyZXR1cm4gdm07CisKK2Vycl9vdXQxOgor CWxpbWFfYm9fdW5yZWYodm0tPnBkKTsKK2Vycl9vdXQwOgorCWtmcmVlKHZtKTsKKwlyZXR1cm4g TlVMTDsKK30KKwordm9pZCBsaW1hX3ZtX3JlbGVhc2Uoc3RydWN0IGtyZWYgKmtyZWYpCit7CisJ c3RydWN0IGxpbWFfdm0gKnZtID0gY29udGFpbmVyX29mKGtyZWYsIHN0cnVjdCBsaW1hX3ZtLCBy ZWZjb3VudCk7CisJc3RydWN0IGxpbWFfZGV2aWNlICpkZXYgPSB2bS0+ZGV2OworCWludCBpOwor CisJaWYgKCFSQl9FTVBUWV9ST09UKCZ2bS0+dmEucmJfcm9vdCkpIHsKKwkJZGV2X2VycihkZXYt PmRldiwgInN0aWxsIGFjdGl2ZSBibyBpbnNpZGUgdm1cbiIpOworCX0KKworCWZvciAoaSA9IDA7 IGkgPCBMSU1BX1BBR0VfRU5UX05VTTsgaSsrKSB7CisJCWlmICh2bS0+cHRbaV0pCisJCQlsaW1h X2JvX3VucmVmKHZtLT5wdFtpXSk7CisJfQorCisJaWYgKHZtLT5wZCkKKwkgICAgICAgIGxpbWFf Ym9fdW5yZWYodm0tPnBkKTsKKworCWtmcmVlKHZtKTsKK30KKwordm9pZCBsaW1hX3ZtX3ByaW50 KHN0cnVjdCBsaW1hX3ZtICp2bSkKK3sKKwlpbnQgaSwgajsKKwl1MzIgKnBkID0gbGltYV9ib19r bWFwKHZtLT5wZCk7CisKKwkvKiB0byBhdm9pZCB0aGUgZGVmaW5lZCBieSBub3QgdXNlZCB3YXJu aW5nICovCisJKHZvaWQpJmxpbWFfdm1faXRfaXRlcl9uZXh0OworCisJZm9yIChpID0gMDsgaSA8 IExJTUFfUEFHRV9FTlRfTlVNOyBpKyspIHsKKwkJaWYgKHBkW2ldKSB7CisJCQl1MzIgKnB0ID0g bGltYV9ib19rbWFwKHZtLT5wdFtpXSk7CisKKwkJCXByaW50ayhLRVJOX0lORk8gImxpbWEgdm0g cGQgJTAzeDolMDh4XG4iLCBpLCBwZFtpXSk7CisJCQlmb3IgKGogPSAwOyBqIDwgTElNQV9QQUdF X0VOVF9OVU07IGorKykgeworCQkJCWlmIChwdFtqXSkKKwkJCQkJcHJpbnRrKEtFUk5fSU5GTyAi ICBwdCAlMDN4OiUwOHhcbiIsIGosIHB0W2pdKTsKKwkJCX0KKwkJfQorCX0KK30KZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfdm0uaCBiL2RyaXZlcnMvZ3B1L2RybS9saW1h L2xpbWFfdm0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjIwNTA2 NDU5ZGVmMAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfdm0u aApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggTGltYSBQ cm9qZWN0CisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFy Z2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBh bmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0 byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0 aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJn ZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGll cyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICog U29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcg Y29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBw ZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBz dWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJF IElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJF U1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJB TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQ09Q WVJJR0hUIEhPTERFUihTKSBPUiBBVVRIT1IoUykgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERB TUFHRVMgT1IKKyAqIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09O VFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAorICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4g Q09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCisgKiBPVEhFUiBERUFM SU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKi8KKyNpZm5kZWYgX19MSU1BX1ZNX0hfXworI2RlZmlu ZSBfX0xJTUFfVk1fSF9fCisKKyNpbmNsdWRlIDxsaW51eC9yYnRyZWUuaD4KKyNpbmNsdWRlIDxs aW51eC9rcmVmLmg+CisKKyNkZWZpbmUgTElNQV9QQUdFX1NJWkUgICAgNDA5NgorI2RlZmluZSBM SU1BX1BBR0VfTUFTSyAgICAoTElNQV9QQUdFX1NJWkUgLSAxKQorI2RlZmluZSBMSU1BX1BBR0Vf RU5UX05VTSAoTElNQV9QQUdFX1NJWkUgLyBzaXplb2YodTMyKSkKKworI2RlZmluZSBMSU1BX1ZB X1JFU0VSVkVfU1RBUlQgIDB4RkZGMDAwMDAKKyNkZWZpbmUgTElNQV9WQV9SRVNFUlZFX0RMQlUg ICBMSU1BX1ZBX1JFU0VSVkVfU1RBUlQKKyNkZWZpbmUgTElNQV9WQV9SRVNFUlZFX0VORCAgICAw eDEwMDAwMDAwMAorCitzdHJ1Y3QgbGltYV9ibzsKK3N0cnVjdCBsaW1hX2RldmljZTsKKworc3Ry dWN0IGxpbWFfdm0geworCXN0cnVjdCBrcmVmIHJlZmNvdW50OworCisJLyogdHJlZSBvZiB2aXJ0 dWFsIGFkZHJlc3NlcyBtYXBwZWQgKi8KKwlzdHJ1Y3QgcmJfcm9vdF9jYWNoZWQgdmE7CisKKwlz dHJ1Y3QgbGltYV9kZXZpY2UgKmRldjsKKworCXN0cnVjdCBsaW1hX2JvICpwZDsKKwlzdHJ1Y3Qg bGltYV9ibyAqcHRbTElNQV9QQUdFX0VOVF9OVU1dOworfTsKKworaW50IGxpbWFfdm1fYm9fbWFw KHN0cnVjdCBsaW1hX3ZtICp2bSwgc3RydWN0IGxpbWFfYm8gKmJvLCB1MzIgc3RhcnQpOworaW50 IGxpbWFfdm1fYm9fdW5tYXAoc3RydWN0IGxpbWFfdm0gKnZtLCBzdHJ1Y3QgbGltYV9ibyAqYm8s IHUzMiBzdGFydCk7CisKK2ludCBsaW1hX3ZtX2JvX2FkZChzdHJ1Y3QgbGltYV92bSAqdm0sIHN0 cnVjdCBsaW1hX2JvICpibyk7CitpbnQgbGltYV92bV9ib19kZWwoc3RydWN0IGxpbWFfdm0gKnZt LCBzdHJ1Y3QgbGltYV9ibyAqYm8pOworCitzdHJ1Y3QgbGltYV92bSAqbGltYV92bV9jcmVhdGUo c3RydWN0IGxpbWFfZGV2aWNlICpkZXYpOwordm9pZCBsaW1hX3ZtX3JlbGVhc2Uoc3RydWN0IGty ZWYgKmtyZWYpOworCitzdGF0aWMgaW5saW5lIHN0cnVjdCBsaW1hX3ZtICpsaW1hX3ZtX2dldChz dHJ1Y3QgbGltYV92bSAqdm0pCit7CisJa3JlZl9nZXQoJnZtLT5yZWZjb3VudCk7CisJcmV0dXJu IHZtOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgbGltYV92bV9wdXQoc3RydWN0IGxpbWFfdm0g KnZtKQoreworCWtyZWZfcHV0KCZ2bS0+cmVmY291bnQsIGxpbWFfdm1fcmVsZWFzZSk7Cit9CisK K3ZvaWQgbGltYV92bV9wcmludChzdHJ1Y3QgbGltYV92bSAqdm0pOworCisjZW5kaWYKLS0gCjIu MTcuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJp LWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==