Re: [edk2-devel] [PATCH v4 03/35] OvmfPkg: Introduce XenResetVector

2019-07-30 Thread Laszlo Ersek
On 07/29/19 17:39, Anthony PERARD wrote:
> Introduce XenResetVector, a copy of OvmfPkg/ResetVector, with one
> changes:
>   - SEC_DEFAULT_CR0: enable cache (bit 30 or CD set to 0)
> 
> Xen copies the OVMF code to RAM, there is no need to disable cache.
> 
> This new module will later be modified to add a new entry point, more
> detail in a following commit "OvmfPkg/XenResetVector: Add new entry point
> for Xen PVH"
> 
> Value FILE_GUID of XenResetVector have not changed compare to ResetVector
> because it is a special value (gEfiFirmwareVolumeTopFileGuid).
> 
> Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=1689
> Signed-off-by: Anthony PERARD 
> Reviewed-by: Laszlo Ersek 
> ---
> 
> Notes:
> v4:
> - Update Maintainers.txt
> 
> v3:
>   - Added gEfiFirmwareVolumeTopFileGuid to the commit message.
>   - rebased: SPDX
> 
>  OvmfPkg/OvmfXen.dsc   |   2 +-
>  OvmfPkg/OvmfXen.fdf   |   2 +-
>  OvmfPkg/XenResetVector/XenResetVector.inf |  38 +
>  Maintainers.txt   |   1 +
>  .../XenResetVector/Ia16/Real16ToFlat32.asm| 134 
>  OvmfPkg/XenResetVector/Ia32/PageTables64.asm  | 149 ++
>  OvmfPkg/XenResetVector/XenResetVector.nasmb   |  68 
>  7 files changed, 392 insertions(+), 2 deletions(-)
>  create mode 100644 OvmfPkg/XenResetVector/XenResetVector.inf
>  create mode 100644 OvmfPkg/XenResetVector/Ia16/Real16ToFlat32.asm
>  create mode 100644 OvmfPkg/XenResetVector/Ia32/PageTables64.asm
>  create mode 100644 OvmfPkg/XenResetVector/XenResetVector.nasmb

[...]

