From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Kuehling, Felix" Subject: [PATCH 3/4] drm/amdkfd: Add DMABuf import functionality Date: Wed, 21 Nov 2018 03:07:27 +0000 Message-ID: <1542769636-2976-4-git-send-email-Felix.Kuehling@amd.com> References: <1542769636-2976-1-git-send-email-Felix.Kuehling@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1542769636-2976-1-git-send-email-Felix.Kuehling-5C7GfCeVMHo@public.gmane.org> Content-Language: en-US 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: "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , "oded.gabbay-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org" Cc: "Kuehling, Felix" VGhpcyBpcyB1c2VkIGZvciBpbnRlcm9wZXJhYmlsaXR5IGJldHdlZW4gUk9DbSBjb21wdXRlIGFu ZCBncmFwaGljcwpBUElzLiBJdCBhbGxvd3MgaW1wb3J0aW5nIGdyYXBoaWNzIGRyaXZlciBCT3Mg aW50byB0aGUgUk9DbSBTVk0KYWRkcmVzcyBzcGFjZSBmb3IgemVyby1jb3B5IEdQVSBhY2Nlc3Mu CgpUaGUgQVBJIGlzIHNwbGl0IGludG8gdHdvIHN0ZXBzIChxdWVyeSBhbmQgaW1wb3J0KSB0byBh bGxvdyB1c2VyIG1vZGUKdG8gbWFuYWdlIHRoZSB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2UgYWxsb2Nh dGlvbiBmb3IgdGhlIGltcG9ydGVkIGJ1ZmZlci4KClNpZ25lZC1vZmYtYnk6IEZlbGl4IEt1ZWhs aW5nIDxGZWxpeC5LdWVobGluZ0BhbWQuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9hbWRrZmQuYyAgICAgICB8ICA1NyArKysrKysrKysrKwogZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZC5oICAgICAgIHwgIDExICsrKwogZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jIHwgIDU1ICsrKysrKysrKysr CiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmggICAgICAgICAgfCAgIDIg KwogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ByaW1lLmMgICAgICAgIHwgICA0 ICstCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfY2hhcmRldi5jICAgICAgICAgfCAx MTggKysrKysrKysrKysrKysrKysrKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tm ZF9wcml2LmggICAgICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9r ZmRfdG9wb2xvZ3kuYyAgICAgICAgfCAgMTggKysrKwogaW5jbHVkZS91YXBpL2xpbnV4L2tmZF9p b2N0bC5oICAgICAgICAgICAgICAgICAgIHwgIDI2ICsrKystCiA5IGZpbGVzIGNoYW5nZWQsIDI4 NyBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmQuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9hbWRrZmQuYwppbmRleCAyNzQwOTlhLi40NGI4YTEyIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZC5jCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5j bHVkZSAiYW1kZ3B1LmgiCiAjaW5jbHVkZSAiYW1kZ3B1X2dmeC5oIgogI2luY2x1ZGUgPGxpbnV4 L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2RtYS1idWYuaD4KIAogY29uc3Qgc3RydWN0IGtn ZDJrZmRfY2FsbHMgKmtnZDJrZmQ7CiAKQEAgLTQ0NCw2ICs0NDUsNjIgQEAgdm9pZCBhbWRncHVf YW1ka2ZkX2dldF9jdV9pbmZvKHN0cnVjdCBrZ2RfZGV2ICprZ2QsIHN0cnVjdCBrZmRfY3VfaW5m byAqY3VfaW5mbykKIAljdV9pbmZvLT5sZHNfc2l6ZSA9IGFjdV9pbmZvLmxkc19zaXplOwogfQog CitpbnQgYW1kZ3B1X2FtZGtmZF9nZXRfZG1hYnVmX2luZm8oc3RydWN0IGtnZF9kZXYgKmtnZCwg aW50IGRtYV9idWZfZmQsCisJCQkJICBzdHJ1Y3Qga2dkX2RldiAqKmRtYV9idWZfa2dkLAorCQkJ CSAgdWludDY0X3QgKmJvX3NpemUsIHZvaWQgKm1ldGFkYXRhX2J1ZmZlciwKKwkJCQkgIHNpemVf dCBidWZmZXJfc2l6ZSwgdWludDMyX3QgKm1ldGFkYXRhX3NpemUsCisJCQkJICB1aW50MzJfdCAq ZmxhZ3MpCit7CisJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKilrZ2Q7CisJc3RydWN0IGRtYV9idWYgKmRtYV9idWY7CisJc3RydWN0IGRybV9nZW1f b2JqZWN0ICpvYmo7CisJc3RydWN0IGFtZGdwdV9ibyAqYm87CisJdWludDY0X3QgbWV0YWRhdGFf ZmxhZ3M7CisJaW50IHIgPSAtRUlOVkFMOworCisJZG1hX2J1ZiA9IGRtYV9idWZfZ2V0KGRtYV9i dWZfZmQpOworCWlmIChJU19FUlIoZG1hX2J1ZikpCisJCXJldHVybiBQVFJfRVJSKGRtYV9idWYp OworCisJaWYgKGRtYV9idWYtPm9wcyAhPSAmYW1kZ3B1X2RtYWJ1Zl9vcHMpCisJCS8qIENhbid0 IGhhbmRsZSBub24tZ3JhcGhpY3MgYnVmZmVycyAqLworCQlnb3RvIG91dF9wdXQ7CisKKwlvYmog PSBkbWFfYnVmLT5wcml2OworCWlmIChvYmotPmRldi0+ZHJpdmVyICE9IGFkZXYtPmRkZXYtPmRy aXZlcikKKwkJLyogQ2FuJ3QgaGFuZGxlIGJ1ZmZlcnMgZnJvbSBkaWZmZXJlbnQgZHJpdmVycyAq LworCQlnb3RvIG91dF9wdXQ7CisKKwlhZGV2ID0gb2JqLT5kZXYtPmRldl9wcml2YXRlOworCWJv ID0gZ2VtX3RvX2FtZGdwdV9ibyhvYmopOworCWlmICghKGJvLT5wcmVmZXJyZWRfZG9tYWlucyAm IChBTURHUFVfR0VNX0RPTUFJTl9WUkFNIHwKKwkJCQkgICAgQU1ER1BVX0dFTV9ET01BSU5fR1RU KSkpCisJCS8qIE9ubHkgVlJBTSBhbmQgR1RUIEJPcyBhcmUgc3VwcG9ydGVkICovCisJCWdvdG8g b3V0X3B1dDsKKworCXIgPSAwOworCWlmIChkbWFfYnVmX2tnZCkKKwkJKmRtYV9idWZfa2dkID0g KHN0cnVjdCBrZ2RfZGV2ICopYWRldjsKKwlpZiAoYm9fc2l6ZSkKKwkJKmJvX3NpemUgPSBhbWRn cHVfYm9fc2l6ZShibyk7CisJaWYgKG1ldGFkYXRhX3NpemUpCisJCSptZXRhZGF0YV9zaXplID0g Ym8tPm1ldGFkYXRhX3NpemU7CisJaWYgKG1ldGFkYXRhX2J1ZmZlcikKKwkJciA9IGFtZGdwdV9i b19nZXRfbWV0YWRhdGEoYm8sIG1ldGFkYXRhX2J1ZmZlciwgYnVmZmVyX3NpemUsCisJCQkJCSAg IG1ldGFkYXRhX3NpemUsICZtZXRhZGF0YV9mbGFncyk7CisJaWYgKGZsYWdzKSB7CisJCSpmbGFn cyA9IChiby0+cHJlZmVycmVkX2RvbWFpbnMgJiBBTURHUFVfR0VNX0RPTUFJTl9WUkFNKSA/CisJ CQlBTExPQ19NRU1fRkxBR1NfVlJBTSA6IEFMTE9DX01FTV9GTEFHU19HVFQ7CisKKwkJaWYgKGJv LT5mbGFncyAmIEFNREdQVV9HRU1fQ1JFQVRFX0NQVV9BQ0NFU1NfUkVRVUlSRUQpCisJCQkqZmxh Z3MgfD0gQUxMT0NfTUVNX0ZMQUdTX1BVQkxJQzsKKwl9CisKK291dF9wdXQ6CisJZG1hX2J1Zl9w dXQoZG1hX2J1Zik7CisJcmV0dXJuIHI7Cit9CisKIHVpbnQ2NF90IGFtZGdwdV9hbWRrZmRfZ2V0 X3ZyYW1fdXNhZ2Uoc3RydWN0IGtnZF9kZXYgKmtnZCkKIHsKIAlzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiA9IChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqKWtnZDsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmQuaCBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmQuaAppbmRleCA0ZDc2NmNiLi4xYTg0ZmUyIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkLmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZC5oCkBAIC0xNTAsNiArMTUwLDEx IEBAIHVpbnQ2NF90IGFtZGdwdV9hbWRrZmRfZ2V0X2dwdV9jbG9ja19jb3VudGVyKHN0cnVjdCBr Z2RfZGV2ICprZ2QpOwogCiB1aW50MzJfdCBhbWRncHVfYW1ka2ZkX2dldF9tYXhfZW5naW5lX2Ns b2NrX2luX21oeihzdHJ1Y3Qga2dkX2RldiAqa2dkKTsKIHZvaWQgYW1kZ3B1X2FtZGtmZF9nZXRf Y3VfaW5mbyhzdHJ1Y3Qga2dkX2RldiAqa2dkLCBzdHJ1Y3Qga2ZkX2N1X2luZm8gKmN1X2luZm8p OworaW50IGFtZGdwdV9hbWRrZmRfZ2V0X2RtYWJ1Zl9pbmZvKHN0cnVjdCBrZ2RfZGV2ICprZ2Qs IGludCBkbWFfYnVmX2ZkLAorCQkJCSAgc3RydWN0IGtnZF9kZXYgKipkbWFidWZfa2dkLAorCQkJ CSAgdWludDY0X3QgKmJvX3NpemUsIHZvaWQgKm1ldGFkYXRhX2J1ZmZlciwKKwkJCQkgIHNpemVf dCBidWZmZXJfc2l6ZSwgdWludDMyX3QgKm1ldGFkYXRhX3NpemUsCisJCQkJICB1aW50MzJfdCAq ZmxhZ3MpOwogdWludDY0X3QgYW1kZ3B1X2FtZGtmZF9nZXRfdnJhbV91c2FnZShzdHJ1Y3Qga2dk X2RldiAqa2dkKTsKIHVpbnQ2NF90IGFtZGdwdV9hbWRrZmRfZ2V0X2hpdmVfaWQoc3RydWN0IGtn ZF9kZXYgKmtnZCk7CiAKQEAgLTIwMSw2ICsyMDYsMTIgQEAgaW50IGFtZGdwdV9hbWRrZmRfZ3B1 dm1fcmVzdG9yZV9wcm9jZXNzX2Jvcyh2b2lkICpwcm9jZXNzX2luZm8sCiBpbnQgYW1kZ3B1X2Ft ZGtmZF9ncHV2bV9nZXRfdm1fZmF1bHRfaW5mbyhzdHJ1Y3Qga2dkX2RldiAqa2dkLAogCQkJCQkg ICAgICBzdHJ1Y3Qga2ZkX3ZtX2ZhdWx0X2luZm8gKmluZm8pOwogCitpbnQgYW1kZ3B1X2FtZGtm ZF9ncHV2bV9pbXBvcnRfZG1hYnVmKHN0cnVjdCBrZ2RfZGV2ICprZ2QsCisJCQkJICAgICAgc3Ry dWN0IGRtYV9idWYgKmRtYWJ1ZiwKKwkJCQkgICAgICB1aW50NjRfdCB2YSwgdm9pZCAqdm0sCisJ CQkJICAgICAgc3RydWN0IGtnZF9tZW0gKiptZW0sIHVpbnQ2NF90ICpzaXplLAorCQkJCSAgICAg IHVpbnQ2NF90ICptbWFwX29mZnNldCk7CisKIHZvaWQgYW1kZ3B1X2FtZGtmZF9ncHV2bV9pbml0 X21lbV9saW1pdHModm9pZCk7CiB2b2lkIGFtZGdwdV9hbWRrZmRfdW5yZXNlcnZlX21lbW9yeV9s aW1pdChzdHJ1Y3QgYW1kZ3B1X2JvICpibyk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYwppbmRleCBmY2E4Nzg4Li4xNGY3Njc2NSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYwpA QCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KICNpbmNsdWRlIDxsaW51 eC9wYWdlbWFwLmg+CiAjaW5jbHVkZSA8bGludXgvc2NoZWQvbW0uaD4KKyNpbmNsdWRlIDxsaW51 eC9kbWEtYnVmLmg+CiAjaW5jbHVkZSA8ZHJtL2RybVAuaD4KICNpbmNsdWRlICJhbWRncHVfb2Jq ZWN0LmgiCiAjaW5jbHVkZSAiYW1kZ3B1X3ZtLmgiCkBAIC0xNjY0LDYgKzE2NjUsNjAgQEAgaW50 IGFtZGdwdV9hbWRrZmRfZ3B1dm1fZ2V0X3ZtX2ZhdWx0X2luZm8oc3RydWN0IGtnZF9kZXYgKmtn ZCwKIAlyZXR1cm4gMDsKIH0KIAoraW50IGFtZGdwdV9hbWRrZmRfZ3B1dm1faW1wb3J0X2RtYWJ1 ZihzdHJ1Y3Qga2dkX2RldiAqa2dkLAorCQkJCSAgICAgIHN0cnVjdCBkbWFfYnVmICpkbWFfYnVm LAorCQkJCSAgICAgIHVpbnQ2NF90IHZhLCB2b2lkICp2bSwKKwkJCQkgICAgICBzdHJ1Y3Qga2dk X21lbSAqKm1lbSwgdWludDY0X3QgKnNpemUsCisJCQkJICAgICAgdWludDY0X3QgKm1tYXBfb2Zm c2V0KQoreworCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gKHN0cnVjdCBhbWRncHVfZGV2 aWNlICopa2dkOworCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqOworCXN0cnVjdCBhbWRncHVf Ym8gKmJvOworCXN0cnVjdCBhbWRncHVfdm0gKmF2bSA9IChzdHJ1Y3QgYW1kZ3B1X3ZtICopdm07 CisKKwlpZiAoZG1hX2J1Zi0+b3BzICE9ICZhbWRncHVfZG1hYnVmX29wcykKKwkJLyogQ2FuJ3Qg aGFuZGxlIG5vbi1ncmFwaGljcyBidWZmZXJzICovCisJCXJldHVybiAtRUlOVkFMOworCisJb2Jq ID0gZG1hX2J1Zi0+cHJpdjsKKwlpZiAob2JqLT5kZXYtPmRldl9wcml2YXRlICE9IGFkZXYpCisJ CS8qIENhbid0IGhhbmRsZSBidWZmZXJzIGZyb20gb3RoZXIgZGV2aWNlcyAqLworCQlyZXR1cm4g LUVJTlZBTDsKKworCWJvID0gZ2VtX3RvX2FtZGdwdV9ibyhvYmopOworCWlmICghKGJvLT5wcmVm ZXJyZWRfZG9tYWlucyAmIChBTURHUFVfR0VNX0RPTUFJTl9WUkFNIHwKKwkJCQkgICAgQU1ER1BV X0dFTV9ET01BSU5fR1RUKSkpCisJCS8qIE9ubHkgVlJBTSBhbmQgR1RUIEJPcyBhcmUgc3VwcG9y dGVkICovCisJCXJldHVybiAtRUlOVkFMOworCisJKm1lbSA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVj dCBrZ2RfbWVtKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCEqbWVtKQorCQlyZXR1cm4gLUVOT01FTTsK KworCWlmIChzaXplKQorCQkqc2l6ZSA9IGFtZGdwdV9ib19zaXplKGJvKTsKKworCWlmIChtbWFw X29mZnNldCkKKwkJKm1tYXBfb2Zmc2V0ID0gYW1kZ3B1X2JvX21tYXBfb2Zmc2V0KGJvKTsKKwor CUlOSVRfTElTVF9IRUFEKCYoKm1lbSktPmJvX3ZhX2xpc3QpOworCW11dGV4X2luaXQoJigqbWVt KS0+bG9jayk7CisJKCptZW0pLT5tYXBwaW5nX2ZsYWdzID0KKwkJQU1ER1BVX1ZNX1BBR0VfUkVB REFCTEUgfCBBTURHUFVfVk1fUEFHRV9XUklURUFCTEUgfAorCQlBTURHUFVfVk1fUEFHRV9FWEVD VVRBQkxFIHwgQU1ER1BVX1ZNX01UWVBFX05DOworCisJKCptZW0pLT5ibyA9IGFtZGdwdV9ib19y ZWYoYm8pOworCSgqbWVtKS0+dmEgPSB2YTsKKwkoKm1lbSktPmRvbWFpbiA9IChiby0+cHJlZmVy cmVkX2RvbWFpbnMgJiBBTURHUFVfR0VNX0RPTUFJTl9WUkFNKSA/CisJCUFNREdQVV9HRU1fRE9N QUlOX1ZSQU0gOiBBTURHUFVfR0VNX0RPTUFJTl9HVFQ7CisJKCptZW0pLT5tYXBwZWRfdG9fZ3B1 X21lbW9yeSA9IDA7CisJKCptZW0pLT5wcm9jZXNzX2luZm8gPSBhdm0tPnByb2Nlc3NfaW5mbzsK KwlhZGRfa2dkX21lbV90b19rZmRfYm9fbGlzdCgqbWVtLCBhdm0tPnByb2Nlc3NfaW5mbywgZmFs c2UpOworCWFtZGdwdV9zeW5jX2NyZWF0ZSgmKCptZW0pLT5zeW5jKTsKKworCXJldHVybiAwOwor fQorCiAvKiBFdmljdCBhIHVzZXJwdHIgQk8gYnkgc3RvcHBpbmcgdGhlIHF1ZXVlcyBpZiBuZWNl c3NhcnkKICAqCiAgKiBSdW5zIGluIE1NVSBub3RpZmllciwgbWF5IGJlIGluIFJFQ0xBSU1fRlMg Y29udGV4dC4gVGhpcyBtZWFucyBpdApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X2dlbS5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dl bS5oCmluZGV4IGQ2M2RhYmEuLmYxZGRmYzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9nZW0uaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfZ2VtLmgKQEAgLTU0LDYgKzU0LDggQEAgdm9pZCAqYW1kZ3B1X2dlbV9wcmltZV92bWFw KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKIHZvaWQgYW1kZ3B1X2dlbV9wcmltZV92dW5t YXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHZvaWQgKnZhZGRyKTsKIGludCBhbWRncHVf Z2VtX3ByaW1lX21tYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCB2bV9hcmVh X3N0cnVjdCAqdm1hKTsKIAorZXh0ZXJuIGNvbnN0IHN0cnVjdCBkbWFfYnVmX29wcyBhbWRncHVf ZG1hYnVmX29wczsKKwogLyoKICAqIEdFTSBvYmplY3RzLgogICovCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcHJpbWUuYyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9wcmltZS5jCmluZGV4IGU0NWU5MjkuLjJiMzFmMWIgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wcmltZS5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wcmltZS5jCkBAIC0zOSw4ICszOSw2IEBACiAj aW5jbHVkZSA8ZHJtL2FtZGdwdV9kcm0uaD4KICNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLmg+CiAK LXN0YXRpYyBjb25zdCBzdHJ1Y3QgZG1hX2J1Zl9vcHMgYW1kZ3B1X2RtYWJ1Zl9vcHM7Ci0KIC8q KgogICogYW1kZ3B1X2dlbV9wcmltZV9nZXRfc2dfdGFibGUgLSAmZHJtX2RyaXZlci5nZW1fcHJp bWVfZ2V0X3NnX3RhYmxlCiAgKiBpbXBsZW1lbnRhdGlvbgpAQCAtMzMyLDcgKzMzMCw3IEBAIHN0 YXRpYyBpbnQgYW1kZ3B1X2dlbV9iZWdpbl9jcHVfYWNjZXNzKHN0cnVjdCBkbWFfYnVmICpkbWFf YnVmLAogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZG1hX2J1Zl9vcHMg YW1kZ3B1X2RtYWJ1Zl9vcHMgPSB7Citjb25zdCBzdHJ1Y3QgZG1hX2J1Zl9vcHMgYW1kZ3B1X2Rt YWJ1Zl9vcHMgPSB7CiAJLmF0dGFjaCA9IGFtZGdwdV9nZW1fbWFwX2F0dGFjaCwKIAkuZGV0YWNo ID0gYW1kZ3B1X2dlbV9tYXBfZGV0YWNoLAogCS5tYXBfZG1hX2J1ZiA9IGRybV9nZW1fbWFwX2Rt YV9idWYsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfY2hhcmRl di5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2NoYXJkZXYuYwppbmRleCA1ZjQw NjJiLi5hZTNhZTBmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRf Y2hhcmRldi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9jaGFyZGV2LmMK QEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDxsaW51eC90aW1lLmg+CiAjaW5jbHVkZSA8bGlu dXgvbW0uaD4KICNpbmNsdWRlIDxsaW51eC9tbWFuLmg+CisjaW5jbHVkZSA8bGludXgvZG1hLWJ1 Zi5oPgogI2luY2x1ZGUgPGFzbS9wcm9jZXNzb3IuaD4KICNpbmNsdWRlICJrZmRfcHJpdi5oIgog I2luY2x1ZGUgImtmZF9kZXZpY2VfcXVldWVfbWFuYWdlci5oIgpAQCAtMTU1MCw2ICsxNTUxLDEx NSBAQCBzdGF0aWMgaW50IGtmZF9pb2N0bF91bm1hcF9tZW1vcnlfZnJvbV9ncHUoc3RydWN0IGZp bGUgKmZpbGVwLAogCXJldHVybiBlcnI7CiB9CiAKK3N0YXRpYyBpbnQga2ZkX2lvY3RsX2dldF9k bWFidWZfaW5mbyhzdHJ1Y3QgZmlsZSAqZmlsZXAsCisJCXN0cnVjdCBrZmRfcHJvY2VzcyAqcCwg dm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3Qga2ZkX2lvY3RsX2dldF9kbWFidWZfaW5mb19hcmdzICph cmdzID0gZGF0YTsKKwlzdHJ1Y3Qga2ZkX2RldiAqZGV2ID0gTlVMTDsKKwlzdHJ1Y3Qga2dkX2Rl diAqZG1hX2J1Zl9rZ2Q7CisJdm9pZCAqbWV0YWRhdGFfYnVmZmVyID0gTlVMTDsKKwl1aW50MzJf dCBmbGFnczsKKwl1bnNpZ25lZCBpbnQgaTsKKwlpbnQgcjsKKworCS8qIEZpbmQgYSBLRkQgR1BV IGRldmljZSB0aGF0IHN1cHBvcnRzIHRoZSBnZXRfZG1hYnVmX2luZm8gcXVlcnkgKi8KKwlmb3Ig KGkgPSAwOyBrZmRfdG9wb2xvZ3lfZW51bV9rZmRfZGV2aWNlcyhpLCAmZGV2KSA9PSAwOyBpKysp CisJCWlmIChkZXYpCisJCQlicmVhazsKKwlpZiAoIWRldikKKwkJcmV0dXJuIC1FSU5WQUw7CisK KwlpZiAoYXJncy0+bWV0YWRhdGFfcHRyKSB7CisJCW1ldGFkYXRhX2J1ZmZlciA9IGt6YWxsb2Mo YXJncy0+bWV0YWRhdGFfc2l6ZSwgR0ZQX0tFUk5FTCk7CisJCWlmICghbWV0YWRhdGFfYnVmZmVy KQorCQkJcmV0dXJuIC1FTk9NRU07CisJfQorCisJLyogR2V0IGRtYWJ1ZiBpbmZvIGZyb20gS0dE ICovCisJciA9IGFtZGdwdV9hbWRrZmRfZ2V0X2RtYWJ1Zl9pbmZvKGRldi0+a2dkLCBhcmdzLT5k bWFidWZfZmQsCisJCQkJCSAgJmRtYV9idWZfa2dkLCAmYXJncy0+c2l6ZSwKKwkJCQkJICBtZXRh ZGF0YV9idWZmZXIsIGFyZ3MtPm1ldGFkYXRhX3NpemUsCisJCQkJCSAgJmFyZ3MtPm1ldGFkYXRh X3NpemUsICZmbGFncyk7CisJaWYgKHIpCisJCWdvdG8gZXhpdDsKKworCS8qIFJldmVyc2UtbG9v a3VwIGdwdV9pZCBmcm9tIGtnZCBwb2ludGVyICovCisJZGV2ID0ga2ZkX2RldmljZV9ieV9rZ2Qo ZG1hX2J1Zl9rZ2QpOworCWlmICghZGV2KSB7CisJCXIgPSAtRUlOVkFMOworCQlnb3RvIGV4aXQ7 CisJfQorCWFyZ3MtPmdwdV9pZCA9IGRldi0+aWQ7CisJYXJncy0+ZmxhZ3MgPSBmbGFnczsKKwor CS8qIENvcHkgbWV0YWRhdGEgYnVmZmVyIHRvIHVzZXIgbW9kZSAqLworCWlmIChtZXRhZGF0YV9i dWZmZXIpIHsKKwkJciA9IGNvcHlfdG9fdXNlcigodm9pZCBfX3VzZXIgKilhcmdzLT5tZXRhZGF0 YV9wdHIsCisJCQkJIG1ldGFkYXRhX2J1ZmZlciwgYXJncy0+bWV0YWRhdGFfc2l6ZSk7CisJCWlm IChyICE9IDApCisJCQlyID0gLUVGQVVMVDsKKwl9CisKK2V4aXQ6CisJa2ZyZWUobWV0YWRhdGFf YnVmZmVyKTsKKworCXJldHVybiByOworfQorCitzdGF0aWMgaW50IGtmZF9pb2N0bF9pbXBvcnRf ZG1hYnVmKHN0cnVjdCBmaWxlICpmaWxlcCwKKwkJCQkgICBzdHJ1Y3Qga2ZkX3Byb2Nlc3MgKnAs IHZvaWQgKmRhdGEpCit7CisJc3RydWN0IGtmZF9pb2N0bF9pbXBvcnRfZG1hYnVmX2FyZ3MgKmFy Z3MgPSBkYXRhOworCXN0cnVjdCBrZmRfcHJvY2Vzc19kZXZpY2UgKnBkZDsKKwlzdHJ1Y3QgZG1h X2J1ZiAqZG1hYnVmOworCXN0cnVjdCBrZmRfZGV2ICpkZXY7CisJaW50IGlkcl9oYW5kbGU7CisJ dWludDY0X3Qgc2l6ZTsKKwl2b2lkICptZW07CisJaW50IHI7CisKKwlkZXYgPSBrZmRfZGV2aWNl X2J5X2lkKGFyZ3MtPmdwdV9pZCk7CisJaWYgKCFkZXYpCisJCXJldHVybiAtRUlOVkFMOworCisJ ZG1hYnVmID0gZG1hX2J1Zl9nZXQoYXJncy0+ZG1hYnVmX2ZkKTsKKwlpZiAoIWRtYWJ1ZikKKwkJ cmV0dXJuIC1FSU5WQUw7CisKKwltdXRleF9sb2NrKCZwLT5tdXRleCk7CisKKwlwZGQgPSBrZmRf YmluZF9wcm9jZXNzX3RvX2RldmljZShkZXYsIHApOworCWlmIChJU19FUlIocGRkKSkgeworCQly ID0gUFRSX0VSUihwZGQpOworCQlnb3RvIGVycl91bmxvY2s7CisJfQorCisJciA9IGFtZGdwdV9h bWRrZmRfZ3B1dm1faW1wb3J0X2RtYWJ1ZihkZXYtPmtnZCwgZG1hYnVmLAorCQkJCQkgICAgICBh cmdzLT52YV9hZGRyLCBwZGQtPnZtLAorCQkJCQkgICAgICAoc3RydWN0IGtnZF9tZW0gKiopJm1l bSwgJnNpemUsCisJCQkJCSAgICAgIE5VTEwpOworCWlmIChyKQorCQlnb3RvIGVycl91bmxvY2s7 CisKKwlpZHJfaGFuZGxlID0ga2ZkX3Byb2Nlc3NfZGV2aWNlX2NyZWF0ZV9vYmpfaGFuZGxlKHBk ZCwgbWVtKTsKKwlpZiAoaWRyX2hhbmRsZSA8IDApIHsKKwkJciA9IC1FRkFVTFQ7CisJCWdvdG8g ZXJyX2ZyZWU7CisJfQorCisJbXV0ZXhfdW5sb2NrKCZwLT5tdXRleCk7CisKKwlhcmdzLT5oYW5k bGUgPSBNQUtFX0hBTkRMRShhcmdzLT5ncHVfaWQsIGlkcl9oYW5kbGUpOworCisJcmV0dXJuIDA7 CisKK2Vycl9mcmVlOgorCWFtZGdwdV9hbWRrZmRfZ3B1dm1fZnJlZV9tZW1vcnlfb2ZfZ3B1KGRl di0+a2dkLCAoc3RydWN0IGtnZF9tZW0gKiltZW0pOworZXJyX3VubG9jazoKKwltdXRleF91bmxv Y2soJnAtPm11dGV4KTsKKwlyZXR1cm4gcjsKK30KKwogI2RlZmluZSBBTURLRkRfSU9DVExfREVG KGlvY3RsLCBfZnVuYywgX2ZsYWdzKSBcCiAJW19JT0NfTlIoaW9jdGwpXSA9IHsuY21kID0gaW9j dGwsIC5mdW5jID0gX2Z1bmMsIC5mbGFncyA9IF9mbGFncywgXAogCQkJICAgIC5jbWRfZHJ2ID0g MCwgLm5hbWUgPSAjaW9jdGx9CkBAIC0xNjM1LDcgKzE3NDUsMTMgQEAgc3RhdGljIGNvbnN0IHN0 cnVjdCBhbWRrZmRfaW9jdGxfZGVzYyBhbWRrZmRfaW9jdGxzW10gPSB7CiAJCQlrZmRfaW9jdGxf c2V0X2N1X21hc2ssIDApLAogCiAJQU1ES0ZEX0lPQ1RMX0RFRihBTURLRkRfSU9DX0dFVF9RVUVV RV9XQVZFX1NUQVRFLAotCQkJa2ZkX2lvY3RsX2dldF9xdWV1ZV93YXZlX3N0YXRlLCAwKQorCQkJ a2ZkX2lvY3RsX2dldF9xdWV1ZV93YXZlX3N0YXRlLCAwKSwKKworCUFNREtGRF9JT0NUTF9ERUYo QU1ES0ZEX0lPQ19HRVRfRE1BQlVGX0lORk8sCisJCQkJa2ZkX2lvY3RsX2dldF9kbWFidWZfaW5m bywgMCksCisKKwlBTURLRkRfSU9DVExfREVGKEFNREtGRF9JT0NfSU1QT1JUX0RNQUJVRiwKKwkJ CQlrZmRfaW9jdGxfaW1wb3J0X2RtYWJ1ZiwgMCksCiAKIH07CiAKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9wcml2LmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGtmZC9rZmRfcHJpdi5oCmluZGV4IGRlYzhlNjQuLjA2ODlkNGMgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9wcml2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRrZmQva2ZkX3ByaXYuaApAQCAtNzkzLDYgKzc5Myw3IEBAIHN0cnVjdCBrZmRfdG9wb2xv Z3lfZGV2aWNlICprZmRfdG9wb2xvZ3lfZGV2aWNlX2J5X3Byb3hpbWl0eV9kb21haW4oCiBzdHJ1 Y3Qga2ZkX3RvcG9sb2d5X2RldmljZSAqa2ZkX3RvcG9sb2d5X2RldmljZV9ieV9pZCh1aW50MzJf dCBncHVfaWQpOwogc3RydWN0IGtmZF9kZXYgKmtmZF9kZXZpY2VfYnlfaWQodWludDMyX3QgZ3B1 X2lkKTsKIHN0cnVjdCBrZmRfZGV2ICprZmRfZGV2aWNlX2J5X3BjaV9kZXYoY29uc3Qgc3RydWN0 IHBjaV9kZXYgKnBkZXYpOworc3RydWN0IGtmZF9kZXYgKmtmZF9kZXZpY2VfYnlfa2dkKGNvbnN0 IHN0cnVjdCBrZ2RfZGV2ICprZ2QpOwogaW50IGtmZF90b3BvbG9neV9lbnVtX2tmZF9kZXZpY2Vz KHVpbnQ4X3QgaWR4LCBzdHJ1Y3Qga2ZkX2RldiAqKmtkZXYpOwogaW50IGtmZF9udW1hX25vZGVf dG9fYXBpY19pZChpbnQgbnVtYV9ub2RlX2lkKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRrZmQva2ZkX3RvcG9sb2d5LmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtm ZC9rZmRfdG9wb2xvZ3kuYwppbmRleCBjNWVkMjFlLi41ZjViMmFjIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfdG9wb2xvZ3kuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGtmZC9rZmRfdG9wb2xvZ3kuYwpAQCAtMTExLDYgKzExMSwyNCBAQCBzdHJ1Y3Qg a2ZkX2RldiAqa2ZkX2RldmljZV9ieV9wY2lfZGV2KGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpwZGV2 KQogCXJldHVybiBkZXZpY2U7CiB9CiAKK3N0cnVjdCBrZmRfZGV2ICprZmRfZGV2aWNlX2J5X2tn ZChjb25zdCBzdHJ1Y3Qga2dkX2RldiAqa2dkKQoreworCXN0cnVjdCBrZmRfdG9wb2xvZ3lfZGV2 aWNlICp0b3BfZGV2OworCXN0cnVjdCBrZmRfZGV2ICpkZXZpY2UgPSBOVUxMOworCisJZG93bl9y ZWFkKCZ0b3BvbG9neV9sb2NrKTsKKworCWxpc3RfZm9yX2VhY2hfZW50cnkodG9wX2RldiwgJnRv cG9sb2d5X2RldmljZV9saXN0LCBsaXN0KQorCQlpZiAodG9wX2Rldi0+Z3B1ICYmIHRvcF9kZXYt PmdwdS0+a2dkID09IGtnZCkgeworCQkJZGV2aWNlID0gdG9wX2Rldi0+Z3B1OworCQkJYnJlYWs7 CisJCX0KKworCXVwX3JlYWQoJnRvcG9sb2d5X2xvY2spOworCisJcmV0dXJuIGRldmljZTsKK30K KwogLyogQ2FsbGVkIHdpdGggd3JpdGUgdG9wb2xvZ3lfbG9jayBhY3F1aXJlZCAqLwogc3RhdGlj IHZvaWQga2ZkX3JlbGVhc2VfdG9wb2xvZ3lfZGV2aWNlKHN0cnVjdCBrZmRfdG9wb2xvZ3lfZGV2 aWNlICpkZXYpCiB7CmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgva2ZkX2lvY3RsLmgg Yi9pbmNsdWRlL3VhcGkvbGludXgva2ZkX2lvY3RsLmgKaW5kZXggYjAxZWI1MC4uZTYyMmZkMSAx MDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2tmZF9pb2N0bC5oCisrKyBiL2luY2x1ZGUv dWFwaS9saW51eC9rZmRfaW9jdGwuaApAQCAtMzk4LDYgKzM5OCwyNCBAQCBzdHJ1Y3Qga2ZkX2lv Y3RsX3VubWFwX21lbW9yeV9mcm9tX2dwdV9hcmdzIHsKIAlfX3UzMiBuX3N1Y2Nlc3M7CQkvKiB0 by9mcm9tIEtGRCAqLwogfTsKIAorc3RydWN0IGtmZF9pb2N0bF9nZXRfZG1hYnVmX2luZm9fYXJn cyB7CisJX191NjQgc2l6ZTsJCS8qIGZyb20gS0ZEICovCisJX191NjQgbWV0YWRhdGFfcHRyOwkv KiB0byBLRkQgKi8KKwlfX3UzMiBtZXRhZGF0YV9zaXplOwkvKiB0byBLRkQgKHNwYWNlIGFsbG9j YXRlZCBieSB1c2VyKQorCQkJCSAqIGZyb20gS0ZEIChhY3R1YWwgbWV0YWRhdGEgc2l6ZSkKKwkJ CQkgKi8KKwlfX3UzMiBncHVfaWQ7CS8qIGZyb20gS0ZEICovCisJX191MzIgZmxhZ3M7CQkvKiBm cm9tIEtGRCAoS0ZEX0lPQ19BTExPQ19NRU1fRkxBR1MpICovCisJX191MzIgZG1hYnVmX2ZkOwkv KiB0byBLRkQgKi8KK307CisKK3N0cnVjdCBrZmRfaW9jdGxfaW1wb3J0X2RtYWJ1Zl9hcmdzIHsK KwlfX3U2NCB2YV9hZGRyOwkvKiB0byBLRkQgKi8KKwlfX3U2NCBoYW5kbGU7CS8qIGZyb20gS0ZE ICovCisJX191MzIgZ3B1X2lkOwkvKiB0byBLRkQgKi8KKwlfX3UzMiBkbWFidWZfZmQ7CS8qIHRv IEtGRCAqLworfTsKKwogI2RlZmluZSBBTURLRkRfSU9DVExfQkFTRSAnSycKICNkZWZpbmUgQU1E S0ZEX0lPKG5yKQkJCV9JTyhBTURLRkRfSU9DVExfQkFTRSwgbnIpCiAjZGVmaW5lIEFNREtGRF9J T1IobnIsIHR5cGUpCQlfSU9SKEFNREtGRF9JT0NUTF9CQVNFLCBuciwgdHlwZSkKQEAgLTQ4Niw3 ICs1MDQsMTMgQEAgc3RydWN0IGtmZF9pb2N0bF91bm1hcF9tZW1vcnlfZnJvbV9ncHVfYXJncyB7 CiAjZGVmaW5lIEFNREtGRF9JT0NfR0VUX1FVRVVFX1dBVkVfU1RBVEUJCVwKIAkJQU1ES0ZEX0lP V1IoMHgxQiwgc3RydWN0IGtmZF9pb2N0bF9nZXRfcXVldWVfd2F2ZV9zdGF0ZV9hcmdzKQogCisj ZGVmaW5lIEFNREtGRF9JT0NfR0VUX0RNQUJVRl9JTkZPCQlcCisJCUFNREtGRF9JT1dSKDB4MUMs IHN0cnVjdCBrZmRfaW9jdGxfZ2V0X2RtYWJ1Zl9pbmZvX2FyZ3MpCisKKyNkZWZpbmUgQU1ES0ZE X0lPQ19JTVBPUlRfRE1BQlVGCQlcCisJCUFNREtGRF9JT1dSKDB4MUQsIHN0cnVjdCBrZmRfaW9j dGxfaW1wb3J0X2RtYWJ1Zl9hcmdzKQorCiAjZGVmaW5lIEFNREtGRF9DT01NQU5EX1NUQVJUCQkw eDAxCi0jZGVmaW5lIEFNREtGRF9DT01NQU5EX0VORAkJMHgxQworI2RlZmluZSBBTURLRkRfQ09N TUFORF9FTkQJCTB4MUUKIAogI2VuZGlmCi0tIAoyLjcuNAoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9hbWQtZ2Z4Cg==