From mboxrd@z Thu Jan 1 00:00:00 1970 From: "=?UTF-8?q?Christian=20K=C3=B6nig?=" Subject: [PATCH 2/7] dma-buf: add new dma_fence_chain container Date: Thu, 15 Nov 2018 12:12:40 +0100 Message-ID: <20181115111245.30161-3-christian.koenig@amd.com> References: <20181115111245.30161-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-wm1-x343.google.com (mail-wm1-x343.google.com [IPv6:2a00:1450:4864:20::343]) by gabe.freedesktop.org (Postfix) with ESMTPS id 167016E601 for ; Thu, 15 Nov 2018 11:12:53 +0000 (UTC) Received: by mail-wm1-x343.google.com with SMTP id f1-v6so15562815wmg.1 for ; Thu, 15 Nov 2018 03:12:53 -0800 (PST) In-Reply-To: <20181115111245.30161-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 Cc: daniel.vetter@ffwll.ch List-Id: dri-devel@lists.freedesktop.org TG9ja2xlc3MgY29udGFpbmVyIGltcGxlbWVudGF0aW9uIHNpbWlsYXIgdG8gYSBkbWFfZmVuY2Vf YXJyYXksIGJ1dCB3aXRoCm9ubHkgdHdvIGVsZW1lbnRzIHBlciBub2RlIGFuZCBhdXRvbWF0aWMg Z2FyYmFnZSBjb2xsZWN0aW9uLgoKU2lnbmVkLW9mZi1ieTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hy aXN0aWFuLmtvZW5pZ0BhbWQuY29tPgotLS0KIGRyaXZlcnMvZG1hLWJ1Zi9NYWtlZmlsZSAgICAg ICAgICB8ICAgMyArLQogZHJpdmVycy9kbWEtYnVmL2RtYS1mZW5jZS1jaGFpbi5jIHwgMTg2ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBpbmNsdWRlL2xpbnV4L2RtYS1m ZW5jZS1jaGFpbi5oICAgfCAgNjkgKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMjU3 IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2RtYS1idWYvZG1hLWZlbmNlLWNoYWluLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2xp bnV4L2RtYS1mZW5jZS1jaGFpbi5oCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEtYnVmL01ha2Vm aWxlIGIvZHJpdmVycy9kbWEtYnVmL01ha2VmaWxlCmluZGV4IDA5MTNhNmNjYWI1YS4uMWYwMDZl MDgzZWI5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2RtYS1idWYvTWFrZWZpbGUKKysrIGIvZHJpdmVy cy9kbWEtYnVmL01ha2VmaWxlCkBAIC0xLDQgKzEsNSBAQAotb2JqLXkgOj0gZG1hLWJ1Zi5vIGRt YS1mZW5jZS5vIGRtYS1mZW5jZS1hcnJheS5vIHJlc2VydmF0aW9uLm8gc2Vxbm8tZmVuY2Uubwor b2JqLXkgOj0gZG1hLWJ1Zi5vIGRtYS1mZW5jZS5vIGRtYS1mZW5jZS1hcnJheS5vIGRtYS1mZW5j ZS1jaGFpbi5vIFwKKwkgcmVzZXJ2YXRpb24ubyBzZXFuby1mZW5jZS5vCiBvYmotJChDT05GSUdf U1lOQ19GSUxFKQkJKz0gc3luY19maWxlLm8KIG9iai0kKENPTkZJR19TV19TWU5DKQkJKz0gc3df c3luYy5vIHN5bmNfZGVidWcubwogb2JqLSQoQ09ORklHX1VETUFCVUYpCQkrPSB1ZG1hYnVmLm8K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtZmVuY2UtY2hhaW4uYyBiL2RyaXZlcnMv ZG1hLWJ1Zi9kbWEtZmVuY2UtY2hhaW4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAuLmFjODMwYjg4NjU4OQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZG1hLWJ1 Zi9kbWEtZmVuY2UtY2hhaW4uYwpAQCAtMCwwICsxLDE4NiBAQAorLyoKKyAqIGZlbmNlLWNoYWlu OiBjaGFpbiBmZW5jZXMgdG9nZXRoZXIgaW4gYSB0aW1lbGluZQorICoKKyAqIENvcHlyaWdodCAo QykgMjAxOCBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuCisgKiBBdXRob3JzOgorICoJQ2hy aXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgorICoKKyAqIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIHZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCisgKiBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IKKyAqIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IKKyAqIG1vcmUgZGV0YWlscy4KKyAqLworCisjaW5jbHVkZSA8bGludXgv ZG1hLWZlbmNlLWNoYWluLmg+CisKK3N0YXRpYyBib29sIGRtYV9mZW5jZV9jaGFpbl9lbmFibGVf c2lnbmFsaW5nKHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKTsKKworLyoqCisgKiBkbWFfZmVuY2Vf Y2hhaW5fZ2V0X3ByZXYgLSB1c2UgUkNVIHRvIGdldCBhIHJlZmVyZW5jZSB0byB0aGUgcHJldmlv dXMgZmVuY2UKKyAqIEBjaGFpbjogY2hhaW4gbm9kZSB0byBnZXQgdGhlIHByZXZpb3VzIG5vZGUg ZnJvbQorICoKKyAqIFVzZSBkbWFfZmVuY2VfZ2V0X3JjdV9zYWZlIHRvIGdldCBhIHJlZmVyZW5j ZSB0byB0aGUgcHJldmlvdXMgZmVuY2Ugb2YgdGhlCisgKiBjaGFpbiBub2RlLgorICovCitzdGF0 aWMgc3RydWN0IGRtYV9mZW5jZSAqZG1hX2ZlbmNlX2NoYWluX2dldF9wcmV2KHN0cnVjdCBkbWFf ZmVuY2VfY2hhaW4gKmNoYWluKQoreworCXN0cnVjdCBkbWFfZmVuY2UgKnByZXY7CisKKwlyY3Vf cmVhZF9sb2NrKCk7CisJcHJldiA9IGRtYV9mZW5jZV9nZXRfcmN1X3NhZmUoJmNoYWluLT5wcmV2 KTsKKwlyY3VfcmVhZF91bmxvY2soKTsKKwlyZXR1cm4gcHJldjsKK30KKworLyoqCisgKiBkbWFf ZmVuY2VfY2hhaW5fd2FsayAtIGNoYWluIHdhbGtpbmcgZnVuY3Rpb24KKyAqIEBmZW5jZTogY3Vy cmVudCBjaGFpbiBub2RlCisgKgorICogV2FsayB0aGUgY2hhaW4gdG8gdGhlIG5leHQgbm9kZS4g UmV0dXJucyB0aGUgbmV4dCBmZW5jZSBvciBOVUxMIGlmIHdlIGFyZSBhdAorICogdGhlIGVuZCBv ZiB0aGUgY2hhaW4uIEdhcmJhZ2UgY29sbGVjdHMgY2hhaW4gbm9kZXMgd2hpY2ggYXJlIGFscmVh ZHkKKyAqIHNpZ25hbGVkLgorICovCitzdHJ1Y3QgZG1hX2ZlbmNlICpkbWFfZmVuY2VfY2hhaW5f d2FsayhzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSkKK3sKKwlzdHJ1Y3QgZG1hX2ZlbmNlX2NoYWlu ICpjaGFpbiwgKnByZXZfY2hhaW47CisJc3RydWN0IGRtYV9mZW5jZSAqcHJldiwgKnByZXZfcHJl diwgKnRtcDsKKworCWNoYWluID0gdG9fZG1hX2ZlbmNlX2NoYWluKGZlbmNlKTsKKwlpZiAoIWNo YWluKSB7CisJCWRtYV9mZW5jZV9wdXQoZmVuY2UpOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwl3 aGlsZSAoKHByZXYgPSBkbWFfZmVuY2VfY2hhaW5fZ2V0X3ByZXYoY2hhaW4pKSkgeworCisJCXBy ZXZfY2hhaW4gPSB0b19kbWFfZmVuY2VfY2hhaW4ocHJldik7CisJCWlmICghcHJldl9jaGFpbiB8 fCAhZG1hX2ZlbmNlX2lzX3NpZ25hbGVkKHByZXZfY2hhaW4tPmZlbmNlKSkKKwkJCWJyZWFrOwor CisJCXByZXZfcHJldiA9IGRtYV9mZW5jZV9jaGFpbl9nZXRfcHJldihwcmV2X2NoYWluKTsKKwkJ dG1wID0gY21weGNoZygmY2hhaW4tPnByZXYsIHByZXYsIHByZXZfcHJldik7CisJCWlmICh0bXAg PT0gcHJldikKKwkJCWRtYV9mZW5jZV9wdXQodG1wKTsKKwkJZWxzZQorCQkJZG1hX2ZlbmNlX3B1 dChwcmV2X3ByZXYpOworCQlkbWFfZmVuY2VfcHV0KHByZXYpOworCX0KKworCWRtYV9mZW5jZV9w dXQoZmVuY2UpOworCXJldHVybiBwcmV2OworfQorRVhQT1JUX1NZTUJPTChkbWFfZmVuY2VfY2hh aW5fd2Fsayk7CisKK3N0YXRpYyBjb25zdCBjaGFyICpkbWFfZmVuY2VfY2hhaW5fZ2V0X2RyaXZl cl9uYW1lKHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQoreworICAgICAgICByZXR1cm4gImRtYV9m ZW5jZV9jaGFpbiI7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyICpkbWFfZmVuY2VfY2hhaW5fZ2V0 X3RpbWVsaW5lX25hbWUoc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpCit7CisgICAgICAgIHJldHVy biAidW5ib3VuZCI7Cit9CisKK3N0YXRpYyB2b2lkIGRtYV9mZW5jZV9jaGFpbl9pcnFfd29yayhz dHJ1Y3QgaXJxX3dvcmsgKndvcmspCit7CisJc3RydWN0IGRtYV9mZW5jZV9jaGFpbiAqY2hhaW47 CisKKwljaGFpbiA9IGNvbnRhaW5lcl9vZih3b3JrLCB0eXBlb2YoKmNoYWluKSwgd29yayk7CisK KwkvKiBUcnkgdG8gcmVhcm0gdGhlIGNhbGxiYWNrICovCisJaWYgKCFkbWFfZmVuY2VfY2hhaW5f ZW5hYmxlX3NpZ25hbGluZygmY2hhaW4tPmJhc2UpKQorCQkvKiBPaywgd2UgYXJlIGRvbmUuIE5v IG1vcmUgdW5zaWduYWxlZCBmZW5jZXMgbGVmdCAqLworCQlkbWFfZmVuY2Vfc2lnbmFsKCZjaGFp bi0+YmFzZSk7Cit9CisKK3N0YXRpYyB2b2lkIGRtYV9mZW5jZV9jaGFpbl9jYihzdHJ1Y3QgZG1h X2ZlbmNlICpmLCBzdHJ1Y3QgZG1hX2ZlbmNlX2NiICpjYikKK3sKKwlzdHJ1Y3QgZG1hX2ZlbmNl X2NoYWluICpjaGFpbjsKKworCWNoYWluID0gY29udGFpbmVyX29mKGNiLCB0eXBlb2YoKmNoYWlu KSwgY2IpOworCWlycV93b3JrX3F1ZXVlKCZjaGFpbi0+d29yayk7CisJZG1hX2ZlbmNlX3B1dChm KTsKK30KKworc3RhdGljIGJvb2wgZG1hX2ZlbmNlX2NoYWluX2VuYWJsZV9zaWduYWxpbmcoc3Ry dWN0IGRtYV9mZW5jZSAqZmVuY2UpCit7CisJc3RydWN0IGRtYV9mZW5jZV9jaGFpbiAqaGVhZCA9 IHRvX2RtYV9mZW5jZV9jaGFpbihmZW5jZSk7CisKKwlkbWFfZmVuY2VfY2hhaW5fZm9yX2VhY2go ZmVuY2UpIHsKKwkJc3RydWN0IGRtYV9mZW5jZV9jaGFpbiAqY2hhaW4gPSB0b19kbWFfZmVuY2Vf Y2hhaW4oZmVuY2UpOworCQlzdHJ1Y3QgZG1hX2ZlbmNlICpmID0gY2hhaW4gPyBjaGFpbi0+ZmVu Y2UgOiBmZW5jZTsKKworCQlkbWFfZmVuY2VfZ2V0KGYpOworCQlpZiAoIWRtYV9mZW5jZV9hZGRf Y2FsbGJhY2soZiwgJmhlYWQtPmNiLCBkbWFfZmVuY2VfY2hhaW5fY2IpKQorCQkJcmV0dXJuIHRy dWU7CisJCWRtYV9mZW5jZV9wdXQoZik7CisJfQorCXJldHVybiBmYWxzZTsKK30KKworc3RhdGlj IGJvb2wgZG1hX2ZlbmNlX2NoYWluX3NpZ25hbGVkKHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQor eworCWRtYV9mZW5jZV9jaGFpbl9mb3JfZWFjaChmZW5jZSkgeworCQlzdHJ1Y3QgZG1hX2ZlbmNl X2NoYWluICpjaGFpbiA9IHRvX2RtYV9mZW5jZV9jaGFpbihmZW5jZSk7CisJCXN0cnVjdCBkbWFf ZmVuY2UgKmYgPSBjaGFpbiA/IGNoYWluLT5mZW5jZSA6IGZlbmNlOworCisJCWlmICghZG1hX2Zl bmNlX2lzX3NpZ25hbGVkKGYpKQorCQkJcmV0dXJuIGZhbHNlOworCX0KKworCXJldHVybiB0cnVl OworfQorCitzdGF0aWMgdm9pZCBkbWFfZmVuY2VfY2hhaW5fcmVsZWFzZShzdHJ1Y3QgZG1hX2Zl bmNlICpmZW5jZSkKK3sKKwlzdHJ1Y3QgZG1hX2ZlbmNlX2NoYWluICpjaGFpbiA9IHRvX2RtYV9m ZW5jZV9jaGFpbihmZW5jZSk7CisKKwlkbWFfZmVuY2VfcHV0KGNoYWluLT5wcmV2KTsKKwlkbWFf ZmVuY2VfcHV0KGNoYWluLT5mZW5jZSk7CisJZG1hX2ZlbmNlX2ZyZWUoZmVuY2UpOworfQorCitj b25zdCBzdHJ1Y3QgZG1hX2ZlbmNlX29wcyBkbWFfZmVuY2VfY2hhaW5fb3BzID0geworCS5nZXRf ZHJpdmVyX25hbWUgPSBkbWFfZmVuY2VfY2hhaW5fZ2V0X2RyaXZlcl9uYW1lLAorCS5nZXRfdGlt ZWxpbmVfbmFtZSA9IGRtYV9mZW5jZV9jaGFpbl9nZXRfdGltZWxpbmVfbmFtZSwKKwkuZW5hYmxl X3NpZ25hbGluZyA9IGRtYV9mZW5jZV9jaGFpbl9lbmFibGVfc2lnbmFsaW5nLAorCS5zaWduYWxl ZCA9IGRtYV9mZW5jZV9jaGFpbl9zaWduYWxlZCwKKwkucmVsZWFzZSA9IGRtYV9mZW5jZV9jaGFp bl9yZWxlYXNlLAorfTsKK0VYUE9SVF9TWU1CT0woZG1hX2ZlbmNlX2NoYWluX29wcyk7CisKKy8q KgorICogZG1hX2ZlbmNlX2NoYWluX2luaXQgLSBpbml0aWFsaXplIGEgZmVuY2UgY2hhaW4KKyAq IEBjaGFpbjogdGhlIGNoYWluIG5vZGUgdG8gaW5pdGlhbGl6ZQorICogQHByZXY6IHRoZSBwcmV2 aW91cyBmZW5jZQorICogQGZlbmNlOiB0aGUgY3VycmVudCBmZW5jZQorICoKKyAqIEluaXRpYWxp emUgYSBuZXcgY2hhaW4gbm9kZSBhbmQgZWl0aGVyIHN0YXJ0IGEgbmV3IGNoYWluIG9yIGFkZCB0 aGUgbm9kZSB0bworICogdGhlIGV4aXN0aW5nIGNoYWluIG9mIHRoZSBwcmV2aW91cyBmZW5jZS4K KyAqLwordm9pZCBkbWFfZmVuY2VfY2hhaW5faW5pdChzdHJ1Y3QgZG1hX2ZlbmNlX2NoYWluICpj aGFpbiwKKwkJCSAgc3RydWN0IGRtYV9mZW5jZSAqcHJldiwKKwkJCSAgc3RydWN0IGRtYV9mZW5j ZSAqZmVuY2UsCisJCQkgIHVpbnQ2NF90IHNlcW5vKQoreworCXVpbnQ2NF90IGNvbnRleHQ7CisK KwkvKiBUcnkgdG8gcmV1c2UgdGhlIGNvbnRleHQgb2YgdGhlIHByZXZpb3VzIGNoYWluIG5vZGUu ICovCisJaWYgKHRvX2RtYV9mZW5jZV9jaGFpbihwcmV2KSAmJgorCSAgICBfX2RtYV9mZW5jZV9p c19sYXRlcihzZXFubywgcHJldi0+c2Vxbm8pKQorCQljb250ZXh0ID0gcHJldi0+Y29udGV4dDsK KwllbHNlCisJCWNvbnRleHQgPSBkbWFfZmVuY2VfY29udGV4dF9hbGxvYygxKTsKKworCXNwaW5f bG9ja19pbml0KCZjaGFpbi0+bG9jayk7CisJZG1hX2ZlbmNlX2luaXQoJmNoYWluLT5iYXNlLCAm ZG1hX2ZlbmNlX2NoYWluX29wcywKKwkJICAgICAgICZjaGFpbi0+bG9jaywgY29udGV4dCwgc2Vx bm8pOworCWNoYWluLT5wcmV2ID0gcHJldjsKKwljaGFpbi0+ZmVuY2UgPSBmZW5jZTsKKwlpbml0 X2lycV93b3JrKCZjaGFpbi0+d29yaywgZG1hX2ZlbmNlX2NoYWluX2lycV93b3JrKTsKK30KK0VY UE9SVF9TWU1CT0woZG1hX2ZlbmNlX2NoYWluX2luaXQpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9s aW51eC9kbWEtZmVuY2UtY2hhaW4uaCBiL2luY2x1ZGUvbGludXgvZG1hLWZlbmNlLWNoYWluLmgK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wZTI5NTY5OGZjZjgKLS0t IC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2xpbnV4L2RtYS1mZW5jZS1jaGFpbi5oCkBAIC0wLDAg KzEsNjkgQEAKKy8qCisgKiBmZW5jZS1jaGFpbjogY2hhaW4gZmVuY2VzIHRvZ2V0aGVyIGluIGEg dGltZWxpbmUKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQWR2YW5jZWQgTWljcm8gRGV2aWNl cywgSW5jLgorICogQXV0aG9yczoKKyAqCUNocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2Vu aWdAYW1kLmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMgcHVibGlzaGVkIGJ5 CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lU SE9VVAorICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YgTUVSQ0hBTlRBQklMSVRZIG9yCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCisgKiBtb3JlIGRldGFp bHMuCisgKi8KKworI2lmbmRlZiBfX0xJTlVYX0RNQV9GRU5DRV9DSEFJTl9ICisjZGVmaW5lIF9f TElOVVhfRE1BX0ZFTkNFX0NIQUlOX0gKKworI2luY2x1ZGUgPGxpbnV4L2RtYS1mZW5jZS5oPgor I2luY2x1ZGUgPGxpbnV4L2lycV93b3JrLmg+CisKKy8qKgorICogc3RydWN0IGRtYV9mZW5jZV9j aGFpbiAtIGZlbmNlIHRvIHJlcHJlc2VudCBhbiBub2RlIG9mIGEgZmVuY2UgY2hhaW4KKyAqIEBi YXNlOiBmZW5jZSBiYXNlIGNsYXNzCisgKiBAbG9jazogc3BpbmxvY2sgZm9yIGZlbmNlIGhhbmRs aW5nCisgKiBAcHJldjogcHJldmlvdXMgZmVuY2Ugb2YgdGhlIGNoYWluCisgKiBAZmVuY2U6IGVu Y2Fwc3VsYXRlZCBmZW5jZQorICogQGNiOiBjYWxsYmFjayBzdHJ1Y3R1cmUgZm9yIHNpZ25hbGlu ZworICogQHdvcms6IGlycSB3b3JrIGl0ZW0gZm9yIHNpZ25hbGluZworICovCitzdHJ1Y3QgZG1h X2ZlbmNlX2NoYWluIHsKKwlzdHJ1Y3QgZG1hX2ZlbmNlIGJhc2U7CisJc3BpbmxvY2tfdCBsb2Nr OworCXN0cnVjdCBkbWFfZmVuY2UgKnByZXY7CisJc3RydWN0IGRtYV9mZW5jZSAqZmVuY2U7CisJ c3RydWN0IGRtYV9mZW5jZV9jYiBjYjsKKwlzdHJ1Y3QgaXJxX3dvcmsgd29yazsKK307CisKK2V4 dGVybiBjb25zdCBzdHJ1Y3QgZG1hX2ZlbmNlX29wcyBkbWFfZmVuY2VfY2hhaW5fb3BzOworCisv KioKKyAqIHRvX2RtYV9mZW5jZV9jaGFpbiAtIGNhc3QgYSBmZW5jZSB0byBhIGRtYV9mZW5jZV9j aGFpbgorICogQGZlbmNlOiBmZW5jZSB0byBjYXN0IHRvIGEgZG1hX2ZlbmNlX2FycmF5CisgKgor ICogUmV0dXJucyBOVUxMIGlmIHRoZSBmZW5jZSBpcyBub3QgYSBkbWFfZmVuY2VfY2hhaW4sCisg KiBvciB0aGUgZG1hX2ZlbmNlX2NoYWluIG90aGVyd2lzZS4KKyAqLworc3RhdGljIGlubGluZSBz dHJ1Y3QgZG1hX2ZlbmNlX2NoYWluICoKK3RvX2RtYV9mZW5jZV9jaGFpbihzdHJ1Y3QgZG1hX2Zl bmNlICpmZW5jZSkKK3sKKwlpZiAoZmVuY2UtPm9wcyAhPSAmZG1hX2ZlbmNlX2NoYWluX29wcykK KwkJcmV0dXJuIE5VTEw7CisKKwlyZXR1cm4gY29udGFpbmVyX29mKGZlbmNlLCBzdHJ1Y3QgZG1h X2ZlbmNlX2NoYWluLCBiYXNlKTsKK30KKworI2RlZmluZSBkbWFfZmVuY2VfY2hhaW5fZm9yX2Vh Y2goZmVuY2UpCVwKKwlmb3IgKGRtYV9mZW5jZV9nZXQoZmVuY2UpO2ZlbmNlO2ZlbmNlPWRtYV9m ZW5jZV9jaGFpbl93YWxrKGZlbmNlKSkKKworc3RydWN0IGRtYV9mZW5jZSAqZG1hX2ZlbmNlX2No YWluX3dhbGsoc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpOwordm9pZCBkbWFfZmVuY2VfY2hhaW5f aW5pdChzdHJ1Y3QgZG1hX2ZlbmNlX2NoYWluICpjaGFpbiwKKwkJCSAgc3RydWN0IGRtYV9mZW5j ZSAqcHJldiwKKwkJCSAgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UsCisJCQkgIHVpbnQ2NF90IHNl cW5vKTsKKworI2VuZGlmIC8qIF9fTElOVVhfRE1BX0ZFTkNFX0NIQUlOX0ggKi8KLS0gCjIuMTQu MQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRl dmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==