From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Anholt Subject: [PATCH 3/3] drm/vc4: Add support for dma-buf fencing. Date: Mon, 10 Apr 2017 18:44:14 -0700 Message-ID: <20170411014414.20280-3-eric@anholt.net> References: <20170411014414.20280-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 576876E110 for ; Tue, 11 Apr 2017 01:44:20 +0000 (UTC) In-Reply-To: <20170411014414.20280-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, Gustavo Padovan List-Id: dri-devel@lists.freedesktop.org VGhpcyBpcyBuZWVkZWQgZm9yIHByb3BlciBzeW5jaHJvbml6YXRpb24gd2l0aCBkaXNwbGF5IG9u IGFub3RoZXIgRFJNCmRldmljZSAocGwxMTEgb3IgdGlueWRybSkgd2l0aCBidWZmZXJzIHByb2R1 Y2VkIGJ5IHZjNCBWM0QuICBGaXhlcyB0aGUKbmV3IGlndCB2YzRfZG1hYnVmX3BvbGwgdGVzdGNh c2UsIGFuZCByZW5kZXJpbmcgb2Ygb25lIG9mIHRoZSBnbG1hcmsyCmRlc2t0b3AgdGVzdHMgb24g cGwxMTErdmM0LgoKVGhpcyBkb2Vzbid0IHlldCBpbnRyb2R1Y2Ugd2FpdHMgb24gb3RoZXIgZGV2 aWNlJ3MgZmVuY2VzIGJlZm9yZSB2YzQncwpyZW5kZXJpbmcvZGlzcGxheSwgYmVjYXVzZSBJIGRv bid0IGhhdmUgdGVzdGNhc2VzIGZvciB0aGVtLgoKU2lnbmVkLW9mZi1ieTogRXJpYyBBbmhvbHQg PGVyaWNAYW5ob2x0Lm5ldD4KQ2M6IEd1c3Rhdm8gUGFkb3ZhbiA8Z3VzdGF2by5wYWRvdmFuQGNv bGxhYm9yYS5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL3ZjNC9NYWtlZmlsZSAgICB8ICAgMSAr CiBkcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9iby5jICAgIHwgIDM3ICsrKysrKysrKystCiBkcml2 ZXJzL2dwdS9kcm0vdmM0L3ZjNF9kcnYuYyAgIHwgICAzICstCiBkcml2ZXJzL2dwdS9kcm0vdmM0 L3ZjNF9kcnYuaCAgIHwgIDMwICsrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfZmVu Y2UuYyB8ICA2MyArKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9n ZW0uYyAgIHwgMTM2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIGRy aXZlcnMvZ3B1L2RybS92YzQvdmM0X2lycS5jICAgfCAgIDQgKysKIDcgZmlsZXMgY2hhbmdlZCwg MjY5IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJp dmVycy9ncHUvZHJtL3ZjNC92YzRfZmVuY2UuYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS92YzQvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vdmM0L01ha2VmaWxlCmluZGV4IDYxZjQ1 ZDEyMmJkMC4uYWI2ODdmYmE0OTE2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmM0L01h a2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92YzQvTWFrZWZpbGUKQEAgLTksNiArOSw3IEBA IHZjNC15IDo9IFwKIAl2YzRfZHJ2Lm8gXAogCXZjNF9kcGkubyBcCiAJdmM0X2RzaS5vIFwKKwl2 YzRfZmVuY2UubyBcCiAJdmM0X2ttcy5vIFwKIAl2YzRfZ2VtLm8gXAogCXZjNF9oZG1pLm8gXApk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfYm8uYyBiL2RyaXZlcnMvZ3B1L2Ry bS92YzQvdmM0X2JvLmMKaW5kZXggYWYyOTQzMmE2NDcxLi44MGIyZjllNTVjNWMgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2JvLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Zj NC92YzRfYm8uYwpAQCAtMTksNiArMTksOCBAQAogICogcmVuZGVyaW5nIGNhbiByZXR1cm4gcXVp Y2tseS4KICAqLwogCisjaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi5oPgorCiAjaW5jbHVkZSAidmM0 X2Rydi5oIgogI2luY2x1ZGUgInVhcGkvZHJtL3ZjNF9kcm0uaCIKIApAQCAtODgsNiArOTAsMTAg QEAgc3RhdGljIHZvaWQgdmM0X2JvX2Rlc3Ryb3koc3RydWN0IHZjNF9ibyAqYm8pCiAKIAl2YzQt PmJvX3N0YXRzLm51bV9hbGxvY2F0ZWQtLTsKIAl2YzQtPmJvX3N0YXRzLnNpemVfYWxsb2NhdGVk IC09IG9iai0+c2l6ZTsKKworCWlmIChiby0+cmVzdiA9PSAmYm8tPl9yZXN2KQorCQlyZXNlcnZh dGlvbl9vYmplY3RfZmluaShiby0+cmVzdik7CisKIAlkcm1fZ2VtX2NtYV9mcmVlX29iamVjdChv YmopOwogfQogCkBAIC0yNDQsOCArMjUwLDEyIEBAIHN0cnVjdCB2YzRfYm8gKnZjNF9ib19jcmVh dGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc2l6ZV90IHVuYWxpZ25lZF9zaXplLAogCQkJcmV0 dXJuIEVSUl9QVFIoLUVOT01FTSk7CiAJCX0KIAl9CisJYm8gPSB0b192YzRfYm8oJmNtYV9vYmot PmJhc2UpOwogCi0JcmV0dXJuIHRvX3ZjNF9ibygmY21hX29iai0+YmFzZSk7CisJYm8tPnJlc3Yg PSAmYm8tPl9yZXN2OworCXJlc2VydmF0aW9uX29iamVjdF9pbml0KGJvLT5yZXN2KTsKKworCXJl dHVybiBibzsKIH0KIAogaW50IHZjNF9kdW1iX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVf cHJpdiwKQEAgLTM2OSw2ICszNzksMTMgQEAgc3RhdGljIHZvaWQgdmM0X2JvX2NhY2hlX3RpbWVf dGltZXIodW5zaWduZWQgbG9uZyBkYXRhKQogCXNjaGVkdWxlX3dvcmsoJnZjNC0+Ym9fY2FjaGUu dGltZV93b3JrKTsKIH0KIAorc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAqdmM0X3ByaW1lX3Jl c19vYmooc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCit7CisJc3RydWN0IHZjNF9ibyAqYm8g PSB0b192YzRfYm8ob2JqKTsKKworCXJldHVybiBiby0+cmVzdjsKK30KKwogc3RydWN0IGRtYV9i dWYgKgogdmM0X3ByaW1lX2V4cG9ydChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJt X2dlbV9vYmplY3QgKm9iaiwgaW50IGZsYWdzKQogewpAQCAtNDQwLDYgKzQ1NywyNCBAQCB2b2lk ICp2YzRfcHJpbWVfdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKIAlyZXR1cm4gZHJt X2dlbV9jbWFfcHJpbWVfdm1hcChvYmopOwogfQogCitzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKgor dmM0X3ByaW1lX2ltcG9ydF9zZ190YWJsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkJICBz dHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2gsCisJCQkgIHN0cnVjdCBzZ190YWJsZSAq c2d0KQoreworCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqOworCXN0cnVjdCB2YzRfYm8gKmJv OworCisJb2JqID0gZHJtX2dlbV9jbWFfcHJpbWVfaW1wb3J0X3NnX3RhYmxlKGRldiwgYXR0YWNo LCBzZ3QpOworCWlmIChJU19FUlIob2JqKSkKKwkJcmV0dXJuIG9iajsKKworCWJvID0gdG9fdmM0 X2JvKG9iaik7CisJYm8tPnJlc3YgPSBhdHRhY2gtPmRtYWJ1Zi0+cmVzdjsKKworCXJldHVybiBv Ymo7Cit9CisKIGludCB2YzRfY3JlYXRlX2JvX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHZvaWQgKmRhdGEsCiAJCQlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdikKIHsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92 YzRfZHJ2LmMKaW5kZXggNjFlNjc0YmFmM2E2Li45MmZiOWE0MWZlN2MgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS92YzQvdmM0X2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0 X2Rydi5jCkBAIC0xNjgsOCArMTY4LDkgQEAgc3RhdGljIHN0cnVjdCBkcm1fZHJpdmVyIHZjNF9k cm1fZHJpdmVyID0gewogCS5wcmltZV9mZF90b19oYW5kbGUgPSBkcm1fZ2VtX3ByaW1lX2ZkX3Rv X2hhbmRsZSwKIAkuZ2VtX3ByaW1lX2ltcG9ydCA9IGRybV9nZW1fcHJpbWVfaW1wb3J0LAogCS5n ZW1fcHJpbWVfZXhwb3J0ID0gdmM0X3ByaW1lX2V4cG9ydCwKKwkuZ2VtX3ByaW1lX3Jlc19vYmog PSB2YzRfcHJpbWVfcmVzX29iaiwKIAkuZ2VtX3ByaW1lX2dldF9zZ190YWJsZQk9IGRybV9nZW1f Y21hX3ByaW1lX2dldF9zZ190YWJsZSwKLQkuZ2VtX3ByaW1lX2ltcG9ydF9zZ190YWJsZSA9IGRy bV9nZW1fY21hX3ByaW1lX2ltcG9ydF9zZ190YWJsZSwKKwkuZ2VtX3ByaW1lX2ltcG9ydF9zZ190 YWJsZSA9IHZjNF9wcmltZV9pbXBvcnRfc2dfdGFibGUsCiAJLmdlbV9wcmltZV92bWFwID0gdmM0 X3ByaW1lX3ZtYXAsCiAJLmdlbV9wcmltZV92dW5tYXAgPSBkcm1fZ2VtX2NtYV9wcmltZV92dW5t YXAsCiAJLmdlbV9wcmltZV9tbWFwID0gdmM0X3ByaW1lX21tYXAsCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vdmM0L3ZjNF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2Rydi5o CmluZGV4IGRlYTMwNDk2NmU2NS4uMDhkNWMyMjEzYzgwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vdmM0L3ZjNF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9kcnYuaApA QCAtOCw3ICs4LDkgQEAKIAogI2luY2x1ZGUgImRybVAuaCIKICNpbmNsdWRlICJkcm1fZ2VtX2Nt YV9oZWxwZXIuaCIKKyNpbmNsdWRlICJkcm1fZ2VtX2NtYV9oZWxwZXIuaCIKIAorI2luY2x1ZGUg PGxpbnV4L3Jlc2VydmF0aW9uLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9lbmNvZGVyLmg+CiAKIHN0 cnVjdCB2YzRfZGV2IHsKQEAgLTU2LDYgKzU4LDggQEAgc3RydWN0IHZjNF9kZXYgewogCS8qIFBy b3RlY3RzIGJvX2NhY2hlIGFuZCB0aGUgQk8gc3RhdHMuICovCiAJc3RydWN0IG11dGV4IGJvX2xv Y2s7CiAKKwl1aW50NjRfdCBkbWFfZmVuY2VfY29udGV4dDsKKwogCS8qIFNlcXVlbmNlIG51bWJl ciBmb3IgdGhlIGxhc3Qgam9iIHF1ZXVlZCBpbiBiaW5fam9iX2xpc3QuCiAJICogU3RhcnRzIGF0 IDAgKG5vIGpvYnMgZW1pdHRlZCkuCiAJICovCkBAIC0xNTAsNiArMTU0LDEwIEBAIHN0cnVjdCB2 YzRfYm8gewogCSAqIERSTV9JT0NUTF9WQzRfQ1JFQVRFX1NIQURFUl9CTy4KIAkgKi8KIAlzdHJ1 Y3QgdmM0X3ZhbGlkYXRlZF9zaGFkZXJfaW5mbyAqdmFsaWRhdGVkX3NoYWRlcjsKKworCS8qIG5v cm1hbGx5IChyZXN2ID09ICZfcmVzdikgZXhjZXB0IGZvciBpbXBvcnRlZCBibydzICovCisJc3Ry dWN0IHJlc2VydmF0aW9uX29iamVjdCAqcmVzdjsKKwlzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0 IF9yZXN2OwogfTsKIAogc3RhdGljIGlubGluZSBzdHJ1Y3QgdmM0X2JvICoKQEAgLTE1OCw2ICsx NjYsMTkgQEAgdG9fdmM0X2JvKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqYm8pCiAJcmV0dXJuIChz dHJ1Y3QgdmM0X2JvICopYm87CiB9CiAKK3N0cnVjdCB2YzRfZmVuY2UgeworCXN0cnVjdCBkbWFf ZmVuY2UgYmFzZTsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2OworCS8qIHZjNCBzZXFubyBmb3Ig c2lnbmFsZWQoKSB0ZXN0ICovCisJdWludDY0X3Qgc2Vxbm87Cit9OworCitzdGF0aWMgaW5saW5l IHN0cnVjdCB2YzRfZmVuY2UgKgordG9fdmM0X2ZlbmNlKHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNl KQoreworCXJldHVybiAoc3RydWN0IHZjNF9mZW5jZSAqKWZlbmNlOworfQorCiBzdHJ1Y3QgdmM0 X3NlcW5vX2NiIHsKIAlzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yazsKIAl1aW50NjRfdCBzZXFubzsK QEAgLTIzMSw2ICsyNTIsOCBAQCBzdHJ1Y3QgdmM0X2V4ZWNfaW5mbyB7CiAJLyogTGF0ZXN0IHdy aXRlX3NlcW5vIG9mIGFueSBCTyB0aGF0IGJpbm5pbmcgZGVwZW5kcyBvbi4gKi8KIAl1aW50NjRf dCBiaW5fZGVwX3NlcW5vOwogCisJc3RydWN0IGRtYV9mZW5jZSAqZmVuY2U7CisKIAkvKiBMYXN0 IGN1cnJlbnQgYWRkcmVzc2VzIHRoZSBoYXJkd2FyZSB3YXMgcHJvY2Vzc2luZyB3aGVuIHRoZQog CSAqIGhhbmdjaGVjayB0aW1lciBjaGVja2VkIG9uIHVzLgogCSAqLwpAQCAtNDM3LDcgKzQ2MCwx MSBAQCBpbnQgdmM0X21tYXBfYm9faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAq ZGF0YSwKIGludCB2YzRfZ2V0X2hhbmdfc3RhdGVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgdm9pZCAqZGF0YSwKIAkJCSAgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOwogaW50 IHZjNF9tbWFwKHN0cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSk7 CitzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICp2YzRfcHJpbWVfcmVzX29iaihzdHJ1Y3QgZHJt X2dlbV9vYmplY3QgKm9iaik7CiBpbnQgdmM0X3ByaW1lX21tYXAoc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpvYmosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKTsKK3N0cnVjdCBkcm1fZ2VtX29i amVjdCAqdmM0X3ByaW1lX2ltcG9ydF9zZ190YWJsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAor CQkJCQkJIHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaCwKKwkJCQkJCSBzdHJ1Y3Qg c2dfdGFibGUgKnNndCk7CiB2b2lkICp2YzRfcHJpbWVfdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmpl Y3QgKm9iaik7CiB2b2lkIHZjNF9ib19jYWNoZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Owogdm9pZCB2YzRfYm9fY2FjaGVfZGVzdHJveShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKQEAg LTQ2OSw2ICs0OTYsOSBAQCBpbnQgdmM0X2RwaV9kZWJ1Z2ZzX3JlZ3Moc3RydWN0IHNlcV9maWxl ICptLCB2b2lkICp1bnVzZWQpOwogZXh0ZXJuIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgdmM0X2Rz aV9kcml2ZXI7CiBpbnQgdmM0X2RzaV9kZWJ1Z2ZzX3JlZ3Moc3RydWN0IHNlcV9maWxlICptLCB2 b2lkICp1bnVzZWQpOwogCisvKiB2YzRfZmVuY2UuYyAqLworZXh0ZXJuIGNvbnN0IHN0cnVjdCBk bWFfZmVuY2Vfb3BzIHZjNF9mZW5jZV9vcHM7CisKIC8qIHZjNF9nZW0uYyAqLwogdm9pZCB2YzRf Z2VtX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiB2b2lkIHZjNF9nZW1fZGVzdHJveShz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92YzQv dmM0X2ZlbmNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9mZW5jZS5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYTI4NDVlZWFlOTRhCi0tLSAvZGV2L251bGwK KysrIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfZmVuY2UuYwpAQCAtMCwwICsxLDYzIEBACisv KgorICogQ29weXJpZ2h0IMKpIDIwMTcgQnJvYWRjb20KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhl cmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQor ICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmls ZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQg cmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMg dG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNl bnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1p dCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28s IHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBj b3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhl IG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBz dWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZU V0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBF WFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhF IEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERB TUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09O VFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4g Q09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdT CisgKiBJTiBUSEUgU09GVFdBUkUuCisgKi8KKworI2luY2x1ZGUgInZjNF9kcnYuaCIKKworc3Rh dGljIGNvbnN0IGNoYXIgKnZjNF9mZW5jZV9nZXRfZHJpdmVyX25hbWUoc3RydWN0IGRtYV9mZW5j ZSAqZmVuY2UpCit7CisJcmV0dXJuICJ2YzQiOworfQorCitzdGF0aWMgY29uc3QgY2hhciAqdmM0 X2ZlbmNlX2dldF90aW1lbGluZV9uYW1lKHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQoreworCXJl dHVybiAidmM0LXYzZCI7Cit9CisKK3N0YXRpYyBib29sIHZjNF9mZW5jZV9lbmFibGVfc2lnbmFs aW5nKHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQoreworCXJldHVybiB0cnVlOworfQorCitzdGF0 aWMgYm9vbCB2YzRfZmVuY2Vfc2lnbmFsZWQoc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpCit7CisJ c3RydWN0IHZjNF9mZW5jZSAqZiA9IHRvX3ZjNF9mZW5jZShmZW5jZSk7CisJc3RydWN0IHZjNF9k ZXYgKnZjNCA9IHRvX3ZjNF9kZXYoZi0+ZGV2KTsKKworCXJldHVybiB2YzQtPmZpbmlzaGVkX3Nl cW5vID49IGYtPnNlcW5vOworfQorCitzdGF0aWMgdm9pZCB2YzRfZmVuY2VfcmVsZWFzZShzdHJ1 Y3QgZG1hX2ZlbmNlICpmZW5jZSkKK3sKKwlzdHJ1Y3QgdmM0X2ZlbmNlICpmID0gdG9fdmM0X2Zl bmNlKGZlbmNlKTsKKworCWtmcmVlX3JjdShmLCBiYXNlLnJjdSk7Cit9CisKK2NvbnN0IHN0cnVj dCBkbWFfZmVuY2Vfb3BzIHZjNF9mZW5jZV9vcHMgPSB7CisJLmdldF9kcml2ZXJfbmFtZSA9IHZj NF9mZW5jZV9nZXRfZHJpdmVyX25hbWUsCisJLmdldF90aW1lbGluZV9uYW1lID0gdmM0X2ZlbmNl X2dldF90aW1lbGluZV9uYW1lLAorCS5lbmFibGVfc2lnbmFsaW5nID0gdmM0X2ZlbmNlX2VuYWJs ZV9zaWduYWxpbmcsCisJLnNpZ25hbGVkID0gdmM0X2ZlbmNlX3NpZ25hbGVkLAorCS53YWl0ID0g ZG1hX2ZlbmNlX2RlZmF1bHRfd2FpdCwKKwkucmVsZWFzZSA9IHZjNF9mZW5jZV9yZWxlYXNlLAor fTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2dlbS5jIGIvZHJpdmVycy9n cHUvZHJtL3ZjNC92YzRfZ2VtLmMKaW5kZXggZTljMzgxYzQyMTM5Li5hMWEwMTA0NDI2M2MgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS92YzQvdmM0X2dlbS5jCkBAIC00NjMsNiArNDYzLDggQEAgdmM0X3VwZGF0ZV9ib19zZXFu b3Moc3RydWN0IHZjNF9leGVjX2luZm8gKmV4ZWMsIHVpbnQ2NF90IHNlcW5vKQogCWZvciAoaSA9 IDA7IGkgPCBleGVjLT5ib19jb3VudDsgaSsrKSB7CiAJCWJvID0gdG9fdmM0X2JvKCZleGVjLT5i b1tpXS0+YmFzZSk7CiAJCWJvLT5zZXFubyA9IHNlcW5vOworCisJCXJlc2VydmF0aW9uX29iamVj dF9hZGRfc2hhcmVkX2ZlbmNlKGJvLT5yZXN2LCBleGVjLT5mZW5jZSk7CiAJfQogCiAJbGlzdF9m b3JfZWFjaF9lbnRyeShibywgJmV4ZWMtPnVucmVmX2xpc3QsIHVucmVmX2hlYWQpIHsKQEAgLTQ3 Miw3ICs0NzQsMTAzIEBAIHZjNF91cGRhdGVfYm9fc2Vxbm9zKHN0cnVjdCB2YzRfZXhlY19pbmZv ICpleGVjLCB1aW50NjRfdCBzZXFubykKIAlmb3IgKGkgPSAwOyBpIDwgZXhlYy0+cmNsX3dyaXRl X2JvX2NvdW50OyBpKyspIHsKIAkJYm8gPSB0b192YzRfYm8oJmV4ZWMtPnJjbF93cml0ZV9ib1tp XS0+YmFzZSk7CiAJCWJvLT53cml0ZV9zZXFubyA9IHNlcW5vOworCisJCXJlc2VydmF0aW9uX29i amVjdF9hZGRfZXhjbF9mZW5jZShiby0+cmVzdiwgZXhlYy0+ZmVuY2UpOworCX0KK30KKworc3Rh dGljIHZvaWQKK3ZjNF91bmxvY2tfYm9fcmVzZXJ2YXRpb25zKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCisJCQkgICBzdHJ1Y3QgdmM0X2V4ZWNfaW5mbyAqZXhlYywKKwkJCSAgIHN0cnVjdCB3d19h Y3F1aXJlX2N0eCAqYWNxdWlyZV9jdHgpCit7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwg ZXhlYy0+Ym9fY291bnQ7IGkrKykgeworCQlzdHJ1Y3QgdmM0X2JvICpibyA9IHRvX3ZjNF9ibygm ZXhlYy0+Ym9baV0tPmJhc2UpOworCisJCXd3X211dGV4X3VubG9jaygmYm8tPnJlc3YtPmxvY2sp OwogCX0KKworCXd3X2FjcXVpcmVfZmluaShhY3F1aXJlX2N0eCk7Cit9CisKKy8qIFRha2VzIHRo ZSByZXNlcnZhdGlvbiBsb2NrIG9uIGFsbCB0aGUgQk9zIGJlaW5nIHJlZmVyZW5jZWQsIHNvIHRo YXQKKyAqIGF0IHF1ZXVlIHN1Ym1pdCB0aW1lIHdlIGNhbiB1cGRhdGUgdGhlIHJlc2VydmF0aW9u cy4KKyAqCisgKiBXZSBkb24ndCBsb2NrIHRoZSBSQ0wgdGhlIHRpbGUgYWxsb2Mvc3RhdGUgQk9z LCBvciBvdmVyZmxvdyBtZW1vcnkKKyAqIChhbGwgb2Ygd2hpY2ggYXJlIG9uIGV4ZWMtPnVucmVm X2xpc3QpLiAgVGhleSdyZSBlbnRpcmVseSBwcml2YXRlCisgKiB0byB2YzQsIHNvIHdlIGRvbid0 IGF0dGFjaCBkbWEtYnVmIGZlbmNlcyB0byB0aGVtLgorICovCitzdGF0aWMgaW50Cit2YzRfbG9j a19ib19yZXNlcnZhdGlvbnMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCSBzdHJ1Y3QgdmM0 X2V4ZWNfaW5mbyAqZXhlYywKKwkJCSBzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHggKmFjcXVpcmVfY3R4 KQoreworCWludCBjb250ZW5kZWRfbG9jayA9IC0xOworCWludCBpLCByZXQ7CisJc3RydWN0IHZj NF9ibyAqYm87CisKKwl3d19hY3F1aXJlX2luaXQoYWNxdWlyZV9jdHgsICZyZXNlcnZhdGlvbl93 d19jbGFzcyk7CisKK3JldHJ5OgorCWlmIChjb250ZW5kZWRfbG9jayAhPSAtMSkgeworCQlibyA9 IHRvX3ZjNF9ibygmZXhlYy0+Ym9bY29udGVuZGVkX2xvY2tdLT5iYXNlKTsKKwkJcmV0ID0gd3df bXV0ZXhfbG9ja19zbG93X2ludGVycnVwdGlibGUoJmJvLT5yZXN2LT5sb2NrLAorCQkJCQkJICAg ICAgIGFjcXVpcmVfY3R4KTsKKwkJaWYgKHJldCkgeworCQkJd3dfYWNxdWlyZV9kb25lKGFjcXVp cmVfY3R4KTsKKwkJCXJldHVybiByZXQ7CisJCX0KKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgZXhl Yy0+Ym9fY291bnQ7IGkrKykgeworCQlpZiAoaSA9PSBjb250ZW5kZWRfbG9jaykKKwkJCWNvbnRp bnVlOworCisJCWJvID0gdG9fdmM0X2JvKCZleGVjLT5ib1tpXS0+YmFzZSk7CisKKwkJcmV0ID0g d3dfbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZiby0+cmVzdi0+bG9jaywgYWNxdWlyZV9jdHgp OworCQlpZiAocmV0KSB7CisJCQlpbnQgajsKKworCQkJZm9yIChqID0gMDsgaiA8IGk7IGorKykg eworCQkJCWJvID0gdG9fdmM0X2JvKCZleGVjLT5ib1tqXS0+YmFzZSk7CisJCQkJd3dfbXV0ZXhf dW5sb2NrKCZiby0+cmVzdi0+bG9jayk7CisJCQl9CisKKwkJCWlmIChjb250ZW5kZWRfbG9jayAh PSAtMSAmJiBjb250ZW5kZWRfbG9jayA+PSBpKSB7CisJCQkJYm8gPSB0b192YzRfYm8oJmV4ZWMt PmJvW2NvbnRlbmRlZF9sb2NrXS0+YmFzZSk7CisKKwkJCQl3d19tdXRleF91bmxvY2soJmJvLT5y ZXN2LT5sb2NrKTsKKwkJCX0KKworCQkJaWYgKHJldCA9PSAtRURFQURMSykgeworCQkJCWNvbnRl bmRlZF9sb2NrID0gaTsKKwkJCQlnb3RvIHJldHJ5OworCQkJfQorCisJCQl3d19hY3F1aXJlX2Rv bmUoYWNxdWlyZV9jdHgpOworCQkJcmV0dXJuIHJldDsKKwkJfQorCX0KKworCXd3X2FjcXVpcmVf ZG9uZShhY3F1aXJlX2N0eCk7CisKKwkvKiBSZXNlcnZlIHNwYWNlIGZvciBvdXIgc2hhcmVkIChy ZWFkLW9ubHkpIGZlbmNlIHJlZmVyZW5jZXMsCisJICogYmVmb3JlIHdlIGNvbW1pdCB0aGUgQ0wg dG8gdGhlIGhhcmR3YXJlLgorCSAqLworCWZvciAoaSA9IDA7IGkgPCBleGVjLT5ib19jb3VudDsg aSsrKSB7CisJCWJvID0gdG9fdmM0X2JvKCZleGVjLT5ib1tpXS0+YmFzZSk7CisKKwkJcmV0ID0g cmVzZXJ2YXRpb25fb2JqZWN0X3Jlc2VydmVfc2hhcmVkKGJvLT5yZXN2KTsKKwkJaWYgKHJldCkg eworCQkJdmM0X3VubG9ja19ib19yZXNlcnZhdGlvbnMoZGV2LCBleGVjLCBhY3F1aXJlX2N0eCk7 CisJCQlyZXR1cm4gcmV0OworCQl9CisJfQorCisJcmV0dXJuIDA7CiB9CiAKIC8qIFF1ZXVlcyBh IHN0cnVjdCB2YzRfZXhlY19pbmZvIGZvciBleGVjdXRpb24uICBJZiBubyBqb2IgaXMKQEAgLTQ4 NCwxOSArNTgyLDM0IEBAIHZjNF91cGRhdGVfYm9fc2Vxbm9zKHN0cnVjdCB2YzRfZXhlY19pbmZv ICpleGVjLCB1aW50NjRfdCBzZXFubykKICAqIHRoZW4gYnVtcCB0aGUgZW5kIGFkZHJlc3MuICBU aGF0J3MgYSBjaGFuZ2UgZm9yIGEgbGF0ZXIgZGF0ZSwKICAqIHRob3VnaC4KICAqLwotc3RhdGlj IHZvaWQKLXZjNF9xdWV1ZV9zdWJtaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IHZj NF9leGVjX2luZm8gKmV4ZWMpCitzdGF0aWMgaW50Cit2YzRfcXVldWVfc3VibWl0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHN0cnVjdCB2YzRfZXhlY19pbmZvICpleGVjLAorCQkgc3RydWN0IHd3 X2FjcXVpcmVfY3R4ICphY3F1aXJlX2N0eCkKIHsKIAlzdHJ1Y3QgdmM0X2RldiAqdmM0ID0gdG9f dmM0X2RldihkZXYpOwogCXVpbnQ2NF90IHNlcW5vOwogCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7 CisJc3RydWN0IHZjNF9mZW5jZSAqZmVuY2U7CisKKwlmZW5jZSA9IGt6YWxsb2Moc2l6ZW9mKCpm ZW5jZSksIEdGUF9LRVJORUwpOworCWlmICghZmVuY2UpCisJCXJldHVybiAtRU5PTUVNOworCWZl bmNlLT5kZXYgPSBkZXY7CiAKIAlzcGluX2xvY2tfaXJxc2F2ZSgmdmM0LT5qb2JfbG9jaywgaXJx ZmxhZ3MpOwogCiAJc2Vxbm8gPSArK3ZjNC0+ZW1pdF9zZXFubzsKIAlleGVjLT5zZXFubyA9IHNl cW5vOworCisJZG1hX2ZlbmNlX2luaXQoJmZlbmNlLT5iYXNlLCAmdmM0X2ZlbmNlX29wcywgJnZj NC0+am9iX2xvY2ssCisJCSAgICAgICB2YzQtPmRtYV9mZW5jZV9jb250ZXh0LCBleGVjLT5zZXFu byk7CisJZmVuY2UtPnNlcW5vID0gZXhlYy0+c2Vxbm87CisJZXhlYy0+ZmVuY2UgPSAmZmVuY2Ut PmJhc2U7CisKIAl2YzRfdXBkYXRlX2JvX3NlcW5vcyhleGVjLCBzZXFubyk7CiAKKwl2YzRfdW5s b2NrX2JvX3Jlc2VydmF0aW9ucyhkZXYsIGV4ZWMsIGFjcXVpcmVfY3R4KTsKKwogCWxpc3RfYWRk X3RhaWwoJmV4ZWMtPmhlYWQsICZ2YzQtPmJpbl9qb2JfbGlzdCk7CiAKIAkvKiBJZiBubyBqb2Ig d2FzIGV4ZWN1dGluZywga2ljayBvdXJzIG9mZi4gIE90aGVyd2lzZSwgaXQnbGwKQEAgLTUwOSw2 ICs2MjIsOCBAQCB2YzRfcXVldWVfc3VibWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVj dCB2YzRfZXhlY19pbmZvICpleGVjKQogCX0KIAogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnZj NC0+am9iX2xvY2ssIGlycWZsYWdzKTsKKworCXJldHVybiAwOwogfQogCiAvKioKQEAgLTcwNyw2 ICs4MjIsMTIgQEAgdmM0X2NvbXBsZXRlX2V4ZWMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3Ry dWN0IHZjNF9leGVjX2luZm8gKmV4ZWMpCiAJc3RydWN0IHZjNF9kZXYgKnZjNCA9IHRvX3ZjNF9k ZXYoZGV2KTsKIAl1bnNpZ25lZCBpOwogCisJLyogSWYgd2UgZ290IGZvcmNlLWNvbXBsZXRlZCBi ZWNhdXNlIG9mIEdQVSByZXNldCByYXRoZXIgdGhhbgorCSAqIHRocm91Z2ggb3VyIElSUSBoYW5k bGVyLCBzaWduYWwgdGhlIGZlbmNlIG5vdy4KKwkgKi8KKwlpZiAoZXhlYy0+ZmVuY2UpCisJCWRt YV9mZW5jZV9zaWduYWwoZXhlYy0+ZmVuY2UpOworCiAJaWYgKGV4ZWMtPmJvKSB7CiAJCWZvciAo aSA9IDA7IGkgPCBleGVjLT5ib19jb3VudDsgaSsrKQogCQkJZHJtX2dlbV9vYmplY3RfdW5yZWZl cmVuY2VfdW5sb2NrZWQoJmV4ZWMtPmJvW2ldLT5iYXNlKTsKQEAgLTg3NCw2ICs5OTUsNyBAQCB2 YzRfc3VibWl0X2NsX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJ c3RydWN0IHZjNF9kZXYgKnZjNCA9IHRvX3ZjNF9kZXYoZGV2KTsKIAlzdHJ1Y3QgZHJtX3ZjNF9z dWJtaXRfY2wgKmFyZ3MgPSBkYXRhOwogCXN0cnVjdCB2YzRfZXhlY19pbmZvICpleGVjOworCXN0 cnVjdCB3d19hY3F1aXJlX2N0eCBhY3F1aXJlX2N0eDsKIAlpbnQgcmV0ID0gMDsKIAogCWlmICgo YXJncy0+ZmxhZ3MgJiB+VkM0X1NVQk1JVF9DTF9VU0VfQ0xFQVJfQ09MT1IpICE9IDApIHsKQEAg LTkxNiwxMiArMTAzOCwxOCBAQCB2YzRfc3VibWl0X2NsX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHZvaWQgKmRhdGEsCiAJaWYgKHJldCkKIAkJZ290byBmYWlsOwogCisJcmV0ID0gdmM0 X2xvY2tfYm9fcmVzZXJ2YXRpb25zKGRldiwgZXhlYywgJmFjcXVpcmVfY3R4KTsKKwlpZiAocmV0 KQorCQlnb3RvIGZhaWw7CisKIAkvKiBDbGVhciB0aGlzIG91dCBvZiB0aGUgc3RydWN0IHdlJ2xs IGJlIHB1dHRpbmcgaW4gdGhlIHF1ZXVlLAogCSAqIHNpbmNlIGl0J3MgcGFydCBvZiBvdXIgc3Rh Y2suCiAJICovCiAJZXhlYy0+YXJncyA9IE5VTEw7CiAKLQl2YzRfcXVldWVfc3VibWl0KGRldiwg ZXhlYyk7CisJcmV0ID0gdmM0X3F1ZXVlX3N1Ym1pdChkZXYsIGV4ZWMsICZhY3F1aXJlX2N0eCk7 CisJaWYgKHJldCkKKwkJZ290byBmYWlsOwogCiAJLyogUmV0dXJuIHRoZSBzZXFubyBmb3Igb3Vy IGpvYi4gKi8KIAlhcmdzLT5zZXFubyA9IHZjNC0+ZW1pdF9zZXFubzsKQEAgLTkzOSw2ICsxMDY3 LDggQEAgdmM0X2dlbV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IHZj NF9kZXYgKnZjNCA9IHRvX3ZjNF9kZXYoZGV2KTsKIAorCXZjNC0+ZG1hX2ZlbmNlX2NvbnRleHQg PSBkbWFfZmVuY2VfY29udGV4dF9hbGxvYygxKTsKKwogCUlOSVRfTElTVF9IRUFEKCZ2YzQtPmJp bl9qb2JfbGlzdCk7CiAJSU5JVF9MSVNUX0hFQUQoJnZjNC0+cmVuZGVyX2pvYl9saXN0KTsKIAlJ TklUX0xJU1RfSEVBRCgmdmM0LT5qb2JfZG9uZV9saXN0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS92YzQvdmM0X2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfaXJxLmMKaW5k ZXggY2RjNmU2NzYwNzA1Li4xMzg0YWY5ZmM5ODcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS92YzQvdmM0X2lycS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2lycS5jCkBAIC0x NDIsNiArMTQyLDEwIEBAIHZjNF9pcnFfZmluaXNoX3JlbmRlcl9qb2Ioc3RydWN0IGRybV9kZXZp Y2UgKmRldikKIAogCXZjNC0+ZmluaXNoZWRfc2Vxbm8rKzsKIAlsaXN0X21vdmVfdGFpbCgmZXhl Yy0+aGVhZCwgJnZjNC0+am9iX2RvbmVfbGlzdCk7CisJaWYgKGV4ZWMtPmZlbmNlKSB7CisJCWRt YV9mZW5jZV9zaWduYWxfbG9ja2VkKGV4ZWMtPmZlbmNlKTsKKwkJZXhlYy0+ZmVuY2UgPSBOVUxM OworCX0KIAl2YzRfc3VibWl0X25leHRfcmVuZGVyX2pvYihkZXYpOwogCiAJd2FrZV91cF9hbGwo JnZjNC0+am9iX3dhaXRfcXVldWUpOwotLSAKMi4xMS4wCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9kcmktZGV2ZWwK