From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7D96CC4828E for ; Fri, 2 Feb 2024 22:30:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id F2D216B00AB; Fri, 2 Feb 2024 17:30:14 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id EB5FA6B00AD; Fri, 2 Feb 2024 17:30:14 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D2F846B00B1; Fri, 2 Feb 2024 17:30:14 -0500 (EST) 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 BEE306B00AB for ; Fri, 2 Feb 2024 17:30:14 -0500 (EST) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 99B8416022E for ; Fri, 2 Feb 2024 22:30:14 +0000 (UTC) X-FDA: 81748308348.29.450F52F Received: from mail-pl1-f172.google.com (mail-pl1-f172.google.com [209.85.214.172]) by imf02.hostedemail.com (Postfix) with ESMTP id 0A08280026 for ; Fri, 2 Feb 2024 22:30:12 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=0dazNM+v; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf02.hostedemail.com: domain of eugenis@google.com designates 209.85.214.172 as permitted sender) smtp.mailfrom=eugenis@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1706913013; 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-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=4gHfXsDd1+NPNrp7/zCgopLQIxA18bpbncOGieuL0yc=; b=TIpoT8T68AWgMywQJP5dFNxgLCWujvcTSpF/LN96YTCIhZ/nvlVFa7bmzIDoY915hbHtPc 3Ph2u98jCHTDh08H7NKzdggu0tIrPX0wEAAzqe9hL3GLdgtnTL1qykgWccqS0S/h56Axi0 /srSialKCB24/27X0LZp6VkQdVywBZM= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=0dazNM+v; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf02.hostedemail.com: domain of eugenis@google.com designates 209.85.214.172 as permitted sender) smtp.mailfrom=eugenis@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1706913013; a=rsa-sha256; cv=none; b=qHJRd7Y2ryQTFOAYF9VgUO66Z9QOUfFfCsUTkvYTTXjP9oIy2+OYjGTOd8ehtwL5n+AUAW PKslUAw7u/wcDA+n7xXdKnyWIDgDhG467vvqdwJ1QTeRx5dyjPM3+B06xgO1hAmr8r5xRv /SjZFHxDG3EdTDDmBNmVLcx6GTowJvc= Received: by mail-pl1-f172.google.com with SMTP id d9443c01a7336-1d89f0ab02bso13565ad.1 for ; Fri, 02 Feb 2024 14:30:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1706913012; x=1707517812; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=4gHfXsDd1+NPNrp7/zCgopLQIxA18bpbncOGieuL0yc=; b=0dazNM+vW2GeUnw4J/sGSVPnEPiGrt+9CkQVabsgVde56gnNd4S5DhKi6OC7rCwv62 Qc0GViztwiRS14pHNM3XG76ntwL+eYn8wBMBiFJPUSo2m70+ZGvk6Vz1+zK+ee/NWuIl vX4/is0vHrmWHNAJr7zfBcGeiYF1JTaePSTK9OgRZuVWs8OjW4G0vVOP8JWN/ElC1k7y X0yvHylPmtAv3j216+BKKzTKa/wQxWFDCTYi32bb478xWvMMFx0zDo7Pxe5f+f5RQH4G kgS52rGV09N3LM/V8CepCRXcZq6clA+xvN3u0QiTnfgzfz3yLXpvgEtONdUKO5x2avol tcPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706913012; x=1707517812; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=4gHfXsDd1+NPNrp7/zCgopLQIxA18bpbncOGieuL0yc=; b=HCyDxvZX4yGnRZ6lWSm1E4IyAUKskM2QuQyqP24AxkXRpgcRtZbOCHtIUZp4aRsvle UfhdKTAQoqa/j5W2rBEDd4NTCqnrHrCmPOLQoK/omRqrSBGsL+mQSWxW9nv8TDFou9H+ 4IaveZmD6XYklbYuIo3ZN7SOvDvqqwaDDkuV3qs40TEEeRUhL0Q7Bzp1yzVUtuRZeVtZ LRaNFAIQtUW19BfdhVPW/IBHzdObPOG9BSZFIViOU3YbQUt9o7hbbtHGKDpovXkIoUxw 4So/Vg3/FJ7qIfMC5SV+U+VaVAtbMQbWxrHLpxGKw6wIAHVbNI+iaUs8UV19St52FiSW 8YTg== X-Gm-Message-State: AOJu0YyX5isF2Nqs/Gkfy1ORz5MQCPiCuEZkBhe997Jo1HrHabtKML6L 4AS6pUG5N2qB4p1vQ2WlBdw1PCEJJXuPZIyNoMQ4QWq765nuBegdwl23U2oeHz4RXj5cy6iKQaw hreBmzWQw76DMFtB6rWwmDrIR5vN3XgjJB3gE X-Google-Smtp-Source: AGHT+IGYPtzOWKJUHpZOUv3WD2/u8xqCH2po02LT82xgQd99fQsVzRN06AKewo08mu5evakZqsXkrrjcw9wBJU3p9vw= X-Received: by 2002:a17:903:2349:b0:1d8:aada:a7e3 with SMTP id c9-20020a170903234900b001d8aadaa7e3mr26544plh.3.1706913011645; Fri, 02 Feb 2024 14:30:11 -0800 (PST) MIME-Version: 1.0 References: <20240125164256.4147-1-alexandru.elisei@arm.com> <20240125164256.4147-23-alexandru.elisei@arm.com> In-Reply-To: <20240125164256.4147-23-alexandru.elisei@arm.com> From: Evgenii Stepanov Date: Fri, 2 Feb 2024 14:30:00 -0800 Message-ID: Subject: Re: [PATCH RFC v3 22/35] arm64: mte: Enable tag storage if CMA areas have been activated To: Alexandru Elisei Cc: catalin.marinas@arm.com, will@kernel.org, oliver.upton@linux.dev, maz@kernel.org, james.morse@arm.com, suzuki.poulose@arm.com, yuzenghui@huawei.com, arnd@arndb.de, akpm@linux-foundation.org, mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, dietmar.eggemann@arm.com, rostedt@goodmis.org, bsegall@google.com, mgorman@suse.de, bristot@redhat.com, vschneid@redhat.com, mhiramat@kernel.org, rppt@kernel.org, hughd@google.com, pcc@google.com, steven.price@arm.com, anshuman.khandual@arm.com, vincenzo.frascino@arm.com, david@redhat.com, kcc@google.com, hyesoo.yu@samsung.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, kvmarm@lists.linux.dev, linux-fsdevel@vger.kernel.org, linux-arch@vger.kernel.org, linux-mm@kvack.org, linux-trace-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 0A08280026 X-Stat-Signature: xar94f7bzt9uq3st4fpfpj696ohikrdc X-HE-Tag: 1706913012-595211 X-HE-Meta: U2FsdGVkX1/UFULX7bl5D6ImIJHr9Gy4WgfKP98BLBSldGhM7034Orwra5fW6U2eFC5odtJlN8bID5NB+DQNT3Qso8YeGdg7R71z1nmarfG9FWilvxjJ6ZgrxVpWxJwDXJbalnO3lcPG2stv3tqIlJxHB7mQtqZqaq4RTY6sBRP0SNRruI7yf9TVdD2JKMAJ1YpInrZT1nFVLwG6DFaffjabMJr90PQ0tZT+O1mRv6Jq97su5iZ63M/crPb7pC2FfxVIKgCPvxq9LzXFm11V8Apppt1F4yfPcnKiueMyqL98PRzt91t9AM0sJXkiTrBxUMx4I2XqXqClm4i4U6m6PNjXjkgGFJOnHEzOOB8FnfbgsW5ytIKTDlGQF3ZxP+1ONzsf9BH/9GZAhL8iU0ZKGHRwYX4n/nZfEqb2QRppuQ4eNxjkB8UiKKATgh/UJaWL8OBhrbmq79XnJqL1vRKdkeG+3+Kbkd/KtocnaniUuxSfBZxJuQmcx0Pbv/Oef7bH0IDuMvC5DR8F2H/Lq6Y8Fi5jU9IYzEYnEVYLlJCxACpUZnqCi8iftB8PKPSXFEJtjAqmk9i3cibLmr8DoOn8QyXeV47eibRh+YUeEc3lYwY9M2lfNGN/H3fAyuErWCwZt64Kb0rSpdO+0OpZpnZ2NBZK7D3lOVOY4ZjcZmasB2/Ihq4ZW8MlVgsoiskWO/VsidoV8bCAVR/UIQ4GZyjXm/zYJ1benDjnIUKhDkAKl4La7nPtm9aFMm54dYk4BOJ2u0+AyCIbwK2PvbMCavtj5HDSV7SSyIdsqMYwasRr/Q7nVImOE/FCXM+bfc6xEr2jm1Qmdu9S3Gimi50FW/IK+bGprbJeRcHnKW7CYbIMsk1mn+D/IYG1PorEawmEjpp+3hUi3ErXJpmkU6JOkBLHgpU5n7SxOefcbYm8zyyJawLOgQJOwRBAfJc33AX233JeRf1ihwk3JtmtmSSWngb vOHuPPKJ QgizM 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: On Thu, Jan 25, 2024 at 8:44=E2=80=AFAM Alexandru Elisei wrote: > > Before enabling MTE tag storage management, make sure that the CMA areas > have been successfully activated. If a CMA area fails activation, the pag= es > are kept as reserved. Reserved pages are never used by the page allocator= . > > If this happens, the kernel would have to manage tag storage only for som= e > of the memory, but not for all memory, and that would make the code > unreasonably complicated. > > Choose to disable tag storage management altogether if a CMA area fails t= o > be activated. > > Signed-off-by: Alexandru Elisei > --- > > Changes since v2: > > * New patch. > > arch/arm64/include/asm/mte_tag_storage.h | 12 ++++++ > arch/arm64/kernel/mte_tag_storage.c | 50 ++++++++++++++++++++++++ > 2 files changed, 62 insertions(+) > > diff --git a/arch/arm64/include/asm/mte_tag_storage.h b/arch/arm64/includ= e/asm/mte_tag_storage.h > index 3c2cd29e053e..7b3f6bff8e6f 100644 > --- a/arch/arm64/include/asm/mte_tag_storage.h > +++ b/arch/arm64/include/asm/mte_tag_storage.h > @@ -6,8 +6,20 @@ > #define __ASM_MTE_TAG_STORAGE_H > > #ifdef CONFIG_ARM64_MTE_TAG_STORAGE > + > +DECLARE_STATIC_KEY_FALSE(tag_storage_enabled_key); > + > +static inline bool tag_storage_enabled(void) > +{ > + return static_branch_likely(&tag_storage_enabled_key); > +} > + > void mte_init_tag_storage(void); > #else > +static inline bool tag_storage_enabled(void) > +{ > + return false; > +} > static inline void mte_init_tag_storage(void) > { > } > diff --git a/arch/arm64/kernel/mte_tag_storage.c b/arch/arm64/kernel/mte_= tag_storage.c > index 9a1a8a45171e..d58c68b4a849 100644 > --- a/arch/arm64/kernel/mte_tag_storage.c > +++ b/arch/arm64/kernel/mte_tag_storage.c > @@ -19,6 +19,8 @@ > > #include > > +__ro_after_init DEFINE_STATIC_KEY_FALSE(tag_storage_enabled_key); > + > struct tag_region { > struct range mem_range; /* Memory associated with the tag storage= , in PFNs. */ > struct range tag_range; /* Tag storage memory, in PFNs. */ > @@ -314,3 +316,51 @@ void __init mte_init_tag_storage(void) > num_tag_regions =3D 0; > pr_info("MTE tag storage region management disabled"); > } > + > +static int __init mte_enable_tag_storage(void) > +{ > + struct range *tag_range; > + struct cma *cma; > + int i, ret; > + > + if (num_tag_regions =3D=3D 0) > + return 0; > + > + for (i =3D 0; i < num_tag_regions; i++) { > + tag_range =3D &tag_regions[i].tag_range; > + cma =3D tag_regions[i].cma; > + /* > + * CMA will keep the pages as reserved when the region fa= ils > + * activation. > + */ > + if (PageReserved(pfn_to_page(tag_range->start))) > + goto out_disabled; > + } > + > + static_branch_enable(&tag_storage_enabled_key); > + pr_info("MTE tag storage region management enabled"); > + > + return 0; > + > +out_disabled: > + for (i =3D 0; i < num_tag_regions; i++) { > + tag_range =3D &tag_regions[i].tag_range; > + cma =3D tag_regions[i].cma; > + > + if (PageReserved(pfn_to_page(tag_range->start))) > + continue; > + > + /* Try really hard to reserve the tag storage. */ > + ret =3D cma_alloc(cma, range_len(tag_range), 8, true); > + /* > + * Tag storage is still in use for data, memory and/or ta= g > + * corruption will ensue. > + */ > + WARN_ON_ONCE(ret); cma_alloc returns (page *), so this condition needs to be inverted, and the type of `ret` changed. Not sure how it slipped through, this is a compile error with clang. > + } > + num_tag_regions =3D 0; > + pr_info("MTE tag storage region management disabled"); > + > + return -EINVAL; > +} > +arch_initcall(mte_enable_tag_storage); > -- > 2.43.0 >