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, 25 Mar 2019 16:32:16 +0800 Message-ID: <20190325083224.2983-1-david1.zhou@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: 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 aW4gPGxpb25lbC5nLmxhbmR3ZXJsaW5AaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZG1hLWJ1Zi9N YWtlZmlsZSAgICAgICAgICB8ICAgMyArLQogZHJpdmVycy9kbWEtYnVmL2RtYS1mZW5jZS1jaGFp bi5jIHwgMjQxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogaW5jbHVkZS9saW51eC9k bWEtZmVuY2UtY2hhaW4uaCAgIHwgIDgxICsrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMzI0 IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2RtYS1idWYvZG1hLWZlbmNlLWNoYWluLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2xp bnV4L2RtYS1mZW5jZS1jaGFpbi5oCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEtYnVmL01ha2Vm aWxlIGIvZHJpdmVycy9kbWEtYnVmL01ha2VmaWxlCmluZGV4IDA5MTNhNmNjYWI1YS4uMWYwMDZl MDgzZWI5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2RtYS1idWYvTWFrZWZpbGUKKysrIGIvZHJpdmVy cy9kbWEtYnVmL01ha2VmaWxlCkBAIC0xLDQgKzEsNSBAQAotb2JqLXkgOj0gZG1hLWJ1Zi5vIGRt YS1mZW5jZS5vIGRtYS1mZW5jZS1hcnJheS5vIHJlc2VydmF0aW9uLm8gc2Vxbm8tZmVuY2Uubwor b2JqLXkgOj0gZG1hLWJ1Zi5vIGRtYS1mZW5jZS5vIGRtYS1mZW5jZS1hcnJheS5vIGRtYS1mZW5j ZS1jaGFpbi5vIFwKKwkgcmVzZXJ2YXRpb24ubyBzZXFuby1mZW5jZS5vCiBvYmotJChDT05GSUdf U1lOQ19GSUxFKQkJKz0gc3luY19maWxlLm8KIG9iai0kKENPTkZJR19TV19TWU5DKQkJKz0gc3df c3luYy5vIHN5bmNfZGVidWcubwogb2JqLSQoQ09ORklHX1VETUFCVUYpCQkrPSB1ZG1hYnVmLm8K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtZmVuY2UtY2hhaW4uYyBiL2RyaXZlcnMv ZG1hLWJ1Zi9kbWEtZmVuY2UtY2hhaW4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAuLmM3MjlmOThhN2JkMwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZG1hLWJ1 Zi9kbWEtZmVuY2UtY2hhaW4uYwpAQCAtMCwwICsxLDI0MSBAQAorLyoKKyAqIGZlbmNlLWNoYWlu 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 ICpjaGFpbiwgKnByZXZfY2hhaW47CisJc3RydWN0IGRtYV9mZW5jZSAqcHJldiwgKnJlcGxhY2Vt ZW50LCAqdG1wOworCisJY2hhaW4gPSB0b19kbWFfZmVuY2VfY2hhaW4oZmVuY2UpOworCWlmICgh Y2hhaW4pIHsKKwkJZG1hX2ZlbmNlX3B1dChmZW5jZSk7CisJCXJldHVybiBOVUxMOworCX0KKwor CXdoaWxlICgocHJldiA9IGRtYV9mZW5jZV9jaGFpbl9nZXRfcHJldihjaGFpbikpKSB7CisKKwkJ cHJldl9jaGFpbiA9IHRvX2RtYV9mZW5jZV9jaGFpbihwcmV2KTsKKwkJaWYgKHByZXZfY2hhaW4p IHsKKwkJCWlmICghZG1hX2ZlbmNlX2lzX3NpZ25hbGVkKHByZXZfY2hhaW4tPmZlbmNlKSkKKwkJ CQlicmVhazsKKworCQkJcmVwbGFjZW1lbnQgPSBkbWFfZmVuY2VfY2hhaW5fZ2V0X3ByZXYocHJl dl9jaGFpbik7CisJCX0gZWxzZSB7CisJCQlpZiAoIWRtYV9mZW5jZV9pc19zaWduYWxlZChwcmV2 KSkKKwkJCQlicmVhazsKKworCQkJcmVwbGFjZW1lbnQgPSBOVUxMOworCQl9CisKKwkJdG1wID0g Y21weGNoZygodm9pZCAqKikmY2hhaW4tPnByZXYsICh2b2lkICopcHJldiwgKHZvaWQgKilyZXBs YWNlbWVudCk7CisJCWlmICh0bXAgPT0gcHJldikKKwkJCWRtYV9mZW5jZV9wdXQodG1wKTsKKwkJ ZWxzZQorCQkJZG1hX2ZlbmNlX3B1dChyZXBsYWNlbWVudCk7CisJCWRtYV9mZW5jZV9wdXQocHJl dik7CisJfQorCisJZG1hX2ZlbmNlX3B1dChmZW5jZSk7CisJcmV0dXJuIHByZXY7Cit9CitFWFBP UlRfU1lNQk9MKGRtYV9mZW5jZV9jaGFpbl93YWxrKTsKKworLyoqCisgKiBkbWFfZmVuY2VfY2hh aW5fZmluZF9zZXFubyAtIGZpbmQgZmVuY2UgY2hhaW4gbm9kZSBieSBzZXFubworICogQHBmZW5j ZTogcG9pbnRlciB0byB0aGUgY2hhaW4gbm9kZSB3aGVyZSB0byBzdGFydAorICogQHNlcW5vOiB0 aGUgc2VxdWVuY2UgbnVtYmVyIHRvIHNlYXJjaCBmb3IKKyAqCisgKiBBZHZhbmNlIHRoZSBmZW5j ZSBwb2ludGVyIHRvIHRoZSBjaGFpbiBub2RlIHdoaWNoIHdpbGwgc2lnbmFsIHRoaXMgc2VxdWVu Y2UKKyAqIG51bWJlci4gSWYgbm8gc2VxdWVuY2UgbnVtYmVyIGlzIHByb3ZpZGVkIHRoZW4gdGhp cyBpcyBhIG5vLW9wLgorICoKKyAqIFJldHVybnMgRUlOVkFMIGlmIHRoZSBmZW5jZSBpcyBub3Qg YSBjaGFpbiBub2RlIG9yIHRoZSBzZXF1ZW5jZSBudW1iZXIgaGFzCisgKiBub3QgeWV0IGFkdmFu Y2VkIGZhciBlbm91Z2guCisgKi8KK2ludCBkbWFfZmVuY2VfY2hhaW5fZmluZF9zZXFubyhzdHJ1 Y3QgZG1hX2ZlbmNlICoqcGZlbmNlLCB1aW50NjRfdCBzZXFubykKK3sKKwlzdHJ1Y3QgZG1hX2Zl bmNlX2NoYWluICpjaGFpbjsKKworCWlmICghc2Vxbm8pCisJCXJldHVybiAwOworCisJY2hhaW4g PSB0b19kbWFfZmVuY2VfY2hhaW4oKnBmZW5jZSk7CisJaWYgKCFjaGFpbiB8fCBjaGFpbi0+YmFz ZS5zZXFubyA8IHNlcW5vKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWRtYV9mZW5jZV9jaGFpbl9m b3JfZWFjaCgqcGZlbmNlLCAmY2hhaW4tPmJhc2UpIHsKKwkJaWYgKCgqcGZlbmNlKS0+Y29udGV4 dCAhPSBjaGFpbi0+YmFzZS5jb250ZXh0IHx8CisJCSAgICB0b19kbWFfZmVuY2VfY2hhaW4oKnBm ZW5jZSktPnByZXZfc2Vxbm8gPCBzZXFubykKKwkJCWJyZWFrOworCX0KKwlkbWFfZmVuY2VfcHV0 KCZjaGFpbi0+YmFzZSk7CisKKwlyZXR1cm4gMDsKK30KK0VYUE9SVF9TWU1CT0woZG1hX2ZlbmNl X2NoYWluX2ZpbmRfc2Vxbm8pOworCitzdGF0aWMgY29uc3QgY2hhciAqZG1hX2ZlbmNlX2NoYWlu X2dldF9kcml2ZXJfbmFtZShzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSkKK3sKKyAgICAgICAgcmV0 dXJuICJkbWFfZmVuY2VfY2hhaW4iOworfQorCitzdGF0aWMgY29uc3QgY2hhciAqZG1hX2ZlbmNl X2NoYWluX2dldF90aW1lbGluZV9uYW1lKHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQoreworICAg ICAgICByZXR1cm4gInVuYm91bmQiOworfQorCitzdGF0aWMgdm9pZCBkbWFfZmVuY2VfY2hhaW5f aXJxX3dvcmsoc3RydWN0IGlycV93b3JrICp3b3JrKQoreworCXN0cnVjdCBkbWFfZmVuY2VfY2hh aW4gKmNoYWluOworCisJY2hhaW4gPSBjb250YWluZXJfb2Yod29yaywgdHlwZW9mKCpjaGFpbiks IHdvcmspOworCisJLyogVHJ5IHRvIHJlYXJtIHRoZSBjYWxsYmFjayAqLworCWlmICghZG1hX2Zl bmNlX2NoYWluX2VuYWJsZV9zaWduYWxpbmcoJmNoYWluLT5iYXNlKSkKKwkJLyogT2ssIHdlIGFy ZSBkb25lLiBObyBtb3JlIHVuc2lnbmFsZWQgZmVuY2VzIGxlZnQgKi8KKwkJZG1hX2ZlbmNlX3Np Z25hbCgmY2hhaW4tPmJhc2UpOworCWRtYV9mZW5jZV9wdXQoJmNoYWluLT5iYXNlKTsKK30KKwor c3RhdGljIHZvaWQgZG1hX2ZlbmNlX2NoYWluX2NiKHN0cnVjdCBkbWFfZmVuY2UgKmYsIHN0cnVj dCBkbWFfZmVuY2VfY2IgKmNiKQoreworCXN0cnVjdCBkbWFfZmVuY2VfY2hhaW4gKmNoYWluOwor CisJY2hhaW4gPSBjb250YWluZXJfb2YoY2IsIHR5cGVvZigqY2hhaW4pLCBjYik7CisJaXJxX3dv cmtfcXVldWUoJmNoYWluLT53b3JrKTsKKwlkbWFfZmVuY2VfcHV0KGYpOworfQorCitzdGF0aWMg Ym9vbCBkbWFfZmVuY2VfY2hhaW5fZW5hYmxlX3NpZ25hbGluZyhzdHJ1Y3QgZG1hX2ZlbmNlICpm ZW5jZSkKK3sKKwlzdHJ1Y3QgZG1hX2ZlbmNlX2NoYWluICpoZWFkID0gdG9fZG1hX2ZlbmNlX2No YWluKGZlbmNlKTsKKworCWRtYV9mZW5jZV9nZXQoJmhlYWQtPmJhc2UpOworCWRtYV9mZW5jZV9j aGFpbl9mb3JfZWFjaChmZW5jZSwgJmhlYWQtPmJhc2UpIHsKKwkJc3RydWN0IGRtYV9mZW5jZV9j aGFpbiAqY2hhaW4gPSB0b19kbWFfZmVuY2VfY2hhaW4oZmVuY2UpOworCQlzdHJ1Y3QgZG1hX2Zl bmNlICpmID0gY2hhaW4gPyBjaGFpbi0+ZmVuY2UgOiBmZW5jZTsKKworCQlkbWFfZmVuY2VfZ2V0 KGYpOworCQlpZiAoIWRtYV9mZW5jZV9hZGRfY2FsbGJhY2soZiwgJmhlYWQtPmNiLCBkbWFfZmVu Y2VfY2hhaW5fY2IpKSB7CisJCQlkbWFfZmVuY2VfcHV0KGZlbmNlKTsKKwkJCXJldHVybiB0cnVl OworCQl9CisJCWRtYV9mZW5jZV9wdXQoZik7CisJfQorCWRtYV9mZW5jZV9wdXQoJmhlYWQtPmJh c2UpOworCXJldHVybiBmYWxzZTsKK30KKworc3RhdGljIGJvb2wgZG1hX2ZlbmNlX2NoYWluX3Np Z25hbGVkKHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQoreworCWRtYV9mZW5jZV9jaGFpbl9mb3Jf ZWFjaChmZW5jZSwgZmVuY2UpIHsKKwkJc3RydWN0IGRtYV9mZW5jZV9jaGFpbiAqY2hhaW4gPSB0 b19kbWFfZmVuY2VfY2hhaW4oZmVuY2UpOworCQlzdHJ1Y3QgZG1hX2ZlbmNlICpmID0gY2hhaW4g PyBjaGFpbi0+ZmVuY2UgOiBmZW5jZTsKKworCQlpZiAoIWRtYV9mZW5jZV9pc19zaWduYWxlZChm KSkgeworCQkJZG1hX2ZlbmNlX3B1dChmZW5jZSk7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KKwl9 CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgZG1hX2ZlbmNlX2NoYWluX3JlbGVh c2Uoc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpCit7CisJc3RydWN0IGRtYV9mZW5jZV9jaGFpbiAq Y2hhaW4gPSB0b19kbWFfZmVuY2VfY2hhaW4oZmVuY2UpOworCisJZG1hX2ZlbmNlX3B1dChyY3Vf ZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGNoYWluLT5wcmV2LCB0cnVlKSk7CisJZG1hX2ZlbmNlX3B1 dChjaGFpbi0+ZmVuY2UpOworCWRtYV9mZW5jZV9mcmVlKGZlbmNlKTsKK30KKworY29uc3Qgc3Ry dWN0IGRtYV9mZW5jZV9vcHMgZG1hX2ZlbmNlX2NoYWluX29wcyA9IHsKKwkuZ2V0X2RyaXZlcl9u YW1lID0gZG1hX2ZlbmNlX2NoYWluX2dldF9kcml2ZXJfbmFtZSwKKwkuZ2V0X3RpbWVsaW5lX25h bWUgPSBkbWFfZmVuY2VfY2hhaW5fZ2V0X3RpbWVsaW5lX25hbWUsCisJLmVuYWJsZV9zaWduYWxp bmcgPSBkbWFfZmVuY2VfY2hhaW5fZW5hYmxlX3NpZ25hbGluZywKKwkuc2lnbmFsZWQgPSBkbWFf ZmVuY2VfY2hhaW5fc2lnbmFsZWQsCisJLnJlbGVhc2UgPSBkbWFfZmVuY2VfY2hhaW5fcmVsZWFz ZSwKK307CitFWFBPUlRfU1lNQk9MKGRtYV9mZW5jZV9jaGFpbl9vcHMpOworCisvKioKKyAqIGRt YV9mZW5jZV9jaGFpbl9pbml0IC0gaW5pdGlhbGl6ZSBhIGZlbmNlIGNoYWluCisgKiBAY2hhaW46 IHRoZSBjaGFpbiBub2RlIHRvIGluaXRpYWxpemUKKyAqIEBwcmV2OiB0aGUgcHJldmlvdXMgZmVu Y2UKKyAqIEBmZW5jZTogdGhlIGN1cnJlbnQgZmVuY2UKKyAqCisgKiBJbml0aWFsaXplIGEgbmV3 IGNoYWluIG5vZGUgYW5kIGVpdGhlciBzdGFydCBhIG5ldyBjaGFpbiBvciBhZGQgdGhlIG5vZGUg dG8KKyAqIHRoZSBleGlzdGluZyBjaGFpbiBvZiB0aGUgcHJldmlvdXMgZmVuY2UuCisgKi8KK3Zv aWQgZG1hX2ZlbmNlX2NoYWluX2luaXQoc3RydWN0IGRtYV9mZW5jZV9jaGFpbiAqY2hhaW4sCisJ CQkgIHN0cnVjdCBkbWFfZmVuY2UgKnByZXYsCisJCQkgIHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNl LAorCQkJICB1aW50NjRfdCBzZXFubykKK3sKKwlzdHJ1Y3QgZG1hX2ZlbmNlX2NoYWluICpwcmV2 X2NoYWluID0gdG9fZG1hX2ZlbmNlX2NoYWluKHByZXYpOworCXVpbnQ2NF90IGNvbnRleHQ7CisK KwlzcGluX2xvY2tfaW5pdCgmY2hhaW4tPmxvY2spOworCXJjdV9hc3NpZ25fcG9pbnRlcihjaGFp bi0+cHJldiwgcHJldik7CisJY2hhaW4tPmZlbmNlID0gZmVuY2U7CisJY2hhaW4tPnByZXZfc2Vx bm8gPSAwOworCWluaXRfaXJxX3dvcmsoJmNoYWluLT53b3JrLCBkbWFfZmVuY2VfY2hhaW5faXJx X3dvcmspOworCisJLyogVHJ5IHRvIHJldXNlIHRoZSBjb250ZXh0IG9mIHRoZSBwcmV2aW91cyBj aGFpbiBub2RlLiAqLworCWlmIChwcmV2X2NoYWluICYmIF9fZG1hX2ZlbmNlX2lzX2xhdGVyKHNl cW5vLCBwcmV2LT5zZXFubykpIHsKKwkJY29udGV4dCA9IHByZXYtPmNvbnRleHQ7CisJCWNoYWlu LT5wcmV2X3NlcW5vID0gcHJldi0+c2Vxbm87CisJfSBlbHNlIHsKKwkJY29udGV4dCA9IGRtYV9m ZW5jZV9jb250ZXh0X2FsbG9jKDEpOworCQkvKiBNYWtlIHN1cmUgdGhhdCB3ZSBhbHdheXMgaGF2 ZSBhIHZhbGlkIHNlcXVlbmNlIG51bWJlci4gKi8KKwkJaWYgKHByZXZfY2hhaW4pCisJCQlzZXFu byA9IG1heChwcmV2LT5zZXFubywgc2Vxbm8pOworCX0KKworCWRtYV9mZW5jZV9pbml0KCZjaGFp bi0+YmFzZSwgJmRtYV9mZW5jZV9jaGFpbl9vcHMsCisJCSAgICAgICAmY2hhaW4tPmxvY2ssIGNv bnRleHQsIHNlcW5vKTsKK30KK0VYUE9SVF9TWU1CT0woZG1hX2ZlbmNlX2NoYWluX2luaXQpOwpk aWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kbWEtZmVuY2UtY2hhaW4uaCBiL2luY2x1ZGUvbGlu dXgvZG1hLWZlbmNlLWNoYWluLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwLi45MzRhNDQyZGI4YWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2xpbnV4L2RtYS1m ZW5jZS1jaGFpbi5oCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBmZW5jZS1jaGFpbjogY2hhaW4g ZmVuY2VzIHRvZ2V0aGVyIGluIGEgdGltZWxpbmUKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg QWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLgorICogQXV0aG9yczoKKyAqCUNocmlzdGlhbiBL w7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAor ICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJz aW9uIDIgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgor ICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAorICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yCisgKiBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yCisgKiBtb3JlIGRldGFpbHMuCisgKi8KKworI2lmbmRlZiBfX0xJTlVYX0RNQV9GRU5D RV9DSEFJTl9ICisjZGVmaW5lIF9fTElOVVhfRE1BX0ZFTkNFX0NIQUlOX0gKKworI2luY2x1ZGUg PGxpbnV4L2RtYS1mZW5jZS5oPgorI2luY2x1ZGUgPGxpbnV4L2lycV93b3JrLmg+CisKKy8qKgor ICogc3RydWN0IGRtYV9mZW5jZV9jaGFpbiAtIGZlbmNlIHRvIHJlcHJlc2VudCBhbiBub2RlIG9m IGEgZmVuY2UgY2hhaW4KKyAqIEBiYXNlOiBmZW5jZSBiYXNlIGNsYXNzCisgKiBAbG9jazogc3Bp bmxvY2sgZm9yIGZlbmNlIGhhbmRsaW5nCisgKiBAcHJldjogcHJldmlvdXMgZmVuY2Ugb2YgdGhl IGNoYWluCisgKiBAcHJldl9zZXFubzogb3JpZ2luYWwgcHJldmlvdXMgc2Vxbm8gYmVmb3JlIGdh cmJhZ2UgY29sbGVjdGlvbgorICogQGZlbmNlOiBlbmNhcHN1bGF0ZWQgZmVuY2UKKyAqIEBjYjog Y2FsbGJhY2sgc3RydWN0dXJlIGZvciBzaWduYWxpbmcKKyAqIEB3b3JrOiBpcnEgd29yayBpdGVt IGZvciBzaWduYWxpbmcKKyAqLworc3RydWN0IGRtYV9mZW5jZV9jaGFpbiB7CisJc3RydWN0IGRt YV9mZW5jZSBiYXNlOworCXNwaW5sb2NrX3QgbG9jazsKKwlzdHJ1Y3QgZG1hX2ZlbmNlIF9fcmN1 ICpwcmV2OworCXU2NCBwcmV2X3NlcW5vOworCXN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlOworCXN0 cnVjdCBkbWFfZmVuY2VfY2IgY2I7CisJc3RydWN0IGlycV93b3JrIHdvcms7Cit9OworCitleHRl cm4gY29uc3Qgc3RydWN0IGRtYV9mZW5jZV9vcHMgZG1hX2ZlbmNlX2NoYWluX29wczsKKworLyoq CisgKiB0b19kbWFfZmVuY2VfY2hhaW4gLSBjYXN0IGEgZmVuY2UgdG8gYSBkbWFfZmVuY2VfY2hh aW4KKyAqIEBmZW5jZTogZmVuY2UgdG8gY2FzdCB0byBhIGRtYV9mZW5jZV9hcnJheQorICoKKyAq IFJldHVybnMgTlVMTCBpZiB0aGUgZmVuY2UgaXMgbm90IGEgZG1hX2ZlbmNlX2NoYWluLAorICog b3IgdGhlIGRtYV9mZW5jZV9jaGFpbiBvdGhlcndpc2UuCisgKi8KK3N0YXRpYyBpbmxpbmUgc3Ry dWN0IGRtYV9mZW5jZV9jaGFpbiAqCit0b19kbWFfZmVuY2VfY2hhaW4oc3RydWN0IGRtYV9mZW5j ZSAqZmVuY2UpCit7CisJaWYgKCFmZW5jZSB8fCBmZW5jZS0+b3BzICE9ICZkbWFfZmVuY2VfY2hh aW5fb3BzKQorCQlyZXR1cm4gTlVMTDsKKworCXJldHVybiBjb250YWluZXJfb2YoZmVuY2UsIHN0 cnVjdCBkbWFfZmVuY2VfY2hhaW4sIGJhc2UpOworfQorCisvKioKKyAqIGRtYV9mZW5jZV9jaGFp bl9mb3JfZWFjaCAtIGl0ZXJhdGUgb3ZlciBhbGwgZmVuY2VzIGluIGNoYWluCisgKiBAaXRlcjog Y3VycmVudCBmZW5jZQorICogQGhlYWQ6IHN0YXJ0aW5nIHBvaW50CisgKgorICogSXRlcmF0ZSBv dmVyIGFsbCBmZW5jZXMgaW4gdGhlIGNoYWluLiBXZSBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBj dXJyZW50CisgKiBmZW5jZSB3aGlsZSBpbnNpZGUgdGhlIGxvb3Agd2hpY2ggbXVzdCBiZSBkcm9w cGVkIHdoZW4gYnJlYWtpbmcgb3V0LgorICovCisjZGVmaW5lIGRtYV9mZW5jZV9jaGFpbl9mb3Jf ZWFjaChpdGVyLCBoZWFkKQlcCisJZm9yIChpdGVyID0gZG1hX2ZlbmNlX2dldChoZWFkKTsgaXRl cjsgXAorCSAgICAgaXRlciA9IGRtYV9mZW5jZV9jaGFpbl93YWxrKGl0ZXIpKQorCitzdHJ1Y3Qg ZG1hX2ZlbmNlICpkbWFfZmVuY2VfY2hhaW5fd2FsayhzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSk7 CitpbnQgZG1hX2ZlbmNlX2NoYWluX2ZpbmRfc2Vxbm8oc3RydWN0IGRtYV9mZW5jZSAqKnBmZW5j ZSwgdWludDY0X3Qgc2Vxbm8pOwordm9pZCBkbWFfZmVuY2VfY2hhaW5faW5pdChzdHJ1Y3QgZG1h X2ZlbmNlX2NoYWluICpjaGFpbiwKKwkJCSAgc3RydWN0IGRtYV9mZW5jZSAqcHJldiwKKwkJCSAg c3RydWN0IGRtYV9mZW5jZSAqZmVuY2UsCisJCQkgIHVpbnQ2NF90IHNlcW5vKTsKKworI2VuZGlm IC8qIF9fTElOVVhfRE1BX0ZFTkNFX0NIQUlOX0ggKi8KLS0gCjIuMTcuMQoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QK YW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4