On 08/04/15 16:34, Ard Biesheuvel wrote:
> On 4 August 2015 at 15:35, Laszlo Ersek <ler...@redhat.com> wrote:
>> 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|L"Linux (EFI stub) 
>>> on virtio31:hd0:part0"
>>> -  
>>> gArmPlatformTokenSpaceGuid.PcdDefaultBootDevicePath|L"VenHw(837DCA9E-E874-4D82-B29A-23FE0E23D1E2,003E000A00000000)/HD(1,MBR,0x00000000,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|L"VenHw(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
> 
> Agreed.
> 
>> - PcdDefaultConInPaths
>> - PcdDefaultConOutPaths
>>
> 
> These are referred to by
> ArmPlatformPkg/Library/PlatformIntelBdsLib/IntelBdsPlatform.c
> 
>> For gArmTokenSpaceGuid:
>> - PcdMaxTftpFileSize
>>
> 
> Agreed.
> 
>> Matches:
>>
>> ArmVirtPkg/ArmVirt.dsc.inc:282: 
>> gArmPlatformTokenSpaceGuid.PcdFirmwareVendor|"ARM Virtualization Platform"
>> ArmVirtPkg/ArmVirtQemu.dsc:102: 
>> gArmPlatformTokenSpaceGuid.PcdFirmwareVendor|"QEMU"
>> ArmVirtPkg/ArmVirtQemu.dsc:133: 
>> gArmPlatformTokenSpaceGuid.PcdDefaultBootDescription|L"Linux (EFI stub) on 
>> virtio31:hd0:part0"
>> ArmVirtPkg/ArmVirtQemu.dsc:134: 
>> gArmPlatformTokenSpaceGuid.PcdDefaultBootDevicePath|L"VenHw(837DCA9E-E874-4D82-B29A-23FE0E23D1E2,003E000A00000000)/HD(1,MBR,0x00000000,0x3F,0x19FC0)/Image"
>> ArmVirtPkg/ArmVirtQemu.dsc:135: 
>> gArmPlatformTokenSpaceGuid.PcdDefaultBootArgument|"root=/dev/vda2 
>> console=ttyAMA0 earlycon uefi_debug"
>> ArmVirtPkg/ArmVirtQemu.dsc:141: 
>> gArmPlatformTokenSpaceGuid.PcdDefaultConOutPaths|L"VenHw(D3987D4B-971A-435F-8CAF-4967EB627241)/Uart(38400,8,N,1)/VenMsg(7D916D80-5BB1-458C-A48F-E25FDD51EF94)"
>> ArmVirtPkg/ArmVirtQemu.dsc:142: 
>> gArmPlatformTokenSpaceGuid.PcdDefaultConInPaths|L"VenHw(D3987D4B-971A-435F-8CAF-4967EB627241)/Uart(38400,8,N,1)/VenMsg(7D916D80-5BB1-458C-A48F-E25FDD51EF94)"
>> ArmVirtPkg/ArmVirtQemu.dsc:147: 
>> gArmPlatformTokenSpaceGuid.PcdDefaultConOutPaths|L"VenHw(D3987D4B-971A-435F-8CAF-4967EB627241)/Uart(38400,8,N,1)/VenVt100()"
>> ArmVirtPkg/ArmVirtQemu.dsc:148: 
>> gArmPlatformTokenSpaceGuid.PcdDefaultConInPaths|L"VenHw(D3987D4B-971A-435F-8CAF-4967EB627241)/Uart(38400,8,N,1)/VenVt100()"
>> ArmVirtPkg/ArmVirtXen.dsc:82: 
>> gArmPlatformTokenSpaceGuid.PcdFirmwareVendor|"XEN-UEFI"
>>
>> 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.

Thanks
Laszlo
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to