From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.10]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C6BC5189B8F for ; Thu, 23 Jan 2025 17:24:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.10 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737653087; cv=none; b=cLXcBfeG4np4E5VEl2KNi+frDWBIJJ6c5MP9CwfJBtJcGddkMpN/cZJk5HYrIPWyeOkrIcXfRpqpv4mpvwVXyN1MI05KtVVzsI/HidE72lM4oywM8l8gdYTKahoVJpgvjqjwhBi9bI/9nvPMWTNLkDF+87IekebOLaFCUKhlIjE= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737653087; c=relaxed/simple; bh=m2iLsK46kYsfthGBX8Qen4O/L/gZzvJvfiprfdvK+2s=; h=Subject:To:Cc:From:Date:References:In-Reply-To:Message-Id; b=fkmsKBJ0HzjGuxnHHnDoiW8WZ7svB9CBcwWCb3qDSz6WVpJC0osbB2IHQbmlAGdX1BAE3dx7RrHMRb9+iFndFsRCVcIqxZ5UQ9nudv8MrppetN6mwxpgVv9v1zi20/BTGOfBb5Sypsf8uOX17BB8oS5poIM7DsCDZkXBjSkoCXg= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=EEcSf5ho; arc=none smtp.client-ip=192.198.163.10 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="EEcSf5ho" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1737653086; x=1769189086; h=subject:to:cc:from:date:references:in-reply-to: message-id; bh=m2iLsK46kYsfthGBX8Qen4O/L/gZzvJvfiprfdvK+2s=; b=EEcSf5hoHEyhgQ53fPsU8Rq0Nn37WC9ZOv67PgwWCspJ6VAL/vaml2Ah DG0yp6YSOFWfYF84E3LIiIVuBlSwXWtIpGjxp5di9p4SSleJThKu0ubdh ip/tyvHh3ZwqfWRLBdgeMVKsieGvPDopuR5K1q0SQUuOVmLzpVPbXwwW5 qXYu63TiNxMtiqBwy6G7l+Gq1TufxAnR/pqQjaamIcV1TAZZwkZ7aRuwN xAB8nG/defuNvZCTa//nsNQDYxOrkyn4ewJ5zI3LDiaA7sold2dfyXbp/ dezxioZbZetCwcathtpqGKVL03PgfluBaINXtdVgLHRY0KtQ5P55XDZml g==; X-CSE-ConnectionGUID: Rko8rgLBRJaF0W4SyEK5zw== X-CSE-MsgGUID: n2K2cc3ESkqlgNsLbl5qNQ== X-IronPort-AV: E=McAfee;i="6700,10204,11314"; a="49583895" X-IronPort-AV: E=Sophos;i="6.12,310,1728975600"; d="scan'208";a="49583895" Received: from fmviesa008.fm.intel.com ([10.60.135.148]) by fmvoesa104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Jan 2025 09:24:39 -0800 X-CSE-ConnectionGUID: kZogVvheTiyPV/aHTuPjkg== X-CSE-MsgGUID: 3jjAzAeERXarjgs+Eq9JZw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.13,229,1732608000"; d="scan'208";a="107650003" Received: from davehans-spike.ostc.intel.com (HELO localhost.localdomain) ([10.165.164.11]) by fmviesa008.fm.intel.com with ESMTP; 23 Jan 2025 09:24:38 -0800 Subject: [RFC][PATCH 6/8] x86/mm: Preallocate all PAE page tables To: linux-kernel@vger.kernel.org Cc: x86@kernel.org,tglx@linutronix.de,bp@alien8.de,joro@8bytes.org,luto@kernel.org,peterz@infradead.org,kirill.shutemov@linux.intel.com,rick.p.edgecombe@intel.com,jgross@suse.com,Dave Hansen From: Dave Hansen Date: Thu, 23 Jan 2025 09:24:38 -0800 References: <20250123172428.D6D8C8D9@davehans-spike.ostc.intel.com> In-Reply-To: <20250123172428.D6D8C8D9@davehans-spike.ostc.intel.com> Message-Id: <20250123172438.13BF4305@davehans-spike.ostc.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: From: Dave Hansen Finally, move away from having PAE kernels share any PMDs across processes. This was already the default on PTI kernels which are the common case. Signed-off-by: Dave Hansen --- b/arch/x86/mm/pgtable.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff -puN arch/x86/mm/pgtable.c~simplify-PREALLOCATED_PMDS-3 arch/x86/mm/pgtable.c --- a/arch/x86/mm/pgtable.c~simplify-PREALLOCATED_PMDS-3 2025-01-23 09:20:52.562415784 -0800 +++ b/arch/x86/mm/pgtable.c 2025-01-23 09:20:52.566415928 -0800 @@ -119,16 +119,11 @@ struct mm_struct *pgd_page_get_mm(struct static void pgd_ctor(struct mm_struct *mm, pgd_t *pgd) { - /* If the pgd points to a shared pagetable level (either the - ptes in non-PAE, or shared PMD in PAE), then just copy the - references from swapper_pg_dir. */ - if (CONFIG_PGTABLE_LEVELS == 2 || - (CONFIG_PGTABLE_LEVELS == 3 && SHARED_KERNEL_PMD) || - CONFIG_PGTABLE_LEVELS >= 4) { + /* PAE preallocates all its PMDs. No cloning needed. */ + if (!IS_ENABLED(CONFIG_X86_PAE)) clone_pgd_range(pgd + KERNEL_PGD_BOUNDARY, swapper_pg_dir + KERNEL_PGD_BOUNDARY, KERNEL_PGD_PTRS); - } /* List used to sync kernel mapping updates */ pgd_set_mm(pgd, mm); @@ -161,8 +156,7 @@ static void pgd_dtor(pgd_t *pgd) * all 4 top-level entries are used almost immediately in a * new process's life, we just pre-populate them here. */ -#define PREALLOCATED_PMDS (static_cpu_has(X86_FEATURE_PTI) ? \ - PTRS_PER_PGD : KERNEL_PGD_BOUNDARY) +#define PREALLOCATED_PMDS PTRS_PER_PGD #define MAX_PREALLOCATED_PMDS PTRS_PER_PGD /* _