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 8660AC388F9 for ; Sat, 21 Nov 2020 23:50:15 +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 3E1AF20A8B for ; Sat, 21 Nov 2020 23:50:15 +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="kPLcAWIb" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3E1AF20A8B 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 69AC5899AB; Sat, 21 Nov 2020 23:50:10 +0000 (UTC) Received: from mail-pg1-x543.google.com (mail-pg1-x543.google.com [IPv6:2607:f8b0:4864:20::543]) by gabe.freedesktop.org (Postfix) with ESMTPS id CC5E489958 for ; Sat, 21 Nov 2020 23:50:08 +0000 (UTC) Received: by mail-pg1-x543.google.com with SMTP id f17so2231408pge.6 for ; Sat, 21 Nov 2020 15:50:08 -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=c2s7nB9SkqbIhzssEspfzXyZKEjQ06doWtBlfZPnjhE=; b=kPLcAWIb+uSUH0jcceND6RD2xFQdLK7l6YmZcYJ/h7UgLbN5e19qPrPWCoF7QZzJhU 4y4k+h0zHsmpLyO/rg5NyBOR5+I4g4i6OUNiQsUtAAESvOuulpJgIy0/PZRJH/WBl7PE DHuevO4RavWkxck0jKdgOfGKtd51hAxIfRQ81smhjA1iSUz9XX4vyPdY2xBaFYh33HvV ubClMNB6MvTpwA8fqUE2NzD3CQ0hgRsj+OcqtRNQQ2GL2CZrkZDNjXUgRg+vysE6M/aV LLJ7zaiO97v6hs1F8aTqOg4iKlwATvgFPjZJCYQDT0YeaQOPq1+5aZAoyW/RdurHmh76 FZBw== 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=c2s7nB9SkqbIhzssEspfzXyZKEjQ06doWtBlfZPnjhE=; b=KzekXgOFp9TsDuyL17tmOlcZ9NcXepX5P1RBEmEPn5gHjRQ0TvYnsGWN3WFGONYKzy VNf/RMRts6JyWgxCgbGDZK0t49dWnSoYEYBW4kcZwYgTjihYhjeCofGsW/zdYIRZYCb4 jsp7ihjLijgE6JgVscN7zL4HQkIxuM2hEdal+N5n1bk1OOyCcDQOjgFqj3aKnwXL+ALO I8ibPLifoBISQkBYYDWlBKz35LGQMdA78ouVLHuKgaM7hyUnHS2vJLtEw5gOiis4/BCx J8K3UFosRRaIHO3sDurlCv1HcyEzRh5bQGUP8dSxl20RPchGEiErZdbmLyDzz1WBLQra j9PA== X-Gm-Message-State: AOAM531fj/eLP//845RpFGtrQuLkixeaLES+SN4NiB7DU1k6ZA/bbqvP 4cHB+HcOq9bI9y/CnGa9Erm6UQ== X-Google-Smtp-Source: ABdhPJyhC2H+iJhaVHfL4agGuZMo5AXWaf6ugFocXelSYnLxfZVPfR0daBetMCcK/OgPNhHb25h82A== X-Received: by 2002:a63:5a1c:: with SMTP id o28mr11001947pgb.272.1606002608431; Sat, 21 Nov 2020 15:50:08 -0800 (PST) Received: from localhost.localdomain ([2601:1c2:680:1319:692:26ff:feda:3a81]) by smtp.gmail.com with ESMTPSA id v126sm7882525pfb.137.2020.11.21.15.50.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 21 Nov 2020 15:50:07 -0800 (PST) From: John Stultz To: lkml Subject: [PATCH v7 2/5] dma-buf: heaps: Move heap-helper logic into the cma_heap implementation Date: Sat, 21 Nov 2020 23:49:59 +0000 Message-Id: <20201121235002.69945-3-john.stultz@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201121235002.69945-1-john.stultz@linaro.org> References: <20201121235002.69945-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 IEJyaWFuUwp2NjoKKiBGaXh1cHMgYWdhaW5zdCBkcm0tbWlzYy1uZXh0CnY3OgoqIFJlZG8gdGhl IGluY29ycmVjdCBkbWEtYnVmLW1hcCBhZGFwdGF0aW9uIGluIHRoZSBsYXN0IHJldmlzaW9uCi0t LQogZHJpdmVycy9kbWEtYnVmL2hlYXBzL2NtYV9oZWFwLmMgfCAzMTkgKysrKysrKysrKysrKysr KysrKysrKysrKystLS0tLQogMSBmaWxlIGNoYW5nZWQsIDI3MCBpbnNlcnRpb25zKCspLCA0OSBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS1idWYvaGVhcHMvY21hX2hlYXAu YyBiL2RyaXZlcnMvZG1hLWJ1Zi9oZWFwcy9jbWFfaGVhcC5jCmluZGV4IGU1NTM4NGRjMTE1Yi4u MDVhYWE0ZjI5Mzk3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2RtYS1idWYvaGVhcHMvY21hX2hlYXAu YworKysgYi9kcml2ZXJzL2RtYS1idWYvaGVhcHMvY21hX2hlYXAuYwpAQCAtMiw3NiArMiwyOTUg QEAKIC8qCiAgKiBETUFCVUYgQ01BIGhlYXAgZXhwb3J0ZXIKICAqCi0gKiBDb3B5cmlnaHQgKEMp IDIwMTIsIDIwMTkgTGluYXJvIEx0ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxOSwgMjAy MCBMaW5hcm8gTHRkLgogICogQXV0aG9yOiA8YmVuamFtaW4uZ2FpZ25hcmRAbGluYXJvLm9yZz4g Zm9yIFNULUVyaWNzc29uLgorICoKKyAqIEFsc28gdXRpbGl6aW5nIHBhcnRzIG9mIEFuZHJldyBE YXZpcycgU1JBTSBoZWFwOgorICogQ29weXJpZ2h0IChDKSAyMDE5IFRleGFzIEluc3RydW1lbnRz IEluY29ycG9yYXRlZCAtIGh0dHA6Ly93d3cudGkuY29tLworICoJQW5kcmV3IEYuIERhdmlzIDxh ZmRAdGkuY29tPgogICovCi0KICNpbmNsdWRlIDxsaW51eC9jbWEuaD4KLSNpbmNsdWRlIDxsaW51 eC9kZXZpY2UuaD4KICNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLmg+CiAjaW5jbHVkZSA8bGludXgv ZG1hLWhlYXAuaD4KICNpbmNsdWRlIDxsaW51eC9kbWEtbWFwLW9wcy5oPgogI2luY2x1ZGUgPGxp bnV4L2Vyci5oPgotI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+CiAjaW5jbHVkZSA8bGludXgvaGln aG1lbS5oPgorI2luY2x1ZGUgPGxpbnV4L2lvLmg+CisjaW5jbHVkZSA8bGludXgvbW0uaD4KICNp bmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KLSNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CiAjaW5jbHVk ZSA8bGludXgvc2NhdHRlcmxpc3QuaD4KLSNpbmNsdWRlIDxsaW51eC9zY2hlZC9zaWduYWwuaD4K KyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CiAKLSNpbmNsdWRlICJoZWFwLWhlbHBlcnMuaCIKIAog c3RydWN0IGNtYV9oZWFwIHsKIAlzdHJ1Y3QgZG1hX2hlYXAgKmhlYXA7CiAJc3RydWN0IGNtYSAq Y21hOwogfTsKIAotc3RhdGljIHZvaWQgY21hX2hlYXBfZnJlZShzdHJ1Y3QgaGVhcF9oZWxwZXJf YnVmZmVyICpidWZmZXIpCitzdHJ1Y3QgY21hX2hlYXBfYnVmZmVyIHsKKwlzdHJ1Y3QgY21hX2hl YXAgKmhlYXA7CisJc3RydWN0IGxpc3RfaGVhZCBhdHRhY2htZW50czsKKwlzdHJ1Y3QgbXV0ZXgg bG9jazsKKwl1bnNpZ25lZCBsb25nIGxlbjsKKwlzdHJ1Y3QgcGFnZSAqY21hX3BhZ2VzOworCXN0 cnVjdCBwYWdlICoqcGFnZXM7CisJcGdvZmZfdCBwYWdlY291bnQ7CisJaW50IHZtYXBfY250Owor CXZvaWQgKnZhZGRyOworfTsKKworc3RydWN0IGRtYV9oZWFwX2F0dGFjaG1lbnQgeworCXN0cnVj 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 dGVfa2VybmVsX3ZtYXBfcmFuZ2UoYnVmZmVyLT52YWRkciwgYnVmZmVyLT5sZW4pOworCisJbXV0 ZXhfbG9jaygmYnVmZmVyLT5sb2NrKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGEsICZidWZmZXIt PmF0dGFjaG1lbnRzLCBsaXN0KSB7CisJCWRtYV9zeW5jX3NndGFibGVfZm9yX2NwdShhLT5kZXYs ICZhLT50YWJsZSwgZGlyZWN0aW9uKTsKKwl9CisJbXV0ZXhfdW5sb2NrKCZidWZmZXItPmxvY2sp OworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgY21hX2hlYXBfZG1hX2J1Zl9lbmRfY3B1 X2FjY2VzcyhzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLAorCQkJCQkgICBlbnVtIGRtYV9kYXRhX2Rp cmVjdGlvbiBkaXJlY3Rpb24pCit7CisJc3RydWN0IGNtYV9oZWFwX2J1ZmZlciAqYnVmZmVyID0g ZG1hYnVmLT5wcml2OworCXN0cnVjdCBkbWFfaGVhcF9hdHRhY2htZW50ICphOworCisJaWYgKGJ1 ZmZlci0+dm1hcF9jbnQpCisJCWZsdXNoX2tlcm5lbF92bWFwX3JhbmdlKGJ1ZmZlci0+dmFkZHIs IGJ1ZmZlci0+bGVuKTsKKworCW11dGV4X2xvY2soJmJ1ZmZlci0+bG9jayk7CisJbGlzdF9mb3Jf ZWFjaF9lbnRyeShhLCAmYnVmZmVyLT5hdHRhY2htZW50cywgbGlzdCkgeworCQlkbWFfc3luY19z Z3RhYmxlX2Zvcl9kZXZpY2UoYS0+ZGV2LCAmYS0+dGFibGUsIGRpcmVjdGlvbik7CisJfQorCW11 dGV4X3VubG9jaygmYnVmZmVyLT5sb2NrKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm1f ZmF1bHRfdCBjbWFfaGVhcF92bV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZikKK3sKKwlzdHJ1 Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSA9IHZtZi0+dm1hOworCXN0cnVjdCBjbWFfaGVhcF9idWZm ZXIgKmJ1ZmZlciA9IHZtYS0+dm1fcHJpdmF0ZV9kYXRhOworCisJaWYgKHZtZi0+cGdvZmYgPiBi dWZmZXItPnBhZ2Vjb3VudCkKKwkJcmV0dXJuIFZNX0ZBVUxUX1NJR0JVUzsKKworCXZtZi0+cGFn ZSA9IGJ1ZmZlci0+cGFnZXNbdm1mLT5wZ29mZl07CisJZ2V0X3BhZ2Uodm1mLT5wYWdlKTsKKwor CXJldHVybiAwOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IHZtX29wZXJhdGlvbnNfc3RydWN0 IGRtYV9oZWFwX3ZtX29wcyA9IHsKKwkuZmF1bHQgPSBjbWFfaGVhcF92bV9mYXVsdCwKK307CisK K3N0YXRpYyBpbnQgY21hX2hlYXBfbW1hcChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLCBzdHJ1Y3Qg dm1fYXJlYV9zdHJ1Y3QgKnZtYSkKK3sKKwlzdHJ1Y3QgY21hX2hlYXBfYnVmZmVyICpidWZmZXIg PSBkbWFidWYtPnByaXY7CisKKwlpZiAoKHZtYS0+dm1fZmxhZ3MgJiAoVk1fU0hBUkVEIHwgVk1f TUFZU0hBUkUpKSA9PSAwKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXZtYS0+dm1fb3BzID0gJmRt YV9oZWFwX3ZtX29wczsKKwl2bWEtPnZtX3ByaXZhdGVfZGF0YSA9IGJ1ZmZlcjsKKworCXJldHVy biAwOworfQorCitzdGF0aWMgdm9pZCAqY21hX2hlYXBfZG9fdm1hcChzdHJ1Y3QgY21hX2hlYXBf YnVmZmVyICpidWZmZXIpCit7CisJdm9pZCAqdmFkZHI7CisKKwl2YWRkciA9IHZtYXAoYnVmZmVy LT5wYWdlcywgYnVmZmVyLT5wYWdlY291bnQsIFZNX01BUCwgUEFHRV9LRVJORUwpOworCWlmICgh dmFkZHIpCisJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOworCisJcmV0dXJuIHZhZGRyOworfQor CitzdGF0aWMgaW50IGNtYV9oZWFwX3ZtYXAoc3RydWN0IGRtYV9idWYgKmRtYWJ1Ziwgc3RydWN0 IGRtYV9idWZfbWFwICptYXApCit7CisJc3RydWN0IGNtYV9oZWFwX2J1ZmZlciAqYnVmZmVyID0g ZG1hYnVmLT5wcml2OworCXZvaWQgKnZhZGRyOworCWludCByZXQgPSAwOworCisJbXV0ZXhfbG9j aygmYnVmZmVyLT5sb2NrKTsKKwlpZiAoYnVmZmVyLT52bWFwX2NudCkgeworCQlidWZmZXItPnZt YXBfY250Kys7CisJCWRtYV9idWZfbWFwX3NldF92YWRkcihtYXAsIGJ1ZmZlci0+dmFkZHIpOwor CQlnb3RvIG91dDsKKwl9CisKKwl2YWRkciA9IGNtYV9oZWFwX2RvX3ZtYXAoYnVmZmVyKTsKKwlp ZiAoSVNfRVJSKHZhZGRyKSkgeworCQlyZXQgPSBQVFJfRVJSKHZhZGRyKTsKKwkJZ290byBvdXQ7 CisJfQorCWJ1ZmZlci0+dmFkZHIgPSB2YWRkcjsKKwlidWZmZXItPnZtYXBfY250Kys7CisJZG1h X2J1Zl9tYXBfc2V0X3ZhZGRyKG1hcCwgYnVmZmVyLT52YWRkcik7CitvdXQ6CisJbXV0ZXhfdW5s b2NrKCZidWZmZXItPmxvY2spOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQgY21h X2hlYXBfdnVubWFwKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsIHN0cnVjdCBkbWFfYnVmX21hcCAq bWFwKQoreworCXN0cnVjdCBjbWFfaGVhcF9idWZmZXIgKmJ1ZmZlciA9IGRtYWJ1Zi0+cHJpdjsK KworCW11dGV4X2xvY2soJmJ1ZmZlci0+bG9jayk7CisJaWYgKCEtLWJ1ZmZlci0+dm1hcF9jbnQp IHsKKwkJdnVubWFwKGJ1ZmZlci0+dmFkZHIpOworCQlidWZmZXItPnZhZGRyID0gTlVMTDsKKwl9 CisJbXV0ZXhfdW5sb2NrKCZidWZmZXItPmxvY2spOworCWRtYV9idWZfbWFwX2NsZWFyKG1hcCk7 Cit9CisKK3N0YXRpYyB2b2lkIGNtYV9oZWFwX2RtYV9idWZfcmVsZWFzZShzdHJ1Y3QgZG1hX2J1 ZiAqZG1hYnVmKQoreworCXN0cnVjdCBjbWFfaGVhcF9idWZmZXIgKmJ1ZmZlciA9IGRtYWJ1Zi0+ cHJpdjsKKwlzdHJ1Y3QgY21hX2hlYXAgKmNtYV9oZWFwID0gYnVmZmVyLT5oZWFwOworCisJaWYg KGJ1ZmZlci0+dm1hcF9jbnQgPiAwKSB7CisJCVdBUk4oMSwgIiVzOiBidWZmZXIgc3RpbGwgbWFw cGVkIGluIHRoZSBrZXJuZWxcbiIsIF9fZnVuY19fKTsKKwkJdnVubWFwKGJ1ZmZlci0+dmFkZHIp OworCQlidWZmZXItPnZhZGRyID0gTlVMTDsKKwl9CisKKwljbWFfcmVsZWFzZShjbWFfaGVhcC0+ Y21hLCBidWZmZXItPmNtYV9wYWdlcywgYnVmZmVyLT5wYWdlY291bnQpOwogCWtmcmVlKGJ1ZmZl cik7CiB9CiAKLS8qIGRtYWJ1ZiBoZWFwIENNQSBvcGVyYXRpb25zIGZ1bmN0aW9ucyAqLworc3Rh dGljIGNvbnN0IHN0cnVjdCBkbWFfYnVmX29wcyBjbWFfaGVhcF9idWZfb3BzID0geworCS5hdHRh Y2ggPSBjbWFfaGVhcF9hdHRhY2gsCisJLmRldGFjaCA9IGNtYV9oZWFwX2RldGFjaCwKKwkubWFw X2RtYV9idWYgPSBjbWFfaGVhcF9tYXBfZG1hX2J1ZiwKKwkudW5tYXBfZG1hX2J1ZiA9IGNtYV9o ZWFwX3VubWFwX2RtYV9idWYsCisJLmJlZ2luX2NwdV9hY2Nlc3MgPSBjbWFfaGVhcF9kbWFfYnVm X2JlZ2luX2NwdV9hY2Nlc3MsCisJLmVuZF9jcHVfYWNjZXNzID0gY21hX2hlYXBfZG1hX2J1Zl9l bmRfY3B1X2FjY2VzcywKKwkubW1hcCA9IGNtYV9oZWFwX21tYXAsCisJLnZtYXAgPSBjbWFfaGVh cF92bWFwLAorCS52dW5tYXAgPSBjbWFfaGVhcF92dW5tYXAsCisJLnJlbGVhc2UgPSBjbWFfaGVh cF9kbWFfYnVmX3JlbGVhc2UsCit9OworCiBzdGF0aWMgaW50IGNtYV9oZWFwX2FsbG9jYXRlKHN0 cnVjdCBkbWFfaGVhcCAqaGVhcCwKLQkJCSAgICAgdW5zaWduZWQgbG9uZyBsZW4sCi0JCQkgICAg IHVuc2lnbmVkIGxvbmcgZmRfZmxhZ3MsCi0JCQkgICAgIHVuc2lnbmVkIGxvbmcgaGVhcF9mbGFn cykKKwkJCQkgIHVuc2lnbmVkIGxvbmcgbGVuLAorCQkJCSAgdW5zaWduZWQgbG9uZyBmZF9mbGFn cywKKwkJCQkgIHVuc2lnbmVkIGxvbmcgaGVhcF9mbGFncykKIHsKIAlzdHJ1Y3QgY21hX2hlYXAg KmNtYV9oZWFwID0gZG1hX2hlYXBfZ2V0X2RydmRhdGEoaGVhcCk7Ci0Jc3RydWN0IGhlYXBfaGVs cGVyX2J1ZmZlciAqaGVscGVyX2J1ZmZlcjsKLQlzdHJ1Y3QgcGFnZSAqY21hX3BhZ2VzOworCXN0 cnVjdCBjbWFfaGVhcF9idWZmZXIgKmJ1ZmZlcjsKKwlERUZJTkVfRE1BX0JVRl9FWFBPUlRfSU5G TyhleHBfaW5mbyk7CiAJc2l6ZV90IHNpemUgPSBQQUdFX0FMSUdOKGxlbik7Ci0JdW5zaWduZWQg bG9uZyBucl9wYWdlcyA9IHNpemUgPj4gUEFHRV9TSElGVDsKKwlwZ29mZl90IHBhZ2Vjb3VudCA9 IHNpemUgPj4gUEFHRV9TSElGVDsKIAl1bnNpZ25lZCBsb25nIGFsaWduID0gZ2V0X29yZGVyKHNp emUpOworCXN0cnVjdCBwYWdlICpjbWFfcGFnZXM7CiAJc3RydWN0IGRtYV9idWYgKmRtYWJ1ZjsK IAlpbnQgcmV0ID0gLUVOT01FTTsKIAlwZ29mZl90IHBnOwogCi0JaWYgKGFsaWduID4gQ09ORklH X0NNQV9BTElHTk1FTlQpCi0JCWFsaWduID0gQ09ORklHX0NNQV9BTElHTk1FTlQ7Ci0KLQloZWxw ZXJfYnVmZmVyID0ga3phbGxvYyhzaXplb2YoKmhlbHBlcl9idWZmZXIpLCBHRlBfS0VSTkVMKTsK LQlpZiAoIWhlbHBlcl9idWZmZXIpCisJYnVmZmVyID0ga3phbGxvYyhzaXplb2YoKmJ1ZmZlciks IEdGUF9LRVJORUwpOworCWlmICghYnVmZmVyKQogCQlyZXR1cm4gLUVOT01FTTsKIAotCWluaXRf aGVhcF9oZWxwZXJfYnVmZmVyKGhlbHBlcl9idWZmZXIsIGNtYV9oZWFwX2ZyZWUpOwotCWhlbHBl cl9idWZmZXItPmhlYXAgPSBoZWFwOwotCWhlbHBlcl9idWZmZXItPnNpemUgPSBsZW47CisJSU5J VF9MSVNUX0hFQUQoJmJ1ZmZlci0+YXR0YWNobWVudHMpOworCW11dGV4X2luaXQoJmJ1ZmZlci0+ bG9jayk7CisJYnVmZmVyLT5sZW4gPSBzaXplOworCisJaWYgKGFsaWduID4gQ09ORklHX0NNQV9B TElHTk1FTlQpCisJCWFsaWduID0gQ09ORklHX0NNQV9BTElHTk1FTlQ7CiAKLQljbWFfcGFnZXMg PSBjbWFfYWxsb2MoY21hX2hlYXAtPmNtYSwgbnJfcGFnZXMsIGFsaWduLCBmYWxzZSk7CisJY21h X3BhZ2VzID0gY21hX2FsbG9jKGNtYV9oZWFwLT5jbWEsIHBhZ2Vjb3VudCwgYWxpZ24sIGZhbHNl KTsKIAlpZiAoIWNtYV9wYWdlcykKLQkJZ290byBmcmVlX2J1ZjsKKwkJZ290byBmcmVlX2J1ZmZl cjsKIAorCS8qIENsZWFyIHRoZSBjbWEgcGFnZXMgKi8KIAlpZiAoUGFnZUhpZ2hNZW0oY21hX3Bh Z2VzKSkgewotCQl1bnNpZ25lZCBsb25nIG5yX2NsZWFyX3BhZ2VzID0gbnJfcGFnZXM7CisJCXVu c2lnbmVkIGxvbmcgbnJfY2xlYXJfcGFnZXMgPSBwYWdlY291bnQ7CiAJCXN0cnVjdCBwYWdlICpw YWdlID0gY21hX3BhZ2VzOwogCiAJCXdoaWxlIChucl9jbGVhcl9wYWdlcyA+IDApIHsKQEAgLTg1 LDcgKzMwNCw2IEBAIHN0YXRpYyBpbnQgY21hX2hlYXBfYWxsb2NhdGUoc3RydWN0IGRtYV9oZWFw ICpoZWFwLAogCQkJICovCiAJCQlpZiAoZmF0YWxfc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpCiAJ CQkJZ290byBmcmVlX2NtYTsKLQogCQkJcGFnZSsrOwogCQkJbnJfY2xlYXJfcGFnZXMtLTsKIAkJ fQpAQCAtOTMsMjggKzMxMSwzMCBAQCBzdGF0aWMgaW50IGNtYV9oZWFwX2FsbG9jYXRlKHN0cnVj dCBkbWFfaGVhcCAqaGVhcCwKIAkJbWVtc2V0KHBhZ2VfYWRkcmVzcyhjbWFfcGFnZXMpLCAwLCBz aXplKTsKIAl9CiAKLQloZWxwZXJfYnVmZmVyLT5wYWdlY291bnQgPSBucl9wYWdlczsKLQloZWxw ZXJfYnVmZmVyLT5wYWdlcyA9IGttYWxsb2NfYXJyYXkoaGVscGVyX2J1ZmZlci0+cGFnZWNvdW50 LAotCQkJCQkgICAgIHNpemVvZigqaGVscGVyX2J1ZmZlci0+cGFnZXMpLAotCQkJCQkgICAgIEdG UF9LRVJORUwpOwotCWlmICghaGVscGVyX2J1ZmZlci0+cGFnZXMpIHsKKwlidWZmZXItPnBhZ2Vz ID0ga21hbGxvY19hcnJheShwYWdlY291bnQsIHNpemVvZigqYnVmZmVyLT5wYWdlcyksIEdGUF9L RVJORUwpOworCWlmICghYnVmZmVyLT5wYWdlcykgewogCQlyZXQgPSAtRU5PTUVNOwogCQlnb3Rv IGZyZWVfY21hOwogCX0KIAotCWZvciAocGcgPSAwOyBwZyA8IGhlbHBlcl9idWZmZXItPnBhZ2Vj b3VudDsgcGcrKykKLQkJaGVscGVyX2J1ZmZlci0+cGFnZXNbcGddID0gJmNtYV9wYWdlc1twZ107 CisJZm9yIChwZyA9IDA7IHBnIDwgcGFnZWNvdW50OyBwZysrKQorCQlidWZmZXItPnBhZ2VzW3Bn XSA9ICZjbWFfcGFnZXNbcGddOworCisJYnVmZmVyLT5jbWFfcGFnZXMgPSBjbWFfcGFnZXM7CisJ YnVmZmVyLT5oZWFwID0gY21hX2hlYXA7CisJYnVmZmVyLT5wYWdlY291bnQgPSBwYWdlY291bnQ7 CiAKIAkvKiBjcmVhdGUgdGhlIGRtYWJ1ZiAqLwotCWRtYWJ1ZiA9IGhlYXBfaGVscGVyX2V4cG9y dF9kbWFidWYoaGVscGVyX2J1ZmZlciwgZmRfZmxhZ3MpOworCWV4cF9pbmZvLm9wcyA9ICZjbWFf aGVhcF9idWZfb3BzOworCWV4cF9pbmZvLnNpemUgPSBidWZmZXItPmxlbjsKKwlleHBfaW5mby5m bGFncyA9IGZkX2ZsYWdzOworCWV4cF9pbmZvLnByaXYgPSBidWZmZXI7CisJZG1hYnVmID0gZG1h X2J1Zl9leHBvcnQoJmV4cF9pbmZvKTsKIAlpZiAoSVNfRVJSKGRtYWJ1ZikpIHsKIAkJcmV0ID0g UFRSX0VSUihkbWFidWYpOwogCQlnb3RvIGZyZWVfcGFnZXM7CiAJfQogCi0JaGVscGVyX2J1ZmZl ci0+ZG1hYnVmID0gZG1hYnVmOwotCWhlbHBlcl9idWZmZXItPnByaXZfdmlydCA9IGNtYV9wYWdl czsKLQogCXJldCA9IGRtYV9idWZfZmQoZG1hYnVmLCBmZF9mbGFncyk7CiAJaWYgKHJldCA8IDAp IHsKIAkJZG1hX2J1Zl9wdXQoZG1hYnVmKTsKQEAgLTEyNSwxMSArMzQ1LDEyIEBAIHN0YXRpYyBp bnQgY21hX2hlYXBfYWxsb2NhdGUoc3RydWN0IGRtYV9oZWFwICpoZWFwLAogCXJldHVybiByZXQ7 CiAKIGZyZWVfcGFnZXM6Ci0Ja2ZyZWUoaGVscGVyX2J1ZmZlci0+cGFnZXMpOworCWtmcmVlKGJ1 ZmZlci0+cGFnZXMpOwogZnJlZV9jbWE6Ci0JY21hX3JlbGVhc2UoY21hX2hlYXAtPmNtYSwgY21h X3BhZ2VzLCBucl9wYWdlcyk7Ci1mcmVlX2J1ZjoKLQlrZnJlZShoZWxwZXJfYnVmZmVyKTsKKwlj bWFfcmVsZWFzZShjbWFfaGVhcC0+Y21hLCBjbWFfcGFnZXMsIHBhZ2Vjb3VudCk7CitmcmVlX2J1 ZmZlcjoKKwlrZnJlZShidWZmZXIpOworCiAJcmV0dXJuIHJldDsKIH0KIAotLSAKMi4xNy4xCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwg bWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK