From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Christian=20K=C3=B6nig?= Subject: [PATCH 02/11] dma-buf/fence: add fence_array fences v6 Date: Wed, 1 Jun 2016 15:10:03 +0200 Message-ID: <1464786612-5010-3-git-send-email-deathsimple@vodafone.de> References: <1464786612-5010-1-git-send-email-deathsimple@vodafone.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from pegasos-out.vodafone.de (pegasos-out.vodafone.de [80.84.1.38]) by gabe.freedesktop.org (Postfix) with ESMTP id E95886E9A1 for ; Wed, 1 Jun 2016 13:10:22 +0000 (UTC) In-Reply-To: <1464786612-5010-1-git-send-email-deathsimple@vodafone.de> 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 RnJvbTogR3VzdGF2byBQYWRvdmFuIDxndXN0YXZvLnBhZG92YW5AY29sbGFib3JhLmNvLnVrPgoK c3RydWN0IGZlbmNlX2NvbGxlY3Rpb24gaW5oZXJpdHMgZnJvbSBzdHJ1Y3QgZmVuY2UgYW5kIGNh cnJpZXMgYQpjb2xsZWN0aW9uIG9mIGZlbmNlcyB0aGF0IG5lZWRzIHRvIGJlIHdhaXRlZCB0b2dl dGhlci4KCkl0IGlzIHVzZWZ1bCB0byB0cmFuc2xhdGUgYSBzeW5jX2ZpbGUgdG8gYSBmZW5jZSB0 byByZW1vdmUgdGhlIGNvbXBsZXhpdHkKb2YgZGVhbGluZyB3aXRoIHN5bmNfZmlsZXMgb24gRFJN IGRyaXZlcnMuIFNvIGV2ZW4gaWYgdGhlcmUgYXJlIG1hbnkKZmVuY2VzIGluIHRoZSBzeW5jX2Zp bGUgdGhhdCBuZWVkcyB0byB3YWl0ZWQgZm9yIGEgY29tbWl0IHRvIGhhcHBlbiwKdGhleSBhbGwg Z2V0IGFkZGVkIHRvIHRoZSBmZW5jZV9jb2xsZWN0aW9uIGFuZCBwYXNzZWQgZm9yIERSTSB1c2Ug YXMKYSBzdGFuZGFyZCBzdHJ1Y3QgZmVuY2UuCgpUaGF0IG1lYW5zIHRoYXQgbm8gY2hhbmdlcyBu ZWVkZWQgdG8gYW55IGRyaXZlciBiZXNpZGVzIHN1cHBvcnRpbmcgZmVuY2VzLgoKZmVuY2VfY29s bGVjdGlvbidzIGZlbmNlIGRvZXNuJ3QgYmVsb25nIHRvIGFueSB0aW1lbGluZSBjb250ZXh0LCBz bwpmZW5jZV9pc19sYXRlcigpIGFuZCBmZW5jZV9sYXRlcigpIGFyZSBub3QgbWVhbnQgdG8gYmUg Y2FsbGVkIHdpdGgKZmVuY2VfY29sbGVjdGlvbnMgZmVuY2VzLgoKdjI6IENvbW1lbnRzIGJ5IERh bmllbCBWZXR0ZXI6CgktIG1lcmdlIGZlbmNlX2NvbGxlY3Rpb25faW5pdCgpIGFuZCBmZW5jZV9j b2xsZWN0aW9uX2FkZCgpCgktIG9ubHkgYWRkIGNhbGxiYWNrcyBhdCAtPmVuYWJsZV9zaWduYWxs aW5nKCkKCS0gcmVtb3ZlIGZlbmNlX2NvbGxlY3Rpb25fcHV0KCkKCS0gY2hlY2sgZm9yIHR5cGUg b24gdG9fZmVuY2VfY29sbGVjdGlvbigpCgktIGFkanVzdCBmZW5jZV9pc19sYXRlcigpIGFuZCBm ZW5jZV9sYXRlcigpIHRvIFdBUk5fT04oKSBpZiB0aGV5CglhcmUgdXNlZCB3aXRoIGNvbGxlY3Rp b24gZmVuY2VzLgoKdjM6IC0gSW5pdGlhbGl6ZSBmZW5jZV9jYi5ub2RlIGF0IGZlbmNlIGluaXQu CgogICAgQ29tbWVudHMgYnkgQ2hyaXMgV2lsc29uOgoJLSByZXR1cm4gInVuYm91bmQiIG9uIGZl bmNlX2NvbGxlY3Rpb25fZ2V0X3RpbWVsaW5lX25hbWUoKQoJLSBkb24ndCBzdG9wIGFkZGluZyBj YWxsYmFja3MgaWYgb25lIGZhaWxzCgktIHJlbW92ZSByZWR1bmRhbnQgISEgb24gZmVuY2VfY29s bGVjdGlvbl9lbmFibGVfc2lnbmFsaW5nKCkKCS0gcmVtb3ZlIHJlZHVuZGFudCAoKSBvbiBmZW5j ZV9jb2xsZWN0aW9uX3NpZ25hbGVkCgktIHVzZSBmZW5jZV9kZWZhdWx0X3dhaXQoKSBpbnN0ZWFk Cgp2NCAoY2hrKTogUmV3b3JrLCBzaW1wbGlmaWNhdGlvbiBhbmQgY2xlYW51cDoKCS0gRHJvcCBG RU5DRV9OT19DT05URVhUIGhhbmRsaW5nLCBhbHdheXMgYWxsb2NhdGUgYSBjb250ZXh0LgoJLSBS ZW5hbWUgdG8gZmVuY2VfYXJyYXkuCgktIFJldHVybiBmaXhlZCBkcml2ZXIgbmFtZS4KCS0gUmVn aXN0ZXIgb25seSBvbmUgY2FsbGJhY2sgYXQgYSB0aW1lLgoJLSBEb2N1bWVudCB0aGF0IGNyZWF0 ZSBmdW5jdGlvbiB0YWtlcyBvd25lcnNoaXAgb2YgYXJyYXkuCgp2NSAoY2hrKTogTW9yZSB3b3Jr IGFuZCBmaXhlczoKCS0gQXZvaWQgZGVhZGxvY2tzIGJ5IGFkZGluZyBhbGwgY2FsbGJhY2tzIGF0 IG9uY2UgYWdhaW4uCgktIFN0b3AgdHJ5aW5nIHRvIHJlbW92ZSB0aGUgY2FsbGJhY2tzLgoJLSBQ cm92aWRlIGNvbnRleHQgYW5kIHNlcXVlbmNlIG51bWJlciBmb3IgdGhlIGFycmF5IGZlbmNlLgoK djYgKGNoayk6IEZpeGVzIGZvdW5kIGR1cmluZyB0ZXN0aW5nCgktIEZpeCBzdHVwaWQgdHlwbyBp biBfZW5hYmxlX3NpZ25hbGluZygpLgoKU2lnbmVkLW9mZi1ieTogR3VzdGF2byBQYWRvdmFuIDxn dXN0YXZvLnBhZG92YW5AY29sbGFib3JhLmNvLnVrPgpTaWduZWQtb2ZmLWJ5OiBDaHJpc3RpYW4g S8O2bmlnIDxjaHJpc3RpYW4ua29lbmlnQGFtZC5jb20+Ci0tLQogZHJpdmVycy9kbWEtYnVmL01h a2VmaWxlICAgICAgfCAgIDIgKy0KIGRyaXZlcnMvZG1hLWJ1Zi9mZW5jZS1hcnJheS5jIHwgMTI3 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogaW5jbHVkZS9saW51 eC9mZW5jZS1hcnJheS5oICAgfCAgNzIgKysrKysrKysrKysrKysrKysrKysrKysrCiAzIGZpbGVz IGNoYW5nZWQsIDIwMCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9kbWEtYnVmL2ZlbmNlLWFycmF5LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBp bmNsdWRlL2xpbnV4L2ZlbmNlLWFycmF5LmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS1idWYv TWFrZWZpbGUgYi9kcml2ZXJzL2RtYS1idWYvTWFrZWZpbGUKaW5kZXggNTdhNjc1Zi4uODVmNjky OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9kbWEtYnVmL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZG1h LWJ1Zi9NYWtlZmlsZQpAQCAtMSArMSBAQAotb2JqLXkgOj0gZG1hLWJ1Zi5vIGZlbmNlLm8gcmVz ZXJ2YXRpb24ubyBzZXFuby1mZW5jZS5vCitvYmoteSA6PSBkbWEtYnVmLm8gZmVuY2UubyByZXNl cnZhdGlvbi5vIHNlcW5vLWZlbmNlLm8gZmVuY2UtYXJyYXkubwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9kbWEtYnVmL2ZlbmNlLWFycmF5LmMgYi9kcml2ZXJzL2RtYS1idWYvZmVuY2UtYXJyYXkuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTQxMjE3Ci0tLSAvZGV2L251bGwK KysrIGIvZHJpdmVycy9kbWEtYnVmL2ZlbmNlLWFycmF5LmMKQEAgLTAsMCArMSwxMjcgQEAKKy8q CisgKiBmZW5jZS1hcnJheTogYWdncmVnYXRlIGZlbmNlcyB0byBiZSB3YWl0ZWQgdG9nZXRoZXIK KyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQ29sbGFib3JhIEx0ZAorICogQ29weXJpZ2h0IChD KSAyMDE2IEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4KKyAqIEF1dGhvcnM6CisgKglHdXN0 YXZvIFBhZG92YW4gPGd1c3Rhdm9AcGFkb3Zhbi5vcmc+CisgKglDaHJpc3RpYW4gS8O2bmlnIDxj aHJpc3RpYW4ua29lbmlnQGFtZC5jb20+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFz IHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwgYnV0IFdJVEhPVVQKKyAqIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvcgorICogRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgor ICogbW9yZSBkZXRhaWxzLgorICovCisKKyNpbmNsdWRlIDxsaW51eC9leHBvcnQuaD4KKyNpbmNs dWRlIDxsaW51eC9zbGFiLmg+CisjaW5jbHVkZSA8bGludXgvZmVuY2UtYXJyYXkuaD4KKworc3Rh dGljIHZvaWQgZmVuY2VfYXJyYXlfY2JfZnVuYyhzdHJ1Y3QgZmVuY2UgKmYsIHN0cnVjdCBmZW5j ZV9jYiAqY2IpOworCitzdGF0aWMgY29uc3QgY2hhciAqZmVuY2VfYXJyYXlfZ2V0X2RyaXZlcl9u YW1lKHN0cnVjdCBmZW5jZSAqZmVuY2UpCit7CisJcmV0dXJuICJmZW5jZV9hcnJheSI7Cit9CisK K3N0YXRpYyBjb25zdCBjaGFyICpmZW5jZV9hcnJheV9nZXRfdGltZWxpbmVfbmFtZShzdHJ1Y3Qg ZmVuY2UgKmZlbmNlKQoreworCXJldHVybiAidW5ib3VuZCI7Cit9CisKK3N0YXRpYyB2b2lkIGZl bmNlX2FycmF5X2NiX2Z1bmMoc3RydWN0IGZlbmNlICpmLCBzdHJ1Y3QgZmVuY2VfY2IgKmNiKQor eworCXN0cnVjdCBmZW5jZV9hcnJheV9jYiAqYXJyYXlfY2IgPQorCQljb250YWluZXJfb2YoY2Is IHN0cnVjdCBmZW5jZV9hcnJheV9jYiwgY2IpOworCXN0cnVjdCBmZW5jZV9hcnJheSAqYXJyYXkg PSBhcnJheV9jYi0+YXJyYXk7CisKKwlpZiAoYXRvbWljX2RlY19hbmRfdGVzdCgmYXJyYXktPm51 bV9wZW5kaW5nKSkKKwkJZmVuY2Vfc2lnbmFsKCZhcnJheS0+YmFzZSk7Cit9CisKK3N0YXRpYyBi b29sIGZlbmNlX2FycmF5X2VuYWJsZV9zaWduYWxpbmcoc3RydWN0IGZlbmNlICpmZW5jZSkKK3sK KwlzdHJ1Y3QgZmVuY2VfYXJyYXkgKmFycmF5ID0gdG9fZmVuY2VfYXJyYXkoZmVuY2UpOworCXN0 cnVjdCBmZW5jZV9hcnJheV9jYiAqY2IgPSAodm9pZCAqKSgmYXJyYXlbMV0pOworCXVuc2lnbmVk IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgYXJyYXktPm51bV9mZW5jZXM7ICsraSkgeworCQljYltp XS5hcnJheSA9IGFycmF5OworCQlpZiAoZmVuY2VfYWRkX2NhbGxiYWNrKGFycmF5LT5mZW5jZXNb aV0sICZjYltpXS5jYiwKKwkJCQkgICAgICAgZmVuY2VfYXJyYXlfY2JfZnVuYykpCisJCQlpZiAo YXRvbWljX2RlY19hbmRfdGVzdCgmYXJyYXktPm51bV9wZW5kaW5nKSkKKwkJCQlyZXR1cm4gZmFs c2U7CisJfQorCisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIGZlbmNlX2FycmF5X3Np Z25hbGVkKHN0cnVjdCBmZW5jZSAqZmVuY2UpCit7CisJc3RydWN0IGZlbmNlX2FycmF5ICphcnJh eSA9IHRvX2ZlbmNlX2FycmF5KGZlbmNlKTsKKworCXJldHVybiBhdG9taWNfcmVhZCgmYXJyYXkt Pm51bV9wZW5kaW5nKSA9PSAwOworfQorCitzdGF0aWMgdm9pZCBmZW5jZV9hcnJheV9yZWxlYXNl KHN0cnVjdCBmZW5jZSAqZmVuY2UpCit7CisJc3RydWN0IGZlbmNlX2FycmF5ICphcnJheSA9IHRv X2ZlbmNlX2FycmF5KGZlbmNlKTsKKwl1bnNpZ25lZCBpOworCisJZm9yIChpID0gMDsgaSA8IGFy cmF5LT5udW1fZmVuY2VzOyArK2kpCisJCWZlbmNlX3B1dChhcnJheS0+ZmVuY2VzW2ldKTsKKwor CWtmcmVlKGFycmF5LT5mZW5jZXMpOworCWZlbmNlX2ZyZWUoZmVuY2UpOworfQorCitjb25zdCBz dHJ1Y3QgZmVuY2Vfb3BzIGZlbmNlX2FycmF5X29wcyA9IHsKKwkuZ2V0X2RyaXZlcl9uYW1lID0g ZmVuY2VfYXJyYXlfZ2V0X2RyaXZlcl9uYW1lLAorCS5nZXRfdGltZWxpbmVfbmFtZSA9IGZlbmNl X2FycmF5X2dldF90aW1lbGluZV9uYW1lLAorCS5lbmFibGVfc2lnbmFsaW5nID0gZmVuY2VfYXJy YXlfZW5hYmxlX3NpZ25hbGluZywKKwkuc2lnbmFsZWQgPSBmZW5jZV9hcnJheV9zaWduYWxlZCwK Kwkud2FpdCA9IGZlbmNlX2RlZmF1bHRfd2FpdCwKKwkucmVsZWFzZSA9IGZlbmNlX2FycmF5X3Jl bGVhc2UsCit9OworCisvKioKKyAqIGZlbmNlX2FycmF5X2NyZWF0ZSAtIENyZWF0ZSBhIGN1c3Rv bSBmZW5jZSBhcnJheQorICogQG51bV9mZW5jZXM6CVtpbl0JbnVtYmVyIG9mIGZlbmNlcyB0byBh ZGQgaW4gdGhlIGFycmF5CisgKiBAZmVuY2VzOglbaW5dCWFycmF5IGNvbnRhaW5pbmcgdGhlIGZl bmNlcworICogQGNvbnRleHQ6CVtpbl0JZmVuY2UgY29udGV4dCB0byB1c2UKKyAqIEBzZXFubzoJ W2luXQlzZXF1ZW5jZSBudW1iZXIgdG8gdXNlCisgKgorICogQWxsb2NhdGUgYSBmZW5jZV9hcnJh eSBvYmplY3QgYW5kIGluaXRpYWxpemUgdGhlIGJhc2UgZmVuY2Ugd2l0aCBmZW5jZV9pbml0KCku CisgKiBJbiBjYXNlIG9mIGVycm9yIGl0IHJldHVybnMgTlVMTC4KKyAqCisgKiBUaGUgY2FsbGVy IHNob3VsZCBhbGxvY3RlIHRoZSBmZW5jZXMgYXJyYXkgd2l0aCBudW1fZmVuY2VzIHNpemUKKyAq IGFuZCBmaWxsIGl0IHdpdGggdGhlIGZlbmNlcyBpdCB3YW50cyB0byBhZGQgdG8gdGhlIG9iamVj dC4gT3duZXJzaGlwIG9mIHRoaXMKKyAqIGFycmF5IGlzIHRha2UgYW5kIGZlbmNlX3B1dCgpIGlz IHVzZWQgb24gZWFjaCBmZW5jZSBvbiByZWxlYXNlLgorICovCitzdHJ1Y3QgZmVuY2VfYXJyYXkg KmZlbmNlX2FycmF5X2NyZWF0ZShpbnQgbnVtX2ZlbmNlcywgc3RydWN0IGZlbmNlICoqZmVuY2Vz LAorCQkJCSAgICAgICB1NjQgY29udGV4dCwgdW5zaWduZWQgc2Vxbm8pCit7CisJc3RydWN0IGZl bmNlX2FycmF5ICphcnJheTsKKwlzaXplX3Qgc2l6ZSA9IHNpemVvZigqYXJyYXkpOworCisJLyog QWxsb2NhdGUgdGhlIGNhbGxiYWNrIHN0cnVjdHVyZXMgYmVoaW5kIHRoZSBhcnJheS4gKi8KKwlz aXplICs9IG51bV9mZW5jZXMgKiBzaXplb2Yoc3RydWN0IGZlbmNlX2FycmF5X2NiKTsKKwlhcnJh eSA9IGt6YWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFhcnJheSkKKwkJcmV0dXJuIE5V TEw7CisKKwlzcGluX2xvY2tfaW5pdCgmYXJyYXktPmxvY2spOworCWZlbmNlX2luaXQoJmFycmF5 LT5iYXNlLCAmZmVuY2VfYXJyYXlfb3BzLCAmYXJyYXktPmxvY2ssCisJCSAgIGNvbnRleHQsIHNl cW5vKTsKKworCWFycmF5LT5udW1fZmVuY2VzID0gbnVtX2ZlbmNlczsKKwlhdG9taWNfc2V0KCZh cnJheS0+bnVtX3BlbmRpbmcsIG51bV9mZW5jZXMpOworCWFycmF5LT5mZW5jZXMgPSBmZW5jZXM7 CisKKwlyZXR1cm4gYXJyYXk7Cit9CitFWFBPUlRfU1lNQk9MKGZlbmNlX2FycmF5X2NyZWF0ZSk7 CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2ZlbmNlLWFycmF5LmggYi9pbmNsdWRlL2xpbnV4 L2ZlbmNlLWFycmF5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTkzYWI5 OAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbGludXgvZmVuY2UtYXJyYXkuaApAQCAtMCww ICsxLDcyIEBACisvKgorICogZmVuY2UtYXJyYXk6IGFnZ3JlZ2F0ZXMgZmVuY2UgdG8gYmUgd2Fp dGVkIHRvZ2V0aGVyCisgKgorICogQ29weXJpZ2h0IChDKSAyMDE2IENvbGxhYm9yYSBMdGQKKyAq IENvcHlyaWdodCAoQykgMjAxNiBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuCisgKiBBdXRo b3JzOgorICoJR3VzdGF2byBQYWRvdmFuIDxndXN0YXZvQHBhZG92YW4ub3JnPgorICoJQ2hyaXN0 aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgorICoKKyAqIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 IGl0CisgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IHZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCisgKiBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IKKyAqIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IKKyAqIG1vcmUgZGV0YWlscy4KKyAqLworCisjaWZuZGVmIF9fTElOVVhfRkVO Q0VfQVJSQVlfSAorI2RlZmluZSBfX0xJTlVYX0ZFTkNFX0FSUkFZX0gKKworI2luY2x1ZGUgPGxp bnV4L2ZlbmNlLmg+CisKKy8qKgorICogc3RydWN0IGZlbmNlX2FycmF5X2NiIC0gY2FsbGJhY2sg aGVscGVyIGZvciBmZW5jZSBhcnJheQorICogQGNiOiBmZW5jZSBjYWxsYmFjayBzdHJ1Y3R1cmUg Zm9yIHNpZ25hbGluZworICogQGFycmF5OiByZWZlcmVuY2UgdG8gdGhlIHBhcmVudCBmZW5jZSBh cnJheSBvYmplY3QKKyAqLworc3RydWN0IGZlbmNlX2FycmF5X2NiIHsKKwlzdHJ1Y3QgZmVuY2Vf Y2IgY2I7CisJc3RydWN0IGZlbmNlX2FycmF5ICphcnJheTsKK307CisKKy8qKgorICogc3RydWN0 IGZlbmNlX2FycmF5IC0gZmVuY2UgdG8gcmVwcmVzZW50IGFuIGFycmF5IG9mIGZlbmNlcworICog QGJhc2U6IGZlbmNlIGJhc2UgY2xhc3MKKyAqIEBsb2NrOiBzcGlubG9jayBmb3IgZmVuY2UgaGFu ZGxpbmcKKyAqIEBudW1fZmVuY2VzOiBudW1iZXIgb2YgZmVuY2VzIGluIHRoZSBhcnJheQorICog QG51bV9wZW5kaW5nOiBmZW5jZXMgaW4gdGhlIGFycmF5IHN0aWxsIHBlbmRpbmcKKyAqIEBmZW5j ZXM6IGFycmF5IG9mIHRoZSBmZW5jZXMKKyAqLworc3RydWN0IGZlbmNlX2FycmF5IHsKKwlzdHJ1 Y3QgZmVuY2UgYmFzZTsKKworCXNwaW5sb2NrX3QgbG9jazsKKwl1bnNpZ25lZCBudW1fZmVuY2Vz OworCWF0b21pY190IG51bV9wZW5kaW5nOworCXN0cnVjdCBmZW5jZSAqKmZlbmNlczsKK307CisK K2V4dGVybiBjb25zdCBzdHJ1Y3QgZmVuY2Vfb3BzIGZlbmNlX2FycmF5X29wczsKKworLyoqCisg KiB0b19mZW5jZV9hcnJheSAtIGNhc3QgYSBmZW5jZSB0byBhIGZlbmNlX2FycmF5CisgKiBAZmVu Y2U6IGZlbmNlIHRvIGNhc3QgdG8gYSBmZW5jZV9hcnJheQorICoKKyAqIFJldHVybnMgTlVMTCBp ZiB0aGUgZmVuY2UgaXMgbm90IGEgZmVuY2VfYXJyYXksCisgKiBvciB0aGUgZmVuY2VfYXJyYXkg b3RoZXJ3aXNlLgorICovCitzdGF0aWMgaW5saW5lIHN0cnVjdCBmZW5jZV9hcnJheSAqdG9fZmVu Y2VfYXJyYXkoc3RydWN0IGZlbmNlICpmZW5jZSkKK3sKKwlpZiAoZmVuY2UtPm9wcyAhPSAmZmVu Y2VfYXJyYXlfb3BzKQorCQlyZXR1cm4gTlVMTDsKKworCXJldHVybiBjb250YWluZXJfb2YoZmVu Y2UsIHN0cnVjdCBmZW5jZV9hcnJheSwgYmFzZSk7Cit9CisKK3N0cnVjdCBmZW5jZV9hcnJheSAq ZmVuY2VfYXJyYXlfY3JlYXRlKGludCBudW1fZmVuY2VzLCBzdHJ1Y3QgZmVuY2UgKipmZW5jZXMs CisJCQkJICAgICAgIHU2NCBjb250ZXh0LCB1bnNpZ25lZCBzZXFubyk7CisKKyNlbmRpZiAvKiBf X0xJTlVYX0ZFTkNFX0FSUkFZX0ggKi8KLS0gCjIuNS4wCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9kcmktZGV2ZWwK