From patchwork Tue Oct 15 01:33:24 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Ritesh Harjani (IBM)" X-Patchwork-Id: 13835647 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1AA21CFC501 for ; Tue, 15 Oct 2024 01:33:56 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 929616B0089; Mon, 14 Oct 2024 21:33:55 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 8D87E6B008A; Mon, 14 Oct 2024 21:33:55 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 752FB6B008C; Mon, 14 Oct 2024 21:33:55 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 551396B0089 for ; Mon, 14 Oct 2024 21:33:55 -0400 (EDT) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id CDD4D160409 for ; Tue, 15 Oct 2024 01:33:45 +0000 (UTC) X-FDA: 82674114936.08.76A6D59 Received: from mail-pf1-f177.google.com (mail-pf1-f177.google.com [209.85.210.177]) by imf04.hostedemail.com (Postfix) with ESMTP id 34AF640007 for ; Tue, 15 Oct 2024 01:33:44 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=IleYz1ae; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf04.hostedemail.com: domain of ritesh.list@gmail.com designates 209.85.210.177 as permitted sender) smtp.mailfrom=ritesh.list@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1728956001; a=rsa-sha256; cv=none; b=Bi5gtD+2O+Mb8zjo19KXFJgUwQFAjARQTY9tXxjBHv1okNXlz7W4AIyph476mPRmNqT8jg T06p5w8+KMWnRQnb14FOrUVKbcv4HUXBFDVkVvCgfsISa6nkOi2WFvJyiwTRgYFJktKc1V Ac65h4SFUJ3rpl3dolXiOB/N+L+tJa8= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=IleYz1ae; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf04.hostedemail.com: domain of ritesh.list@gmail.com designates 209.85.210.177 as permitted sender) smtp.mailfrom=ritesh.list@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1728956001; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=L3z8aqN2PapGEchw6ngaiDWNeD417V3WkhQBwYXWFqM=; b=YqVngTz4Hb9c4NcgjcsI4uDEDh4rSQ3daOh9rUJfo1Lwl5qt9U514VeaRsuIDWdpISQfKW cKi4QfyZkXFFvfwFTUcUUw6JdW8AeRUzvRts9IaWLFi6hg4Povv6mA47HRLaiDeR3K8ZtA OgFWYkNDlWDWbBByfq6KYH3w4gnAU3g= Received: by mail-pf1-f177.google.com with SMTP id d2e1a72fcca58-71e61b47c6cso1502706b3a.2 for ; Mon, 14 Oct 2024 18:33:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1728956032; x=1729560832; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=L3z8aqN2PapGEchw6ngaiDWNeD417V3WkhQBwYXWFqM=; b=IleYz1aelW141NqQ40BYysaFoxx7hH6sBPg/DlfnlAmL5Sz9suF7YRZLxsz+1AQfLH Z5LSMpRO/3apIrV6lqbQumuOCtfTMpYE6R1VlTbXYMPdEYN0klK5HIettCoCpitloPHC B5atGtzqgoPzsvT+pqynOvQOBSbQbheQM7f3qdI/PXigTldXUsvGkjBT1niqKSml8LuS 8uAIq5plxJvLDkltknjqgLsTfaUUcTdhIUaNO0SFGWAiI5oj/LbX6ZpngAdxdmWzSrPO GMPQbY1wgyvTl/lBb1X5KhoqCmBSI73QvHuTFvEvmOJLHMTE8kVC+y2CZJ+LafK1C4yx E+/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1728956032; x=1729560832; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=L3z8aqN2PapGEchw6ngaiDWNeD417V3WkhQBwYXWFqM=; b=fb7x2/fc71ByvHkk6P2Vs2471kTQ2oFk+zXLq6pD8E91Cttzo6pW+/o4X+ifeqC+1Q B14+c9M7sXBehLtZ+i57Vi2IeU7s++U71jKg0AhuoZzoAHD0jMh5NqqwwBXX7qX7mox5 tvfxA0d5uaNgIz1F1ce/Xjmi1jD/wkJ0/vu6IoQU0U2xmd3dQ6UMmjZbQWdfTPJhFTuC ny4CvF9VVpPo1f2yTcGtRTmCk4ZGbFZ6W3UxipoQHK/YIWKDNZKrHMS956uMSAh0ujw1 k+78gQaw8T6EchlgwCAUZocBBVET+1Oli/rDQl5nDt7fb4yfjYCnG4/RIPs5mJ5Yicqd C9KQ== X-Forwarded-Encrypted: i=1; AJvYcCVGFrL1HLQQWlrzstOsNrWvfjWri/foFXXx2vvfHdNi+8AS43yrHYxp3ZzesLt7xqbL5bNcHGCoog==@kvack.org X-Gm-Message-State: AOJu0YzaCiR3LzR6vVbm0Dhq0iN5lyxEVV8WcBZENf17DCFWF9JWinkQ o7wn38bDw9gX/wDe03MPGvKFoTBtaUPkMIrZhBfN+Z/XzE93StVp X-Google-Smtp-Source: AGHT+IGqbk3XkcP38tM4YL865mfr8G0wKwLOrKwm5cB+ZAuXCK3oFNnJ20ByJ9R3zI+2HFTRH1ioYA== X-Received: by 2002:a05:6a00:9a1:b0:71d:f215:1d96 with SMTP id d2e1a72fcca58-71e37e287e7mr22675408b3a.6.1728956031701; Mon, 14 Oct 2024 18:33:51 -0700 (PDT) Received: from dw-tp.. ([171.76.80.151]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-71e77508562sm189349b3a.186.2024.10.14.18.33.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 14 Oct 2024 18:33:51 -0700 (PDT) From: "Ritesh Harjani (IBM)" To: linuxppc-dev@lists.ozlabs.org Cc: kasan-dev@googlegroups.com, linux-mm@kvack.org, Marco Elver , Alexander Potapenko , Heiko Carstens , Michael Ellerman , Nicholas Piggin , Madhavan Srinivasan , Christophe Leroy , Hari Bathini , "Aneesh Kumar K . V" , Donet Tom , Pavithra Prakash , LKML , Nirjhar Roy , "Ritesh Harjani (IBM)" Subject: [RFC RESEND v2 01/13] mm/kfence: Add a new kunit test test_use_after_free_read_nofault() Date: Tue, 15 Oct 2024 07:03:24 +0530 Message-ID: X-Mailer: git-send-email 2.46.0 In-Reply-To: References: MIME-Version: 1.0 X-Rspam-User: X-Stat-Signature: 783jznp13797o6x31si19xawwb5m44bh X-Rspamd-Queue-Id: 34AF640007 X-Rspamd-Server: rspam02 X-HE-Tag: 1728956023-933305 X-HE-Meta: U2FsdGVkX18G7CSXYrI6JcScFhhRhYnvBhApcZs5++jWjEOc0iuhiJHMKLKvcppJmpGltKeZkCLHosAyx9euJG/sKPdxVVe+YbSOPoGZDrcKw5GQqi3ra/HTq90EEnqDhV7XekB/YwIj8PE/nNQSRhsFao+oQz1hS3TvviPogE7IUSMF3o9S0NYQ4K+9kdpAP3NwvziR+rwbfzAaISnM3V+wOmRFxFYhl9lL/i6DXt6KHnNpTHMOY5O7SLFrLJ+E7wbwwSXfd9WfM9v7WREmJyLjsaX4YYfVvfawkBaahOPwYnuaAQ5HSSOobhh2M7OK1nHEC0Eghe8RHtBKfQyJe5VnI6yH4mwHiuphhtZrZ29wPjkLMFTvccK0zxI9IW0wHuqna3/D59kWrDDzISxNxpoDmprkWLje/AX9fwZ3wAfQ5Kta9tidyhYwRpDC0TBj+1MtPCHbjwOjdVX2D9GBWLLUmSqJhKAh+8put2UaOvW2JAToQYKkl4hY2JEg3tvNmpZxEG7Cl8lflYbz5ee76r9ph9UZjZy3JipdK8uBhPFuasidvHzbzLULsL1mmKSf9yPseMV94o0dd1phSNmbG2hNcPOCezYcxiF3t/fWEdbemCdOuG8YDtDuKZkEouQ4wfN34EBFbxnO4u6yAU4sdyCVc0wxU5KYZOZJ5tAy5cWZvWbIcuLz+B2iVCFJfsC7O8p0mpPZUVeYh+/v5vTZURRT5GUDM5jflh/oQbZhom8Qc0nh16ColiNp92pNAH7An3FprJPgKyECsytqegEGBHm0PTrX5pJ63K0SjCgSelczSFjaR/XxP8VOGcnuRiWnhOVIRj+1yJE1/kcOLbmZy/f1LU2mfS5+T75Upj1ih892YcPDERCZ5Hvl3FG75WG10f02bPdfmyQBYPFUqnH00yty1XThMMooFT14iTxypq6fkGBvtG5wWrbT+yDAtvh3/WT/P+t3v/C7b7TfnPd f+m4pbx0 BZpaavMu7BIKWigSBeVpD/tFjEAs8SqyiXTLW1MMB88NZChwEIYFv88DkOQLO+xbg8Ia84hTr7C5JBEJoHJaEldzAv9B6CxBaPOTJtMlhRDrqwoQJf8sn/lcKRxIJ1XOK/GFT+RU/pfppRVi2xdc5stqlUQBPL7knHwUXTlxMTraH/oHADP5QDSKAkQGqVesGYhWEEHqbW2Yd9AQXU7S0IrD/7r7sBJy+lgQIS+uQVh03yHmWmMvQ94LHDqS9nwIjWymwRuMelUAYX4lLpHTvB1CEKI5zNKfwQwbb+RFNX26zFufUR9KkdVDkWNd2KUZUT18NdD5BuWBqNKLtJfjS2DGdqg== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: From: Nirjhar Roy Faults from copy_from_kernel_nofault() needs to be handled by fixup table and should not be handled by kfence. Otherwise while reading /proc/kcore which uses copy_from_kernel_nofault(), kfence can generate false negatives. This can happen when /proc/kcore ends up reading an unmapped address from kfence pool. Let's add a testcase to cover this case. Co-developed-by: Ritesh Harjani (IBM) Signed-off-by: Ritesh Harjani (IBM) Signed-off-by: Nirjhar Roy Cc: kasan-dev@googlegroups.com Cc: Alexander Potapenko Cc: linux-mm@kvack.org --- mm/kfence/kfence_test.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/mm/kfence/kfence_test.c b/mm/kfence/kfence_test.c index 00fd17285285..f65fb182466d 100644 --- a/mm/kfence/kfence_test.c +++ b/mm/kfence/kfence_test.c @@ -383,6 +383,22 @@ static void test_use_after_free_read(struct kunit *test) KUNIT_EXPECT_TRUE(test, report_matches(&expect)); } +static void test_use_after_free_read_nofault(struct kunit *test) +{ + const size_t size = 32; + char *addr; + char dst; + int ret; + + setup_test_cache(test, size, 0, NULL); + addr = test_alloc(test, size, GFP_KERNEL, ALLOCATE_ANY); + test_free(addr); + /* Use after free with *_nofault() */ + ret = copy_from_kernel_nofault(&dst, addr, 1); + KUNIT_EXPECT_EQ(test, ret, -EFAULT); + KUNIT_EXPECT_FALSE(test, report_available()); +} + static void test_double_free(struct kunit *test) { const size_t size = 32; @@ -780,6 +796,7 @@ static struct kunit_case kfence_test_cases[] = { KFENCE_KUNIT_CASE(test_out_of_bounds_read), KFENCE_KUNIT_CASE(test_out_of_bounds_write), KFENCE_KUNIT_CASE(test_use_after_free_read), + KFENCE_KUNIT_CASE(test_use_after_free_read_nofault), KFENCE_KUNIT_CASE(test_double_free), KFENCE_KUNIT_CASE(test_invalid_addr_free), KFENCE_KUNIT_CASE(test_corruption), From patchwork Tue Oct 15 01:33:25 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Ritesh Harjani (IBM)" X-Patchwork-Id: 13835648 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id D8650CFC505 for ; Tue, 15 Oct 2024 01:34:00 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 692426B008C; Mon, 14 Oct 2024 21:34:00 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6405D6B0092; Mon, 14 Oct 2024 21:34:00 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4E1F86B0093; Mon, 14 Oct 2024 21:34:00 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 3217D6B008C for ; Mon, 14 Oct 2024 21:34:00 -0400 (EDT) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 739691403F1 for ; Tue, 15 Oct 2024 01:33:51 +0000 (UTC) X-FDA: 82674115230.22.2184453 Received: from mail-pf1-f175.google.com (mail-pf1-f175.google.com [209.85.210.175]) by imf03.hostedemail.com (Postfix) with ESMTP id AB7B220005 for ; Tue, 15 Oct 2024 01:33:54 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=c26xhBQy; spf=pass (imf03.hostedemail.com: domain of ritesh.list@gmail.com designates 209.85.210.175 as permitted sender) smtp.mailfrom=ritesh.list@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1728955895; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=2IOurK7ENej5lHHiP4d73lr8yQG82cdevQPBO00m0fo=; b=LvGdRw+zDNer+rYrAUzDvAhc38F8TGb5Wicz8mkmsTDomf+r4f48bkNt0Vg+FxmFo7ScuI IcE2btoXmDV65yzEVfMgnpuZOsuYSv4Ja4aa0NLbWSUzd2JegAyAwGU3n7D5uaTo3uupYH fumJAkFokJ0xLvTc3/iH/RUF8HSSRWs= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1728955895; a=rsa-sha256; cv=none; b=CzBWm9ivqUYtx9PgxApAFos2uWKv4YxIlKcb/GRz2nLjmPGAZDVKEEss1/5FvBWIsxcLyU /R0O4DvMmSgwQdBHN//6uwAPgcbxpChjuhcmUr1lrcop8wIzq7Yae5YdhJSBCLEVifwi5e 6hTJU/q/xlN1OxxvRRTe7YtBD3PzgXU= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=c26xhBQy; spf=pass (imf03.hostedemail.com: domain of ritesh.list@gmail.com designates 209.85.210.175 as permitted sender) smtp.mailfrom=ritesh.list@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-pf1-f175.google.com with SMTP id d2e1a72fcca58-71e52582cf8so1557224b3a.2 for ; Mon, 14 Oct 2024 18:33:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1728956037; x=1729560837; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=2IOurK7ENej5lHHiP4d73lr8yQG82cdevQPBO00m0fo=; b=c26xhBQyz90hX7+y9Z4CCHe/tIuDXay6GzmsaPB3KqqObibqwwL3rGBwauJQHuBbcf l+1Mot5yLH/1QejnrW2Ek64C5b5t99lpG+ldnkwJkuaGN6OjFfZjpqkz4Hl1eCDSyStA gIk+7wfFO2wASA2OKYAcn59Y4i70yXanzmGaJXu0rVa6ZjRYZt3cm0lFWn+TxurNQci7 ws6fIa5geAvcp4b3lqK/1N6pTbo4BdyRw5kDeZHFOBGpf9g43/FntbYoYUI5rTvabN5C gNm0mEEyed1afhD5SHyp7NaepIem5tpFvxdCfC8T3rBrBecj6E23GBjjpqliY196GLpW HhxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1728956037; x=1729560837; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=2IOurK7ENej5lHHiP4d73lr8yQG82cdevQPBO00m0fo=; b=Ge7nhpcWivp26RrRuDFfoLmUmN4tqj7/vxgtDbQGekzmUzpqhFfxWy6qY0jCKgjb8b +2czfoJycO8wgvu+o8f+ud0DlkFqdPJWa9SdRNixQpnpIurTdiwnaVmgo3wBqHjmkiRf x8G1lj2moCN5W2VVnHQVnA6+C98Qj1VTvVrQHxkCDHf91vWGCudmh5lvcE21LCbFrwDL /JC6bwrqSzrmwFhqMmPkv+eiOHaN3xJw7V/FYvfkN8KZF2IEouV6C3tYxULna0oVIcdi RpeJwiRzFqasW8sdLssUjxg97wT730gGghoN7soVrkphjXtNWgo/cOGP+3YJA1ob/XMs zfwg== X-Forwarded-Encrypted: i=1; AJvYcCU4eBuBR8i7r7NKq7ALjf+dkogR5y7tZ3zaBUYKDavEOZa2GI3sEAD8e0uB0mB5N72raQjdzkbcTw==@kvack.org X-Gm-Message-State: AOJu0Yx4W7NAsn6+W9fGGzwoiT6IpRwhRfSVoOHx385vXa+byK9+TE6F X6Gzotyc1XV5HMgASaeS/90RG41g3rlGYZ1EK4eCr/B2YoWZi509 X-Google-Smtp-Source: AGHT+IE+s7PAXjF3lV5jJ2AuCaaz/0o7aAW2i8sfMGGFqoeg6aQJcAwijtM1PaQhSx1fjTwLZ36lFg== X-Received: by 2002:a05:6a00:174b:b0:71e:148c:4611 with SMTP id d2e1a72fcca58-71e4c13a1d0mr15707237b3a.6.1728956036726; Mon, 14 Oct 2024 18:33:56 -0700 (PDT) Received: from dw-tp.. ([171.76.80.151]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-71e77508562sm189349b3a.186.2024.10.14.18.33.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 14 Oct 2024 18:33:56 -0700 (PDT) From: "Ritesh Harjani (IBM)" To: linuxppc-dev@lists.ozlabs.org Cc: kasan-dev@googlegroups.com, linux-mm@kvack.org, Marco Elver , Alexander Potapenko , Heiko Carstens , Michael Ellerman , Nicholas Piggin , Madhavan Srinivasan , Christophe Leroy , Hari Bathini , "Aneesh Kumar K . V" , Donet Tom , Pavithra Prakash , LKML , "Ritesh Harjani (IBM)" , Disha Goel Subject: [RFC RESEND v2 02/13] powerpc: mm: Fix kfence page fault reporting Date: Tue, 15 Oct 2024 07:03:25 +0530 Message-ID: <6bf523aa03e72d701d24aca49b51864331eed2d5.1728954719.git.ritesh.list@gmail.com> X-Mailer: git-send-email 2.46.0 In-Reply-To: References: MIME-Version: 1.0 X-Stat-Signature: 7coh8sn31wwiadu8yci3awhpi4fmp7cu X-Rspamd-Queue-Id: AB7B220005 X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1728956034-140870 X-HE-Meta: U2FsdGVkX1/5FIVpuPCdV9MXkwQTmqYto+OsHRjnl+wTyuvCWaln9eE38mNuCg9keTJS7s33iFHS1OsVCTshbtPYL6SeRzOZGFBsHgluM1vbSjHfIzAe4J1oNWufbdrZXY3MX/HhUqsWs1dIrZH1BfYdgCfYJCjL3TgDHqSjJZMYprM/9JpbB/F2JlhjODsMMi91e+ktEJyDXILCviYszznXpeIqNgzwD81zZGFK21MPKO1KOYu6WLUSKYfBjY7H7g1KuSm5rV9wVDtFwIvwM0/v45d51YQi1MCEedg1hDB9wEAV7PYiuZZUr1uQ05FOKauIicV8Cezl/hDQFnAMth7+RccO1gnphsWbqfyF/P2tFF5SP6ylZYlq757dYIj6p8yGERYDB+GH8Kqfumln4JIfgbHxsRI7fQqrmscJVnWynQlms5MycvlYLppNZUksiUEdoKLBm6hJ/G8rb42l2MZuSACE/OUmWvw0KI0j2i3tF3EzX1GF9vzDfDLqJ7nHjNoeC1PpwoZs6YoaTkYrRts3QggkWnIMLw31bFvsL2InS4hBKlZdLD463Wf3GD0u2B3mW2Hre/EqoL8eyYKdQkMJKZTgOv/uVpv+ApFN6k6+02jv5JzuflwSG/JQl3mDMVMfZGIoBgkr/PtyU9EDNcdmwtCe+Z6Hl6bG6BRcTSxsKXvH5a+WmRFeuSTUp7WWscD+eMPcgjszN+fMJIJy5cLoL9GF7/g531fknoHyFRqps/9SGJKZU9Y5LvSk9AiFzQNrkhwLmUsjDnTEIiTwHU3022hr0dw8kLtlvC85JOA7rfV+KypHyFsJxBsbEr7WFf8LQ4WXsEFI/3a43GMCoDofeDSt95dunR0i+sTHQrMeS8/y/UMDayALa6YwDBSLv71ZhkDq5n4qRJnYVjdSzBmZrp10pAErY9JWd7tTLhcRot4EUBkje4qXHAv2YVtpyXjPSfAzBasopS1YqYr pJUc2yh6 oNhhaO6TPYYovBFzIWOr0l4nhfLRq+Hur9ksPNFPSKFlpqBAa1VPiKHdKY4Mw6DtjPVYWiqTys1rl0uNBhb0gg0C6NnyDs7BHH0LOo3Q+dnCZivT6NOyfReJ7ApGNdVRZFq4qHm7gZA21OHP89S/MkhKA2fAkX2HOUOmSig8eaM+/t9airvQ5VFq0Tv0m+dLNQLJdVhB8IopB2vGtGprz+r4bunewC3JM1b+7EnUuxGJHVWsrss0nGvQzNhz4wDDR2Ti1uqtu+ynEJXr3n9oX5jUYRQtdVctjYMGw X-Bogosity: Ham, tests=bogofilter, spamicity=0.000001, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: copy_from_kernel_nofault() can be called when doing read of /proc/kcore. /proc/kcore can have some unmapped kfence objects which when read via copy_from_kernel_nofault() can cause page faults. Since *_nofault() functions define their own fixup table for handling fault, use that instead of asking kfence to handle such faults. Hence we search the exception tables for the nip which generated the fault. If there is an entry then we let the fixup table handler handle the page fault by returning an error from within ___do_page_fault(). This can be easily triggered if someone tries to do dd from /proc/kcore. dd if=/proc/kcore of=/dev/null bs=1M =============================== BUG: KFENCE: invalid read in copy_from_kernel_nofault+0xb0/0x1c8 Invalid read at 0x000000004f749d2e: copy_from_kernel_nofault+0xb0/0x1c8 0xc0000000057f7950 read_kcore_iter+0x41c/0x9ac proc_reg_read_iter+0xe4/0x16c vfs_read+0x2e4/0x3b0 ksys_read+0x88/0x154 system_call_exception+0x124/0x340 system_call_common+0x160/0x2c4 BUG: KFENCE: use-after-free read in copy_from_kernel_nofault+0xb0/0x1c8 Use-after-free read at 0x000000008fbb08ad (in kfence-#0): copy_from_kernel_nofault+0xb0/0x1c8 0xc0000000057f7950 read_kcore_iter+0x41c/0x9ac proc_reg_read_iter+0xe4/0x16c vfs_read+0x2e4/0x3b0 ksys_read+0x88/0x154 system_call_exception+0x124/0x340 system_call_common+0x160/0x2c4 Guessing the fix should go back to when we first got kfence on PPC32. Fixes: 90cbac0e995d ("powerpc: Enable KFENCE for PPC32") Reported-by: Disha Goel Signed-off-by: Ritesh Harjani (IBM) --- arch/powerpc/mm/fault.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c index 81c77ddce2e3..fa825198f29f 100644 --- a/arch/powerpc/mm/fault.c +++ b/arch/powerpc/mm/fault.c @@ -439,9 +439,17 @@ static int ___do_page_fault(struct pt_regs *regs, unsigned long address, /* * The kernel should never take an execute fault nor should it * take a page fault to a kernel address or a page fault to a user - * address outside of dedicated places + * address outside of dedicated places. + * + * Rather than kfence reporting false negatives, let the fixup table + * handler handle the page fault by returning SIGSEGV, if the fault + * has come from functions like copy_from_kernel_nofault(). */ if (unlikely(!is_user && bad_kernel_fault(regs, error_code, address, is_write))) { + + if (search_exception_tables(instruction_pointer(regs))) + return SIGSEGV; + if (kfence_handle_page_fault(address, is_write, regs)) return 0; From patchwork Tue Oct 15 01:33:26 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Ritesh Harjani (IBM)" X-Patchwork-Id: 13835649 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id BDAC8CFC536 for ; Tue, 15 Oct 2024 01:34:05 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 558EE6B0093; Mon, 14 Oct 2024 21:34:05 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 4E14B6B0095; Mon, 14 Oct 2024 21:34:05 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3822E6B0096; Mon, 14 Oct 2024 21:34:05 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 183DA6B0093 for ; Mon, 14 Oct 2024 21:34:05 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 96B8740402 for ; Tue, 15 Oct 2024 01:33:59 +0000 (UTC) X-FDA: 82674115314.09.A7E59F0 Received: from mail-pf1-f180.google.com (mail-pf1-f180.google.com [209.85.210.180]) by imf22.hostedemail.com (Postfix) with ESMTP id CB9BAC0010 for ; Tue, 15 Oct 2024 01:33:54 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=No0nldO4; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf22.hostedemail.com: domain of ritesh.list@gmail.com designates 209.85.210.180 as permitted sender) smtp.mailfrom=ritesh.list@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1728955996; a=rsa-sha256; cv=none; b=XjAr/+pkgoBj1306gN4BjKarmjJA0Wcw8c8YNdYm48pkeaz3ZOFZpLKZJOa2gD6ZdPOeU0 gynX6FHVGCw5dj4NTROfNIABDOZjxpIpZCJohdRHWZyh8dWVa3zHFxJeAWQvzeopOv5Jsk vk44fd5Vp02vrn1AzYLVwXm+RTyrxRk= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=No0nldO4; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf22.hostedemail.com: domain of ritesh.list@gmail.com designates 209.85.210.180 as permitted sender) smtp.mailfrom=ritesh.list@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1728955996; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=9gdBU6NTSnQ45ASWgUOhpCdQmMAIjthCFPvKHCG5k1I=; b=xmmF+mS5MiahSgRYIZQt5gysUPs4QDCGiEsWbcG6LNpP/SYKRlkhOPrGUUn7FNUSUr1zxY nC9sii76r+Ygqo76ADIet1+Pq/tpnLyMVfbUQNl7GuTpRCcY3R+tqtm61qY9HVVBXngolb LJSybJwOgCH+cqW8upfqp/WbCw1neyY= Received: by mail-pf1-f180.google.com with SMTP id d2e1a72fcca58-71e681bc315so921842b3a.0 for ; Mon, 14 Oct 2024 18:34:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1728956042; x=1729560842; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=9gdBU6NTSnQ45ASWgUOhpCdQmMAIjthCFPvKHCG5k1I=; b=No0nldO4DRgym0Xrisgq3VxkgcA+FODCUZuigVMItEJiRN7cXFsM7fTWWdCRyCoM4R VSM5P6qk23q5fbHgPFjrsoihnrbvjZ+gqBhsTxk0BCxjs+aTkvLJe6/y2M1vG//rsgGV ZeczDvO6vKDOW/dB4T25RGU096EIxqnsuOu914hzRO4rLURaGQohQ0+KjkhpXbXmboPl Sbu9B7a4MNYRggsiphYJ9GTDs2TVju+gRZR0SUmJ1QXhp1pgPpQwhsLpWPuFMJO++GCP VjXtlqylVQS7uqnNKecOcgLSYxXHsL3JHaVXmcKogRRr0Ro5DgVKuMmi5ur7xqdML6Za EMRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1728956042; x=1729560842; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9gdBU6NTSnQ45ASWgUOhpCdQmMAIjthCFPvKHCG5k1I=; b=KDhGvJ1JQGciuihLJcnBNgRgOpTDOCUEF+owJWrPWNPFRDV4D/A4sHyO1dkUDVLY/8 acEK43LJvLJ4mTlR4bW3g5vb0J9EkkX/tVXY+JiMLxv/eF5nxE7SCKK7f6pceS6UK+kj 5iMsJ7o69AbxSr4rXWrSyqN6SYkXyVRRQIdRTSUdI1zfkB9VlX/sFPZi8zVPD/KFygxY 7fkqZXCWddKUAQ1zkjiN3/8/Qcidmh/68cyNB4l9vpLAxFcKWArIJ8YWGOVlDsuzjqfl m1URe3ttDp/+1uRzZmrMuAW14PnTssz5Qv2d2FnlsnKbNoOkVYRtKASkE9lmcaPISaWk 2/Qw== X-Forwarded-Encrypted: i=1; AJvYcCUMruxHPYPyPoPo0kZTcCEbOLDdxitxpW2TCdp0cV8lrasunVIyFNGgor8CM/49GjHbNRgDG84anQ==@kvack.org X-Gm-Message-State: AOJu0YzoN9G1FwmXBBkvGry22OyxEYLwVAIhGwJZ2/2vnJdsHUlcklbV 9O/g7RaoLPTSRL5l3/Y5DZ4QqMFN3hnZ2Aqucnu3IVMyaYw6exwv X-Google-Smtp-Source: AGHT+IEiFeaAHOWvlSRTf6MSOaFyHyrBNKW3yk4oAKnnkBoJktpp0QXSxa/Okqxxx4ycP0dnhBWBFw== X-Received: by 2002:a62:f252:0:b0:71e:5709:2330 with SMTP id d2e1a72fcca58-71e570923afmr12036633b3a.7.1728956041587; Mon, 14 Oct 2024 18:34:01 -0700 (PDT) Received: from dw-tp.. ([171.76.80.151]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-71e77508562sm189349b3a.186.2024.10.14.18.33.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 14 Oct 2024 18:34:01 -0700 (PDT) From: "Ritesh Harjani (IBM)" To: linuxppc-dev@lists.ozlabs.org Cc: kasan-dev@googlegroups.com, linux-mm@kvack.org, Marco Elver , Alexander Potapenko , Heiko Carstens , Michael Ellerman , Nicholas Piggin , Madhavan Srinivasan , Christophe Leroy , Hari Bathini , "Aneesh Kumar K . V" , Donet Tom , Pavithra Prakash , LKML , "Ritesh Harjani (IBM)" Subject: [RFC RESEND v2 03/13] book3s64/hash: Remove kfence support temporarily Date: Tue, 15 Oct 2024 07:03:26 +0530 Message-ID: <00ba1fdbf7e135fab9d3d1c8872674079452446a.1728954719.git.ritesh.list@gmail.com> X-Mailer: git-send-email 2.46.0 In-Reply-To: References: MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Queue-Id: CB9BAC0010 X-Rspamd-Server: rspam01 X-Stat-Signature: onn8y968jndo1grdm1cjgpmucdi63bsm X-HE-Tag: 1728956034-49564 X-HE-Meta: U2FsdGVkX19WChbEvjQmZ/KJGbNTtxbLX1srLY1ops7/9p384Pjj+E2D8gVFyq34bUTjNek0MufrUomkGiOtVPsrdiN0rhm23tr8pWtQllxctFdw3VrKQAhQ1NGszRyhyjxA3d3vrezsGpv0HLHYPhC7Z2aXcld7xDpP9tbJAkB9d1UlV7nbbLnz6898Bi8FucW2B0QzegpW/fwICUN1n5QPBqCcbU2Sg357ZKDfChFjXBtvKhIuMIEWWxAEwi8Hhecte6U58HRAZ43fKWNPZCWjTENpwkB/JnWlqVwvb6DlGOlP+/fq1xVPxCOkcofmQkdLTmgJ1dnRlyVBrncT2tOwiH7L3FXj3Kem0McI/cV4+uHIRbmLtYFDxU62dAUcGl7ZOuBbJBJYbNR6HMj1TkT4+RpwGZkXVCxX24IDCWLgE6XOyzAcG8Jweq5hfFec3aU/3T3DpotQlwARHKpNi53760YN96LrX/9zT9rrRfiFYDx0sVnXmiYcKQBiP0xQkJ2vPwVUWJtbSFEbGD+ue5cKaKYYxaLZ4VignCZSKwMvTNCTVmPUq0hfRKdTD2Nvo5znmH0CrkedWFQ+HfyRrBhfYgzM6fo3imUc9+koIdUJsIbHZ8cadIY6SYJHbKlCpm+1lzNjJUmFqvj3gcQ66lMtF4BzgHUI1t9TaHn6dv/vBDlLcGLbvI9u+1r7mrQmis/RWttftkAq2cPPpHvaQpA6/qAcrmPBmw6HCFHRB1ep2jeo2oUF0uq7hbDUFpUArxeRwu5duW9D+IjllcPG/+E8NTlv/IYz06HwZK4Qnc+GeAXaEwPO76sEf7Nh49EtHDZ7ABiMGbJ5fEfQgXbyHi/+cG2RvbVIh25kUhIaOTyRmtyLcPZRW8KUoK1JZ1AsbthdIyc0cHVyJv1sgYOdPlYrpVEAKAYUDEWL8K9AjuvYwr3TiNwrpr/19yPlBWiI3b19wDG6JUHUVOUZIY1 YzwTtNk5 1ZXAcIERbxZ7iuf+T9VkjkXZ7sTvlFHxfoGhUD0uCv4sHRhC0eeOa65VSlcQPJqipRcUj0jq5/PF9Lk9Z1LLmc5fsKkFwxDF++u0N6oTNN4TWHaQrVG0EoXRPz78tJU0DV60xG+f9jtRoG7HkMylUsVAeU6eW3dYBKRiMQZJdzzsZ3GXxq0wdFqr/JhLs805iaaZnh6WKvJ57P5nJMMwiYE/FGt1Rd4F4KrFcsqYWZou7i4wNzazwJUXQuSuX4C9XvxlvqxyDzBUsQPba+f2YNR4SvG8lXoVJDIMm X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Kfence on book3s Hash on pseries is anyways broken. It fails to boot due to RMA size limitation. That is because, kfence with Hash uses debug_pagealloc infrastructure. debug_pagealloc allocates linear map for entire dram size instead of just kfence relevant objects. This means for 16TB of DRAM it will require (16TB >> PAGE_SHIFT) which is 256MB which is half of RMA region on P8. crash kernel reserves 256MB and we also need 2048 * 16KB * 3 for emergency stack and some more for paca allocations. That means there is not enough memory for reserving the full linear map in the RMA region, if the DRAM size is too big (>=16TB) (The issue is seen above 8TB with crash kernel 256 MB reservation). Now Kfence does not require linear memory map for entire DRAM. It only needs for kfence objects. So this patch temporarily removes the kfence functionality since debug_pagealloc code needs some refactoring. We will bring in kfence on Hash support in later patches. Signed-off-by: Ritesh Harjani (IBM) --- arch/powerpc/include/asm/kfence.h | 5 +++++ arch/powerpc/mm/book3s64/hash_utils.c | 16 +++++++++++----- 2 files changed, 16 insertions(+), 5 deletions(-) -- 2.46.0 diff --git a/arch/powerpc/include/asm/kfence.h b/arch/powerpc/include/asm/kfence.h index fab124ada1c7..f3a9476a71b3 100644 --- a/arch/powerpc/include/asm/kfence.h +++ b/arch/powerpc/include/asm/kfence.h @@ -10,6 +10,7 @@ #include #include +#include #ifdef CONFIG_PPC64_ELF_ABI_V1 #define ARCH_FUNC_PREFIX "." @@ -25,6 +26,10 @@ static inline void disable_kfence(void) static inline bool arch_kfence_init_pool(void) { +#ifdef CONFIG_PPC64 + if (!radix_enabled()) + return false; +#endif return !kfence_disabled; } #endif diff --git a/arch/powerpc/mm/book3s64/hash_utils.c b/arch/powerpc/mm/book3s64/hash_utils.c index e1eadd03f133..296bb74dbf40 100644 --- a/arch/powerpc/mm/book3s64/hash_utils.c +++ b/arch/powerpc/mm/book3s64/hash_utils.c @@ -431,7 +431,7 @@ int htab_bolt_mapping(unsigned long vstart, unsigned long vend, break; cond_resched(); - if (debug_pagealloc_enabled_or_kfence() && + if (debug_pagealloc_enabled() && (paddr >> PAGE_SHIFT) < linear_map_hash_count) linear_map_hash_slots[paddr >> PAGE_SHIFT] = ret | 0x80; } @@ -814,7 +814,7 @@ static void __init htab_init_page_sizes(void) bool aligned = true; init_hpte_page_sizes(); - if (!debug_pagealloc_enabled_or_kfence()) { + if (!debug_pagealloc_enabled()) { /* * Pick a size for the linear mapping. Currently, we only * support 16M, 1M and 4K which is the default @@ -1134,7 +1134,7 @@ static void __init htab_initialize(void) prot = pgprot_val(PAGE_KERNEL); - if (debug_pagealloc_enabled_or_kfence()) { + if (debug_pagealloc_enabled()) { linear_map_hash_count = memblock_end_of_DRAM() >> PAGE_SHIFT; linear_map_hash_slots = memblock_alloc_try_nid( linear_map_hash_count, 1, MEMBLOCK_LOW_LIMIT, @@ -2120,7 +2120,7 @@ void hpt_do_stress(unsigned long ea, unsigned long hpte_group) } } -#if defined(CONFIG_DEBUG_PAGEALLOC) || defined(CONFIG_KFENCE) +#ifdef CONFIG_DEBUG_PAGEALLOC static DEFINE_RAW_SPINLOCK(linear_map_hash_lock); static void kernel_map_linear_page(unsigned long vaddr, unsigned long lmi) @@ -2194,7 +2194,13 @@ int hash__kernel_map_pages(struct page *page, int numpages, int enable) local_irq_restore(flags); return 0; } -#endif /* CONFIG_DEBUG_PAGEALLOC || CONFIG_KFENCE */ +#else /* CONFIG_DEBUG_PAGEALLOC */ +int hash__kernel_map_pages(struct page *page, int numpages, + int enable) +{ + return 0; +} +#endif /* CONFIG_DEBUG_PAGEALLOC */ void hash__setup_initial_memory_limit(phys_addr_t first_memblock_base, phys_addr_t first_memblock_size) From patchwork Tue Oct 15 01:33:27 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Ritesh Harjani (IBM)" X-Patchwork-Id: 13835650 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2C8A1CFC505 for ; Tue, 15 Oct 2024 01:34:11 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A14C46B0096; Mon, 14 Oct 2024 21:34:10 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 9C2CF6B0098; Mon, 14 Oct 2024 21:34:10 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 83DD36B0099; Mon, 14 Oct 2024 21:34:10 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 622306B0096 for ; Mon, 14 Oct 2024 21:34:10 -0400 (EDT) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 6F50B406B7 for ; Tue, 15 Oct 2024 01:34:04 +0000 (UTC) X-FDA: 82674115608.23.6F13B9B Received: from mail-pg1-f179.google.com (mail-pg1-f179.google.com [209.85.215.179]) by imf10.hostedemail.com (Postfix) with ESMTP id A8FE1C000C for ; Tue, 15 Oct 2024 01:34:04 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=LVy8isbc; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf10.hostedemail.com: domain of ritesh.list@gmail.com designates 209.85.215.179 as permitted sender) smtp.mailfrom=ritesh.list@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1728956016; a=rsa-sha256; cv=none; b=mQGkWnYzQSoHcH1ixxP1XyKgwWQ7mZChKOJs4OvRlwsroqSF746nWS/YfFgI5OT6hCyx6H YsA5nxjNyZg7OtcSrDbTrlzgFNImhx9AKfvt2LO37hdiBYK562YMePJ+usgn2e1SBXXweJ WhySV9GA0LR4HmYfqJcn0AcR7zvt0RI= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=LVy8isbc; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf10.hostedemail.com: domain of ritesh.list@gmail.com designates 209.85.215.179 as permitted sender) smtp.mailfrom=ritesh.list@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1728956016; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=axWsqNzIpvlhLR7DqrnxUdvbHKQsISEkZ4mTeZAqu9w=; b=kzVJvEBURtYPYciIQJOEM5OGQZxkCjWThJ+JPzBEIo2TwC7msckIXVN0XPtgvhmRTbfaH4 DpydfVxjBXSip9EcY1z4ouyi0Na+HhsnWTAg9sEFMFsdtzkhzfbFkg9iKsjlFoNBOFeuCP jzb7XdjMz7inMELVRWNmNfK0CBJzXis= Received: by mail-pg1-f179.google.com with SMTP id 41be03b00d2f7-7ae3d7222d4so4010471a12.3 for ; Mon, 14 Oct 2024 18:34:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1728956046; x=1729560846; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=axWsqNzIpvlhLR7DqrnxUdvbHKQsISEkZ4mTeZAqu9w=; b=LVy8isbcxJ5VtL9xxr48R4pAzvfsUloK4mSr6wqAjurcwIXXn4UxVsZGFzUE4Cb9dU Q918qns6qnClj4nuX+LTaoIlbUxMyDHjvOKP2VFjc6aWsoQtNK3olWZGhRm6dw3CWA/q QskIJ2hPxWdXCsswVYwvgMqILy2yOTYr6ZZ6JJcjDYA4qGXmqD/GhwvANUTd9H/94p8V EgqeuPecjo6TdNJqQoeeZ5UcZ2JHf8raemVFu8HkLO7O8hFrQp5/fX2ReoemWHjJY8yq D0pCtVuBfjOoySBMtfiWWDWsxhFa3jBEM+N6JZdy3qXgJYFK3n0AeFJQDMWjuIXEP8pP S0iw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1728956046; x=1729560846; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=axWsqNzIpvlhLR7DqrnxUdvbHKQsISEkZ4mTeZAqu9w=; b=q0NfaZex75EYHqCnu09nH+gzrdR6Gu8WdohmgeWwUTrLpTVrFT8ziwfZ6lXskj/2Z5 nnSra6IV2jUu2PThkCu9bLWOVFvM+nukyk8xvFd1s2lMcDe41wfcXI7n+Hv5FuoMvAxf 6FlDgNYvu4Pfh0HACQDNxFcVHN9Lgm1lMGFOFP2LARtB5hWNF8XLkPS/3V2Ka+HYW1dr qzhFQqWpPw6A6hiO/PYfgiQiKjVK2nSNCQXsTdxbleY7Ool/XNxICrbBCzOfFs2h0S24 ATK50Ms6P31p9NfzKqjUQUWw/2pLjCbgv/892MLnpKcwzAwpDk1/+TxvCCG+mfIs7nR4 DSMQ== X-Forwarded-Encrypted: i=1; AJvYcCV96uiUacuC88N5JQrvFlKWNmBGby9rhW3mTBtu/pflSMYjl9qwbpJdQI/GwrVNsHFM6d3MQkBuqQ==@kvack.org X-Gm-Message-State: AOJu0Ywo4Pt29usHktrpaij7+M+lQ0U9I0pLeLNgmmH7pQ8QcPRyIquL 1FeGCn6tleSXe/4uzT6vJofHpiwKLRNqJRBPyrcgV2Qj+54nn694647T0g== X-Google-Smtp-Source: AGHT+IG4I/3JRaWO1s0Oc1G3nloW3mFZD9rynaJ4QyFbWI1r3K+RwAKvmgR5I5AwDy8LCEp8stlWhw== X-Received: by 2002:a05:6a20:2d1f:b0:1d8:a899:8899 with SMTP id adf61e73a8af0-1d8bcf561dfmr20114300637.29.1728956046508; Mon, 14 Oct 2024 18:34:06 -0700 (PDT) Received: from dw-tp.. ([171.76.80.151]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-71e77508562sm189349b3a.186.2024.10.14.18.34.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 14 Oct 2024 18:34:05 -0700 (PDT) From: "Ritesh Harjani (IBM)" To: linuxppc-dev@lists.ozlabs.org Cc: kasan-dev@googlegroups.com, linux-mm@kvack.org, Marco Elver , Alexander Potapenko , Heiko Carstens , Michael Ellerman , Nicholas Piggin , Madhavan Srinivasan , Christophe Leroy , Hari Bathini , "Aneesh Kumar K . V" , Donet Tom , Pavithra Prakash , LKML , "Ritesh Harjani (IBM)" Subject: [RFC RESEND v2 04/13] book3s64/hash: Refactor kernel linear map related calls Date: Tue, 15 Oct 2024 07:03:27 +0530 Message-ID: <5a4522af03014d41d98809dd58fab57b187e8b51.1728954719.git.ritesh.list@gmail.com> X-Mailer: git-send-email 2.46.0 In-Reply-To: References: MIME-Version: 1.0 X-Rspam-User: X-Stat-Signature: ntzac3srr4kbei49axhayzmwyppea99n X-Rspamd-Queue-Id: A8FE1C000C X-Rspamd-Server: rspam02 X-HE-Tag: 1728956044-436627 X-HE-Meta: U2FsdGVkX1/uXlmxBxqalZEdDchNbVDcPHnI2Yr+kGbpYWknno3il+AFEVdIduBrTndk3gZGGImJA6oJVFjOVSwpn7ydX0duU2pe+VI4zfjWfUcSVkrZWgCOxAdMpEsYNxG7c2YxbLQyrdkVXvBFnEwY5YAc5xxeWCf5qtmyaYgsc5cXpQk9NjQ0OsTmE1cIulREEFKinbTeCTMPlLQlPK5Tu5MO7Ra+b0iKnIr7dFUvei1guwYKIhswjLsfhrvyxU2Z7UqBmnUDsjovHX85j6pI0AaNPoYV78Avm3seMjGoOsSXkOXzoWe1TTMJA4tcFlJs1Wor94Ls8Oo3BxBhjv5IZ1guYNqkfqMAcid2oKKJwfK2v35RIt6qWMfpXq1SYmRWm9ZyMco5kShT8zNeqe4O9EfYcVf3uDdjCXWNJNYOdQbCqlg4sDgsaZioZkCVvRSTE/Jks1U9JU+oeGI4vIHvg+Ku/7BPNMfo+pRQPbW/dXlayKv+gYgAXl8Jn5WFJvqb0BHdI6gBZ/EsfCxXN7ye9e6CqrypbpBDs2P6zlAaMB3/ZJC8L59awDaAo7mANWVwZcTOAYmJ2d510ER95qRAfwWaVT4PkPFP9GIRodfi/12SbqztksnUb5Wy0jAHJ7S6FbtL5rwTkta49GOd3YEl+s/0rwfSvNFccqXC439jhtjObmzUhR/KM+NDkvavohHyMwKGsUlrqr3zvufovFsJgCjIlYrUcrBN3jU1XvHunu239sghX+bsXfEoXk/gijWTBMjeJ2zaGkGon9irv0k25MB2N+aouhQutYpnp+zJp7d3fxQSXVRO5P+B/wc7TgoWoZzSSWMvtt586wzK2GXM7R0Of69DnJjfHu9s7+uVG5d5thuVOP65LgchAtLwpdw5CRVgmeGvq/wdvaa4ZnYncdrkaZGR2wSRB8n2mYpI3zdjCqtIUoIpxqd7KdPqYrGVoxCm87XhDzF308S 0yX9De+M Rpjyt2FtqVnehZ8oRqhW1ED1vWxNKrT/EcvpRGAf7w+lV205ZRjDwe0dTsu68RCeag0Aulu0w2LCc7k6eN7h42L9PEuuifjG3HbyGhKkpKwL9t3WVrSlYNOFsXGQwWsQmLa6iGKKap7wrrfXt3L3UByPsfgfzUDPS6ezqyxhNH8FTUP4lG8QD22cI0n5tNHQQB4NqBbK1bM8dGbNShAjPmEw7KkAhto7E5iB6ZYVOHTacKVrzdFw2zwWSKAeP4RHCnzcOWopM9WGDKnJKDTxtefmXQo+IfEthoN5D X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: This just brings all linear map related handling at one place instead of having those functions scattered in hash_utils file. Makes it easy for review. No functionality changes in this patch. Signed-off-by: Ritesh Harjani (IBM) --- arch/powerpc/mm/book3s64/hash_utils.c | 164 +++++++++++++------------- 1 file changed, 82 insertions(+), 82 deletions(-) diff --git a/arch/powerpc/mm/book3s64/hash_utils.c b/arch/powerpc/mm/book3s64/hash_utils.c index 296bb74dbf40..82151fff9648 100644 --- a/arch/powerpc/mm/book3s64/hash_utils.c +++ b/arch/powerpc/mm/book3s64/hash_utils.c @@ -273,6 +273,88 @@ void hash__tlbiel_all(unsigned int action) WARN(1, "%s called on pre-POWER7 CPU\n", __func__); } +#ifdef CONFIG_DEBUG_PAGEALLOC +static DEFINE_RAW_SPINLOCK(linear_map_hash_lock); + +static void kernel_map_linear_page(unsigned long vaddr, unsigned long lmi) +{ + unsigned long hash; + unsigned long vsid = get_kernel_vsid(vaddr, mmu_kernel_ssize); + unsigned long vpn = hpt_vpn(vaddr, vsid, mmu_kernel_ssize); + unsigned long mode = htab_convert_pte_flags(pgprot_val(PAGE_KERNEL), HPTE_USE_KERNEL_KEY); + long ret; + + hash = hpt_hash(vpn, PAGE_SHIFT, mmu_kernel_ssize); + + /* Don't create HPTE entries for bad address */ + if (!vsid) + return; + + if (linear_map_hash_slots[lmi] & 0x80) + return; + + ret = hpte_insert_repeating(hash, vpn, __pa(vaddr), mode, + HPTE_V_BOLTED, + mmu_linear_psize, mmu_kernel_ssize); + + BUG_ON (ret < 0); + raw_spin_lock(&linear_map_hash_lock); + BUG_ON(linear_map_hash_slots[lmi] & 0x80); + linear_map_hash_slots[lmi] = ret | 0x80; + raw_spin_unlock(&linear_map_hash_lock); +} + +static void kernel_unmap_linear_page(unsigned long vaddr, unsigned long lmi) +{ + unsigned long hash, hidx, slot; + unsigned long vsid = get_kernel_vsid(vaddr, mmu_kernel_ssize); + unsigned long vpn = hpt_vpn(vaddr, vsid, mmu_kernel_ssize); + + hash = hpt_hash(vpn, PAGE_SHIFT, mmu_kernel_ssize); + raw_spin_lock(&linear_map_hash_lock); + if (!(linear_map_hash_slots[lmi] & 0x80)) { + raw_spin_unlock(&linear_map_hash_lock); + return; + } + hidx = linear_map_hash_slots[lmi] & 0x7f; + linear_map_hash_slots[lmi] = 0; + raw_spin_unlock(&linear_map_hash_lock); + if (hidx & _PTEIDX_SECONDARY) + hash = ~hash; + slot = (hash & htab_hash_mask) * HPTES_PER_GROUP; + slot += hidx & _PTEIDX_GROUP_IX; + mmu_hash_ops.hpte_invalidate(slot, vpn, mmu_linear_psize, + mmu_linear_psize, + mmu_kernel_ssize, 0); +} + +int hash__kernel_map_pages(struct page *page, int numpages, int enable) +{ + unsigned long flags, vaddr, lmi; + int i; + + local_irq_save(flags); + for (i = 0; i < numpages; i++, page++) { + vaddr = (unsigned long)page_address(page); + lmi = __pa(vaddr) >> PAGE_SHIFT; + if (lmi >= linear_map_hash_count) + continue; + if (enable) + kernel_map_linear_page(vaddr, lmi); + else + kernel_unmap_linear_page(vaddr, lmi); + } + local_irq_restore(flags); + return 0; +} +#else /* CONFIG_DEBUG_PAGEALLOC */ +int hash__kernel_map_pages(struct page *page, int numpages, + int enable) +{ + return 0; +} +#endif /* CONFIG_DEBUG_PAGEALLOC */ + /* * 'R' and 'C' update notes: * - Under pHyp or KVM, the updatepp path will not set C, thus it *will* @@ -2120,88 +2202,6 @@ void hpt_do_stress(unsigned long ea, unsigned long hpte_group) } } -#ifdef CONFIG_DEBUG_PAGEALLOC -static DEFINE_RAW_SPINLOCK(linear_map_hash_lock); - -static void kernel_map_linear_page(unsigned long vaddr, unsigned long lmi) -{ - unsigned long hash; - unsigned long vsid = get_kernel_vsid(vaddr, mmu_kernel_ssize); - unsigned long vpn = hpt_vpn(vaddr, vsid, mmu_kernel_ssize); - unsigned long mode = htab_convert_pte_flags(pgprot_val(PAGE_KERNEL), HPTE_USE_KERNEL_KEY); - long ret; - - hash = hpt_hash(vpn, PAGE_SHIFT, mmu_kernel_ssize); - - /* Don't create HPTE entries for bad address */ - if (!vsid) - return; - - if (linear_map_hash_slots[lmi] & 0x80) - return; - - ret = hpte_insert_repeating(hash, vpn, __pa(vaddr), mode, - HPTE_V_BOLTED, - mmu_linear_psize, mmu_kernel_ssize); - - BUG_ON (ret < 0); - raw_spin_lock(&linear_map_hash_lock); - BUG_ON(linear_map_hash_slots[lmi] & 0x80); - linear_map_hash_slots[lmi] = ret | 0x80; - raw_spin_unlock(&linear_map_hash_lock); -} - -static void kernel_unmap_linear_page(unsigned long vaddr, unsigned long lmi) -{ - unsigned long hash, hidx, slot; - unsigned long vsid = get_kernel_vsid(vaddr, mmu_kernel_ssize); - unsigned long vpn = hpt_vpn(vaddr, vsid, mmu_kernel_ssize); - - hash = hpt_hash(vpn, PAGE_SHIFT, mmu_kernel_ssize); - raw_spin_lock(&linear_map_hash_lock); - if (!(linear_map_hash_slots[lmi] & 0x80)) { - raw_spin_unlock(&linear_map_hash_lock); - return; - } - hidx = linear_map_hash_slots[lmi] & 0x7f; - linear_map_hash_slots[lmi] = 0; - raw_spin_unlock(&linear_map_hash_lock); - if (hidx & _PTEIDX_SECONDARY) - hash = ~hash; - slot = (hash & htab_hash_mask) * HPTES_PER_GROUP; - slot += hidx & _PTEIDX_GROUP_IX; - mmu_hash_ops.hpte_invalidate(slot, vpn, mmu_linear_psize, - mmu_linear_psize, - mmu_kernel_ssize, 0); -} - -int hash__kernel_map_pages(struct page *page, int numpages, int enable) -{ - unsigned long flags, vaddr, lmi; - int i; - - local_irq_save(flags); - for (i = 0; i < numpages; i++, page++) { - vaddr = (unsigned long)page_address(page); - lmi = __pa(vaddr) >> PAGE_SHIFT; - if (lmi >= linear_map_hash_count) - continue; - if (enable) - kernel_map_linear_page(vaddr, lmi); - else - kernel_unmap_linear_page(vaddr, lmi); - } - local_irq_restore(flags); - return 0; -} -#else /* CONFIG_DEBUG_PAGEALLOC */ -int hash__kernel_map_pages(struct page *page, int numpages, - int enable) -{ - return 0; -} -#endif /* CONFIG_DEBUG_PAGEALLOC */ - void hash__setup_initial_memory_limit(phys_addr_t first_memblock_base, phys_addr_t first_memblock_size) { From patchwork Tue Oct 15 01:33:28 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Ritesh Harjani (IBM)" X-Patchwork-Id: 13835651 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 89473CFC501 for ; Tue, 15 Oct 2024 01:34:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 189226B0099; Mon, 14 Oct 2024 21:34:15 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 138E26B009A; Mon, 14 Oct 2024 21:34:15 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EF3F76B009B; Mon, 14 Oct 2024 21:34:14 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id D13A76B0099 for ; Mon, 14 Oct 2024 21:34:14 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 161251405E4 for ; Tue, 15 Oct 2024 01:34:06 +0000 (UTC) X-FDA: 82674115818.26.68889D5 Received: from mail-pg1-f178.google.com (mail-pg1-f178.google.com [209.85.215.178]) by imf15.hostedemail.com (Postfix) with ESMTP id E02E4A0002 for ; Tue, 15 Oct 2024 01:34:05 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=a11lXroS; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf15.hostedemail.com: domain of ritesh.list@gmail.com designates 209.85.215.178 as permitted sender) smtp.mailfrom=ritesh.list@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1728955936; a=rsa-sha256; cv=none; b=nUb4Qehyc6UFbpaiSHirW84lVJUH0QHrHQHdkDrapTGue+QPXwUiOLAt3u0cBp4fOics/K aQVroYWX+ZUe2kUmkO60v7aO4/SSwB8ck6zost6JsjrVaBeFFWUjyC5ltUhwLDDRIYyRhS qyi3bjFdfGQsT6B2onxl1Zc9zn41C9A= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=a11lXroS; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf15.hostedemail.com: domain of ritesh.list@gmail.com designates 209.85.215.178 as permitted sender) smtp.mailfrom=ritesh.list@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1728955936; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=U+q0qzhvgy5Htf+jNoj0jpwh62QEw37SjQucvD3DcJc=; b=mWopg5rQK/rtzbDIgMBsU4ESwHCabSL5jeLmz0zcLkiGru0NRWtVQFO2DoQ6Py/wbEZqqE 9LU9W7b1roMAso6nbjB8lsRr6bEM0SpjLkynHbvysfSTn6mqBQiKWTeevx0LO3JDVhSrFm ZxzxsfoiUijCzk7Izfd9XpnI4T4c7ZY= Received: by mail-pg1-f178.google.com with SMTP id 41be03b00d2f7-7ea80863f12so678343a12.1 for ; Mon, 14 Oct 2024 18:34:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1728956051; x=1729560851; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=U+q0qzhvgy5Htf+jNoj0jpwh62QEw37SjQucvD3DcJc=; b=a11lXroSvi6mTF/QpmmymGVb+3gCRRHKlwaQmCmFfu3weugzJM2LIcJ3+j3ijyV21d 7ZulGfW1brvpcJAY/59CSClKtY4Kt7I38A/Mt1ABuD9yj69uGr/a2YFWL89aiRxtqF3P LQCxH0VD78qKEHKDCazLtkNl59UqcCUtd8EVsRWjk13dWzJNl+Vu4SWfyOXTEwFmzzj8 LREgqJ4nPNuOMHFF7RTk3aGGbNCoR7W3DmQVJB7keGPV7ggZU/600dt3CpPK1kpKdBCo SkQeu0p8poPKoWT8Qz/OwTQmvw3TdAeCruaGoh9myj0fhaB00UBwI5lcKyHZ0yzZqPEq FKYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1728956051; x=1729560851; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=U+q0qzhvgy5Htf+jNoj0jpwh62QEw37SjQucvD3DcJc=; b=IMrcJ0wqAe6qz3KhuIVyiAr+Fa+6Mzfgb31C2a3m5fisLPmS1R0JUMH+yEfJvlItsJ e1gJUKZB8fcLUmR5dyQ2iscBlpFyAlr+LdX3KXLO79do8ni7eQ5DyJ6iHRaxoj0zUoSs ee5bR+NF12RVyyOXZSYyD7H4zZnmvM4ttbEEYf08ErMu24pxYJndYqK/kt/SHevSvPXA z5jQUabs0z0SrZSRaaTBJUBEmMneyXXU2hzgrJI0OxJU+YGF7u3KMDA1WxmaPvUEUaBX ZJ7Sp7ee9vJS7eTmHTe2oILXWPESZNi1QfMtp7ol6btzHmQ1kL8B08RZESAIuOu2bGL4 OCtg== X-Forwarded-Encrypted: i=1; AJvYcCUCPYB8YVGsMZvN+AN8L8vlSd/gLeKj3+/92MCJriwMO0RFlZ1G4O+ENiq5ottt71F+7/0I8HGjGw==@kvack.org X-Gm-Message-State: AOJu0YyaAkotZU8/+gj2B+78AEs9o6jf+UCSkN35AJWxvv48RLHnnYFj q/NWYusVk9D6ttawitp/x3FxxEW3GZjxZiJes9nwWHDQXjhUfIKmLwAYYQ== X-Google-Smtp-Source: AGHT+IEG9dZAng0ihOIRx501nnz2kIcPdMnvgADTGVh5vNpZ9v3ZsQlVB5geCgNicOYeTFxr8a+CGw== X-Received: by 2002:a05:6a21:710a:b0:1cf:9a86:6cb7 with SMTP id adf61e73a8af0-1d8bcf2c37bmr19861897637.20.1728956051333; Mon, 14 Oct 2024 18:34:11 -0700 (PDT) Received: from dw-tp.. ([171.76.80.151]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-71e77508562sm189349b3a.186.2024.10.14.18.34.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 14 Oct 2024 18:34:10 -0700 (PDT) From: "Ritesh Harjani (IBM)" To: linuxppc-dev@lists.ozlabs.org Cc: kasan-dev@googlegroups.com, linux-mm@kvack.org, Marco Elver , Alexander Potapenko , Heiko Carstens , Michael Ellerman , Nicholas Piggin , Madhavan Srinivasan , Christophe Leroy , Hari Bathini , "Aneesh Kumar K . V" , Donet Tom , Pavithra Prakash , LKML , "Ritesh Harjani (IBM)" Subject: [RFC RESEND v2 05/13] book3s64/hash: Add hash_debug_pagealloc_add_slot() function Date: Tue, 15 Oct 2024 07:03:28 +0530 Message-ID: <7fc9a78423fceda0bfd07f80583a7c9c0938e339.1728954719.git.ritesh.list@gmail.com> X-Mailer: git-send-email 2.46.0 In-Reply-To: References: MIME-Version: 1.0 X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: E02E4A0002 X-Stat-Signature: x475h1heuwocsmjdu1538to3jqwbqiqc X-Rspam-User: X-HE-Tag: 1728956045-762464 X-HE-Meta: U2FsdGVkX196PMquxsoedeZX4nyp/MCwXywoXI4fqzhMAQGhIZ6vRwwY1VgyF5ip/rfnhBoFwfD9b6xDrCrEe7vcm19r/YMvAM9GDTXLv0M7bAxZ8g8Ua1H8ePPVfejDCvHhQE6ElBAfjn4HbpJ8UDtid4slMyCEl7reTcgedgZAxlp0hMFSb0gos00r5MS8Z0V2r1SE5edMIJ6F96pvREe3ACFcTl+jRmwo6s7IS1RDzGzPvI35N6JvAtf0EKP93+ZnUDxMZH8Mv4LsRFu4Vl7/utkIfRWh90gzTa6yu+SXaNecHjF8SY92hK23U+nqkN4t6JWJ5nqew/k9c5vMNyZHZHOzJQPsXkidEMiuwalxKSU1SPrCdBgMGUEERCmNvA5jBfSEw4sKWxu7OcR+dyy2XT1RLljmxOdldkhX0Msee/hzQ8vxIRtCIUG4baLTz76R0c0QCE4f1hoVqUGLK3hIDSfehuFMPkzoUVaL7kw+63KxST3KPnXWur8s+SwiV0S4uw4eXX6OC5lC31p4Y0Ob2uSHBem1B66PGQLGkaZj+IrDI+YlQXwSQ9+XZebxP0i37G1h/6bgDmmhR1IWdeapHOedPxGZSimuiIloAXgL2bNbc7AqdkwBkU2umeYNlWkklk6893fGv4yqqusZRV+8tIeLToswXEn4hg/dRCCVn1mwXFINRzGBXLnYQo7rAfeRNCNuudTPM7dmXRw9j8NIDziCDqBePV63zPh3xLUVKMTYxzyHF4TmwaY0gYQMtoUpN8hyjo00eg0NMqOBgt4oggqsWe2XJfIXhPTfIAxibbI3cLkqzRn6iew+8Ay2p6YmzXuuXLGgXhgy0ZU1mPaYoFc7Y4LMbPAGc4lTCDuGwxlPyNZZz3eWanKOwveuUllxveA+BE5NYU5HBgWlFLsa4V80WHuao6gMPoTsVtMausghSYJonaKBxHlxWnmNMZ71fAXozvoJyilkutF YrTBZDp9 GE+5Enmi5+ehWD1MFwDr4SahWFrcR3wRA7Ej0x+X/BWTnMb9qAEgOrJmCCVI+27DP44/1F3YLiHSHK7p9mihoxnpf63T23esAgdwWfkx2qQcqdK7kWhVrZWcHEg37BW/Wk10P1yQJAAgCTJr4AeGo5sKhoTIZkHnA06bqqMyekOk8aliA0NX4zwVqa9mSlDtRduCj1TqC13JStCQTIUwxiBINPnyDep4xBKQP8IiXOiDsejAruPEjBSjbMbvRTKAUJkV+u3CZ8pOkCiCa2p7Ry4KMkkyuVnBhDYy3BRWnxxNPmSCin1XHyp3S45ANDyzT7vUhbb5Wy6aFH5vNZ+xbwiBZTQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: This adds hash_debug_pagealloc_add_slot() function instead of open coding that in htab_bolt_mapping(). This is required since we will be separating kfence functionality to not depend upon debug_pagealloc. No functionality change in this patch. Signed-off-by: Ritesh Harjani (IBM) --- arch/powerpc/mm/book3s64/hash_utils.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/arch/powerpc/mm/book3s64/hash_utils.c b/arch/powerpc/mm/book3s64/hash_utils.c index 82151fff9648..6e3860224351 100644 --- a/arch/powerpc/mm/book3s64/hash_utils.c +++ b/arch/powerpc/mm/book3s64/hash_utils.c @@ -328,6 +328,14 @@ static void kernel_unmap_linear_page(unsigned long vaddr, unsigned long lmi) mmu_kernel_ssize, 0); } +static inline void hash_debug_pagealloc_add_slot(phys_addr_t paddr, int slot) +{ + if (!debug_pagealloc_enabled()) + return; + if ((paddr >> PAGE_SHIFT) < linear_map_hash_count) + linear_map_hash_slots[paddr >> PAGE_SHIFT] = slot | 0x80; +} + int hash__kernel_map_pages(struct page *page, int numpages, int enable) { unsigned long flags, vaddr, lmi; @@ -353,6 +361,7 @@ int hash__kernel_map_pages(struct page *page, int numpages, { return 0; } +static inline void hash_debug_pagealloc_add_slot(phys_addr_t paddr, int slot) {} #endif /* CONFIG_DEBUG_PAGEALLOC */ /* @@ -513,9 +522,7 @@ int htab_bolt_mapping(unsigned long vstart, unsigned long vend, break; cond_resched(); - if (debug_pagealloc_enabled() && - (paddr >> PAGE_SHIFT) < linear_map_hash_count) - linear_map_hash_slots[paddr >> PAGE_SHIFT] = ret | 0x80; + hash_debug_pagealloc_add_slot(paddr, ret); } return ret < 0 ? ret : 0; } From patchwork Tue Oct 15 01:33:29 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Ritesh Harjani (IBM)" X-Patchwork-Id: 13835652 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4DC5DCFC505 for ; Tue, 15 Oct 2024 01:34:20 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D6FFE6B009B; Mon, 14 Oct 2024 21:34:19 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D1F166B009C; Mon, 14 Oct 2024 21:34:19 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B9A226B009D; Mon, 14 Oct 2024 21:34:19 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 985736B009B for ; Mon, 14 Oct 2024 21:34:19 -0400 (EDT) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id DE94DAAFC0 for ; Tue, 15 Oct 2024 01:34:02 +0000 (UTC) X-FDA: 82674116070.15.20F7DAF Received: from mail-pf1-f170.google.com (mail-pf1-f170.google.com [209.85.210.170]) by imf01.hostedemail.com (Postfix) with ESMTP id 9496E4000E for ; Tue, 15 Oct 2024 01:34:11 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=jc4bgPDR; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf01.hostedemail.com: domain of ritesh.list@gmail.com designates 209.85.210.170 as permitted sender) smtp.mailfrom=ritesh.list@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1728955941; a=rsa-sha256; cv=none; b=zxLqFkginHZ4qhwBmcH7rBHBvOqpHl2Go1r+/U4FfDp7aarlxLzjtCG0R9VtI3Jxcyuh9P dqiALv75cRkCDqfa2j+dmgtoUHqtczNcIAKbhA3gW92XPLTm92z/tNsDZVZeFMJuG0VksQ KW5Py10i9z5WjG55btzSkB/o1cr8iog= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=jc4bgPDR; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf01.hostedemail.com: domain of ritesh.list@gmail.com designates 209.85.210.170 as permitted sender) smtp.mailfrom=ritesh.list@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1728955941; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=/MHsxmP9bN1bxx4msR28qZ2la9zK0wSY8EDrce3K+zQ=; b=H8982ULZZfAWdx/QqyCiq5jywK5zFRA7JdgVkXAw29YSQ4ToFeKxdxFoJeOkrBDQl6RNaJ STq3dfMeApaGDs7wwR55mql/p/8RXTO5H24RBgpAEUuf8hx020uggUk8EHT2lv3DpY6XXp GuI7uP9VWtETJvylHDc+lYxrG1Z8mkI= Received: by mail-pf1-f170.google.com with SMTP id d2e1a72fcca58-71e52582cf8so1557378b3a.2 for ; Mon, 14 Oct 2024 18:34:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1728956056; x=1729560856; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=/MHsxmP9bN1bxx4msR28qZ2la9zK0wSY8EDrce3K+zQ=; b=jc4bgPDRiV5P8bsOmrjq7YkSJIVkztB2/wj7Vxij0BuB4ua/bYvFzosY5n52yWPDvn BGQSBdmrllz8Kq73WnxwDyQyuTdWVMiGnhVokLacqXHMbrloY6kk1iHXu6urNE1uDaVw ZMm48jwolOl48XCj/tw/5AvTf8indtp1KjurDekB5gRJE3WtvtGu6x6+mDo6eWt4AHFI 7cM9iS9PiYNNHPh+ieqwgAy+Pn1G+NuLwkpshxMNGQsy0z07TTZl0sxsIIlgF3HPRD9Q 1NP7zdbJOUGmmOwf9R9YwuBH4bpp7AeN6Q0GeQxOJAPHQElBccIaKjJEod/2UxB1lrjU uHug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1728956056; x=1729560856; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/MHsxmP9bN1bxx4msR28qZ2la9zK0wSY8EDrce3K+zQ=; b=JfGKDP5JOW+FJYHwoH1WRaYwxNB0e65jrt8aF/ZBlFWMH6ZbDRnm80rk4/SdW+Sm2s NXH6iJjWBfE7bCx03R/Ckzp2jbP00rANXQ17vAF3w2cjG1lN/Vk/uDK8xmgR1bht6B2W smVS5c5Ajw+Pr/rYsHBVfmDvT09m24wHJngT7GkPRvtEAikGSB8CHoDDXnEE/SQeYMTr KhM6z2amIlhCKBh+oYAjwMAXz2vfVF0t4Ab9iG/4Vt+xpe/eFjMTCe9zMQTEkm2ZRJ1N lRMgbIENWAFjofWFK0t1+CtBXwP0goPmCy3aO179Y0By7h3yfz/tsbnldWPTpUQtA5fP BaQQ== X-Forwarded-Encrypted: i=1; AJvYcCXj93Z9ky5UrICIz4ZGcvf9Lgndda3LjGILjqJjenHXXTExmDm1XObTD2whwy8i70NbUEPiRs8eXQ==@kvack.org X-Gm-Message-State: AOJu0YwOUswhDhEfWm6Ux6TIe1JrCIlj+ZPv6ad6wjhu7NiMUZc73xOd 297YpFErEuO6UrXoFrxgIXBq9duUfXBUMSSBTRyCTfmnEKD5x2WC X-Google-Smtp-Source: AGHT+IEaRbtvLZbSifnrZqi1CARugZbYpE5zHqXON9KkesVGZbR8E08Sd3QxolQeAT6rqf3d5xyTkQ== X-Received: by 2002:a05:6a20:9f47:b0:1d0:7df2:cf39 with SMTP id adf61e73a8af0-1d8c9577ca1mr13971673637.7.1728956056191; Mon, 14 Oct 2024 18:34:16 -0700 (PDT) Received: from dw-tp.. ([171.76.80.151]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-71e77508562sm189349b3a.186.2024.10.14.18.34.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 14 Oct 2024 18:34:15 -0700 (PDT) From: "Ritesh Harjani (IBM)" To: linuxppc-dev@lists.ozlabs.org Cc: kasan-dev@googlegroups.com, linux-mm@kvack.org, Marco Elver , Alexander Potapenko , Heiko Carstens , Michael Ellerman , Nicholas Piggin , Madhavan Srinivasan , Christophe Leroy , Hari Bathini , "Aneesh Kumar K . V" , Donet Tom , Pavithra Prakash , LKML , "Ritesh Harjani (IBM)" Subject: [RFC RESEND v2 06/13] book3s64/hash: Add hash_debug_pagealloc_alloc_slots() function Date: Tue, 15 Oct 2024 07:03:29 +0530 Message-ID: <4245e8392bdcb0ea168b9700d356f75575511536.1728954719.git.ritesh.list@gmail.com> X-Mailer: git-send-email 2.46.0 In-Reply-To: References: MIME-Version: 1.0 X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 9496E4000E X-Stat-Signature: m7zmqyjy4ug7zi1s8t6z4m7dqi71k6xh X-Rspam-User: X-HE-Tag: 1728956051-489131 X-HE-Meta: U2FsdGVkX18m1QaHglHPXezquK+YD6mj0cIbQ+kNsKaHsZsW3N8Ys4eCtSe92MxfOD+htRHInFpTAnl021g/WsOtpzFZM5UUDq9uKr0BukAUmKv59Jd61x7whRra+VZSekz6vKFGBj6ub3hpI96t5PThOqlqZ96dY8jLwUnXid8/JleMRMZjCbv0skaHML9WtF+HXmiED+hatH0d4W/8Mmpzw2OBYQZTV5wqRD/41iDouUN5wa3fv1nppORYFdiTEoscUQOwzybl/njCAYo6B6Ti5N1bvhqZH/5q5xUNOngCMe1Q8iWkiuE53mn1GnfYK26GHI7AlAd8x5i5PqMadoPVzu1W5jbXV+4vMeFNIpAs7JmzxPRAujt6vFooV5w0NRiC4No9kQJJr/q6QH1YtdCUL2YaPMMzyzf6JHOMLU+V4+cWzCif4cUiESElXnqLCt88x2e5Oe2qVMvhE5/oSVQMR4bDK7n2Vwai2fpZpFQAzoNbeWaaWrJmTs/3y8RMDamB+F+7A1PQKzxzyym0SXBShpa7rIW6P+uhDrVrMRwLtqcSBVD+ig7CtkwWzYnD3Bqnxddy9JcOXk4GK3Q2n4M2PVLwXSyPPuhd4ZKa9aaFtgDb/dMcsoKMIuT0TA0n41xjKXzE079F75AzUBdbx6bMHrrRJ6rcckEZ6EIbn1+MeudwoM44UL7cFXU11hp9V/AJsu9eX9DApN8YItPyKePnIcJMqCqDUwPz7M1ZB+CsOWKrpk90IRbR9hxGXWRkZy4fEyBZdauagukJSya9taj5fwrjsLwGCHCANqOoBhZXQgx2QrYdV2Nsyxs4RGa87ORrEacJHmLz/q2s8lY7ZhFx7SlGBA28gz6+pNaz3yE8qhA/2LG8Pp90eWUT+/K6pqzlsKRWsLgM5Sihjc/M6mk1J421Lv6cBJJQ7k2r+AppH31OFIV3YnnMcgJTjddPkkmbgecz4R4a0o1SCt7 0LWySV4z R+XRw7bgC+KTE6KDEhmE0pnxNSz0XxLo4HBTl0m3NszbuZDaDDK2Fp4dMx+lI9sR4wA1OPiFLM4+6qwzIrB8oFoi5npjXpsthD2SFOHtEnQZsf0vj2Z+ybwz3CGNEHeAzzP0lleTTxrJ6FFI2NEUjmPe1bk1Zbydh9Qnjyg74aVmZ/kYpkmy2hy/FUt+9oM63rmO9oGwhDEkQsgpAd7j+xSs1Q5qeS7Bjo56YPXeA5EhikOztkSmQyit9Xuf+CQc8stwtMl7Dsqb/Jc60LSKdE7xWrX5cYbiAZ6N4VZWT9myq/BUtZ2hAJiuuE+0CFAjvnYc130aTiiePmjRyOs7kxOggaQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: This adds hash_debug_pagealloc_alloc_slots() function instead of open coding that in htab_initialize(). This is required since we will be separating the kfence functionality to not depend upon debug_pagealloc. Now that everything required for debug_pagealloc is under a #ifdef config. Bring in linear_map_hash_slots and linear_map_hash_count variables under the same config too. Signed-off-by: Ritesh Harjani (IBM) --- arch/powerpc/mm/book3s64/hash_utils.c | 29 ++++++++++++++++----------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/arch/powerpc/mm/book3s64/hash_utils.c b/arch/powerpc/mm/book3s64/hash_utils.c index 6e3860224351..030c120d1399 100644 --- a/arch/powerpc/mm/book3s64/hash_utils.c +++ b/arch/powerpc/mm/book3s64/hash_utils.c @@ -123,8 +123,6 @@ EXPORT_SYMBOL_GPL(mmu_slb_size); #ifdef CONFIG_PPC_64K_PAGES int mmu_ci_restrictions; #endif -static u8 *linear_map_hash_slots; -static unsigned long linear_map_hash_count; struct mmu_hash_ops mmu_hash_ops __ro_after_init; EXPORT_SYMBOL(mmu_hash_ops); @@ -274,6 +272,8 @@ void hash__tlbiel_all(unsigned int action) } #ifdef CONFIG_DEBUG_PAGEALLOC +static u8 *linear_map_hash_slots; +static unsigned long linear_map_hash_count; static DEFINE_RAW_SPINLOCK(linear_map_hash_lock); static void kernel_map_linear_page(unsigned long vaddr, unsigned long lmi) @@ -328,6 +328,19 @@ static void kernel_unmap_linear_page(unsigned long vaddr, unsigned long lmi) mmu_kernel_ssize, 0); } +static inline void hash_debug_pagealloc_alloc_slots(void) +{ + if (!debug_pagealloc_enabled()) + return; + linear_map_hash_count = memblock_end_of_DRAM() >> PAGE_SHIFT; + linear_map_hash_slots = memblock_alloc_try_nid( + linear_map_hash_count, 1, MEMBLOCK_LOW_LIMIT, + ppc64_rma_size, NUMA_NO_NODE); + if (!linear_map_hash_slots) + panic("%s: Failed to allocate %lu bytes max_addr=%pa\n", + __func__, linear_map_hash_count, &ppc64_rma_size); +} + static inline void hash_debug_pagealloc_add_slot(phys_addr_t paddr, int slot) { if (!debug_pagealloc_enabled()) @@ -361,6 +374,7 @@ int hash__kernel_map_pages(struct page *page, int numpages, { return 0; } +static inline void hash_debug_pagealloc_alloc_slots(void) {} static inline void hash_debug_pagealloc_add_slot(phys_addr_t paddr, int slot) {} #endif /* CONFIG_DEBUG_PAGEALLOC */ @@ -1223,16 +1237,7 @@ static void __init htab_initialize(void) prot = pgprot_val(PAGE_KERNEL); - if (debug_pagealloc_enabled()) { - linear_map_hash_count = memblock_end_of_DRAM() >> PAGE_SHIFT; - linear_map_hash_slots = memblock_alloc_try_nid( - linear_map_hash_count, 1, MEMBLOCK_LOW_LIMIT, - ppc64_rma_size, NUMA_NO_NODE); - if (!linear_map_hash_slots) - panic("%s: Failed to allocate %lu bytes max_addr=%pa\n", - __func__, linear_map_hash_count, &ppc64_rma_size); - } - + hash_debug_pagealloc_alloc_slots(); /* create bolted the linear mapping in the hash table */ for_each_mem_range(i, &base, &end) { size = end - base; From patchwork Tue Oct 15 01:33:30 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Ritesh Harjani (IBM)" X-Patchwork-Id: 13835653 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 176F4CFC501 for ; Tue, 15 Oct 2024 01:34:25 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A142E6B009D; Mon, 14 Oct 2024 21:34:24 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 9CA346B009E; Mon, 14 Oct 2024 21:34:24 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 816B76B009F; Mon, 14 Oct 2024 21:34:24 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 61B196B009D for ; Mon, 14 Oct 2024 21:34:24 -0400 (EDT) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 93592120402 for ; Tue, 15 Oct 2024 01:34:16 +0000 (UTC) X-FDA: 82674116238.23.8E90E54 Received: from mail-pf1-f172.google.com (mail-pf1-f172.google.com [209.85.210.172]) by imf04.hostedemail.com (Postfix) with ESMTP id 4B16F40003 for ; Tue, 15 Oct 2024 01:34:13 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=C27JJMw+; spf=pass (imf04.hostedemail.com: domain of ritesh.list@gmail.com designates 209.85.210.172 as permitted sender) smtp.mailfrom=ritesh.list@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1728955919; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=oTnklaF1aF0bTWeWldi91Sj9bwNgHQZw6gVAVQdUYd0=; b=JYB3B4h1AAeiUaB/hPedWo0pXbekIzwudXIxQEUP7F6yAlr3qkNKBNiaHTgxBj7gkwofhM rYI/DTMtVTEZtxbwbXQwMTHuqNFEZGvkfRtMJktxS8sQ/ImHo2fiyA2O87/2MEjcOexSPI pb/a2LfLtAL8g0cennaM33Vx0E9zOoI= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1728955919; a=rsa-sha256; cv=none; b=vQfOQsox9Xh27ej0InYHnsvoO6PqquVs49W0ffHBa8HZXwG8u5C+UoI/uRcJI2L0zkg1Ms lljMNo6z33H9OXb+BVrE9KCq6xEgmg51hmirqQ4gyUauyUj9yIbe/5lCz9taivT6c5K0Qm PSwYkXVUMCvLccLuWKshLnDy/mr8860= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=C27JJMw+; spf=pass (imf04.hostedemail.com: domain of ritesh.list@gmail.com designates 209.85.210.172 as permitted sender) smtp.mailfrom=ritesh.list@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-pf1-f172.google.com with SMTP id d2e1a72fcca58-71e625b00bcso1366310b3a.3 for ; Mon, 14 Oct 2024 18:34:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1728956061; x=1729560861; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=oTnklaF1aF0bTWeWldi91Sj9bwNgHQZw6gVAVQdUYd0=; b=C27JJMw+q6oHdzyeZbNKqwG5WmNN2Bl2iuey7qYLZD7aZU21azXief2QQ96w8uWjp/ 8SUKArVh8NCQpyDMAKTR9SaFOdexlDAcjRQwqR1Jd+2LhFbCKehn/2sIUxDrSQkb/mZu 9oYcqHoPjNbbxxNYz4Do1pd5E7nQ3v18KarO4JCR0LZYQClePLq/jsY0i5O4oGesnyMc yb2c1YluCPfA5rZ7KR5EIHbvwSG40u/5751I118DtCK+U2cdoR/k+1ZPp5gOCsZs/gYK 4pat53bNxJ84qQVqM12yDyEf+bhgZqMhi/7D1UWvjs/H3qaCkS/1G1sV62Hwd4I4mCwA HrAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1728956061; x=1729560861; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=oTnklaF1aF0bTWeWldi91Sj9bwNgHQZw6gVAVQdUYd0=; b=TTVR2AGtoQqhEk3O0p8hKq3zpPp/+PvazkyB1bFPxTg6DNQiE/8OITZezPVdL4vdqI DQTL6M8me6Gj68eYxt5j8xydcAYwwrfcn1SJo6FOt7DVtHS9cMuop75uyst7RU4OOcGD yhf81bJfWdMyMI8KUE/UxbrDvHKa9vAKEbFYR76bV4a55dqr8wN8k3YHNtGV60DCsQtW nRxWFIYqEc3az26pegB0nUqEd3tmo5gYP2CZnnuxoUfVAWvLelVdGvhGQ1pSzYS88qc5 Z5QVHgZ/FOQ+tQ1YjWXTljarmxMY/8ewZaj8BU1M+RlqRKLtHkSB0uu3ujbG7X9TwPNL PqCw== X-Forwarded-Encrypted: i=1; AJvYcCXsHuxqafNGIOor7abq2eB+L51b/oP2eZA1gDeDPjEuMq4TNtUjy+UZO6jLqpZRG4oPKXB0yD1kaA==@kvack.org X-Gm-Message-State: AOJu0Yxz92q1gHF1cpfuaxm1mikEyFB2Gdho5M7Xvpu7vLznA0Vl/qZF 5wzHm3IphMs4idVsxY0mu0uafAzWZwVqcNqaG20vy+OZueYHAnuBg93Ipg== X-Google-Smtp-Source: AGHT+IFT6UGlq+wYgtgPhE6bzO8Rllrurc9EHvyW/SZWzz7xpV6AjzAWDpsP/H6dyEXrivEMXbEKOw== X-Received: by 2002:a05:6a20:cfa4:b0:1d2:e92f:2f48 with SMTP id adf61e73a8af0-1d8bcfa7ef1mr19096796637.40.1728956061028; Mon, 14 Oct 2024 18:34:21 -0700 (PDT) Received: from dw-tp.. ([171.76.80.151]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-71e77508562sm189349b3a.186.2024.10.14.18.34.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 14 Oct 2024 18:34:20 -0700 (PDT) From: "Ritesh Harjani (IBM)" To: linuxppc-dev@lists.ozlabs.org Cc: kasan-dev@googlegroups.com, linux-mm@kvack.org, Marco Elver , Alexander Potapenko , Heiko Carstens , Michael Ellerman , Nicholas Piggin , Madhavan Srinivasan , Christophe Leroy , Hari Bathini , "Aneesh Kumar K . V" , Donet Tom , Pavithra Prakash , LKML , "Ritesh Harjani (IBM)" Subject: [RFC RESEND v2 07/13] book3s64/hash: Refactor hash__kernel_map_pages() function Date: Tue, 15 Oct 2024 07:03:30 +0530 Message-ID: X-Mailer: git-send-email 2.46.0 In-Reply-To: References: MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 4B16F40003 X-Stat-Signature: j6ejw3odk3tuxkungf8xohmptssqpcbs X-HE-Tag: 1728956053-608510 X-HE-Meta: U2FsdGVkX18FdIPXFjevjW43DbVav0kj+c/6K2YW0co+wh8XL/jc/6dWXzDFabdP3gEmNN/+A48Ya8NXyuqAdy0zP/Ins4xyGodgnlLHblz3G8cvjgKRxI3riul0qkPTk/JitLeeDQr9nVqGXIhyLfbxXq7ApS2xfpl5xGukFA6U3Bq2tA3UrCQ4EU5tHQROReDtOxF9bEPOE4oVJIA1tRPSxbbL1BGgcmfx5lPd3bgbE3Sam2rOGqazPdFRsuNQ/4SaH+gAF0wH2EGKY1FksiAyffsO2hREp+jwjbJ1cBR6BHOi/kVyxw74gDwkCmlGfccw+GPsCuAN00DNw2a7+1G3Q7kyNGIiEcrhjdFt4i7jnGy70wUhn+dDDC/JUENmQxifKSr8ZAhDUEAp5ir4/xzjmgSJDFItGAO5hrtBEld7G6HtcYyO0ujrYp64hMyYAYPfutcMAhl1DdpbE3QJz04lcGgZ4E6ur1viOfIJrFmkOVEbPtKrneOBXwkDLO6FdNb36axjd69xWQ7Ty/AiW91pQQYVmUVcdiQmlZ9u613IDbS/QdUmZwV+PZVwxPq07OqcL0J8lK2YLOWVc+5s+qUNs3wfQBK/Vb4bXfnxVrItfwSuq6731rDPMV0Tvpjpp8fkbILJqm1p2Egf70s21yy3DvUG+mD7U7/cOgO7nirW7bxuVzChigq4pQZTksQ87AmLp849CcmW92HWqVkWqAljV3gKOUL1LHHtp/OK8fzoIYoEYmcdwM93I69rQTLQl621DgWV7xsDK0gfmzV4twUdrC0Mm0L/uNZ74V5TBrotqY1brL3roCfGUTOop83xR0p1LgJJYXDP7nV2r3cetgVQf2TGbba7WL8q8/lbus7AzRXYI61e+TvOjcC+U1Q16jl2/cRhN7PhtgPsXjEUPS9JCMcSm7RNXrsXieEz9t48HWH+HBGTbl98jNMa2kvOmVLgXgkoIVqgE2e6Prm KvO5CRX6 8cTce1UWw8z6ehTJUb9XssBsXtzxjgcQV1awU59KL3Vokh1y3WWy7QAzMCtaR4HZFXD/A0CQFPdVpQFss6roFbkhOK/I6IOajUJO2LJh11zLW7hgLKxSF5DjjlGTxP3Dhag5TksBtQjsnLPyxxNvlwTl/C8sGfIyJ9Jy04S0FaAwqYsI3SRY6te8Nu004oc3MdMzrYGfoXJEAIZPzIB1Bb0MsYFLCInyDbX9m8ZwGBpnM8z/qI+H2qm87viKqeVjodvJ9CAS3Y0cvtD7Wihm2pqI9MCxHClxMUwYmkr8/4q5L2WakGyxv5k8+qfNHAoxSec2oxFG80P6PTnSq32vD0E+srQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: This refactors hash__kernel_map_pages() function to call hash_debug_pagealloc_map_pages(). This will come useful when we will add kfence support. No functionality changes in this patch. Signed-off-by: Ritesh Harjani (IBM) --- arch/powerpc/mm/book3s64/hash_utils.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/arch/powerpc/mm/book3s64/hash_utils.c b/arch/powerpc/mm/book3s64/hash_utils.c index 030c120d1399..da9b089c8e8b 100644 --- a/arch/powerpc/mm/book3s64/hash_utils.c +++ b/arch/powerpc/mm/book3s64/hash_utils.c @@ -349,7 +349,8 @@ static inline void hash_debug_pagealloc_add_slot(phys_addr_t paddr, int slot) linear_map_hash_slots[paddr >> PAGE_SHIFT] = slot | 0x80; } -int hash__kernel_map_pages(struct page *page, int numpages, int enable) +static int hash_debug_pagealloc_map_pages(struct page *page, int numpages, + int enable) { unsigned long flags, vaddr, lmi; int i; @@ -368,6 +369,12 @@ int hash__kernel_map_pages(struct page *page, int numpages, int enable) local_irq_restore(flags); return 0; } + +int hash__kernel_map_pages(struct page *page, int numpages, int enable) +{ + return hash_debug_pagealloc_map_pages(page, numpages, enable); +} + #else /* CONFIG_DEBUG_PAGEALLOC */ int hash__kernel_map_pages(struct page *page, int numpages, int enable) From patchwork Tue Oct 15 01:33:31 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Ritesh Harjani (IBM)" X-Patchwork-Id: 13835654 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 09249CFC505 for ; Tue, 15 Oct 2024 01:34:30 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8B5FC6B009E; Mon, 14 Oct 2024 21:34:29 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 864C06B009F; Mon, 14 Oct 2024 21:34:29 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6DF186B00A0; Mon, 14 Oct 2024 21:34:29 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 480C26B009E for ; Mon, 14 Oct 2024 21:34:29 -0400 (EDT) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 2DBE61A0525 for ; Tue, 15 Oct 2024 01:34:14 +0000 (UTC) X-FDA: 82674116406.25.ECAFA0C Received: from mail-pg1-f178.google.com (mail-pg1-f178.google.com [209.85.215.178]) by imf18.hostedemail.com (Postfix) with ESMTP id 615FA1C0004 for ; Tue, 15 Oct 2024 01:34:24 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=FgM5OG6q; spf=pass (imf18.hostedemail.com: domain of ritesh.list@gmail.com designates 209.85.215.178 as permitted sender) smtp.mailfrom=ritesh.list@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1728955878; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=ww6ZbzhcNbPuRWG0GzwKnAEreEL780mKVa0cmRg0+f0=; b=WMFbJrM4Klfjgjx6x8S7wCuvcHzskyB3GIDsZm1tpenxTd4yb2aQDzO4g1xZHkOYB9Jy0v 6fgCRO7EX/g9RjeCOlMfAAUmE5qkHeBssqsKL2jMrBpujaOd1IZNz0wN7INOIFA7/Xc1xt m4yiH+SqNI65T8A3k9K6MowPVp7r7PU= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=FgM5OG6q; spf=pass (imf18.hostedemail.com: domain of ritesh.list@gmail.com designates 209.85.215.178 as permitted sender) smtp.mailfrom=ritesh.list@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1728955878; a=rsa-sha256; cv=none; b=3M9lziOI5dnLpAxLgdEelZ+NpdCEdoJ0fW/6Bw0UMShRE4dpsl7DyiCVHBQYof7W9qb5zq OwP91k6fNmWhawq6D0Z9FUYXdDfAFuclWUzHUgkeZvMbjIo58wQRfzgaqyPg27SpeeqJyZ XTrBZFRgqEdtDFQxb7EM+ZjFzS6FBXc= Received: by mail-pg1-f178.google.com with SMTP id 41be03b00d2f7-7cd8803fe0aso3293439a12.0 for ; Mon, 14 Oct 2024 18:34:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1728956066; x=1729560866; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ww6ZbzhcNbPuRWG0GzwKnAEreEL780mKVa0cmRg0+f0=; b=FgM5OG6qydFerDu9x1JUyc2yzMB3U2LbD1O0YEciLU5fHVyEyf24sBygYXwwS2Ooea O2t413tMs+oLbuB2N34LAi6BeOqV01P+UPqf0yW6bj2GGYBVbZoJxssedKrPCcPnNgnY gwB27++FRGXP5OK256Wp35up0u8p/DrgetsV4gpo0PkUlt+nH7sLtrrJHwU7MEY9QTFz kx9HvtSOHW9E9c7/AjBxmEiinF2LV3ySE5MuA0188OCvh5O1NLREA4Fd9HwliKOhC+HR yG9fQha+mu/whkMX16Q7WD7UgcnGL928GSN7b+IdGuVu62kCOFWdl3GQ1q+oC88JNHjY 5rPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1728956066; x=1729560866; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ww6ZbzhcNbPuRWG0GzwKnAEreEL780mKVa0cmRg0+f0=; b=r4l+AvhaXRHhERgBjepteqkwhg/be7ZQ436givXtoVu7gx3Llgsv/RQ++bS95i3mOd 8oeUWIyxONENFZLujW7Js6EzfswG9bj2GWOSUMVUwaYw9Zqs510+SZvji5uskajgx9BF +1a7FULs+1wGP8UJJOCb+4Z/DJANS78GFQ3ShWrOwm2yF+MQfqMKI21GmLRs6DYVQkVc rlHnaJ/4GtJvH+bzWblTi841CaZW6d3vQrGoVRpwz9SGwbC/Pmvx2sHHu//F0IgZ0Ovq PYvZopRRyzehJMdAMxjYlqY8koEzCynpOZtgE+5j01d+hS7StRCUur9G3ZZIykdxTmcW jbOw== X-Forwarded-Encrypted: i=1; AJvYcCWkgY4Bx7MT+uX+ZkrlQsZ0L9tdEISHABRIBRi8F6Fa5X873FfL5xVVmasr2eIJhSx0aGbBfZuDeQ==@kvack.org X-Gm-Message-State: AOJu0YwRHevw9LFia5RGrIC6YasAVT+f6QzN+LwaC9nMH1thGZOj3B7V TsDGuTCFoj8J9sWLh2H0Y8NFEw0XvZ5YigQYUr+UJWNoJrvDd1St X-Google-Smtp-Source: AGHT+IHGZTaTUSSUJMjQoBpL1FZpf4KVi65Lqy7OyMEzvzFSJ0mjrxB0rW6XRaLy1i6Ch9oXLcIlMw== X-Received: by 2002:a05:6a20:2d0b:b0:1d8:b060:37c6 with SMTP id adf61e73a8af0-1d8bce4272amr19010970637.0.1728956065840; Mon, 14 Oct 2024 18:34:25 -0700 (PDT) Received: from dw-tp.. ([171.76.80.151]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-71e77508562sm189349b3a.186.2024.10.14.18.34.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 14 Oct 2024 18:34:25 -0700 (PDT) From: "Ritesh Harjani (IBM)" To: linuxppc-dev@lists.ozlabs.org Cc: kasan-dev@googlegroups.com, linux-mm@kvack.org, Marco Elver , Alexander Potapenko , Heiko Carstens , Michael Ellerman , Nicholas Piggin , Madhavan Srinivasan , Christophe Leroy , Hari Bathini , "Aneesh Kumar K . V" , Donet Tom , Pavithra Prakash , LKML , "Ritesh Harjani (IBM)" Subject: [RFC RESEND v2 08/13] book3s64/hash: Make kernel_map_linear_page() generic Date: Tue, 15 Oct 2024 07:03:31 +0530 Message-ID: <0ecad6f4f0d71fd8eb92b437315e981d23a14bca.1728954719.git.ritesh.list@gmail.com> X-Mailer: git-send-email 2.46.0 In-Reply-To: References: MIME-Version: 1.0 X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 615FA1C0004 X-Stat-Signature: 5st81hsj4j63f6x37ediqocrapn5eh55 X-Rspam-User: X-HE-Tag: 1728956064-135502 X-HE-Meta: U2FsdGVkX1/SaHknPp8m9o7BBQZ6dA3/7GwIz3aQ4ey4U5zXl5IcTr2EAJQuVyULHpze5PRETe8trUZjGMhfE6L04v6Es8dktAZxQOpi5Nnsg92bZXSVQapm1dk6UjgLmh3lt0E1xqbQrvXvywVJ7WKzc6ykBr74PxP9knnYjdzA5bpM9v6EgDIEq49TZ7zfU/2PbCMnz9hkYAm5FQ1YT+gOBRYfshP+o16+WfLDGYpM1mE45aLklinfcK+5xy82KJ1Snsz7JRYQcOKlcLQG91aAZqXUuALs5rR8J9lf6noPCM24w5AH60Si2tF9Jkzm/OBLQLLRaCNr6OAbrAbHzc0fztIkjJO0iAi7fg8/XOxXvqYpmtav5H7DBWp2PDyly8ivU4/StavTSKXlxN9iureq8JocWz7/yqEeDfhKab+7fw4FYoFTxpOlbeJTMTI6N6hnUnxK8NxWgHFmV6mXKhPP3Uy7Cfdne8tQITvwinAw1F8s8dig9sAZZWrciD0NvxNO7EltVGwB1OPlbQzHe9KlN+8CaXoVLGj4yoRpE3z7Cm6p+G5CZzW4b6ZWITSfC3sNgshhxBQBH8tWgmXyAbVZMnikvfqZrIcWXP1OjpzPCAqGPUoABhM6br2ZPKb26Dy1UKxAv0eTJ/n9/ZOHtAAhLlYUbTZarGeG5ng6Jl3CO+gHYk+J3n418NQlsoB1LmVujaqVJ4HCkJ7mV0K2ajo2ndw52DOgBfh9hGQhWW/1VEI5jzK23hpcP61jA62ox4r6FdH9qna98m7KLyLbZn7Z25Vh0Tcj1jjXBsibqcUPJRUxTvVfebHjjUYf79EwTsMbjQsduFkkPbEReTzMy0OjRkqR+0fXlvIR63fr09zarVuWBqH3E/2/3KQjSI+9ZYLgdkxjKAVKH9Xw6MK7eauaneVYF5kgNPwY0rucXiC1LzckZoHLLJ2Wc3cvLjfTuFruQdaUSZNSmDCfIz9 zFLE1HNF 7tdsClr4qVeHPWheYXfaQYdrHVVpQMBDN5AAe6zh1+Cj0kcLthIVfrX2OrRuV2AxiSJBehVmW7QR+Aice780QsWtNF75CfbjeYwv0YpJmOq1TF+vT3pbdjoSpQWzqnC9GTo0SyhWrd5EUFnLVx7nwaAzwtMnv5Vffqc2ng7VzGiuxJM7wMYQpigfbgJtsa/4XNl/Gs5ah78iIm5+bjp3xmyiS6XN+4IcbP6zw4pqkarwSTup4rhoZCDx0vzmSKtypjrbZPSdlDSP3lnaiTvBYWyVxp/g2457RmB9kyHh6M1FUttZggbeYQjrYfsrLysvDXPaAVu2oEU7ocdmea4RUWyW+LA== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Currently kernel_map_linear_page() function assumes to be working on linear_map_hash_slots array. But since in later patches we need a separate linear map array for kfence, hence make kernel_map_linear_page() take a linear map array and lock in it's function argument. This is needed to separate out kfence from debug_pagealloc infrastructure. Signed-off-by: Ritesh Harjani (IBM) --- arch/powerpc/mm/book3s64/hash_utils.c | 47 ++++++++++++++------------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/arch/powerpc/mm/book3s64/hash_utils.c b/arch/powerpc/mm/book3s64/hash_utils.c index da9b089c8e8b..cc2eaa97982c 100644 --- a/arch/powerpc/mm/book3s64/hash_utils.c +++ b/arch/powerpc/mm/book3s64/hash_utils.c @@ -272,11 +272,8 @@ void hash__tlbiel_all(unsigned int action) } #ifdef CONFIG_DEBUG_PAGEALLOC -static u8 *linear_map_hash_slots; -static unsigned long linear_map_hash_count; -static DEFINE_RAW_SPINLOCK(linear_map_hash_lock); - -static void kernel_map_linear_page(unsigned long vaddr, unsigned long lmi) +static void kernel_map_linear_page(unsigned long vaddr, unsigned long idx, + u8 *slots, raw_spinlock_t *lock) { unsigned long hash; unsigned long vsid = get_kernel_vsid(vaddr, mmu_kernel_ssize); @@ -290,7 +287,7 @@ static void kernel_map_linear_page(unsigned long vaddr, unsigned long lmi) if (!vsid) return; - if (linear_map_hash_slots[lmi] & 0x80) + if (slots[idx] & 0x80) return; ret = hpte_insert_repeating(hash, vpn, __pa(vaddr), mode, @@ -298,36 +295,40 @@ static void kernel_map_linear_page(unsigned long vaddr, unsigned long lmi) mmu_linear_psize, mmu_kernel_ssize); BUG_ON (ret < 0); - raw_spin_lock(&linear_map_hash_lock); - BUG_ON(linear_map_hash_slots[lmi] & 0x80); - linear_map_hash_slots[lmi] = ret | 0x80; - raw_spin_unlock(&linear_map_hash_lock); + raw_spin_lock(lock); + BUG_ON(slots[idx] & 0x80); + slots[idx] = ret | 0x80; + raw_spin_unlock(lock); } -static void kernel_unmap_linear_page(unsigned long vaddr, unsigned long lmi) +static void kernel_unmap_linear_page(unsigned long vaddr, unsigned long idx, + u8 *slots, raw_spinlock_t *lock) { - unsigned long hash, hidx, slot; + unsigned long hash, hslot, slot; unsigned long vsid = get_kernel_vsid(vaddr, mmu_kernel_ssize); unsigned long vpn = hpt_vpn(vaddr, vsid, mmu_kernel_ssize); hash = hpt_hash(vpn, PAGE_SHIFT, mmu_kernel_ssize); - raw_spin_lock(&linear_map_hash_lock); - if (!(linear_map_hash_slots[lmi] & 0x80)) { - raw_spin_unlock(&linear_map_hash_lock); + raw_spin_lock(lock); + if (!(slots[idx] & 0x80)) { + raw_spin_unlock(lock); return; } - hidx = linear_map_hash_slots[lmi] & 0x7f; - linear_map_hash_slots[lmi] = 0; - raw_spin_unlock(&linear_map_hash_lock); - if (hidx & _PTEIDX_SECONDARY) + hslot = slots[idx] & 0x7f; + slots[idx] = 0; + raw_spin_unlock(lock); + if (hslot & _PTEIDX_SECONDARY) hash = ~hash; slot = (hash & htab_hash_mask) * HPTES_PER_GROUP; - slot += hidx & _PTEIDX_GROUP_IX; + slot += hslot & _PTEIDX_GROUP_IX; mmu_hash_ops.hpte_invalidate(slot, vpn, mmu_linear_psize, mmu_linear_psize, mmu_kernel_ssize, 0); } +static u8 *linear_map_hash_slots; +static unsigned long linear_map_hash_count; +static DEFINE_RAW_SPINLOCK(linear_map_hash_lock); static inline void hash_debug_pagealloc_alloc_slots(void) { if (!debug_pagealloc_enabled()) @@ -362,9 +363,11 @@ static int hash_debug_pagealloc_map_pages(struct page *page, int numpages, if (lmi >= linear_map_hash_count) continue; if (enable) - kernel_map_linear_page(vaddr, lmi); + kernel_map_linear_page(vaddr, lmi, + linear_map_hash_slots, &linear_map_hash_lock); else - kernel_unmap_linear_page(vaddr, lmi); + kernel_unmap_linear_page(vaddr, lmi, + linear_map_hash_slots, &linear_map_hash_lock); } local_irq_restore(flags); return 0; From patchwork Tue Oct 15 01:33:32 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Ritesh Harjani (IBM)" X-Patchwork-Id: 13835655 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id D9CD0CFC501 for ; Tue, 15 Oct 2024 01:34:34 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 72B4D6B00A1; Mon, 14 Oct 2024 21:34:34 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6B9406B00A2; Mon, 14 Oct 2024 21:34:34 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 50CAC6B00A3; Mon, 14 Oct 2024 21:34:34 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id E86C16B00A1 for ; Mon, 14 Oct 2024 21:34:33 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 86BA01605A5 for ; Tue, 15 Oct 2024 01:34:24 +0000 (UTC) X-FDA: 82674116616.26.95A4B28 Received: from mail-pg1-f172.google.com (mail-pg1-f172.google.com [209.85.215.172]) by imf28.hostedemail.com (Postfix) with ESMTP id 3F771C0002 for ; Tue, 15 Oct 2024 01:34:25 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="bfwl/WMk"; spf=pass (imf28.hostedemail.com: domain of ritesh.list@gmail.com designates 209.85.215.172 as permitted sender) smtp.mailfrom=ritesh.list@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1728955929; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=jpwPGGqxMjTTALmPRltkI2obnVC0TIxSM0BTVcrrVEU=; b=v7lbgF6koiNwgRN3OlimeV3uax0LUpoUwQ0QoX+jmP5zROOZk9t9KpZLJlmJ4QufKAuTYE Bj0YXBIwMxpAMHx2eSKcFeEz/Y/t37BLXtQVjUUj7PKLsWQb9HOYWI0FHGV2kOxLcL42mu OzOVVFw6OtYmnsahHnBpJIciTduOydw= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1728955929; a=rsa-sha256; cv=none; b=wIgtVq5ztZdDWw24UJmb89FwJBj/g2GlxvFcWslxNZLZ7bDpbosQgs0CVskn9Q6YdjSk0E 2nwuBakVZI63W2n7DD6QYMD69H7HzzMVeQh8dAtEf0JkhQI/NkJmJ1leUD3KbKcD5iHcJB NMMEXoZ5YOtdEr+nQSqCYeXzqN1MdxQ= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="bfwl/WMk"; spf=pass (imf28.hostedemail.com: domain of ritesh.list@gmail.com designates 209.85.215.172 as permitted sender) smtp.mailfrom=ritesh.list@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-pg1-f172.google.com with SMTP id 41be03b00d2f7-7cd8803fe0aso3293467a12.0 for ; Mon, 14 Oct 2024 18:34:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1728956071; x=1729560871; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=jpwPGGqxMjTTALmPRltkI2obnVC0TIxSM0BTVcrrVEU=; b=bfwl/WMkqQAy8OXyK9wb9hmlo1OawSepebQivNpvJkr3/NphyHAacZBHQVUCRov/7s LqMG1PMWZ2oiazH1BK+7G+Sf5fKgAPeoj0Tf93bHtmiPWIHcZsw7LBC90qTeIcvxFXNw SApKGKn4mi7P4eIYURoZOHv572rx6M5ePWPHpxwtMPNKGdcdoo+fmEBdx0LPtJLf486u iMGWlULqtf79wG4bf9J9xYzT5gbl+X1YKYM+uRIRgi5h7mHDF2OVSn88NpXGV4h9UL/z EaOgUUV2pdzSfEA8RVUp0TnktH2mDd/x0jFrM0pXSWuoIcFgUr6pZxg7O5vfoLdHXLd2 nE7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1728956071; x=1729560871; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jpwPGGqxMjTTALmPRltkI2obnVC0TIxSM0BTVcrrVEU=; b=wowfps264Vp6rfV+jOBJekSyw514rZxb4inSlb/FRNwBLYJSiyJ7MTdzjcCkaQlitO LsFqmrokxX2cUaoyDsXDYB92L9t3UZc4Qt5p1FzmNaHJNNiEEPoFz1So5fwC2UoEAIHS k1G082zIvcqK90YOsJ7TcjSS5oflgdNNOMUMRxnzn3e/bVEUS+MGNUqp7Pte8XUmYT6g Cf5C8bIxTzEcWBGN7oaFSfslrA2hI06/k6IXPOIqbWP2lg/2p7OjbGnd3rnsJyyU0SWm nUPwqp9o9bW9SRWygTuwOjG/8Rpo+VUB8DGWse1Wnvtpppktlksbed7Jewd32lyJI0VE SqJg== X-Forwarded-Encrypted: i=1; AJvYcCXzBv2nch9yTBX2bge/x7oz+qKinD6TMG8ruA1APG1eqU8RTtdFyFa0c+fnRoXPYmfi0aElNyDJpA==@kvack.org X-Gm-Message-State: AOJu0YxRyabPuw0xxmtXuHOWnoVms7O4VPAeW9zEC/8nKNfF/xGXE9ZC Py4UHz7YgpP60HMBJICc4OtuNcA1pFGBnxFdi/w8ndpAl13Nrlv4 X-Google-Smtp-Source: AGHT+IHYwbiuRk5aKKEVmS1LD0xBTPgGenAkQ5XvzCOzwV/g1bm0dITYhUx7OfVFtgaRIRCqBx30PA== X-Received: by 2002:a05:6a20:c997:b0:1d8:adea:3f7c with SMTP id adf61e73a8af0-1d8bcf18038mr20979021637.14.1728956070636; Mon, 14 Oct 2024 18:34:30 -0700 (PDT) Received: from dw-tp.. ([171.76.80.151]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-71e77508562sm189349b3a.186.2024.10.14.18.34.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 14 Oct 2024 18:34:30 -0700 (PDT) From: "Ritesh Harjani (IBM)" To: linuxppc-dev@lists.ozlabs.org Cc: kasan-dev@googlegroups.com, linux-mm@kvack.org, Marco Elver , Alexander Potapenko , Heiko Carstens , Michael Ellerman , Nicholas Piggin , Madhavan Srinivasan , Christophe Leroy , Hari Bathini , "Aneesh Kumar K . V" , Donet Tom , Pavithra Prakash , LKML , "Ritesh Harjani (IBM)" Subject: [RFC RESEND v2 09/13] book3s64/hash: Disable debug_pagealloc if it requires more memory Date: Tue, 15 Oct 2024 07:03:32 +0530 Message-ID: <79552bdb6dac0d0a39d9c639bdf92f4e66dcaa55.1728954719.git.ritesh.list@gmail.com> X-Mailer: git-send-email 2.46.0 In-Reply-To: References: MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 3F771C0002 X-Stat-Signature: 4maqekgq7p3m54zd48mqng9gfc6mjes6 X-HE-Tag: 1728956065-236968 X-HE-Meta: U2FsdGVkX1/GJGmX+idh4N/5QGbW6huZgfud00fs8pHUuxaQtL2GCjaVacL64UxkVfneSztQKDKsI+p8Ickmn1Fm3bJk5ScOCPNcxkFA9zLS8a2gsp0Bl0A0vhR5N917V+l4bV9OrNTrthiXd6fQTypwes6dVI+aOVZJKvhtEcYEozvcoltrqtKiRSCVYj9aTb3JhQ+lFqYotrjq3wdKaURR8J8AuaYNnGsyjHH9XsHB/a5NlDdoEapFaYC/AMRcpqHkOOcpqiWX5VObTjoS0XkJsU+5O5q75cN9zEgsvwEtqRcmrXDMqaVVVUhhauGQ/uuiM/QHhNwO7UznmpdTtGbKK0yx8jqUQ70uT0kyYtu0SI5mMFadX3Meft1THCvPFs4qVH9ObmlO1mNLgUBE7zLtSq/0w0zbwYz1JTFzXh+UgcsbCDb6Qs34LiNunDhtztATml+v82ub+QuK6mC7gtEmRq3a6nYIiqdML+84ZrHIi4QFOLpg4kUlPF1T6qM7ZCpBARzxKN2+O94DvP4rt/cgyeV303GVGHHDsj/mXFWhbii2BwB4I3uiL1yV/pq7KJCraZIWAVdC7UIiSKP+qa9z8lfVOEdrhIoHyamumkGHtLxIDNActOrYDGUUy+4fZkH4tjnw5l0I7FcDQI7LY/e4oG9e3xUkXx48po6ZAYxwaZZ0Ny0J6jXdkILn30JC7v62H2mNtdnJ7LB0m+jTUwuFsmOe/LtAmG9AInNc1HDNQeRVLQcoCBJmFhuTSHRjEalXEdGHyuR9Yo9CgDy2a4fbqGlXPLKMqUS8l2DorkEnf7QS5VWMSI6Xr+B7WWwdtsMqjxCeuScVzzzq5JTWkgBB4vtfVpiHK05reAeUrBcuhpbH736SDhKXc+Q1oao/yEjUefP+W7LDitIobqK3jvQJne49u5VMHl414iQfzoi0B2M91Xs8fTgiEWVjfk4RYrieErUwFyFS07My3sR ut5X5BPu w7uwfujDA3IQr481LhV0PFztDBthxqR9R+oEMUy+71GyEhl4GQ8JXjksUrK1ZAQFn/vzzEW/UROBqHPTtbYWAae9i92tFeFzAHKGUhV0i2Qgow/NF852z2MY6xAyQNlrPQyY3XxzoQxa4xWt8TEkv4Ijj+mF69cMKZbkg0FmVus1ZvbC8PX8qCdBeZBqFdz2Zr4acyml+XhOT8Py2Zg9V9dJATl0PvJ2S+9rfSwMcHBuWcwt1JUDc0iswT5e2N99funQQ3Na1yk6dd8NJY/UBuknHUr+pgblAO0kBqfjidG9izT7/CNA2/roGdGEOt7KxAB7VAAYmn36XnfEIl7du/LhrLw== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Make size of the linear map to be allocated in RMA region to be of ppc64_rma_size / 4. If debug_pagealloc requires more memory than that then do not allocate any memory and disable debug_pagealloc. Signed-off-by: Ritesh Harjani (IBM) --- arch/powerpc/mm/book3s64/hash_utils.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/arch/powerpc/mm/book3s64/hash_utils.c b/arch/powerpc/mm/book3s64/hash_utils.c index cc2eaa97982c..cffbb6499ac4 100644 --- a/arch/powerpc/mm/book3s64/hash_utils.c +++ b/arch/powerpc/mm/book3s64/hash_utils.c @@ -331,9 +331,19 @@ static unsigned long linear_map_hash_count; static DEFINE_RAW_SPINLOCK(linear_map_hash_lock); static inline void hash_debug_pagealloc_alloc_slots(void) { + unsigned long max_hash_count = ppc64_rma_size / 4; + if (!debug_pagealloc_enabled()) return; linear_map_hash_count = memblock_end_of_DRAM() >> PAGE_SHIFT; + if (unlikely(linear_map_hash_count > max_hash_count)) { + pr_info("linear map size (%llu) greater than 4 times RMA region (%llu). Disabling debug_pagealloc\n", + ((u64)linear_map_hash_count << PAGE_SHIFT), + ppc64_rma_size); + linear_map_hash_count = 0; + return; + } + linear_map_hash_slots = memblock_alloc_try_nid( linear_map_hash_count, 1, MEMBLOCK_LOW_LIMIT, ppc64_rma_size, NUMA_NO_NODE); @@ -344,7 +354,7 @@ static inline void hash_debug_pagealloc_alloc_slots(void) static inline void hash_debug_pagealloc_add_slot(phys_addr_t paddr, int slot) { - if (!debug_pagealloc_enabled()) + if (!debug_pagealloc_enabled() || !linear_map_hash_count) return; if ((paddr >> PAGE_SHIFT) < linear_map_hash_count) linear_map_hash_slots[paddr >> PAGE_SHIFT] = slot | 0x80; @@ -356,6 +366,9 @@ static int hash_debug_pagealloc_map_pages(struct page *page, int numpages, unsigned long flags, vaddr, lmi; int i; + if (!debug_pagealloc_enabled() || !linear_map_hash_count) + return 0; + local_irq_save(flags); for (i = 0; i < numpages; i++, page++) { vaddr = (unsigned long)page_address(page); From patchwork Tue Oct 15 01:33:33 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Ritesh Harjani (IBM)" X-Patchwork-Id: 13835656 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id B130ECFC505 for ; Tue, 15 Oct 2024 01:34:39 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 448156B00A3; Mon, 14 Oct 2024 21:34:39 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3D1016B00A4; Mon, 14 Oct 2024 21:34:39 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 24D8D6B00A5; Mon, 14 Oct 2024 21:34:39 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 025DC6B00A3 for ; Mon, 14 Oct 2024 21:34:38 -0400 (EDT) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 3EA2A1405E4 for ; Tue, 15 Oct 2024 01:34:30 +0000 (UTC) X-FDA: 82674116994.14.F3DA11C Received: from mail-pg1-f174.google.com (mail-pg1-f174.google.com [209.85.215.174]) by imf22.hostedemail.com (Postfix) with ESMTP id C21EDC0002 for ; Tue, 15 Oct 2024 01:34:28 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=dBIIlA0V; spf=pass (imf22.hostedemail.com: domain of ritesh.list@gmail.com designates 209.85.215.174 as permitted sender) smtp.mailfrom=ritesh.list@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1728956003; a=rsa-sha256; cv=none; b=LP7cde0qGWkS0YCogtKyuGFS640qu3uV1ffuXm26QTdh5MUwHxkmyH9/cAbgsOL9lt1HcV AOZVP2ZrPr+YBawJUcMib/ij8vWdyUDKjVPgXpuKasrMskrF/D1aJyV8hvbN/X65o3SO/c sqQyhmsz/0BorvjxlWaXP55fz7KDcho= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=dBIIlA0V; spf=pass (imf22.hostedemail.com: domain of ritesh.list@gmail.com designates 209.85.215.174 as permitted sender) smtp.mailfrom=ritesh.list@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1728956003; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=OpMDq1IEGMMPwRojJ8i4AsUukx9XqidcnS2hx9BDF5Q=; b=j+v1bFQ+Gz+xoKVzHIrpxmU9dkMT0P4kB74xP2U/Tca5MNkQGeM6OCxErwlRTiIRVxAKg1 Tgz2IyFX02W2pVaOAxBYjGJujIDUkalroDco34q0zzKm14kPJeFTfSnCHOVTTrhuYlYCKl QlzsEe77lhiPyvqXyAKK0JPKH3KPY40= Received: by mail-pg1-f174.google.com with SMTP id 41be03b00d2f7-7ea7e250c54so1064959a12.0 for ; Mon, 14 Oct 2024 18:34:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1728956075; x=1729560875; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=OpMDq1IEGMMPwRojJ8i4AsUukx9XqidcnS2hx9BDF5Q=; b=dBIIlA0VkehA7ZM97csxMxXMOv8MAp/zt6kSJD7nR9iynBlTx7c+lcJRi6eUn0LqHU gnATQl98ZzZQLbLbFsx69KoLVS9QUZXlQsq3ngp4+BHOGX00dmjpxY8Syj5ELNsQhzlV fWd9w8zYDhmyN6C04HJMOjVAPv9rN9XWJyzd9DolOSRqmhw9h1GxfSXaaMH+yvXK+LZh 9InxrXkbUcqnO/qbxFiLrLZSb4AWU93X5HLLE2DnaJptt1plIlqgI0qfpppN1WNlmuws N0nKbbtNb2YXjOe3CyEBZEnii5sRGQYoufpNAcSXGl231b58v4PAUpJIO3SerDWV9VTg csTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1728956075; x=1729560875; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=OpMDq1IEGMMPwRojJ8i4AsUukx9XqidcnS2hx9BDF5Q=; b=lOuJzJxcaU/0qxZPj7Gn+EkTa3LiS6kQJLcSJoH1FCD+F4sWnVrJlwJlE6m8gd44vx mK6c5FaFAa3RP2tAf90HJN/4pW5a1TndXe2fpSMs8E4oV2FvVan08rgkPUJRts1O8pvU ybb0Bvb0YMsXSm864AUTBZQFHEVoxrcDa8LNCroWhPCgG1t/ILMlc6c5oodNVG84xOkR d+QFdFbBe7QGGAjgF/Mq1sOgYjceWSCjpBOKtZDj8YKOO4GAEc5tswXaEwZaxjO8DFxo x8OIIjSW1sILw+tMT6lgdyQIBiq59BdSMGnItav+6CW5TK7oEMk8RZfRbDhljojPKX6V VW8g== X-Forwarded-Encrypted: i=1; AJvYcCXoD5UGyp4FjluZByoMF1JY5lkXG4stZGI2vi00wba2yn0ceRpZcbBYgGJuqxmRK+r81wZsKfx/ZQ==@kvack.org X-Gm-Message-State: AOJu0Yy2RvOIUn2/QCm/BUHyyz1htLtxNg3uyOqdgLsl+2QOdfUPWwn9 EIyqwSPnL2mtbSOFDtIzbSn21XA/VF7ZoByyOxgqFQBi2JeCuLkL X-Google-Smtp-Source: AGHT+IElYihUi5SaCUs0c7LmxcpRmW8kQkNDCDqxwFSQ+3TwWSxwbS4zt9B7T8hR9EdwB2YanBkkig== X-Received: by 2002:a05:6a21:168e:b0:1cf:3677:1c63 with SMTP id adf61e73a8af0-1d8c95d56c3mr14328100637.25.1728956075539; Mon, 14 Oct 2024 18:34:35 -0700 (PDT) Received: from dw-tp.. ([171.76.80.151]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-71e77508562sm189349b3a.186.2024.10.14.18.34.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 14 Oct 2024 18:34:34 -0700 (PDT) From: "Ritesh Harjani (IBM)" To: linuxppc-dev@lists.ozlabs.org Cc: kasan-dev@googlegroups.com, linux-mm@kvack.org, Marco Elver , Alexander Potapenko , Heiko Carstens , Michael Ellerman , Nicholas Piggin , Madhavan Srinivasan , Christophe Leroy , Hari Bathini , "Aneesh Kumar K . V" , Donet Tom , Pavithra Prakash , LKML , "Ritesh Harjani (IBM)" Subject: [RFC RESEND v2 10/13] book3s64/hash: Add kfence functionality Date: Tue, 15 Oct 2024 07:03:33 +0530 Message-ID: <52f01906734ece9d4f9292c252cf02e7cd267f99.1728954719.git.ritesh.list@gmail.com> X-Mailer: git-send-email 2.46.0 In-Reply-To: References: MIME-Version: 1.0 X-Stat-Signature: cakguw7m8ddmgh8djrdq9xnfcxjmk5ib X-Rspamd-Queue-Id: C21EDC0002 X-Rspam-User: X-Rspamd-Server: rspam10 X-HE-Tag: 1728956068-196534 X-HE-Meta: U2FsdGVkX1/Mh71aAve8CnYglpZxbBtJMVDZtIgk/hutFyhel6Ak0zq1/nBipQi0wQ7VWFtasKMvr3xkBj6O+bMVut1QdzZy71iEtdx+5hbUxUIZVFk6Ks+vvzOjW2yRZVtbuh3QrcqaSy2coEoZLUwVGdhtILf7f3vUSOG1uf2CzjEZHxgxO8x6GUrSTBrVIWVBguxbaZ+jcv/MalTvSRQA019yz5o0uBYlig6lzivX15o8/Dz8wFGv0eyiauOP1wQX0i+nVRSzn82pWtKErMrp0mccLL7OeOj4wehSauuIWQ6VOL8/gccH3oMcH55sj54ytk0n2wmxB9qCPN/FvMsoawvn0c9byA2aDnjl7T7emsspD/bbJlJNrULUn6mnT3+wMaPrm9NAp+hupMdx7M4o7AA+ZkGyYejEfYk8fPpbH8pwDaKOMUIbEAaQ7QpnzrV7lGiRm7za4WxIm39H6R/bX1locsNHwxxPLV5EKzqzjeMpjPy43+5jnLBFSPcw7kycUJUaHyORIvGqJkVEAoQdFSqWmX3WvYWtEyULvZpHUpDPe+wvOVx52gKCXAgDFNKN1DtBGhga5m49iVovn60puzBrkZ1TeqFFRfb04nNqjFkgR1/ugazgvW2aWxgq7D+T0PM4iSAU0mH9+GwouWvS0juzk7XMvnG9UEOXCOseEJn05/jFk8KtWp7BVEcr+iSMvg73SFrMagq/NpiC54Ypin9vE7TpHrPWCABc9TbxZIeob9JIsn4yFsGzgQJHxjR/wWfqB0gzTpx/9UqimM8PTb+OsR+hqfSHlyq9xV1J7vW9SD66OzRbtjWBYa1Wc9NYf5Ugj0M7pN1etLiy06HkVWtXpZcum3pUCTgepfYXmIY2uO/cmh1tFpUzlfljoj5cFXErUh+zLYkrZ+0J51n4THXP0PhHSJeqReKeMjx0qzWbeMn5zU93fY2TZPk3v4Fb25QftDFok436w/T VXfpy5FC /Scz2S1KdL1g3LVRsp4aJTd0WPxp2QKDHWbuKUzw8yBCEoL9xxa6F7p3/nXwpWW2rqWHIeaw45NdP5NxKhDtBEIiHFVe+vbhVgQY4yfuUUJ/Y4IhkLhRmyGOy+cGerJovgIIVSPhR7PBdEKKmecOjfCljv0FaThzyFj+2w8F4vjKVYKGxlRIhgLdBwZh8SX3xFrIMGl24yzSoN+jhoCHjcq7MP77vQr3V2VPr1UM2RtCXMLQ3o/lbXA4CkznExIntfkgyllGupmACrrVLiO+vH4ZfAVEvEXjk1FUp X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Now that linear map functionality of debug_pagealloc is made generic, enable kfence to use this generic infrastructure. 1. Define kfence related linear map variables. - u8 *linear_map_kf_hash_slots; - unsigned long linear_map_kf_hash_count; - DEFINE_RAW_SPINLOCK(linear_map_kf_hash_lock); 2. The linear map size allocated in RMA region is quite small (KFENCE_POOL_SIZE >> PAGE_SHIFT) which is 512 bytes by default. 3. kfence pool memory is reserved using memblock_phys_alloc() which has can come from anywhere. (default 255 objects => ((1+255) * 2) << PAGE_SHIFT = 32MB) 4. The hash slot information for kfence memory gets added in linear map in hash_linear_map_add_slot() (which also adds for debug_pagealloc). Reported-by: Pavithra Prakash Signed-off-by: Ritesh Harjani (IBM) --- arch/powerpc/include/asm/kfence.h | 5 - arch/powerpc/mm/book3s64/hash_utils.c | 162 +++++++++++++++++++++++--- 2 files changed, 149 insertions(+), 18 deletions(-) diff --git a/arch/powerpc/include/asm/kfence.h b/arch/powerpc/include/asm/kfence.h index f3a9476a71b3..fab124ada1c7 100644 --- a/arch/powerpc/include/asm/kfence.h +++ b/arch/powerpc/include/asm/kfence.h @@ -10,7 +10,6 @@ #include #include -#include #ifdef CONFIG_PPC64_ELF_ABI_V1 #define ARCH_FUNC_PREFIX "." @@ -26,10 +25,6 @@ static inline void disable_kfence(void) static inline bool arch_kfence_init_pool(void) { -#ifdef CONFIG_PPC64 - if (!radix_enabled()) - return false; -#endif return !kfence_disabled; } #endif diff --git a/arch/powerpc/mm/book3s64/hash_utils.c b/arch/powerpc/mm/book3s64/hash_utils.c index cffbb6499ac4..53e6f3a524eb 100644 --- a/arch/powerpc/mm/book3s64/hash_utils.c +++ b/arch/powerpc/mm/book3s64/hash_utils.c @@ -40,6 +40,7 @@ #include #include #include +#include #include #include @@ -66,6 +67,7 @@ #include #include #include +#include #include @@ -271,7 +273,7 @@ void hash__tlbiel_all(unsigned int action) WARN(1, "%s called on pre-POWER7 CPU\n", __func__); } -#ifdef CONFIG_DEBUG_PAGEALLOC +#if defined(CONFIG_DEBUG_PAGEALLOC) || defined(CONFIG_KFENCE) static void kernel_map_linear_page(unsigned long vaddr, unsigned long idx, u8 *slots, raw_spinlock_t *lock) { @@ -325,11 +327,13 @@ static void kernel_unmap_linear_page(unsigned long vaddr, unsigned long idx, mmu_linear_psize, mmu_kernel_ssize, 0); } +#endif +#ifdef CONFIG_DEBUG_PAGEALLOC static u8 *linear_map_hash_slots; static unsigned long linear_map_hash_count; static DEFINE_RAW_SPINLOCK(linear_map_hash_lock); -static inline void hash_debug_pagealloc_alloc_slots(void) +static void hash_debug_pagealloc_alloc_slots(void) { unsigned long max_hash_count = ppc64_rma_size / 4; @@ -352,7 +356,8 @@ static inline void hash_debug_pagealloc_alloc_slots(void) __func__, linear_map_hash_count, &ppc64_rma_size); } -static inline void hash_debug_pagealloc_add_slot(phys_addr_t paddr, int slot) +static inline void hash_debug_pagealloc_add_slot(phys_addr_t paddr, + int slot) { if (!debug_pagealloc_enabled() || !linear_map_hash_count) return; @@ -386,20 +391,148 @@ static int hash_debug_pagealloc_map_pages(struct page *page, int numpages, return 0; } -int hash__kernel_map_pages(struct page *page, int numpages, int enable) +#else /* CONFIG_DEBUG_PAGEALLOC */ +static inline void hash_debug_pagealloc_alloc_slots(void) {} +static inline void hash_debug_pagealloc_add_slot(phys_addr_t paddr, int slot) {} +static int __maybe_unused +hash_debug_pagealloc_map_pages(struct page *page, int numpages, int enable) { - return hash_debug_pagealloc_map_pages(page, numpages, enable); + return 0; } +#endif /* CONFIG_DEBUG_PAGEALLOC */ -#else /* CONFIG_DEBUG_PAGEALLOC */ -int hash__kernel_map_pages(struct page *page, int numpages, - int enable) +#ifdef CONFIG_KFENCE +static u8 *linear_map_kf_hash_slots; +static unsigned long linear_map_kf_hash_count; +static DEFINE_RAW_SPINLOCK(linear_map_kf_hash_lock); + +static phys_addr_t kfence_pool; + +static inline void hash_kfence_alloc_pool(void) +{ + + // allocate linear map for kfence within RMA region + linear_map_kf_hash_count = KFENCE_POOL_SIZE >> PAGE_SHIFT; + linear_map_kf_hash_slots = memblock_alloc_try_nid( + linear_map_kf_hash_count, 1, + MEMBLOCK_LOW_LIMIT, ppc64_rma_size, + NUMA_NO_NODE); + if (!linear_map_kf_hash_slots) { + pr_err("%s: memblock for linear map (%lu) failed\n", __func__, + linear_map_kf_hash_count); + goto err; + } + + // allocate kfence pool early + kfence_pool = memblock_phys_alloc_range(KFENCE_POOL_SIZE, PAGE_SIZE, + MEMBLOCK_LOW_LIMIT, MEMBLOCK_ALLOC_ANYWHERE); + if (!kfence_pool) { + pr_err("%s: memblock for kfence pool (%lu) failed\n", __func__, + KFENCE_POOL_SIZE); + memblock_free(linear_map_kf_hash_slots, + linear_map_kf_hash_count); + linear_map_kf_hash_count = 0; + goto err; + } + memblock_mark_nomap(kfence_pool, KFENCE_POOL_SIZE); + + return; +err: + pr_info("Disabling kfence\n"); + disable_kfence(); +} + +static inline void hash_kfence_map_pool(void) +{ + unsigned long kfence_pool_start, kfence_pool_end; + unsigned long prot = pgprot_val(PAGE_KERNEL); + + if (!kfence_pool) + return; + + kfence_pool_start = (unsigned long) __va(kfence_pool); + kfence_pool_end = kfence_pool_start + KFENCE_POOL_SIZE; + __kfence_pool = (char *) kfence_pool_start; + BUG_ON(htab_bolt_mapping(kfence_pool_start, kfence_pool_end, + kfence_pool, prot, mmu_linear_psize, + mmu_kernel_ssize)); + memblock_clear_nomap(kfence_pool, KFENCE_POOL_SIZE); +} + +static inline void hash_kfence_add_slot(phys_addr_t paddr, int slot) { + unsigned long vaddr = (unsigned long) __va(paddr); + unsigned long lmi = (vaddr - (unsigned long)__kfence_pool) + >> PAGE_SHIFT; + + if (!kfence_pool) + return; + BUG_ON(!is_kfence_address((void *)vaddr)); + BUG_ON(lmi >= linear_map_kf_hash_count); + linear_map_kf_hash_slots[lmi] = slot | 0x80; +} + +static int hash_kfence_map_pages(struct page *page, int numpages, int enable) +{ + unsigned long flags, vaddr, lmi; + int i; + + WARN_ON_ONCE(!linear_map_kf_hash_count); + local_irq_save(flags); + for (i = 0; i < numpages; i++, page++) { + vaddr = (unsigned long)page_address(page); + lmi = (vaddr - (unsigned long)__kfence_pool) >> PAGE_SHIFT; + + /* Ideally this should never happen */ + if (lmi >= linear_map_kf_hash_count) { + WARN_ON_ONCE(1); + continue; + } + + if (enable) + kernel_map_linear_page(vaddr, lmi, + linear_map_kf_hash_slots, + &linear_map_kf_hash_lock); + else + kernel_unmap_linear_page(vaddr, lmi, + linear_map_kf_hash_slots, + &linear_map_kf_hash_lock); + } + local_irq_restore(flags); return 0; } -static inline void hash_debug_pagealloc_alloc_slots(void) {} -static inline void hash_debug_pagealloc_add_slot(phys_addr_t paddr, int slot) {} -#endif /* CONFIG_DEBUG_PAGEALLOC */ +#else +static inline void hash_kfence_alloc_pool(void) {} +static inline void hash_kfence_map_pool(void) {} +static inline void hash_kfence_add_slot(phys_addr_t paddr, int slot) {} +static int __maybe_unused +hash_kfence_map_pages(struct page *page, int numpages, int enable) +{ + return 0; +} +#endif + +#if defined(CONFIG_DEBUG_PAGEALLOC) || defined(CONFIG_KFENCE) +int hash__kernel_map_pages(struct page *page, int numpages, int enable) +{ + void *vaddr = page_address(page); + + if (is_kfence_address(vaddr)) + return hash_kfence_map_pages(page, numpages, enable); + else + return hash_debug_pagealloc_map_pages(page, numpages, enable); +} + +static void hash_linear_map_add_slot(phys_addr_t paddr, int slot) +{ + if (is_kfence_address(__va(paddr))) + hash_kfence_add_slot(paddr, slot); + else + hash_debug_pagealloc_add_slot(paddr, slot); +} +#else +static void hash_linear_map_add_slot(phys_addr_t paddr, int slot) {} +#endif /* * 'R' and 'C' update notes: @@ -559,7 +692,8 @@ int htab_bolt_mapping(unsigned long vstart, unsigned long vend, break; cond_resched(); - hash_debug_pagealloc_add_slot(paddr, ret); + // add slot info in debug_pagealloc / kfence linear map + hash_linear_map_add_slot(paddr, ret); } return ret < 0 ? ret : 0; } @@ -940,7 +1074,7 @@ static void __init htab_init_page_sizes(void) bool aligned = true; init_hpte_page_sizes(); - if (!debug_pagealloc_enabled()) { + if (!debug_pagealloc_enabled_or_kfence()) { /* * Pick a size for the linear mapping. Currently, we only * support 16M, 1M and 4K which is the default @@ -1261,6 +1395,7 @@ static void __init htab_initialize(void) prot = pgprot_val(PAGE_KERNEL); hash_debug_pagealloc_alloc_slots(); + hash_kfence_alloc_pool(); /* create bolted the linear mapping in the hash table */ for_each_mem_range(i, &base, &end) { size = end - base; @@ -1277,6 +1412,7 @@ static void __init htab_initialize(void) BUG_ON(htab_bolt_mapping(base, base + size, __pa(base), prot, mmu_linear_psize, mmu_kernel_ssize)); } + hash_kfence_map_pool(); memblock_set_current_limit(MEMBLOCK_ALLOC_ANYWHERE); /* From patchwork Tue Oct 15 01:33:34 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Ritesh Harjani (IBM)" X-Patchwork-Id: 13835657 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 90C4ECFC501 for ; Tue, 15 Oct 2024 01:34:44 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1FEA96B00A5; Mon, 14 Oct 2024 21:34:44 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 1AE8B6B00A6; Mon, 14 Oct 2024 21:34:44 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 027D26B00A7; Mon, 14 Oct 2024 21:34:43 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id D6B966B00A5 for ; Mon, 14 Oct 2024 21:34:43 -0400 (EDT) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 6192A40A82 for ; Tue, 15 Oct 2024 01:34:38 +0000 (UTC) X-FDA: 82674116994.19.6437BD9 Received: from mail-pf1-f177.google.com (mail-pf1-f177.google.com [209.85.210.177]) by imf17.hostedemail.com (Postfix) with ESMTP id 390B14000B for ; Tue, 15 Oct 2024 01:34:36 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Te5D2mGN; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf17.hostedemail.com: domain of ritesh.list@gmail.com designates 209.85.210.177 as permitted sender) smtp.mailfrom=ritesh.list@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1728955924; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=vbK+DyWhNFTOskVhv1fyi/tJ2PP4Ej6g6TRuPbyIjZc=; b=icFmqOA6xUtwVc6IEEe1Crx4GWoLmbKZrXq1yBkYMQWKJk/inJk+RBD/UdbE+d0tSjdVe+ OItWub4fHG4lHpUMZVIVyvUB+FrAOn1cvnIFnYsM1MP+21ERvihiaIJqnJ4mgd3Tjf73rQ a9lI396qWtbGG2dQtwr2XLPMDY6h+hU= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1728955924; a=rsa-sha256; cv=none; b=l8o85z/ch9XZPBRUE8TPH9PTKKJJfhcDAj1YGvST0fZK1a1nlfxBJpi3TXQ09tShAkkPIb +gZn50eHxeoEYBQ1+KTdp4HMKRKzvdZcSbZ7QAmnAxtfHXO4yzUdww5iIk5KXJk9N3i5Hm est+Hg9aRr71+y0/pMcUudIw71WZJrs= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Te5D2mGN; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf17.hostedemail.com: domain of ritesh.list@gmail.com designates 209.85.210.177 as permitted sender) smtp.mailfrom=ritesh.list@gmail.com Received: by mail-pf1-f177.google.com with SMTP id d2e1a72fcca58-71e483c83dbso2992843b3a.3 for ; Mon, 14 Oct 2024 18:34:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1728956080; x=1729560880; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=vbK+DyWhNFTOskVhv1fyi/tJ2PP4Ej6g6TRuPbyIjZc=; b=Te5D2mGNhJVt8+jzMMyhf5aLZtC4lpD4i6vcysjBXZTlHbVTxvsIWbJOAAAy3CQ81B eswnrR6oZFwFmuLoV7vfQkYmkscqvQ9aUMnqfscqEAJxYOr8Kx5vFoGc2dWgiqhBsdGz jhxW6GFW+k5qYv6buxdsvkLhaHQwGL06cM55VR7fNcjL5C8ylfc/VbbU564P/dQeM8gN S14g3FskYy9x8tBL9KF4X64yt4iOv0oMkxQDhoom+iiU81A4foPxvpFBTV4l+lT4CeWw SwudoT+pUodMBiN4LkzZk7o7VsuvZ771iEctaOpfIB/W5x6uOlwmEhotKuWX/JcXcnHh tb8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1728956080; x=1729560880; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vbK+DyWhNFTOskVhv1fyi/tJ2PP4Ej6g6TRuPbyIjZc=; b=u/FlR8cYGPeeXn67KA835TJGUIqs7dXzNxMJCuEFx1rNcogQGGqPKI+mIQX/QvPQKm KojBI85s86+7XNmdjUhenw5oUQNVmCa/uNBGP5kkWpmaIbJffgHMnVu7ujr+7TLpwvUv p2Ex5tHv15XtoPJbau+z6R3KVsfRlu6DXIu1AQple9oEiPnBh5x3IUOHq4VVIvFtns+J fbEW1+NxMauqC+QY5pbw2pwdwNPPAxwsy3D6nHmScIjDdXsPjpMwLMUCsDzTkQUzRo0E DG9sveIl1tneRVKSzdVlfPR338+x6f0hhQP8HYXZPBRJeR+AlIvdo9TkpFglvtHsyPZL 7Ijg== X-Forwarded-Encrypted: i=1; AJvYcCVhJL/QbNWqZhX4fk2sjQszX/2oLQoPnyM9JxUuU5bJixypZvFEOUN3Ah9q3hHoVEwS3cvJs4u9wQ==@kvack.org X-Gm-Message-State: AOJu0YzDaKyXRRb8p6vDKqnpqms0c8+0evBd1hmf9AYDKYzfq8zAK1IQ BkVTdncZ48QBq6oy6ON55um9j4JFLDE9dOTQ7N3VKUMnYcAyr6xb X-Google-Smtp-Source: AGHT+IHF1r2QtlGKVN6HtXXxcFg+k0gYJd/nSgLWyKs83ZTBLQXCdo//6FQThWun5q5jEjrAv0//bA== X-Received: by 2002:a05:6a00:189d:b0:71e:768b:700a with SMTP id d2e1a72fcca58-71e768b7107mr1328450b3a.23.1728956080395; Mon, 14 Oct 2024 18:34:40 -0700 (PDT) Received: from dw-tp.. ([171.76.80.151]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-71e77508562sm189349b3a.186.2024.10.14.18.34.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 14 Oct 2024 18:34:39 -0700 (PDT) From: "Ritesh Harjani (IBM)" To: linuxppc-dev@lists.ozlabs.org Cc: kasan-dev@googlegroups.com, linux-mm@kvack.org, Marco Elver , Alexander Potapenko , Heiko Carstens , Michael Ellerman , Nicholas Piggin , Madhavan Srinivasan , Christophe Leroy , Hari Bathini , "Aneesh Kumar K . V" , Donet Tom , Pavithra Prakash , LKML , "Ritesh Harjani (IBM)" Subject: [RFC RESEND v2 11/13] book3s64/radix: Refactoring common kfence related functions Date: Tue, 15 Oct 2024 07:03:34 +0530 Message-ID: X-Mailer: git-send-email 2.46.0 In-Reply-To: References: MIME-Version: 1.0 X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 390B14000B X-Stat-Signature: obcr9xebeejm77tcmfi31jfst1esois7 X-Rspam-User: X-HE-Tag: 1728956076-870721 X-HE-Meta: U2FsdGVkX1/jHwclXIrSWyisuiUFpuccXad/qLrrz4c2FjAJx9maB2074KqH9J4ORuCOjQABiMWT0czoTUZtQveSKXMTkRj4kFQi1xPFb/kuCFj3JgJ4MtcSjgnEzUUv+Kvjnms1ba3K0wpMp0kmgJdzZyuUOqXHjKfSu9KIK6++bklP0HH3SBNNZ9D+InSPNRDPjXOhmVuSBS9Bp4LPMZFnCtRdjQrddsSHGVNmXTOfDC4GogTBHA16i42gmsXIuc1q99xDbQgVdX8QT0PnHYo2GY4l7VLhEh9yhWDRx1+qGUHAXoLDInaS9cRMQRXMiV35A1hrLFpJZ7S0i2rWT1y34DSOK9DV4l5xHmCnr9ayh5uH5ON4El0QdLWODiG1ZtD8z0uACwvb8gFHfq3ZfSa/niD4Q/kWq/6YHLRSY0mKcerWS6ZVy5REMKVfk4ObsGYXIljFBhmnm9ZNr+fQft0SrckcX/fh2QTDic1he0eI6kS8G7A9458oEknXk9X2K2FmYjdgDwwdvf8Iaf0sV6Fu7EwcqhB7UOlrvtQfbbu3tS2xOc6/E3yI3DKvpJkMN3ovSvIoH0YjUfLiOvcBQpHfpcMfUm+TVezwTqSRHKuwiZjBe9I3h67rGzJvZguRqbpSmog1IRDdfYcEbYzBxAVOwPlWiEQ5EnIkdcvjP+beCR36F2bwNpY/BosGxUNcw0Ok2ScaYu7pffemGjKcRpuOirg1iIgJJLwmuZsAkr/abp3rl6pXoVKnlrnHAPC1U6tTkohNel+0QzdtMA5cDsJUYhk07X+/edIz9Bw5URB0nVlXzsTrzu/vaVxmCO5ZAq8T/nk7fsJuuGb3T9Pl7xRErCqjJTIgMG6Z4wHrlc756KKP3eCZPlPVcNMFBaoUmd8xgtNfxZcv8K+RdEFkOqOnSv4rq1RmBQakfffLuNKJtFcLsNl4T0EYXx1gkKgMlIMPuI2HqWLKGFDl6gu 5QBrk+AD m9eacYqcIGXqlwtebi18QFGoymhi+xDnfXDN4Iodkn9znQ6rsqNG0Xky31f2atCLTdx/A6HlhrlUsm1JfvLQwjz4xQdpgs2vtVovCduafna0Oci5q7ritOytHMZ8VQccO9L+xrjqMLZCbTApErMzbpaJ6K1Zy/xUbtmACX7FsSyStCLFRbRfa+lnovWFAetIG/q622ooahAZ61VmVDIKW2l5GNB80tiwIH9ohoX0ThfCD8puNjI8QjGvCV4Bb1IRkG2twP5FPh4LKK1JUcg4X2sboAU3uFgJ1a1K3 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Both radix and hash on book3s requires to detect if kfence early init is enabled or not. Hash needs to disable kfence if early init is not enabled because with kfence the linear map is mapped using PAGE_SIZE rather than 16M mapping. We don't support multiple page sizes for slb entry used for kernel linear map in book3s64. This patch refactors out the common functions required to detect kfence early init is enabled or not. Signed-off-by: Ritesh Harjani (IBM) --- arch/powerpc/include/asm/kfence.h | 8 ++++++-- arch/powerpc/mm/book3s64/pgtable.c | 13 +++++++++++++ arch/powerpc/mm/book3s64/radix_pgtable.c | 12 ------------ arch/powerpc/mm/init-common.c | 1 + 4 files changed, 20 insertions(+), 14 deletions(-) diff --git a/arch/powerpc/include/asm/kfence.h b/arch/powerpc/include/asm/kfence.h index fab124ada1c7..1f7cab58ab2c 100644 --- a/arch/powerpc/include/asm/kfence.h +++ b/arch/powerpc/include/asm/kfence.h @@ -15,7 +15,7 @@ #define ARCH_FUNC_PREFIX "." #endif -#ifdef CONFIG_KFENCE +extern bool kfence_early_init; extern bool kfence_disabled; static inline void disable_kfence(void) @@ -27,7 +27,11 @@ static inline bool arch_kfence_init_pool(void) { return !kfence_disabled; } -#endif + +static inline bool kfence_early_init_enabled(void) +{ + return IS_ENABLED(CONFIG_KFENCE) && kfence_early_init; +} #ifdef CONFIG_PPC64 static inline bool kfence_protect_page(unsigned long addr, bool protect) diff --git a/arch/powerpc/mm/book3s64/pgtable.c b/arch/powerpc/mm/book3s64/pgtable.c index 5a4a75369043..374542528080 100644 --- a/arch/powerpc/mm/book3s64/pgtable.c +++ b/arch/powerpc/mm/book3s64/pgtable.c @@ -37,6 +37,19 @@ EXPORT_SYMBOL(__pmd_frag_nr); unsigned long __pmd_frag_size_shift; EXPORT_SYMBOL(__pmd_frag_size_shift); +#ifdef CONFIG_KFENCE +extern bool kfence_early_init; +static int __init parse_kfence_early_init(char *arg) +{ + int val; + + if (get_option(&arg, &val)) + kfence_early_init = !!val; + return 0; +} +early_param("kfence.sample_interval", parse_kfence_early_init); +#endif + #ifdef CONFIG_TRANSPARENT_HUGEPAGE /* * This is called when relaxing access to a hugepage. It's also called in the page diff --git a/arch/powerpc/mm/book3s64/radix_pgtable.c b/arch/powerpc/mm/book3s64/radix_pgtable.c index b0d927009af8..311e2112d782 100644 --- a/arch/powerpc/mm/book3s64/radix_pgtable.c +++ b/arch/powerpc/mm/book3s64/radix_pgtable.c @@ -363,18 +363,6 @@ static int __meminit create_physical_mapping(unsigned long start, } #ifdef CONFIG_KFENCE -static bool __ro_after_init kfence_early_init = !!CONFIG_KFENCE_SAMPLE_INTERVAL; - -static int __init parse_kfence_early_init(char *arg) -{ - int val; - - if (get_option(&arg, &val)) - kfence_early_init = !!val; - return 0; -} -early_param("kfence.sample_interval", parse_kfence_early_init); - static inline phys_addr_t alloc_kfence_pool(void) { phys_addr_t kfence_pool; diff --git a/arch/powerpc/mm/init-common.c b/arch/powerpc/mm/init-common.c index 2978fcbe307e..745097554bea 100644 --- a/arch/powerpc/mm/init-common.c +++ b/arch/powerpc/mm/init-common.c @@ -33,6 +33,7 @@ bool disable_kuep = !IS_ENABLED(CONFIG_PPC_KUEP); bool disable_kuap = !IS_ENABLED(CONFIG_PPC_KUAP); #ifdef CONFIG_KFENCE bool __ro_after_init kfence_disabled; +bool __ro_after_init kfence_early_init = !!CONFIG_KFENCE_SAMPLE_INTERVAL; #endif static int __init parse_nosmep(char *p) From patchwork Tue Oct 15 01:33:35 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Ritesh Harjani (IBM)" X-Patchwork-Id: 13835658 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 311E7CFC505 for ; Tue, 15 Oct 2024 01:34:49 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B9B9B6B00A7; Mon, 14 Oct 2024 21:34:48 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B256D6B00A8; Mon, 14 Oct 2024 21:34:48 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9C5826B00A9; Mon, 14 Oct 2024 21:34:48 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 7A9D66B00A7 for ; Mon, 14 Oct 2024 21:34:48 -0400 (EDT) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 658101A03A1 for ; Tue, 15 Oct 2024 01:34:33 +0000 (UTC) X-FDA: 82674117330.11.EB9BC4C Received: from mail-pf1-f169.google.com (mail-pf1-f169.google.com [209.85.210.169]) by imf21.hostedemail.com (Postfix) with ESMTP id 4F75B1C000F for ; Tue, 15 Oct 2024 01:34:33 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=M1tghm0F; spf=pass (imf21.hostedemail.com: domain of ritesh.list@gmail.com designates 209.85.210.169 as permitted sender) smtp.mailfrom=ritesh.list@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1728956013; a=rsa-sha256; cv=none; b=UzbYEeaiult4C12uxA5mnkvj/STALPvWelrZTHrXJRRW6Uhm/cPeHBmrjZMYAYfsH/A+xJ GBZ/d63+6gywkkDhk+M7AwcBPaKAEHirhsqkOcmGOUHGXQeCES0ZoUrJpp/JYSMJR75IKu o7swmxq3z9dJZPcRPCnsB8fXXfQyW1Q= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=M1tghm0F; spf=pass (imf21.hostedemail.com: domain of ritesh.list@gmail.com designates 209.85.210.169 as permitted sender) smtp.mailfrom=ritesh.list@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1728956013; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=t5daj1tikBz1GmvjDxbc2gCsvgSNJoz/zYutj+6dtSk=; b=z8zRzVjsQhpWOO8SNld2ZU9/58dk4qiHHL6sF5whhVh77lxOq+9wlgtfzpGTZfGLQBWsTt frqAVZEynAVojSBLHO01k7MpwptexeSexjWwOZE7vILhgB8Nf7vbZSFOjfs8E4qdxMRsjW McGstYD2SIaRsEi1X6H1RcDNk+9VxMM= Received: by mail-pf1-f169.google.com with SMTP id d2e1a72fcca58-71e6f085715so926891b3a.2 for ; Mon, 14 Oct 2024 18:34:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1728956085; x=1729560885; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=t5daj1tikBz1GmvjDxbc2gCsvgSNJoz/zYutj+6dtSk=; b=M1tghm0FFZuNei25lpQsSqII5k1BkSBMOA1EB2UhtXmVjyNLacl/jTBi77NKG9Rx+d RaoIVN51PVsiOTrc7SC56B2/ZskOn6VRL18FgJ3j9R1NLgKUZohmFQyDKNr4M7llgBu+ f7q26O4JTDuaAGgt6bs3jXRkt9NemElElhIam0aTC4C+dGeYsZktEBj/WqNiXpaDviio IzjQYoAVhuUyUZ/Q7suN0R5dkwzDxfnWoBMyijZseeoGbJBkbcOZ1nA+NTzlhYLms/i9 mafheZvihkf4Rvve07Rid0oRjpnfEPPTzddKh9xopWkQV7tES0WUzhN/3PEi71ppqQQU BnyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1728956085; x=1729560885; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=t5daj1tikBz1GmvjDxbc2gCsvgSNJoz/zYutj+6dtSk=; b=gEnMorkpwRuxdIJKdjuS6C674CiCKrE7Lxj02mza9I157MI7KJeBals51QDcbs0zaY 0sWS5ePhhl533GvKVKZWfXpwz3FsOzn5cecOdqlWl0y1EU8uNeeoJz2GKxRvw6hX8OHg tK64ZReZL0vptF4nhU+pO7HGEWgbzz1GVXwBBQ09wtjEIzqzn4EkTY04O2K6uk5JdaNN /3b3nx1LJIeKNfnY6Cma5+B2gYTEW3uGuD1skmm9ia44m6oelYee89Wv1jSuCVfkKQsj N5mTvQHdR2ibgPR0yXT1zy2a7kOneTDcKJATglRMivOtOZ8UMcCGP/BIs9zif/tSx0IA 9AWQ== X-Forwarded-Encrypted: i=1; AJvYcCXh6xOWtutrGkjfSrH7A7NqHd+mm4VknL1laQXZKaHCQvTtGrzeFG31+Aq/ekEp4uWMyDG8lR2cRg==@kvack.org X-Gm-Message-State: AOJu0YxogqCMDzGMPukZOmGbBixF0ecSepFIPkq+RZAZqDH/6OaVXlbC Cigra8tpfOw63PpSjanCb9dal0PGX1bb53mLC1n36X22FZHCOrZV X-Google-Smtp-Source: AGHT+IEs2IxrBsPT6YXEgz2epQyHoorcOdT0d4hm7NYr74rGWRI5/0uchu7H7p2tlDXCJav5W/E8eg== X-Received: by 2002:a05:6a00:3e03:b0:71e:3eed:95c9 with SMTP id d2e1a72fcca58-71e4c1bfba9mr15531178b3a.22.1728956085196; Mon, 14 Oct 2024 18:34:45 -0700 (PDT) Received: from dw-tp.. ([171.76.80.151]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-71e77508562sm189349b3a.186.2024.10.14.18.34.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 14 Oct 2024 18:34:44 -0700 (PDT) From: "Ritesh Harjani (IBM)" To: linuxppc-dev@lists.ozlabs.org Cc: kasan-dev@googlegroups.com, linux-mm@kvack.org, Marco Elver , Alexander Potapenko , Heiko Carstens , Michael Ellerman , Nicholas Piggin , Madhavan Srinivasan , Christophe Leroy , Hari Bathini , "Aneesh Kumar K . V" , Donet Tom , Pavithra Prakash , LKML , "Ritesh Harjani (IBM)" Subject: [RFC RESEND v2 12/13] book3s64/hash: Disable kfence if not early init Date: Tue, 15 Oct 2024 07:03:35 +0530 Message-ID: <29cca55915a923d1823644b37fa571234f9ea549.1728954719.git.ritesh.list@gmail.com> X-Mailer: git-send-email 2.46.0 In-Reply-To: References: MIME-Version: 1.0 X-Stat-Signature: 94f7t1je4noy6phuzsjsznj9fxemm4u5 X-Rspamd-Queue-Id: 4F75B1C000F X-Rspam-User: X-Rspamd-Server: rspam10 X-HE-Tag: 1728956073-254814 X-HE-Meta: U2FsdGVkX1/VWiNLFlgKkIoFj2BHyNFmSp9qUnOV68l3wicGP7PM5JSfqzDB7ReGRUaOv27MFUgWjN4fXVO6oXKDWWRAN2+K+ldAP1OTIcObYgoiNxVwZxoP9ZDl7sBb1VdeaZDY/fRV3m4VWm0TevXPU0ooO7mikdiNRb4C6YqdAmSrkA5anmNvWQsq/7IqRdWi1jDm56dPqmQEBUGg27rBXCAjuW5ZQopSvMzgnw2VVOklZpP+Ajo0K/1Y1vWj7tNgq4t0GTDr68Ju6v2svrIFmyb9YI6VxBaZ491eItSXleF8s0nLFDGlYZ27CTufWJlTOf+LBnWzFhuCSt5hvpXdWITvJ2zRvqfTa+lpZEZwFcfOssJaAjiH42GkjQE18OqmVYOBuPO1d9MWR5ygrPkNATAwO0opav2DD4fTiWoBydtnPJBfHo+zWlIE4MJxF2hZ89b/Ks9HenKTQCFVrzROnaSkbWxIjNkMHmfeyHL14cunhkAvgkTpeK3NKsQgL8X8cZtOVbRNetireRReyI36RcJQxd5gdHp+jr1ZSh+R7CCO8Sjgjey/V+3+lBSEM+6Eu1ZVZuuUqYz9+wYiQF3KkT9zJQ78y8xrHgw09KQsHB9HGU4+UOiHt8040prqX3/x6m4nnkOh5SvAJ0jsA3QFC3kjP0JUKlr/sDo/B80JgTOkumUEVC1bgdKMWE6UZ8FOnVOvKRegFMuDAUgWGqfIecESsB2/ZFfTVETyMxo3wwgxYzJRvBrEgEP3frvUV3qkHmCVK8wiiVFHkxmLNPP5IMThR7Oi0s/eFMcZWhP5tTiHArktXNpiTmZtStfE9wNM4MJfRRow4bjRVO3W7fqRi8FGmQ6bCAQFSTc0lEOEcY1J6opi6AxqMTPpDau1a0IOl62g5YSd1E8rpHF2zBj9GP8VR4TfmJKJF8OhVUOdZC3Mg7+EzSAgj5hI9a+xgTrodrqMpy3RX3Km+VI lzeiQyN0 SRnBk7TU81sp0CxHW/94Wb8XH791EDstJA11B0hIQqBUhD9/vvLEjC0sYqtIJcaLot5YOM3tNx/3Zc8rup99WH5UugTUW+mWTgwy/ys6hVc7TXv9urTNVv153SwN8KH1UX71OucDs5MbuvIHGQPJFWYjyJYvzUWti36NFqSWylxCMlML82FwKSKapMxoYNFU00EgSl1OVn+CdwB5Xm6AhtkTLlSmX9PVXeYAWSrFNUivLuIrWBbsUQWfGkH22Kisd/b/DnME/YY2GRdNEJfiSiiv/+w5FJ+EvfMF0 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Enable kfence on book3s64 hash only when early init is enabled. This is because, kfence could cause the kernel linear map to be mapped at PAGE_SIZE level instead of 16M (which I guess we don't want). Also currently there is no way to - 1. Make multiple page size entries for the SLB used for kernel linear map. 2. No easy way of getting the hash slot details after the page table mapping for kernel linear setup. So even if kfence allocate the pool in late init, we won't be able to get the hash slot details in kfence linear map. Thus this patch disables kfence on hash if kfence early init is not enabled. Signed-off-by: Ritesh Harjani (IBM) --- arch/powerpc/mm/book3s64/hash_utils.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/arch/powerpc/mm/book3s64/hash_utils.c b/arch/powerpc/mm/book3s64/hash_utils.c index 53e6f3a524eb..b6da25719e37 100644 --- a/arch/powerpc/mm/book3s64/hash_utils.c +++ b/arch/powerpc/mm/book3s64/hash_utils.c @@ -410,6 +410,8 @@ static phys_addr_t kfence_pool; static inline void hash_kfence_alloc_pool(void) { + if (!kfence_early_init_enabled()) + goto err; // allocate linear map for kfence within RMA region linear_map_kf_hash_count = KFENCE_POOL_SIZE >> PAGE_SHIFT; @@ -1074,7 +1076,7 @@ static void __init htab_init_page_sizes(void) bool aligned = true; init_hpte_page_sizes(); - if (!debug_pagealloc_enabled_or_kfence()) { + if (!debug_pagealloc_enabled() && !kfence_early_init_enabled()) { /* * Pick a size for the linear mapping. Currently, we only * support 16M, 1M and 4K which is the default From patchwork Tue Oct 15 01:33:36 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Ritesh Harjani (IBM)" X-Patchwork-Id: 13835659 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 39E1ECFC505 for ; Tue, 15 Oct 2024 01:34:54 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BC1D56B00A8; Mon, 14 Oct 2024 21:34:53 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B72136B00A9; Mon, 14 Oct 2024 21:34:53 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A3A906B00AA; Mon, 14 Oct 2024 21:34:53 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 81A626B00A8 for ; Mon, 14 Oct 2024 21:34:53 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id BE6F61208D1 for ; Tue, 15 Oct 2024 01:34:45 +0000 (UTC) X-FDA: 82674117582.29.37D69F4 Received: from mail-pf1-f176.google.com (mail-pf1-f176.google.com [209.85.210.176]) by imf02.hostedemail.com (Postfix) with ESMTP id 7D1DE80006 for ; Tue, 15 Oct 2024 01:34:38 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=EgXrsNiR; spf=pass (imf02.hostedemail.com: domain of ritesh.list@gmail.com designates 209.85.210.176 as permitted sender) smtp.mailfrom=ritesh.list@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1728955902; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=rG0rlJ7RpNnGy840avhtCY+OIP6FbV4qxEoUkbOoVC0=; b=t3ukVZle3ulP1EoK/w3J7bUfNynwFlk7GZnFnWWlvt75+SLewl97iG8tRJp3nkoPBwN6Y7 +BQBh2YHbQp3sixZHo8RQA+4JOm4rligGFjsCKbmmKlwSU9PLIx1kjFv3dCJsLHRz3k5a1 MKL04q5e1AK259TMC5sy4cXZIKMtnlA= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=EgXrsNiR; spf=pass (imf02.hostedemail.com: domain of ritesh.list@gmail.com designates 209.85.210.176 as permitted sender) smtp.mailfrom=ritesh.list@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1728955902; a=rsa-sha256; cv=none; b=lbnwAqoT4eHGdOrPF7TRXVjxCUVMONvbW75XB6XetRiMhKdfa/CkRBt503ydFvdxuzynRy 5i6eMHT1wRljrtjvLmGP9ertYW4UxCjHwOAmHbKdxfN/YVuhmF40wbvL+CJ3DA1o97yml8 JKngorlMa3zp7D0sbJp6UdmvFUzcVK0= Received: by mail-pf1-f176.google.com with SMTP id d2e1a72fcca58-71e483c83dbso2992965b3a.3 for ; Mon, 14 Oct 2024 18:34:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1728956090; x=1729560890; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=rG0rlJ7RpNnGy840avhtCY+OIP6FbV4qxEoUkbOoVC0=; b=EgXrsNiRroATCbU7IIzIL0rZ8bSFRjZyAhL4HZEjJMaXd/nyCieNOQ2D0WrV6aoQ1v ur6ovHdWT8UM2QTmJd6Ui5BAXlBX2GbwmoeRyy/Y2g+YSXq57aSUCGz2s8csGcOUCg+3 elRUp26LMiDYP4rtlBO/JrAZc9Wstg3sdOQUsr7nJ3UMyN7cDuh/Oh0G7WnrL0FRUlla xl4U4owG2qSe+3hbuwweU8XmMG1Mgd60jgb53dpkwaQdYc80VDXRVGxcDqURuK7/XAou 90bEGA7VfBUqXaDc1G1r5/J4FWFiE/FJh6NWNmtQSGHQCcFeNOn+kEwLAhcQalAvVX09 KiTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1728956090; x=1729560890; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=rG0rlJ7RpNnGy840avhtCY+OIP6FbV4qxEoUkbOoVC0=; b=w0yvbh9xoFDX2PtK0ue/kHhMTK1x5w1gS7GebxKYvr6oTtuYxyN3dhiQOfEDvEaW3k KNsBLPyORuz8Ww59O7HZJgoWvFmtp4zfG91UftfcVL4R354prQxaQij0yISwDBOIRKpi 9mLoO3tZKxwLupGeQany3IRHdLyqqT8cmOnxFcadkVEZvG76t3FgX/LNY3x5atO5HYj7 ROpdMIGHR4jIlAkiPf4nEGkVI3ftKBrC2bmKEVZ+lGfks4kEhiNk4LMMb8X59qBxa/aa BbFpfqlOd7R55/YSMS4tAVpD+DGDa4qoX8f0A9HSP6ZwZR3KskwntJz+co2/BNC5g8Lr QHNA== X-Forwarded-Encrypted: i=1; AJvYcCWGaCBiM4NvFKU+fgMDD0rprW6Jj8Czy5ubJerFd1j7wPZ9f1lmnTqA4/q8pBFzlh4tcqOjOWuXWA==@kvack.org X-Gm-Message-State: AOJu0YxaTBPCf397hWgW/29lPWR3U9qpvDe8ccAJrZyUESY52qmbHPA7 3p386iFDQ0a5knigp4BTQxEAfhHFxWuAmJ5A/QK/8+pKIzamNBIS X-Google-Smtp-Source: AGHT+IFvESYA3zS1GBFZJxbiWhM237fiGLHeDy47xUMjk/AhsGWJAlSSfmCDieCeQukhtrPpShvuWQ== X-Received: by 2002:a05:6a00:1404:b0:71e:5033:c5 with SMTP id d2e1a72fcca58-71e50330377mr13492824b3a.14.1728956090001; Mon, 14 Oct 2024 18:34:50 -0700 (PDT) Received: from dw-tp.. ([171.76.80.151]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-71e77508562sm189349b3a.186.2024.10.14.18.34.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 14 Oct 2024 18:34:49 -0700 (PDT) From: "Ritesh Harjani (IBM)" To: linuxppc-dev@lists.ozlabs.org Cc: kasan-dev@googlegroups.com, linux-mm@kvack.org, Marco Elver , Alexander Potapenko , Heiko Carstens , Michael Ellerman , Nicholas Piggin , Madhavan Srinivasan , Christophe Leroy , Hari Bathini , "Aneesh Kumar K . V" , Donet Tom , Pavithra Prakash , LKML , "Ritesh Harjani (IBM)" Subject: [RFC RESEND v2 13/13] book3s64/hash: Early detect debug_pagealloc size requirement Date: Tue, 15 Oct 2024 07:03:36 +0530 Message-ID: <6b5deb16494e80703577e20fbb150789c83076a9.1728954719.git.ritesh.list@gmail.com> X-Mailer: git-send-email 2.46.0 In-Reply-To: References: MIME-Version: 1.0 X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 7D1DE80006 X-Stat-Signature: xicru8d5g6ztzs5zo6mocnurxtswzetf X-Rspam-User: X-HE-Tag: 1728956078-552741 X-HE-Meta: U2FsdGVkX1+/JAB8edAc4JuGX9COeBuAjPLhIi3li86Q1Jk4dhi0NatFK7tqk6438dKG0Te80rLoRKNGBx99ydbMA9Iq39rLolYbg/cq+NFsKuFrs2qQ51q+blVji42wQHBB1+6KtlhsWnapg7/4K/MYm1QQVi6zO8198tjzUoi78lAqMDPXwirkrShN+ENgpC/HFQI4oiYqQZ13dLgb+OH0yMWz/TgotW2pFzzaN61kGsEsEYIFZb5Qw6v0crCmRtuP5mXnwktejj1GK+lO/LvhqtSuVxDalIiPJpwAYHTMBwefgRzqylJX8xF0hJct9+FAVdoAVM+Gw/4abj9ojXzdhPItPSI7La9+Qj8mFPTHJwCOFy7MRlNUgxaP0L7nx4+hhZU0aSwRCMG4HdYLHswpj9RMucQ1c0I+w+ZJ+WLRG9Z2dXOGht6T2JvVEj2HOhB8DURr3qSxFLZlZLVzxpz0+CZhWNXGu8GumjizFfr5P1cj2VPw790C+BAAU/5sfF7Z5Rtownm/4ZXc/Dz2Cd5UJ5y9/t+r2Eivi/S89V7cBAkIsrOmZOEFGC1rLV6Ss2YPShYbeCPK9Z+PK8giRT5XuQn62smaE6E896FCH+73bqjUmUeBnq7Ztr4Q+pkyjNl+0Ys1R5gZ/QMxm9VjJ7LyEx71yDiLOMbkJeQ/TImrn3HCH3L/9fC1p41Gp+ZOoZP+tfFVhfrr5Yxtld3/n4I2QKidAq1+Ia4gikYoQfYRC386eFZR2T8yPzkuo3tMdAnpfMC0Qey8CmaHu0QiP/hU1crjt02AyRS38HvrcS5ZXVe/HgF1cLUJhMWMVGx/DrTeBRgToQON03eAfcQ/SAMEnaaE6VnM4wU2Ubev6gZoSTXnWHjqJKbyPQMGdv9XJSsH8thACkb+yIuGqVRbvb8+9uyFUHzAWOrZ0Z5gzwb/GNRRr3M+GR91ReTyBVOkJF/pRF+Vhs6nubZ8TST 4zBoqEs8 ZdEkfQU5AQXJXNNHT1nEx+Jd4/A9WRJAPRTOEIWJKcUTuo4xSeeU/8vCAa+4bEtmLC2NC4eaqAHlk6v0QFcqQEcZ+Yp5AAPfcBxUuKJvmx1r93gGjM0iYK9/TiF9kFblUWImcc4dzTZ6tOxgHEpD5kC1/C4j0bFFgv0q7twaPdiKj3xSgKt40WgGqONPN7XacWhxhkekjrgD3NqfKhEs/Zb7hvx98WRbIgdbu+g+cMek5M5gmVUrppvH6AyIvKh54rnVrkQ5M0V69QWNVJD5DJ8s9QgXsNr8JA6t62JgvY2zx4vVLPAsWRxoQDZyP+w3jWi3vIFuPT2GqNxfVLKGHivZDmw== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Add hash_supports_debug_pagealloc() helper to detect whether debug_pagealloc can be supported on hash or not. This checks for both, whether debug_pagealloc config is enabled and the linear map should fit within rma_size/4 region size. This can then be used early during htab_init_page_sizes() to decide linear map pagesize if hash supports either debug_pagealloc or kfence. Signed-off-by: Ritesh Harjani (IBM) --- arch/powerpc/mm/book3s64/hash_utils.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/arch/powerpc/mm/book3s64/hash_utils.c b/arch/powerpc/mm/book3s64/hash_utils.c index b6da25719e37..3ffc98b3deb1 100644 --- a/arch/powerpc/mm/book3s64/hash_utils.c +++ b/arch/powerpc/mm/book3s64/hash_utils.c @@ -329,25 +329,26 @@ static void kernel_unmap_linear_page(unsigned long vaddr, unsigned long idx, } #endif +static inline bool hash_supports_debug_pagealloc(void) +{ + unsigned long max_hash_count = ppc64_rma_size / 4; + unsigned long linear_map_count = memblock_end_of_DRAM() >> PAGE_SHIFT; + + if (!debug_pagealloc_enabled() || linear_map_count > max_hash_count) + return false; + return true; +} + #ifdef CONFIG_DEBUG_PAGEALLOC static u8 *linear_map_hash_slots; static unsigned long linear_map_hash_count; static DEFINE_RAW_SPINLOCK(linear_map_hash_lock); static void hash_debug_pagealloc_alloc_slots(void) { - unsigned long max_hash_count = ppc64_rma_size / 4; - - if (!debug_pagealloc_enabled()) - return; - linear_map_hash_count = memblock_end_of_DRAM() >> PAGE_SHIFT; - if (unlikely(linear_map_hash_count > max_hash_count)) { - pr_info("linear map size (%llu) greater than 4 times RMA region (%llu). Disabling debug_pagealloc\n", - ((u64)linear_map_hash_count << PAGE_SHIFT), - ppc64_rma_size); - linear_map_hash_count = 0; + if (!hash_supports_debug_pagealloc()) return; - } + linear_map_hash_count = memblock_end_of_DRAM() >> PAGE_SHIFT; linear_map_hash_slots = memblock_alloc_try_nid( linear_map_hash_count, 1, MEMBLOCK_LOW_LIMIT, ppc64_rma_size, NUMA_NO_NODE); @@ -1076,7 +1077,7 @@ static void __init htab_init_page_sizes(void) bool aligned = true; init_hpte_page_sizes(); - if (!debug_pagealloc_enabled() && !kfence_early_init_enabled()) { + if (!hash_supports_debug_pagealloc() && !kfence_early_init_enabled()) { /* * Pick a size for the linear mapping. Currently, we only * support 16M, 1M and 4K which is the default