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 A2940C5B555 for ; Fri, 30 May 2025 09:04:35 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2783E6B0082; Fri, 30 May 2025 05:04:35 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 227ED6B0083; Fri, 30 May 2025 05:04:35 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 13DB06B0085; Fri, 30 May 2025 05:04:35 -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 EACF86B0082 for ; Fri, 30 May 2025 05:04:34 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 9C1A3122B21 for ; Fri, 30 May 2025 09:04:34 +0000 (UTC) X-FDA: 83498988468.10.8CE9D49 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf11.hostedemail.com (Postfix) with ESMTP id C1F3B40005 for ; Fri, 30 May 2025 09:04:32 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf11.hostedemail.com: domain of dev.jain@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=dev.jain@arm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1748595873; 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:references; bh=DSnT7hLZpXtRcoCv7t02WsnQl/qQ3MFmNgoXi+Oqtno=; b=8lW0plVJReD3k/QJYIAh3f01QYN/bQPP4oCObeBbpLoJggSpveKObUf0rGvjJIxq5fO5Lx TeFHYzCbK7q2Na4ijFDBCyieYtEeTzF72eDOrYEhjstLknxRsLHJMGhfKyMLEHMwgg9HBN PUlezO3ehKtIVSzBXUmqPt/3krvM5Gk= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf11.hostedemail.com: domain of dev.jain@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=dev.jain@arm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1748595873; a=rsa-sha256; cv=none; b=rFAheVUb/OOrXA5ds3tNnhKnuxO2f2iYNyO5VXMedUH8Wu+oj8kJf6jd/1aga2GYVZZwVd H5InKbS5MAtjazVPtAhQrjLXWU135Jn+S7t1tAG6UypCbnfuD+MVhnevc6PxEynyZkiTBU eQd4SNK1Gb66E4pK+jafHlFu1fl2biQ= 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 27EB116F2; Fri, 30 May 2025 02:04:15 -0700 (PDT) Received: from MacBook-Pro.blr.arm.com (unknown [10.164.18.49]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 5CF463F5A1; Fri, 30 May 2025 02:04:26 -0700 (PDT) From: Dev Jain To: akpm@linux-foundation.org, david@redhat.com, catalin.marinas@arm.com, will@kernel.org Cc: lorenzo.stoakes@oracle.com, Liam.Howlett@oracle.com, vbabka@suse.cz, rppt@kernel.org, surenb@google.com, mhocko@suse.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, suzuki.poulose@arm.com, steven.price@arm.com, gshan@redhat.com, linux-arm-kernel@lists.infradead.org, Dev Jain Subject: [PATCH 0/3] Enable huge-vmalloc permission change Date: Fri, 30 May 2025 14:34:04 +0530 Message-Id: <20250530090407.19237-1-dev.jain@arm.com> X-Mailer: git-send-email 2.39.3 (Apple Git-146) MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: C1F3B40005 X-Stat-Signature: ezzndu4mbogbdwxd9g91ipyyt6crrbir X-Rspam-User: X-HE-Tag: 1748595872-707931 X-HE-Meta: U2FsdGVkX19C0qvfj6IxiIBruyQnsaKXAAVAjoUIQjKbuxnaKn9BE3/M9TGQ0h+m13XnUmSmd8k4buTCAa1um/+7QB9c6clGZ1D4EYriFdj0arDGnB2irh8OVUcSCtK6L4x1R26lGWAaSGh7n+ltKXAtBBkZFsRL2J0+pq3VUBz6QGaARGASviCvFlu1NwRFuGIw19fPn7x8ST6FCdIPOgqJADFUreKuNHE2f0H5WN98nuEhYwNrJsn4bqt/rqS7xjDgi5CKYP7I2iorjr09fZswgE0ViR8DXNZJhop26V/Z+DCgBb+0OxBJdErZGXInfeA6gnJMBAt2EdpjP9mQKUxNWDtvxZuE+bIqGkWK3zhZVVRazcdYomsebLL4JAqfFPRT/xgEEWnK/jtWBMkbTIae4MoyJCms1IpgKY1PBLeAU0aA5VARD/cxH3l933fXjUSy7C/5OCjsno2s7JFA+Xly5zOh7Tkbsf4SG259vMWhcwNLMpLB9LBVowBAb3mnr3ieb4re12qXUBMPgJwu0w8y8fdz3UJdE/hTjCUEz3KPBqWIOtHHS2PQ3dfNFsABtZ/h4kDaV9/Dry+GCg6jf8ZwIwV3U4SEfm7Q2SHOxN27ai7zKBLgx3+NknT3cEYHI2I0w0qKJ5sktImUBwkMXTvAdKSroy+J0b7nmw2Ed8Bg4oOzfcpclltDE69cpr96rhcaOSTFJmsnoys3VC4t0j971X6bPxTEMSerb1MM1YSSVEl3E4AzwLq8bSBGWsdUIven+kK2wmfcod7MFcEUp17X5XgMJCYP3XR02gP0lERzDAt7fhA4kDnwYw9cQIL0JDZirBjkWVwGrk7rbdRkKwFftky35+BOTzeuQ50DdKdZTaB0gLmy19+DQQ/637yEnZJFjevQ5CjvnIsKb4OyFnmR17B/jTNfGjhW/EPMoZvYsKJOa1+zPgJk0BI5hIKBFCZ+vSnV5PoK3MfjyN0 4jpYC+6A Pr7GjiMhdQ4iScxT0sqS4Eg31dk1kF0UELT/h3PCGTGHBccRcGOdieNHnUN5k6dlYLtYPUrFhCRQIiCn1E0/cL66uHvPvH27qxg4/7Q+HQ4fVvvGK77sK1zAAJDWa2Ir4WdADK/JsioF8yE11ssyqhSfO2sPHehOngA9l+KhTMkJBcns= 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 series paves the path to enable huge mappings in vmalloc space by default on arm64. For this we must ensure that we can handle any permission games on vmalloc space. Currently, __change_memory_common() uses apply_to_page_range() which does not support changing permissions for leaf mappings. We attempt to move away from this by using walk_page_range_novma(), similar to what riscv does right now; however, it is the responsibility of the caller to ensure that we do not pass a range, or split the range covering a partial leaf mapping. This series is tied with Yang Shi's attempt [1] at using huge mappings in the linear mapping in case the system supports BBML2, in which case we will be able to split the linear mapping if needed without break-before-make. Thus, Yang's series, IIUC, will be one such user of my series; suppose we are changing permissions on a range of the linear map backed by PMD-hugepages, then the sequence of operations should look like the following: split_range(start, (start + HPAGE_PMD_SIZE) & ~HPAGE_PMD_MASK); split_range(end & ~HPAGE_PMD_MASK, end); __change_memory_common(start, end); However, this series can be used independently of Yang's; since currently permission games are being played only on pte mappings (due to apply_to_page_range not supporting otherwise), this series provides the mechanism for enabling huge mappings for various kernel mappings like linear map and vmalloc. [1] https://lore.kernel.org/all/20250304222018.615808-1-yang@os.amperecomputing.com/ Dev Jain (3): mm: Allow pagewalk without locks arm64: pageattr: Use walk_page_range_novma() to change memory permissions mm/pagewalk: Add pre/post_pte_table callback for lazy MMU on arm64 arch/arm64/mm/pageattr.c | 81 +++++++++++++++++++++++++++++++++++++--- include/linux/pagewalk.h | 4 ++ mm/pagewalk.c | 18 +++++++-- 3 files changed, 94 insertions(+), 9 deletions(-) -- 2.30.2