From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gustavo Padovan Subject: [PATCH v10 3/3] drm/fence: add out-fences support Date: Mon, 14 Nov 2016 10:59:56 +0900 Message-ID: <1479088796-3809-4-git-send-email-gustavo@padovan.org> References: <1479088796-3809-1-git-send-email-gustavo@padovan.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pg0-f65.google.com (mail-pg0-f65.google.com [74.125.83.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id BBC336E316 for ; Mon, 14 Nov 2016 02:00:19 +0000 (UTC) Received: by mail-pg0-f65.google.com with SMTP id x23so7579919pgx.3 for ; Sun, 13 Nov 2016 18:00:19 -0800 (PST) In-Reply-To: <1479088796-3809-1-git-send-email-gustavo@padovan.org> 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: marcheu@google.com, Daniel Stone , seanpaul@google.com, Daniel Vetter , linux-kernel@vger.kernel.org, laurent.pinchart@ideasonboard.com, Gustavo Padovan , John Harrison , m.chehab@samsung.com List-Id: dri-devel@lists.freedesktop.org RnJvbTogR3VzdGF2byBQYWRvdmFuIDxndXN0YXZvLnBhZG92YW5AY29sbGFib3JhLmNvLnVrPgoK U3VwcG9ydCBEUk0gb3V0LWZlbmNlcyBieSBjcmVhdGluZyBhIHN5bmNfZmlsZSB3aXRoIGEgZmVu Y2UgZm9yIGVhY2ggQ1JUQwp0aGF0IHNldHMgdGhlIE9VVF9GRU5DRV9QVFIgcHJvcGVydHkuCgpX ZSB1c2UgdGhlIG91dF9mZW5jZSBwb2ludGVyIHJlY2VpdmVkIGluIHRoZSBPVVRfRkVOQ0VfUFRS IHByb3AgdG8gc2VuZAp0aGUgc3luY19maWxlIGZkIGJhY2sgdG8gdXNlcnNwYWNlLgoKVGhlIHN5 bmNfZmlsZSBhbmQgZmQgYXJlIGFsbG9jYXRlZC9jcmVhdGVkIGJlZm9yZSBjb21taXQsIGJ1dCB0 aGUKZmRfaW5zdGFsbCBvcGVyYXRpb24gb25seSBoYXBwZW5zIGFmdGVyIHdlIGtub3cgdGhhdCBj b21taXQgc3VjY2VlZC4KCnYyOiBDb21tZW50IGJ5IFJvYiBDbGFyazoKCS0gU3F1YXNoIGNvbW1p dCB0aGF0IGFkZHMgRFJNX01PREVfQVRPTUlDX09VVF9GRU5DRSBmbGFnIGhlcmUuCgogICAgQ29t bWVudCBieSBEYW5pZWwgVmV0dGVyOgoJLSBBZGQgY2xlYW4gdXAgY29kZSBmb3Igb3V0X2ZlbmNl cwoKdjM6IENvbW1lbnRzIGJ5IERhbmllbCBWZXR0ZXI6CgktIGNyZWF0ZSBEUk1fTU9ERV9BVE9N SUNfRVZFTlRfTUFTSwoJLSB1c2Vyc3BhY2Ugc2hvdWxkIGZpbGwgb3V0X2ZlbmNlc19wdHIgd2l0 aCB0aGUgY3J0Y19pZHMgZm9yIHdoaWNoCglpdCB3YW50cyBmZW5jZXMgYmFjay4KCnY0OiBDcmVh dGUgT1VUX0ZFTkNFX1BUUiBwcm9wZXJ0aWVzIGFuZCByZW1vdmUgb2xkIGFwcHJvYWNoLgoKdjU6 IENvbW1lbnRzIGJ5IEJyaWFuIFN0YXJrZXk6CgktIFJlbW92ZSBleHRyYSBmZW5jZV9nZXQoKSBp biBhdG9taWNfaW9jdGwoKQoJLSBDaGVjayByZXQgYmVmb3JlIGl0ZXJhdGluZyBvbiB0aGUgY3J0 Y19zdGF0ZQoJLSBjaGVjayByZXQgYmVmb3JlIGZkX2luc3RhbGwKCS0gc2V0IGZlbmNlX3N0YXRl IHRvIE5VTEwgYXQgdGhlIGJlZ2lubmluZwoJLSBjaGVjayBmZW5jZV9zdGF0ZS0+b3V0X2ZlbmNl X3B0ciBiZWZvcmUgcHV0X3VzZXIoKQoJLSBjaGFuZ2Ugb3JkZXIgb2YgZnB1dCgpIGFuZCBwdXRf dW51c2VkX2ZkKCkgb24gZmFpbHVyZQoKICAgICAtIEFkZCBhY2Nlc3Nfb2soKSBjaGVjayB0byB0 aGUgb3V0X2ZlbmNlX3B0ciByZWNlaXZlZAogICAgIC0gUmViYXNlIGFmdGVyIGZlbmNlIC0+IGRt YV9mZW5jZSByZW5hbWUKICAgICAtIFN0b3JlIG91dF9mZW5jZV9wdHIgaW4gdGhlIGRybV9hdG9t aWNfc3RhdGUKICAgICAtIFNwbGl0IGNydGNfc2V0dXBfb3V0X2ZlbmNlKCkKICAgICAtIHJldHVy biAtMSBhcyBvdXRfZmVuY2Ugd2l0aCBURVNUX09OTFkgZmxhZwoKdjY6IENvbW1lbnRzIGJ5IERh bmllbCBWZXR0ZXIKCS0gQWRkIHByZXBhcmUvdW5wcmVwYXJlX2NydGNfc2lnbmFsaW5nKCkKCS0g bW92ZSBzdHJ1Y3QgZHJtX291dF9mZW5jZV9zdGF0ZSB0byBkcm1fYXRvbWljLmMKCS0gbWFyayBn ZXRfY3J0Y19mZW5jZSgpIGFzIHN0YXRpYwoKICAgIENvbW1lbnRzIGJ5IEJyaWFuIFN0YXJrZXkK CS0gcHJvcGVyIHNldCBmZW5jZV9wdHIgZmVuY2Vfc3RhdGUgYXJyYXkKCS0gaXNvbGF0ZSBmZW5j ZV9pZHggaW5jcmVtZW50CgogICAgLSBpbXByb3ZlIGVycm9yIGhhbmRsaW5nCgp2NzogQ29tbWVu dHMgYnkgRGFuaWVsIFZldHRlcgoJLSByZW1vdmUgcHJlZml4IGZyb20gaW50ZXJuYWwgZnVuY3Rp b25zCgktIG1ha2Ugb3V0X2ZlbmNlX3B0ciBhbiBzNjQgcG9pbnRlcgoJLSBkZWdyYWRlIERSTV9J TkZPIHRvIERSTV9ERUJVR19BVE9NSUMgd2hlbiBwdXRfdXNlciBmYWlsCgktIGZpeCBkb2MgaXNz dWVzCgktIGZpbHRlciBvdXQgT1VUX0ZFTkNFX1BUUiA9PSBOVUxMIGFuZCBkbyBub3QgZmFpbCBp biB0aGlzIGNhc2UKCS0gYWRkIGNvbXBsZXRlX2NydGNfc2lnbmFsbGluZygpCgktIGtyZWFsbG9j IGZlbmNlX3N0YXRlIG9uIGRlbWFuZAoKICAgIENvbW1lbnQgYnkgQnJpYW4gU3RhcmtleQoJLSBy ZW1vdmUgdW51c2VkIGNydGNfc3RhdGUgYXJnIGZyb20gZ2V0X291dF9mZW5jZSgpCgp2ODogQ29t bWVudCBieSBCcmlhbiBTdGFya2V5CgktIGNhbmNlbCBldmVudHMgYmVmb3JlIGNoZWNrIGZvciAh ZmVuY2Vfc3RhdGUKCS0gY29udmVydCBhIGZldyBsZWZvdmVycyB1NjQgdHlwZXMgZm9yIG91dF9m ZW5jZV9wdHIKCS0gZml4IG1lbWxlYWsgYnkgYXNzaWduIGZlbmNlX3N0YXRlIGVhcmxpZXIgYWZ0 ZXIgcmVhbGxvYwoJLSBwcm9wZXIgYWNjb3V0IG51bV9mZW5jZXMgaW4gY2FzZSBvZiBlcnJvcgoK djk6IENvbW1lbnQgYnkgQnJpYW4gU3RhcmtleQoJLSBtZW1zZXQgbGFzdCBwb3NpdGlvbiBvZiBm ZW5jZV9zdGF0ZSBhZnRlciBrcmVhbGxvYwogICAgQ29tbWVudHMgYnkgU2VhbiBQYXVsCgktIHBh c3MgaW5zdGFsbF9mZHMgaW4gY29tcGxldGVfY3J0Y19zaWduYWxpbmcoKSBpbnN0ZWFkIG9mIHJl dAoKICAgICAtIHB1dF91c2VyKC0xLCBmZW5jZV9wdHIpIHdoZW4gZGVjb2RpbmcgcHJvcHMKClNp Z25lZC1vZmYtYnk6IEd1c3Rhdm8gUGFkb3ZhbiA8Z3VzdGF2by5wYWRvdmFuQGNvbGxhYm9yYS5j by51az4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jIHwgMjQxICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9kcm1fY3J0 Yy5jICAgfCAgIDggKysKIGluY2x1ZGUvZHJtL2RybV9hdG9taWMuaCAgICAgfCAgIDEgKwogaW5j bHVkZS9kcm0vZHJtX2NydGMuaCAgICAgICB8ICAgNiArKwogNCBmaWxlcyBjaGFuZ2VkLCAyMTEg aW5zZXJ0aW9ucygrKSwgNDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2RybV9hdG9taWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKaW5kZXggM2Fk NzgwYS4uMjdlNWMwYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jCkBAIC0yOTAsNiArMjkwLDIzIEBAIGRy bV9hdG9taWNfZ2V0X2NydGNfc3RhdGUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAog fQogRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2dldF9jcnRjX3N0YXRlKTsKIAorc3RhdGljIHZv aWQgc2V0X291dF9mZW5jZV9mb3JfY3J0YyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUs CisJCQkJICAgc3RydWN0IGRybV9jcnRjICpjcnRjLCBzNjQgX191c2VyICpmZW5jZV9wdHIpCit7 CisJc3RhdGUtPmNydGNzW2RybV9jcnRjX2luZGV4KGNydGMpXS5vdXRfZmVuY2VfcHRyID0gZmVu Y2VfcHRyOworfQorCitzdGF0aWMgczY0IF9fdXNlciAqIGdldF9vdXRfZmVuY2VfZm9yX2NydGMo c3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAorCQkJCQkgICBzdHJ1Y3QgZHJtX2NydGMg KmNydGMpCit7CisJczY0IF9fdXNlciAqZmVuY2VfcHRyOworCisJZmVuY2VfcHRyID0gc3RhdGUt PmNydGNzW2RybV9jcnRjX2luZGV4KGNydGMpXS5vdXRfZmVuY2VfcHRyOworCXN0YXRlLT5jcnRj c1tkcm1fY3J0Y19pbmRleChjcnRjKV0ub3V0X2ZlbmNlX3B0ciA9IE5VTEw7CisKKwlyZXR1cm4g ZmVuY2VfcHRyOworfQorCiAvKioKICAqIGRybV9hdG9taWNfc2V0X21vZGVfZm9yX2NydGMgLSBz ZXQgbW9kZSBmb3IgQ1JUQwogICogQHN0YXRlOiB0aGUgQ1JUQyB3aG9zZSBpbmNvbWluZyBzdGF0 ZSB0byB1cGRhdGUKQEAgLTQ5NCw2ICs1MTEsMTYgQEAgaW50IGRybV9hdG9taWNfY3J0Y19zZXRf cHJvcGVydHkoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQkJCQkmcmVwbGFjZWQpOwogCQlzdGF0 ZS0+Y29sb3JfbWdtdF9jaGFuZ2VkIHw9IHJlcGxhY2VkOwogCQlyZXR1cm4gcmV0OworCX0gZWxz ZSBpZiAocHJvcGVydHkgPT0gY29uZmlnLT5wcm9wX291dF9mZW5jZV9wdHIpIHsKKwkJczY0IF9f dXNlciAqZmVuY2VfcHRyID0gdTY0X3RvX3VzZXJfcHRyKHZhbCk7CisKKwkJaWYgKCFmZW5jZV9w dHIpCisJCQlyZXR1cm4gMDsKKworCQlpZiAocHV0X3VzZXIoLTEsIGZlbmNlX3B0cikpCisJCQly ZXR1cm4gLUVGQVVMVDsKKworCQlzZXRfb3V0X2ZlbmNlX2Zvcl9jcnRjKHN0YXRlLT5zdGF0ZSwg Y3J0YywgZmVuY2VfcHRyKTsKIAl9IGVsc2UgaWYgKGNydGMtPmZ1bmNzLT5hdG9taWNfc2V0X3By b3BlcnR5KQogCQlyZXR1cm4gY3J0Yy0+ZnVuY3MtPmF0b21pY19zZXRfcHJvcGVydHkoY3J0Yywg c3RhdGUsIHByb3BlcnR5LCB2YWwpOwogCWVsc2UKQEAgLTUzNiw2ICs1NjMsOCBAQCBkcm1fYXRv bWljX2NydGNfZ2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJKnZhbCA9IChz dGF0ZS0+Y3RtKSA/IHN0YXRlLT5jdG0tPmJhc2UuaWQgOiAwOwogCWVsc2UgaWYgKHByb3BlcnR5 ID09IGNvbmZpZy0+Z2FtbWFfbHV0X3Byb3BlcnR5KQogCQkqdmFsID0gKHN0YXRlLT5nYW1tYV9s dXQpID8gc3RhdGUtPmdhbW1hX2x1dC0+YmFzZS5pZCA6IDA7CisJZWxzZSBpZiAocHJvcGVydHkg PT0gY29uZmlnLT5wcm9wX291dF9mZW5jZV9wdHIpCisJCSp2YWwgPSAwOwogCWVsc2UgaWYgKGNy dGMtPmZ1bmNzLT5hdG9taWNfZ2V0X3Byb3BlcnR5KQogCQlyZXR1cm4gY3J0Yy0+ZnVuY3MtPmF0 b21pY19nZXRfcHJvcGVydHkoY3J0Yywgc3RhdGUsIHByb3BlcnR5LCB2YWwpOwogCWVsc2UKQEAg LTE2NjQsMTEgKzE2OTMsOSBAQCBpbnQgZHJtX2F0b21pY19kZWJ1Z2ZzX2luaXQoc3RydWN0IGRy bV9taW5vciAqbWlub3IpCiAgKi8KIAogc3RhdGljIHN0cnVjdCBkcm1fcGVuZGluZ192Ymxhbmtf ZXZlbnQgKmNyZWF0ZV92YmxhbmtfZXZlbnQoCi0JCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0 cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2LAotCQlzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSwgdWlu dDY0X3QgdXNlcl9kYXRhKQorCQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1aW50NjRfdCB1c2Vy X2RhdGEpCiB7CiAJc3RydWN0IGRybV9wZW5kaW5nX3ZibGFua19ldmVudCAqZSA9IE5VTEw7Ci0J aW50IHJldDsKIAogCWUgPSBremFsbG9jKHNpemVvZiAqZSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFl KQpAQCAtMTY3OCwxNyArMTcwNSw2IEBAIHN0YXRpYyBzdHJ1Y3QgZHJtX3BlbmRpbmdfdmJsYW5r X2V2ZW50ICpjcmVhdGVfdmJsYW5rX2V2ZW50KAogCWUtPmV2ZW50LmJhc2UubGVuZ3RoID0gc2l6 ZW9mKGUtPmV2ZW50KTsKIAllLT5ldmVudC51c2VyX2RhdGEgPSB1c2VyX2RhdGE7CiAKLQlpZiAo ZmlsZV9wcml2KSB7Ci0JCXJldCA9IGRybV9ldmVudF9yZXNlcnZlX2luaXQoZGV2LCBmaWxlX3By aXYsICZlLT5iYXNlLAotCQkJCQkgICAgICZlLT5ldmVudC5iYXNlKTsKLQkJaWYgKHJldCkgewot CQkJa2ZyZWUoZSk7Ci0JCQlyZXR1cm4gTlVMTDsKLQkJfQotCX0KLQotCWUtPmJhc2UuZmVuY2Ug PSBmZW5jZTsKLQogCXJldHVybiBlOwogfQogCkBAIC0xNzkzLDYgKzE4MDksMTY1IEBAIHZvaWQg ZHJtX2F0b21pY19jbGVhbl9vbGRfZmIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIH0KIEVYUE9S VF9TWU1CT0woZHJtX2F0b21pY19jbGVhbl9vbGRfZmIpOwogCitzdGF0aWMgc3RydWN0IGRtYV9m ZW5jZSAqZ2V0X2NydGNfZmVuY2Uoc3RydWN0IGRybV9jcnRjICpjcnRjKQoreworCXN0cnVjdCBk bWFfZmVuY2UgKmZlbmNlOworCisJZmVuY2UgPSBremFsbG9jKHNpemVvZigqZmVuY2UpLCBHRlBf S0VSTkVMKTsKKwlpZiAoIWZlbmNlKQorCQlyZXR1cm4gTlVMTDsKKworCWRtYV9mZW5jZV9pbml0 KGZlbmNlLCAmZHJtX2NydGNfZmVuY2Vfb3BzLCAmY3J0Yy0+ZmVuY2VfbG9jaywKKwkJICAgICAg IGNydGMtPmZlbmNlX2NvbnRleHQsICsrY3J0Yy0+ZmVuY2Vfc2Vxbm8pOworCisJcmV0dXJuIGZl bmNlOworfQorCitzdHJ1Y3QgZHJtX291dF9mZW5jZV9zdGF0ZSB7CisJczY0IF9fdXNlciAqb3V0 X2ZlbmNlX3B0cjsKKwlzdHJ1Y3Qgc3luY19maWxlICpzeW5jX2ZpbGU7CisJaW50IGZkOworfTsK Kworc3RhdGljIGludCBzZXR1cF9vdXRfZmVuY2Uoc3RydWN0IGRybV9vdXRfZmVuY2Vfc3RhdGUg KmZlbmNlX3N0YXRlLAorCQkJICAgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpCit7CisJZmVuY2Vf c3RhdGUtPmZkID0gZ2V0X3VudXNlZF9mZF9mbGFncyhPX0NMT0VYRUMpOworCWlmIChmZW5jZV9z dGF0ZS0+ZmQgPCAwKQorCQlyZXR1cm4gZmVuY2Vfc3RhdGUtPmZkOworCisJaWYgKHB1dF91c2Vy KGZlbmNlX3N0YXRlLT5mZCwgZmVuY2Vfc3RhdGUtPm91dF9mZW5jZV9wdHIpKQorCQlyZXR1cm4g LUVGQVVMVDsKKworCWZlbmNlX3N0YXRlLT5zeW5jX2ZpbGUgPSBzeW5jX2ZpbGVfY3JlYXRlKGZl bmNlKTsKKwlpZighZmVuY2Vfc3RhdGUtPnN5bmNfZmlsZSkKKwkJcmV0dXJuIC1FTk9NRU07CisK KwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBwcmVwYXJlX2NydGNfc2lnbmFsaW5nKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCisJCQkJICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUs CisJCQkJICBzdHJ1Y3QgZHJtX21vZGVfYXRvbWljICphcmcsCisJCQkJICBzdHJ1Y3QgZHJtX2Zp bGUgKmZpbGVfcHJpdiwKKwkJCQkgIHN0cnVjdCBkcm1fb3V0X2ZlbmNlX3N0YXRlICoqZmVuY2Vf c3RhdGUsCisJCQkJICB1bnNpZ25lZCBpbnQgKm51bV9mZW5jZXMpCit7CisJc3RydWN0IGRybV9j cnRjICpjcnRjOworCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKKwlpbnQgaSwg cmV0OworCisJaWYgKGFyZy0+ZmxhZ3MgJiBEUk1fTU9ERV9BVE9NSUNfVEVTVF9PTkxZKQorCQly ZXR1cm4gMDsKKworCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3Rh dGUsIGkpIHsKKwkJdTY0IF9fdXNlciAqZmVuY2VfcHRyOworCisJCWZlbmNlX3B0ciA9IGdldF9v dXRfZmVuY2VfZm9yX2NydGMoY3J0Y19zdGF0ZS0+c3RhdGUsIGNydGMpOworCisJCWlmIChhcmct PmZsYWdzICYgRFJNX01PREVfUEFHRV9GTElQX0VWRU5UIHx8IGZlbmNlX3B0cikgeworCQkJc3Ry dWN0IGRybV9wZW5kaW5nX3ZibGFua19ldmVudCAqZTsKKworCQkJZSA9IGNyZWF0ZV92Ymxhbmtf ZXZlbnQoZGV2LCBhcmctPnVzZXJfZGF0YSk7CisJCQlpZiAoIWUpCisJCQkJcmV0dXJuIC1FTk9N RU07CisKKwkJCWNydGNfc3RhdGUtPmV2ZW50ID0gZTsKKwkJfQorCisJCWlmIChhcmctPmZsYWdz ICYgRFJNX01PREVfUEFHRV9GTElQX0VWRU5UKSB7CisJCQlzdHJ1Y3QgZHJtX3BlbmRpbmdfdmJs YW5rX2V2ZW50ICplID0gY3J0Y19zdGF0ZS0+ZXZlbnQ7CisKKwkJCWlmICghZmlsZV9wcml2KQor CQkJCWNvbnRpbnVlOworCisJCQlyZXQgPSBkcm1fZXZlbnRfcmVzZXJ2ZV9pbml0KGRldiwgZmls ZV9wcml2LCAmZS0+YmFzZSwKKwkJCQkJCSAgICAgJmUtPmV2ZW50LmJhc2UpOworCQkJaWYgKHJl dCkgeworCQkJCWtmcmVlKGUpOworCQkJCWNydGNfc3RhdGUtPmV2ZW50ID0gTlVMTDsKKwkJCQly ZXR1cm4gcmV0OworCQkJfQorCQl9CisKKwkJaWYgKGZlbmNlX3B0cikgeworCQkJc3RydWN0IGRt YV9mZW5jZSAqZmVuY2U7CisJCQlzdHJ1Y3QgZHJtX291dF9mZW5jZV9zdGF0ZSAqZjsKKworCQkJ ZiA9IGtyZWFsbG9jKCpmZW5jZV9zdGF0ZSwgc2l6ZW9mKCoqZmVuY2Vfc3RhdGUpICoKKwkJCQkg ICAgICgqbnVtX2ZlbmNlcyArIDEpLCBHRlBfS0VSTkVMKTsKKwkJCWlmICghZikKKwkJCQlyZXR1 cm4gLUVOT01FTTsKKworCQkJbWVtc2V0KCZmWypudW1fZmVuY2VzXSwgMCwgc2l6ZW9mKCpmKSk7 CisKKwkJCWZbKm51bV9mZW5jZXNdLm91dF9mZW5jZV9wdHIgPSBmZW5jZV9wdHI7CisJCQkqZmVu Y2Vfc3RhdGUgPSBmOworCisJCQlmZW5jZSA9IGdldF9jcnRjX2ZlbmNlKGNydGMpOworCQkJaWYg KCFmZW5jZSkgeworCQkJCSgqbnVtX2ZlbmNlcykrKzsKKwkJCQlyZXR1cm4gLUVOT01FTTsKKwkJ CX0KKworCQkJcmV0ID0gc2V0dXBfb3V0X2ZlbmNlKCZmWygqbnVtX2ZlbmNlcykrK10sIGZlbmNl KTsKKwkJCWlmIChyZXQpIHsKKwkJCQlkbWFfZmVuY2VfcHV0KGZlbmNlKTsKKwkJCQlyZXR1cm4g cmV0OworCQkJfQorCisJCQljcnRjX3N0YXRlLT5ldmVudC0+YmFzZS5mZW5jZSA9IGZlbmNlOwor CQl9CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGNvbXBsZXRlX2NydGNfc2ln bmFsaW5nKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCisJCQkJICAgICBzdHJ1Y3QgZHJtX2F0b21p Y19zdGF0ZSAqc3RhdGUsCisJCQkJICAgICBzdHJ1Y3QgZHJtX291dF9mZW5jZV9zdGF0ZSAqZmVu Y2Vfc3RhdGUsCisJCQkJICAgICB1bnNpZ25lZCBpbnQgbnVtX2ZlbmNlcywKKwkJCQkgICAgIGJv b2wgaW5zdGFsbF9mZHMpCit7CisJc3RydWN0IGRybV9jcnRjICpjcnRjOworCXN0cnVjdCBkcm1f Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKKwlpbnQgaTsKKworCWlmIChpbnN0YWxsX2Zkcykgewor CQlmb3IgKGkgPSAwOyBpIDwgbnVtX2ZlbmNlczsgaSsrKQorCQkJZmRfaW5zdGFsbChmZW5jZV9z dGF0ZVtpXS5mZCwKKwkJCQkgICBmZW5jZV9zdGF0ZVtpXS5zeW5jX2ZpbGUtPmZpbGUpOworCQly ZXR1cm47CisJfQorCisJZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19z dGF0ZSwgaSkgeworCQkvKgorCQkgKiBURVNUX09OTFkgYW5kIFBBR0VfRkxJUF9FVkVOVCBhcmUg bXV0dWFsbHkKKwkJICogZXhjbHVzaXZlLCBpZiB0aGV5IHdlcmVuJ3QsIHRoaXMgY29kZSBzaG91 bGQgYmUKKwkJICogY2FsbGVkIG9uIHN1Y2Nlc3MgZm9yIFRFU1RfT05MWSB0b28uCisJCSAqLwor CQlpZiAoY3J0Y19zdGF0ZS0+ZXZlbnQpCisJCQlkcm1fZXZlbnRfY2FuY2VsX2ZyZWUoZGV2LCAm Y3J0Y19zdGF0ZS0+ZXZlbnQtPmJhc2UpOworCX0KKworCWlmICghZmVuY2Vfc3RhdGUpCisJCXJl dHVybjsKKworCWZvciAoaSA9IDA7IGkgPCBudW1fZmVuY2VzOyBpKyspIHsKKwkJaWYgKGZlbmNl X3N0YXRlW2ldLnN5bmNfZmlsZSkKKwkJCWZwdXQoZmVuY2Vfc3RhdGVbaV0uc3luY19maWxlLT5m aWxlKTsKKwkJaWYgKGZlbmNlX3N0YXRlW2ldLmZkID49IDApCisJCQlwdXRfdW51c2VkX2ZkKGZl bmNlX3N0YXRlW2ldLmZkKTsKKworCQkvKiBJZiB0aGlzIGZhaWxzIGxvZyBlcnJvciB0byB0aGUg dXNlciAqLworCQlpZiAoZmVuY2Vfc3RhdGVbaV0ub3V0X2ZlbmNlX3B0ciAmJgorCQkgICAgcHV0 X3VzZXIoLTEsIGZlbmNlX3N0YXRlW2ldLm91dF9mZW5jZV9wdHIpKQorCQkJRFJNX0RFQlVHX0FU T01JQygiQ291bGRuJ3QgY2xlYXIgb3V0X2ZlbmNlX3B0clxuIik7CisJfQorCisJa2ZyZWUoZmVu Y2Vfc3RhdGUpOworfQorCiBpbnQgZHJtX21vZGVfYXRvbWljX2lvY3RsKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCiAJCQkgIHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KQog ewpAQCAtMTgwNSwxMSArMTk4MCwxMCBAQCBpbnQgZHJtX21vZGVfYXRvbWljX2lvY3RsKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCiAJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlOwogCXN0 cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCBjdHg7CiAJc3RydWN0IGRybV9wbGFuZSAqcGxh bmU7Ci0Jc3RydWN0IGRybV9jcnRjICpjcnRjOwotCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZTsKKwlzdHJ1Y3QgZHJtX291dF9mZW5jZV9zdGF0ZSAqZmVuY2Vfc3RhdGUgPSBOVUxM OwogCXVuc2lnbmVkIHBsYW5lX21hc2s7CiAJaW50IHJldCA9IDA7Ci0JdW5zaWduZWQgaW50IGks IGo7CisJdW5zaWduZWQgaW50IGksIGosIG51bV9mZW5jZXMgPSAwOwogCiAJLyogZGlzYWxsb3cg Zm9yIGRyaXZlcnMgbm90IHN1cHBvcnRpbmcgYXRvbWljOiAqLwogCWlmICghZHJtX2NvcmVfY2hl Y2tfZmVhdHVyZShkZXYsIERSSVZFUl9BVE9NSUMpKQpAQCAtMTkyNCwyMCArMjA5OCwxMCBAQCBp bnQgZHJtX21vZGVfYXRvbWljX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCWRybV9t b2RlX29iamVjdF91bnJlZmVyZW5jZShvYmopOwogCX0KIAotCWlmIChhcmctPmZsYWdzICYgRFJN X01PREVfUEFHRV9GTElQX0VWRU5UKSB7Ci0JCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUoc3RhdGUs IGNydGMsIGNydGNfc3RhdGUsIGkpIHsKLQkJCXN0cnVjdCBkcm1fcGVuZGluZ192YmxhbmtfZXZl bnQgKmU7Ci0KLQkJCWUgPSBjcmVhdGVfdmJsYW5rX2V2ZW50KGRldiwgZmlsZV9wcml2LCBOVUxM LAotCQkJCQkJYXJnLT51c2VyX2RhdGEpOwotCQkJaWYgKCFlKSB7Ci0JCQkJcmV0ID0gLUVOT01F TTsKLQkJCQlnb3RvIG91dDsKLQkJCX0KLQotCQkJY3J0Y19zdGF0ZS0+ZXZlbnQgPSBlOwotCQl9 Ci0JfQorCXJldCA9IHByZXBhcmVfY3J0Y19zaWduYWxpbmcoZGV2LCBzdGF0ZSwgYXJnLCBmaWxl X3ByaXYsICZmZW5jZV9zdGF0ZSwKKwkJCQkgICAgICZudW1fZmVuY2VzKTsKKwlpZiAocmV0KQor CQlnb3RvIG91dDsKIAogCWlmIChhcmctPmZsYWdzICYgRFJNX01PREVfQVRPTUlDX1RFU1RfT05M WSkgewogCQkvKgpAQCAtMTk1NywyMCArMjEyMSw3IEBAIGludCBkcm1fbW9kZV9hdG9taWNfaW9j dGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIG91dDoKIAlkcm1fYXRvbWljX2NsZWFuX29sZF9m YihkZXYsIHBsYW5lX21hc2ssIHJldCk7CiAKLQlpZiAocmV0ICYmIGFyZy0+ZmxhZ3MgJiBEUk1f TU9ERV9QQUdFX0ZMSVBfRVZFTlQpIHsKLQkJLyoKLQkJICogVEVTVF9PTkxZIGFuZCBQQUdFX0ZM SVBfRVZFTlQgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSwKLQkJICogaWYgdGhleSB3ZXJlbid0LCB0 aGlzIGNvZGUgc2hvdWxkIGJlIGNhbGxlZCBvbiBzdWNjZXNzCi0JCSAqIGZvciBURVNUX09OTFkg dG9vLgotCQkgKi8KLQotCQlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRj X3N0YXRlLCBpKSB7Ci0JCQlpZiAoIWNydGNfc3RhdGUtPmV2ZW50KQotCQkJCWNvbnRpbnVlOwot Ci0JCQlkcm1fZXZlbnRfY2FuY2VsX2ZyZWUoZGV2LCAmY3J0Y19zdGF0ZS0+ZXZlbnQtPmJhc2Up OwotCQl9Ci0JfQorCWNvbXBsZXRlX2NydGNfc2lnbmFsaW5nKGRldiwgc3RhdGUsIGZlbmNlX3N0 YXRlLCBudW1fZmVuY2VzLCAhcmV0KTsKIAogCWlmIChyZXQgPT0gLUVERUFETEspIHsKIAkJZHJt X2F0b21pY19zdGF0ZV9jbGVhcihzdGF0ZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v ZHJtX2NydGMuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Yy5jCmluZGV4IDIwZGRhZmYuLmNm MjQyM2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Yy5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9kcm1fY3J0Yy5jCkBAIC0yNzQsNiArMjc0LDggQEAgaW50IGRybV9jcnRjX2lu aXRfd2l0aF9wbGFuZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9jcnRjICpj cnRjLAogCWlmIChkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX0FUT01JQykpIHsK IAkJZHJtX29iamVjdF9hdHRhY2hfcHJvcGVydHkoJmNydGMtPmJhc2UsIGNvbmZpZy0+cHJvcF9h Y3RpdmUsIDApOwogCQlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmY3J0Yy0+YmFzZSwgY29u ZmlnLT5wcm9wX21vZGVfaWQsIDApOworCQlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmY3J0 Yy0+YmFzZSwKKwkJCQkJICAgY29uZmlnLT5wcm9wX291dF9mZW5jZV9wdHIsIDApOwogCX0KIAog CXJldHVybiAwOwpAQCAtNDM0LDYgKzQzNiwxMiBAQCBzdGF0aWMgaW50IGRybV9tb2RlX2NyZWF0 ZV9zdGFuZGFyZF9wcm9wZXJ0aWVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJCXJldHVybiAt RU5PTUVNOwogCWRldi0+bW9kZV9jb25maWcucHJvcF9pbl9mZW5jZV9mZCA9IHByb3A7CiAKKwlw cm9wID0gZHJtX3Byb3BlcnR5X2NyZWF0ZV9yYW5nZShkZXYsIERSTV9NT0RFX1BST1BfQVRPTUlD LAorCQkJIk9VVF9GRU5DRV9QVFIiLCAwLCBVNjRfTUFYKTsKKwlpZiAoIXByb3ApCisJCXJldHVy biAtRU5PTUVNOworCWRldi0+bW9kZV9jb25maWcucHJvcF9vdXRfZmVuY2VfcHRyID0gcHJvcDsK KwogCXByb3AgPSBkcm1fcHJvcGVydHlfY3JlYXRlX29iamVjdChkZXYsIERSTV9NT0RFX1BST1Bf QVRPTUlDLAogCQkJIkNSVENfSUQiLCBEUk1fTU9ERV9PQkpFQ1RfQ1JUQyk7CiAJaWYgKCFwcm9w KQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2F0b21pYy5oIGIvaW5jbHVkZS9kcm0vZHJt X2F0b21pYy5oCmluZGV4IDMzMWJiMTAuLmMwZWFlYzcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJt L2RybV9hdG9taWMuaAorKysgYi9pbmNsdWRlL2RybS9kcm1fYXRvbWljLmgKQEAgLTE0NCw2ICsx NDQsNyBAQCBzdHJ1Y3QgX19kcm1fY3J0Y3Nfc3RhdGUgewogCXN0cnVjdCBkcm1fY3J0YyAqcHRy OwogCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGU7CiAJc3RydWN0IGRybV9jcnRjX2NvbW1p dCAqY29tbWl0OworCXM2NCBfX3VzZXIgKm91dF9mZW5jZV9wdHI7CiB9OwogCiBzdHJ1Y3QgX19k cm1fY29ubm5lY3RvcnNfc3RhdGUgewpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2NydGMu aCBiL2luY2x1ZGUvZHJtL2RybV9jcnRjLmgKaW5kZXggMDg3MGRlMS4uNDQ1NzFiYyAxMDA2NDQK LS0tIGEvaW5jbHVkZS9kcm0vZHJtX2NydGMuaAorKysgYi9pbmNsdWRlL2RybS9kcm1fY3J0Yy5o CkBAIC0xMjY0LDYgKzEyNjQsMTIgQEAgc3RydWN0IGRybV9tb2RlX2NvbmZpZyB7CiAJICovCiAJ c3RydWN0IGRybV9wcm9wZXJ0eSAqcHJvcF9pbl9mZW5jZV9mZDsKIAkvKioKKwkgKiBAcHJvcF9v dXRfZmVuY2VfcHRyOiBTeW5jIEZpbGUgZmQgcG9pbnRlciByZXByZXNlbnRpbmcgdGhlCisJICog b3V0Z29pbmcgZmVuY2VzIGZvciBhIENSVEMuIFVzZXJzcGFjZSBzaG91bGQgcHJvdmlkZSBhIHBv aW50ZXIgdG8gYQorCSAqIHZhbHVlIG9mIHR5cGUgczY0LCBhbmQgdGhlbiBjYXN0IHRoYXQgcG9p bnRlciB0byB1NjQuCisJICovCisJc3RydWN0IGRybV9wcm9wZXJ0eSAqcHJvcF9vdXRfZmVuY2Vf cHRyOworCS8qKgogCSAqIEBwcm9wX2NydGNfaWQ6IERlZmF1bHQgYXRvbWljIHBsYW5lIHByb3Bl cnR5IHRvIHNwZWNpZnkgdGhlCiAJICogJmRybV9jcnRjLgogCSAqLwotLSAKMi41LjUKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWls aW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=