> diff --git a/Maintainers.txt b/Maintainers.txt
> index 98f6d828eb..34bdb275b4 100644
> --- a/Maintainers.txt
> +++ b/Maintainers.txt
> @@ -380,6 +380,7 @@ F: OvmfPkg/SmbiosPlatformDxe/*Xen.c
>  F: OvmfPkg/XenBusDxe/
>  F: OvmfPkg/XenIoPciDxe/
>  F: OvmfPkg/XenPvBlkDxe/
> +F: OvmfPkg/XenResetVector/
>  R: Anthony Perard 
>  R: Julien Grall 
>  

Reviewed-by: Laszlo Ersek 


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#44608): https://edk2.groups.io/g/devel/message/44608
Mute This Topic: https://groups.io/mt/32643835/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-



[edk2-devel] [PATCH v4 03/35] OvmfPkg: Introduce XenResetVector

2019-07-29 Thread Anthony PERARD
Introduce XenResetVector, a copy of OvmfPkg/ResetVector, with one
changes:
  - SEC_DEFAULT_CR0: enable cache (bit 30 or CD set to 0)

Xen copies the OVMF code to RAM, there is no need to disable cache.

This new module will later be modified to add a new entry point, more
detail in a following commit "OvmfPkg/XenResetVector: Add new entry point
for Xen PVH"

Value FILE_GUID of XenResetVector have not changed compare to ResetVector
because it is a special value (gEfiFirmwareVolumeTopFileGuid).

Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=1689
Signed-off-by: Anthony PERARD 
Reviewed-by: Laszlo Ersek 
---

Notes:
v4:
- Update Maintainers.txt

v3:
  - Added gEfiFirmwareVolumeTopFileGuid to the commit message.
  - rebased: SPDX

 OvmfPkg/OvmfXen.dsc   |   2 +-
 OvmfPkg/OvmfXen.fdf   |   2 +-
 OvmfPkg/XenResetVector/XenResetVector.inf |  38 +
 Maintainers.txt   |   1 +
 .../XenResetVector/Ia16/Real16ToFlat32.asm| 134 
 OvmfPkg/XenResetVector/Ia32/PageTables64.asm  | 149 ++
 OvmfPkg/XenResetVector/XenResetVector.nasmb   |  68 
 7 files changed, 392 insertions(+), 2 deletions(-)
 create mode 100644 OvmfPkg/XenResetVector/XenResetVector.inf
 create mode 100644 OvmfPkg/XenResetVector/Ia16/Real16ToFlat32.asm
 create mode 100644 OvmfPkg/XenResetVector/Ia32/PageTables64.asm
 create mode 100644 OvmfPkg/XenResetVector/XenResetVector.nasmb

diff --git a/OvmfPkg/OvmfXen.dsc b/OvmfPkg/OvmfXen.dsc
index f224ac32b4..1a0e59f0cc 100644
--- a/OvmfPkg/OvmfXen.dsc
+++ b/OvmfPkg/OvmfXen.dsc
@@ -495,7 +495,7 @@ [PcdsDynamicDefault]
 #
 

 [Components]
-  OvmfPkg/ResetVector/ResetVector.inf
+  OvmfPkg/XenResetVector/XenResetVector.inf
 
   #
   # SEC Phase modules
diff --git a/OvmfPkg/OvmfXen.fdf b/OvmfPkg/OvmfXen.fdf
index f59647fd14..6fc8479aae 100644
--- a/OvmfPkg/OvmfXen.fdf
+++ b/OvmfPkg/OvmfXen.fdf
@@ -118,7 +118,7 @@ [FV.SECFV]
 #
 INF  OvmfPkg/Sec/SecMain.inf
 
-INF  RuleOverride=RESET_VECTOR OvmfPkg/ResetVector/ResetVector.inf
+INF  RuleOverride=RESET_VECTOR OvmfPkg/XenResetVector/XenResetVector.inf
 
 

 [FV.PEIFV]
diff --git a/OvmfPkg/XenResetVector/XenResetVector.inf 
b/OvmfPkg/XenResetVector/XenResetVector.inf
new file mode 100644
index 00..097fc9b5b4
--- /dev/null
+++ b/OvmfPkg/XenResetVector/XenResetVector.inf
@@ -0,0 +1,38 @@
+## @file
+#  Reset Vector
+#
+#  Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.
+#  Copyright (c) 2019, Citrix Systems, Inc.
+#
+#  SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+##
+
+[Defines]
+  INF_VERSION= 0x00010005
+  BASE_NAME  = XenResetVector
+  FILE_GUID  = 1BA0062E-C779-4582-8566-336AE8F78F09
+  MODULE_TYPE= SEC
+  VERSION_STRING = 1.1
+
+#
+# The following information is for reference only and not required by the 
build tools.
+#
+#  VALID_ARCHITECTURES   = IA32 X64
+#
+
+[Sources]
+  XenResetVector.nasmb
+
+[Packages]
+  OvmfPkg/OvmfPkg.dec
+  MdePkg/MdePkg.dec
+  UefiCpuPkg/UefiCpuPkg.dec
+
+[BuildOptions]
+   *_*_IA32_NASMB_FLAGS = -I$(WORKSPACE)/UefiCpuPkg/ResetVector/Vtf0/
+   *_*_X64_NASMB_FLAGS = -I$(WORKSPACE)/UefiCpuPkg/ResetVector/Vtf0/
+
+[Pcd]
+  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesBase
+  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesSize
diff --git a/Maintainers.txt b/Maintainers.txt
index 98f6d828eb..34bdb275b4 100644
--- a/Maintainers.txt
+++ b/Maintainers.txt
@@ -380,6 +380,7 @@ F: OvmfPkg/SmbiosPlatformDxe/*Xen.c
 F: OvmfPkg/XenBusDxe/
 F: OvmfPkg/XenIoPciDxe/
 F: OvmfPkg/XenPvBlkDxe/
+F: OvmfPkg/XenResetVector/
 R: Anthony Perard 
 R: Julien Grall 
 
diff --git a/OvmfPkg/XenResetVector/Ia16/Real16ToFlat32.asm 
b/OvmfPkg/XenResetVector/Ia16/Real16ToFlat32.asm
new file mode 100644
index 00..5c329bfaea
--- /dev/null
+++ b/OvmfPkg/XenResetVector/Ia16/Real16ToFlat32.asm
@@ -0,0 +1,134 @@
+;--
+; @file
+; Transition from 16 bit real mode into 32 bit flat protected mode
+;
+; Copyright (c) 2008 - 2010, Intel Corporation. All rights reserved.
+; Copyright (c) 2019, Citrix Systems, Inc.
+; SPDX-License-Identifier: BSD-2-Clause-Patent
+;
+;--
+
+%define SEC_DEFAULT_CR0  0x0023
+%define SEC_DEFAULT_CR4  0x640
+
+BITS16
+
+;
+; Modified:  EAX, EBX
+;
+; @param[out] DS   Selector allowing flat access to all addresses
+; @param[out] ES   Selector allowing flat access to all addresses
+; @param[out] FS   Selector allowing flat access to all addresses
+; @param[out] GS   Selector allowing flat access to all addresses
+;