Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp1242419yba; Sun, 5 May 2019 01:56:07 -0700 (PDT) X-Google-Smtp-Source: APXvYqyhhG32X2nyS52lZ2p6n7fQsZBAsmna5uyoCYI/WKVvpuI/bQJoaP825K7UIvm2svKKvoP4 X-Received: by 2002:a62:2a97:: with SMTP id q145mr24963361pfq.22.1557046567028; Sun, 05 May 2019 01:56:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1557046567; cv=none; d=google.com; s=arc-20160816; b=l/OVVA7LrSt+/Oa4TQg7dqhpcl+TrnRF07E9/sVdqdSdCEBe+6Wvk4D6SRQBmeLC1n zP9f40NMAdkyptHlaMdTbDq7lRmh/fH1X13nMjkXcZiIfBIWvOPRGanWHGA46ydvp0iH SJuCoSyaTaNriJUYfOMhXYJX5s5kVcjowa3Qg64rAowUjKiKT2HbeOqpe0SSlsH99jKA GCpCykkNslJ6tFp1V2ZNhyKfhnp6MErq8r6pscqz8UqbOf8dO5TE4ndIg55rfc/65CEh gyzVXVOr0cGvq/w4J1hdMJzvPY0FhzqlYbaQRJ+gAL/BQPuw3V0tPFEPDR6wmCgTQUar vMEA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature; bh=kW9cFc3oY5uX+D8x24aFAh/eOz8mR3Xa9rRR63JZ7FE=; b=u3bWc8NGJMeaSNKMyh3idNKtZWWlGfpb3Oy+wkxeG499GMzX8bwFqSHnB+PgQmx3e4 NK3EHQtkC4OYHYXFt17X5Ctuf8iJqYGK+tM+g43c+imjCRyGGXVFlSB7XzL599MI4Vzd fI1qJJni5VHyRzR029oU3iKybITfGhquuixTON00pMgtlEZa0/aaZVaeX5qP185RSpgb DDBQVxnm5ReO4ss+7lgDieX36slsWtgsL/GgCUFCccnBkXPOBNMscfBn015oENa1aQ3p rpWoeHovwS5Dc+iqOhnEIRAf95GbfNzbhZFlGX5d2H1mfSCw90yf8wbW2dtzkbwuXz9d PBVw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=KuITCgG6; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id z29si10702969pgl.584.2019.05.05.01.55.49; Sun, 05 May 2019 01:56:07 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=KuITCgG6; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726965AbfEEIdz (ORCPT + 99 others); Sun, 5 May 2019 04:33:55 -0400 Received: from mail-pf1-f193.google.com ([209.85.210.193]:40587 "EHLO mail-pf1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725873AbfEEIdz (ORCPT ); Sun, 5 May 2019 04:33:55 -0400 Received: by mail-pf1-f193.google.com with SMTP id u17so5111179pfn.7 for ; Sun, 05 May 2019 01:33:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=kW9cFc3oY5uX+D8x24aFAh/eOz8mR3Xa9rRR63JZ7FE=; b=KuITCgG6/MhcfWssqPO3bh4jADeh50kro0pY96IQauUkNWsThVozk9ys5p+dcOYwyk xwkzNvUt/n1oYXOYf5pizL8KYVMREQoY+bGgOeUNNEAqigQ7Dx06y/PeHwLKw+5NT8VC l5TWteBtOGzDt2FhoaOGoOoV5oXtDb4Mqu8NIW5kvl1SuMBQ4UwmNTq17kVZxMgQEtCb 17Mi8Uq/EgLF3bRG7ZRjUfyyGOHjXe9UKRi3N9YCYyfNG0+88V85skr71ZGuw95SPl3G NpfqgdSXps2WinCzVPZ7AHysSmMZok4/SErNO+49d+jCKzPobSxXF+Oy2FavG7nAbUNF o0bA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=kW9cFc3oY5uX+D8x24aFAh/eOz8mR3Xa9rRR63JZ7FE=; b=QF4n1t/gdRfDkluI7hlECP7REEbvEh0Ux0cFrcCxiYAaZCN7a6xNsty4ORlPVYojqY YfWZ/894xzdh/AvRIWrFf6ce6ZEnKDcY4QvTn3rD+/CHyyjRPMGSiN3q/r4R1Imfceiq 0VX0VEE+H1evilewBDbQhqQPa38XMwfVEn4Dmz/iJ69TD+/iwwzxw9pXWSwlylJtvccA kbqHM9PW1fKTTsxPlhSYfjrrlzljHR1JqFISKPFNAoHv7D+BNPm8drmQAIdHoi2qZksB oCctXG05RvmltLK+KPgAijFCzOEiPH5Pynm9EFIi0VKAEVFoxWUw0jqRMxKXO7Jwmsnw evZQ== X-Gm-Message-State: APjAAAUIsb58dUT+e/3x/RuYA9as81eaGFikaPwNhv7TfUbO7I9jqVxq DkbM1hIavtU1HwnfqOd8mKU= X-Received: by 2002:a63:360e:: with SMTP id d14mr23610439pga.188.1557045234544; Sun, 05 May 2019 01:33:54 -0700 (PDT) Received: from sc2-haas01-esx0118.eng.vmware.com ([66.170.99.1]) by smtp.gmail.com with ESMTPSA id a18sm9013664pff.6.2019.05.05.01.33.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 05 May 2019 01:33:53 -0700 (PDT) From: Nadav Amit X-Google-Original-From: Nadav Amit To: Peter Zijlstra Cc: Thomas Gleixner , Ingo Molnar , Borislav Petkov , linux-kernel@vger.kernel.org, x86@kernel.org, Andy Lutomirski , Nadav Amit , Stephen Rothwell , Rick Edgecombe Subject: [PATCH] x86/mm: Initialize pgd cache during mm initialization Date: Sat, 4 May 2019 18:11:24 -0700 Message-Id: <20190505011124.39692-1-namit@vmware.com> X-Mailer: git-send-email 2.17.1 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Poking-mm initialization might require to duplicate the PGD in early stage. Initialize the PGD cache earlier to prevent boot failures. Cc: Stephen Rothwell Cc: Rick Edgecombe Cc: Peter Zijlstra Fixes: 4fc19708b165 ("x86/alternatives: Initialize temporary mm for patching") Reported-by: kernel test robot Signed-off-by: Nadav Amit --- arch/x86/include/asm/pgtable.h | 1 + arch/x86/mm/pgtable.c | 10 ++++++---- init/main.c | 1 + 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h index 6b6bfdfe83aa..9635662e1163 100644 --- a/arch/x86/include/asm/pgtable.h +++ b/arch/x86/include/asm/pgtable.h @@ -1027,6 +1027,7 @@ static inline int pgd_none(pgd_t pgd) extern int direct_gbpages; void init_mem_mapping(void); +void pgd_cache_init(void); void early_alloc_pgt_buf(void); extern void memblock_find_dma_reserve(void); diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c index 3dbf440d4114..1f67b1e15bf6 100644 --- a/arch/x86/mm/pgtable.c +++ b/arch/x86/mm/pgtable.c @@ -373,14 +373,14 @@ static void pgd_prepopulate_user_pmd(struct mm_struct *mm, static struct kmem_cache *pgd_cache; -static int __init pgd_cache_init(void) +void __init pgd_cache_init(void) { /* * When PAE kernel is running as a Xen domain, it does not use * shared kernel pmd. And this requires a whole page for pgd. */ if (!SHARED_KERNEL_PMD) - return 0; + return; /* * when PAE kernel is not running as a Xen domain, it uses @@ -390,9 +390,7 @@ static int __init pgd_cache_init(void) */ pgd_cache = kmem_cache_create("pgd_cache", PGD_SIZE, PGD_ALIGN, SLAB_PANIC, NULL); - return 0; } -core_initcall(pgd_cache_init); static inline pgd_t *_pgd_alloc(void) { @@ -420,6 +418,10 @@ static inline void _pgd_free(pgd_t *pgd) } #else +void __init pgd_cache_init(void) +{ +} + static inline pgd_t *_pgd_alloc(void) { return (pgd_t *)__get_free_pages(PGALLOC_GFP, PGD_ALLOCATION_ORDER); diff --git a/init/main.c b/init/main.c index 949eed8015ec..7fac4ac2fede 100644 --- a/init/main.c +++ b/init/main.c @@ -537,6 +537,7 @@ static void __init mm_init(void) init_espfix_bsp(); /* Should be run after espfix64 is set up. */ pti_init(); + pgd_cache_init(); } void __init __weak arch_call_rest_init(void) -- 2.17.1