From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chunming Zhou Subject: [PATCH 1/9] dma-buf: add new dma_fence_chain container v7 Date: Mon, 1 Apr 2019 17:50:55 +0800 Message-ID: <20190401095103.9592-2-david1.zhou@amd.com> References: <20190401095103.9592-1-david1.zhou@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190401095103.9592-1-david1.zhou-5C7GfCeVMHo@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, lionel.g.landwerlin-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org, jason-fQELhIk9awXprZlt/sZkLg@public.gmane.org, Christian.Koenig-5C7GfCeVMHo@public.gmane.org, Tobias.Hector-5C7GfCeVMHo@public.gmane.org Cc: =?UTF-8?q?Christian=20K=C3=B6nig?= , =?UTF-8?q?Christian=20K=C3=B6nig?= RnJvbTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2tvZW5pZy5sZWljaHR6dW1lcmtlbkBnbWFpbC5jb20+ CgpMb2NrbGVzcyBjb250YWluZXIgaW1wbGVtZW50YXRpb24gc2ltaWxhciB0byBhIGRtYV9mZW5j ZV9hcnJheSwgYnV0IHdpdGgKb25seSB0d28gZWxlbWVudHMgcGVyIG5vZGUgYW5kIGF1dG9tYXRp YyBnYXJiYWdlIGNvbGxlY3Rpb24uCgp2MjogcHJvcGVybHkgZG9jdW1lbnQgZG1hX2ZlbmNlX2No YWluX2Zvcl9lYWNoLCBhZGQgZG1hX2ZlbmNlX2NoYWluX2ZpbmRfc2Vxbm8sCiAgICBkcm9wIHBy ZXYgcmVmZXJlbmNlIGR1cmluZyBnYXJiYWdlIGNvbGxlY3Rpb24gaWYgaXQncyBub3QgYSBjaGFp biBmZW5jZS4KdjM6IHVzZSBoZWFkIGFuZCBpdGVyYXRvciBmb3IgZG1hX2ZlbmNlX2NoYWluX2Zv cl9lYWNoCnY0OiBmaXggcmVmZXJlbmNlIGNvdW50IGluIGRtYV9mZW5jZV9jaGFpbl9lbmFibGVf c2lnbmFsaW5nCnY1OiBmaXggaXRlcmF0aW9uIHdoZW4gd2Fsa2luZyBlYWNoIGNoYWluIG5vZGUK djY6IGFkZCBfX3JjdSBmb3IgbWVtYmVyICdwcmV2JyBvZiBzdHJ1Y3QgY2hhaW4gbm9kZQp2Nzog Zml4IHJjdSB3YXJuaW5ncyBmcm9tIGtlcm5lbCByb2JvdAoKU2lnbmVkLW9mZi1ieTogQ2hyaXN0 aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgpDYzogTGlvbmVsIExhbmR3ZXJs aW4gPGxpb25lbC5nLmxhbmR3ZXJsaW5AaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogTGlvbmVsIExh bmR3ZXJsaW4gPGxpb25lbC5nLmxhbmR3ZXJsaW5AaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZG1h LWJ1Zi9NYWtlZmlsZSAgICAgICAgICB8ICAgMyArLQogZHJpdmVycy9kbWEtYnVmL2RtYS1mZW5j ZS1jaGFpbi5jIHwgMjQxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogaW5jbHVkZS9s aW51eC9kbWEtZmVuY2UtY2hhaW4uaCAgIHwgIDgxICsrKysrKysrKysKIDMgZmlsZXMgY2hhbmdl ZCwgMzI0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL2RtYS1idWYvZG1hLWZlbmNlLWNoYWluLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNs dWRlL2xpbnV4L2RtYS1mZW5jZS1jaGFpbi5oCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEtYnVm L01ha2VmaWxlIGIvZHJpdmVycy9kbWEtYnVmL01ha2VmaWxlCmluZGV4IDA5MTNhNmNjYWI1YS4u MWYwMDZlMDgzZWI5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2RtYS1idWYvTWFrZWZpbGUKKysrIGIv ZHJpdmVycy9kbWEtYnVmL01ha2VmaWxlCkBAIC0xLDQgKzEsNSBAQAotb2JqLXkgOj0gZG1hLWJ1 Zi5vIGRtYS1mZW5jZS5vIGRtYS1mZW5jZS1hcnJheS5vIHJlc2VydmF0aW9uLm8gc2Vxbm8tZmVu Y2Uubworb2JqLXkgOj0gZG1hLWJ1Zi5vIGRtYS1mZW5jZS5vIGRtYS1mZW5jZS1hcnJheS5vIGRt YS1mZW5jZS1jaGFpbi5vIFwKKwkgcmVzZXJ2YXRpb24ubyBzZXFuby1mZW5jZS5vCiBvYmotJChD T05GSUdfU1lOQ19GSUxFKQkJKz0gc3luY19maWxlLm8KIG9iai0kKENPTkZJR19TV19TWU5DKQkJ Kz0gc3dfc3luYy5vIHN5bmNfZGVidWcubwogb2JqLSQoQ09ORklHX1VETUFCVUYpCQkrPSB1ZG1h YnVmLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtZmVuY2UtY2hhaW4uYyBiL2Ry aXZlcnMvZG1hLWJ1Zi9kbWEtZmVuY2UtY2hhaW4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMDAuLmM3MjlmOThhN2JkMwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMv ZG1hLWJ1Zi9kbWEtZmVuY2UtY2hhaW4uYwpAQCAtMCwwICsxLDI0MSBAQAorLyoKKyAqIGZlbmNl LWNoYWluOiBjaGFpbiBmZW5jZXMgdG9nZXRoZXIgaW4gYSB0aW1lbGluZQorICoKKyAqIENvcHly aWdodCAoQykgMjAxOCBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuCisgKiBBdXRob3JzOgor ICoJQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgorICoKKyAqIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIHZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCisgKiBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IK KyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IKKyAqIG1vcmUgZGV0YWlscy4KKyAqLworCisjaW5jbHVkZSA8 bGludXgvZG1hLWZlbmNlLWNoYWluLmg+CisKK3N0YXRpYyBib29sIGRtYV9mZW5jZV9jaGFpbl9l bmFibGVfc2lnbmFsaW5nKHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKTsKKworLyoqCisgKiBkbWFf ZmVuY2VfY2hhaW5fZ2V0X3ByZXYgLSB1c2UgUkNVIHRvIGdldCBhIHJlZmVyZW5jZSB0byB0aGUg cHJldmlvdXMgZmVuY2UKKyAqIEBjaGFpbjogY2hhaW4gbm9kZSB0byBnZXQgdGhlIHByZXZpb3Vz IG5vZGUgZnJvbQorICoKKyAqIFVzZSBkbWFfZmVuY2VfZ2V0X3JjdV9zYWZlIHRvIGdldCBhIHJl ZmVyZW5jZSB0byB0aGUgcHJldmlvdXMgZmVuY2Ugb2YgdGhlCisgKiBjaGFpbiBub2RlLgorICov CitzdGF0aWMgc3RydWN0IGRtYV9mZW5jZSAqZG1hX2ZlbmNlX2NoYWluX2dldF9wcmV2KHN0cnVj dCBkbWFfZmVuY2VfY2hhaW4gKmNoYWluKQoreworCXN0cnVjdCBkbWFfZmVuY2UgKnByZXY7CisK KwlyY3VfcmVhZF9sb2NrKCk7CisJcHJldiA9IGRtYV9mZW5jZV9nZXRfcmN1X3NhZmUoJmNoYWlu LT5wcmV2KTsKKwlyY3VfcmVhZF91bmxvY2soKTsKKwlyZXR1cm4gcHJldjsKK30KKworLyoqCisg KiBkbWFfZmVuY2VfY2hhaW5fd2FsayAtIGNoYWluIHdhbGtpbmcgZnVuY3Rpb24KKyAqIEBmZW5j ZTogY3VycmVudCBjaGFpbiBub2RlCisgKgorICogV2FsayB0aGUgY2hhaW4gdG8gdGhlIG5leHQg bm9kZS4gUmV0dXJucyB0aGUgbmV4dCBmZW5jZSBvciBOVUxMIGlmIHdlIGFyZSBhdAorICogdGhl IGVuZCBvZiB0aGUgY2hhaW4uIEdhcmJhZ2UgY29sbGVjdHMgY2hhaW4gbm9kZXMgd2hpY2ggYXJl IGFscmVhZHkKKyAqIHNpZ25hbGVkLgorICovCitzdHJ1Y3QgZG1hX2ZlbmNlICpkbWFfZmVuY2Vf Y2hhaW5fd2FsayhzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSkKK3sKKwlzdHJ1Y3QgZG1hX2ZlbmNl X2NoYWluICpjaGFpbiwgKnByZXZfY2hhaW47CisJc3RydWN0IGRtYV9mZW5jZSAqcHJldiwgKnJl cGxhY2VtZW50LCAqdG1wOworCisJY2hhaW4gPSB0b19kbWFfZmVuY2VfY2hhaW4oZmVuY2UpOwor CWlmICghY2hhaW4pIHsKKwkJZG1hX2ZlbmNlX3B1dChmZW5jZSk7CisJCXJldHVybiBOVUxMOwor CX0KKworCXdoaWxlICgocHJldiA9IGRtYV9mZW5jZV9jaGFpbl9nZXRfcHJldihjaGFpbikpKSB7 CisKKwkJcHJldl9jaGFpbiA9IHRvX2RtYV9mZW5jZV9jaGFpbihwcmV2KTsKKwkJaWYgKHByZXZf Y2hhaW4pIHsKKwkJCWlmICghZG1hX2ZlbmNlX2lzX3NpZ25hbGVkKHByZXZfY2hhaW4tPmZlbmNl KSkKKwkJCQlicmVhazsKKworCQkJcmVwbGFjZW1lbnQgPSBkbWFfZmVuY2VfY2hhaW5fZ2V0X3By ZXYocHJldl9jaGFpbik7CisJCX0gZWxzZSB7CisJCQlpZiAoIWRtYV9mZW5jZV9pc19zaWduYWxl ZChwcmV2KSkKKwkJCQlicmVhazsKKworCQkJcmVwbGFjZW1lbnQgPSBOVUxMOworCQl9CisKKwkJ dG1wID0gY21weGNoZygodm9pZCAqKikmY2hhaW4tPnByZXYsICh2b2lkICopcHJldiwgKHZvaWQg KilyZXBsYWNlbWVudCk7CisJCWlmICh0bXAgPT0gcHJldikKKwkJCWRtYV9mZW5jZV9wdXQodG1w KTsKKwkJZWxzZQorCQkJZG1hX2ZlbmNlX3B1dChyZXBsYWNlbWVudCk7CisJCWRtYV9mZW5jZV9w dXQocHJldik7CisJfQorCisJZG1hX2ZlbmNlX3B1dChmZW5jZSk7CisJcmV0dXJuIHByZXY7Cit9 CitFWFBPUlRfU1lNQk9MKGRtYV9mZW5jZV9jaGFpbl93YWxrKTsKKworLyoqCisgKiBkbWFfZmVu Y2VfY2hhaW5fZmluZF9zZXFubyAtIGZpbmQgZmVuY2UgY2hhaW4gbm9kZSBieSBzZXFubworICog QHBmZW5jZTogcG9pbnRlciB0byB0aGUgY2hhaW4gbm9kZSB3aGVyZSB0byBzdGFydAorICogQHNl cW5vOiB0aGUgc2VxdWVuY2UgbnVtYmVyIHRvIHNlYXJjaCBmb3IKKyAqCisgKiBBZHZhbmNlIHRo ZSBmZW5jZSBwb2ludGVyIHRvIHRoZSBjaGFpbiBub2RlIHdoaWNoIHdpbGwgc2lnbmFsIHRoaXMg c2VxdWVuY2UKKyAqIG51bWJlci4gSWYgbm8gc2VxdWVuY2UgbnVtYmVyIGlzIHByb3ZpZGVkIHRo ZW4gdGhpcyBpcyBhIG5vLW9wLgorICoKKyAqIFJldHVybnMgRUlOVkFMIGlmIHRoZSBmZW5jZSBp cyBub3QgYSBjaGFpbiBub2RlIG9yIHRoZSBzZXF1ZW5jZSBudW1iZXIgaGFzCisgKiBub3QgeWV0 IGFkdmFuY2VkIGZhciBlbm91Z2guCisgKi8KK2ludCBkbWFfZmVuY2VfY2hhaW5fZmluZF9zZXFu byhzdHJ1Y3QgZG1hX2ZlbmNlICoqcGZlbmNlLCB1aW50NjRfdCBzZXFubykKK3sKKwlzdHJ1Y3Qg ZG1hX2ZlbmNlX2NoYWluICpjaGFpbjsKKworCWlmICghc2Vxbm8pCisJCXJldHVybiAwOworCisJ Y2hhaW4gPSB0b19kbWFfZmVuY2VfY2hhaW4oKnBmZW5jZSk7CisJaWYgKCFjaGFpbiB8fCBjaGFp bi0+YmFzZS5zZXFubyA8IHNlcW5vKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWRtYV9mZW5jZV9j aGFpbl9mb3JfZWFjaCgqcGZlbmNlLCAmY2hhaW4tPmJhc2UpIHsKKwkJaWYgKCgqcGZlbmNlKS0+ Y29udGV4dCAhPSBjaGFpbi0+YmFzZS5jb250ZXh0IHx8CisJCSAgICB0b19kbWFfZmVuY2VfY2hh aW4oKnBmZW5jZSktPnByZXZfc2Vxbm8gPCBzZXFubykKKwkJCWJyZWFrOworCX0KKwlkbWFfZmVu Y2VfcHV0KCZjaGFpbi0+YmFzZSk7CisKKwlyZXR1cm4gMDsKK30KK0VYUE9SVF9TWU1CT0woZG1h X2ZlbmNlX2NoYWluX2ZpbmRfc2Vxbm8pOworCitzdGF0aWMgY29uc3QgY2hhciAqZG1hX2ZlbmNl X2NoYWluX2dldF9kcml2ZXJfbmFtZShzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSkKK3sKKyAgICAg ICAgcmV0dXJuICJkbWFfZmVuY2VfY2hhaW4iOworfQorCitzdGF0aWMgY29uc3QgY2hhciAqZG1h X2ZlbmNlX2NoYWluX2dldF90aW1lbGluZV9uYW1lKHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQor eworICAgICAgICByZXR1cm4gInVuYm91bmQiOworfQorCitzdGF0aWMgdm9pZCBkbWFfZmVuY2Vf Y2hhaW5faXJxX3dvcmsoc3RydWN0IGlycV93b3JrICp3b3JrKQoreworCXN0cnVjdCBkbWFfZmVu Y2VfY2hhaW4gKmNoYWluOworCisJY2hhaW4gPSBjb250YWluZXJfb2Yod29yaywgdHlwZW9mKCpj aGFpbiksIHdvcmspOworCisJLyogVHJ5IHRvIHJlYXJtIHRoZSBjYWxsYmFjayAqLworCWlmICgh ZG1hX2ZlbmNlX2NoYWluX2VuYWJsZV9zaWduYWxpbmcoJmNoYWluLT5iYXNlKSkKKwkJLyogT2ss IHdlIGFyZSBkb25lLiBObyBtb3JlIHVuc2lnbmFsZWQgZmVuY2VzIGxlZnQgKi8KKwkJZG1hX2Zl bmNlX3NpZ25hbCgmY2hhaW4tPmJhc2UpOworCWRtYV9mZW5jZV9wdXQoJmNoYWluLT5iYXNlKTsK K30KKworc3RhdGljIHZvaWQgZG1hX2ZlbmNlX2NoYWluX2NiKHN0cnVjdCBkbWFfZmVuY2UgKmYs IHN0cnVjdCBkbWFfZmVuY2VfY2IgKmNiKQoreworCXN0cnVjdCBkbWFfZmVuY2VfY2hhaW4gKmNo YWluOworCisJY2hhaW4gPSBjb250YWluZXJfb2YoY2IsIHR5cGVvZigqY2hhaW4pLCBjYik7CisJ aXJxX3dvcmtfcXVldWUoJmNoYWluLT53b3JrKTsKKwlkbWFfZmVuY2VfcHV0KGYpOworfQorCitz dGF0aWMgYm9vbCBkbWFfZmVuY2VfY2hhaW5fZW5hYmxlX3NpZ25hbGluZyhzdHJ1Y3QgZG1hX2Zl bmNlICpmZW5jZSkKK3sKKwlzdHJ1Y3QgZG1hX2ZlbmNlX2NoYWluICpoZWFkID0gdG9fZG1hX2Zl bmNlX2NoYWluKGZlbmNlKTsKKworCWRtYV9mZW5jZV9nZXQoJmhlYWQtPmJhc2UpOworCWRtYV9m ZW5jZV9jaGFpbl9mb3JfZWFjaChmZW5jZSwgJmhlYWQtPmJhc2UpIHsKKwkJc3RydWN0IGRtYV9m ZW5jZV9jaGFpbiAqY2hhaW4gPSB0b19kbWFfZmVuY2VfY2hhaW4oZmVuY2UpOworCQlzdHJ1Y3Qg ZG1hX2ZlbmNlICpmID0gY2hhaW4gPyBjaGFpbi0+ZmVuY2UgOiBmZW5jZTsKKworCQlkbWFfZmVu Y2VfZ2V0KGYpOworCQlpZiAoIWRtYV9mZW5jZV9hZGRfY2FsbGJhY2soZiwgJmhlYWQtPmNiLCBk bWFfZmVuY2VfY2hhaW5fY2IpKSB7CisJCQlkbWFfZmVuY2VfcHV0KGZlbmNlKTsKKwkJCXJldHVy biB0cnVlOworCQl9CisJCWRtYV9mZW5jZV9wdXQoZik7CisJfQorCWRtYV9mZW5jZV9wdXQoJmhl YWQtPmJhc2UpOworCXJldHVybiBmYWxzZTsKK30KKworc3RhdGljIGJvb2wgZG1hX2ZlbmNlX2No YWluX3NpZ25hbGVkKHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQoreworCWRtYV9mZW5jZV9jaGFp bl9mb3JfZWFjaChmZW5jZSwgZmVuY2UpIHsKKwkJc3RydWN0IGRtYV9mZW5jZV9jaGFpbiAqY2hh aW4gPSB0b19kbWFfZmVuY2VfY2hhaW4oZmVuY2UpOworCQlzdHJ1Y3QgZG1hX2ZlbmNlICpmID0g Y2hhaW4gPyBjaGFpbi0+ZmVuY2UgOiBmZW5jZTsKKworCQlpZiAoIWRtYV9mZW5jZV9pc19zaWdu YWxlZChmKSkgeworCQkJZG1hX2ZlbmNlX3B1dChmZW5jZSk7CisJCQlyZXR1cm4gZmFsc2U7CisJ CX0KKwl9CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgZG1hX2ZlbmNlX2NoYWlu X3JlbGVhc2Uoc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpCit7CisJc3RydWN0IGRtYV9mZW5jZV9j aGFpbiAqY2hhaW4gPSB0b19kbWFfZmVuY2VfY2hhaW4oZmVuY2UpOworCisJZG1hX2ZlbmNlX3B1 dChyY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGNoYWluLT5wcmV2LCB0cnVlKSk7CisJZG1hX2Zl bmNlX3B1dChjaGFpbi0+ZmVuY2UpOworCWRtYV9mZW5jZV9mcmVlKGZlbmNlKTsKK30KKworY29u c3Qgc3RydWN0IGRtYV9mZW5jZV9vcHMgZG1hX2ZlbmNlX2NoYWluX29wcyA9IHsKKwkuZ2V0X2Ry aXZlcl9uYW1lID0gZG1hX2ZlbmNlX2NoYWluX2dldF9kcml2ZXJfbmFtZSwKKwkuZ2V0X3RpbWVs aW5lX25hbWUgPSBkbWFfZmVuY2VfY2hhaW5fZ2V0X3RpbWVsaW5lX25hbWUsCisJLmVuYWJsZV9z aWduYWxpbmcgPSBkbWFfZmVuY2VfY2hhaW5fZW5hYmxlX3NpZ25hbGluZywKKwkuc2lnbmFsZWQg PSBkbWFfZmVuY2VfY2hhaW5fc2lnbmFsZWQsCisJLnJlbGVhc2UgPSBkbWFfZmVuY2VfY2hhaW5f cmVsZWFzZSwKK307CitFWFBPUlRfU1lNQk9MKGRtYV9mZW5jZV9jaGFpbl9vcHMpOworCisvKioK KyAqIGRtYV9mZW5jZV9jaGFpbl9pbml0IC0gaW5pdGlhbGl6ZSBhIGZlbmNlIGNoYWluCisgKiBA Y2hhaW46IHRoZSBjaGFpbiBub2RlIHRvIGluaXRpYWxpemUKKyAqIEBwcmV2OiB0aGUgcHJldmlv dXMgZmVuY2UKKyAqIEBmZW5jZTogdGhlIGN1cnJlbnQgZmVuY2UKKyAqCisgKiBJbml0aWFsaXpl IGEgbmV3IGNoYWluIG5vZGUgYW5kIGVpdGhlciBzdGFydCBhIG5ldyBjaGFpbiBvciBhZGQgdGhl IG5vZGUgdG8KKyAqIHRoZSBleGlzdGluZyBjaGFpbiBvZiB0aGUgcHJldmlvdXMgZmVuY2UuCisg Ki8KK3ZvaWQgZG1hX2ZlbmNlX2NoYWluX2luaXQoc3RydWN0IGRtYV9mZW5jZV9jaGFpbiAqY2hh aW4sCisJCQkgIHN0cnVjdCBkbWFfZmVuY2UgKnByZXYsCisJCQkgIHN0cnVjdCBkbWFfZmVuY2Ug KmZlbmNlLAorCQkJICB1aW50NjRfdCBzZXFubykKK3sKKwlzdHJ1Y3QgZG1hX2ZlbmNlX2NoYWlu ICpwcmV2X2NoYWluID0gdG9fZG1hX2ZlbmNlX2NoYWluKHByZXYpOworCXVpbnQ2NF90IGNvbnRl eHQ7CisKKwlzcGluX2xvY2tfaW5pdCgmY2hhaW4tPmxvY2spOworCXJjdV9hc3NpZ25fcG9pbnRl cihjaGFpbi0+cHJldiwgcHJldik7CisJY2hhaW4tPmZlbmNlID0gZmVuY2U7CisJY2hhaW4tPnBy ZXZfc2Vxbm8gPSAwOworCWluaXRfaXJxX3dvcmsoJmNoYWluLT53b3JrLCBkbWFfZmVuY2VfY2hh aW5faXJxX3dvcmspOworCisJLyogVHJ5IHRvIHJldXNlIHRoZSBjb250ZXh0IG9mIHRoZSBwcmV2 aW91cyBjaGFpbiBub2RlLiAqLworCWlmIChwcmV2X2NoYWluICYmIF9fZG1hX2ZlbmNlX2lzX2xh dGVyKHNlcW5vLCBwcmV2LT5zZXFubykpIHsKKwkJY29udGV4dCA9IHByZXYtPmNvbnRleHQ7CisJ CWNoYWluLT5wcmV2X3NlcW5vID0gcHJldi0+c2Vxbm87CisJfSBlbHNlIHsKKwkJY29udGV4dCA9 IGRtYV9mZW5jZV9jb250ZXh0X2FsbG9jKDEpOworCQkvKiBNYWtlIHN1cmUgdGhhdCB3ZSBhbHdh eXMgaGF2ZSBhIHZhbGlkIHNlcXVlbmNlIG51bWJlci4gKi8KKwkJaWYgKHByZXZfY2hhaW4pCisJ CQlzZXFubyA9IG1heChwcmV2LT5zZXFubywgc2Vxbm8pOworCX0KKworCWRtYV9mZW5jZV9pbml0 KCZjaGFpbi0+YmFzZSwgJmRtYV9mZW5jZV9jaGFpbl9vcHMsCisJCSAgICAgICAmY2hhaW4tPmxv Y2ssIGNvbnRleHQsIHNlcW5vKTsKK30KK0VYUE9SVF9TWU1CT0woZG1hX2ZlbmNlX2NoYWluX2lu aXQpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kbWEtZmVuY2UtY2hhaW4uaCBiL2luY2x1 ZGUvbGludXgvZG1hLWZlbmNlLWNoYWluLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwLi45MzRhNDQyZGI4YWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2xpbnV4 L2RtYS1mZW5jZS1jaGFpbi5oCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBmZW5jZS1jaGFpbjog Y2hhaW4gZmVuY2VzIHRvZ2V0aGVyIGluIGEgdGltZWxpbmUKKyAqCisgKiBDb3B5cmlnaHQgKEMp IDIwMTggQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLgorICogQXV0aG9yczoKKyAqCUNocmlz dGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KKyAqCisgKiBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eSBpdAorICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSB2ZXJzaW9uIDIgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAorICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yCisgKiBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yCisgKiBtb3JlIGRldGFpbHMuCisgKi8KKworI2lmbmRlZiBfX0xJTlVYX0RN QV9GRU5DRV9DSEFJTl9ICisjZGVmaW5lIF9fTElOVVhfRE1BX0ZFTkNFX0NIQUlOX0gKKworI2lu Y2x1ZGUgPGxpbnV4L2RtYS1mZW5jZS5oPgorI2luY2x1ZGUgPGxpbnV4L2lycV93b3JrLmg+CisK Ky8qKgorICogc3RydWN0IGRtYV9mZW5jZV9jaGFpbiAtIGZlbmNlIHRvIHJlcHJlc2VudCBhbiBu b2RlIG9mIGEgZmVuY2UgY2hhaW4KKyAqIEBiYXNlOiBmZW5jZSBiYXNlIGNsYXNzCisgKiBAbG9j azogc3BpbmxvY2sgZm9yIGZlbmNlIGhhbmRsaW5nCisgKiBAcHJldjogcHJldmlvdXMgZmVuY2Ug b2YgdGhlIGNoYWluCisgKiBAcHJldl9zZXFubzogb3JpZ2luYWwgcHJldmlvdXMgc2Vxbm8gYmVm b3JlIGdhcmJhZ2UgY29sbGVjdGlvbgorICogQGZlbmNlOiBlbmNhcHN1bGF0ZWQgZmVuY2UKKyAq IEBjYjogY2FsbGJhY2sgc3RydWN0dXJlIGZvciBzaWduYWxpbmcKKyAqIEB3b3JrOiBpcnEgd29y ayBpdGVtIGZvciBzaWduYWxpbmcKKyAqLworc3RydWN0IGRtYV9mZW5jZV9jaGFpbiB7CisJc3Ry dWN0IGRtYV9mZW5jZSBiYXNlOworCXNwaW5sb2NrX3QgbG9jazsKKwlzdHJ1Y3QgZG1hX2ZlbmNl IF9fcmN1ICpwcmV2OworCXU2NCBwcmV2X3NlcW5vOworCXN0cnVjdCBkbWFfZmVuY2UgKmZlbmNl OworCXN0cnVjdCBkbWFfZmVuY2VfY2IgY2I7CisJc3RydWN0IGlycV93b3JrIHdvcms7Cit9Owor CitleHRlcm4gY29uc3Qgc3RydWN0IGRtYV9mZW5jZV9vcHMgZG1hX2ZlbmNlX2NoYWluX29wczsK KworLyoqCisgKiB0b19kbWFfZmVuY2VfY2hhaW4gLSBjYXN0IGEgZmVuY2UgdG8gYSBkbWFfZmVu Y2VfY2hhaW4KKyAqIEBmZW5jZTogZmVuY2UgdG8gY2FzdCB0byBhIGRtYV9mZW5jZV9hcnJheQor ICoKKyAqIFJldHVybnMgTlVMTCBpZiB0aGUgZmVuY2UgaXMgbm90IGEgZG1hX2ZlbmNlX2NoYWlu LAorICogb3IgdGhlIGRtYV9mZW5jZV9jaGFpbiBvdGhlcndpc2UuCisgKi8KK3N0YXRpYyBpbmxp bmUgc3RydWN0IGRtYV9mZW5jZV9jaGFpbiAqCit0b19kbWFfZmVuY2VfY2hhaW4oc3RydWN0IGRt YV9mZW5jZSAqZmVuY2UpCit7CisJaWYgKCFmZW5jZSB8fCBmZW5jZS0+b3BzICE9ICZkbWFfZmVu Y2VfY2hhaW5fb3BzKQorCQlyZXR1cm4gTlVMTDsKKworCXJldHVybiBjb250YWluZXJfb2YoZmVu Y2UsIHN0cnVjdCBkbWFfZmVuY2VfY2hhaW4sIGJhc2UpOworfQorCisvKioKKyAqIGRtYV9mZW5j ZV9jaGFpbl9mb3JfZWFjaCAtIGl0ZXJhdGUgb3ZlciBhbGwgZmVuY2VzIGluIGNoYWluCisgKiBA aXRlcjogY3VycmVudCBmZW5jZQorICogQGhlYWQ6IHN0YXJ0aW5nIHBvaW50CisgKgorICogSXRl cmF0ZSBvdmVyIGFsbCBmZW5jZXMgaW4gdGhlIGNoYWluLiBXZSBrZWVwIGEgcmVmZXJlbmNlIHRv IHRoZSBjdXJyZW50CisgKiBmZW5jZSB3aGlsZSBpbnNpZGUgdGhlIGxvb3Agd2hpY2ggbXVzdCBi ZSBkcm9wcGVkIHdoZW4gYnJlYWtpbmcgb3V0LgorICovCisjZGVmaW5lIGRtYV9mZW5jZV9jaGFp bl9mb3JfZWFjaChpdGVyLCBoZWFkKQlcCisJZm9yIChpdGVyID0gZG1hX2ZlbmNlX2dldChoZWFk KTsgaXRlcjsgXAorCSAgICAgaXRlciA9IGRtYV9mZW5jZV9jaGFpbl93YWxrKGl0ZXIpKQorCitz dHJ1Y3QgZG1hX2ZlbmNlICpkbWFfZmVuY2VfY2hhaW5fd2FsayhzdHJ1Y3QgZG1hX2ZlbmNlICpm ZW5jZSk7CitpbnQgZG1hX2ZlbmNlX2NoYWluX2ZpbmRfc2Vxbm8oc3RydWN0IGRtYV9mZW5jZSAq KnBmZW5jZSwgdWludDY0X3Qgc2Vxbm8pOwordm9pZCBkbWFfZmVuY2VfY2hhaW5faW5pdChzdHJ1 Y3QgZG1hX2ZlbmNlX2NoYWluICpjaGFpbiwKKwkJCSAgc3RydWN0IGRtYV9mZW5jZSAqcHJldiwK KwkJCSAgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UsCisJCQkgIHVpbnQ2NF90IHNlcW5vKTsKKwor I2VuZGlmIC8qIF9fTElOVVhfRE1BX0ZFTkNFX0NIQUlOX0ggKi8KLS0gCjIuMTcuMQoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5n IGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4