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 16210176ADE for ; Thu, 23 Jan 2025 17:24:43 +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=1737653085; cv=none; b=h88tUlYG6lxcNG+1CnejEqESunjVnqGEHA3oNBPe93OzDQy/CKOMw7Zmqwa93JXwX4ckAqhlXYncTqafVx0zoz5I/9PZAQe/R9dhCa/wevTybbHspswigtEqeoy0oF4FBVEUxsz3Of1d0WWOWqgO4XZhFd45BV9o066N9cokEPY= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737653085; c=relaxed/simple; bh=w6YG+baKYmS8V2W4evZNRMitwJpB414o5yVGaVMg39Y=; h=Subject:To:Cc:From:Date:References:In-Reply-To:Message-Id; b=g8fRL77T02eY+BH9HMdBojHMFgQ52NdUIz4kCoLpQ0M1SpIcJkimvy9clgGXFs2HS7gLyCD/bvrFU4HkUpI7r0NFOxaIuUx39lUYuH5CLiLACrVkusno5/4P866w6U0Hs8RciSfFsQLNWeL4NrgmsagpTejb5TrwGQvKf3H6IuU= 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=ag+B9YGB; 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="ag+B9YGB" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1737653084; x=1769189084; h=subject:to:cc:from:date:references:in-reply-to: message-id; bh=w6YG+baKYmS8V2W4evZNRMitwJpB414o5yVGaVMg39Y=; b=ag+B9YGBO09V/XTN/JVdpLVt8SjKzMDUkdw/hL5iUbyM+oAvmBihXJ3Q +sMO3J1snUwrhM8ztx+wAQDAg9FpBiu1l66pFhfcy83QIQ1RwuzAMK6l0 MqveQElC/4ztH+uelMG+Ft/I1zLZnKhg0+yBNNc4T3bXI/80B2qYbzGHL IreNSe1qJv4Xet8CxUYMLtEqFeFO1/7gT0bRyzOlDdbhAKy01J1gy2ouj pyrVhArvBokGW/vaGW4l+JG7L5MFdhjF1ZuXgjkdmkCytCL14DdNmoyn5 LIUkOanzwTlOpAJJA58CiBHSI4h5qw6wB1URQyOQw1GxibYEFCG+g+8N+ A==; X-CSE-ConnectionGUID: +xa62KuIS1yFLaPJVuCPsA== X-CSE-MsgGUID: 0J6r7UwyRjm5XlwBmMUAEA== X-IronPort-AV: E=McAfee;i="6700,10204,11314"; a="49583862" X-IronPort-AV: E=Sophos;i="6.12,310,1728975600"; d="scan'208";a="49583862" 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:36 -0800 X-CSE-ConnectionGUID: sFWgM1d7RP2pCspN+X9nqA== X-CSE-MsgGUID: MGMEU+33Rg2gaIbufbDFaQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.13,229,1732608000"; d="scan'208";a="107649989" 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:35 -0800 Subject: [RFC][PATCH 4/8] x86/mm: Simplify PAE PGD sharing macros 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:35 -0800 References: <20250123172428.D6D8C8D9@davehans-spike.ostc.intel.com> In-Reply-To: <20250123172428.D6D8C8D9@davehans-spike.ostc.intel.com> Message-Id: <20250123172435.270F7BAC@davehans-spike.ostc.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: From: Dave Hansen There are a few too many levels of abstraction here. First, just expand the PREALLOCATED_PMDS macro in place to make it clear that it is only conditional on PTI. Second, MAX_PREALLOCATED_PMDS is only used in one spot for an on-stack allocation. It has a *maximum* value of 4. Do not bother with the macro MAX() magic. Just set it to 4. Signed-off-by: Dave Hansen --- b/arch/x86/mm/pgtable.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff -puN arch/x86/mm/pgtable.c~simplify-PREALLOCATED_PMDS arch/x86/mm/pgtable.c --- a/arch/x86/mm/pgtable.c~simplify-PREALLOCATED_PMDS 2025-01-23 09:20:51.626382013 -0800 +++ b/arch/x86/mm/pgtable.c 2025-01-23 09:20:51.630382157 -0800 @@ -107,12 +107,6 @@ static inline void pgd_list_del(pgd_t *p list_del(&ptdesc->pt_list); } -#define UNSHARED_PTRS_PER_PGD \ - (SHARED_KERNEL_PMD ? KERNEL_PGD_BOUNDARY : PTRS_PER_PGD) -#define MAX_UNSHARED_PTRS_PER_PGD \ - MAX_T(size_t, KERNEL_PGD_BOUNDARY, PTRS_PER_PGD) - - static void pgd_set_mm(pgd_t *pgd, struct mm_struct *mm) { virt_to_ptdesc(pgd)->pt_mm = mm; @@ -171,8 +165,9 @@ static void pgd_dtor(pgd_t *pgd) * not shared between pagetables (!SHARED_KERNEL_PMDS), we allocate * and initialize the kernel pmds here. */ -#define PREALLOCATED_PMDS UNSHARED_PTRS_PER_PGD -#define MAX_PREALLOCATED_PMDS MAX_UNSHARED_PTRS_PER_PGD +#define PREALLOCATED_PMDS (static_cpu_has(X86_FEATURE_PTI) ? \ + PTRS_PER_PGD : KERNEL_PGD_BOUNDARY) +#define MAX_PREALLOCATED_PMDS PTRS_PER_PGD /* * We allocate separate PMDs for the kernel part of the user page-table _