From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id 0E595D80689 for ; Wed, 28 Feb 2024 04:14:15 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=GNiedTeiaGU3UNhhRo5vgNYkCEOMqh6PpiKYtCgEJok=; c=relaxed/simple; d=groups.io; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:In-Reply-To:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type:Content-Transfer-Encoding; s=20140610; t=1709093654; v=1; b=nwM+eZazOvka2HVkpDw+wF9Rd9FNRjcV686CWemciKfzQrjLf+VLC+0WRPzgnNJTu158Hnqo vboVZ8Won0WZwoP2zgonga7rurXh/ubIR+WeyLSH/gf12N8UhyzW+RL8xYrS01G3efA+xIkOkuu 9QLtTOV4rk7DJ/5RqjwjMs+4= X-Received: by 127.0.0.2 with SMTP id ddUhYY7687511xd6KWitjT5J; Tue, 27 Feb 2024 20:14:14 -0800 X-Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.groups.io with SMTP id smtpd.web11.6023.1709093654117410653 for ; Tue, 27 Feb 2024 20:14:14 -0800 X-Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-613-NAa2UJr0Ps-5MQ7FcuQxOg-1; Tue, 27 Feb 2024 23:14:10 -0500 X-MC-Unique: NAa2UJr0Ps-5MQ7FcuQxOg-1 X-Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id A30D582DFE0; Wed, 28 Feb 2024 04:14:09 +0000 (UTC) X-Received: from [10.39.192.46] (unknown [10.39.192.46]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 90ECFC1596E; Wed, 28 Feb 2024 04:14:07 +0000 (UTC) Message-ID: <32a1adb4-f570-dd38-296d-9eb8edf85f2e@redhat.com> Date: Wed, 28 Feb 2024 05:14:06 +0100 MIME-Version: 1.0 Subject: Re: [edk2-devel] [PATCH 03/10] OvmfPkg/ResetVector: add CreatePageTables4Level macro To: devel@edk2.groups.io, kraxel@redhat.com Cc: Tom Lendacky , Jiewen Yao , Oliver Steffen , Erdem Aktas , Michael Roth , Ard Biesheuvel , Min Xu References: <20240222115435.85794-1-kraxel@redhat.com> <20240222115435.85794-4-kraxel@redhat.com> From: "Laszlo Ersek" In-Reply-To: <20240222115435.85794-4-kraxel@redhat.com> X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.8 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,lersek@redhat.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: qSeJeen0sQ88FQaYbXAuYmCbx7686176AA= Content-Language: en-US Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=nwM+eZaz; spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=redhat.com (policy=none) On 2/22/24 12:54, Gerd Hoffmann wrote: > Move code to create 4-level page tables to a nasm macro. > No functional change. >=20 > Signed-off-by: Gerd Hoffmann > --- > OvmfPkg/ResetVector/Ia32/PageTables64.asm | 70 +++++++++++++---------- > 1 file changed, 39 insertions(+), 31 deletions(-) >=20 > diff --git a/OvmfPkg/ResetVector/Ia32/PageTables64.asm b/OvmfPkg/ResetVec= tor/Ia32/PageTables64.asm > index 378ba2feeb4f..14cc2c33aa3d 100644 > --- a/OvmfPkg/ResetVector/Ia32/PageTables64.asm > +++ b/OvmfPkg/ResetVector/Ia32/PageTables64.asm > @@ -63,6 +63,44 @@ BITS 32 > loop .clearPageTablesMemoryLoop > %endmacro > =20 > +; > +; Create page tables for 4-level paging > +; > +; Argument: upper 32 bits of the page table entries > +; > +%macro CreatePageTables4Level 1 > + ; > + ; Top level Page Directory Pointers (1 * 512GB entry) > + ; > + mov dword[PT_ADDR (0)], PT_ADDR (0x1000) + PAGE_PDE_DIRECTORY_AT= TR > + mov dword[PT_ADDR (4)], %1 > + > + ; > + ; Next level Page Directory Pointers (4 * 1GB entries =3D> 4GB) > + ; > + mov dword[PT_ADDR (0x1000)], PT_ADDR (0x2000) + PAGE_PDE_DIRECTO= RY_ATTR > + mov dword[PT_ADDR (0x1004)], %1 > + mov dword[PT_ADDR (0x1008)], PT_ADDR (0x3000) + PAGE_PDE_DIRECTO= RY_ATTR > + mov dword[PT_ADDR (0x100C)], %1 > + mov dword[PT_ADDR (0x1010)], PT_ADDR (0x4000) + PAGE_PDE_DIRECTO= RY_ATTR > + mov dword[PT_ADDR (0x1014)], %1 > + mov dword[PT_ADDR (0x1018)], PT_ADDR (0x5000) + PAGE_PDE_DIRECTO= RY_ATTR > + mov dword[PT_ADDR (0x101C)], %1 > + > + ; > + ; Page Table Entries (2048 * 2MB entries =3D> 4GB) > + ; > + mov ecx, 0x800 > +.pageTableEntriesLoop4Level: > + mov eax, ecx > + dec eax > + shl eax, 21 > + add eax, PAGE_PDE_LARGEPAGE_ATTR > + mov dword[ecx * 8 + PT_ADDR (0x2000 - 8)], eax > + mov dword[(ecx * 8 + PT_ADDR (0x2000 - 8)) + 4], %1 > + loop .pageTableEntriesLoop4Level > +%endmacro > + > ; > ; Modified: EAX, EBX, ECX, EDX > ; > @@ -88,37 +126,7 @@ SetCr3ForPageTables64: > =20 > ClearOvmfPageTables: > ClearOvmfPageTables > - > - ; > - ; Top level Page Directory Pointers (1 * 512GB entry) > - ; > - mov dword[PT_ADDR (0)], PT_ADDR (0x1000) + PAGE_PDE_DIRECTORY_AT= TR > - mov dword[PT_ADDR (4)], edx > - > - ; > - ; Next level Page Directory Pointers (4 * 1GB entries =3D> 4GB) > - ; > - mov dword[PT_ADDR (0x1000)], PT_ADDR (0x2000) + PAGE_PDE_DIRECTO= RY_ATTR > - mov dword[PT_ADDR (0x1004)], edx > - mov dword[PT_ADDR (0x1008)], PT_ADDR (0x3000) + PAGE_PDE_DIRECTO= RY_ATTR > - mov dword[PT_ADDR (0x100C)], edx > - mov dword[PT_ADDR (0x1010)], PT_ADDR (0x4000) + PAGE_PDE_DIRECTO= RY_ATTR > - mov dword[PT_ADDR (0x1014)], edx > - mov dword[PT_ADDR (0x1018)], PT_ADDR (0x5000) + PAGE_PDE_DIRECTO= RY_ATTR > - mov dword[PT_ADDR (0x101C)], edx > - > - ; > - ; Page Table Entries (2048 * 2MB entries =3D> 4GB) > - ; > - mov ecx, 0x800 > -pageTableEntriesLoop: > - mov eax, ecx > - dec eax > - shl eax, 21 > - add eax, PAGE_PDE_LARGEPAGE_ATTR > - mov [ecx * 8 + PT_ADDR (0x2000 - 8)], eax > - mov [(ecx * 8 + PT_ADDR (0x2000 - 8)) + 4], edx > - loop pageTableEntriesLoop > + CreatePageTables4Level edx > =20 > ; Clear the C-bit from the GHCB page if the SEV-ES is enabled. > OneTimeCall SevClearPageEncMaskForGhcbPage Nice. "--color-moved=3Dzebra" is really useful for viewing this patch. Same comment on the ".pageTableEntriesLoop4Level" label name as under patch#2: can we use "..@pageTableEntriesLoop4Level"? Reviewed-by: Laszlo Ersek -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#116081): https://edk2.groups.io/g/devel/message/116081 Mute This Topic: https://groups.io/mt/104506791/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-