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.5 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 906D9C433DF for ; Sat, 17 Oct 2020 01:33:13 +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 229D02083B for ; Sat, 17 Oct 2020 01:33:13 +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="kmuKKEz0" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 229D02083B 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 D69E46E185; Sat, 17 Oct 2020 01:33:06 +0000 (UTC) Received: from mail-pl1-x643.google.com (mail-pl1-x643.google.com [IPv6:2607:f8b0:4864:20::643]) by gabe.freedesktop.org (Postfix) with ESMTPS id 12B076E06D for ; Sat, 17 Oct 2020 01:33:06 +0000 (UTC) Received: by mail-pl1-x643.google.com with SMTP id y1so2171193plp.6 for ; Fri, 16 Oct 2020 18:33:06 -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=sz6fxaq3RpBzDvE0Efn4zSKYKcie3tSIuGNKkyogZUQ=; b=kmuKKEz0QTDWSQeJ9K1X0f/mXzUULphmOM0Pfyc+WZAz+Ieu40SJ/0zBbhPHPba9i5 QWf2V9iBImkh930xP5af6/C+g2qWDTyxnLg7iUPwv/VAUeqgbA1B7eDtjzjQ4RiXuqNH niaLUMFh1SZRHFZoBeR4NewCuT7ATgcBHzama1c6gQll9KaYXRwKRym7vH+UJAZ/Q3nB xyOX7P/X8pX0Jpfa99FYaUr5CCv5dcKDHGiUNoEIbuk4DNQBM/DpjZ0bujM//LJjwASi zf5gQIlsWjpAeW/NuKJ0Oq+EuwsKWGf00fp9tlTc6fLihQyjgu1cuKGruL+OKX4aMKL8 qKsA== 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=sz6fxaq3RpBzDvE0Efn4zSKYKcie3tSIuGNKkyogZUQ=; b=gYKVDQJQi2q2g5SyZjN4q97udfehe49W4SC4FQhlAMARx4DR1WaUxVrI5RlPXExyCp ZAFAg+htLNLA2YC4lXZyXr5R2elaVUl39M2cFDUjKVmjFYaD+b2h5a8F82ieEnayOKV7 mNKgIQwoKxs2uxQcqvjY6De/M7DGE5bjZdRDkkWon2TedJb+E8ToNdVFC8JWMZhbByJe s5D5OYKL9geFy/m71h/jMZLtGYL8+KIVhB7YUo+i4jjglb/qzhZrM4FNJjfFawyC6SIz ES1y2EGfldl8WuNpxzFXFMhcbEQd2A7SqE8U5nDxDq9BgrC1060N6kv4cDoyOdYj26vu QOKQ== X-Gm-Message-State: AOAM531E9D6h0JpYYygKOsNqDNV+K+WLIFbZzUbQHedQfX/CXal3dQSX RUzjt3/e5NQneG+leuaPpWfiVw== X-Google-Smtp-Source: ABdhPJxC2GlJ57pZkuZuFysrT2nn9auWEqUhyimYGIACyURqb9YcHErLp8ePjnqNd1OoAB2qGmaeJg== X-Received: by 2002:a17:90a:5b05:: with SMTP id o5mr6676822pji.139.1602898385600; Fri, 16 Oct 2020 18:33:05 -0700 (PDT) Received: from localhost.localdomain ([2601:1c2:680:1319:692:26ff:feda:3a81]) by smtp.gmail.com with ESMTPSA id e186sm4222122pfh.60.2020.10.16.18.33.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 16 Oct 2020 18:33:05 -0700 (PDT) From: John Stultz To: lkml Subject: [PATCH v4 2/7] dma-buf: heaps: Move heap-helper logic into the cma_heap implementation Date: Sat, 17 Oct 2020 01:32:50 +0000 Message-Id: <20201017013255.43568-3-john.stultz@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201017013255.43568-1-john.stultz@linaro.org> References: <20201017013255.43568-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 IEJyaWFuUwotLS0KIGRyaXZlcnMvZG1hLWJ1Zi9oZWFwcy9jbWFfaGVhcC5jIHwgMzE3ICsrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAyNjcgaW5zZXJ0aW9u cygrKSwgNTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEtYnVmL2hlYXBz L2NtYV9oZWFwLmMgYi9kcml2ZXJzL2RtYS1idWYvaGVhcHMvY21hX2hlYXAuYwppbmRleCA2MjZj ZjdmZDAzM2EuLmQ2ZmFiN2NkZWFmOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9kbWEtYnVmL2hlYXBz L2NtYV9oZWFwLmMKKysrIGIvZHJpdmVycy9kbWEtYnVmL2hlYXBzL2NtYV9oZWFwLmMKQEAgLTIs NzYgKzIsMjkxIEBACiAvKgogICogRE1BQlVGIENNQSBoZWFwIGV4cG9ydGVyCiAgKgotICogQ29w 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 OworfQorCitzdGF0aWMgdm9pZCBjbWFfaGVhcF9kZXRhY2goc3RydWN0IGRtYV9idWYgKmRtYWJ1 ZiwKKwkJCSAgICBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2htZW50KQoreworCXN0 cnVjdCBjbWFfaGVhcF9idWZmZXIgKmJ1ZmZlciA9IGRtYWJ1Zi0+cHJpdjsKKwlzdHJ1Y3QgZG1h X2hlYXBfYXR0YWNobWVudCAqYSA9IGF0dGFjaG1lbnQtPnByaXY7CisKKwltdXRleF9sb2NrKCZi dWZmZXItPmxvY2spOworCWxpc3RfZGVsKCZhLT5saXN0KTsKKwltdXRleF91bmxvY2soJmJ1ZmZl ci0+bG9jayk7CisKKwlzZ19mcmVlX3RhYmxlKCZhLT50YWJsZSk7CisJa2ZyZWUoYSk7Cit9CisK K3N0YXRpYyBzdHJ1Y3Qgc2dfdGFibGUgKmNtYV9oZWFwX21hcF9kbWFfYnVmKHN0cnVjdCBkbWFf YnVmX2F0dGFjaG1lbnQgKmF0dGFjaG1lbnQsCisJCQkJCSAgICAgZW51bSBkbWFfZGF0YV9kaXJl Y3Rpb24gZGlyZWN0aW9uKQoreworCXN0cnVjdCBkbWFfaGVhcF9hdHRhY2htZW50ICphID0gYXR0 YWNobWVudC0+cHJpdjsKKwlzdHJ1Y3Qgc2dfdGFibGUgKnRhYmxlID0gJmEtPnRhYmxlOworCWlu dCByZXQ7CisKKwlyZXQgPSBkbWFfbWFwX3NndGFibGUoYXR0YWNobWVudC0+ZGV2LCB0YWJsZSwg ZGlyZWN0aW9uLCAwKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKKwly ZXR1cm4gdGFibGU7Cit9CisKK3N0YXRpYyB2b2lkIGNtYV9oZWFwX3VubWFwX2RtYV9idWYoc3Ry dWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNobWVudCwKKwkJCQkgICBzdHJ1Y3Qgc2dfdGFi bGUgKnRhYmxlLAorCQkJCSAgIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcmVjdGlvbikKK3sK KwlkbWFfdW5tYXBfc2d0YWJsZShhdHRhY2htZW50LT5kZXYsIHRhYmxlLCBkaXJlY3Rpb24sIDAp OworfQorCitzdGF0aWMgaW50IGNtYV9oZWFwX2RtYV9idWZfYmVnaW5fY3B1X2FjY2VzcyhzdHJ1 Y3QgZG1hX2J1ZiAqZG1hYnVmLAorCQkJCQkgICAgIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRp cmVjdGlvbikKK3sKKwlzdHJ1Y3QgY21hX2hlYXBfYnVmZmVyICpidWZmZXIgPSBkbWFidWYtPnBy aXY7CisJc3RydWN0IGRtYV9oZWFwX2F0dGFjaG1lbnQgKmE7CisKKwlpZiAoYnVmZmVyLT52bWFw X2NudCkKKwkJaW52YWxpZGF0ZV9rZXJuZWxfdm1hcF9yYW5nZShidWZmZXItPnZhZGRyLCBidWZm ZXItPmxlbik7CisKKwltdXRleF9sb2NrKCZidWZmZXItPmxvY2spOworCWxpc3RfZm9yX2VhY2hf ZW50cnkoYSwgJmJ1ZmZlci0+YXR0YWNobWVudHMsIGxpc3QpIHsKKwkJZG1hX3N5bmNfc2d0YWJs ZV9mb3JfY3B1KGEtPmRldiwgJmEtPnRhYmxlLCBkaXJlY3Rpb24pOworCX0KKwltdXRleF91bmxv Y2soJmJ1ZmZlci0+bG9jayk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBjbWFfaGVh cF9kbWFfYnVmX2VuZF9jcHVfYWNjZXNzKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsCisJCQkJCSAg IGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKwlzdHJ1Y3QgY21hX2hlYXBf YnVmZmVyICpidWZmZXIgPSBkbWFidWYtPnByaXY7CisJc3RydWN0IGRtYV9oZWFwX2F0dGFjaG1l bnQgKmE7CisKKwlpZiAoYnVmZmVyLT52bWFwX2NudCkKKwkJZmx1c2hfa2VybmVsX3ZtYXBfcmFu Z2UoYnVmZmVyLT52YWRkciwgYnVmZmVyLT5sZW4pOworCisJbXV0ZXhfbG9jaygmYnVmZmVyLT5s b2NrKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGEsICZidWZmZXItPmF0dGFjaG1lbnRzLCBsaXN0 KSB7CisJCWRtYV9zeW5jX3NndGFibGVfZm9yX2RldmljZShhLT5kZXYsICZhLT50YWJsZSwgZGly ZWN0aW9uKTsKKwl9CisJbXV0ZXhfdW5sb2NrKCZidWZmZXItPmxvY2spOworCisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyB2bV9mYXVsdF90IGNtYV9oZWFwX3ZtX2ZhdWx0KHN0cnVjdCB2bV9mYXVs dCAqdm1mKQoreworCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hID0gdm1mLT52bWE7CisJc3Ry dWN0IGNtYV9oZWFwX2J1ZmZlciAqYnVmZmVyID0gdm1hLT52bV9wcml2YXRlX2RhdGE7CisKKwlp ZiAodm1mLT5wZ29mZiA+IGJ1ZmZlci0+cGFnZWNvdW50KQorCQlyZXR1cm4gVk1fRkFVTFRfU0lH QlVTOworCisJdm1mLT5wYWdlID0gYnVmZmVyLT5wYWdlc1t2bWYtPnBnb2ZmXTsKKwlnZXRfcGFn ZSh2bWYtPnBhZ2UpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgdm1f b3BlcmF0aW9uc19zdHJ1Y3QgZG1hX2hlYXBfdm1fb3BzID0geworCS5mYXVsdCA9IGNtYV9oZWFw X3ZtX2ZhdWx0LAorfTsKKworc3RhdGljIGludCBjbWFfaGVhcF9tbWFwKHN0cnVjdCBkbWFfYnVm ICpkbWFidWYsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQoreworCXN0cnVjdCBjbWFfaGVh cF9idWZmZXIgKmJ1ZmZlciA9IGRtYWJ1Zi0+cHJpdjsKKworCWlmICgodm1hLT52bV9mbGFncyAm IChWTV9TSEFSRUQgfCBWTV9NQVlTSEFSRSkpID09IDApCisJCXJldHVybiAtRUlOVkFMOworCisJ dm1hLT52bV9vcHMgPSAmZG1hX2hlYXBfdm1fb3BzOworCXZtYS0+dm1fcHJpdmF0ZV9kYXRhID0g YnVmZmVyOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkICpjbWFfaGVhcF9kb192bWFw KHN0cnVjdCBjbWFfaGVhcF9idWZmZXIgKmJ1ZmZlcikKK3sKKwl2b2lkICp2YWRkcjsKKworCXZh ZGRyID0gdm1hcChidWZmZXItPnBhZ2VzLCBidWZmZXItPnBhZ2Vjb3VudCwgVk1fTUFQLCBQQUdF X0tFUk5FTCk7CisJaWYgKCF2YWRkcikKKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CisKKwly ZXR1cm4gdmFkZHI7Cit9CisKK3N0YXRpYyB2b2lkICpjbWFfaGVhcF92bWFwKHN0cnVjdCBkbWFf YnVmICpkbWFidWYpCit7CisJc3RydWN0IGNtYV9oZWFwX2J1ZmZlciAqYnVmZmVyID0gZG1hYnVm LT5wcml2OworCXZvaWQgKnZhZGRyOworCisJbXV0ZXhfbG9jaygmYnVmZmVyLT5sb2NrKTsKKwlp ZiAoYnVmZmVyLT52bWFwX2NudCkgeworCQlidWZmZXItPnZtYXBfY250Kys7CisJCXZhZGRyID0g YnVmZmVyLT52YWRkcjsKKwkJZ290byBvdXQ7CisJfQorCisJdmFkZHIgPSBjbWFfaGVhcF9kb192 bWFwKGJ1ZmZlcik7CisJaWYgKElTX0VSUih2YWRkcikpCisJCWdvdG8gb3V0OworCisJYnVmZmVy LT52YWRkciA9IHZhZGRyOworCWJ1ZmZlci0+dm1hcF9jbnQrKzsKK291dDoKKwltdXRleF91bmxv Y2soJmJ1ZmZlci0+bG9jayk7CisKKwlyZXR1cm4gdmFkZHI7Cit9CisKK3N0YXRpYyB2b2lkIGNt YV9oZWFwX3Z1bm1hcChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLCB2b2lkICp2YWRkcikKK3sKKwlz dHJ1Y3QgY21hX2hlYXBfYnVmZmVyICpidWZmZXIgPSBkbWFidWYtPnByaXY7CisKKwltdXRleF9s b2NrKCZidWZmZXItPmxvY2spOworCWlmICghLS1idWZmZXItPnZtYXBfY250KSB7CisJCXZ1bm1h cChidWZmZXItPnZhZGRyKTsKKwkJYnVmZmVyLT52YWRkciA9IE5VTEw7CisJfQorCW11dGV4X3Vu bG9jaygmYnVmZmVyLT5sb2NrKTsKK30KKworc3RhdGljIHZvaWQgY21hX2hlYXBfZG1hX2J1Zl9y ZWxlYXNlKHN0cnVjdCBkbWFfYnVmICpkbWFidWYpCit7CisJc3RydWN0IGNtYV9oZWFwX2J1ZmZl ciAqYnVmZmVyID0gZG1hYnVmLT5wcml2OworCXN0cnVjdCBjbWFfaGVhcCAqY21hX2hlYXAgPSBi dWZmZXItPmhlYXA7CisKKwlpZiAoYnVmZmVyLT52bWFwX2NudCA+IDApIHsKKwkJV0FSTigxLCAi JXM6IGJ1ZmZlciBzdGlsbCBtYXBwZWQgaW4gdGhlIGtlcm5lbFxuIiwgX19mdW5jX18pOworCQl2 dW5tYXAoYnVmZmVyLT52YWRkcik7CisJfQorCisJY21hX3JlbGVhc2UoY21hX2hlYXAtPmNtYSwg YnVmZmVyLT5jbWFfcGFnZXMsIGJ1ZmZlci0+cGFnZWNvdW50KTsKIAlrZnJlZShidWZmZXIpOwog fQogCi0vKiBkbWFidWYgaGVhcCBDTUEgb3BlcmF0aW9ucyBmdW5jdGlvbnMgKi8KK3N0YXRpYyBj b25zdCBzdHJ1Y3QgZG1hX2J1Zl9vcHMgY21hX2hlYXBfYnVmX29wcyA9IHsKKwkuYXR0YWNoID0g Y21hX2hlYXBfYXR0YWNoLAorCS5kZXRhY2ggPSBjbWFfaGVhcF9kZXRhY2gsCisJLm1hcF9kbWFf YnVmID0gY21hX2hlYXBfbWFwX2RtYV9idWYsCisJLnVubWFwX2RtYV9idWYgPSBjbWFfaGVhcF91 bm1hcF9kbWFfYnVmLAorCS5iZWdpbl9jcHVfYWNjZXNzID0gY21hX2hlYXBfZG1hX2J1Zl9iZWdp bl9jcHVfYWNjZXNzLAorCS5lbmRfY3B1X2FjY2VzcyA9IGNtYV9oZWFwX2RtYV9idWZfZW5kX2Nw dV9hY2Nlc3MsCisJLm1tYXAgPSBjbWFfaGVhcF9tbWFwLAorCS52bWFwID0gY21hX2hlYXBfdm1h cCwKKwkudnVubWFwID0gY21hX2hlYXBfdnVubWFwLAorCS5yZWxlYXNlID0gY21hX2hlYXBfZG1h X2J1Zl9yZWxlYXNlLAorfTsKKwogc3RhdGljIGludCBjbWFfaGVhcF9hbGxvY2F0ZShzdHJ1Y3Qg ZG1hX2hlYXAgKmhlYXAsCi0JCQkgICAgIHVuc2lnbmVkIGxvbmcgbGVuLAotCQkJICAgICB1bnNp Z25lZCBsb25nIGZkX2ZsYWdzLAotCQkJICAgICB1bnNpZ25lZCBsb25nIGhlYXBfZmxhZ3MpCisJ CQkJICB1bnNpZ25lZCBsb25nIGxlbiwKKwkJCQkgIHVuc2lnbmVkIGxvbmcgZmRfZmxhZ3MsCisJ CQkJICB1bnNpZ25lZCBsb25nIGhlYXBfZmxhZ3MpCiB7CiAJc3RydWN0IGNtYV9oZWFwICpjbWFf aGVhcCA9IGRtYV9oZWFwX2dldF9kcnZkYXRhKGhlYXApOwotCXN0cnVjdCBoZWFwX2hlbHBlcl9i dWZmZXIgKmhlbHBlcl9idWZmZXI7Ci0Jc3RydWN0IHBhZ2UgKmNtYV9wYWdlczsKKwlzdHJ1Y3Qg Y21hX2hlYXBfYnVmZmVyICpidWZmZXI7CisJREVGSU5FX0RNQV9CVUZfRVhQT1JUX0lORk8oZXhw X2luZm8pOwogCXNpemVfdCBzaXplID0gUEFHRV9BTElHTihsZW4pOwotCXVuc2lnbmVkIGxvbmcg bnJfcGFnZXMgPSBzaXplID4+IFBBR0VfU0hJRlQ7CisJcGdvZmZfdCBwYWdlY291bnQgPSBzaXpl ID4+IFBBR0VfU0hJRlQ7CiAJdW5zaWduZWQgbG9uZyBhbGlnbiA9IGdldF9vcmRlcihzaXplKTsK KwlzdHJ1Y3QgcGFnZSAqY21hX3BhZ2VzOwogCXN0cnVjdCBkbWFfYnVmICpkbWFidWY7CiAJaW50 IHJldCA9IC1FTk9NRU07CiAJcGdvZmZfdCBwZzsKIAotCWlmIChhbGlnbiA+IENPTkZJR19DTUFf QUxJR05NRU5UKQotCQlhbGlnbiA9IENPTkZJR19DTUFfQUxJR05NRU5UOwotCi0JaGVscGVyX2J1 ZmZlciA9IGt6YWxsb2Moc2l6ZW9mKCpoZWxwZXJfYnVmZmVyKSwgR0ZQX0tFUk5FTCk7Ci0JaWYg KCFoZWxwZXJfYnVmZmVyKQorCWJ1ZmZlciA9IGt6YWxsb2Moc2l6ZW9mKCpidWZmZXIpLCBHRlBf S0VSTkVMKTsKKwlpZiAoIWJ1ZmZlcikKIAkJcmV0dXJuIC1FTk9NRU07CiAKLQlpbml0X2hlYXBf aGVscGVyX2J1ZmZlcihoZWxwZXJfYnVmZmVyLCBjbWFfaGVhcF9mcmVlKTsKLQloZWxwZXJfYnVm ZmVyLT5oZWFwID0gaGVhcDsKLQloZWxwZXJfYnVmZmVyLT5zaXplID0gbGVuOworCUlOSVRfTElT VF9IRUFEKCZidWZmZXItPmF0dGFjaG1lbnRzKTsKKwltdXRleF9pbml0KCZidWZmZXItPmxvY2sp OworCWJ1ZmZlci0+bGVuID0gc2l6ZTsKKworCWlmIChhbGlnbiA+IENPTkZJR19DTUFfQUxJR05N RU5UKQorCQlhbGlnbiA9IENPTkZJR19DTUFfQUxJR05NRU5UOwogCi0JY21hX3BhZ2VzID0gY21h X2FsbG9jKGNtYV9oZWFwLT5jbWEsIG5yX3BhZ2VzLCBhbGlnbiwgZmFsc2UpOworCWNtYV9wYWdl cyA9IGNtYV9hbGxvYyhjbWFfaGVhcC0+Y21hLCBwYWdlY291bnQsIGFsaWduLCBmYWxzZSk7CiAJ aWYgKCFjbWFfcGFnZXMpCi0JCWdvdG8gZnJlZV9idWY7CisJCWdvdG8gZnJlZV9idWZmZXI7CiAK KwkvKiBDbGVhciB0aGUgY21hIHBhZ2VzICovCiAJaWYgKFBhZ2VIaWdoTWVtKGNtYV9wYWdlcykp IHsKLQkJdW5zaWduZWQgbG9uZyBucl9jbGVhcl9wYWdlcyA9IG5yX3BhZ2VzOworCQl1bnNpZ25l ZCBsb25nIG5yX2NsZWFyX3BhZ2VzID0gcGFnZWNvdW50OwogCQlzdHJ1Y3QgcGFnZSAqcGFnZSA9 IGNtYV9wYWdlczsKIAogCQl3aGlsZSAobnJfY2xlYXJfcGFnZXMgPiAwKSB7CkBAIC04NSw3ICsz MDAsNiBAQCBzdGF0aWMgaW50IGNtYV9oZWFwX2FsbG9jYXRlKHN0cnVjdCBkbWFfaGVhcCAqaGVh cCwKIAkJCSAqLwogCQkJaWYgKGZhdGFsX3NpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKQogCQkJCWdv dG8gZnJlZV9jbWE7Ci0KIAkJCXBhZ2UrKzsKIAkJCW5yX2NsZWFyX3BhZ2VzLS07CiAJCX0KQEAg LTkzLDI4ICszMDcsMzAgQEAgc3RhdGljIGludCBjbWFfaGVhcF9hbGxvY2F0ZShzdHJ1Y3QgZG1h X2hlYXAgKmhlYXAsCiAJCW1lbXNldChwYWdlX2FkZHJlc3MoY21hX3BhZ2VzKSwgMCwgc2l6ZSk7 CiAJfQogCi0JaGVscGVyX2J1ZmZlci0+cGFnZWNvdW50ID0gbnJfcGFnZXM7Ci0JaGVscGVyX2J1 ZmZlci0+cGFnZXMgPSBrbWFsbG9jX2FycmF5KGhlbHBlcl9idWZmZXItPnBhZ2Vjb3VudCwKLQkJ CQkJICAgICBzaXplb2YoKmhlbHBlcl9idWZmZXItPnBhZ2VzKSwKLQkJCQkJICAgICBHRlBfS0VS TkVMKTsKLQlpZiAoIWhlbHBlcl9idWZmZXItPnBhZ2VzKSB7CisJYnVmZmVyLT5wYWdlcyA9IGtt YWxsb2NfYXJyYXkocGFnZWNvdW50LCBzaXplb2YoKmJ1ZmZlci0+cGFnZXMpLCBHRlBfS0VSTkVM KTsKKwlpZiAoIWJ1ZmZlci0+cGFnZXMpIHsKIAkJcmV0ID0gLUVOT01FTTsKIAkJZ290byBmcmVl X2NtYTsKIAl9CiAKLQlmb3IgKHBnID0gMDsgcGcgPCBoZWxwZXJfYnVmZmVyLT5wYWdlY291bnQ7 IHBnKyspCi0JCWhlbHBlcl9idWZmZXItPnBhZ2VzW3BnXSA9ICZjbWFfcGFnZXNbcGddOworCWZv ciAocGcgPSAwOyBwZyA8IHBhZ2Vjb3VudDsgcGcrKykKKwkJYnVmZmVyLT5wYWdlc1twZ10gPSAm Y21hX3BhZ2VzW3BnXTsKKworCWJ1ZmZlci0+Y21hX3BhZ2VzID0gY21hX3BhZ2VzOworCWJ1ZmZl ci0+aGVhcCA9IGNtYV9oZWFwOworCWJ1ZmZlci0+cGFnZWNvdW50ID0gcGFnZWNvdW50OwogCiAJ LyogY3JlYXRlIHRoZSBkbWFidWYgKi8KLQlkbWFidWYgPSBoZWFwX2hlbHBlcl9leHBvcnRfZG1h YnVmKGhlbHBlcl9idWZmZXIsIGZkX2ZsYWdzKTsKKwlleHBfaW5mby5vcHMgPSAmY21hX2hlYXBf YnVmX29wczsKKwlleHBfaW5mby5zaXplID0gYnVmZmVyLT5sZW47CisJZXhwX2luZm8uZmxhZ3Mg PSBmZF9mbGFnczsKKwlleHBfaW5mby5wcml2ID0gYnVmZmVyOworCWRtYWJ1ZiA9IGRtYV9idWZf ZXhwb3J0KCZleHBfaW5mbyk7CiAJaWYgKElTX0VSUihkbWFidWYpKSB7CiAJCXJldCA9IFBUUl9F UlIoZG1hYnVmKTsKIAkJZ290byBmcmVlX3BhZ2VzOwogCX0KIAotCWhlbHBlcl9idWZmZXItPmRt YWJ1ZiA9IGRtYWJ1ZjsKLQloZWxwZXJfYnVmZmVyLT5wcml2X3ZpcnQgPSBjbWFfcGFnZXM7Ci0K IAlyZXQgPSBkbWFfYnVmX2ZkKGRtYWJ1ZiwgZmRfZmxhZ3MpOwogCWlmIChyZXQgPCAwKSB7CiAJ CWRtYV9idWZfcHV0KGRtYWJ1Zik7CkBAIC0xMjUsMTEgKzM0MSwxMiBAQCBzdGF0aWMgaW50IGNt YV9oZWFwX2FsbG9jYXRlKHN0cnVjdCBkbWFfaGVhcCAqaGVhcCwKIAlyZXR1cm4gcmV0OwogCiBm cmVlX3BhZ2VzOgotCWtmcmVlKGhlbHBlcl9idWZmZXItPnBhZ2VzKTsKKwlrZnJlZShidWZmZXIt PnBhZ2VzKTsKIGZyZWVfY21hOgotCWNtYV9yZWxlYXNlKGNtYV9oZWFwLT5jbWEsIGNtYV9wYWdl cywgbnJfcGFnZXMpOwotZnJlZV9idWY6Ci0Ja2ZyZWUoaGVscGVyX2J1ZmZlcik7CisJY21hX3Jl bGVhc2UoY21hX2hlYXAtPmNtYSwgY21hX3BhZ2VzLCBwYWdlY291bnQpOworZnJlZV9idWZmZXI6 CisJa2ZyZWUoYnVmZmVyKTsKKwogCXJldHVybiByZXQ7CiB9CiAKLS0gCjIuMTcuMQoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxp bmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==