Received: by 2002:a05:7412:d8a:b0:e2:908c:2ebd with SMTP id b10csp3917628rdg; Wed, 18 Oct 2023 09:28:57 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHoney6gDLk6u6A/UYotolfna3n71LDEAo4xmK/Pw9Qf0HWLixr8+1LGBy65CIGEVysTa8S X-Received: by 2002:a05:6871:c02:b0:1ea:7142:851d with SMTP id ve2-20020a0568710c0200b001ea7142851dmr6645101oab.57.1697646536968; Wed, 18 Oct 2023 09:28:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697646536; cv=none; d=google.com; s=arc-20160816; b=I9aXWIprlfhIpLsgkOmJAdD6ZWDkm9p0ICp9koe9ISCVZLOQ+2AbtBAkUTn2+/9IKr B5CxPBU5KvngzqvoaC+8KbG/Za0XCEIwQRS65Mqvo85M0KS5wfad52u8dtoTAqNdAiWn hYAPa3SF7RscOt0W45kKW2xFNDNH52OE67iIbG3x/JWPopkSiZMGRwdARRnaQ6ISbEv3 4L+0IzY650rG7JRwWwF+Yl3ciJ1WGnhvj9tRb8T8N0ToY9t5mlFctW0+n5REqPAPq5Sr u6+Nc9P4afQ67yhk3kVkoPdNfCU7MIojpaz8YA6zna9cFNrOK4x1hKoIus1goeWZgObI ImKw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=UUiIsufZNx2Skm3foRyePaxaxDvMuZzimTco0fIaIc8=; fh=wKVrlgZ7phdmCzdymcwzTJ8Nv/hZGvdWHq/cngFBRnM=; b=FWYax7ogPcScb0qajaDPEEfi82uzFbCjdX3b65bVa6isebmsjN98L5xD/GxIcqSPoQ 3wlW9lt2X4B3xHfxqThyMy8u8VEySiGli179C+TJiBW6nrXv8W9vZSmU/9/ceIm1RZK9 ducG/eRdUsQOR50RnQBy7CSlcMu6y0LSknfTcld+/cPTT7gaI7HHOB9ERjGal3yUl3Et 2WaXwJuNwulMapgsb5lazrauwljqvsiP81//N9nOv8KmrJvNDbRQ9Ed4dzvwj1oeJMWH KMNSUps9gQqnPc3Ba9AeT6UMmD0ZdRiNLYC8Lj/mmI0e9uTAVXRsV3KoGJunfoJg1O4+ 39Ew== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@alien8.de header.s=alien8 header.b="T6mZPu/z"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=alien8.de Return-Path: Received: from howler.vger.email (howler.vger.email. [23.128.96.34]) by mx.google.com with ESMTPS id ca39-20020a056a0206a700b00578afb3123bsi2843198pgb.700.2023.10.18.09.28.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Oct 2023 09:28:56 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) client-ip=23.128.96.34; Authentication-Results: mx.google.com; dkim=pass header.i=@alien8.de header.s=alien8 header.b="T6mZPu/z"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=alien8.de Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by howler.vger.email (Postfix) with ESMTP id E2F3480ECF93; Wed, 18 Oct 2023 09:28:53 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at howler.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229897AbjJRQ2p (ORCPT + 99 others); Wed, 18 Oct 2023 12:28:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44610 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229694AbjJRQ2n (ORCPT ); Wed, 18 Oct 2023 12:28:43 -0400 Received: from mail.alien8.de (mail.alien8.de [IPv6:2a01:4f9:3051:3f93::2]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0A08DB8 for ; Wed, 18 Oct 2023 09:28:42 -0700 (PDT) Received: from localhost (localhost.localdomain [127.0.0.1]) by mail.alien8.de (SuperMail on ZX Spectrum 128k) with ESMTP id A5FFF40E0196; Wed, 18 Oct 2023 16:28:39 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at mail.alien8.de Authentication-Results: mail.alien8.de (amavisd-new); dkim=pass (4096-bit key) header.d=alien8.de Received: from mail.alien8.de ([127.0.0.1]) by localhost (mail.alien8.de [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id PLsE6ZBaTxvG; Wed, 18 Oct 2023 16:28:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=alien8.de; s=alien8; t=1697646517; bh=UUiIsufZNx2Skm3foRyePaxaxDvMuZzimTco0fIaIc8=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=T6mZPu/zSuWxFj1NloA7zaBpGr1NvlXIU/aYUsvBFrawnQfyA6NEiQ4NlV99fok9f hAjLn939p5/YkD4Eog0EczFE1nS9HxgrsK9LqzwnRACuddZzu1DVOP/N90YeANW2hS ++gQIdhmk/EJAfzMBD3uRYJsXabwXWENEMeI+luE8N2IFVipN5BvoLf7bSUJi2fcu7 WBX1WVcLfwI57NFWeoeETWV4/I5IsYOsoRZuE/9848GNcNL7tsYplcEdnemL2Fs9ZC X8o3Y2QP+tuMi1+qD4DRNesg0TkR6N5GUnW5Pa4p1VGyvrCxRbKecjBifZ+c3aGlMV 3PnN3WAvlgZkVgMR1pjhz7B/V16a9mDIE2g3e/8CMZXhgTFzbL5yGIIFkk/rU/Muzo S3Geqz29VKK2BTGF7gnR8p1oX7yvJoA+Sx2WJkQ8ohYN4IJzUvoxnhO4X4nNUOLD11 J04AwZtSjbEsJAqo1V54gSqHFhWYa2FyVC3YkWugaurF/m215cq7/lpvuZQEad7ADz eZY2abhpd4E0t4HvUP1iYANxJnNOfoquWgxwDxmERvLWrAOb4rGiv/74PHkCBzrufV l27cIV24WieZK69qwde3+htCvYAhfDsP2fwIW2TCgHRxWQqzyiGaLcUAYQ2fJ15T+6 aOEGInaH+l1EsbI2+paCtMik= Received: from zn.tnic (pd95304da.dip0.t-ipconnect.de [217.83.4.218]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail.alien8.de (SuperMail on ZX Spectrum 128k) with ESMTPSA id 57F7040E0193; Wed, 18 Oct 2023 16:28:34 +0000 (UTC) Date: Wed, 18 Oct 2023 18:28:27 +0200 From: Borislav Petkov To: Thomas Gleixner Cc: LKML , x86@kernel.org Subject: Re: [patch V5 03/39] x86/boot/32: De-uglify the 2/3 level paging difference in mk_early_pgtbl_32() Message-ID: <20231018162827.GDZTAHq/Cid4gJJEiw@fat_crate.local> References: <20231017200758.877560658@linutronix.de> <20231017211722.111059491@linutronix.de> <20231018100023.GAZS+st5ePdAQjnO4z@fat_crate.local> <87mswg3w51.ffs@tglx> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <87mswg3w51.ffs@tglx> X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on howler.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (howler.vger.email [0.0.0.0]); Wed, 18 Oct 2023 09:28:54 -0700 (PDT) On Wed, Oct 18, 2023 at 03:20:10PM +0200, Thomas Gleixner wrote: > Up to the point where the compiler complains about a missing prototype > for a global visible function, which will bring it back faster than you > think. :) --- From: Thomas Gleixner Date: Tue, 17 Oct 2023 23:23:26 +0200 Subject: [PATCH] x86/boot/32: De-uglify the 2/3 level paging difference in mk_early_pgtbl_32() Move the ifdeffery out of the function and use proper typedefs to make it work for both 2 and 3 level paging. No functional change. [ bp: Move mk_early_pgtbl_32() declaration into a header. ] Signed-off-by: Thomas Gleixner Signed-off-by: Borislav Petkov (AMD) Link: https://lore.kernel.org/r/20231017211722.111059491@linutronix.de --- arch/x86/include/asm/setup.h | 1 + arch/x86/kernel/head32.c | 38 +++++++++++++++++++----------------- 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/arch/x86/include/asm/setup.h b/arch/x86/include/asm/setup.h index f3495623ac99..bf483fcb4e57 100644 --- a/arch/x86/include/asm/setup.h +++ b/arch/x86/include/asm/setup.h @@ -126,6 +126,7 @@ void clear_bss(void); #ifdef __i386__ asmlinkage void __init __noreturn i386_start_kernel(void); +void __init mk_early_pgtbl_32(void); #else asmlinkage void __init __noreturn x86_64_start_kernel(char *real_mode); diff --git a/arch/x86/kernel/head32.c b/arch/x86/kernel/head32.c index 8fe0dd38fff0..2b6599807026 100644 --- a/arch/x86/kernel/head32.c +++ b/arch/x86/kernel/head32.c @@ -69,41 +69,43 @@ asmlinkage __visible void __init __noreturn i386_start_kernel(void) * to the first kernel PMD. Note the upper half of each PMD or PTE are * always zero at this stage. */ -void __init mk_early_pgtbl_32(void); +#ifdef CONFIG_X86_PAE +typedef pmd_t pl2_t; +#define pl2_base initial_pg_pmd +#define SET_PL2(val) { .pmd = (val), } +#else +typedef pgd_t pl2_t; +#define pl2_base initial_page_table +#define SET_PL2(val) { .pgd = (val), } +#endif void __init __no_stack_protector mk_early_pgtbl_32(void) { - pte_t pte, *ptep; - int i; - unsigned long *ptr; /* Enough space to fit pagetables for the low memory linear map */ const unsigned long limit = __pa_nodebug(_end) + (PAGE_TABLE_SIZE(LOWMEM_PAGES) << PAGE_SHIFT); -#ifdef CONFIG_X86_PAE - pmd_t pl2, *pl2p = (pmd_t *)__pa_nodebug(initial_pg_pmd); -#define SET_PL2(pl2, val) { (pl2).pmd = (val); } -#else - pgd_t pl2, *pl2p = (pgd_t *)__pa_nodebug(initial_page_table); -#define SET_PL2(pl2, val) { (pl2).pgd = (val); } -#endif + pte_t pte, *ptep = (pte_t *)__pa_nodebug(__brk_base); + pl2_t *pl2p = (pl2_t *)__pa_nodebug(pl2_base); + unsigned long *ptr; + int i; - ptep = (pte_t *)__pa_nodebug(__brk_base); pte.pte = PTE_IDENT_ATTR; while ((pte.pte & PTE_PFN_MASK) < limit) { + pl2_t pl2 = SET_PL2((unsigned long)ptep | PDE_IDENT_ATTR); - SET_PL2(pl2, (unsigned long)ptep | PDE_IDENT_ATTR); *pl2p = pl2; -#ifndef CONFIG_X86_PAE - /* Kernel PDE entry */ - *(pl2p + ((PAGE_OFFSET >> PGDIR_SHIFT))) = pl2; -#endif + + if (!IS_ENABLED(CONFIG_X86_PAE)) { + /* Kernel PDE entry */ + *(pl2p + ((PAGE_OFFSET >> PGDIR_SHIFT))) = pl2; + } + for (i = 0; i < PTRS_PER_PTE; i++) { *ptep = pte; pte.pte += PAGE_SIZE; ptep++; } - pl2p++; } -- 2.42.0.rc0.25.ga82fb66fed25 -- Regards/Gruss, Boris. https://people.kernel.org/tglx/notes-about-netiquette