From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id F1C5EC63697 for ; Sat, 21 Nov 2020 04:50:09 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 9A24221D40 for ; Sat, 21 Nov 2020 04:50:09 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="c/oNT3zI" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9A24221D40 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 63CF76E96A; Sat, 21 Nov 2020 04:50:05 +0000 (UTC) Received: from mail-pl1-x644.google.com (mail-pl1-x644.google.com [IPv6:2607:f8b0:4864:20::644]) by gabe.freedesktop.org (Postfix) with ESMTPS id A95FB6E966 for ; Sat, 21 Nov 2020 04:50:03 +0000 (UTC) Received: by mail-pl1-x644.google.com with SMTP id u2so5967552pls.10 for ; Fri, 20 Nov 2020 20:50:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=bRKqPBzFBAAnkNsBgyf0HL+HNWyFgzqit/PZpr4Syq4=; b=c/oNT3zIP7O/3waGEVjSiX1aZ2huuqyinzxuM4g6UZJEmNtzJ059lB6IHYyzxJsJzS xJP+3SBfDV4fcT7rsUg6gA5pR7VyEx2UB86297BH5MNeWKsLDhbNwEY56iHYk3tVmYrk It8pB+xgZJc2a1z/hvltFdZedgAfRkIwWghY9siUmuiCaRr/7ZIcAsymlig61izrN3G5 W+m511hOuRQ/9VfQ6cEUHFaBFgQuiUrVhJ2z19bb0Bsa+yDIE2+H5bYIQnzgFFpE2fzY pP6+tDWxqkQ93MuXwWvsyPcHF5V/IjK/70YNsV9f2o3gXn4wtCc+LPAtHFWj3o9qgIj6 uBwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=bRKqPBzFBAAnkNsBgyf0HL+HNWyFgzqit/PZpr4Syq4=; b=F80q8OJDakg2GCG+1Fo4S49tCgi+fqifu6sIQTx8WCl7Sw7JQa7EGOhBAc1+3GWD0z pfxN6ISmkzK9hNDTKQJiuVSsxfCtvVmbN2w5MUmxZDp1cwKXd3hFVZvGyVnRuPOIAbqh Zze40vB670RMwm4yygkNkkequGyeDIRSABxtF91QoOV0blFlPp37nRkXKVPn/FTNXtL1 QXDoAH5p4Mum3yGJUPlr/i7vXLCmVNJ/jNd0f7D3gW31l5kglAGnjRwKRygavdoaG5vt NC5neo5WQbSGb+DEOwCbD+kTJ+VqMZiMFbRUFFr29yo1gzBE0mx3dBQRAUWM3wqVvFxG Sc2g== X-Gm-Message-State: AOAM530SGE53lTEuLhgbvvsaRHWp7VkEGLoN/3MUmUED9KCjWh5v5cXj 20+98GtypmYVYFIM+0W5YgB5Bg== X-Google-Smtp-Source: ABdhPJz4I7gXGaNaITJlChTd9W3c+7fHSdj6SLzUph6UXVH0oa2/1nvI5q0EL/5ic63s5JAiVD9Byg== X-Received: by 2002:a17:902:8605:b029:d5:a6dc:ad0a with SMTP id f5-20020a1709028605b02900d5a6dcad0amr16924859plo.56.1605934203284; Fri, 20 Nov 2020 20:50:03 -0800 (PST) Received: from localhost.localdomain ([2601:1c2:680:1319:692:26ff:feda:3a81]) by smtp.gmail.com with ESMTPSA id w196sm5407692pfd.177.2020.11.20.20.50.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Nov 2020 20:50:02 -0800 (PST) From: John Stultz To: lkml Subject: [PATCH v6 2/5] dma-buf: heaps: Move heap-helper logic into the cma_heap implementation Date: Sat, 21 Nov 2020 04:49:52 +0000 Message-Id: <20201121044955.58215-3-john.stultz@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201121044955.58215-1-john.stultz@linaro.org> References: <20201121044955.58215-1-john.stultz@linaro.org> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Sandeep Patil , dri-devel@lists.freedesktop.org, Ezequiel Garcia , Robin Murphy , James Jones , Liam Mark , Laura Abbott , Chris Goldsworthy , Hridya Valsaraju , =?UTF-8?q?=C3=98rjan=20Eide?= , linux-media@vger.kernel.org, Suren Baghdasaryan , Daniel Mentz Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" U2luY2UgdGhlIGhlYXAtaGVscGVycyBsb2dpYyBlbmRlZCB1cCBub3QgYmVpbmcgYXMgZ2VuZXJp YyBhcwpob3BlZCwgbW92ZSB0aGUgaGVhcC1oZWxwZXJzIGRtYV9idWZfb3BzIGltcGxlbWVudGF0 aW9ucyBpbnRvCnRoZSBjbWFfaGVhcCBkaXJlY3RseS4KClRoaXMgd2lsbCBhbGxvdyB1cyB0byBy ZW1vdmUgdGhlIGhlYXBfaGVscGVycyBjb2RlIGluIGEgZm9sbG93aW5nCnBhdGNoLgoKQ2M6IFN1 bWl0IFNlbXdhbCA8c3VtaXQuc2Vtd2FsQGxpbmFyby5vcmc+CkNjOiBMaWFtIE1hcmsgPGxtYXJr QGNvZGVhdXJvcmEub3JnPgpDYzogTGF1cmEgQWJib3R0IDxsYWJib3R0QGtlcm5lbC5vcmc+CkNj OiBCcmlhbiBTdGFya2V5IDxCcmlhbi5TdGFya2V5QGFybS5jb20+CkNjOiBIcmlkeWEgVmFsc2Fy YWp1IDxocmlkeWFAZ29vZ2xlLmNvbT4KQ2M6IFN1cmVuIEJhZ2hkYXNhcnlhbiA8c3VyZW5iQGdv b2dsZS5jb20+CkNjOiBTYW5kZWVwIFBhdGlsIDxzc3BhdGlsQGdvb2dsZS5jb20+CkNjOiBEYW5p ZWwgTWVudHogPGRhbmllbG1lbnR6QGdvb2dsZS5jb20+CkNjOiBDaHJpcyBHb2xkc3dvcnRoeSA8 Y2dvbGRzd29AY29kZWF1cm9yYS5vcmc+CkNjOiDDmHJqYW4gRWlkZSA8b3JqYW4uZWlkZUBhcm0u Y29tPgpDYzogUm9iaW4gTXVycGh5IDxyb2Jpbi5tdXJwaHlAYXJtLmNvbT4KQ2M6IEV6ZXF1aWVs IEdhcmNpYSA8ZXplcXVpZWxAY29sbGFib3JhLmNvbT4KQ2M6IFNpbW9uIFNlciA8Y29udGFjdEBl bWVyc2lvbi5mcj4KQ2M6IEphbWVzIEpvbmVzIDxqYWpvbmVzQG52aWRpYS5jb20+CkNjOiBsaW51 eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKQ2M6IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKUmV2aWV3ZWQtYnk6IEJyaWFuIFN0YXJrZXkgPGJyaWFuLnN0YXJrZXlAYXJtLmNvbT4KU2ln bmVkLW9mZi1ieTogSm9obiBTdHVsdHogPGpvaG4uc3R1bHR6QGxpbmFyby5vcmc+Ci0tLQp2MjoK KiBGaXggdW51c2VkIHJldHVybiB2YWx1ZSBhbmQgbG9ja2luZyBpc3N1ZSBSZXBvcnRlZC1ieToK ICAgIGtlcm5lbCB0ZXN0IHJvYm90IDxsa3BAaW50ZWwuY29tPgogICAgSnVsaWEgTGF3YWxsIDxq dWxpYS5sYXdhbGxAaW5yaWEuZnI+CiogTWFrZSBjbWFfaGVhcF9idWZfb3BzIHN0YXRpYyBzdWdn ZXN0ZWQgYnkKICAgIGtlcm5lbCB0ZXN0IHJvYm90IDxsa3BAaW50ZWwuY29tPgoqIEZpeCB1bmlu aXRpYWxpemVkIHJldHVybiBpbiBjbWEgUmVwb3J0ZWQtYnk6CiAgICBrZXJuZWwgdGVzdCByb2Jv dCA8bGtwQGludGVsLmNvbT4KKiBNaW5vciBjbGVhbnVwcwp2MzoKKiBVc2UgdGhlIG5ldyBzZ3Rh YmxlIG1hcHBpbmcgZnVuY3Rpb25zLCBhcyBTdWdnZXN0ZWQtYnk6CiAgICAgRGFuaWVsIE1lbnR6 IDxkYW5pZWxtZW50ekBnb29nbGUuY29tPgp2NDoKKiBTcGVsbGluZyBmaXggc3VnZ2VzdGVkIGJ5 IEJyaWFuUwp2NjoKKiBGaXh1cHMgYWdhaW5zdCBkcm0tbWlzYy1uZXh0Ci0tLQogZHJpdmVycy9k bWEtYnVmL2hlYXBzL2NtYV9oZWFwLmMgfCAzMTUgKysrKysrKysrKysrKysrKysrKysrKysrKyst LS0tLQogMSBmaWxlIGNoYW5nZWQsIDI2NiBpbnNlcnRpb25zKCspLCA0OSBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS1idWYvaGVhcHMvY21hX2hlYXAuYyBiL2RyaXZlcnMv ZG1hLWJ1Zi9oZWFwcy9jbWFfaGVhcC5jCmluZGV4IGU1NTM4NGRjMTE1Yi4uNTI0NTlmM2U2MGUy IDEwMDY0NAotLS0gYS9kcml2ZXJzL2RtYS1idWYvaGVhcHMvY21hX2hlYXAuYworKysgYi9kcml2 ZXJzL2RtYS1idWYvaGVhcHMvY21hX2hlYXAuYwpAQCAtMiw3NiArMiwyOTEgQEAKIC8qCiAgKiBE TUFCVUYgQ01BIGhlYXAgZXhwb3J0ZXIKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTkg TGluYXJvIEx0ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxOSwgMjAyMCBMaW5hcm8gTHRk LgogICogQXV0aG9yOiA8YmVuamFtaW4uZ2FpZ25hcmRAbGluYXJvLm9yZz4gZm9yIFNULUVyaWNz c29uLgorICoKKyAqIEFsc28gdXRpbGl6aW5nIHBhcnRzIG9mIEFuZHJldyBEYXZpcycgU1JBTSBo ZWFwOgorICogQ29weXJpZ2h0IChDKSAyMDE5IFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRl ZCAtIGh0dHA6Ly93d3cudGkuY29tLworICoJQW5kcmV3IEYuIERhdmlzIDxhZmRAdGkuY29tPgog ICovCi0KICNpbmNsdWRlIDxsaW51eC9jbWEuaD4KLSNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4K ICNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLmg+CiAjaW5jbHVkZSA8bGludXgvZG1hLWhlYXAuaD4K ICNpbmNsdWRlIDxsaW51eC9kbWEtbWFwLW9wcy5oPgogI2luY2x1ZGUgPGxpbnV4L2Vyci5oPgot I2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+CiAjaW5jbHVkZSA8bGludXgvaGlnaG1lbS5oPgorI2lu Y2x1ZGUgPGxpbnV4L2lvLmg+CisjaW5jbHVkZSA8bGludXgvbW0uaD4KICNpbmNsdWRlIDxsaW51 eC9tb2R1bGUuaD4KLSNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CiAjaW5jbHVkZSA8bGludXgvc2Nh dHRlcmxpc3QuaD4KLSNpbmNsdWRlIDxsaW51eC9zY2hlZC9zaWduYWwuaD4KKyNpbmNsdWRlIDxs aW51eC9zbGFiLmg+CiAKLSNpbmNsdWRlICJoZWFwLWhlbHBlcnMuaCIKIAogc3RydWN0IGNtYV9o ZWFwIHsKIAlzdHJ1Y3QgZG1hX2hlYXAgKmhlYXA7CiAJc3RydWN0IGNtYSAqY21hOwogfTsKIAot c3RhdGljIHZvaWQgY21hX2hlYXBfZnJlZShzdHJ1Y3QgaGVhcF9oZWxwZXJfYnVmZmVyICpidWZm ZXIpCitzdHJ1Y3QgY21hX2hlYXBfYnVmZmVyIHsKKwlzdHJ1Y3QgY21hX2hlYXAgKmhlYXA7CisJ c3RydWN0IGxpc3RfaGVhZCBhdHRhY2htZW50czsKKwlzdHJ1Y3QgbXV0ZXggbG9jazsKKwl1bnNp Z25lZCBsb25nIGxlbjsKKwlzdHJ1Y3QgcGFnZSAqY21hX3BhZ2VzOworCXN0cnVjdCBwYWdlICoq cGFnZXM7CisJcGdvZmZfdCBwYWdlY291bnQ7CisJaW50IHZtYXBfY250OworCXN0cnVjdCBkbWFf YnVmX21hcCAqbWFwOworfTsKKworc3RydWN0IGRtYV9oZWFwX2F0dGFjaG1lbnQgeworCXN0cnVj dCBkZXZpY2UgKmRldjsKKwlzdHJ1Y3Qgc2dfdGFibGUgdGFibGU7CisJc3RydWN0IGxpc3RfaGVh ZCBsaXN0OworfTsKKworc3RhdGljIGludCBjbWFfaGVhcF9hdHRhY2goc3RydWN0IGRtYV9idWYg KmRtYWJ1ZiwKKwkJCSAgIHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaG1lbnQpCiB7 Ci0Jc3RydWN0IGNtYV9oZWFwICpjbWFfaGVhcCA9IGRtYV9oZWFwX2dldF9kcnZkYXRhKGJ1ZmZl ci0+aGVhcCk7Ci0JdW5zaWduZWQgbG9uZyBucl9wYWdlcyA9IGJ1ZmZlci0+cGFnZWNvdW50Owot CXN0cnVjdCBwYWdlICpjbWFfcGFnZXMgPSBidWZmZXItPnByaXZfdmlydDsKKwlzdHJ1Y3QgY21h X2hlYXBfYnVmZmVyICpidWZmZXIgPSBkbWFidWYtPnByaXY7CisJc3RydWN0IGRtYV9oZWFwX2F0 dGFjaG1lbnQgKmE7CisJaW50IHJldDsKIAotCS8qIGZyZWUgcGFnZSBsaXN0ICovCi0Ja2ZyZWUo YnVmZmVyLT5wYWdlcyk7Ci0JLyogcmVsZWFzZSBtZW1vcnkgKi8KLQljbWFfcmVsZWFzZShjbWFf aGVhcC0+Y21hLCBjbWFfcGFnZXMsIG5yX3BhZ2VzKTsKKwlhID0ga3phbGxvYyhzaXplb2YoKmEp LCBHRlBfS0VSTkVMKTsKKwlpZiAoIWEpCisJCXJldHVybiAtRU5PTUVNOworCisJcmV0ID0gc2df YWxsb2NfdGFibGVfZnJvbV9wYWdlcygmYS0+dGFibGUsIGJ1ZmZlci0+cGFnZXMsCisJCQkJCWJ1 ZmZlci0+cGFnZWNvdW50LCAwLAorCQkJCQlidWZmZXItPnBhZ2Vjb3VudCA8PCBQQUdFX1NISUZU LAorCQkJCQlHRlBfS0VSTkVMKTsKKwlpZiAocmV0KSB7CisJCWtmcmVlKGEpOworCQlyZXR1cm4g cmV0OworCX0KKworCWEtPmRldiA9IGF0dGFjaG1lbnQtPmRldjsKKwlJTklUX0xJU1RfSEVBRCgm YS0+bGlzdCk7CisKKwlhdHRhY2htZW50LT5wcml2ID0gYTsKKworCW11dGV4X2xvY2soJmJ1ZmZl ci0+bG9jayk7CisJbGlzdF9hZGQoJmEtPmxpc3QsICZidWZmZXItPmF0dGFjaG1lbnRzKTsKKwlt dXRleF91bmxvY2soJmJ1ZmZlci0+bG9jayk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZv aWQgY21hX2hlYXBfZGV0YWNoKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsCisJCQkgICAgc3RydWN0 IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNobWVudCkKK3sKKwlzdHJ1Y3QgY21hX2hlYXBfYnVm ZmVyICpidWZmZXIgPSBkbWFidWYtPnByaXY7CisJc3RydWN0IGRtYV9oZWFwX2F0dGFjaG1lbnQg KmEgPSBhdHRhY2htZW50LT5wcml2OworCisJbXV0ZXhfbG9jaygmYnVmZmVyLT5sb2NrKTsKKwls aXN0X2RlbCgmYS0+bGlzdCk7CisJbXV0ZXhfdW5sb2NrKCZidWZmZXItPmxvY2spOworCisJc2df ZnJlZV90YWJsZSgmYS0+dGFibGUpOworCWtmcmVlKGEpOworfQorCitzdGF0aWMgc3RydWN0IHNn X3RhYmxlICpjbWFfaGVhcF9tYXBfZG1hX2J1ZihzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICph dHRhY2htZW50LAorCQkJCQkgICAgIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcmVjdGlvbikK K3sKKwlzdHJ1Y3QgZG1hX2hlYXBfYXR0YWNobWVudCAqYSA9IGF0dGFjaG1lbnQtPnByaXY7CisJ c3RydWN0IHNnX3RhYmxlICp0YWJsZSA9ICZhLT50YWJsZTsKKwlpbnQgcmV0OworCisJcmV0ID0g ZG1hX21hcF9zZ3RhYmxlKGF0dGFjaG1lbnQtPmRldiwgdGFibGUsIGRpcmVjdGlvbiwgMCk7CisJ aWYgKHJldCkKKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CisJcmV0dXJuIHRhYmxlOworfQor CitzdGF0aWMgdm9pZCBjbWFfaGVhcF91bm1hcF9kbWFfYnVmKHN0cnVjdCBkbWFfYnVmX2F0dGFj aG1lbnQgKmF0dGFjaG1lbnQsCisJCQkJICAgc3RydWN0IHNnX3RhYmxlICp0YWJsZSwKKwkJCQkg ICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisJZG1hX3VubWFwX3NndGFi bGUoYXR0YWNobWVudC0+ZGV2LCB0YWJsZSwgZGlyZWN0aW9uLCAwKTsKK30KKworc3RhdGljIGlu dCBjbWFfaGVhcF9kbWFfYnVmX2JlZ2luX2NwdV9hY2Nlc3Moc3RydWN0IGRtYV9idWYgKmRtYWJ1 ZiwKKwkJCQkJICAgICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisJc3Ry dWN0IGNtYV9oZWFwX2J1ZmZlciAqYnVmZmVyID0gZG1hYnVmLT5wcml2OworCXN0cnVjdCBkbWFf aGVhcF9hdHRhY2htZW50ICphOworCisJaWYgKGJ1ZmZlci0+dm1hcF9jbnQpCisJCWludmFsaWRh dGVfa2VybmVsX3ZtYXBfcmFuZ2UoYnVmZmVyLT5tYXAtPnZhZGRyLCBidWZmZXItPmxlbik7CisK KwltdXRleF9sb2NrKCZidWZmZXItPmxvY2spOworCWxpc3RfZm9yX2VhY2hfZW50cnkoYSwgJmJ1 ZmZlci0+YXR0YWNobWVudHMsIGxpc3QpIHsKKwkJZG1hX3N5bmNfc2d0YWJsZV9mb3JfY3B1KGEt PmRldiwgJmEtPnRhYmxlLCBkaXJlY3Rpb24pOworCX0KKwltdXRleF91bmxvY2soJmJ1ZmZlci0+ bG9jayk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBjbWFfaGVhcF9kbWFfYnVmX2Vu ZF9jcHVfYWNjZXNzKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsCisJCQkJCSAgIGVudW0gZG1hX2Rh dGFfZGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKwlzdHJ1Y3QgY21hX2hlYXBfYnVmZmVyICpidWZm ZXIgPSBkbWFidWYtPnByaXY7CisJc3RydWN0IGRtYV9oZWFwX2F0dGFjaG1lbnQgKmE7CisKKwlp ZiAoYnVmZmVyLT52bWFwX2NudCkKKwkJZmx1c2hfa2VybmVsX3ZtYXBfcmFuZ2UoYnVmZmVyLT5t YXAtPnZhZGRyLCBidWZmZXItPmxlbik7CisKKwltdXRleF9sb2NrKCZidWZmZXItPmxvY2spOwor CWxpc3RfZm9yX2VhY2hfZW50cnkoYSwgJmJ1ZmZlci0+YXR0YWNobWVudHMsIGxpc3QpIHsKKwkJ ZG1hX3N5bmNfc2d0YWJsZV9mb3JfZGV2aWNlKGEtPmRldiwgJmEtPnRhYmxlLCBkaXJlY3Rpb24p OworCX0KKwltdXRleF91bmxvY2soJmJ1ZmZlci0+bG9jayk7CisKKwlyZXR1cm4gMDsKK30KKwor c3RhdGljIHZtX2ZhdWx0X3QgY21hX2hlYXBfdm1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYp Cit7CisJc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEgPSB2bWYtPnZtYTsKKwlzdHJ1Y3QgY21h X2hlYXBfYnVmZmVyICpidWZmZXIgPSB2bWEtPnZtX3ByaXZhdGVfZGF0YTsKKworCWlmICh2bWYt PnBnb2ZmID4gYnVmZmVyLT5wYWdlY291bnQpCisJCXJldHVybiBWTV9GQVVMVF9TSUdCVVM7CisK Kwl2bWYtPnBhZ2UgPSBidWZmZXItPnBhZ2VzW3ZtZi0+cGdvZmZdOworCWdldF9wYWdlKHZtZi0+ cGFnZSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCB2bV9vcGVyYXRp b25zX3N0cnVjdCBkbWFfaGVhcF92bV9vcHMgPSB7CisJLmZhdWx0ID0gY21hX2hlYXBfdm1fZmF1 bHQsCit9OworCitzdGF0aWMgaW50IGNtYV9oZWFwX21tYXAoc3RydWN0IGRtYV9idWYgKmRtYWJ1 Ziwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCit7CisJc3RydWN0IGNtYV9oZWFwX2J1ZmZl ciAqYnVmZmVyID0gZG1hYnVmLT5wcml2OworCisJaWYgKCh2bWEtPnZtX2ZsYWdzICYgKFZNX1NI QVJFRCB8IFZNX01BWVNIQVJFKSkgPT0gMCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwl2bWEtPnZt X29wcyA9ICZkbWFfaGVhcF92bV9vcHM7CisJdm1hLT52bV9wcml2YXRlX2RhdGEgPSBidWZmZXI7 CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBjbWFfaGVhcF9kb192bWFwKHN0cnVjdCBj bWFfaGVhcF9idWZmZXIgKmJ1ZmZlciwgc3RydWN0IGRtYV9idWZfbWFwICptYXApCit7CisJdm9p ZCAqdmFkZHI7CisKKwl2YWRkciA9IHZtYXAoYnVmZmVyLT5wYWdlcywgYnVmZmVyLT5wYWdlY291 bnQsIFZNX01BUCwgUEFHRV9LRVJORUwpOworCWlmICghdmFkZHIpCisJCXJldHVybiAtRU5PTUVN OworCisJZG1hX2J1Zl9tYXBfc2V0X3ZhZGRyKG1hcCwgdmFkZHIpOworCWJ1ZmZlci0+bWFwID0g bWFwOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgY21hX2hlYXBfdm1hcChzdHJ1Y3Qg ZG1hX2J1ZiAqZG1hYnVmLCBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCkKK3sKKwlzdHJ1Y3QgY21h X2hlYXBfYnVmZmVyICpidWZmZXIgPSBkbWFidWYtPnByaXY7CisJaW50IHJldCA9IDA7CisKKwlt dXRleF9sb2NrKCZidWZmZXItPmxvY2spOworCWlmIChidWZmZXItPnZtYXBfY250KSB7CisJCWJ1 ZmZlci0+dm1hcF9jbnQrKzsKKwkJZ290byBvdXQ7CisJfQorCisJcmV0ID0gY21hX2hlYXBfZG9f dm1hcChidWZmZXIsIG1hcCk7CisJaWYgKHJldCkKKwkJZ290byBvdXQ7CisKKwlidWZmZXItPnZt YXBfY250Kys7CitvdXQ6CisJbXV0ZXhfdW5sb2NrKCZidWZmZXItPmxvY2spOworCisJcmV0dXJu IHJldDsKK30KKworc3RhdGljIHZvaWQgY21hX2hlYXBfdnVubWFwKHN0cnVjdCBkbWFfYnVmICpk bWFidWYsIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKQoreworCXN0cnVjdCBjbWFfaGVhcF9idWZm ZXIgKmJ1ZmZlciA9IGRtYWJ1Zi0+cHJpdjsKKworCW11dGV4X2xvY2soJmJ1ZmZlci0+bG9jayk7 CisJaWYgKCEtLWJ1ZmZlci0+dm1hcF9jbnQpIHsKKwkJdnVubWFwKGJ1ZmZlci0+bWFwLT52YWRk cik7CisJCWRtYV9idWZfbWFwX2NsZWFyKGJ1ZmZlci0+bWFwKTsKKwl9CisJbXV0ZXhfdW5sb2Nr KCZidWZmZXItPmxvY2spOworfQorCitzdGF0aWMgdm9pZCBjbWFfaGVhcF9kbWFfYnVmX3JlbGVh c2Uoc3RydWN0IGRtYV9idWYgKmRtYWJ1ZikKK3sKKwlzdHJ1Y3QgY21hX2hlYXBfYnVmZmVyICpi dWZmZXIgPSBkbWFidWYtPnByaXY7CisJc3RydWN0IGNtYV9oZWFwICpjbWFfaGVhcCA9IGJ1ZmZl ci0+aGVhcDsKKworCWlmIChidWZmZXItPnZtYXBfY250ID4gMCkgeworCQlXQVJOKDEsICIlczog YnVmZmVyIHN0aWxsIG1hcHBlZCBpbiB0aGUga2VybmVsXG4iLCBfX2Z1bmNfXyk7CisJCXZ1bm1h cChidWZmZXItPm1hcC0+dmFkZHIpOworCX0KKworCWNtYV9yZWxlYXNlKGNtYV9oZWFwLT5jbWEs IGJ1ZmZlci0+Y21hX3BhZ2VzLCBidWZmZXItPnBhZ2Vjb3VudCk7CiAJa2ZyZWUoYnVmZmVyKTsK IH0KIAotLyogZG1hYnVmIGhlYXAgQ01BIG9wZXJhdGlvbnMgZnVuY3Rpb25zICovCitzdGF0aWMg Y29uc3Qgc3RydWN0IGRtYV9idWZfb3BzIGNtYV9oZWFwX2J1Zl9vcHMgPSB7CisJLmF0dGFjaCA9 IGNtYV9oZWFwX2F0dGFjaCwKKwkuZGV0YWNoID0gY21hX2hlYXBfZGV0YWNoLAorCS5tYXBfZG1h X2J1ZiA9IGNtYV9oZWFwX21hcF9kbWFfYnVmLAorCS51bm1hcF9kbWFfYnVmID0gY21hX2hlYXBf dW5tYXBfZG1hX2J1ZiwKKwkuYmVnaW5fY3B1X2FjY2VzcyA9IGNtYV9oZWFwX2RtYV9idWZfYmVn aW5fY3B1X2FjY2VzcywKKwkuZW5kX2NwdV9hY2Nlc3MgPSBjbWFfaGVhcF9kbWFfYnVmX2VuZF9j cHVfYWNjZXNzLAorCS5tbWFwID0gY21hX2hlYXBfbW1hcCwKKwkudm1hcCA9IGNtYV9oZWFwX3Zt YXAsCisJLnZ1bm1hcCA9IGNtYV9oZWFwX3Z1bm1hcCwKKwkucmVsZWFzZSA9IGNtYV9oZWFwX2Rt YV9idWZfcmVsZWFzZSwKK307CisKIHN0YXRpYyBpbnQgY21hX2hlYXBfYWxsb2NhdGUoc3RydWN0 IGRtYV9oZWFwICpoZWFwLAotCQkJICAgICB1bnNpZ25lZCBsb25nIGxlbiwKLQkJCSAgICAgdW5z aWduZWQgbG9uZyBmZF9mbGFncywKLQkJCSAgICAgdW5zaWduZWQgbG9uZyBoZWFwX2ZsYWdzKQor CQkJCSAgdW5zaWduZWQgbG9uZyBsZW4sCisJCQkJICB1bnNpZ25lZCBsb25nIGZkX2ZsYWdzLAor CQkJCSAgdW5zaWduZWQgbG9uZyBoZWFwX2ZsYWdzKQogewogCXN0cnVjdCBjbWFfaGVhcCAqY21h X2hlYXAgPSBkbWFfaGVhcF9nZXRfZHJ2ZGF0YShoZWFwKTsKLQlzdHJ1Y3QgaGVhcF9oZWxwZXJf YnVmZmVyICpoZWxwZXJfYnVmZmVyOwotCXN0cnVjdCBwYWdlICpjbWFfcGFnZXM7CisJc3RydWN0 IGNtYV9oZWFwX2J1ZmZlciAqYnVmZmVyOworCURFRklORV9ETUFfQlVGX0VYUE9SVF9JTkZPKGV4 cF9pbmZvKTsKIAlzaXplX3Qgc2l6ZSA9IFBBR0VfQUxJR04obGVuKTsKLQl1bnNpZ25lZCBsb25n IG5yX3BhZ2VzID0gc2l6ZSA+PiBQQUdFX1NISUZUOworCXBnb2ZmX3QgcGFnZWNvdW50ID0gc2l6 ZSA+PiBQQUdFX1NISUZUOwogCXVuc2lnbmVkIGxvbmcgYWxpZ24gPSBnZXRfb3JkZXIoc2l6ZSk7 CisJc3RydWN0IHBhZ2UgKmNtYV9wYWdlczsKIAlzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmOwogCWlu dCByZXQgPSAtRU5PTUVNOwogCXBnb2ZmX3QgcGc7CiAKLQlpZiAoYWxpZ24gPiBDT05GSUdfQ01B X0FMSUdOTUVOVCkKLQkJYWxpZ24gPSBDT05GSUdfQ01BX0FMSUdOTUVOVDsKLQotCWhlbHBlcl9i dWZmZXIgPSBremFsbG9jKHNpemVvZigqaGVscGVyX2J1ZmZlciksIEdGUF9LRVJORUwpOwotCWlm ICghaGVscGVyX2J1ZmZlcikKKwlidWZmZXIgPSBremFsbG9jKHNpemVvZigqYnVmZmVyKSwgR0ZQ X0tFUk5FTCk7CisJaWYgKCFidWZmZXIpCiAJCXJldHVybiAtRU5PTUVNOwogCi0JaW5pdF9oZWFw X2hlbHBlcl9idWZmZXIoaGVscGVyX2J1ZmZlciwgY21hX2hlYXBfZnJlZSk7Ci0JaGVscGVyX2J1 ZmZlci0+aGVhcCA9IGhlYXA7Ci0JaGVscGVyX2J1ZmZlci0+c2l6ZSA9IGxlbjsKKwlJTklUX0xJ U1RfSEVBRCgmYnVmZmVyLT5hdHRhY2htZW50cyk7CisJbXV0ZXhfaW5pdCgmYnVmZmVyLT5sb2Nr KTsKKwlidWZmZXItPmxlbiA9IHNpemU7CisKKwlpZiAoYWxpZ24gPiBDT05GSUdfQ01BX0FMSUdO TUVOVCkKKwkJYWxpZ24gPSBDT05GSUdfQ01BX0FMSUdOTUVOVDsKIAotCWNtYV9wYWdlcyA9IGNt YV9hbGxvYyhjbWFfaGVhcC0+Y21hLCBucl9wYWdlcywgYWxpZ24sIGZhbHNlKTsKKwljbWFfcGFn ZXMgPSBjbWFfYWxsb2MoY21hX2hlYXAtPmNtYSwgcGFnZWNvdW50LCBhbGlnbiwgZmFsc2UpOwog CWlmICghY21hX3BhZ2VzKQotCQlnb3RvIGZyZWVfYnVmOworCQlnb3RvIGZyZWVfYnVmZmVyOwog CisJLyogQ2xlYXIgdGhlIGNtYSBwYWdlcyAqLwogCWlmIChQYWdlSGlnaE1lbShjbWFfcGFnZXMp KSB7Ci0JCXVuc2lnbmVkIGxvbmcgbnJfY2xlYXJfcGFnZXMgPSBucl9wYWdlczsKKwkJdW5zaWdu ZWQgbG9uZyBucl9jbGVhcl9wYWdlcyA9IHBhZ2Vjb3VudDsKIAkJc3RydWN0IHBhZ2UgKnBhZ2Ug PSBjbWFfcGFnZXM7CiAKIAkJd2hpbGUgKG5yX2NsZWFyX3BhZ2VzID4gMCkgewpAQCAtODUsNyAr MzAwLDYgQEAgc3RhdGljIGludCBjbWFfaGVhcF9hbGxvY2F0ZShzdHJ1Y3QgZG1hX2hlYXAgKmhl YXAsCiAJCQkgKi8KIAkJCWlmIChmYXRhbF9zaWduYWxfcGVuZGluZyhjdXJyZW50KSkKIAkJCQln b3RvIGZyZWVfY21hOwotCiAJCQlwYWdlKys7CiAJCQlucl9jbGVhcl9wYWdlcy0tOwogCQl9CkBA IC05MywyOCArMzA3LDMwIEBAIHN0YXRpYyBpbnQgY21hX2hlYXBfYWxsb2NhdGUoc3RydWN0IGRt YV9oZWFwICpoZWFwLAogCQltZW1zZXQocGFnZV9hZGRyZXNzKGNtYV9wYWdlcyksIDAsIHNpemUp OwogCX0KIAotCWhlbHBlcl9idWZmZXItPnBhZ2Vjb3VudCA9IG5yX3BhZ2VzOwotCWhlbHBlcl9i dWZmZXItPnBhZ2VzID0ga21hbGxvY19hcnJheShoZWxwZXJfYnVmZmVyLT5wYWdlY291bnQsCi0J CQkJCSAgICAgc2l6ZW9mKCpoZWxwZXJfYnVmZmVyLT5wYWdlcyksCi0JCQkJCSAgICAgR0ZQX0tF Uk5FTCk7Ci0JaWYgKCFoZWxwZXJfYnVmZmVyLT5wYWdlcykgeworCWJ1ZmZlci0+cGFnZXMgPSBr bWFsbG9jX2FycmF5KHBhZ2Vjb3VudCwgc2l6ZW9mKCpidWZmZXItPnBhZ2VzKSwgR0ZQX0tFUk5F TCk7CisJaWYgKCFidWZmZXItPnBhZ2VzKSB7CiAJCXJldCA9IC1FTk9NRU07CiAJCWdvdG8gZnJl ZV9jbWE7CiAJfQogCi0JZm9yIChwZyA9IDA7IHBnIDwgaGVscGVyX2J1ZmZlci0+cGFnZWNvdW50 OyBwZysrKQotCQloZWxwZXJfYnVmZmVyLT5wYWdlc1twZ10gPSAmY21hX3BhZ2VzW3BnXTsKKwlm b3IgKHBnID0gMDsgcGcgPCBwYWdlY291bnQ7IHBnKyspCisJCWJ1ZmZlci0+cGFnZXNbcGddID0g JmNtYV9wYWdlc1twZ107CisKKwlidWZmZXItPmNtYV9wYWdlcyA9IGNtYV9wYWdlczsKKwlidWZm ZXItPmhlYXAgPSBjbWFfaGVhcDsKKwlidWZmZXItPnBhZ2Vjb3VudCA9IHBhZ2Vjb3VudDsKIAog CS8qIGNyZWF0ZSB0aGUgZG1hYnVmICovCi0JZG1hYnVmID0gaGVhcF9oZWxwZXJfZXhwb3J0X2Rt YWJ1ZihoZWxwZXJfYnVmZmVyLCBmZF9mbGFncyk7CisJZXhwX2luZm8ub3BzID0gJmNtYV9oZWFw X2J1Zl9vcHM7CisJZXhwX2luZm8uc2l6ZSA9IGJ1ZmZlci0+bGVuOworCWV4cF9pbmZvLmZsYWdz ID0gZmRfZmxhZ3M7CisJZXhwX2luZm8ucHJpdiA9IGJ1ZmZlcjsKKwlkbWFidWYgPSBkbWFfYnVm X2V4cG9ydCgmZXhwX2luZm8pOwogCWlmIChJU19FUlIoZG1hYnVmKSkgewogCQlyZXQgPSBQVFJf RVJSKGRtYWJ1Zik7CiAJCWdvdG8gZnJlZV9wYWdlczsKIAl9CiAKLQloZWxwZXJfYnVmZmVyLT5k bWFidWYgPSBkbWFidWY7Ci0JaGVscGVyX2J1ZmZlci0+cHJpdl92aXJ0ID0gY21hX3BhZ2VzOwot CiAJcmV0ID0gZG1hX2J1Zl9mZChkbWFidWYsIGZkX2ZsYWdzKTsKIAlpZiAocmV0IDwgMCkgewog CQlkbWFfYnVmX3B1dChkbWFidWYpOwpAQCAtMTI1LDExICszNDEsMTIgQEAgc3RhdGljIGludCBj bWFfaGVhcF9hbGxvY2F0ZShzdHJ1Y3QgZG1hX2hlYXAgKmhlYXAsCiAJcmV0dXJuIHJldDsKIAog ZnJlZV9wYWdlczoKLQlrZnJlZShoZWxwZXJfYnVmZmVyLT5wYWdlcyk7CisJa2ZyZWUoYnVmZmVy LT5wYWdlcyk7CiBmcmVlX2NtYToKLQljbWFfcmVsZWFzZShjbWFfaGVhcC0+Y21hLCBjbWFfcGFn ZXMsIG5yX3BhZ2VzKTsKLWZyZWVfYnVmOgotCWtmcmVlKGhlbHBlcl9idWZmZXIpOworCWNtYV9y ZWxlYXNlKGNtYV9oZWFwLT5jbWEsIGNtYV9wYWdlcywgcGFnZWNvdW50KTsKK2ZyZWVfYnVmZmVy OgorCWtmcmVlKGJ1ZmZlcik7CisKIAlyZXR1cm4gcmV0OwogfQogCi0tIAoyLjE3LjEKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWls aW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=