[edk2] [PATCH] ArmVirtPkg/ArmVirtQemu: drop ARM BDS and make Intel BDS the default

2015-08-04 Thread Ard Biesheuvel
ARM BDS support in ArmVirtQemu has been broken since SVN r17969
(ArmPkg/BdsLib: Remove Linux loader from BdsLib) dated July 14th.

Instead of fixing this, let's get rid of the ARM BDS and LinuxLoader
altogether: they violate both the UEFI spec and the arm64 Linux boot
protocol, and lack the level of integration with the QEMU command
line that the Intel BDS has when running under ArmVirtPkg or OvmfPkg.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel ard.biesheu...@linaro.org
---
Note that this supersedes 'ArmVirtPkg: align ARM BDS build with LinuxLoader
changes' that I sent out earlier today. After having discussed the matter on
IRC (#linaro-enterprise) with leiflindholm and lersek, it turns out we all
agree that the best course of action is to drop the ARM BDS entirely.

 ArmVirtPkg/ArmVirtQemu.dsc | 17 +
 ArmVirtPkg/ArmVirtQemu.fdf |  6 --
 2 files changed, 1 insertion(+), 22 deletions(-)

diff --git a/ArmVirtPkg/ArmVirtQemu.dsc b/ArmVirtPkg/ArmVirtQemu.dsc
index c199cac72cfd..528d13e6aece 100644
--- a/ArmVirtPkg/ArmVirtQemu.dsc
+++ b/ArmVirtPkg/ArmVirtQemu.dsc
@@ -57,13 +57,11 @@ [LibraryClasses.common]
   TimerLib|ArmPkg/Library/ArmArchTimerLib/ArmArchTimerLib.inf
   NorFlashPlatformLib|ArmVirtPkg/Library/NorFlashQemuLib/NorFlashQemuLib.inf
 
-!if $(INTEL_BDS) == TRUE
   CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf
   GenericBdsLib|IntelFrameworkModulePkg/Library/GenericBdsLib/GenericBdsLib.inf
   PlatformBdsLib|ArmVirtPkg/Library/PlatformIntelBdsLib/PlatformIntelBdsLib.inf
   
CustomizedDisplayLib|MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf
   QemuBootOrderLib|OvmfPkg/Library/QemuBootOrderLib/QemuBootOrderLib.inf
-!endif
 
 [LibraryClasses.common.UEFI_DRIVER]
   UefiScsiLib|MdePkg/Library/UefiScsiLib/UefiScsiLib.inf
@@ -128,14 +126,7 @@ [PcdsFixedAtBuild.common]
   gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate|38400
 
   #
-  # ARM OS Loader
-  #
-  gArmPlatformTokenSpaceGuid.PcdDefaultBootDescription|LLinux (EFI stub) on 
virtio31:hd0:part0
-  
gArmPlatformTokenSpaceGuid.PcdDefaultBootDevicePath|LVenHw(837DCA9E-E874-4D82-B29A-23FE0E23D1E2,003E000A)/HD(1,MBR,0x,0x3F,0x19FC0)/Image
-  gArmPlatformTokenSpaceGuid.PcdDefaultBootArgument|root=/dev/vda2 
console=ttyAMA0 earlycon uefi_debug
-
-  #
-  # Settings for ARM BDS -- use the serial console (ConIn  ConOut).
+  # Settings for BDS -- use the serial console (ConIn  ConOut).
   #
 !if $(TTY_TERMINAL) == TRUE
   
gArmPlatformTokenSpaceGuid.PcdDefaultConOutPaths|LVenHw(D3987D4B-971A-435F-8CAF-4967EB627241)/Uart(38400,8,N,1)/VenMsg(7D916D80-5BB1-458C-A48F-E25FDD51EF94)
@@ -175,10 +166,8 @@ [PcdsFixedAtBuild.common]
   # initial location of the device tree blob passed by QEMU -- base of DRAM
   gArmVirtTokenSpaceGuid.PcdDeviceTreeInitialBaseAddress|0x4000
 
-!if $(INTEL_BDS) == TRUE
   gEfiMdeModulePkgTokenSpaceGuid.PcdResetOnMemoryTypeInformationChange|FALSE
   gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdShellFile|{ 0x83, 0xA5, 0x04, 
0x7C, 0x3E, 0x9E, 0x1C, 0x4F, 0xAD, 0x65, 0xE0, 0x52, 0x68, 0xD0, 0xB4, 0xD1 }
-!endif
 
   #
   # The maximum physical I/O addressability of the processor, set with
@@ -332,13 +321,9 @@ [Components.common]
   # Bds
   #
   MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf
-!if $(INTEL_BDS) == TRUE
   MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf
   MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf
   IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe.inf
-!else
-  ArmPlatformPkg/Bds/Bds.inf
-!endif
 
   #
   # SCSI Bus and Disk Driver
diff --git a/ArmVirtPkg/ArmVirtQemu.fdf b/ArmVirtPkg/ArmVirtQemu.fdf
index 3c0487cd95b6..a9ad9ca6fe2d 100644
--- a/ArmVirtPkg/ArmVirtQemu.fdf
+++ b/ArmVirtPkg/ArmVirtQemu.fdf
@@ -171,13 +171,9 @@ [FV.FvMain]
   # Bds
   #
   INF MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf
-!if $(INTEL_BDS) == TRUE
   INF MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf
   INF MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf
   INF IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe.inf
-!else
-  INF ArmPlatformPkg/Bds/Bds.inf
-!endif
 
   #
   # Networking stack
@@ -234,14 +230,12 @@ [FV.FvMain]
   INF MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf
   INF MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf
 
-!if $(INTEL_BDS) == TRUE
   #
   # TianoCore logo (splash screen)
   #
   FILE FREEFORM = PCD(gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdLogoFile) {
 SECTION RAW = MdeModulePkg/Logo/Logo.bmp
   }
-!endif
 
 [FV.FVMAIN_COMPACT]
 FvAlignment= 16
-- 
1.9.1

___
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel


Re: [edk2] [PATCH] ArmVirtPkg/ArmVirtQemu: drop ARM BDS and make Intel BDS the default

2015-08-04 Thread Laszlo Ersek
On 08/04/15 14:40, Ard Biesheuvel wrote:
 ARM BDS support in ArmVirtQemu has been broken since SVN r17969
 (ArmPkg/BdsLib: Remove Linux loader from BdsLib) dated July 14th.

 Instead of fixing this, let's get rid of the ARM BDS and LinuxLoader
 altogether: they violate both the UEFI spec and the arm64 Linux boot
 protocol, and lack the level of integration with the QEMU command
 line that the Intel BDS has when running under ArmVirtPkg or OvmfPkg.

 Contributed-under: TianoCore Contribution Agreement 1.0
 Signed-off-by: Ard Biesheuvel ard.biesheu...@linaro.org
 ---
 Note that this supersedes 'ArmVirtPkg: align ARM BDS build with LinuxLoader
 changes' that I sent out earlier today. After having discussed the matter on
 IRC (#linaro-enterprise) with leiflindholm and lersek, it turns out we all
 agree that the best course of action is to drop the ARM BDS entirely.

  ArmVirtPkg/ArmVirtQemu.dsc | 17 +
  ArmVirtPkg/ArmVirtQemu.fdf |  6 --
  2 files changed, 1 insertion(+), 22 deletions(-)

 diff --git a/ArmVirtPkg/ArmVirtQemu.dsc b/ArmVirtPkg/ArmVirtQemu.dsc
 index c199cac72cfd..528d13e6aece 100644
 --- a/ArmVirtPkg/ArmVirtQemu.dsc
 +++ b/ArmVirtPkg/ArmVirtQemu.dsc
 @@ -57,13 +57,11 @@ [LibraryClasses.common]
TimerLib|ArmPkg/Library/ArmArchTimerLib/ArmArchTimerLib.inf
NorFlashPlatformLib|ArmVirtPkg/Library/NorFlashQemuLib/NorFlashQemuLib.inf

 -!if $(INTEL_BDS) == TRUE
CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf

 GenericBdsLib|IntelFrameworkModulePkg/Library/GenericBdsLib/GenericBdsLib.inf

 PlatformBdsLib|ArmVirtPkg/Library/PlatformIntelBdsLib/PlatformIntelBdsLib.inf

 CustomizedDisplayLib|MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf
QemuBootOrderLib|OvmfPkg/Library/QemuBootOrderLib/QemuBootOrderLib.inf
 -!endif

  [LibraryClasses.common.UEFI_DRIVER]
UefiScsiLib|MdePkg/Library/UefiScsiLib/UefiScsiLib.inf
 @@ -128,14 +126,7 @@ [PcdsFixedAtBuild.common]
gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate|38400

#
 -  # ARM OS Loader
 -  #
 -  gArmPlatformTokenSpaceGuid.PcdDefaultBootDescription|LLinux (EFI stub) on 
 virtio31:hd0:part0
 -  
 gArmPlatformTokenSpaceGuid.PcdDefaultBootDevicePath|LVenHw(837DCA9E-E874-4D82-B29A-23FE0E23D1E2,003E000A)/HD(1,MBR,0x,0x3F,0x19FC0)/Image
 -  gArmPlatformTokenSpaceGuid.PcdDefaultBootArgument|root=/dev/vda2 
 console=ttyAMA0 earlycon uefi_debug
 -
 -  #
 -  # Settings for ARM BDS -- use the serial console (ConIn  ConOut).
 +  # Settings for BDS -- use the serial console (ConIn  ConOut).
#
  !if $(TTY_TERMINAL) == TRUE

 gArmPlatformTokenSpaceGuid.PcdDefaultConOutPaths|LVenHw(D3987D4B-971A-435F-8CAF-4967EB627241)/Uart(38400,8,N,1)/VenMsg(7D916D80-5BB1-458C-A48F-E25FDD51EF94)

The patch is good, but incomplete. You should remove more PCDs.

I built ArmVirtQemu.dsc with and without INTEL_BDS. I instructed the
build utility to write a report file for both builds, and then diffed
the report files (the section entitled Platform Configuration Database
Report). Clearly the token space that we care about now is
gArmPlatformTokenSpaceGuid and gArmTokenSpaceGuid.

The build report classifies the PCD settings that are not just plainly
inherited from whichever .dec file:

*P - Platform scoped PCD override in DSC file
*F - Platform scoped PCD override in FDF file
*M - Module scoped PCD override

So we are looking for differences where a *P, *F, or *M disappears, from
under the above two token spaces. (Disappearances of PCDs that we just
used to inherit need no action.)

... Except when the explicit setting we have under ArmVirtPkg matches
the default value from the .dec, because then *P is not added. So we do
have to look at *all* differences in these two token spaces, and
cross-ref them individually against our files.

For gArmPlatformTokenSpaceGuid, this means:
- PcdBdsLinuxSupport
- PcdFirmwareVendor
- PcdDefaultBootDescription
- PcdDefaultBootDevicePath
- PcdDefaultBootArgument
- PcdDefaultConInPaths
- PcdDefaultConOutPaths

For gArmTokenSpaceGuid:
- PcdMaxTftpFileSize

Matches:

ArmVirtPkg/ArmVirt.dsc.inc:282: 
gArmPlatformTokenSpaceGuid.PcdFirmwareVendor|ARM Virtualization Platform
ArmVirtPkg/ArmVirtQemu.dsc:102: 
gArmPlatformTokenSpaceGuid.PcdFirmwareVendor|QEMU
ArmVirtPkg/ArmVirtQemu.dsc:133: 
gArmPlatformTokenSpaceGuid.PcdDefaultBootDescription|LLinux (EFI stub) on 
virtio31:hd0:part0
ArmVirtPkg/ArmVirtQemu.dsc:134: 
gArmPlatformTokenSpaceGuid.PcdDefaultBootDevicePath|LVenHw(837DCA9E-E874-4D82-B29A-23FE0E23D1E2,003E000A)/HD(1,MBR,0x,0x3F,0x19FC0)/Image
ArmVirtPkg/ArmVirtQemu.dsc:135: 
gArmPlatformTokenSpaceGuid.PcdDefaultBootArgument|root=/dev/vda2 
console=ttyAMA0 earlycon uefi_debug
ArmVirtPkg/ArmVirtQemu.dsc:141: 
gArmPlatformTokenSpaceGuid.PcdDefaultConOutPaths|LVenHw(D3987D4B-971A-435F-8CAF-4967EB627241)/Uart(38400,8,N,1)/VenMsg(7D916D80-5BB1-458C-A48F-E25FDD51EF94)
ArmVirtPkg/ArmVirtQemu.dsc:142: 

Re: [edk2] [PATCH] ArmVirtPkg/ArmVirtQemu: drop ARM BDS and make Intel BDS the default

2015-08-04 Thread Ard Biesheuvel
On 4 August 2015 at 16:50, Laszlo Ersek ler...@redhat.com wrote:
 On 08/04/15 16:34, Ard Biesheuvel wrote:
 On 4 August 2015 at 15:35, Laszlo Ersek ler...@redhat.com wrote:
[...]
 I propose the following:
 - The Xen hit should be removed as a separate patch, as it has never
   been useful. (The Xen build uses Intel BDS exclusively.)

 OK

 - The rest of the PCDs (in ArmVirtQemu.dsc and in ArmVirt.dsc.inc)
   should be removed as part of this patch. In practice, those are:
   - PcdFirmwareVendor (both files)
   - PcdDefaultConOutPaths (two instances)
   - PcdDefaultConInPaths (two instance)

 After you remove these, only
 gEfiMdePkgTokenSpaceGuid.PcdDefaultTerminalType remains in this context,
 so please refresh both the leading comment, and the
 TTY_TERMINAL-dependent comments just below it. (They make references to
 ConOut/ConIn, and Intel BDS being optional.)


 I will remove the comment, since it suggests that ConIn/ConOut is
 unused under the Intel BDS, but that is clearly not the case.

 You refer to
 - gArmPlatformTokenSpaceGuid.PcdDefaultConInPaths
 - gArmPlatformTokenSpaceGuid.PcdDefaultConOutPaths
 as being used by

   ArmPlatformPkg/Library/PlatformIntelBdsLib/PlatformIntelBdsLib.inf

 That is correct. However, ArmVirtQemu.dsc does not resolve
 PlatformBdsLib to that instance; it uses

   ArmVirtPkg/Library/PlatformIntelBdsLib/PlatformIntelBdsLib.inf

 instead.

 Since your patch modifies ArmVirtQemu (where the ArmPlatformPkg library
 instance is unused), the PCDs should be removed.

 (The report files can be trusted about PCD usage.)

 The ArmPlatformPkg library instance is indeed used by ArmVirtXen, but
 the patch doesn't touch that file.


OK, good. I got confused by the fact that nothing under
ArmPlatformPkg/ actually uses this instance, but indeed, ArmVirtQemu
has its own.
___
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel