From mboxrd@z Thu Jan 1 00:00:00 1970 From: "=?UTF-8?q?Christian=20K=C3=B6nig?=" Subject: [PATCH 10/12] drm/amdgpu: add independent DMA-buf export v3 Date: Fri, 26 Apr 2019 14:36:36 +0200 Message-ID: <20190426123638.40221-10-christian.koenig@amd.com> References: <20190426123638.40221-1-christian.koenig@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wr1-x441.google.com (mail-wr1-x441.google.com [IPv6:2a00:1450:4864:20::441]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0C1BF89274 for ; Fri, 26 Apr 2019 12:36:50 +0000 (UTC) Received: by mail-wr1-x441.google.com with SMTP id c12so4218223wrt.8 for ; Fri, 26 Apr 2019 05:36:49 -0700 (PDT) Received: from abel.fritz.box ([2a02:908:1252:fb60:5545:e552:48cc:b52f]) by smtp.gmail.com with ESMTPSA id y125sm37196159wmc.39.2019.04.26.05.36.47 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 26 Apr 2019 05:36:47 -0700 (PDT) In-Reply-To: <20190426123638.40221-1-christian.koenig@amd.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 List-Id: dri-devel@lists.freedesktop.org VGhlIGNhY2hpbmcgb2YgU0dUJ3MgaXMgYWN0dWFsbHkgcXVpdGUgaGFybWZ1bCBhbmQgc2hvdWxk IHByb2JhYmx5IHJlbW92ZWQKYWx0b2dldGhlciB3aGVuIGFsbCBkcml2ZXJzIGFyZSBhdWRpdGVk LgoKU3RhcnQgYnkgcHJvdmlkaW5nIGEgc2VwYXJhdGUgRE1BLWJ1ZiBleHBvcnQgaW1wbGVtZW50 YXRpb24gaW4gYW1kZ3B1LiBUaGlzIGlzCmFsc28gYSBwcmVyZXF1aXNpdGUgb2YgdW5waW5uZWQg RE1BLWJ1ZiBoYW5kbGluZy4KCnYyOiBmaXggdW5pbnRlbmRlZCByZWN1cnNpb24sIHJlbW92ZSBk ZWJ1Z2dpbmcgbGVmdG92ZXJzCnYzOiBzcGxpdCBvdXQgZnJvbSB1bnBpbm5lZCBETUEtYnVmIHdv cmsKdjQ6IHJlYmFzZSBvbiB0b3Agb2YgbmV3IG5vX3NndF9jYWNoZSBmbGFnCgpTaWduZWQtb2Zm LWJ5OiBDaHJpc3RpYW4gS8O2bmlnIDxjaHJpc3RpYW4ua29lbmlnQGFtZC5jb20+Ci0tLQogZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5jICAgIHwgICAxIC0KIGRyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uaCAgICB8ICAgMSAtCiBkcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmMgfCAgIDUgKwogZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X3ByaW1lLmMgIHwgMTYyICsrKysrKysrKysrKystLS0tLS0tLQogNCBm aWxlcyBjaGFuZ2VkLCAxMDkgaW5zZXJ0aW9ucygrKSwgNjAgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5jIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5jCmluZGV4IDEzYTY4ZjYyYmNjOC4uZjE4MTUy MjNhMWExIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZHJ2 LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5jCkBAIC0xMjU0 LDcgKzEyNTQsNiBAQCBzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIga21zX2RyaXZlciA9IHsKIAku Z2VtX3ByaW1lX2V4cG9ydCA9IGFtZGdwdV9nZW1fcHJpbWVfZXhwb3J0LAogCS5nZW1fcHJpbWVf aW1wb3J0ID0gYW1kZ3B1X2dlbV9wcmltZV9pbXBvcnQsCiAJLmdlbV9wcmltZV9yZXNfb2JqID0g YW1kZ3B1X2dlbV9wcmltZV9yZXNfb2JqLAotCS5nZW1fcHJpbWVfZ2V0X3NnX3RhYmxlID0gYW1k Z3B1X2dlbV9wcmltZV9nZXRfc2dfdGFibGUsCiAJLmdlbV9wcmltZV9pbXBvcnRfc2dfdGFibGUg PSBhbWRncHVfZ2VtX3ByaW1lX2ltcG9ydF9zZ190YWJsZSwKIAkuZ2VtX3ByaW1lX3ZtYXAgPSBh bWRncHVfZ2VtX3ByaW1lX3ZtYXAsCiAJLmdlbV9wcmltZV92dW5tYXAgPSBhbWRncHVfZ2VtX3By aW1lX3Z1bm1hcCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV9nZW0uaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uaAppbmRleCBm MWRkZmM1MGJjYzcuLjBjNTBkMTRhOTczOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X2dlbS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV9nZW0uaApAQCAtMzksNyArMzksNiBAQCBpbnQgYW1kZ3B1X2dlbV9vYmplY3Rfb3Blbihz dHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwKIHZvaWQgYW1kZ3B1X2dlbV9vYmplY3RfY2xvc2Uo c3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosCiAJCQkJc3RydWN0IGRybV9maWxlICpmaWxlX3By aXYpOwogdW5zaWduZWQgbG9uZyBhbWRncHVfZ2VtX3RpbWVvdXQodWludDY0X3QgdGltZW91dF9u cyk7Ci1zdHJ1Y3Qgc2dfdGFibGUgKmFtZGdwdV9nZW1fcHJpbWVfZ2V0X3NnX3RhYmxlKHN0cnVj dCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqCiBhbWRncHVf Z2VtX3ByaW1lX2ltcG9ydF9zZ190YWJsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCSBz dHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2gsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfb2JqZWN0LmMKaW5kZXggOTNiMmM1YTQ4YTcxLi5kMjZlMmYwYjg4ZDIgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmMKQEAgLTMxLDYgKzMx LDcgQEAKICAqLwogI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KICNpbmNsdWRlIDxsaW51eC9zbGFi Lmg+CisjaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi5oPgogI2luY2x1ZGUgPGRybS9kcm1QLmg+CiAj aW5jbHVkZSA8ZHJtL2FtZGdwdV9kcm0uaD4KICNpbmNsdWRlIDxkcm0vZHJtX2NhY2hlLmg+CkBA IC0xMTk0LDYgKzExOTUsMTAgQEAgdm9pZCBhbWRncHVfYm9fbW92ZV9ub3RpZnkoc3RydWN0IHR0 bV9idWZmZXJfb2JqZWN0ICpibywKIAogCWFtZGdwdV9ib19rdW5tYXAoYWJvKTsKIAorCWlmIChh Ym8tPmdlbV9iYXNlLmRtYV9idWYgJiYgIWFiby0+Z2VtX2Jhc2UuaW1wb3J0X2F0dGFjaCAmJgor CSAgICBiby0+bWVtLm1lbV90eXBlICE9IFRUTV9QTF9TWVNURU0pCisJCWRtYV9idWZfaW52YWxp ZGF0ZV9tYXBwaW5ncyhhYm8tPmdlbV9iYXNlLmRtYV9idWYpOworCiAJLyogcmVtZW1iZXIgdGhl IGV2aWN0aW9uICovCiAJaWYgKGV2aWN0KQogCQlhdG9taWM2NF9pbmMoJmFkZXYtPm51bV9ldmlj dGlvbnMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3By aW1lLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcHJpbWUuYwppbmRleCBh MzhlMGZiNGE2ZmUuLmNkYzNjMWU2M2E2OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X3ByaW1lLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X3ByaW1lLmMKQEAgLTQwLDIyICs0MCw2IEBACiAjaW5jbHVkZSA8bGludXgvZG1hLWJ1 Zi5oPgogI2luY2x1ZGUgPGxpbnV4L2RtYS1mZW5jZS1hcnJheS5oPgogCi0vKioKLSAqIGFtZGdw dV9nZW1fcHJpbWVfZ2V0X3NnX3RhYmxlIC0gJmRybV9kcml2ZXIuZ2VtX3ByaW1lX2dldF9zZ190 YWJsZQotICogaW1wbGVtZW50YXRpb24KLSAqIEBvYmo6IEdFTSBidWZmZXIgb2JqZWN0IChCTykK LSAqCi0gKiBSZXR1cm5zOgotICogQSBzY2F0dGVyL2dhdGhlciB0YWJsZSBmb3IgdGhlIHBpbm5l ZCBwYWdlcyBvZiB0aGUgQk8ncyBtZW1vcnkuCi0gKi8KLXN0cnVjdCBzZ190YWJsZSAqYW1kZ3B1 X2dlbV9wcmltZV9nZXRfc2dfdGFibGUoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCi17Ci0J c3RydWN0IGFtZGdwdV9ibyAqYm8gPSBnZW1fdG9fYW1kZ3B1X2JvKG9iaik7Ci0JaW50IG5wYWdl cyA9IGJvLT50Ym8ubnVtX3BhZ2VzOwotCi0JcmV0dXJuIGRybV9wcmltZV9wYWdlc190b19zZyhi by0+dGJvLnR0bS0+cGFnZXMsIG5wYWdlcyk7Ci19Ci0KIC8qKgogICogYW1kZ3B1X2dlbV9wcmlt ZV92bWFwIC0gJmRtYV9idWZfb3BzLnZtYXAgaW1wbGVtZW50YXRpb24KICAqIEBvYmo6IEdFTSBC TwpAQCAtMjMxLDM0ICsyMTUsODQgQEAgX19yZXNlcnZhdGlvbl9vYmplY3RfbWFrZV9leGNsdXNp dmUoc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAqb2JqKQogfQogCiAvKioKLSAqIGFtZGdwdV9n ZW1fbWFwX2F0dGFjaCAtICZkbWFfYnVmX29wcy5hdHRhY2ggaW1wbGVtZW50YXRpb24KLSAqIEBk bWFfYnVmOiBTaGFyZWQgRE1BIGJ1ZmZlcgorICogYW1kZ3B1X2dlbV9waW5fZG1hX2J1ZiAtICZk bWFfYnVmX29wcy5waW5fZG1hX2J1ZiBpbXBsZW1lbnRhdGlvbgorICoKKyAqIEBkbWFfYnVmOiBE TUEtYnVmIHRvIHBpbiBpbiBtZW1vcnkKKyAqCisgKiBQaW4gdGhlIEJPIHdoaWNoIGlzIGJhY2tp bmcgdGhlIERNQS1idWYgc28gdGhhdCBpdCBjYW4ndCBtb3ZlIGFueSBtb3JlLgorICovCitzdGF0 aWMgaW50IGFtZGdwdV9nZW1fcGluX2RtYV9idWYoc3RydWN0IGRtYV9idWYgKmRtYV9idWYpCit7 CisJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmogPSBkbWFfYnVmLT5wcml2OworCXN0cnVjdCBh bWRncHVfYm8gKmJvID0gZ2VtX3RvX2FtZGdwdV9ibyhvYmopOworCisJLyogcGluIGJ1ZmZlciBp bnRvIEdUVCAqLworCXJldHVybiBhbWRncHVfYm9fcGluKGJvLCBBTURHUFVfR0VNX0RPTUFJTl9H VFQpOworfQorCisvKioKKyAqIGFtZGdwdV9nZW1fdW5waW5fZG1hX2J1ZiAtICZkbWFfYnVmX29w cy51bnBpbl9kbWFfYnVmIGltcGxlbWVudGF0aW9uCisgKgorICogQGRtYV9idWY6IERNQS1idWYg dG8gdW5waW4KKyAqCisgKiBVbnBpbiBhIHByZXZpb3VzbHkgcGlubmVkIEJPIHRvIG1ha2UgaXQg bW92YWJsZSBhZ2Fpbi4KKyAqLworc3RhdGljIHZvaWQgYW1kZ3B1X2dlbV91bnBpbl9kbWFfYnVm KHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmKQoreworCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2Jq ID0gZG1hX2J1Zi0+cHJpdjsKKwlzdHJ1Y3QgYW1kZ3B1X2JvICpibyA9IGdlbV90b19hbWRncHVf Ym8ob2JqKTsKKworCWFtZGdwdV9ib191bnBpbihibyk7Cit9CisKKy8qKgorICogYW1kZ3B1X2dl bV9kbWFfYnVmX2F0dGFjaCAtICZkbWFfYnVmX29wcy5hdHRhY2ggaW1wbGVtZW50YXRpb24KKyAq CisgKiBAZG1hX2J1ZjogRE1BLWJ1ZiB3ZSBhdHRhY2ggdG8KICAqIEBhdHRhY2g6IERNQS1idWYg YXR0YWNobWVudAogICoKKyAqIFJldHVybnM6CisgKiBBbHdheXMgemVybyBmb3Igc3VjY2Vzcy4K KyAqLworc3RhdGljIGludCBhbWRncHVfZ2VtX2RtYV9idWZfYXR0YWNoKHN0cnVjdCBkbWFfYnVm ICpkbWFfYnVmLAorCQkJCSAgICAgc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoKQor eworCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqID0gZG1hX2J1Zi0+cHJpdjsKKwlzdHJ1Y3Qg YW1kZ3B1X2JvICpibyA9IGdlbV90b19hbWRncHVfYm8ob2JqKTsKKworCS8qIE1ha2Ugc3VyZSB0 aGUgYnVmZmVyIGlzIHBpbm5lZCB3aGVuIHVzZXJzcGFjZSBkaWRuJ3Qgc2V0IEdUVCBhcworCSAq IHByZWZlcnJlZCBkb21haW4uIFRoaXMgYXZvaWQgcGluZy9wb25nIHNpdHVhdGlvbnMgd2l0aCBz Y2FuIG91dCBCT3MuCisJICovCisJaWYgKCEoYm8tPnByZWZlcnJlZF9kb21haW5zICYgQU1ER1BV X0dFTV9ET01BSU5fR1RUKSkKKwkJYXR0YWNoLT5pbnZhbGlkYXRlID0gTlVMTDsKKworCXJldHVy biAwOworfQorCisvKioKKyAqIGFtZGdwdV9nZW1fbWFwX2RtYV9idWYgLSAmZG1hX2J1Zl9vcHMu bWFwX2RtYV9idWYgaW1wbGVtZW50YXRpb24KKyAqIEBhdHRhY2g6IERNQS1idWYgYXR0YWNobWVu dAorICogQGRpcjogRE1BIGRpcmVjdGlvbgorICoKICAqIE1ha2VzIHN1cmUgdGhhdCB0aGUgc2hh cmVkIERNQSBidWZmZXIgY2FuIGJlIGFjY2Vzc2VkIGJ5IHRoZSB0YXJnZXQgZGV2aWNlLgogICog Rm9yIG5vdywgc2ltcGx5IHBpbnMgaXQgdG8gdGhlIEdUVCBkb21haW4sIHdoZXJlIGl0IHNob3Vs ZCBiZSBhY2Nlc3NpYmxlIGJ5CiAgKiBhbGwgRE1BIGRldmljZXMuCiAgKgogICogUmV0dXJuczoK LSAqIDAgb24gc3VjY2VzcyBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KKyAq IHNnX3RhYmxlIGZpbGxlZCB3aXRoIHRoZSBETUEgYWRkcmVzc2VzIHRvIHVzZSBvciBFUlJfUFJU IHdpdGggbmVnYXRpdmUgZXJyb3IKKyAqIGNvZGUuCiAgKi8KLXN0YXRpYyBpbnQgYW1kZ3B1X2dl bV9tYXBfYXR0YWNoKHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmLAotCQkJCSBzdHJ1Y3QgZG1hX2J1 Zl9hdHRhY2htZW50ICphdHRhY2gpCitzdGF0aWMgc3RydWN0IHNnX3RhYmxlICoKK2FtZGdwdV9n ZW1fbWFwX2RtYV9idWYoc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoLAorCQkgICAg ICAgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyKQogeworCXN0cnVjdCBkbWFfYnVmICpkbWFf YnVmID0gYXR0YWNoLT5kbWFidWY7CiAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmogPSBkbWFf YnVmLT5wcml2OwogCXN0cnVjdCBhbWRncHVfYm8gKmJvID0gZ2VtX3RvX2FtZGdwdV9ibyhvYmop OwogCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gYW1kZ3B1X3R0bV9hZGV2KGJvLT50Ym8u YmRldik7CisJc3RydWN0IHNnX3RhYmxlICpzZ3Q7CiAJbG9uZyByOwogCi0JciA9IGRybV9nZW1f bWFwX2F0dGFjaChkbWFfYnVmLCBhdHRhY2gpOwotCWlmIChyKQotCQlyZXR1cm4gcjsKLQotCXIg PSBhbWRncHVfYm9fcmVzZXJ2ZShibywgZmFsc2UpOwotCWlmICh1bmxpa2VseShyICE9IDApKQot CQlnb3RvIGVycm9yX2RldGFjaDsKLQotCiAJaWYgKGF0dGFjaC0+ZGV2LT5kcml2ZXIgIT0gYWRl di0+ZGV2LT5kcml2ZXIpIHsKIAkJLyoKIAkJICogV2Ugb25seSBjcmVhdGUgc2hhcmVkIGZlbmNl cyBmb3IgaW50ZXJuYWwgdXNlLCBidXQgaW1wb3J0ZXJzCkBAIC0yNzAsNTMgKzMwNCw2NCBAQCBz dGF0aWMgaW50IGFtZGdwdV9nZW1fbWFwX2F0dGFjaChzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZiwK IAkJICovCiAJCXIgPSBfX3Jlc2VydmF0aW9uX29iamVjdF9tYWtlX2V4Y2x1c2l2ZShiby0+dGJv LnJlc3YpOwogCQlpZiAocikKLQkJCWdvdG8gZXJyb3JfdW5yZXNlcnZlOworCQkJcmV0dXJuIEVS Ul9QVFIocik7CiAJfQogCi0JLyogcGluIGJ1ZmZlciBpbnRvIEdUVCAqLwotCXIgPSBhbWRncHVf Ym9fcGluKGJvLCBBTURHUFVfR0VNX0RPTUFJTl9HVFQpOwotCWlmIChyKQotCQlnb3RvIGVycm9y X3VucmVzZXJ2ZTsKKwlpZiAoYXR0YWNoLT5pbnZhbGlkYXRlKSB7CisJCS8qIG1vdmUgYnVmZmVy IGludG8gR1RUICovCisJCXN0cnVjdCB0dG1fb3BlcmF0aW9uX2N0eCBjdHggPSB7IGZhbHNlLCBm YWxzZSB9OworCisJCWFtZGdwdV9ib19wbGFjZW1lbnRfZnJvbV9kb21haW4oYm8sIEFNREdQVV9H RU1fRE9NQUlOX0dUVCk7CisJCXIgPSB0dG1fYm9fdmFsaWRhdGUoJmJvLT50Ym8sICZiby0+cGxh Y2VtZW50LCAmY3R4KTsKKwkJaWYgKHIpCisJCQlyZXR1cm4gRVJSX1BUUihyKTsKKwl9CisKKwlz Z3QgPSBkcm1fcHJpbWVfcGFnZXNfdG9fc2coYm8tPnRiby50dG0tPnBhZ2VzLCBiby0+dGJvLm51 bV9wYWdlcyk7CisJaWYgKElTX0VSUihzZ3QpKQorCQlyZXR1cm4gc2d0OworCisJaWYgKCFkbWFf bWFwX3NnX2F0dHJzKGF0dGFjaC0+ZGV2LCBzZ3QtPnNnbCwgc2d0LT5uZW50cywgZGlyLAorCQkJ ICAgICAgRE1BX0FUVFJfU0tJUF9DUFVfU1lOQykpCisJCWdvdG8gZXJyb3JfZnJlZTsKIAogCWlm IChhdHRhY2gtPmRldi0+ZHJpdmVyICE9IGFkZXYtPmRldi0+ZHJpdmVyKQogCQliby0+cHJpbWVf c2hhcmVkX2NvdW50Kys7CiAKLWVycm9yX3VucmVzZXJ2ZToKLQlhbWRncHVfYm9fdW5yZXNlcnZl KGJvKTsKKwlyZXR1cm4gc2d0OwogCi1lcnJvcl9kZXRhY2g6Ci0JaWYgKHIpCi0JCWRybV9nZW1f bWFwX2RldGFjaChkbWFfYnVmLCBhdHRhY2gpOwotCXJldHVybiByOworZXJyb3JfZnJlZToKKwlz Z19mcmVlX3RhYmxlKHNndCk7CisJa2ZyZWUoc2d0KTsKKwlyZXR1cm4gRVJSX1BUUigtRU5PTUVN KTsKIH0KIAogLyoqCi0gKiBhbWRncHVfZ2VtX21hcF9kZXRhY2ggLSAmZG1hX2J1Zl9vcHMuZGV0 YWNoIGltcGxlbWVudGF0aW9uCi0gKiBAZG1hX2J1ZjogU2hhcmVkIERNQSBidWZmZXIKKyAqIGFt ZGdwdV9nZW1fdW5tYXBfZG1hX2J1ZiAtICZkbWFfYnVmX29wcy51bm1hcF9kbWFfYnVmIGltcGxl bWVudGF0aW9uCiAgKiBAYXR0YWNoOiBETUEtYnVmIGF0dGFjaG1lbnQKKyAqIEBzZ3Q6IHNnX3Rh YmxlIHRvIHVubWFwCisgKiBAZGlyOiBETUEgZGlyZWN0aW9uCiAgKgogICogVGhpcyBpcyBjYWxs ZWQgd2hlbiBhIHNoYXJlZCBETUEgYnVmZmVyIG5vIGxvbmdlciBuZWVkcyB0byBiZSBhY2Nlc3Np YmxlIGJ5CiAgKiBhbm90aGVyIGRldmljZS4gRm9yIG5vdywgc2ltcGx5IHVucGlucyB0aGUgYnVm ZmVyIGZyb20gR1RULgogICovCi1zdGF0aWMgdm9pZCBhbWRncHVfZ2VtX21hcF9kZXRhY2goc3Ry dWN0IGRtYV9idWYgKmRtYV9idWYsCi0JCQkJICBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICph dHRhY2gpCitzdGF0aWMgdm9pZCBhbWRncHVfZ2VtX3VubWFwX2RtYV9idWYoc3RydWN0IGRtYV9i dWZfYXR0YWNobWVudCAqYXR0YWNoLAorCQkJCSAgICAgc3RydWN0IHNnX3RhYmxlICpzZ3QsCisJ CQkJICAgICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIpCiB7CisJc3RydWN0IGRtYV9idWYg KmRtYV9idWYgPSBhdHRhY2gtPmRtYWJ1ZjsKIAlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiA9 IGRtYV9idWYtPnByaXY7CiAJc3RydWN0IGFtZGdwdV9ibyAqYm8gPSBnZW1fdG9fYW1kZ3B1X2Jv KG9iaik7CiAJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBhbWRncHVfdHRtX2FkZXYoYm8t PnRiby5iZGV2KTsKLQlpbnQgcmV0ID0gMDsKLQotCXJldCA9IGFtZGdwdV9ib19yZXNlcnZlKGJv LCB0cnVlKTsKLQlpZiAodW5saWtlbHkocmV0ICE9IDApKQotCQlnb3RvIGVycm9yOwogCi0JYW1k Z3B1X2JvX3VucGluKGJvKTsKIAlpZiAoYXR0YWNoLT5kZXYtPmRyaXZlciAhPSBhZGV2LT5kZXYt PmRyaXZlciAmJiBiby0+cHJpbWVfc2hhcmVkX2NvdW50KQogCQliby0+cHJpbWVfc2hhcmVkX2Nv dW50LS07Ci0JYW1kZ3B1X2JvX3VucmVzZXJ2ZShibyk7CiAKLWVycm9yOgotCWRybV9nZW1fbWFw X2RldGFjaChkbWFfYnVmLCBhdHRhY2gpOworCWlmIChzZ3QpIHsKKwkJZG1hX3VubWFwX3NnKGF0 dGFjaC0+ZGV2LCBzZ3QtPnNnbCwgc2d0LT5uZW50cywgZGlyKTsKKwkJc2dfZnJlZV90YWJsZShz Z3QpOworCQlrZnJlZShzZ3QpOworCX0KIH0KIAogLyoqCkBAIC0zNzQsMTAgKzQxOSwxMSBAQCBz dGF0aWMgaW50IGFtZGdwdV9nZW1fYmVnaW5fY3B1X2FjY2VzcyhzdHJ1Y3QgZG1hX2J1ZiAqZG1h X2J1ZiwKIH0KIAogY29uc3Qgc3RydWN0IGRtYV9idWZfb3BzIGFtZGdwdV9kbWFidWZfb3BzID0g ewotCS5hdHRhY2ggPSBhbWRncHVfZ2VtX21hcF9hdHRhY2gsCi0JLmRldGFjaCA9IGFtZGdwdV9n ZW1fbWFwX2RldGFjaCwKLQkubWFwX2RtYV9idWYgPSBkcm1fZ2VtX21hcF9kbWFfYnVmLAotCS51 bm1hcF9kbWFfYnVmID0gZHJtX2dlbV91bm1hcF9kbWFfYnVmLAorCS5waW4gPSBhbWRncHVfZ2Vt X3Bpbl9kbWFfYnVmLAorCS51bnBpbiA9IGFtZGdwdV9nZW1fdW5waW5fZG1hX2J1ZiwKKwkuYXR0 YWNoID0gYW1kZ3B1X2dlbV9kbWFfYnVmX2F0dGFjaCwKKwkubWFwX2RtYV9idWYgPSBhbWRncHVf Z2VtX21hcF9kbWFfYnVmLAorCS51bm1hcF9kbWFfYnVmID0gYW1kZ3B1X2dlbV91bm1hcF9kbWFf YnVmLAogCS5yZWxlYXNlID0gZHJtX2dlbV9kbWFidWZfcmVsZWFzZSwKIAkuYmVnaW5fY3B1X2Fj Y2VzcyA9IGFtZGdwdV9nZW1fYmVnaW5fY3B1X2FjY2VzcywKIAkubW1hcCA9IGRybV9nZW1fZG1h YnVmX21tYXAsCi0tIAoyLjE3LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2RyaS1kZXZlbA==