From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Anholt Subject: [PATCH v2 5/5] drm/vc4: Expose dma-buf fences for V3D rendering. Date: Wed, 12 Apr 2017 12:12:02 -0700 Message-ID: <20170412191202.22740-6-eric@anholt.net> References: <20170412191202.22740-1-eric@anholt.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from anholt.net (anholt.net [50.246.234.109]) by gabe.freedesktop.org (Postfix) with ESMTP id 0D33F6E79C for ; Wed, 12 Apr 2017 19:12:12 +0000 (UTC) In-Reply-To: <20170412191202.22740-1-eric@anholt.net> 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: linux-kernel@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org VGhpcyBpcyBuZWVkZWQgZm9yIHByb3BlciBzeW5jaHJvbml6YXRpb24gd2l0aCBkaXNwbGF5IG9u IGFub3RoZXIgRFJNCmRldmljZSAocGwxMTEgb3IgdGlueWRybSkgd2l0aCBidWZmZXJzIHByb2R1 Y2VkIGJ5IHZjNCBWM0QuICBGaXhlcyB0aGUKbmV3IGlndCB2YzRfZG1hYnVmX3BvbGwgdGVzdGNh c2UsIGFuZCByZW5kZXJpbmcgb2Ygb25lIG9mIHRoZSBnbG1hcmsyCmRlc2t0b3AgdGVzdHMgb24g cGwxMTErdmM0LgoKVGhpcyBkb2Vzbid0IHlldCBpbnRyb2R1Y2Ugd2FpdHMgb24gb3RoZXIgZGV2 aWNlJ3MgZmVuY2VzIGJlZm9yZSB2YzQncwpyZW5kZXJpbmcvZGlzcGxheSwgYmVjYXVzZSBJIGRv bid0IGhhdmUgdGVzdGNhc2VzIGZvciB0aGVtLgoKdjI6IFJldXNlIGRtYV9mZW5jZV9mcmVlKCks IHJldGl0bGUgY29tbWl0IG1lc3NhZ2UgdG8gY2xhcmlmeSB0aGF0CiAgICBpdCdzIG5vdCBhIGZ1 bGwgZG1hLWJ1ZiBmZW5jaW5nIGltcGxlbWVudGF0aW9uIHlldC4KClNpZ25lZC1vZmYtYnk6IEVy aWMgQW5ob2x0IDxlcmljQGFuaG9sdC5uZXQ+Ci0tLQogZHJpdmVycy9ncHUvZHJtL3ZjNC9NYWtl ZmlsZSAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9iby5jICAgIHwgIDM3ICsr KysrKysrKystCiBkcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9kcnYuYyAgIHwgICAzICstCiBkcml2 ZXJzL2dwdS9kcm0vdmM0L3ZjNF9kcnYuaCAgIHwgIDMwICsrKysrKysrKwogZHJpdmVycy9ncHUv ZHJtL3ZjNC92YzRfZmVuY2UuYyB8ICA1NiArKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUv ZHJtL3ZjNC92YzRfZ2VtLmMgICB8IDEzNiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKystCiBkcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9pcnEuYyAgIHwgICA0ICsrCiA3IGZp bGVzIGNoYW5nZWQsIDI2MiBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2ZlbmNlLmMKCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vdmM0L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC9NYWtlZmls ZQppbmRleCA2MWY0NWQxMjJiZDAuLmFiNjg3ZmJhNDkxNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL3ZjNC9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vdmM0L01ha2VmaWxlCkBA IC05LDYgKzksNyBAQCB2YzQteSA6PSBcCiAJdmM0X2Rydi5vIFwKIAl2YzRfZHBpLm8gXAogCXZj NF9kc2kubyBcCisJdmM0X2ZlbmNlLm8gXAogCXZjNF9rbXMubyBcCiAJdmM0X2dlbS5vIFwKIAl2 YzRfaGRtaS5vIFwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2JvLmMgYi9k cml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9iby5jCmluZGV4IGFmMjk0MzJhNjQ3MS4uODBiMmY5ZTU1 YzVjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9iby5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS92YzQvdmM0X2JvLmMKQEAgLTE5LDYgKzE5LDggQEAKICAqIHJlbmRlcmluZyBj YW4gcmV0dXJuIHF1aWNrbHkuCiAgKi8KIAorI2luY2x1ZGUgPGxpbnV4L2RtYS1idWYuaD4KKwog I2luY2x1ZGUgInZjNF9kcnYuaCIKICNpbmNsdWRlICJ1YXBpL2RybS92YzRfZHJtLmgiCiAKQEAg LTg4LDYgKzkwLDEwIEBAIHN0YXRpYyB2b2lkIHZjNF9ib19kZXN0cm95KHN0cnVjdCB2YzRfYm8g KmJvKQogCiAJdmM0LT5ib19zdGF0cy5udW1fYWxsb2NhdGVkLS07CiAJdmM0LT5ib19zdGF0cy5z aXplX2FsbG9jYXRlZCAtPSBvYmotPnNpemU7CisKKwlpZiAoYm8tPnJlc3YgPT0gJmJvLT5fcmVz dikKKwkJcmVzZXJ2YXRpb25fb2JqZWN0X2ZpbmkoYm8tPnJlc3YpOworCiAJZHJtX2dlbV9jbWFf ZnJlZV9vYmplY3Qob2JqKTsKIH0KIApAQCAtMjQ0LDggKzI1MCwxMiBAQCBzdHJ1Y3QgdmM0X2Jv ICp2YzRfYm9fY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHNpemVfdCB1bmFsaWduZWRf c2l6ZSwKIAkJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwogCQl9CiAJfQorCWJvID0gdG9fdmM0 X2JvKCZjbWFfb2JqLT5iYXNlKTsKIAotCXJldHVybiB0b192YzRfYm8oJmNtYV9vYmotPmJhc2Up OworCWJvLT5yZXN2ID0gJmJvLT5fcmVzdjsKKwlyZXNlcnZhdGlvbl9vYmplY3RfaW5pdChiby0+ cmVzdik7CisKKwlyZXR1cm4gYm87CiB9CiAKIGludCB2YzRfZHVtYl9jcmVhdGUoc3RydWN0IGRy bV9maWxlICpmaWxlX3ByaXYsCkBAIC0zNjksNiArMzc5LDEzIEBAIHN0YXRpYyB2b2lkIHZjNF9i b19jYWNoZV90aW1lX3RpbWVyKHVuc2lnbmVkIGxvbmcgZGF0YSkKIAlzY2hlZHVsZV93b3JrKCZ2 YzQtPmJvX2NhY2hlLnRpbWVfd29yayk7CiB9CiAKK3N0cnVjdCByZXNlcnZhdGlvbl9vYmplY3Qg KnZjNF9wcmltZV9yZXNfb2JqKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKQoreworCXN0cnVj dCB2YzRfYm8gKmJvID0gdG9fdmM0X2JvKG9iaik7CisKKwlyZXR1cm4gYm8tPnJlc3Y7Cit9CisK IHN0cnVjdCBkbWFfYnVmICoKIHZjNF9wcmltZV9leHBvcnQoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIGludCBmbGFncykKIHsKQEAgLTQ0MCw2ICs0 NTcsMjQgQEAgdm9pZCAqdmM0X3ByaW1lX3ZtYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmop CiAJcmV0dXJuIGRybV9nZW1fY21hX3ByaW1lX3ZtYXAob2JqKTsKIH0KIAorc3RydWN0IGRybV9n ZW1fb2JqZWN0ICoKK3ZjNF9wcmltZV9pbXBvcnRfc2dfdGFibGUoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKKwkJCSAgc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoLAorCQkJICBzdHJ1 Y3Qgc2dfdGFibGUgKnNndCkKK3sKKwlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iajsKKwlzdHJ1 Y3QgdmM0X2JvICpibzsKKworCW9iaiA9IGRybV9nZW1fY21hX3ByaW1lX2ltcG9ydF9zZ190YWJs ZShkZXYsIGF0dGFjaCwgc2d0KTsKKwlpZiAoSVNfRVJSKG9iaikpCisJCXJldHVybiBvYmo7CisK KwlibyA9IHRvX3ZjNF9ibyhvYmopOworCWJvLT5yZXN2ID0gYXR0YWNoLT5kbWFidWYtPnJlc3Y7 CisKKwlyZXR1cm4gb2JqOworfQorCiBpbnQgdmM0X2NyZWF0ZV9ib19pb2N0bChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkJc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYp CiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9kcnYuYyBiL2RyaXZlcnMv Z3B1L2RybS92YzQvdmM0X2Rydi5jCmluZGV4IDYxZTY3NGJhZjNhNi4uOTJmYjlhNDFmZTdjIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9kcnYuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vdmM0L3ZjNF9kcnYuYwpAQCAtMTY4LDggKzE2OCw5IEBAIHN0YXRpYyBzdHJ1Y3QgZHJt X2RyaXZlciB2YzRfZHJtX2RyaXZlciA9IHsKIAkucHJpbWVfZmRfdG9faGFuZGxlID0gZHJtX2dl bV9wcmltZV9mZF90b19oYW5kbGUsCiAJLmdlbV9wcmltZV9pbXBvcnQgPSBkcm1fZ2VtX3ByaW1l X2ltcG9ydCwKIAkuZ2VtX3ByaW1lX2V4cG9ydCA9IHZjNF9wcmltZV9leHBvcnQsCisJLmdlbV9w cmltZV9yZXNfb2JqID0gdmM0X3ByaW1lX3Jlc19vYmosCiAJLmdlbV9wcmltZV9nZXRfc2dfdGFi bGUJPSBkcm1fZ2VtX2NtYV9wcmltZV9nZXRfc2dfdGFibGUsCi0JLmdlbV9wcmltZV9pbXBvcnRf c2dfdGFibGUgPSBkcm1fZ2VtX2NtYV9wcmltZV9pbXBvcnRfc2dfdGFibGUsCisJLmdlbV9wcmlt ZV9pbXBvcnRfc2dfdGFibGUgPSB2YzRfcHJpbWVfaW1wb3J0X3NnX3RhYmxlLAogCS5nZW1fcHJp bWVfdm1hcCA9IHZjNF9wcmltZV92bWFwLAogCS5nZW1fcHJpbWVfdnVubWFwID0gZHJtX2dlbV9j bWFfcHJpbWVfdnVubWFwLAogCS5nZW1fcHJpbWVfbW1hcCA9IHZjNF9wcmltZV9tbWFwLApkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0v dmM0L3ZjNF9kcnYuaAppbmRleCBkZWEzMDQ5NjZlNjUuLjA4ZDVjMjIxM2M4MCAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Zj NC92YzRfZHJ2LmgKQEAgLTgsNyArOCw5IEBACiAKICNpbmNsdWRlICJkcm1QLmgiCiAjaW5jbHVk ZSAiZHJtX2dlbV9jbWFfaGVscGVyLmgiCisjaW5jbHVkZSAiZHJtX2dlbV9jbWFfaGVscGVyLmgi CiAKKyNpbmNsdWRlIDxsaW51eC9yZXNlcnZhdGlvbi5oPgogI2luY2x1ZGUgPGRybS9kcm1fZW5j b2Rlci5oPgogCiBzdHJ1Y3QgdmM0X2RldiB7CkBAIC01Niw2ICs1OCw4IEBAIHN0cnVjdCB2YzRf ZGV2IHsKIAkvKiBQcm90ZWN0cyBib19jYWNoZSBhbmQgdGhlIEJPIHN0YXRzLiAqLwogCXN0cnVj dCBtdXRleCBib19sb2NrOwogCisJdWludDY0X3QgZG1hX2ZlbmNlX2NvbnRleHQ7CisKIAkvKiBT ZXF1ZW5jZSBudW1iZXIgZm9yIHRoZSBsYXN0IGpvYiBxdWV1ZWQgaW4gYmluX2pvYl9saXN0Lgog CSAqIFN0YXJ0cyBhdCAwIChubyBqb2JzIGVtaXR0ZWQpLgogCSAqLwpAQCAtMTUwLDYgKzE1NCwx MCBAQCBzdHJ1Y3QgdmM0X2JvIHsKIAkgKiBEUk1fSU9DVExfVkM0X0NSRUFURV9TSEFERVJfQk8u CiAJICovCiAJc3RydWN0IHZjNF92YWxpZGF0ZWRfc2hhZGVyX2luZm8gKnZhbGlkYXRlZF9zaGFk ZXI7CisKKwkvKiBub3JtYWxseSAocmVzdiA9PSAmX3Jlc3YpIGV4Y2VwdCBmb3IgaW1wb3J0ZWQg Ym8ncyAqLworCXN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QgKnJlc3Y7CisJc3RydWN0IHJlc2Vy dmF0aW9uX29iamVjdCBfcmVzdjsKIH07CiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IHZjNF9ibyAq CkBAIC0xNTgsNiArMTY2LDE5IEBAIHRvX3ZjNF9ibyhzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmJv KQogCXJldHVybiAoc3RydWN0IHZjNF9ibyAqKWJvOwogfQogCitzdHJ1Y3QgdmM0X2ZlbmNlIHsK KwlzdHJ1Y3QgZG1hX2ZlbmNlIGJhc2U7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldjsKKwkvKiB2 YzQgc2Vxbm8gZm9yIHNpZ25hbGVkKCkgdGVzdCAqLworCXVpbnQ2NF90IHNlcW5vOworfTsKKwor c3RhdGljIGlubGluZSBzdHJ1Y3QgdmM0X2ZlbmNlICoKK3RvX3ZjNF9mZW5jZShzdHJ1Y3QgZG1h X2ZlbmNlICpmZW5jZSkKK3sKKwlyZXR1cm4gKHN0cnVjdCB2YzRfZmVuY2UgKilmZW5jZTsKK30K Kwogc3RydWN0IHZjNF9zZXFub19jYiB7CiAJc3RydWN0IHdvcmtfc3RydWN0IHdvcms7CiAJdWlu dDY0X3Qgc2Vxbm87CkBAIC0yMzEsNiArMjUyLDggQEAgc3RydWN0IHZjNF9leGVjX2luZm8gewog CS8qIExhdGVzdCB3cml0ZV9zZXFubyBvZiBhbnkgQk8gdGhhdCBiaW5uaW5nIGRlcGVuZHMgb24u ICovCiAJdWludDY0X3QgYmluX2RlcF9zZXFubzsKIAorCXN0cnVjdCBkbWFfZmVuY2UgKmZlbmNl OworCiAJLyogTGFzdCBjdXJyZW50IGFkZHJlc3NlcyB0aGUgaGFyZHdhcmUgd2FzIHByb2Nlc3Np bmcgd2hlbiB0aGUKIAkgKiBoYW5nY2hlY2sgdGltZXIgY2hlY2tlZCBvbiB1cy4KIAkgKi8KQEAg LTQzNyw3ICs0NjAsMTEgQEAgaW50IHZjNF9tbWFwX2JvX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHZvaWQgKmRhdGEsCiBpbnQgdmM0X2dldF9oYW5nX3N0YXRlX2lvY3RsKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCQkgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmls ZV9wcml2KTsKIGludCB2YzRfbW1hcChzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IHZtX2FyZWFf c3RydWN0ICp2bWEpOworc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAqdmM0X3ByaW1lX3Jlc19v Ymooc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopOwogaW50IHZjNF9wcmltZV9tbWFwKHN0cnVj dCBkcm1fZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSk7CitzdHJ1 Y3QgZHJtX2dlbV9vYmplY3QgKnZjNF9wcmltZV9pbXBvcnRfc2dfdGFibGUoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKKwkJCQkJCSBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2gsCisJ CQkJCQkgc3RydWN0IHNnX3RhYmxlICpzZ3QpOwogdm9pZCAqdmM0X3ByaW1lX3ZtYXAoc3RydWN0 IGRybV9nZW1fb2JqZWN0ICpvYmopOwogdm9pZCB2YzRfYm9fY2FjaGVfaW5pdChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KTsKIHZvaWQgdmM0X2JvX2NhY2hlX2Rlc3Ryb3koc3RydWN0IGRybV9kZXZp Y2UgKmRldik7CkBAIC00NjksNiArNDk2LDkgQEAgaW50IHZjNF9kcGlfZGVidWdmc19yZWdzKHN0 cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKTsKIGV4dGVybiBzdHJ1Y3QgcGxhdGZvcm1f ZHJpdmVyIHZjNF9kc2lfZHJpdmVyOwogaW50IHZjNF9kc2lfZGVidWdmc19yZWdzKHN0cnVjdCBz ZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKTsKIAorLyogdmM0X2ZlbmNlLmMgKi8KK2V4dGVybiBj b25zdCBzdHJ1Y3QgZG1hX2ZlbmNlX29wcyB2YzRfZmVuY2Vfb3BzOworCiAvKiB2YzRfZ2VtLmMg Ki8KIHZvaWQgdmM0X2dlbV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogdm9pZCB2YzRf Z2VtX2Rlc3Ryb3koc3RydWN0IGRybV9kZXZpY2UgKmRldik7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vdmM0L3ZjNF9mZW5jZS5jIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfZmVuY2Uu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmRiZjVhNWE1ZDVmNQot LS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2ZlbmNlLmMKQEAgLTAs MCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE3IEJyb2FkY29tCisgKgorICogUGVy bWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24g b2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1 bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0 d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisg KiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJp YnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUs IGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlz aGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisg KiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAo aW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFs bCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAq CisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBP RiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElN SVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQg U0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1Ig QU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4g QUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwg T1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBP VEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICovCisKKyNpbmNsdWRlICJ2YzRf ZHJ2LmgiCisKK3N0YXRpYyBjb25zdCBjaGFyICp2YzRfZmVuY2VfZ2V0X2RyaXZlcl9uYW1lKHN0 cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQoreworCXJldHVybiAidmM0IjsKK30KKworc3RhdGljIGNv bnN0IGNoYXIgKnZjNF9mZW5jZV9nZXRfdGltZWxpbmVfbmFtZShzdHJ1Y3QgZG1hX2ZlbmNlICpm ZW5jZSkKK3sKKwlyZXR1cm4gInZjNC12M2QiOworfQorCitzdGF0aWMgYm9vbCB2YzRfZmVuY2Vf ZW5hYmxlX3NpZ25hbGluZyhzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSkKK3sKKwlyZXR1cm4gdHJ1 ZTsKK30KKworc3RhdGljIGJvb2wgdmM0X2ZlbmNlX3NpZ25hbGVkKHN0cnVjdCBkbWFfZmVuY2Ug KmZlbmNlKQoreworCXN0cnVjdCB2YzRfZmVuY2UgKmYgPSB0b192YzRfZmVuY2UoZmVuY2UpOwor CXN0cnVjdCB2YzRfZGV2ICp2YzQgPSB0b192YzRfZGV2KGYtPmRldik7CisKKwlyZXR1cm4gdmM0 LT5maW5pc2hlZF9zZXFubyA+PSBmLT5zZXFubzsKK30KKworY29uc3Qgc3RydWN0IGRtYV9mZW5j ZV9vcHMgdmM0X2ZlbmNlX29wcyA9IHsKKwkuZ2V0X2RyaXZlcl9uYW1lID0gdmM0X2ZlbmNlX2dl dF9kcml2ZXJfbmFtZSwKKwkuZ2V0X3RpbWVsaW5lX25hbWUgPSB2YzRfZmVuY2VfZ2V0X3RpbWVs aW5lX25hbWUsCisJLmVuYWJsZV9zaWduYWxpbmcgPSB2YzRfZmVuY2VfZW5hYmxlX3NpZ25hbGlu ZywKKwkuc2lnbmFsZWQgPSB2YzRfZmVuY2Vfc2lnbmFsZWQsCisJLndhaXQgPSBkbWFfZmVuY2Vf ZGVmYXVsdF93YWl0LAorCS5yZWxlYXNlID0gZG1hX2ZlbmNlX2ZyZWUsCit9OwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vdmM0L3Zj NF9nZW0uYwppbmRleCBlOWMzODFjNDIxMzkuLmExYTAxMDQ0MjYzYyAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL3ZjNC92YzRfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRf Z2VtLmMKQEAgLTQ2Myw2ICs0NjMsOCBAQCB2YzRfdXBkYXRlX2JvX3NlcW5vcyhzdHJ1Y3QgdmM0 X2V4ZWNfaW5mbyAqZXhlYywgdWludDY0X3Qgc2Vxbm8pCiAJZm9yIChpID0gMDsgaSA8IGV4ZWMt PmJvX2NvdW50OyBpKyspIHsKIAkJYm8gPSB0b192YzRfYm8oJmV4ZWMtPmJvW2ldLT5iYXNlKTsK IAkJYm8tPnNlcW5vID0gc2Vxbm87CisKKwkJcmVzZXJ2YXRpb25fb2JqZWN0X2FkZF9zaGFyZWRf ZmVuY2UoYm8tPnJlc3YsIGV4ZWMtPmZlbmNlKTsKIAl9CiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5 KGJvLCAmZXhlYy0+dW5yZWZfbGlzdCwgdW5yZWZfaGVhZCkgewpAQCAtNDcyLDcgKzQ3NCwxMDMg QEAgdmM0X3VwZGF0ZV9ib19zZXFub3Moc3RydWN0IHZjNF9leGVjX2luZm8gKmV4ZWMsIHVpbnQ2 NF90IHNlcW5vKQogCWZvciAoaSA9IDA7IGkgPCBleGVjLT5yY2xfd3JpdGVfYm9fY291bnQ7IGkr KykgewogCQlibyA9IHRvX3ZjNF9ibygmZXhlYy0+cmNsX3dyaXRlX2JvW2ldLT5iYXNlKTsKIAkJ Ym8tPndyaXRlX3NlcW5vID0gc2Vxbm87CisKKwkJcmVzZXJ2YXRpb25fb2JqZWN0X2FkZF9leGNs X2ZlbmNlKGJvLT5yZXN2LCBleGVjLT5mZW5jZSk7CisJfQorfQorCitzdGF0aWMgdm9pZAordmM0 X3VubG9ja19ib19yZXNlcnZhdGlvbnMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCSAgIHN0 cnVjdCB2YzRfZXhlY19pbmZvICpleGVjLAorCQkJICAgc3RydWN0IHd3X2FjcXVpcmVfY3R4ICph Y3F1aXJlX2N0eCkKK3sKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBleGVjLT5ib19jb3Vu dDsgaSsrKSB7CisJCXN0cnVjdCB2YzRfYm8gKmJvID0gdG9fdmM0X2JvKCZleGVjLT5ib1tpXS0+ YmFzZSk7CisKKwkJd3dfbXV0ZXhfdW5sb2NrKCZiby0+cmVzdi0+bG9jayk7CiAJfQorCisJd3df YWNxdWlyZV9maW5pKGFjcXVpcmVfY3R4KTsKK30KKworLyogVGFrZXMgdGhlIHJlc2VydmF0aW9u IGxvY2sgb24gYWxsIHRoZSBCT3MgYmVpbmcgcmVmZXJlbmNlZCwgc28gdGhhdAorICogYXQgcXVl dWUgc3VibWl0IHRpbWUgd2UgY2FuIHVwZGF0ZSB0aGUgcmVzZXJ2YXRpb25zLgorICoKKyAqIFdl IGRvbid0IGxvY2sgdGhlIFJDTCB0aGUgdGlsZSBhbGxvYy9zdGF0ZSBCT3MsIG9yIG92ZXJmbG93 IG1lbW9yeQorICogKGFsbCBvZiB3aGljaCBhcmUgb24gZXhlYy0+dW5yZWZfbGlzdCkuICBUaGV5 J3JlIGVudGlyZWx5IHByaXZhdGUKKyAqIHRvIHZjNCwgc28gd2UgZG9uJ3QgYXR0YWNoIGRtYS1i dWYgZmVuY2VzIHRvIHRoZW0uCisgKi8KK3N0YXRpYyBpbnQKK3ZjNF9sb2NrX2JvX3Jlc2VydmF0 aW9ucyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkJIHN0cnVjdCB2YzRfZXhlY19pbmZvICpl eGVjLAorCQkJIHN0cnVjdCB3d19hY3F1aXJlX2N0eCAqYWNxdWlyZV9jdHgpCit7CisJaW50IGNv bnRlbmRlZF9sb2NrID0gLTE7CisJaW50IGksIHJldDsKKwlzdHJ1Y3QgdmM0X2JvICpibzsKKwor CXd3X2FjcXVpcmVfaW5pdChhY3F1aXJlX2N0eCwgJnJlc2VydmF0aW9uX3d3X2NsYXNzKTsKKwor cmV0cnk6CisJaWYgKGNvbnRlbmRlZF9sb2NrICE9IC0xKSB7CisJCWJvID0gdG9fdmM0X2JvKCZl eGVjLT5ib1tjb250ZW5kZWRfbG9ja10tPmJhc2UpOworCQlyZXQgPSB3d19tdXRleF9sb2NrX3Ns b3dfaW50ZXJydXB0aWJsZSgmYm8tPnJlc3YtPmxvY2ssCisJCQkJCQkgICAgICAgYWNxdWlyZV9j dHgpOworCQlpZiAocmV0KSB7CisJCQl3d19hY3F1aXJlX2RvbmUoYWNxdWlyZV9jdHgpOworCQkJ cmV0dXJuIHJldDsKKwkJfQorCX0KKworCWZvciAoaSA9IDA7IGkgPCBleGVjLT5ib19jb3VudDsg aSsrKSB7CisJCWlmIChpID09IGNvbnRlbmRlZF9sb2NrKQorCQkJY29udGludWU7CisKKwkJYm8g PSB0b192YzRfYm8oJmV4ZWMtPmJvW2ldLT5iYXNlKTsKKworCQlyZXQgPSB3d19tdXRleF9sb2Nr X2ludGVycnVwdGlibGUoJmJvLT5yZXN2LT5sb2NrLCBhY3F1aXJlX2N0eCk7CisJCWlmIChyZXQp IHsKKwkJCWludCBqOworCisJCQlmb3IgKGogPSAwOyBqIDwgaTsgaisrKSB7CisJCQkJYm8gPSB0 b192YzRfYm8oJmV4ZWMtPmJvW2pdLT5iYXNlKTsKKwkJCQl3d19tdXRleF91bmxvY2soJmJvLT5y ZXN2LT5sb2NrKTsKKwkJCX0KKworCQkJaWYgKGNvbnRlbmRlZF9sb2NrICE9IC0xICYmIGNvbnRl bmRlZF9sb2NrID49IGkpIHsKKwkJCQlibyA9IHRvX3ZjNF9ibygmZXhlYy0+Ym9bY29udGVuZGVk X2xvY2tdLT5iYXNlKTsKKworCQkJCXd3X211dGV4X3VubG9jaygmYm8tPnJlc3YtPmxvY2spOwor CQkJfQorCisJCQlpZiAocmV0ID09IC1FREVBRExLKSB7CisJCQkJY29udGVuZGVkX2xvY2sgPSBp OworCQkJCWdvdG8gcmV0cnk7CisJCQl9CisKKwkJCXd3X2FjcXVpcmVfZG9uZShhY3F1aXJlX2N0 eCk7CisJCQlyZXR1cm4gcmV0OworCQl9CisJfQorCisJd3dfYWNxdWlyZV9kb25lKGFjcXVpcmVf Y3R4KTsKKworCS8qIFJlc2VydmUgc3BhY2UgZm9yIG91ciBzaGFyZWQgKHJlYWQtb25seSkgZmVu Y2UgcmVmZXJlbmNlcywKKwkgKiBiZWZvcmUgd2UgY29tbWl0IHRoZSBDTCB0byB0aGUgaGFyZHdh cmUuCisJICovCisJZm9yIChpID0gMDsgaSA8IGV4ZWMtPmJvX2NvdW50OyBpKyspIHsKKwkJYm8g PSB0b192YzRfYm8oJmV4ZWMtPmJvW2ldLT5iYXNlKTsKKworCQlyZXQgPSByZXNlcnZhdGlvbl9v YmplY3RfcmVzZXJ2ZV9zaGFyZWQoYm8tPnJlc3YpOworCQlpZiAocmV0KSB7CisJCQl2YzRfdW5s b2NrX2JvX3Jlc2VydmF0aW9ucyhkZXYsIGV4ZWMsIGFjcXVpcmVfY3R4KTsKKwkJCXJldHVybiBy ZXQ7CisJCX0KKwl9CisKKwlyZXR1cm4gMDsKIH0KIAogLyogUXVldWVzIGEgc3RydWN0IHZjNF9l eGVjX2luZm8gZm9yIGV4ZWN1dGlvbi4gIElmIG5vIGpvYiBpcwpAQCAtNDg0LDE5ICs1ODIsMzQg QEAgdmM0X3VwZGF0ZV9ib19zZXFub3Moc3RydWN0IHZjNF9leGVjX2luZm8gKmV4ZWMsIHVpbnQ2 NF90IHNlcW5vKQogICogdGhlbiBidW1wIHRoZSBlbmQgYWRkcmVzcy4gIFRoYXQncyBhIGNoYW5n ZSBmb3IgYSBsYXRlciBkYXRlLAogICogdGhvdWdoLgogICovCi1zdGF0aWMgdm9pZAotdmM0X3F1 ZXVlX3N1Ym1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgdmM0X2V4ZWNfaW5mbyAq ZXhlYykKK3N0YXRpYyBpbnQKK3ZjNF9xdWV1ZV9zdWJtaXQoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgc3RydWN0IHZjNF9leGVjX2luZm8gKmV4ZWMsCisJCSBzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHgg KmFjcXVpcmVfY3R4KQogewogCXN0cnVjdCB2YzRfZGV2ICp2YzQgPSB0b192YzRfZGV2KGRldik7 CiAJdWludDY0X3Qgc2Vxbm87CiAJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKKwlzdHJ1Y3QgdmM0 X2ZlbmNlICpmZW5jZTsKKworCWZlbmNlID0ga3phbGxvYyhzaXplb2YoKmZlbmNlKSwgR0ZQX0tF Uk5FTCk7CisJaWYgKCFmZW5jZSkKKwkJcmV0dXJuIC1FTk9NRU07CisJZmVuY2UtPmRldiA9IGRl djsKIAogCXNwaW5fbG9ja19pcnFzYXZlKCZ2YzQtPmpvYl9sb2NrLCBpcnFmbGFncyk7CiAKIAlz ZXFubyA9ICsrdmM0LT5lbWl0X3NlcW5vOwogCWV4ZWMtPnNlcW5vID0gc2Vxbm87CisKKwlkbWFf ZmVuY2VfaW5pdCgmZmVuY2UtPmJhc2UsICZ2YzRfZmVuY2Vfb3BzLCAmdmM0LT5qb2JfbG9jaywK KwkJICAgICAgIHZjNC0+ZG1hX2ZlbmNlX2NvbnRleHQsIGV4ZWMtPnNlcW5vKTsKKwlmZW5jZS0+ c2Vxbm8gPSBleGVjLT5zZXFubzsKKwlleGVjLT5mZW5jZSA9ICZmZW5jZS0+YmFzZTsKKwogCXZj NF91cGRhdGVfYm9fc2Vxbm9zKGV4ZWMsIHNlcW5vKTsKIAorCXZjNF91bmxvY2tfYm9fcmVzZXJ2 YXRpb25zKGRldiwgZXhlYywgYWNxdWlyZV9jdHgpOworCiAJbGlzdF9hZGRfdGFpbCgmZXhlYy0+ aGVhZCwgJnZjNC0+YmluX2pvYl9saXN0KTsKIAogCS8qIElmIG5vIGpvYiB3YXMgZXhlY3V0aW5n LCBraWNrIG91cnMgb2ZmLiAgT3RoZXJ3aXNlLCBpdCdsbApAQCAtNTA5LDYgKzYyMiw4IEBAIHZj NF9xdWV1ZV9zdWJtaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IHZjNF9leGVjX2lu Zm8gKmV4ZWMpCiAJfQogCiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdmM0LT5qb2JfbG9jaywg aXJxZmxhZ3MpOworCisJcmV0dXJuIDA7CiB9CiAKIC8qKgpAQCAtNzA3LDYgKzgyMiwxMiBAQCB2 YzRfY29tcGxldGVfZXhlYyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgdmM0X2V4ZWNf aW5mbyAqZXhlYykKIAlzdHJ1Y3QgdmM0X2RldiAqdmM0ID0gdG9fdmM0X2RldihkZXYpOwogCXVu c2lnbmVkIGk7CiAKKwkvKiBJZiB3ZSBnb3QgZm9yY2UtY29tcGxldGVkIGJlY2F1c2Ugb2YgR1BV IHJlc2V0IHJhdGhlciB0aGFuCisJICogdGhyb3VnaCBvdXIgSVJRIGhhbmRsZXIsIHNpZ25hbCB0 aGUgZmVuY2Ugbm93LgorCSAqLworCWlmIChleGVjLT5mZW5jZSkKKwkJZG1hX2ZlbmNlX3NpZ25h bChleGVjLT5mZW5jZSk7CisKIAlpZiAoZXhlYy0+Ym8pIHsKIAkJZm9yIChpID0gMDsgaSA8IGV4 ZWMtPmJvX2NvdW50OyBpKyspCiAJCQlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZV91bmxvY2tl ZCgmZXhlYy0+Ym9baV0tPmJhc2UpOwpAQCAtODc0LDYgKzk5NSw3IEBAIHZjNF9zdWJtaXRfY2xf aW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlzdHJ1Y3QgdmM0X2Rl diAqdmM0ID0gdG9fdmM0X2RldihkZXYpOwogCXN0cnVjdCBkcm1fdmM0X3N1Ym1pdF9jbCAqYXJn cyA9IGRhdGE7CiAJc3RydWN0IHZjNF9leGVjX2luZm8gKmV4ZWM7CisJc3RydWN0IHd3X2FjcXVp cmVfY3R4IGFjcXVpcmVfY3R4OwogCWludCByZXQgPSAwOwogCiAJaWYgKChhcmdzLT5mbGFncyAm IH5WQzRfU1VCTUlUX0NMX1VTRV9DTEVBUl9DT0xPUikgIT0gMCkgewpAQCAtOTE2LDEyICsxMDM4 LDE4IEBAIHZjNF9zdWJtaXRfY2xfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAq ZGF0YSwKIAlpZiAocmV0KQogCQlnb3RvIGZhaWw7CiAKKwlyZXQgPSB2YzRfbG9ja19ib19yZXNl cnZhdGlvbnMoZGV2LCBleGVjLCAmYWNxdWlyZV9jdHgpOworCWlmIChyZXQpCisJCWdvdG8gZmFp bDsKKwogCS8qIENsZWFyIHRoaXMgb3V0IG9mIHRoZSBzdHJ1Y3Qgd2UnbGwgYmUgcHV0dGluZyBp biB0aGUgcXVldWUsCiAJICogc2luY2UgaXQncyBwYXJ0IG9mIG91ciBzdGFjay4KIAkgKi8KIAll eGVjLT5hcmdzID0gTlVMTDsKIAotCXZjNF9xdWV1ZV9zdWJtaXQoZGV2LCBleGVjKTsKKwlyZXQg PSB2YzRfcXVldWVfc3VibWl0KGRldiwgZXhlYywgJmFjcXVpcmVfY3R4KTsKKwlpZiAocmV0KQor CQlnb3RvIGZhaWw7CiAKIAkvKiBSZXR1cm4gdGhlIHNlcW5vIGZvciBvdXIgam9iLiAqLwogCWFy Z3MtPnNlcW5vID0gdmM0LT5lbWl0X3NlcW5vOwpAQCAtOTM5LDYgKzEwNjcsOCBAQCB2YzRfZ2Vt X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3QgdmM0X2RldiAqdmM0ID0g dG9fdmM0X2RldihkZXYpOwogCisJdmM0LT5kbWFfZmVuY2VfY29udGV4dCA9IGRtYV9mZW5jZV9j b250ZXh0X2FsbG9jKDEpOworCiAJSU5JVF9MSVNUX0hFQUQoJnZjNC0+YmluX2pvYl9saXN0KTsK IAlJTklUX0xJU1RfSEVBRCgmdmM0LT5yZW5kZXJfam9iX2xpc3QpOwogCUlOSVRfTElTVF9IRUFE KCZ2YzQtPmpvYl9kb25lX2xpc3QpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZjNC92 YzRfaXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9pcnEuYwppbmRleCBjZGM2ZTY3NjA3 MDUuLjEzODRhZjlmYzk4NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfaXJx LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfaXJxLmMKQEAgLTE0Miw2ICsxNDIsMTAg QEAgdmM0X2lycV9maW5pc2hfcmVuZGVyX2pvYihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCiAJ dmM0LT5maW5pc2hlZF9zZXFubysrOwogCWxpc3RfbW92ZV90YWlsKCZleGVjLT5oZWFkLCAmdmM0 LT5qb2JfZG9uZV9saXN0KTsKKwlpZiAoZXhlYy0+ZmVuY2UpIHsKKwkJZG1hX2ZlbmNlX3NpZ25h bF9sb2NrZWQoZXhlYy0+ZmVuY2UpOworCQlleGVjLT5mZW5jZSA9IE5VTEw7CisJfQogCXZjNF9z dWJtaXRfbmV4dF9yZW5kZXJfam9iKGRldik7CiAKIAl3YWtlX3VwX2FsbCgmdmM0LT5qb2Jfd2Fp dF9xdWV1ZSk7Ci0tIAoyLjExLjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2RyaS1kZXZlbAo=