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=-12.8 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,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 3AA76C47420 for ; Thu, 1 Oct 2020 01:22:06 +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 D905C2072E for ; Thu, 1 Oct 2020 01:22:05 +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="mGde2I67" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D905C2072E 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 00B7C6E83E; Thu, 1 Oct 2020 01:22:00 +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 9A8846E840 for ; Thu, 1 Oct 2020 01:21:58 +0000 (UTC) Received: by mail-pg1-x543.google.com with SMTP id o25so2602998pgm.0 for ; Wed, 30 Sep 2020 18:21:58 -0700 (PDT) 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=0krrV9QQqBZ5X418lRts3FHtSVkcKvaoC2dPWsjbk08=; b=mGde2I67ZK4J+d0ti4ccvfkiji9Yb8JMb16pA/qCf05mTcU0ajxM8+5sJKMWx8Z+hz GuaBRpc14uxQ8tmbjtgkM4cKAVmN+ZH3SPAG9tDhOiU6GJT/LOXJh0udyjluTvLA5IIE 7hX/CZC8fslNR/x+Rv0Dw01n6nbd3Ff/AP6ejJoFKO8e2vFw2thiYJVZM9K1wA8vIb+F o36emcd/ZPJKRAq6WyhvqpajqkdiAOUXrVHjbhoMzzDJN8n1I4Z8zSmdF4sczOfBRv1H hnFoJTzYxqKVVyKrzR2EmssaA/nJwwQCzAV5+jj6tiTnLgg4e8LehE0Ns+RNL4Fj3hNp GnXQ== 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=0krrV9QQqBZ5X418lRts3FHtSVkcKvaoC2dPWsjbk08=; b=ZoxDb2k47kscXbau6WFufd5sR1JU3Sl8Wixhaz4Gzk+eYfVEIy1MGyib/TZCMjholj 67vfJ8Tjafw4WOEoAKtqhwglbHXpSAOBvoY3ISjMqUg7j8LiOnClScOSJ387a8om8WOn vRC2ruRGoGoEb82MxTqIoWBURk0h9Ey/n/luOkJRpn5Mz3+HVOclsAhxKtdo1MgPAVaH TGFLuf0kjTmb08ETFK5peZCyagREHdKo2k3szE8AMLvEc5vj7DVE7HYRxGft8RhT/yFx is+Rdts7yjnnjylsN2zC83J4+Ciy4W7Fn0KGuvMHTLTPpIsvRVswH82pE7boc6MKqvjl gBHQ== X-Gm-Message-State: AOAM533nAmqg/RGkf19jXFZLx+X8pL+b9/S+B+SUHicgelhgtuXgEiJn iQALhBFkhJcKe1D2Mr0i7r2N+w== X-Google-Smtp-Source: ABdhPJzKeu30havIBE8S7I6m6TIGRTvYP9rkSyWVYVcaCf1cayBJ3RuNEB454qubWvpAgORUA6DUfA== X-Received: by 2002:a63:1a50:: with SMTP id a16mr4091990pgm.331.1601515318149; Wed, 30 Sep 2020 18:21:58 -0700 (PDT) Received: from localhost.localdomain ([2601:1c2:680:1319:692:26ff:feda:3a81]) by smtp.gmail.com with ESMTPSA id s187sm4229372pfc.134.2020.09.30.18.21.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Sep 2020 18:21:57 -0700 (PDT) From: John Stultz To: lkml Subject: [PATCH v2 2/6] dma-buf: heaps: Move heap-helper logic into the cma_heap implementation Date: Thu, 1 Oct 2020 01:21:47 +0000 Message-Id: <20201001012151.21149-3-john.stultz@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201001012151.21149-1-john.stultz@linaro.org> References: <20201001012151.21149-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 , Hridya Valsaraju , =?UTF-8?q?=C3=98rjan=20Eide?= , Suren Baghdasaryan , linux-media@vger.kernel.org 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+CkNjOiDDmHJq YW4gRWlkZSA8b3JqYW4uZWlkZUBhcm0uY29tPgpDYzogUm9iaW4gTXVycGh5IDxyb2Jpbi5tdXJw aHlAYXJtLmNvbT4KQ2M6IEV6ZXF1aWVsIEdhcmNpYSA8ZXplcXVpZWxAY29sbGFib3JhLmNvbT4K Q2M6IFNpbW9uIFNlciA8Y29udGFjdEBlbWVyc2lvbi5mcj4KQ2M6IEphbWVzIEpvbmVzIDxqYWpv bmVzQG52aWRpYS5jb20+CkNjOiBsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKQ2M6IGRyaS1k ZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKU2lnbmVkLW9mZi1ieTogSm9obiBTdHVsdHogPGpv aG4uc3R1bHR6QGxpbmFyby5vcmc+Ci0tLQp2MjoKKiBGaXggdW51c2VkIHJldHVybiB2YWx1ZSBh bmQgbG9ja2luZyBpc3N1ZSBSZXBvcnRlZC1ieToKICAgIGtlcm5lbCB0ZXN0IHJvYm90IDxsa3BA aW50ZWwuY29tPgogICAgSnVsaWEgTGF3YWxsIDxqdWxpYS5sYXdhbGxAaW5yaWEuZnI+CiogTWFr ZSBjbWFfaGVhcF9idWZfb3BzIHN0YXRpYyBzdWdnZXN0ZWQgYnkKICAgIGtlcm5lbCB0ZXN0IHJv Ym90IDxsa3BAaW50ZWwuY29tPgoqIEZpeCB1bmluaXRpYWxpemVkIHJldHVybiBpbiBjbWEgUmVw b3J0ZWQtYnk6CiAgICBrZXJuZWwgdGVzdCByb2JvdCA8bGtwQGludGVsLmNvbT4KKiBNaW5vciBj bGVhbnVwcwotLS0KIGRyaXZlcnMvZG1hLWJ1Zi9oZWFwcy9jbWFfaGVhcC5jIHwgMzE4ICsrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAyNjggaW5zZXJ0aW9u cygrKSwgNTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEtYnVmL2hlYXBz L2NtYV9oZWFwLmMgYi9kcml2ZXJzL2RtYS1idWYvaGVhcHMvY21hX2hlYXAuYwppbmRleCA2MjZj ZjdmZDAzM2EuLjRmMjBmMDc4NzJlNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9kbWEtYnVmL2hlYXBz L2NtYV9oZWFwLmMKKysrIGIvZHJpdmVycy9kbWEtYnVmL2hlYXBzL2NtYV9oZWFwLmMKQEAgLTIs NzYgKzIsMjkyIEBACiAvKgogICogRE1BQlVGIENNQSBoZWFwIGV4cG9ydGVyCiAgKgotICogQ29w eXJpZ2h0IChDKSAyMDEyLCAyMDE5IExpbmFybyBMdGQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIs IDIwMTksIDIwMjAgTGluYXJvIEx0ZC4KICAqIEF1dGhvcjogPGJlbmphbWluLmdhaWduYXJkQGxp bmFyby5vcmc+IGZvciBTVC1Fcmljc3Nvbi4KKyAqCisgKiBBbHNvIHV0aWxpemluZyBwYXJ0cyBv ZiBBbmRyZXcgRGF2aXMnIFNSQU0gaGVhcDoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBUZXhhcyBJ bnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQgLSBodHRwOi8vd3d3LnRpLmNvbS8KKyAqCUFuZHJldyBG LiBEYXZpcyA8YWZkQHRpLmNvbT4KICAqLwotCiAjaW5jbHVkZSA8bGludXgvY21hLmg+Ci0jaW5j bHVkZSA8bGludXgvZGV2aWNlLmg+CiAjaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi5oPgotI2luY2x1 ZGUgPGxpbnV4L2RtYS1oZWFwLmg+CiAjaW5jbHVkZSA8bGludXgvZG1hLWNvbnRpZ3VvdXMuaD4K KyNpbmNsdWRlIDxsaW51eC9kbWEtaGVhcC5oPgorI2luY2x1ZGUgPGxpbnV4L2RtYS1tYXBwaW5n Lmg+CiAjaW5jbHVkZSA8bGludXgvZXJyLmg+Ci0jaW5jbHVkZSA8bGludXgvZXJybm8uaD4KICNp bmNsdWRlIDxsaW51eC9oaWdobWVtLmg+CisjaW5jbHVkZSA8bGludXgvaW8uaD4KKyNpbmNsdWRl IDxsaW51eC9tbS5oPgogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgotI2luY2x1ZGUgPGxpbnV4 L3NsYWIuaD4KICNpbmNsdWRlIDxsaW51eC9zY2F0dGVybGlzdC5oPgotI2luY2x1ZGUgPGxpbnV4 L3NjaGVkL3NpZ25hbC5oPgorI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KIAotI2luY2x1ZGUgImhl YXAtaGVscGVycy5oIgogCiBzdHJ1Y3QgY21hX2hlYXAgewogCXN0cnVjdCBkbWFfaGVhcCAqaGVh cDsKIAlzdHJ1Y3QgY21hICpjbWE7CiB9OwogCi1zdGF0aWMgdm9pZCBjbWFfaGVhcF9mcmVlKHN0 cnVjdCBoZWFwX2hlbHBlcl9idWZmZXIgKmJ1ZmZlcikKK3N0cnVjdCBjbWFfaGVhcF9idWZmZXIg eworCXN0cnVjdCBjbWFfaGVhcCAqaGVhcDsKKwlzdHJ1Y3QgbGlzdF9oZWFkIGF0dGFjaG1lbnRz OworCXN0cnVjdCBtdXRleCBsb2NrOworCXVuc2lnbmVkIGxvbmcgbGVuOworCXN0cnVjdCBwYWdl ICpjbWFfcGFnZXM7CisJc3RydWN0IHBhZ2UgKipwYWdlczsKKwlwZ29mZl90IHBhZ2Vjb3VudDsK KwlpbnQgdm1hcF9jbnQ7CisJdm9pZCAqdmFkZHI7Cit9OworCitzdHJ1Y3QgZG1hX2hlYXBfYXR0 YWNobWVudCB7CisJc3RydWN0IGRldmljZSAqZGV2OworCXN0cnVjdCBzZ190YWJsZSB0YWJsZTsK KwlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7Cit9OworCitzdGF0aWMgaW50IGNtYV9oZWFwX2F0dGFj aChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLAorCQkJICAgc3RydWN0IGRtYV9idWZfYXR0YWNobWVu dCAqYXR0YWNobWVudCkKIHsKLQlzdHJ1Y3QgY21hX2hlYXAgKmNtYV9oZWFwID0gZG1hX2hlYXBf Z2V0X2RydmRhdGEoYnVmZmVyLT5oZWFwKTsKLQl1bnNpZ25lZCBsb25nIG5yX3BhZ2VzID0gYnVm ZmVyLT5wYWdlY291bnQ7Ci0Jc3RydWN0IHBhZ2UgKmNtYV9wYWdlcyA9IGJ1ZmZlci0+cHJpdl92 aXJ0OworCXN0cnVjdCBjbWFfaGVhcF9idWZmZXIgKmJ1ZmZlciA9IGRtYWJ1Zi0+cHJpdjsKKwlz dHJ1Y3QgZG1hX2hlYXBfYXR0YWNobWVudCAqYTsKKwlpbnQgcmV0OwogCi0JLyogZnJlZSBwYWdl IGxpc3QgKi8KLQlrZnJlZShidWZmZXItPnBhZ2VzKTsKLQkvKiByZWxlYXNlIG1lbW9yeSAqLwot CWNtYV9yZWxlYXNlKGNtYV9oZWFwLT5jbWEsIGNtYV9wYWdlcywgbnJfcGFnZXMpOworCWEgPSBr emFsbG9jKHNpemVvZigqYSksIEdGUF9LRVJORUwpOworCWlmICghYSkKKwkJcmV0dXJuIC1FTk9N RU07CisKKwlyZXQgPSBzZ19hbGxvY190YWJsZV9mcm9tX3BhZ2VzKCZhLT50YWJsZSwgYnVmZmVy LT5wYWdlcywKKwkJCQkJYnVmZmVyLT5wYWdlY291bnQsIDAsCisJCQkJCWJ1ZmZlci0+cGFnZWNv dW50IDw8IFBBR0VfU0hJRlQsCisJCQkJCUdGUF9LRVJORUwpOworCWlmIChyZXQpIHsKKwkJa2Zy ZWUoYSk7CisJCXJldHVybiByZXQ7CisJfQorCisJYS0+ZGV2ID0gYXR0YWNobWVudC0+ZGV2Owor CUlOSVRfTElTVF9IRUFEKCZhLT5saXN0KTsKKworCWF0dGFjaG1lbnQtPnByaXYgPSBhOworCisJ bXV0ZXhfbG9jaygmYnVmZmVyLT5sb2NrKTsKKwlsaXN0X2FkZCgmYS0+bGlzdCwgJmJ1ZmZlci0+ YXR0YWNobWVudHMpOworCW11dGV4X3VubG9jaygmYnVmZmVyLT5sb2NrKTsKKworCXJldHVybiAw OworfQorCitzdGF0aWMgdm9pZCBjbWFfaGVhcF9kZXRhdGNoKHN0cnVjdCBkbWFfYnVmICpkbWFi dWYsCisJCQkgICAgIHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaG1lbnQpCit7CisJ c3RydWN0IGNtYV9oZWFwX2J1ZmZlciAqYnVmZmVyID0gZG1hYnVmLT5wcml2OworCXN0cnVjdCBk bWFfaGVhcF9hdHRhY2htZW50ICphID0gYXR0YWNobWVudC0+cHJpdjsKKworCW11dGV4X2xvY2so JmJ1ZmZlci0+bG9jayk7CisJbGlzdF9kZWwoJmEtPmxpc3QpOworCW11dGV4X3VubG9jaygmYnVm ZmVyLT5sb2NrKTsKKworCXNnX2ZyZWVfdGFibGUoJmEtPnRhYmxlKTsKKwlrZnJlZShhKTsKK30K Kworc3RhdGljIHN0cnVjdCBzZ190YWJsZSAqY21hX2hlYXBfbWFwX2RtYV9idWYoc3RydWN0IGRt YV9idWZfYXR0YWNobWVudCAqYXR0YWNobWVudCwKKwkJCQkJICAgICBlbnVtIGRtYV9kYXRhX2Rp cmVjdGlvbiBkaXJlY3Rpb24pCit7CisJc3RydWN0IGRtYV9oZWFwX2F0dGFjaG1lbnQgKmEgPSBh dHRhY2htZW50LT5wcml2OworCXN0cnVjdCBzZ190YWJsZSAqdGFibGUgPSAmYS0+dGFibGU7CisK KwlpZiAoIWRtYV9tYXBfc2coYXR0YWNobWVudC0+ZGV2LCB0YWJsZS0+c2dsLCB0YWJsZS0+bmVu dHMsCisJCQlkaXJlY3Rpb24pKQorCQl0YWJsZSA9IEVSUl9QVFIoLUVOT01FTSk7CisJcmV0dXJu IHRhYmxlOworfQorCitzdGF0aWMgdm9pZCBjbWFfaGVhcF91bm1hcF9kbWFfYnVmKHN0cnVjdCBk bWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaG1lbnQsCisJCQkJICAgc3RydWN0IHNnX3RhYmxlICp0 YWJsZSwKKwkJCQkgICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisJZG1h X3VubWFwX3NnKGF0dGFjaG1lbnQtPmRldiwgdGFibGUtPnNnbCwgdGFibGUtPm5lbnRzLCBkaXJl Y3Rpb24pOworfQorCitzdGF0aWMgaW50IGNtYV9oZWFwX2RtYV9idWZfYmVnaW5fY3B1X2FjY2Vz cyhzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLAorCQkJCQkgICAgIGVudW0gZG1hX2RhdGFfZGlyZWN0 aW9uIGRpcmVjdGlvbikKK3sKKwlzdHJ1Y3QgY21hX2hlYXBfYnVmZmVyICpidWZmZXIgPSBkbWFi dWYtPnByaXY7CisJc3RydWN0IGRtYV9oZWFwX2F0dGFjaG1lbnQgKmE7CisKKwlpZiAoYnVmZmVy LT52bWFwX2NudCkKKwkJaW52YWxpZGF0ZV9rZXJuZWxfdm1hcF9yYW5nZShidWZmZXItPnZhZGRy LCBidWZmZXItPmxlbik7CisKKwltdXRleF9sb2NrKCZidWZmZXItPmxvY2spOworCWxpc3RfZm9y X2VhY2hfZW50cnkoYSwgJmJ1ZmZlci0+YXR0YWNobWVudHMsIGxpc3QpIHsKKwkJZG1hX3N5bmNf c2dfZm9yX2NwdShhLT5kZXYsIGEtPnRhYmxlLnNnbCwgYS0+dGFibGUubmVudHMsCisJCQkJICAg IGRpcmVjdGlvbik7CisJfQorCW11dGV4X3VubG9jaygmYnVmZmVyLT5sb2NrKTsKKworCXJldHVy biAwOworfQorCitzdGF0aWMgaW50IGNtYV9oZWFwX2RtYV9idWZfZW5kX2NwdV9hY2Nlc3Moc3Ry dWN0IGRtYV9idWYgKmRtYWJ1ZiwKKwkJCQkJICAgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGly ZWN0aW9uKQoreworCXN0cnVjdCBjbWFfaGVhcF9idWZmZXIgKmJ1ZmZlciA9IGRtYWJ1Zi0+cHJp djsKKwlzdHJ1Y3QgZG1hX2hlYXBfYXR0YWNobWVudCAqYTsKKworCWlmIChidWZmZXItPnZtYXBf Y250KQorCQlmbHVzaF9rZXJuZWxfdm1hcF9yYW5nZShidWZmZXItPnZhZGRyLCBidWZmZXItPmxl bik7CisKKwltdXRleF9sb2NrKCZidWZmZXItPmxvY2spOworCWxpc3RfZm9yX2VhY2hfZW50cnko YSwgJmJ1ZmZlci0+YXR0YWNobWVudHMsIGxpc3QpIHsKKwkJZG1hX3N5bmNfc2dfZm9yX2Rldmlj ZShhLT5kZXYsIGEtPnRhYmxlLnNnbCwgYS0+dGFibGUubmVudHMsCisJCQkJICAgICAgIGRpcmVj dGlvbik7CisJfQorCW11dGV4X3VubG9jaygmYnVmZmVyLT5sb2NrKTsKKworCXJldHVybiAwOwor fQorCitzdGF0aWMgdm1fZmF1bHRfdCBjbWFfaGVhcF92bV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQg KnZtZikKK3sKKwlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSA9IHZtZi0+dm1hOworCXN0cnVj dCBjbWFfaGVhcF9idWZmZXIgKmJ1ZmZlciA9IHZtYS0+dm1fcHJpdmF0ZV9kYXRhOworCisJaWYg KHZtZi0+cGdvZmYgPiBidWZmZXItPnBhZ2Vjb3VudCkKKwkJcmV0dXJuIFZNX0ZBVUxUX1NJR0JV UzsKKworCXZtZi0+cGFnZSA9IGJ1ZmZlci0+cGFnZXNbdm1mLT5wZ29mZl07CisJZ2V0X3BhZ2Uo dm1mLT5wYWdlKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IHZtX29w ZXJhdGlvbnNfc3RydWN0IGRtYV9oZWFwX3ZtX29wcyA9IHsKKwkuZmF1bHQgPSBjbWFfaGVhcF92 bV9mYXVsdCwKK307CisKK3N0YXRpYyBpbnQgY21hX2hlYXBfbW1hcChzdHJ1Y3QgZG1hX2J1ZiAq ZG1hYnVmLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKK3sKKwlzdHJ1Y3QgY21hX2hlYXBf YnVmZmVyICpidWZmZXIgPSBkbWFidWYtPnByaXY7CisKKwlpZiAoKHZtYS0+dm1fZmxhZ3MgJiAo Vk1fU0hBUkVEIHwgVk1fTUFZU0hBUkUpKSA9PSAwKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXZt YS0+dm1fb3BzID0gJmRtYV9oZWFwX3ZtX29wczsKKwl2bWEtPnZtX3ByaXZhdGVfZGF0YSA9IGJ1 ZmZlcjsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCAqY21hX2hlYXBfZG9fdm1hcChz dHJ1Y3QgY21hX2hlYXBfYnVmZmVyICpidWZmZXIpCit7CisJdm9pZCAqdmFkZHI7CisKKwl2YWRk ciA9IHZtYXAoYnVmZmVyLT5wYWdlcywgYnVmZmVyLT5wYWdlY291bnQsIFZNX01BUCwgUEFHRV9L RVJORUwpOworCWlmICghdmFkZHIpCisJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOworCisJcmV0 dXJuIHZhZGRyOworfQorCitzdGF0aWMgdm9pZCAqY21hX2hlYXBfdm1hcChzdHJ1Y3QgZG1hX2J1 ZiAqZG1hYnVmKQoreworCXN0cnVjdCBjbWFfaGVhcF9idWZmZXIgKmJ1ZmZlciA9IGRtYWJ1Zi0+ cHJpdjsKKwl2b2lkICp2YWRkcjsKKworCW11dGV4X2xvY2soJmJ1ZmZlci0+bG9jayk7CisJaWYg KGJ1ZmZlci0+dm1hcF9jbnQpIHsKKwkJYnVmZmVyLT52bWFwX2NudCsrOworCQl2YWRkciA9IGJ1 ZmZlci0+dmFkZHI7CisJCWdvdG8gb3V0OworCX0KKworCXZhZGRyID0gY21hX2hlYXBfZG9fdm1h cChidWZmZXIpOworCWlmIChJU19FUlIodmFkZHIpKQorCQlnb3RvIG91dDsKKworCWJ1ZmZlci0+ dmFkZHIgPSB2YWRkcjsKKwlidWZmZXItPnZtYXBfY250Kys7CitvdXQ6CisJbXV0ZXhfdW5sb2Nr KCZidWZmZXItPmxvY2spOworCisJcmV0dXJuIHZhZGRyOworfQorCitzdGF0aWMgdm9pZCBjbWFf aGVhcF92dW5tYXAoc3RydWN0IGRtYV9idWYgKmRtYWJ1Ziwgdm9pZCAqdmFkZHIpCit7CisJc3Ry dWN0IGNtYV9oZWFwX2J1ZmZlciAqYnVmZmVyID0gZG1hYnVmLT5wcml2OworCisJbXV0ZXhfbG9j aygmYnVmZmVyLT5sb2NrKTsKKwlpZiAoIS0tYnVmZmVyLT52bWFwX2NudCkgeworCQl2dW5tYXAo YnVmZmVyLT52YWRkcik7CisJCWJ1ZmZlci0+dmFkZHIgPSBOVUxMOworCX0KKwltdXRleF91bmxv Y2soJmJ1ZmZlci0+bG9jayk7Cit9CisKK3N0YXRpYyB2b2lkIGNtYV9oZWFwX2RtYV9idWZfcmVs ZWFzZShzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmKQoreworCXN0cnVjdCBjbWFfaGVhcF9idWZmZXIg KmJ1ZmZlciA9IGRtYWJ1Zi0+cHJpdjsKKwlzdHJ1Y3QgY21hX2hlYXAgKmNtYV9oZWFwID0gYnVm ZmVyLT5oZWFwOworCisJaWYgKGJ1ZmZlci0+dm1hcF9jbnQgPiAwKSB7CisJCVdBUk4oMSwgIiVz OiBidWZmZXIgc3RpbGwgbWFwcGVkIGluIHRoZSBrZXJuZWxcbiIsIF9fZnVuY19fKTsKKwkJdnVu bWFwKGJ1ZmZlci0+dmFkZHIpOworCX0KKworCWNtYV9yZWxlYXNlKGNtYV9oZWFwLT5jbWEsIGJ1 ZmZlci0+Y21hX3BhZ2VzLCBidWZmZXItPnBhZ2Vjb3VudCk7CiAJa2ZyZWUoYnVmZmVyKTsKIH0K IAotLyogZG1hYnVmIGhlYXAgQ01BIG9wZXJhdGlvbnMgZnVuY3Rpb25zICovCitzdGF0aWMgY29u c3Qgc3RydWN0IGRtYV9idWZfb3BzIGNtYV9oZWFwX2J1Zl9vcHMgPSB7CisJLmF0dGFjaCA9IGNt YV9oZWFwX2F0dGFjaCwKKwkuZGV0YWNoID0gY21hX2hlYXBfZGV0YXRjaCwKKwkubWFwX2RtYV9i dWYgPSBjbWFfaGVhcF9tYXBfZG1hX2J1ZiwKKwkudW5tYXBfZG1hX2J1ZiA9IGNtYV9oZWFwX3Vu bWFwX2RtYV9idWYsCisJLmJlZ2luX2NwdV9hY2Nlc3MgPSBjbWFfaGVhcF9kbWFfYnVmX2JlZ2lu X2NwdV9hY2Nlc3MsCisJLmVuZF9jcHVfYWNjZXNzID0gY21hX2hlYXBfZG1hX2J1Zl9lbmRfY3B1 X2FjY2VzcywKKwkubW1hcCA9IGNtYV9oZWFwX21tYXAsCisJLnZtYXAgPSBjbWFfaGVhcF92bWFw LAorCS52dW5tYXAgPSBjbWFfaGVhcF92dW5tYXAsCisJLnJlbGVhc2UgPSBjbWFfaGVhcF9kbWFf YnVmX3JlbGVhc2UsCit9OworCiBzdGF0aWMgaW50IGNtYV9oZWFwX2FsbG9jYXRlKHN0cnVjdCBk bWFfaGVhcCAqaGVhcCwKLQkJCSAgICAgdW5zaWduZWQgbG9uZyBsZW4sCi0JCQkgICAgIHVuc2ln bmVkIGxvbmcgZmRfZmxhZ3MsCi0JCQkgICAgIHVuc2lnbmVkIGxvbmcgaGVhcF9mbGFncykKKwkJ CQkgIHVuc2lnbmVkIGxvbmcgbGVuLAorCQkJCSAgdW5zaWduZWQgbG9uZyBmZF9mbGFncywKKwkJ CQkgIHVuc2lnbmVkIGxvbmcgaGVhcF9mbGFncykKIHsKIAlzdHJ1Y3QgY21hX2hlYXAgKmNtYV9o ZWFwID0gZG1hX2hlYXBfZ2V0X2RydmRhdGEoaGVhcCk7Ci0Jc3RydWN0IGhlYXBfaGVscGVyX2J1 ZmZlciAqaGVscGVyX2J1ZmZlcjsKLQlzdHJ1Y3QgcGFnZSAqY21hX3BhZ2VzOworCXN0cnVjdCBj bWFfaGVhcF9idWZmZXIgKmJ1ZmZlcjsKKwlERUZJTkVfRE1BX0JVRl9FWFBPUlRfSU5GTyhleHBf aW5mbyk7CiAJc2l6ZV90IHNpemUgPSBQQUdFX0FMSUdOKGxlbik7Ci0JdW5zaWduZWQgbG9uZyBu cl9wYWdlcyA9IHNpemUgPj4gUEFHRV9TSElGVDsKKwlwZ29mZl90IHBhZ2Vjb3VudCA9IHNpemUg Pj4gUEFHRV9TSElGVDsKIAl1bnNpZ25lZCBsb25nIGFsaWduID0gZ2V0X29yZGVyKHNpemUpOwor CXN0cnVjdCBwYWdlICpjbWFfcGFnZXM7CiAJc3RydWN0IGRtYV9idWYgKmRtYWJ1ZjsKIAlpbnQg cmV0ID0gLUVOT01FTTsKIAlwZ29mZl90IHBnOwogCi0JaWYgKGFsaWduID4gQ09ORklHX0NNQV9B TElHTk1FTlQpCi0JCWFsaWduID0gQ09ORklHX0NNQV9BTElHTk1FTlQ7Ci0KLQloZWxwZXJfYnVm ZmVyID0ga3phbGxvYyhzaXplb2YoKmhlbHBlcl9idWZmZXIpLCBHRlBfS0VSTkVMKTsKLQlpZiAo IWhlbHBlcl9idWZmZXIpCisJYnVmZmVyID0ga3phbGxvYyhzaXplb2YoKmJ1ZmZlciksIEdGUF9L RVJORUwpOworCWlmICghYnVmZmVyKQogCQlyZXR1cm4gLUVOT01FTTsKIAotCWluaXRfaGVhcF9o ZWxwZXJfYnVmZmVyKGhlbHBlcl9idWZmZXIsIGNtYV9oZWFwX2ZyZWUpOwotCWhlbHBlcl9idWZm ZXItPmhlYXAgPSBoZWFwOwotCWhlbHBlcl9idWZmZXItPnNpemUgPSBsZW47CisJSU5JVF9MSVNU X0hFQUQoJmJ1ZmZlci0+YXR0YWNobWVudHMpOworCW11dGV4X2luaXQoJmJ1ZmZlci0+bG9jayk7 CisJYnVmZmVyLT5sZW4gPSBzaXplOworCisJaWYgKGFsaWduID4gQ09ORklHX0NNQV9BTElHTk1F TlQpCisJCWFsaWduID0gQ09ORklHX0NNQV9BTElHTk1FTlQ7CiAKLQljbWFfcGFnZXMgPSBjbWFf YWxsb2MoY21hX2hlYXAtPmNtYSwgbnJfcGFnZXMsIGFsaWduLCBmYWxzZSk7CisJY21hX3BhZ2Vz ID0gY21hX2FsbG9jKGNtYV9oZWFwLT5jbWEsIHBhZ2Vjb3VudCwgYWxpZ24sIGZhbHNlKTsKIAlp ZiAoIWNtYV9wYWdlcykKLQkJZ290byBmcmVlX2J1ZjsKKwkJZ290byBmcmVlX2J1ZmZlcjsKIAor CS8qIENsZWFyIHRoZSBjbWEgcGFnZXMgKi8KIAlpZiAoUGFnZUhpZ2hNZW0oY21hX3BhZ2VzKSkg ewotCQl1bnNpZ25lZCBsb25nIG5yX2NsZWFyX3BhZ2VzID0gbnJfcGFnZXM7CisJCXVuc2lnbmVk IGxvbmcgbnJfY2xlYXJfcGFnZXMgPSBwYWdlY291bnQ7CiAJCXN0cnVjdCBwYWdlICpwYWdlID0g Y21hX3BhZ2VzOwogCiAJCXdoaWxlIChucl9jbGVhcl9wYWdlcyA+IDApIHsKQEAgLTg1LDcgKzMw MSw2IEBAIHN0YXRpYyBpbnQgY21hX2hlYXBfYWxsb2NhdGUoc3RydWN0IGRtYV9oZWFwICpoZWFw LAogCQkJICovCiAJCQlpZiAoZmF0YWxfc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpCiAJCQkJZ290 byBmcmVlX2NtYTsKLQogCQkJcGFnZSsrOwogCQkJbnJfY2xlYXJfcGFnZXMtLTsKIAkJfQpAQCAt OTMsMjggKzMwOCwzMCBAQCBzdGF0aWMgaW50IGNtYV9oZWFwX2FsbG9jYXRlKHN0cnVjdCBkbWFf aGVhcCAqaGVhcCwKIAkJbWVtc2V0KHBhZ2VfYWRkcmVzcyhjbWFfcGFnZXMpLCAwLCBzaXplKTsK IAl9CiAKLQloZWxwZXJfYnVmZmVyLT5wYWdlY291bnQgPSBucl9wYWdlczsKLQloZWxwZXJfYnVm ZmVyLT5wYWdlcyA9IGttYWxsb2NfYXJyYXkoaGVscGVyX2J1ZmZlci0+cGFnZWNvdW50LAotCQkJ CQkgICAgIHNpemVvZigqaGVscGVyX2J1ZmZlci0+cGFnZXMpLAotCQkJCQkgICAgIEdGUF9LRVJO RUwpOwotCWlmICghaGVscGVyX2J1ZmZlci0+cGFnZXMpIHsKKwlidWZmZXItPnBhZ2VzID0ga21h bGxvY19hcnJheShwYWdlY291bnQsIHNpemVvZigqYnVmZmVyLT5wYWdlcyksIEdGUF9LRVJORUwp OworCWlmICghYnVmZmVyLT5wYWdlcykgewogCQlyZXQgPSAtRU5PTUVNOwogCQlnb3RvIGZyZWVf Y21hOwogCX0KIAotCWZvciAocGcgPSAwOyBwZyA8IGhlbHBlcl9idWZmZXItPnBhZ2Vjb3VudDsg cGcrKykKLQkJaGVscGVyX2J1ZmZlci0+cGFnZXNbcGddID0gJmNtYV9wYWdlc1twZ107CisJZm9y IChwZyA9IDA7IHBnIDwgcGFnZWNvdW50OyBwZysrKQorCQlidWZmZXItPnBhZ2VzW3BnXSA9ICZj bWFfcGFnZXNbcGddOworCisJYnVmZmVyLT5jbWFfcGFnZXMgPSBjbWFfcGFnZXM7CisJYnVmZmVy LT5oZWFwID0gY21hX2hlYXA7CisJYnVmZmVyLT5wYWdlY291bnQgPSBwYWdlY291bnQ7CiAKIAkv KiBjcmVhdGUgdGhlIGRtYWJ1ZiAqLwotCWRtYWJ1ZiA9IGhlYXBfaGVscGVyX2V4cG9ydF9kbWFi dWYoaGVscGVyX2J1ZmZlciwgZmRfZmxhZ3MpOworCWV4cF9pbmZvLm9wcyA9ICZjbWFfaGVhcF9i dWZfb3BzOworCWV4cF9pbmZvLnNpemUgPSBidWZmZXItPmxlbjsKKwlleHBfaW5mby5mbGFncyA9 IGZkX2ZsYWdzOworCWV4cF9pbmZvLnByaXYgPSBidWZmZXI7CisJZG1hYnVmID0gZG1hX2J1Zl9l eHBvcnQoJmV4cF9pbmZvKTsKIAlpZiAoSVNfRVJSKGRtYWJ1ZikpIHsKIAkJcmV0ID0gUFRSX0VS UihkbWFidWYpOwogCQlnb3RvIGZyZWVfcGFnZXM7CiAJfQogCi0JaGVscGVyX2J1ZmZlci0+ZG1h YnVmID0gZG1hYnVmOwotCWhlbHBlcl9idWZmZXItPnByaXZfdmlydCA9IGNtYV9wYWdlczsKLQog CXJldCA9IGRtYV9idWZfZmQoZG1hYnVmLCBmZF9mbGFncyk7CiAJaWYgKHJldCA8IDApIHsKIAkJ ZG1hX2J1Zl9wdXQoZG1hYnVmKTsKQEAgLTEyNSwxMSArMzQyLDEyIEBAIHN0YXRpYyBpbnQgY21h X2hlYXBfYWxsb2NhdGUoc3RydWN0IGRtYV9oZWFwICpoZWFwLAogCXJldHVybiByZXQ7CiAKIGZy ZWVfcGFnZXM6Ci0Ja2ZyZWUoaGVscGVyX2J1ZmZlci0+cGFnZXMpOworCWtmcmVlKGJ1ZmZlci0+ cGFnZXMpOwogZnJlZV9jbWE6Ci0JY21hX3JlbGVhc2UoY21hX2hlYXAtPmNtYSwgY21hX3BhZ2Vz LCBucl9wYWdlcyk7Ci1mcmVlX2J1ZjoKLQlrZnJlZShoZWxwZXJfYnVmZmVyKTsKKwljbWFfcmVs ZWFzZShjbWFfaGVhcC0+Y21hLCBjbWFfcGFnZXMsIHBhZ2Vjb3VudCk7CitmcmVlX2J1ZmZlcjoK KwlrZnJlZShidWZmZXIpOworCiAJcmV0dXJuIHJldDsKIH0KIAotLSAKMi4xNy4xCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK