Received: by 2002:a05:7412:1492:b0:e2:908c:2ebd with SMTP id s18csp569253rdh; Wed, 23 Aug 2023 08:24:04 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFsDZ1Hzs7+jVPNm6iJYur+UXmvF7mO6qu465ORXtREKgrohKWO0tiYixT+u7tOBUi37HEa X-Received: by 2002:a05:6a20:1615:b0:135:4858:681 with SMTP id l21-20020a056a20161500b0013548580681mr12961450pzj.9.1692804243707; Wed, 23 Aug 2023 08:24:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1692804243; cv=none; d=google.com; s=arc-20160816; b=Lcm5TCAPPKkkx3MzDC3bonOBxJ/Hz15xrtvGZEhSo6nD5Qv2wQXLi7RZzT8JisagmX osjmQuH4d63Q3E+YbXpdtDwvj2vf7jiPe1hSo+nqSYJwWYeWMT4dW3oDOtYDjpjwWGFy C+JCmgWBMVEDHqwZGeInN2k2lpph1pJzwi4yKhpXXu62sz6larq8qqqg6LixbzJLgKUl /mW8yUTH+ZIf/nDJ6uCqWn3NmBNOzv9RhPCbf1QJLEkwWi/pokuMqELSv5+/s20sKTew lHCrPUpum5DSa98kH5Ru9mR8phGi1rEF9as57JsbGoNyFUda+LlI0JTgcHy/9gLJLs+3 6sEA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=2ibseDnUSNnUHw0ddS9Rgi0iYzaH2wNqC2tvgyGRHr8=; fh=imQ/NyNBnYYmfGk25mVbc8KayF+owEio9SAkc/cwCHU=; b=Nd7aZQbade+D+iOnkOdJ2jC81AyswtTDTW1IdUcozRbmyEJfnVXcdv40khWDFA373u od47H89cR1UxHWvMGMH9meej4fI/mB2hONnGMfIZ0McAuthWPZ5AZgydaTui7mc82w9n VeC1y9UQ6eHoVRD2knbDfXyXFjrFl3upfjj4w1Vk1U+o/oBMLowO33aOTXCQO9yySM1C 2wjdhACAJOSbJkAJdSxRhQ2js0+XYhjja3In/psqqZM+UpF5+VhkhXDYdy/J1pmpjWfo HOPt3BYfZH8Unr9tQGu6kxZe0PY/i+StV9XHUADqv9X39s+HiT8vUhsFmYB5fPavreMB II1Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id h2-20020a635302000000b00553813c2df0si11146794pgb.513.2023.08.23.08.23.50; Wed, 23 Aug 2023 08:24:03 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235687AbjHWNRf (ORCPT + 99 others); Wed, 23 Aug 2023 09:17:35 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34090 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235397AbjHWNRd (ORCPT ); Wed, 23 Aug 2023 09:17:33 -0400 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id BDC4AE7E; Wed, 23 Aug 2023 06:17:08 -0700 (PDT) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id ECD8715BF; Wed, 23 Aug 2023 06:16:36 -0700 (PDT) Received: from e121798.cable.virginm.net (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 8BF703F740; Wed, 23 Aug 2023 06:15:50 -0700 (PDT) From: Alexandru Elisei To: 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 Cc: pcc@google.com, steven.price@arm.com, anshuman.khandual@arm.com, vincenzo.frascino@arm.com, david@redhat.com, eugenis@google.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 Subject: [PATCH RFC 17/37] arm64: mte: Disable dynamic tag storage management if HW KASAN is enabled Date: Wed, 23 Aug 2023 14:13:30 +0100 Message-Id: <20230823131350.114942-18-alexandru.elisei@arm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230823131350.114942-1-alexandru.elisei@arm.com> References: <20230823131350.114942-1-alexandru.elisei@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Reserving the tag storage associated with a tagged page requires the ability to migrate existing data if the tag storage is in use for data. The kernel allocates pages, which are now tagged because of HW KASAN, in non-preemptible contexts, which can make reserving the associate tag storage impossible. Don't expose the tag storage pages to the memory allocator if HW KASAN is enabled. Signed-off-by: Alexandru Elisei --- arch/arm64/kernel/mte_tag_storage.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/arch/arm64/kernel/mte_tag_storage.c b/arch/arm64/kernel/mte_tag_storage.c index 4a6bfdf88458..f45128d0244e 100644 --- a/arch/arm64/kernel/mte_tag_storage.c +++ b/arch/arm64/kernel/mte_tag_storage.c @@ -314,6 +314,18 @@ static int __init mte_tag_storage_activate_regions(void) return 0; } + /* + * The kernel allocates memory in non-preemptible contexts, which makes + * migration impossible when reserving the associated tag storage. + * + * The check is safe to make because KASAN HW tags are enabled before + * the rest of the init functions are called, in smp_prepare_boot_cpu(). + */ + if (kasan_hw_tags_enabled()) { + pr_info("KASAN HW tags enabled, disabling tag storage"); + return 0; + } + for (i = 0; i < num_tag_regions; i++) { tag_range = &tag_regions[i].tag_range; for (pfn = tag_range->start; pfn <= tag_range->end; pfn += pageblock_nr_pages) { -- 2.41.0