From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mark Yao Subject: [PATCH v2 1/7] drm/rockchip: Do not use DMA mapping API if attached to IOMMU domain Date: Tue, 7 Feb 2017 16:35:36 +0800 Message-ID: <1486456542-18675-2-git-send-email-mark.yao@rock-chips.com> References: <1486456542-18675-1-git-send-email-mark.yao@rock-chips.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1486456542-18675-1-git-send-email-mark.yao@rock-chips.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: David Airlie , Heiko Stuebner , dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org Cc: Shunqian Zheng , Tomasz Figa List-Id: linux-rockchip.vger.kernel.org RnJvbTogVG9tYXN6IEZpZ2EgPHRmaWdhQGNocm9taXVtLm9yZz4KClRoZSBBUEkgaXMgbm90IHN1 aXRhYmxlIGZvciBzdWJzeXN0ZW1zIGNvbnNpc3Rpbmcgb2YgbXVsdGlwbGUgZGV2aWNlcwphbmQg cmVxdWlyZXMgc2V2ZXJlIGhhY2tzIHRvIHVzZSBpdC4gVG8gbWl0aWdhdGUgdGhpcywgdGhpcyBw YXRjaAppbXBsZW1lbnRzIGFsbG9jYXRpb24gYW5kIGFkZHJlc3Mgc3BhY2UgbWFuYWdlbWVudCBs b2NhbGx5IGJ5IHVzaW5nCmhlbHBlcnMgcHJvdmlkZWQgYnkgRFJNIGZyYW1ld29yaywgbGlrZSBv dGhlciBEUk0gZHJpdmVycyBkbywgZS5nLgpUZWdyYS4KClRoaXMgcGF0Y2ggc2hvdWxkIG5vdCBp bnRyb2R1Y2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB1bnRpbCB0aGUgZHJpdmVyCmlzIG1hZGUg dG8gYXR0YWNoIHN1YmRldmljZXMgaW50byBhbiBJT01NVSBkb21haW4gd2l0aCB0aGUgZ2VuZXJp YyBJT01NVQpBUEksIHdoaWNoIHdpbGwgaGFwcGVuIGluIGZvbGxvd2luZyBwYXRjaC4gQmFzZWQg aGVhdmlseSBvbiBHRU0KaW1wbGVtZW50YXRpb24gb2YgVGVncmEgRFJNIGRyaXZlci4KClNpZ25l ZC1vZmYtYnk6IFRvbWFzeiBGaWdhIDx0ZmlnYUBjaHJvbWl1bS5vcmc+ClNpZ25lZC1vZmYtYnk6 IFNodW5xaWFuIFpoZW5nIDx6aGVuZ3NxQHJvY2stY2hpcHMuY29tPgpBY2tlZC1ieTogTWFyayBZ YW8gPG1hcmsueWFvQHJvY2stY2hpcHMuY29tPgpTaWduZWQtb2ZmLWJ5OiBNYXJrIFlhbyA8bWFy ay55YW9Acm9jay1jaGlwcy5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tj aGlwX2RybV9kcnYuaCB8ICAgNCArLQogZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlw X2RybV9nZW0uYyB8IDIxNyArKysrKysrKysrKysrKysrKysrKysrKysrKy0tCiBkcml2ZXJzL2dw dS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX2dlbS5oIHwgICA4ICsKIDMgZmlsZXMgY2hhbmdl ZCwgMjE5IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0v cm9ja2NoaXAvcm9ja2NoaXBfZHJtX2Rydi5oCmluZGV4IGZiNjIyNmMuLjdjMTIzZDkgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fZHJ2LmgKKysrIGIv ZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV9kcnYuaApAQCAtMzAsNiArMzAs NyBAQAogCiBzdHJ1Y3QgZHJtX2RldmljZTsKIHN0cnVjdCBkcm1fY29ubmVjdG9yOworc3RydWN0 IGlvbW11X2RvbWFpbjsKIAogLyoKICAqIFJvY2tjaGlwIGRybSBwcml2YXRlIGNydGMgZnVuY3Mu CkBAIC02MCw3ICs2MSw4IEBAIHN0cnVjdCByb2NrY2hpcF9kcm1fcHJpdmF0ZSB7CiAJc3RydWN0 IGRybV9nZW1fb2JqZWN0ICpmYmRldl9ibzsKIAljb25zdCBzdHJ1Y3Qgcm9ja2NoaXBfY3J0Y19m dW5jcyAqY3J0Y19mdW5jc1tST0NLQ0hJUF9NQVhfQ1JUQ107CiAJc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKnN0YXRlOwotCisJc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluOworCXN0cnVjdCBk cm1fbW0gbW07CiAJc3RydWN0IGxpc3RfaGVhZCBwc3JfbGlzdDsKIAlzcGlubG9ja190IHBzcl9s aXN0X2xvY2s7CiB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tj aGlwX2RybV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fZ2Vt LmMKaW5kZXggYjcwZjk0Mi4uNTIwOTM5MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Jv Y2tjaGlwL3JvY2tjaGlwX2RybV9nZW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAv cm9ja2NoaXBfZHJtX2dlbS5jCkBAIC0xNiwxMSArMTYsMTM1IEBACiAjaW5jbHVkZSA8ZHJtL2Ry bVAuaD4KICNpbmNsdWRlIDxkcm0vZHJtX2dlbS5oPgogI2luY2x1ZGUgPGRybS9kcm1fdm1hX21h bmFnZXIuaD4KKyNpbmNsdWRlIDxsaW51eC9pb21tdS5oPgogCiAjaW5jbHVkZSAicm9ja2NoaXBf ZHJtX2Rydi5oIgogI2luY2x1ZGUgInJvY2tjaGlwX2RybV9nZW0uaCIKIAotc3RhdGljIGludCBy b2NrY2hpcF9nZW1fYWxsb2NfYnVmKHN0cnVjdCByb2NrY2hpcF9nZW1fb2JqZWN0ICpya19vYmos CitzdGF0aWMgaW50IHJvY2tjaGlwX2dlbV9pb21tdV9tYXAoc3RydWN0IHJvY2tjaGlwX2dlbV9v YmplY3QgKnJrX29iaikKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0gcmtfb2JqLT5iYXNl LmRldjsKKwlzdHJ1Y3Qgcm9ja2NoaXBfZHJtX3ByaXZhdGUgKnByaXZhdGUgPSBkcm0tPmRldl9w cml2YXRlOworCWludCBwcm90ID0gSU9NTVVfUkVBRCB8IElPTU1VX1dSSVRFOworCXNzaXplX3Qg cmV0OworCisJcmV0ID0gZHJtX21tX2luc2VydF9ub2RlX2dlbmVyaWMoJnByaXZhdGUtPm1tLCAm cmtfb2JqLT5tbSwKKwkJCQkJIHJrX29iai0+YmFzZS5zaXplLCBQQUdFX1NJWkUsCisJCQkJCSAw LCAwKTsKKwlpZiAocmV0IDwgMCkgeworCQlEUk1fRVJST1IoIm91dCBvZiBJL08gdmlydHVhbCBt ZW1vcnk6ICV6ZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlya19vYmotPmRtYV9h ZGRyID0gcmtfb2JqLT5tbS5zdGFydDsKKworCXJldCA9IGlvbW11X21hcF9zZyhwcml2YXRlLT5k b21haW4sIHJrX29iai0+ZG1hX2FkZHIsIHJrX29iai0+c2d0LT5zZ2wsCisJCQkgICBya19vYmot PnNndC0+bmVudHMsIHByb3QpOworCWlmIChyZXQgPCAwKSB7CisJCURSTV9FUlJPUigiZmFpbGVk IHRvIG1hcCBidWZmZXI6ICV6ZFxuIiwgcmV0KTsKKwkJZ290byBlcnJfcmVtb3ZlX25vZGU7CisJ fQorCisJcmtfb2JqLT5zaXplID0gcmV0OworCisJcmV0dXJuIDA7CisKK2Vycl9yZW1vdmVfbm9k ZToKKwlkcm1fbW1fcmVtb3ZlX25vZGUoJnJrX29iai0+bW0pOworCisJcmV0dXJuIHJldDsKK30K Kworc3RhdGljIGludCByb2NrY2hpcF9nZW1faW9tbXVfdW5tYXAoc3RydWN0IHJvY2tjaGlwX2dl bV9vYmplY3QgKnJrX29iaikKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0gcmtfb2JqLT5i YXNlLmRldjsKKwlzdHJ1Y3Qgcm9ja2NoaXBfZHJtX3ByaXZhdGUgKnByaXZhdGUgPSBkcm0tPmRl dl9wcml2YXRlOworCisJaW9tbXVfdW5tYXAocHJpdmF0ZS0+ZG9tYWluLCBya19vYmotPmRtYV9h ZGRyLCBya19vYmotPnNpemUpOworCWRybV9tbV9yZW1vdmVfbm9kZSgmcmtfb2JqLT5tbSk7CisK KwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCByb2NrY2hpcF9nZW1fZ2V0X3BhZ2VzKHN0cnVj dCByb2NrY2hpcF9nZW1fb2JqZWN0ICpya19vYmopCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRy bSA9IHJrX29iai0+YmFzZS5kZXY7CisJaW50IHJldCwgaTsKKwlzdHJ1Y3Qgc2NhdHRlcmxpc3Qg KnM7CisKKwlya19vYmotPnBhZ2VzID0gZHJtX2dlbV9nZXRfcGFnZXMoJnJrX29iai0+YmFzZSk7 CisJaWYgKElTX0VSUihya19vYmotPnBhZ2VzKSkKKwkJcmV0dXJuIFBUUl9FUlIocmtfb2JqLT5w YWdlcyk7CisKKwlya19vYmotPm51bV9wYWdlcyA9IHJrX29iai0+YmFzZS5zaXplID4+IFBBR0Vf U0hJRlQ7CisKKwlya19vYmotPnNndCA9IGRybV9wcmltZV9wYWdlc190b19zZyhya19vYmotPnBh Z2VzLCBya19vYmotPm51bV9wYWdlcyk7CisJaWYgKElTX0VSUihya19vYmotPnNndCkpIHsKKwkJ cmV0ID0gUFRSX0VSUihya19vYmotPnNndCk7CisJCWdvdG8gZXJyX3B1dF9wYWdlczsKKwl9CisK KwkvKgorCSAqIEZha2UgdXAgdGhlIFNHIHRhYmxlIHNvIHRoYXQgZG1hX3N5bmNfc2dfZm9yX2Rl dmljZSgpIGNhbiBiZSB1c2VkCisJICogdG8gZmx1c2ggdGhlIHBhZ2VzIGFzc29jaWF0ZWQgd2l0 aCBpdC4KKwkgKgorCSAqIFRPRE86IFJlcGxhY2UgdGhpcyBieSBkcm1fY2xmbHVzaF9zZygpIG9u Y2UgaXQgY2FuIGJlIGltcGxlbWVudGVkCisJICogd2l0aG91dCByZWx5aW5nIG9uIHN5bWJvbHMg dGhhdCBhcmUgbm90IGV4cG9ydGVkLgorCSAqLworCWZvcl9lYWNoX3NnKHJrX29iai0+c2d0LT5z Z2wsIHMsIHJrX29iai0+c2d0LT5uZW50cywgaSkKKwkJc2dfZG1hX2FkZHJlc3MocykgPSBzZ19w aHlzKHMpOworCisJZG1hX3N5bmNfc2dfZm9yX2RldmljZShkcm0tPmRldiwgcmtfb2JqLT5zZ3Qt PnNnbCwgcmtfb2JqLT5zZ3QtPm5lbnRzLAorCQkJICAgICAgIERNQV9UT19ERVZJQ0UpOworCisJ cmV0dXJuIDA7CisKK2Vycl9wdXRfcGFnZXM6CisJZHJtX2dlbV9wdXRfcGFnZXMoJnJrX29iai0+ YmFzZSwgcmtfb2JqLT5wYWdlcywgZmFsc2UsIGZhbHNlKTsKKwlyZXR1cm4gcmV0OworfQorCitz dGF0aWMgdm9pZCByb2NrY2hpcF9nZW1fcHV0X3BhZ2VzKHN0cnVjdCByb2NrY2hpcF9nZW1fb2Jq ZWN0ICpya19vYmopCit7CisJc2dfZnJlZV90YWJsZShya19vYmotPnNndCk7CisJa2ZyZWUocmtf b2JqLT5zZ3QpOworCWRybV9nZW1fcHV0X3BhZ2VzKCZya19vYmotPmJhc2UsIHJrX29iai0+cGFn ZXMsIGZhbHNlLCBmYWxzZSk7Cit9CisKK3N0YXRpYyBpbnQgcm9ja2NoaXBfZ2VtX2FsbG9jX2lv bW11KHN0cnVjdCByb2NrY2hpcF9nZW1fb2JqZWN0ICpya19vYmosCisJCQkJICAgIGJvb2wgYWxs b2Nfa21hcCkKK3sKKwlpbnQgcmV0OworCisJcmV0ID0gcm9ja2NoaXBfZ2VtX2dldF9wYWdlcyhy a19vYmopOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJcmV0ID0gcm9ja2NoaXBf Z2VtX2lvbW11X21hcChya19vYmopOworCWlmIChyZXQgPCAwKQorCQlnb3RvIGVycl9mcmVlOwor CisJaWYgKGFsbG9jX2ttYXApIHsKKwkJcmtfb2JqLT5rdmFkZHIgPSB2bWFwKHJrX29iai0+cGFn ZXMsIHJrX29iai0+bnVtX3BhZ2VzLCBWTV9NQVAsCisJCQkJICAgICAgcGdwcm90X3dyaXRlY29t YmluZShQQUdFX0tFUk5FTCkpOworCQlpZiAoIXJrX29iai0+a3ZhZGRyKSB7CisJCQlEUk1fRVJS T1IoImZhaWxlZCB0byB2bWFwKCkgYnVmZmVyXG4iKTsKKwkJCXJldCA9IC1FTk9NRU07CisJCQln b3RvIGVycl91bm1hcDsKKwkJfQorCX0KKworCXJldHVybiAwOworCitlcnJfdW5tYXA6CisJcm9j a2NoaXBfZ2VtX2lvbW11X3VubWFwKHJrX29iaik7CitlcnJfZnJlZToKKwlyb2NrY2hpcF9nZW1f cHV0X3BhZ2VzKHJrX29iaik7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IHJvY2tj aGlwX2dlbV9hbGxvY19kbWEoc3RydWN0IHJvY2tjaGlwX2dlbV9vYmplY3QgKnJrX29iaiwKIAkJ CQkgIGJvb2wgYWxsb2Nfa21hcCkKIHsKIAlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiA9ICZy a19vYmotPmJhc2U7CkBAIC00Miw3ICsxNjYsMjcgQEAgc3RhdGljIGludCByb2NrY2hpcF9nZW1f YWxsb2NfYnVmKHN0cnVjdCByb2NrY2hpcF9nZW1fb2JqZWN0ICpya19vYmosCiAJcmV0dXJuIDA7 CiB9CiAKLXN0YXRpYyB2b2lkIHJvY2tjaGlwX2dlbV9mcmVlX2J1ZihzdHJ1Y3Qgcm9ja2NoaXBf Z2VtX29iamVjdCAqcmtfb2JqKQorc3RhdGljIGludCByb2NrY2hpcF9nZW1fYWxsb2NfYnVmKHN0 cnVjdCByb2NrY2hpcF9nZW1fb2JqZWN0ICpya19vYmosCisJCQkJICBib29sIGFsbG9jX2ttYXAp Cit7CisJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmogPSAmcmtfb2JqLT5iYXNlOworCXN0cnVj dCBkcm1fZGV2aWNlICpkcm0gPSBvYmotPmRldjsKKwlzdHJ1Y3Qgcm9ja2NoaXBfZHJtX3ByaXZh dGUgKnByaXZhdGUgPSBkcm0tPmRldl9wcml2YXRlOworCisJaWYgKHByaXZhdGUtPmRvbWFpbikK KwkJcmV0dXJuIHJvY2tjaGlwX2dlbV9hbGxvY19pb21tdShya19vYmosIGFsbG9jX2ttYXApOwor CWVsc2UKKwkJcmV0dXJuIHJvY2tjaGlwX2dlbV9hbGxvY19kbWEocmtfb2JqLCBhbGxvY19rbWFw KTsKK30KKworc3RhdGljIHZvaWQgcm9ja2NoaXBfZ2VtX2ZyZWVfaW9tbXUoc3RydWN0IHJvY2tj aGlwX2dlbV9vYmplY3QgKnJrX29iaikKK3sKKwl2dW5tYXAocmtfb2JqLT5rdmFkZHIpOworCXJv Y2tjaGlwX2dlbV9pb21tdV91bm1hcChya19vYmopOworCXJvY2tjaGlwX2dlbV9wdXRfcGFnZXMo cmtfb2JqKTsKK30KKworc3RhdGljIHZvaWQgcm9ja2NoaXBfZ2VtX2ZyZWVfZG1hKHN0cnVjdCBy b2NrY2hpcF9nZW1fb2JqZWN0ICpya19vYmopCiB7CiAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpv YmogPSAmcmtfb2JqLT5iYXNlOwogCXN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBvYmotPmRldjsK QEAgLTUxLDIzICsxOTUsNjQgQEAgc3RhdGljIHZvaWQgcm9ja2NoaXBfZ2VtX2ZyZWVfYnVmKHN0 cnVjdCByb2NrY2hpcF9nZW1fb2JqZWN0ICpya19vYmopCiAJCSAgICAgICBya19vYmotPmRtYV9h dHRycyk7CiB9CiAKLXN0YXRpYyBpbnQgcm9ja2NoaXBfZHJtX2dlbV9vYmplY3RfbW1hcChzdHJ1 Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwKLQkJCQkJc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEp CitzdGF0aWMgdm9pZCByb2NrY2hpcF9nZW1fZnJlZV9idWYoc3RydWN0IHJvY2tjaGlwX2dlbV9v YmplY3QgKnJrX29iaikKK3sKKwlpZiAocmtfb2JqLT5wYWdlcykKKwkJcm9ja2NoaXBfZ2VtX2Zy ZWVfaW9tbXUocmtfb2JqKTsKKwllbHNlCisJCXJvY2tjaGlwX2dlbV9mcmVlX2RtYShya19vYmop OworfQogCitzdGF0aWMgaW50IHJvY2tjaGlwX2RybV9nZW1fb2JqZWN0X21tYXBfaW9tbXUoc3Ry dWN0IGRybV9nZW1fb2JqZWN0ICpvYmosCisJCQkJCSAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVj dCAqdm1hKQogeworCXN0cnVjdCByb2NrY2hpcF9nZW1fb2JqZWN0ICpya19vYmogPSB0b19yb2Nr Y2hpcF9vYmoob2JqKTsKKwl1bnNpZ25lZCBpbnQgaSwgY291bnQgPSBvYmotPnNpemUgPj4gUEFH RV9TSElGVDsKKwl1bnNpZ25lZCBsb25nIHVzZXJfY291bnQgPSAodm1hLT52bV9lbmQgLSB2bWEt PnZtX3N0YXJ0KSA+PiBQQUdFX1NISUZUOworCXVuc2lnbmVkIGxvbmcgdWFkZHIgPSB2bWEtPnZt X3N0YXJ0OwogCWludCByZXQ7CisKKwlpZiAodXNlcl9jb3VudCA9PSAwIHx8IHVzZXJfY291bnQg PiBjb3VudCkKKwkJcmV0dXJuIC1FTlhJTzsKKworCWZvciAoaSA9IDA7IGkgPCB1c2VyX2NvdW50 OyBpKyspIHsKKwkJcmV0ID0gdm1faW5zZXJ0X3BhZ2Uodm1hLCB1YWRkciwgcmtfb2JqLT5wYWdl c1tpXSk7CisJCWlmIChyZXQpCisJCQlyZXR1cm4gcmV0OworCQl1YWRkciArPSBQQUdFX1NJWkU7 CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgcm9ja2NoaXBfZHJtX2dlbV9vYmpl Y3RfbW1hcF9kbWEoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosCisJCQkJCSAgICBzdHJ1Y3Qg dm1fYXJlYV9zdHJ1Y3QgKnZtYSkKK3sKIAlzdHJ1Y3Qgcm9ja2NoaXBfZ2VtX29iamVjdCAqcmtf b2JqID0gdG9fcm9ja2NoaXBfb2JqKG9iaik7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRybSA9IG9i ai0+ZGV2OwogCisJcmV0dXJuIGRtYV9tbWFwX2F0dHJzKGRybS0+ZGV2LCB2bWEsIHJrX29iai0+ a3ZhZGRyLCBya19vYmotPmRtYV9hZGRyLAorCQkJICAgICAgb2JqLT5zaXplLCBya19vYmotPmRt YV9hdHRycyk7Cit9CisKK3N0YXRpYyBpbnQgcm9ja2NoaXBfZHJtX2dlbV9vYmplY3RfbW1hcChz dHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwKKwkJCQkJc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2 bWEpCit7CisJaW50IHJldDsKKwlzdHJ1Y3Qgcm9ja2NoaXBfZ2VtX29iamVjdCAqcmtfb2JqID0g dG9fcm9ja2NoaXBfb2JqKG9iaik7CisKIAkvKgotCSAqIGRtYV9hbGxvY19hdHRycygpIGFsbG9j YXRlZCBhIHN0cnVjdCBwYWdlIHRhYmxlIGZvciBya19vYmosIHNvIGNsZWFyCisJICogV2UgYWxs b2NhdGVkIGEgc3RydWN0IHBhZ2UgdGFibGUgZm9yIHJrX29iaiwgc28gY2xlYXIKIAkgKiBWTV9Q Rk5NQVAgZmxhZyB0aGF0IHdhcyBzZXQgYnkgZHJtX2dlbV9tbWFwX29iaigpL2RybV9nZW1fbW1h cCgpLgogCSAqLwogCXZtYS0+dm1fZmxhZ3MgJj0gflZNX1BGTk1BUDsKIAl2bWEtPnZtX3Bnb2Zm ID0gMDsKIAotCXJldCA9IGRtYV9tbWFwX2F0dHJzKGRybS0+ZGV2LCB2bWEsIHJrX29iai0+a3Zh ZGRyLCBya19vYmotPmRtYV9hZGRyLAotCQkJICAgICBvYmotPnNpemUsIHJrX29iai0+ZG1hX2F0 dHJzKTsKKwlpZiAocmtfb2JqLT5wYWdlcykKKwkJcmV0ID0gcm9ja2NoaXBfZHJtX2dlbV9vYmpl Y3RfbW1hcF9pb21tdShvYmosIHZtYSk7CisJZWxzZQorCQlyZXQgPSByb2NrY2hpcF9kcm1fZ2Vt X29iamVjdF9tbWFwX2RtYShvYmosIHZtYSk7CisKIAlpZiAocmV0KQogCQlkcm1fZ2VtX3ZtX2Ns b3NlKHZtYSk7CiAKQEAgLTExNyw3ICszMDIsNyBAQCBzdHJ1Y3Qgcm9ja2NoaXBfZ2VtX29iamVj dCAqCiAKIAlvYmogPSAmcmtfb2JqLT5iYXNlOwogCi0JZHJtX2dlbV9wcml2YXRlX29iamVjdF9p bml0KGRybSwgb2JqLCBzaXplKTsKKwlkcm1fZ2VtX29iamVjdF9pbml0KGRybSwgb2JqLCBzaXpl KTsKIAogCXJldCA9IHJvY2tjaGlwX2dlbV9hbGxvY19idWYocmtfb2JqLCBhbGxvY19rbWFwKTsK IAlpZiAocmV0KQpAQCAtMjUzLDYgKzQzOCw5IEBAIHN0cnVjdCBzZ190YWJsZSAqcm9ja2NoaXBf Z2VtX3ByaW1lX2dldF9zZ190YWJsZShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKIAlzdHJ1 Y3Qgc2dfdGFibGUgKnNndDsKIAlpbnQgcmV0OwogCisJaWYgKHJrX29iai0+cGFnZXMpCisJCXJl dHVybiBkcm1fcHJpbWVfcGFnZXNfdG9fc2cocmtfb2JqLT5wYWdlcywgcmtfb2JqLT5udW1fcGFn ZXMpOworCiAJc2d0ID0ga3phbGxvYyhzaXplb2YoKnNndCksIEdGUF9LRVJORUwpOwogCWlmICgh c2d0KQogCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKQEAgLTI3Myw2ICs0NjEsMTAgQEAgdm9p ZCAqcm9ja2NoaXBfZ2VtX3ByaW1lX3ZtYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCiB7 CiAJc3RydWN0IHJvY2tjaGlwX2dlbV9vYmplY3QgKnJrX29iaiA9IHRvX3JvY2tjaGlwX29iaihv YmopOwogCisJaWYgKHJrX29iai0+cGFnZXMpCisJCXJldHVybiB2bWFwKHJrX29iai0+cGFnZXMs IHJrX29iai0+bnVtX3BhZ2VzLCBWTV9NQVAsCisJCQkgICAgcGdwcm90X3dyaXRlY29tYmluZShQ QUdFX0tFUk5FTCkpOworCiAJaWYgKHJrX29iai0+ZG1hX2F0dHJzICYgRE1BX0FUVFJfTk9fS0VS TkVMX01BUFBJTkcpCiAJCXJldHVybiBOVUxMOwogCkBAIC0yODEsNSArNDczLDEyIEBAIHZvaWQg KnJvY2tjaGlwX2dlbV9wcmltZV92bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKQogCiB2 b2lkIHJvY2tjaGlwX2dlbV9wcmltZV92dW5tYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmos IHZvaWQgKnZhZGRyKQogewotCS8qIE5vdGhpbmcgdG8gZG8gKi8KKwlzdHJ1Y3Qgcm9ja2NoaXBf Z2VtX29iamVjdCAqcmtfb2JqID0gdG9fcm9ja2NoaXBfb2JqKG9iaik7CisKKwlpZiAocmtfb2Jq LT5wYWdlcykgeworCQl2dW5tYXAodmFkZHIpOworCQlyZXR1cm47CisJfQorCisJLyogTm90aGlu ZyB0byBkbyBpZiBhbGxvY2F0ZWQgYnkgRE1BIG1hcHBpbmcgQVBJLiAqLwogfQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV9nZW0uaCBiL2RyaXZlcnMv Z3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fZ2VtLmgKaW5kZXggMThiMzQ4OC4uM2Y2ZWE0 ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV9nZW0u aAorKysgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX2dlbS5oCkBAIC0y Myw3ICsyMywxNSBAQCBzdHJ1Y3Qgcm9ja2NoaXBfZ2VtX29iamVjdCB7CiAKIAl2b2lkICprdmFk ZHI7CiAJZG1hX2FkZHJfdCBkbWFfYWRkcjsKKwkvKiBVc2VkIHdoZW4gSU9NTVUgaXMgZGlzYWJs ZWQgKi8KIAl1bnNpZ25lZCBsb25nIGRtYV9hdHRyczsKKworCS8qIFVzZWQgd2hlbiBJT01NVSBp cyBlbmFibGVkICovCisJc3RydWN0IGRybV9tbV9ub2RlIG1tOworCXVuc2lnbmVkIGxvbmcgbnVt X3BhZ2VzOworCXN0cnVjdCBwYWdlICoqcGFnZXM7CisJc3RydWN0IHNnX3RhYmxlICpzZ3Q7CisJ c2l6ZV90IHNpemU7CiB9OwogCiBzdHJ1Y3Qgc2dfdGFibGUgKnJvY2tjaGlwX2dlbV9wcmltZV9n ZXRfc2dfdGFibGUoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopOwotLSAKMS45LjEKCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFp bGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK