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 v6 Date: Wed, 20 Mar 2019 13:47:16 +0800 Message-ID: <20190320054724.14636-1-david1.zhou@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: 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, amd-gfx@lists.freedesktop.org, lionel.g.landwerlin@intel.com, jason@jlekstrand.net, Christian.Koenig@amd.com, Tobias.Hector@amd.com Cc: =?UTF-8?q?Christian=20K=C3=B6nig?= , =?UTF-8?q?Christian=20K=C3=B6nig?= List-Id: amd-gfx.lists.freedesktop.org RnJvbTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2tvZW5pZy5sZWljaHR6dW1lcmtlbkBnbWFpbC5jb20+ CgpMb2NrbGVzcyBjb250YWluZXIgaW1wbGVtZW50YXRpb24gc2ltaWxhciB0byBhIGRtYV9mZW5j ZV9hcnJheSwgYnV0IHdpdGgKb25seSB0d28gZWxlbWVudHMgcGVyIG5vZGUgYW5kIGF1dG9tYXRp YyBnYXJiYWdlIGNvbGxlY3Rpb24uCgp2MjogcHJvcGVybHkgZG9jdW1lbnQgZG1hX2ZlbmNlX2No YWluX2Zvcl9lYWNoLCBhZGQgZG1hX2ZlbmNlX2NoYWluX2ZpbmRfc2Vxbm8sCiAgICBkcm9wIHBy ZXYgcmVmZXJlbmNlIGR1cmluZyBnYXJiYWdlIGNvbGxlY3Rpb24gaWYgaXQncyBub3QgYSBjaGFp biBmZW5jZS4KdjM6IHVzZSBoZWFkIGFuZCBpdGVyYXRvciBmb3IgZG1hX2ZlbmNlX2NoYWluX2Zv cl9lYWNoCnY0OiBmaXggcmVmZXJlbmNlIGNvdW50IGluIGRtYV9mZW5jZV9jaGFpbl9lbmFibGVf c2lnbmFsaW5nCnY1OiBmaXggaXRlcmF0aW9uIHdoZW4gd2Fsa2luZyBlYWNoIGNoYWluIG5vZGUK djY6IGFkZCBfX3JjdSBmb3IgbWVtYmVyICdwcmV2JyBvZiBzdHJ1Y3QgY2hhaW4gbm9kZQoKU2ln bmVkLW9mZi1ieTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgpD YzogTGlvbmVsIExhbmR3ZXJsaW4gPGxpb25lbC5nLmxhbmR3ZXJsaW5AaW50ZWwuY29tPgotLS0K IGRyaXZlcnMvZG1hLWJ1Zi9NYWtlZmlsZSAgICAgICAgICB8ICAgMyArLQogZHJpdmVycy9kbWEt YnVmL2RtYS1mZW5jZS1jaGFpbi5jIHwgMjQxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KwogaW5jbHVkZS9saW51eC9kbWEtZmVuY2UtY2hhaW4uaCAgIHwgIDgxICsrKysrKysrKysKIDMg ZmlsZXMgY2hhbmdlZCwgMzI0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL2RtYS1idWYvZG1hLWZlbmNlLWNoYWluLmMKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBpbmNsdWRlL2xpbnV4L2RtYS1mZW5jZS1jaGFpbi5oCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9kbWEtYnVmL01ha2VmaWxlIGIvZHJpdmVycy9kbWEtYnVmL01ha2VmaWxlCmluZGV4IDA5 MTNhNmNjYWI1YS4uMWYwMDZlMDgzZWI5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2RtYS1idWYvTWFr ZWZpbGUKKysrIGIvZHJpdmVycy9kbWEtYnVmL01ha2VmaWxlCkBAIC0xLDQgKzEsNSBAQAotb2Jq LXkgOj0gZG1hLWJ1Zi5vIGRtYS1mZW5jZS5vIGRtYS1mZW5jZS1hcnJheS5vIHJlc2VydmF0aW9u Lm8gc2Vxbm8tZmVuY2Uubworb2JqLXkgOj0gZG1hLWJ1Zi5vIGRtYS1mZW5jZS5vIGRtYS1mZW5j ZS1hcnJheS5vIGRtYS1mZW5jZS1jaGFpbi5vIFwKKwkgcmVzZXJ2YXRpb24ubyBzZXFuby1mZW5j ZS5vCiBvYmotJChDT05GSUdfU1lOQ19GSUxFKQkJKz0gc3luY19maWxlLm8KIG9iai0kKENPTkZJ R19TV19TWU5DKQkJKz0gc3dfc3luYy5vIHN5bmNfZGVidWcubwogb2JqLSQoQ09ORklHX1VETUFC VUYpCQkrPSB1ZG1hYnVmLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtZmVuY2Ut Y2hhaW4uYyBiL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtZmVuY2UtY2hhaW4uYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjBjNWUzYzkwMmZhMAotLS0gL2Rldi9udWxsCisr KyBiL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtZmVuY2UtY2hhaW4uYwpAQCAtMCwwICsxLDI0MSBAQAor LyoKKyAqIGZlbmNlLWNoYWluOiBjaGFpbiBmZW5jZXMgdG9nZXRoZXIgaW4gYSB0aW1lbGluZQor ICoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuCisg KiBBdXRob3JzOgorICoJQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29t PgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCisgKiBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFO VEFCSUxJVFkgb3IKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IKKyAqIG1vcmUgZGV0YWlscy4KKyAqLwor CisjaW5jbHVkZSA8bGludXgvZG1hLWZlbmNlLWNoYWluLmg+CisKK3N0YXRpYyBib29sIGRtYV9m ZW5jZV9jaGFpbl9lbmFibGVfc2lnbmFsaW5nKHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKTsKKwor LyoqCisgKiBkbWFfZmVuY2VfY2hhaW5fZ2V0X3ByZXYgLSB1c2UgUkNVIHRvIGdldCBhIHJlZmVy ZW5jZSB0byB0aGUgcHJldmlvdXMgZmVuY2UKKyAqIEBjaGFpbjogY2hhaW4gbm9kZSB0byBnZXQg dGhlIHByZXZpb3VzIG5vZGUgZnJvbQorICoKKyAqIFVzZSBkbWFfZmVuY2VfZ2V0X3JjdV9zYWZl IHRvIGdldCBhIHJlZmVyZW5jZSB0byB0aGUgcHJldmlvdXMgZmVuY2Ugb2YgdGhlCisgKiBjaGFp biBub2RlLgorICovCitzdGF0aWMgc3RydWN0IGRtYV9mZW5jZSAqZG1hX2ZlbmNlX2NoYWluX2dl dF9wcmV2KHN0cnVjdCBkbWFfZmVuY2VfY2hhaW4gKmNoYWluKQoreworCXN0cnVjdCBkbWFfZmVu Y2UgKnByZXY7CisKKwlyY3VfcmVhZF9sb2NrKCk7CisJcHJldiA9IGRtYV9mZW5jZV9nZXRfcmN1 X3NhZmUoJmNoYWluLT5wcmV2KTsKKwlyY3VfcmVhZF91bmxvY2soKTsKKwlyZXR1cm4gcHJldjsK K30KKworLyoqCisgKiBkbWFfZmVuY2VfY2hhaW5fd2FsayAtIGNoYWluIHdhbGtpbmcgZnVuY3Rp b24KKyAqIEBmZW5jZTogY3VycmVudCBjaGFpbiBub2RlCisgKgorICogV2FsayB0aGUgY2hhaW4g dG8gdGhlIG5leHQgbm9kZS4gUmV0dXJucyB0aGUgbmV4dCBmZW5jZSBvciBOVUxMIGlmIHdlIGFy ZSBhdAorICogdGhlIGVuZCBvZiB0aGUgY2hhaW4uIEdhcmJhZ2UgY29sbGVjdHMgY2hhaW4gbm9k ZXMgd2hpY2ggYXJlIGFscmVhZHkKKyAqIHNpZ25hbGVkLgorICovCitzdHJ1Y3QgZG1hX2ZlbmNl ICpkbWFfZmVuY2VfY2hhaW5fd2FsayhzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSkKK3sKKwlzdHJ1 Y3QgZG1hX2ZlbmNlX2NoYWluICpjaGFpbiwgKnByZXZfY2hhaW47CisJc3RydWN0IGRtYV9mZW5j ZSAqcHJldiwgKnJlcGxhY2VtZW50LCAqdG1wOworCisJY2hhaW4gPSB0b19kbWFfZmVuY2VfY2hh aW4oZmVuY2UpOworCWlmICghY2hhaW4pIHsKKwkJZG1hX2ZlbmNlX3B1dChmZW5jZSk7CisJCXJl dHVybiBOVUxMOworCX0KKworCXdoaWxlICgocHJldiA9IGRtYV9mZW5jZV9jaGFpbl9nZXRfcHJl dihjaGFpbikpKSB7CisKKwkJcHJldl9jaGFpbiA9IHRvX2RtYV9mZW5jZV9jaGFpbihwcmV2KTsK KwkJaWYgKHByZXZfY2hhaW4pIHsKKwkJCWlmICghZG1hX2ZlbmNlX2lzX3NpZ25hbGVkKHByZXZf Y2hhaW4tPmZlbmNlKSkKKwkJCQlicmVhazsKKworCQkJcmVwbGFjZW1lbnQgPSBkbWFfZmVuY2Vf Y2hhaW5fZ2V0X3ByZXYocHJldl9jaGFpbik7CisJCX0gZWxzZSB7CisJCQlpZiAoIWRtYV9mZW5j ZV9pc19zaWduYWxlZChwcmV2KSkKKwkJCQlicmVhazsKKworCQkJcmVwbGFjZW1lbnQgPSBOVUxM OworCQl9CisKKwkJdG1wID0gY21weGNoZygmY2hhaW4tPnByZXYsIHByZXYsIHJlcGxhY2VtZW50 KTsKKwkJaWYgKHRtcCA9PSBwcmV2KQorCQkJZG1hX2ZlbmNlX3B1dCh0bXApOworCQllbHNlCisJ CQlkbWFfZmVuY2VfcHV0KHJlcGxhY2VtZW50KTsKKwkJZG1hX2ZlbmNlX3B1dChwcmV2KTsKKwl9 CisKKwlkbWFfZmVuY2VfcHV0KGZlbmNlKTsKKwlyZXR1cm4gcHJldjsKK30KK0VYUE9SVF9TWU1C T0woZG1hX2ZlbmNlX2NoYWluX3dhbGspOworCisvKioKKyAqIGRtYV9mZW5jZV9jaGFpbl9maW5k X3NlcW5vIC0gZmluZCBmZW5jZSBjaGFpbiBub2RlIGJ5IHNlcW5vCisgKiBAcGZlbmNlOiBwb2lu dGVyIHRvIHRoZSBjaGFpbiBub2RlIHdoZXJlIHRvIHN0YXJ0CisgKiBAc2Vxbm86IHRoZSBzZXF1 ZW5jZSBudW1iZXIgdG8gc2VhcmNoIGZvcgorICoKKyAqIEFkdmFuY2UgdGhlIGZlbmNlIHBvaW50 ZXIgdG8gdGhlIGNoYWluIG5vZGUgd2hpY2ggd2lsbCBzaWduYWwgdGhpcyBzZXF1ZW5jZQorICog bnVtYmVyLiBJZiBubyBzZXF1ZW5jZSBudW1iZXIgaXMgcHJvdmlkZWQgdGhlbiB0aGlzIGlzIGEg bm8tb3AuCisgKgorICogUmV0dXJucyBFSU5WQUwgaWYgdGhlIGZlbmNlIGlzIG5vdCBhIGNoYWlu IG5vZGUgb3IgdGhlIHNlcXVlbmNlIG51bWJlciBoYXMKKyAqIG5vdCB5ZXQgYWR2YW5jZWQgZmFy IGVub3VnaC4KKyAqLworaW50IGRtYV9mZW5jZV9jaGFpbl9maW5kX3NlcW5vKHN0cnVjdCBkbWFf ZmVuY2UgKipwZmVuY2UsIHVpbnQ2NF90IHNlcW5vKQoreworCXN0cnVjdCBkbWFfZmVuY2VfY2hh aW4gKmNoYWluOworCisJaWYgKCFzZXFubykKKwkJcmV0dXJuIDA7CisKKwljaGFpbiA9IHRvX2Rt YV9mZW5jZV9jaGFpbigqcGZlbmNlKTsKKwlpZiAoIWNoYWluIHx8IGNoYWluLT5iYXNlLnNlcW5v IDwgc2Vxbm8pCisJCXJldHVybiAtRUlOVkFMOworCisJZG1hX2ZlbmNlX2NoYWluX2Zvcl9lYWNo KCpwZmVuY2UsICZjaGFpbi0+YmFzZSkgeworCQlpZiAoKCpwZmVuY2UpLT5jb250ZXh0ICE9IGNo YWluLT5iYXNlLmNvbnRleHQgfHwKKwkJICAgIHRvX2RtYV9mZW5jZV9jaGFpbigqcGZlbmNlKS0+ cHJldl9zZXFubyA8IHNlcW5vKQorCQkJYnJlYWs7CisJfQorCWRtYV9mZW5jZV9wdXQoJmNoYWlu LT5iYXNlKTsKKworCXJldHVybiAwOworfQorRVhQT1JUX1NZTUJPTChkbWFfZmVuY2VfY2hhaW5f ZmluZF9zZXFubyk7CisKK3N0YXRpYyBjb25zdCBjaGFyICpkbWFfZmVuY2VfY2hhaW5fZ2V0X2Ry aXZlcl9uYW1lKHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQoreworICAgICAgICByZXR1cm4gImRt YV9mZW5jZV9jaGFpbiI7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyICpkbWFfZmVuY2VfY2hhaW5f Z2V0X3RpbWVsaW5lX25hbWUoc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpCit7CisgICAgICAgIHJl dHVybiAidW5ib3VuZCI7Cit9CisKK3N0YXRpYyB2b2lkIGRtYV9mZW5jZV9jaGFpbl9pcnFfd29y ayhzdHJ1Y3QgaXJxX3dvcmsgKndvcmspCit7CisJc3RydWN0IGRtYV9mZW5jZV9jaGFpbiAqY2hh aW47CisKKwljaGFpbiA9IGNvbnRhaW5lcl9vZih3b3JrLCB0eXBlb2YoKmNoYWluKSwgd29yayk7 CisKKwkvKiBUcnkgdG8gcmVhcm0gdGhlIGNhbGxiYWNrICovCisJaWYgKCFkbWFfZmVuY2VfY2hh aW5fZW5hYmxlX3NpZ25hbGluZygmY2hhaW4tPmJhc2UpKQorCQkvKiBPaywgd2UgYXJlIGRvbmUu IE5vIG1vcmUgdW5zaWduYWxlZCBmZW5jZXMgbGVmdCAqLworCQlkbWFfZmVuY2Vfc2lnbmFsKCZj aGFpbi0+YmFzZSk7CisJZG1hX2ZlbmNlX3B1dCgmY2hhaW4tPmJhc2UpOworfQorCitzdGF0aWMg dm9pZCBkbWFfZmVuY2VfY2hhaW5fY2Ioc3RydWN0IGRtYV9mZW5jZSAqZiwgc3RydWN0IGRtYV9m ZW5jZV9jYiAqY2IpCit7CisJc3RydWN0IGRtYV9mZW5jZV9jaGFpbiAqY2hhaW47CisKKwljaGFp biA9IGNvbnRhaW5lcl9vZihjYiwgdHlwZW9mKCpjaGFpbiksIGNiKTsKKwlpcnFfd29ya19xdWV1 ZSgmY2hhaW4tPndvcmspOworCWRtYV9mZW5jZV9wdXQoZik7Cit9CisKK3N0YXRpYyBib29sIGRt YV9mZW5jZV9jaGFpbl9lbmFibGVfc2lnbmFsaW5nKHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQor eworCXN0cnVjdCBkbWFfZmVuY2VfY2hhaW4gKmhlYWQgPSB0b19kbWFfZmVuY2VfY2hhaW4oZmVu Y2UpOworCisJZG1hX2ZlbmNlX2dldCgmaGVhZC0+YmFzZSk7CisJZG1hX2ZlbmNlX2NoYWluX2Zv cl9lYWNoKGZlbmNlLCAmaGVhZC0+YmFzZSkgeworCQlzdHJ1Y3QgZG1hX2ZlbmNlX2NoYWluICpj aGFpbiA9IHRvX2RtYV9mZW5jZV9jaGFpbihmZW5jZSk7CisJCXN0cnVjdCBkbWFfZmVuY2UgKmYg PSBjaGFpbiA/IGNoYWluLT5mZW5jZSA6IGZlbmNlOworCisJCWRtYV9mZW5jZV9nZXQoZik7CisJ CWlmICghZG1hX2ZlbmNlX2FkZF9jYWxsYmFjayhmLCAmaGVhZC0+Y2IsIGRtYV9mZW5jZV9jaGFp bl9jYikpIHsKKwkJCWRtYV9mZW5jZV9wdXQoZmVuY2UpOworCQkJcmV0dXJuIHRydWU7CisJCX0K KwkJZG1hX2ZlbmNlX3B1dChmKTsKKwl9CisJZG1hX2ZlbmNlX3B1dCgmaGVhZC0+YmFzZSk7CisJ cmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgYm9vbCBkbWFfZmVuY2VfY2hhaW5fc2lnbmFsZWQo c3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpCit7CisJZG1hX2ZlbmNlX2NoYWluX2Zvcl9lYWNoKGZl bmNlLCBmZW5jZSkgeworCQlzdHJ1Y3QgZG1hX2ZlbmNlX2NoYWluICpjaGFpbiA9IHRvX2RtYV9m ZW5jZV9jaGFpbihmZW5jZSk7CisJCXN0cnVjdCBkbWFfZmVuY2UgKmYgPSBjaGFpbiA/IGNoYWlu LT5mZW5jZSA6IGZlbmNlOworCisJCWlmICghZG1hX2ZlbmNlX2lzX3NpZ25hbGVkKGYpKSB7CisJ CQlkbWFfZmVuY2VfcHV0KGZlbmNlKTsKKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCX0KKworCXJl dHVybiB0cnVlOworfQorCitzdGF0aWMgdm9pZCBkbWFfZmVuY2VfY2hhaW5fcmVsZWFzZShzdHJ1 Y3QgZG1hX2ZlbmNlICpmZW5jZSkKK3sKKwlzdHJ1Y3QgZG1hX2ZlbmNlX2NoYWluICpjaGFpbiA9 IHRvX2RtYV9mZW5jZV9jaGFpbihmZW5jZSk7CisKKwlkbWFfZmVuY2VfcHV0KGNoYWluLT5wcmV2 KTsKKwlkbWFfZmVuY2VfcHV0KGNoYWluLT5mZW5jZSk7CisJZG1hX2ZlbmNlX2ZyZWUoZmVuY2Up OworfQorCitjb25zdCBzdHJ1Y3QgZG1hX2ZlbmNlX29wcyBkbWFfZmVuY2VfY2hhaW5fb3BzID0g eworCS5nZXRfZHJpdmVyX25hbWUgPSBkbWFfZmVuY2VfY2hhaW5fZ2V0X2RyaXZlcl9uYW1lLAor CS5nZXRfdGltZWxpbmVfbmFtZSA9IGRtYV9mZW5jZV9jaGFpbl9nZXRfdGltZWxpbmVfbmFtZSwK KwkuZW5hYmxlX3NpZ25hbGluZyA9IGRtYV9mZW5jZV9jaGFpbl9lbmFibGVfc2lnbmFsaW5nLAor CS5zaWduYWxlZCA9IGRtYV9mZW5jZV9jaGFpbl9zaWduYWxlZCwKKwkucmVsZWFzZSA9IGRtYV9m ZW5jZV9jaGFpbl9yZWxlYXNlLAorfTsKK0VYUE9SVF9TWU1CT0woZG1hX2ZlbmNlX2NoYWluX29w cyk7CisKKy8qKgorICogZG1hX2ZlbmNlX2NoYWluX2luaXQgLSBpbml0aWFsaXplIGEgZmVuY2Ug Y2hhaW4KKyAqIEBjaGFpbjogdGhlIGNoYWluIG5vZGUgdG8gaW5pdGlhbGl6ZQorICogQHByZXY6 IHRoZSBwcmV2aW91cyBmZW5jZQorICogQGZlbmNlOiB0aGUgY3VycmVudCBmZW5jZQorICoKKyAq IEluaXRpYWxpemUgYSBuZXcgY2hhaW4gbm9kZSBhbmQgZWl0aGVyIHN0YXJ0IGEgbmV3IGNoYWlu IG9yIGFkZCB0aGUgbm9kZSB0bworICogdGhlIGV4aXN0aW5nIGNoYWluIG9mIHRoZSBwcmV2aW91 cyBmZW5jZS4KKyAqLwordm9pZCBkbWFfZmVuY2VfY2hhaW5faW5pdChzdHJ1Y3QgZG1hX2ZlbmNl X2NoYWluICpjaGFpbiwKKwkJCSAgc3RydWN0IGRtYV9mZW5jZSAqcHJldiwKKwkJCSAgc3RydWN0 IGRtYV9mZW5jZSAqZmVuY2UsCisJCQkgIHVpbnQ2NF90IHNlcW5vKQoreworCXN0cnVjdCBkbWFf ZmVuY2VfY2hhaW4gKnByZXZfY2hhaW4gPSB0b19kbWFfZmVuY2VfY2hhaW4ocHJldik7CisJdWlu dDY0X3QgY29udGV4dDsKKworCXNwaW5fbG9ja19pbml0KCZjaGFpbi0+bG9jayk7CisJY2hhaW4t PnByZXYgPSBwcmV2OworCWNoYWluLT5mZW5jZSA9IGZlbmNlOworCWNoYWluLT5wcmV2X3NlcW5v ID0gMDsKKwlpbml0X2lycV93b3JrKCZjaGFpbi0+d29yaywgZG1hX2ZlbmNlX2NoYWluX2lycV93 b3JrKTsKKworCS8qIFRyeSB0byByZXVzZSB0aGUgY29udGV4dCBvZiB0aGUgcHJldmlvdXMgY2hh aW4gbm9kZS4gKi8KKwlpZiAocHJldl9jaGFpbiAmJiBfX2RtYV9mZW5jZV9pc19sYXRlcihzZXFu bywgcHJldi0+c2Vxbm8pKSB7CisJCWNvbnRleHQgPSBwcmV2LT5jb250ZXh0OworCQljaGFpbi0+ cHJldl9zZXFubyA9IHByZXYtPnNlcW5vOworCX0gZWxzZSB7CisJCWNvbnRleHQgPSBkbWFfZmVu Y2VfY29udGV4dF9hbGxvYygxKTsKKwkJLyogTWFrZSBzdXJlIHRoYXQgd2UgYWx3YXlzIGhhdmUg YSB2YWxpZCBzZXF1ZW5jZSBudW1iZXIuICovCisJCWlmIChwcmV2X2NoYWluKQorCQkJc2Vxbm8g PSBtYXgocHJldi0+c2Vxbm8sIHNlcW5vKTsKKwl9CisKKwlkbWFfZmVuY2VfaW5pdCgmY2hhaW4t PmJhc2UsICZkbWFfZmVuY2VfY2hhaW5fb3BzLAorCQkgICAgICAgJmNoYWluLT5sb2NrLCBjb250 ZXh0LCBzZXFubyk7Cit9CitFWFBPUlRfU1lNQk9MKGRtYV9mZW5jZV9jaGFpbl9pbml0KTsKZGlm ZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZG1hLWZlbmNlLWNoYWluLmggYi9pbmNsdWRlL2xpbnV4 L2RtYS1mZW5jZS1jaGFpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MC4uOTM0YTQ0MmRiOGFjCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9saW51eC9kbWEtZmVu Y2UtY2hhaW4uaApAQCAtMCwwICsxLDgxIEBACisvKgorICogZmVuY2UtY2hhaW46IGNoYWluIGZl bmNlcyB0b2dldGhlciBpbiBhIHRpbWVsaW5lCisgKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFk dmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4KKyAqIEF1dGhvcnM6CisgKglDaHJpc3RpYW4gS8O2 bmlnIDxjaHJpc3RpYW4ua29lbmlnQGFtZC5jb20+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAq IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lv biAyIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAq CisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKKyAqIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvcgorICogRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvcgorICogbW9yZSBkZXRhaWxzLgorICovCisKKyNpZm5kZWYgX19MSU5VWF9ETUFfRkVOQ0Vf Q0hBSU5fSAorI2RlZmluZSBfX0xJTlVYX0RNQV9GRU5DRV9DSEFJTl9ICisKKyNpbmNsdWRlIDxs aW51eC9kbWEtZmVuY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9pcnFfd29yay5oPgorCisvKioKKyAq IHN0cnVjdCBkbWFfZmVuY2VfY2hhaW4gLSBmZW5jZSB0byByZXByZXNlbnQgYW4gbm9kZSBvZiBh IGZlbmNlIGNoYWluCisgKiBAYmFzZTogZmVuY2UgYmFzZSBjbGFzcworICogQGxvY2s6IHNwaW5s b2NrIGZvciBmZW5jZSBoYW5kbGluZworICogQHByZXY6IHByZXZpb3VzIGZlbmNlIG9mIHRoZSBj aGFpbgorICogQHByZXZfc2Vxbm86IG9yaWdpbmFsIHByZXZpb3VzIHNlcW5vIGJlZm9yZSBnYXJi YWdlIGNvbGxlY3Rpb24KKyAqIEBmZW5jZTogZW5jYXBzdWxhdGVkIGZlbmNlCisgKiBAY2I6IGNh bGxiYWNrIHN0cnVjdHVyZSBmb3Igc2lnbmFsaW5nCisgKiBAd29yazogaXJxIHdvcmsgaXRlbSBm b3Igc2lnbmFsaW5nCisgKi8KK3N0cnVjdCBkbWFfZmVuY2VfY2hhaW4geworCXN0cnVjdCBkbWFf ZmVuY2UgYmFzZTsKKwlzcGlubG9ja190IGxvY2s7CisJc3RydWN0IGRtYV9mZW5jZSBfX3JjdSAq cHJldjsKKwl1NjQgcHJldl9zZXFubzsKKwlzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZTsKKwlzdHJ1 Y3QgZG1hX2ZlbmNlX2NiIGNiOworCXN0cnVjdCBpcnFfd29yayB3b3JrOworfTsKKworZXh0ZXJu IGNvbnN0IHN0cnVjdCBkbWFfZmVuY2Vfb3BzIGRtYV9mZW5jZV9jaGFpbl9vcHM7CisKKy8qKgor ICogdG9fZG1hX2ZlbmNlX2NoYWluIC0gY2FzdCBhIGZlbmNlIHRvIGEgZG1hX2ZlbmNlX2NoYWlu CisgKiBAZmVuY2U6IGZlbmNlIHRvIGNhc3QgdG8gYSBkbWFfZmVuY2VfYXJyYXkKKyAqCisgKiBS ZXR1cm5zIE5VTEwgaWYgdGhlIGZlbmNlIGlzIG5vdCBhIGRtYV9mZW5jZV9jaGFpbiwKKyAqIG9y IHRoZSBkbWFfZmVuY2VfY2hhaW4gb3RoZXJ3aXNlLgorICovCitzdGF0aWMgaW5saW5lIHN0cnVj dCBkbWFfZmVuY2VfY2hhaW4gKgordG9fZG1hX2ZlbmNlX2NoYWluKHN0cnVjdCBkbWFfZmVuY2Ug KmZlbmNlKQoreworCWlmICghZmVuY2UgfHwgZmVuY2UtPm9wcyAhPSAmZG1hX2ZlbmNlX2NoYWlu X29wcykKKwkJcmV0dXJuIE5VTEw7CisKKwlyZXR1cm4gY29udGFpbmVyX29mKGZlbmNlLCBzdHJ1 Y3QgZG1hX2ZlbmNlX2NoYWluLCBiYXNlKTsKK30KKworLyoqCisgKiBkbWFfZmVuY2VfY2hhaW5f Zm9yX2VhY2ggLSBpdGVyYXRlIG92ZXIgYWxsIGZlbmNlcyBpbiBjaGFpbgorICogQGl0ZXI6IGN1 cnJlbnQgZmVuY2UKKyAqIEBoZWFkOiBzdGFydGluZyBwb2ludAorICoKKyAqIEl0ZXJhdGUgb3Zl ciBhbGwgZmVuY2VzIGluIHRoZSBjaGFpbi4gV2Uga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgY3Vy cmVudAorICogZmVuY2Ugd2hpbGUgaW5zaWRlIHRoZSBsb29wIHdoaWNoIG11c3QgYmUgZHJvcHBl ZCB3aGVuIGJyZWFraW5nIG91dC4KKyAqLworI2RlZmluZSBkbWFfZmVuY2VfY2hhaW5fZm9yX2Vh Y2goaXRlciwgaGVhZCkJXAorCWZvciAoaXRlciA9IGRtYV9mZW5jZV9nZXQoaGVhZCk7IGl0ZXI7 IFwKKwkgICAgIGl0ZXIgPSBkbWFfZmVuY2VfY2hhaW5fd2FsayhpdGVyKSkKKworc3RydWN0IGRt YV9mZW5jZSAqZG1hX2ZlbmNlX2NoYWluX3dhbGsoc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpOwor aW50IGRtYV9mZW5jZV9jaGFpbl9maW5kX3NlcW5vKHN0cnVjdCBkbWFfZmVuY2UgKipwZmVuY2Us IHVpbnQ2NF90IHNlcW5vKTsKK3ZvaWQgZG1hX2ZlbmNlX2NoYWluX2luaXQoc3RydWN0IGRtYV9m ZW5jZV9jaGFpbiAqY2hhaW4sCisJCQkgIHN0cnVjdCBkbWFfZmVuY2UgKnByZXYsCisJCQkgIHN0 cnVjdCBkbWFfZmVuY2UgKmZlbmNlLAorCQkJICB1aW50NjRfdCBzZXFubyk7CisKKyNlbmRpZiAv KiBfX0xJTlVYX0RNQV9GRU5DRV9DSEFJTl9IICovCi0tIAoyLjE3LjEKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QK ZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==