From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lucas Stach Subject: [PATCH RFC 095/111] staging: etnaviv: allow to map buffer object into multiple address spaces Date: Thu, 2 Apr 2015 17:30:37 +0200 Message-ID: <1427988653-754-96-git-send-email-l.stach@pengutronix.de> References: <1427988653-754-1-git-send-email-l.stach@pengutronix.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [92.198.50.35]) by gabe.freedesktop.org (Postfix) with ESMTP id C9D3D6EA7B for ; Thu, 2 Apr 2015 08:31:01 -0700 (PDT) In-Reply-To: <1427988653-754-1-git-send-email-l.stach@pengutronix.de> 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 Cc: Russell King , kernel@pengutronix.de List-Id: dri-devel@lists.freedesktop.org QXMgc2luZ2xlIGJ1ZmZlciBvYmplY3QgbWF5IGJlIG1hcHBlZCBpbnRvIGRpZmZlcmVudCBhZGRy ZXNzIHNwYWNlcyBhdCB0aGUKc2FtZSB0aW1lLiBGb3Igbm93IHdlIG9ubHkgaGF2ZSB0d28gZGlm ZmVyZW50IGFkZHJlc3Mgc3BhY2VzIGZvciB0aGUgM0QgYW5kCjJEIHBpcGUsIGJ1dCB0aGlzIG1h eSBjaGFuZ2UgYXMgc29vbiBhcyB3ZSBpbXBsZW1lbnQgcGVyLXByb2Nlc3MgcGFnZSB0YWJsZXMu CgpBbGxvdyB0aGlzIGJ5IGhhdmluZyBlYWNoIGJ1ZmZlciBvYmplY3QgbWFuYWdlIGEgbGlzdCBv ZiBhbGwgaXQncwptYXBwaW5ncyBpbnRvIHRoZSByZXNwZWN0aXZlIGFkZHJlc3Mgc3BhY2VzLgoK U2lnbmVkLW9mZi1ieTogTHVjYXMgU3RhY2ggPGwuc3RhY2hAcGVuZ3V0cm9uaXguZGU+Ci0tLQog ZHJpdmVycy9zdGFnaW5nL2V0bmF2aXYvZXRuYXZpdl9nZW0uYyB8IDQ0ICsrKysrKysrKysrKysr KysrLS0tLS0KIGRyaXZlcnMvc3RhZ2luZy9ldG5hdml2L2V0bmF2aXZfZ2VtLmggfCAxMyArKysr KystCiBkcml2ZXJzL3N0YWdpbmcvZXRuYXZpdi9ldG5hdml2X21tdS5jIHwgNzEgKysrKysrKysr KysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvc3RhZ2luZy9ldG5hdml2L2V0bmF2 aXZfbW11LmggfCAgOCArKystCiA0IGZpbGVzIGNoYW5nZWQsIDkzIGluc2VydGlvbnMoKyksIDQz IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ldG5hdml2L2V0bmF2 aXZfZ2VtLmMgYi9kcml2ZXJzL3N0YWdpbmcvZXRuYXZpdi9ldG5hdml2X2dlbS5jCmluZGV4IDU3 ZjMwODBmYjYzMi4uMDQ1OTRkYWQyN2UyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvZXRu YXZpdi9ldG5hdml2X2dlbS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ldG5hdml2L2V0bmF2aXZf Z2VtLmMKQEAgLTMxMCwxOSArMzEwLDI1IEBAIGludCBldG5hdml2X2dlbV9nZXRfaW92YV9sb2Nr ZWQoc3RydWN0IGV0bmF2aXZfZ3B1ICpncHUsCiAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmos IHVpbnQzMl90ICppb3ZhKQogewogCXN0cnVjdCBldG5hdml2X2dlbV9vYmplY3QgKmV0bmF2aXZf b2JqID0gdG9fZXRuYXZpdl9ibyhvYmopOworCXN0cnVjdCBldG5hdml2X3ZyYW1fbWFwcGluZyAq bWFwcGluZyA9CisJCQlldG5hdml2X2dlbV9nZXRfdnJhbV9tYXBwaW5nKGV0bmF2aXZfb2JqLCBn cHUtPm1tdSk7CiAJaW50IHJldCA9IDA7CiAKLQlpZiAoIWV0bmF2aXZfb2JqLT5pb3ZhICYmICEo ZXRuYXZpdl9vYmotPmZsYWdzICYgRVROQV9CT19DTURTVFJFQU0pKSB7CisJaWYgKGV0bmF2aXZf b2JqLT5mbGFncyAmIEVUTkFfQk9fQ01EU1RSRUFNKSB7CisJCSppb3ZhID0gZXRuYXZpdl9vYmot PnBhZGRyOworCQlyZXR1cm4gMDsKKwl9CisKKwlpZiAoIW1hcHBpbmcpIHsKIAkJc3RydWN0IHBh Z2UgKipwYWdlcyA9IGV0bmF2aXZfZ2VtX2dldF9wYWdlcyhldG5hdml2X29iaik7CiAJCWlmIChJ U19FUlIocGFnZXMpKQogCQkJcmV0dXJuIFBUUl9FUlIocGFnZXMpOwotCiAJCXJldCA9IGV0bmF2 aXZfaW9tbXVfbWFwX2dlbShncHUtPm1tdSwgZXRuYXZpdl9vYmosCi0JCQkJZ3B1LT5tZW1vcnlf YmFzZSk7CisJCQkJZ3B1LT5tZW1vcnlfYmFzZSwgJm1hcHBpbmcpOwogCX0KIAogCWlmICghcmV0 KQotCQkqaW92YSA9IGV0bmF2aXZfb2JqLT5pb3ZhOworCQkqaW92YSA9IG1hcHBpbmctPmlvdmE7 CiAKIAlyZXR1cm4gcmV0OwogfQpAQCAtMzMxLDEzICszMzcsMTUgQEAgaW50IGV0bmF2aXZfZ2Vt X2dldF9pb3ZhKHN0cnVjdCBldG5hdml2X2dwdSAqZ3B1LCBzdHJ1Y3QgZHJtX2dlbV9vYmplY3Qg Km9iaiwKIAlpbnQgaWQsIHVpbnQzMl90ICppb3ZhKQogewogCXN0cnVjdCBldG5hdml2X2dlbV9v YmplY3QgKmV0bmF2aXZfb2JqID0gdG9fZXRuYXZpdl9ibyhvYmopOworCXN0cnVjdCBldG5hdml2 X3ZyYW1fbWFwcGluZyAqbWFwcGluZyA9CisJCQlldG5hdml2X2dlbV9nZXRfdnJhbV9tYXBwaW5n KGV0bmF2aXZfb2JqLCBncHUtPm1tdSk7CiAJaW50IHJldDsKIAogCS8qIHRoaXMgaXMgc2FmZSBy aWdodCBub3cgYmVjYXVzZSB3ZSBkb24ndCB1bm1hcCB1bnRpbCB0aGUKIAkgKiBibyBpcyBkZWxl dGVkOgogCSAqLwotCWlmIChldG5hdml2X29iai0+aW92YSkgewotCQkqaW92YSA9IGV0bmF2aXZf b2JqLT5pb3ZhOworCWlmIChtYXBwaW5nKSB7CisJCSppb3ZhID0gbWFwcGluZy0+aW92YTsKIAkJ cmV0dXJuIDA7CiAJfQogCkBAIC01NDYsMTEgKzU1NCwxMiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 IGV0bmF2aXZfZ2VtX29wcyBldG5hdml2X2dlbV9jbWRfb3BzID0gewogc3RhdGljIHZvaWQgZXRu YXZpdl9mcmVlX29iaihzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKIHsKIAlzdHJ1Y3QgZXRu YXZpdl9nZW1fb2JqZWN0ICpldG5hdml2X29iaiA9IHRvX2V0bmF2aXZfYm8ob2JqKTsKLQlzdHJ1 Y3QgZXRuYXZpdl9kcm1fcHJpdmF0ZSAqcHJpdiA9IG9iai0+ZGV2LT5kZXZfcHJpdmF0ZTsKLQlz dHJ1Y3QgZXRuYXZpdl9pb21tdSAqbW11ID0gcHJpdi0+bW11OworCXN0cnVjdCBldG5hdml2X3Zy YW1fbWFwcGluZyAqbWFwcGluZywgKnRtcDsKIAotCWlmIChtbXUpCi0JCWV0bmF2aXZfaW9tbXVf dW5tYXBfZ2VtKG1tdSwgZXRuYXZpdl9vYmopOworCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZSht YXBwaW5nLCB0bXAsICZldG5hdml2X29iai0+dnJhbV9saXN0LAorCQkJCSBvYmpfaGVhZCkgewor CQlldG5hdml2X2lvbW11X3VubWFwX2dlbShtYXBwaW5nLT5tbXUsIGV0bmF2aXZfb2JqLCBtYXBw aW5nKTsKKwl9CiB9CiAKIHN0YXRpYyB2b2lkIGV0bmF2aXZfZ2VtX3NobWVtX3JlbGVhc2Uoc3Ry dWN0IGV0bmF2aXZfZ2VtX29iamVjdCAqZXRuYXZpdl9vYmopCkBAIC02NjUsNiArNjc0LDcgQEAg c3RhdGljIGludCBldG5hdml2X2dlbV9uZXdfaW1wbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAog CXJlc2VydmF0aW9uX29iamVjdF9pbml0KCZldG5hdml2X29iai0+X3Jlc3YpOwogCiAJSU5JVF9M SVNUX0hFQUQoJmV0bmF2aXZfb2JqLT5zdWJtaXRfZW50cnkpOworCUlOSVRfTElTVF9IRUFEKCZl dG5hdml2X29iai0+dnJhbV9saXN0KTsKIAlsaXN0X2FkZF90YWlsKCZldG5hdml2X29iai0+bW1f bGlzdCwgJnByaXYtPmluYWN0aXZlX2xpc3QpOwogCiAJKm9iaiA9ICZldG5hdml2X29iai0+YmFz ZTsKQEAgLTcyNCw2ICs3MzQsMjAgQEAgaW50IGV0bmF2aXZfZ2VtX25ld19wcml2YXRlKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHNpemVfdCBzaXplLCB1aW50MzJfdCBmbGFncywKIAlyZXR1cm4g MDsKIH0KIAorc3RydWN0IGV0bmF2aXZfdnJhbV9tYXBwaW5nICoKK2V0bmF2aXZfZ2VtX2dldF92 cmFtX21hcHBpbmcoc3RydWN0IGV0bmF2aXZfZ2VtX29iamVjdCAqb2JqLAorCQkJICAgICBzdHJ1 Y3QgZXRuYXZpdl9pb21tdSAqbW11KQoreworCXN0cnVjdCBldG5hdml2X3ZyYW1fbWFwcGluZyAq bWFwcGluZzsKKworCWxpc3RfZm9yX2VhY2hfZW50cnkobWFwcGluZywgJm9iai0+dnJhbV9saXN0 LCBvYmpfaGVhZCkgeworCQlpZiAobWFwcGluZy0+bW11ID09IG1tdSkKKwkJCXJldHVybiBtYXBw aW5nOworCX0KKworCXJldHVybiBOVUxMOworfQorCiBzdHJ1Y3QgZ2V0X3BhZ2VzX3dvcmsgewog CXN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrOwogCXN0cnVjdCBtbV9zdHJ1Y3QgKm1tOwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9zdGFnaW5nL2V0bmF2aXYvZXRuYXZpdl9nZW0uaCBiL2RyaXZlcnMvc3Rh Z2luZy9ldG5hdml2L2V0bmF2aXZfZ2VtLmgKaW5kZXggZmFkZDUxOThiM2U4Li5iMGU1ZTk2ODkx MmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ldG5hdml2L2V0bmF2aXZfZ2VtLmgKKysr IGIvZHJpdmVycy9zdGFnaW5nL2V0bmF2aXYvZXRuYXZpdl9nZW0uaApAQCAtMzAsNiArMzAsMTMg QEAgc3RydWN0IGV0bmF2aXZfZ2VtX3VzZXJwdHIgewogCWJvb2wgcm87CiB9OwogCitzdHJ1Y3Qg ZXRuYXZpdl92cmFtX21hcHBpbmcgeworCXN0cnVjdCBsaXN0X2hlYWQgb2JqX2hlYWQ7CisJc3Ry dWN0IGV0bmF2aXZfaW9tbXUgKm1tdTsKKwlzdHJ1Y3QgZHJtX21tX25vZGUgdnJhbV9ub2RlOwor CXVpbnQzMl90IGlvdmE7Cit9OworCiBzdHJ1Y3QgZXRuYXZpdl9nZW1fb2JqZWN0IHsKIAlzdHJ1 Y3QgZHJtX2dlbV9vYmplY3QgYmFzZTsKIAljb25zdCBzdHJ1Y3QgZXRuYXZpdl9nZW1fb3BzICpv cHM7CkBAIC01OSw3ICs2Niw2IEBAIHN0cnVjdCBldG5hdml2X2dlbV9vYmplY3QgewogCXN0cnVj dCBwYWdlICoqcGFnZXM7CiAJc3RydWN0IHNnX3RhYmxlICpzZ3Q7CiAJdm9pZCAqdmFkZHI7Ci0J dWludDMyX3QgaW92YTsKIAogCS8qIGZvciBFVE5BX0JPX0NNRFNUUkVBTSAqLwogCWRtYV9hZGRy X3QgcGFkZHI7CkBAIC02OCw3ICs3NCw3IEBAIHN0cnVjdCBldG5hdml2X2dlbV9vYmplY3Qgewog CXN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QgKnJlc3Y7CiAJc3RydWN0IHJlc2VydmF0aW9uX29i amVjdCBfcmVzdjsKIAotCXN0cnVjdCBkcm1fbW1fbm9kZSAqZ3B1X3ZyYW1fbm9kZTsKKwlzdHJ1 Y3QgbGlzdF9oZWFkIHZyYW1fbGlzdDsKIAogCS8qIGZvciBidWZmZXIgbWFuaXB1bGF0aW9uIGR1 cmluZyBzdWJtaXQgKi8KIAl1MzIgb2Zmc2V0OwpAQCAtMTIwLDYgKzEyNiw5IEBAIHN0cnVjdCBl dG5hdml2X2dlbV9zdWJtaXQgewogCX0gYm9zWzBdOwogfTsKIAorc3RydWN0IGV0bmF2aXZfdnJh bV9tYXBwaW5nICoKK2V0bmF2aXZfZ2VtX2dldF92cmFtX21hcHBpbmcoc3RydWN0IGV0bmF2aXZf Z2VtX29iamVjdCAqb2JqLAorCQkJICAgICBzdHJ1Y3QgZXRuYXZpdl9pb21tdSAqbW11KTsKIGlu dCBldG5hdml2X2dlbV9uZXdfcHJpdmF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzaXplX3Qg c2l6ZSwgdWludDMyX3QgZmxhZ3MsCiAJc3RydWN0IGV0bmF2aXZfZ2VtX29iamVjdCAqKnJlcyk7 CiBzdHJ1Y3QgcGFnZSAqKmV0bmF2aXZfZ2VtX2dldF9wYWdlcyhzdHJ1Y3QgZXRuYXZpdl9nZW1f b2JqZWN0ICpvYmopOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2V0bmF2aXYvZXRuYXZp dl9tbXUuYyBiL2RyaXZlcnMvc3RhZ2luZy9ldG5hdml2L2V0bmF2aXZfbW11LmMKaW5kZXggODk3 MzU2ZDA4ZTMwLi40YmNjM2VhYmIzYTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ldG5h dml2L2V0bmF2aXZfbW11LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2V0bmF2aXYvZXRuYXZpdl9t bXUuYwpAQCAtOTIsMjggKzkyLDM4IEBAIGludCBldG5hdml2X2lvbW11X3VubWFwKHN0cnVjdCBl dG5hdml2X2lvbW11ICppb21tdSwgdWludDMyX3QgaW92YSwKIH0KIAogaW50IGV0bmF2aXZfaW9t bXVfbWFwX2dlbShzdHJ1Y3QgZXRuYXZpdl9pb21tdSAqbW11LAotCXN0cnVjdCBldG5hdml2X2dl bV9vYmplY3QgKmV0bmF2aXZfb2JqLCB1aW50MzJfdCBtZW1vcnlfYmFzZSkKKwlzdHJ1Y3QgZXRu YXZpdl9nZW1fb2JqZWN0ICpldG5hdml2X29iaiwgdWludDMyX3QgbWVtb3J5X2Jhc2UsCisJc3Ry dWN0IGV0bmF2aXZfdnJhbV9tYXBwaW5nICoqb3V0X21hcHBpbmcpCiB7CiAJc3RydWN0IGV0bmF2 aXZfZHJtX3ByaXZhdGUgKnByaXYgPSBldG5hdml2X29iai0+YmFzZS5kZXYtPmRldl9wcml2YXRl OwogCXN0cnVjdCBzZ190YWJsZSAqc2d0ID0gZXRuYXZpdl9vYmotPnNndDsKKwlzdHJ1Y3QgZXRu YXZpdl92cmFtX21hcHBpbmcgKm1hcHBpbmcsICpmcmVlID0gTlVMTDsKIAlzdHJ1Y3QgZHJtX21t X25vZGUgKm5vZGU7CiAJaW50IHJldDsKIAorCW1hcHBpbmcgPSBremFsbG9jKHNpemVvZigqbWFw cGluZyksIEdGUF9LRVJORUwpOworCWlmICghbWFwcGluZykKKwkJcmV0dXJuIC1FTk9NRU07CisK KwlJTklUX0xJU1RfSEVBRCgmbWFwcGluZy0+b2JqX2hlYWQpOworCW1hcHBpbmctPm1tdSA9IG1t dTsKKwogCS8qIHYxIE1NVSBjYW4gb3B0aW1pemUgc2luZ2xlIGVudHJ5IChjb250aWd1b3VzKSBz Y2F0dGVybGlzdHMgKi8KIAlpZiAoc2d0LT5uZW50cyA9PSAxKSB7CiAJCXVpbnQzMl90IGlvdmE7 CiAKIAkJaW92YSA9IHNnX2RtYV9hZGRyZXNzKHNndC0+c2dsKSAtIG1lbW9yeV9iYXNlOwogCQlp ZiAoaW92YSA8IDB4ODAwMDAwMDAgLSBzZ19kbWFfbGVuKHNndC0+c2dsKSkgewotCQkJZXRuYXZp dl9vYmotPmlvdmEgPSBpb3ZhOworCQkJbWFwcGluZy0+aW92YSA9IGlvdmE7CisJCQlsaXN0X2Fk ZF90YWlsKCZtYXBwaW5nLT5vYmpfaGVhZCwKKwkJCQkgICAgICAmZXRuYXZpdl9vYmotPnZyYW1f bGlzdCk7CisJCQlpZiAob3V0X21hcHBpbmcpCisJCQkJKm91dF9tYXBwaW5nID0gbWFwcGluZzsK IAkJCXJldHVybiAwOwogCQl9CiAJfQogCi0Jbm9kZSA9IGt6YWxsb2Moc2l6ZW9mKCpub2RlKSwg R0ZQX0tFUk5FTCk7Ci0JaWYgKCFub2RlKQotCQlyZXR1cm4gLUVOT01FTTsKLQorCW5vZGUgPSAm bWFwcGluZy0+dnJhbV9ub2RlOwogCXdoaWxlICgxKSB7CiAJCXN0cnVjdCBldG5hdml2X2dlbV9v YmplY3QgKm8sICpuOwogCQlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CkBAIC0xNDIsOCArMTUyLDgg QEAgaW50IGV0bmF2aXZfaW9tbXVfbWFwX2dlbShzdHJ1Y3QgZXRuYXZpdl9pb21tdSAqbW11LAog CQlmb3VuZCA9IDA7CiAJCUlOSVRfTElTVF9IRUFEKCZsaXN0KTsKIAkJbGlzdF9mb3JfZWFjaF9l bnRyeShvLCAmcHJpdi0+aW5hY3RpdmVfbGlzdCwgbW1fbGlzdCkgewotCQkJaWYgKCFvLT5ncHVf dnJhbV9ub2RlIHx8Ci0JCQkgICAgby0+Z3B1X3ZyYW1fbm9kZS0+bW0gIT0gJm1tdS0+bW0pCisJ CQlmcmVlID0gZXRuYXZpdl9nZW1fZ2V0X3ZyYW1fbWFwcGluZyhvLCBtbXUpOworCQkJaWYgKCFm cmVlKQogCQkJCWNvbnRpbnVlOwogCiAJCQkvKgpAQCAtMTU0LDcgKzE2NCw3IEBAIGludCBldG5h dml2X2lvbW11X21hcF9nZW0oc3RydWN0IGV0bmF2aXZfaW9tbXUgKm1tdSwKIAkJCQljb250aW51 ZTsKIAogCQkJbGlzdF9hZGQoJm8tPnN1Ym1pdF9lbnRyeSwgJmxpc3QpOwotCQkJaWYgKGRybV9t bV9zY2FuX2FkZF9ibG9jayhvLT5ncHVfdnJhbV9ub2RlKSkgeworCQkJaWYgKGRybV9tbV9zY2Fu X2FkZF9ibG9jaygmZnJlZS0+dnJhbV9ub2RlKSkgewogCQkJCWZvdW5kID0gdHJ1ZTsKIAkJCQli cmVhazsKIAkJCX0KQEAgLTE2Myw3ICsxNzMsNyBAQCBpbnQgZXRuYXZpdl9pb21tdV9tYXBfZ2Vt KHN0cnVjdCBldG5hdml2X2lvbW11ICptbXUsCiAJCWlmICghZm91bmQpIHsKIAkJCS8qIE5vdGhp bmcgZm91bmQsIGNsZWFuIHVwIGFuZCBmYWlsICovCiAJCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3Nh ZmUobywgbiwgJmxpc3QsIHN1Ym1pdF9lbnRyeSkKLQkJCQlCVUdfT04oZHJtX21tX3NjYW5fcmVt b3ZlX2Jsb2NrKG8tPmdwdV92cmFtX25vZGUpKTsKKwkJCQlCVUdfT04oZHJtX21tX3NjYW5fcmVt b3ZlX2Jsb2NrKCZmcmVlLT52cmFtX25vZGUpKTsKIAkJCWJyZWFrOwogCQl9CiAKQEAgLTE3NCwx MiArMTg0LDEyIEBAIGludCBldG5hdml2X2lvbW11X21hcF9nZW0oc3RydWN0IGV0bmF2aXZfaW9t bXUgKm1tdSwKIAkJICogY2FuIGxlYXZlIHRoZSBibG9jayBwaW5uZWQuCiAJCSAqLwogCQlsaXN0 X2Zvcl9lYWNoX2VudHJ5X3NhZmUobywgbiwgJmxpc3QsIHN1Ym1pdF9lbnRyeSkKLQkJCWlmICgh ZHJtX21tX3NjYW5fcmVtb3ZlX2Jsb2NrKG8tPmdwdV92cmFtX25vZGUpKQorCQkJaWYgKCFkcm1f bW1fc2Nhbl9yZW1vdmVfYmxvY2soJmZyZWUtPnZyYW1fbm9kZSkpCiAJCQkJbGlzdF9kZWxfaW5p dCgmby0+c3VibWl0X2VudHJ5KTsKIAogCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobywgbiwg Jmxpc3QsIHN1Ym1pdF9lbnRyeSkgewogCQkJbGlzdF9kZWxfaW5pdCgmby0+c3VibWl0X2VudHJ5 KTsKLQkJCWV0bmF2aXZfaW9tbXVfdW5tYXBfZ2VtKG1tdSwgbyk7CisJCQlldG5hdml2X2lvbW11 X3VubWFwX2dlbShtbXUsIG8sIGZyZWUpOwogCQl9CiAKIAkJLyoKQEAgLTE5MSw0MCArMjAxLDQz IEBAIGludCBldG5hdml2X2lvbW11X21hcF9nZW0oc3RydWN0IGV0bmF2aXZfaW9tbXUgKm1tdSwK IAl9CiAKIAlpZiAocmV0IDwgMCkgewotCQlrZnJlZShub2RlKTsKKwkJa2ZyZWUobWFwcGluZyk7 CiAJCXJldHVybiByZXQ7CiAJfQogCiAJbW11LT5sYXN0X2lvdmEgPSBub2RlLT5zdGFydCArIGV0 bmF2aXZfb2JqLT5iYXNlLnNpemU7Ci0JZXRuYXZpdl9vYmotPmlvdmEgPSBub2RlLT5zdGFydDsK LQlldG5hdml2X29iai0+Z3B1X3ZyYW1fbm9kZSA9IG5vZGU7CisJbWFwcGluZy0+aW92YSA9IG5v ZGUtPnN0YXJ0OwogCXJldCA9IGV0bmF2aXZfaW9tbXVfbWFwKG1tdSwgbm9kZS0+c3RhcnQsIHNn dCwgZXRuYXZpdl9vYmotPmJhc2Uuc2l6ZSwKIAkJCQlJT01NVV9SRUFEIHwgSU9NTVVfV1JJVEUp OwogCiAJaWYgKHJldCA8IDApIHsKIAkJZHJtX21tX3JlbW92ZV9ub2RlKG5vZGUpOwotCQlrZnJl ZShub2RlKTsKLQotCQlldG5hdml2X29iai0+aW92YSA9IDA7Ci0JCWV0bmF2aXZfb2JqLT5ncHVf dnJhbV9ub2RlID0gTlVMTDsKKwkJa2ZyZWUobWFwcGluZyk7CisJCXJldHVybiByZXQ7CiAJfQog CisJbGlzdF9hZGRfdGFpbCgmbWFwcGluZy0+b2JqX2hlYWQsICZldG5hdml2X29iai0+dnJhbV9s aXN0KTsKKwlpZiAob3V0X21hcHBpbmcpCisJCSpvdXRfbWFwcGluZyA9IG1hcHBpbmc7CisKIAly ZXR1cm4gcmV0OwogfQogCiB2b2lkIGV0bmF2aXZfaW9tbXVfdW5tYXBfZ2VtKHN0cnVjdCBldG5h dml2X2lvbW11ICptbXUsCi0Jc3RydWN0IGV0bmF2aXZfZ2VtX29iamVjdCAqZXRuYXZpdl9vYmop CisJCQkgICAgIHN0cnVjdCBldG5hdml2X2dlbV9vYmplY3QgKmV0bmF2aXZfb2JqLAorCQkJICAg ICBzdHJ1Y3QgZXRuYXZpdl92cmFtX21hcHBpbmcgKm1hcHBpbmcpCiB7Ci0JaWYgKGV0bmF2aXZf b2JqLT5ncHVfdnJhbV9ub2RlKSB7Ci0JCXVpbnQzMl90IG9mZnNldCA9IGV0bmF2aXZfb2JqLT5n cHVfdnJhbV9ub2RlLT5zdGFydDsKKwlpZiAobWFwcGluZykgeworCQl1aW50MzJfdCBvZmZzZXQg PSBtYXBwaW5nLT52cmFtX25vZGUuc3RhcnQ7CiAKLQkJZXRuYXZpdl9pb21tdV91bm1hcChtbXUs IG9mZnNldCwgZXRuYXZpdl9vYmotPnNndCwKLQkJCQkgICAgZXRuYXZpdl9vYmotPmJhc2Uuc2l6 ZSk7Ci0JCWRybV9tbV9yZW1vdmVfbm9kZShldG5hdml2X29iai0+Z3B1X3ZyYW1fbm9kZSk7Ci0J CWtmcmVlKGV0bmF2aXZfb2JqLT5ncHVfdnJhbV9ub2RlKTsKLQotCQlldG5hdml2X29iai0+Z3B1 X3ZyYW1fbm9kZSA9IE5VTEw7Ci0JCWV0bmF2aXZfb2JqLT5pb3ZhID0gMDsKKwkJaWYgKG1hcHBp bmctPmlvdmEgPj0gMHg4MDAwMDAwMCkgeworCQkJZXRuYXZpdl9pb21tdV91bm1hcChtbXUsIG9m ZnNldCwgZXRuYXZpdl9vYmotPnNndCwKKwkJCQkJICAgIGV0bmF2aXZfb2JqLT5iYXNlLnNpemUp OworCQkJZHJtX21tX3JlbW92ZV9ub2RlKCZtYXBwaW5nLT52cmFtX25vZGUpOworCQl9CisJCWxp c3RfZGVsKCZtYXBwaW5nLT5vYmpfaGVhZCk7CisJCWtmcmVlKG1hcHBpbmcpOworCQltYXBwaW5n ID0gTlVMTDsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ldG5hdml2L2V0 bmF2aXZfbW11LmggYi9kcml2ZXJzL3N0YWdpbmcvZXRuYXZpdi9ldG5hdml2X21tdS5oCmluZGV4 IDI5ODgxZTI3ZGM3ZS4uOWE0YjQ5MzAxNWY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcv ZXRuYXZpdi9ldG5hdml2X21tdS5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ldG5hdml2L2V0bmF2 aXZfbW11LmgKQEAgLTIwLDYgKzIwLDggQEAKIAogI2luY2x1ZGUgPGxpbnV4L2lvbW11Lmg+CiAK K3N0cnVjdCBldG5hdml2X3ZyYW1fbWFwcGluZzsKKwogc3RydWN0IGV0bmF2aXZfaW9tbXUgewog CXN0cnVjdCBkcm1fZGV2aWNlICpkZXY7CiAJc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluOwpA QCAtMzksOSArNDEsMTEgQEAgaW50IGV0bmF2aXZfaW9tbXVfbWFwKHN0cnVjdCBldG5hdml2X2lv bW11ICppb21tdSwgdWludDMyX3QgaW92YSwKIGludCBldG5hdml2X2lvbW11X3VubWFwKHN0cnVj dCBldG5hdml2X2lvbW11ICppb21tdSwgdWludDMyX3QgaW92YSwKIAlzdHJ1Y3Qgc2dfdGFibGUg KnNndCwgdW5zaWduZWQgbGVuKTsKIGludCBldG5hdml2X2lvbW11X21hcF9nZW0oc3RydWN0IGV0 bmF2aXZfaW9tbXUgKm1tdSwKLQlzdHJ1Y3QgZXRuYXZpdl9nZW1fb2JqZWN0ICpldG5hdml2X29i aiwgdWludDMyX3QgbWVtb3J5X2Jhc2UpOworCXN0cnVjdCBldG5hdml2X2dlbV9vYmplY3QgKmV0 bmF2aXZfb2JqLCB1aW50MzJfdCBtZW1vcnlfYmFzZSwKKwlzdHJ1Y3QgZXRuYXZpdl92cmFtX21h cHBpbmcgKiptYXBwaW5nKTsKIHZvaWQgZXRuYXZpdl9pb21tdV91bm1hcF9nZW0oc3RydWN0IGV0 bmF2aXZfaW9tbXUgKm1tdSwKLQlzdHJ1Y3QgZXRuYXZpdl9nZW1fb2JqZWN0ICpldG5hdml2X29i aik7CisJc3RydWN0IGV0bmF2aXZfZ2VtX29iamVjdCAqZXRuYXZpdl9vYmosCisJc3RydWN0IGV0 bmF2aXZfdnJhbV9tYXBwaW5nICptYXBwaW5nKTsKIHZvaWQgZXRuYXZpdl9pb21tdV9kZXN0cm95 KHN0cnVjdCBldG5hdml2X2lvbW11ICppb21tdSk7CiAKIHN0cnVjdCBldG5hdml2X2lvbW11ICpl dG5hdml2X2lvbW11X25ldyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAotLSAKMi4xLjQKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWls aW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==