[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v2 09/29] ArmPlatformPkg/PrePi: allow use of patchable PCDs



On 28 January 2015 at 15:28, Olivier Martin <olivier.martin@xxxxxxx> wrote:
> Reviewed-By: Olivier Martin <Olivier.martin@xxxxxxx>
>

Looking at these patches again, it might make sense to replace #9, #10
and #11 with a single patch that introduces RelocatablePrePi under
ArmVirtualizationPkg with these changes already applied. That way, we
adhere to the single .inf per directory rule and not affect any
existing platforms with changes that are irrelevant to them.


>> -----Original Message-----
>> From: Ard Biesheuvel [mailto:ard.biesheuvel@xxxxxxxxxx]
>> Sent: 26 January 2015 19:03
>> To: edk2-devel@xxxxxxxxxxxxxxxxxxxxx; lersek@xxxxxxxxxx; Olivier
>> Martin; roy.franz@xxxxxxxxxx; leif.lindholm@xxxxxxxxxx;
>> stefano.stabellini@xxxxxxxxxxxxx; Ian.Campbell@xxxxxxxxxx;
>> anthony.perard@xxxxxxxxxx; christoffer.dall@xxxxxxxxxx; xen-
>> devel@xxxxxxxxxxxxx; ilias.biris@xxxxxxxxxx
>> Cc: Ard Biesheuvel
>> Subject: [PATCH v2 09/29] ArmPlatformPkg/PrePi: allow use of patchable
>> PCDs
>>
>> Avoid using FixedPcdGetXX () to reference system memory and FD
>> base address PCDs so that the platform can choose to use patchable
>> PCDs instead. This allows a runtime self-relocating PrePi to poke
>> alternate values into them that can only be discovered at runtime.
>>
>> Contributed-under: TianoCore Contribution Agreement 1.0
>> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@xxxxxxxxxx>
>> ---
>>  ArmPlatformPkg/PrePi/AArch64/ModuleEntryPoint.S | 8 ++++----
>>  ArmPlatformPkg/PrePi/PrePi.c                    | 8 ++++----
>>  2 files changed, 8 insertions(+), 8 deletions(-)
>>
>> diff --git a/ArmPlatformPkg/PrePi/AArch64/ModuleEntryPoint.S
>> b/ArmPlatformPkg/PrePi/AArch64/ModuleEntryPoint.S
>> index fcea9496cbd5..3fa6bf1f0322 100644
>> --- a/ArmPlatformPkg/PrePi/AArch64/ModuleEntryPoint.S
>> +++ b/ArmPlatformPkg/PrePi/AArch64/ModuleEntryPoint.S
>> @@ -42,14 +42,14 @@ _SetSVCMode:
>>  // at the top of the DRAM)
>>  _SetupStackPosition:
>>    // Compute Top of System Memory
>> -  LoadConstantToReg (FixedPcdGet64 (PcdSystemMemoryBase), x1)
>> -  LoadConstantToReg (FixedPcdGet64 (PcdSystemMemorySize), x2)
>> +  ldr   x1, PcdGet64 (PcdSystemMemoryBase)
>> +  ldr   x2, PcdGet64 (PcdSystemMemorySize)
>>    sub   x2, x2, #1
>>    add   x1, x1, x2      // x1 = SystemMemoryTop = PcdSystemMemoryBase
>> + PcdSystemMemorySize
>>
>>    // Calculate Top of the Firmware Device
>> -  LoadConstantToReg (FixedPcdGet32(PcdFdBaseAddress), x2)
>> -  LoadConstantToReg (FixedPcdGet32(PcdFdSize), x3)
>> +  ldr   x2, PcdGet64 (PcdFdBaseAddress)
>> +  ldr   w3, PcdGet32 (PcdFdSize)
>>    sub   x3, x3, #1
>>    add   x3, x3, x2      // x3 = FdTop = PcdFdBaseAddress + PcdFdSize
>>
>> diff --git a/ArmPlatformPkg/PrePi/PrePi.c
>> b/ArmPlatformPkg/PrePi/PrePi.c
>> index 9a5e067ef537..0e551c518d6b 100755
>> --- a/ArmPlatformPkg/PrePi/PrePi.c
>> +++ b/ArmPlatformPkg/PrePi/PrePi.c
>> @@ -30,8 +30,8 @@
>>  #include "PrePi.h"
>>  #include "LzmaDecompress.h"
>>
>> -#define IS_XIP() (((UINT32)FixedPcdGet32 (PcdFdBaseAddress) >
>> (UINT32)(FixedPcdGet64 (PcdSystemMemoryBase) + FixedPcdGet32
>> (PcdSystemMemorySize))) || \
>> -                  ((FixedPcdGet32 (PcdFdBaseAddress) + FixedPcdGet32
>> (PcdFdSize)) < FixedPcdGet64 (PcdSystemMemoryBase)))
>> +#define IS_XIP() (((UINT32)PcdGet64 (PcdFdBaseAddress) >
>> (UINT32)(PcdGet64 (PcdSystemMemoryBase) + PcdGet64
>> (PcdSystemMemorySize))) || \
>> +                  ((PcdGet64 (PcdFdBaseAddress) + PcdGet32
>> (PcdFdSize)) < PcdGet64 (PcdSystemMemoryBase)))
>>
>>  // Not used when PrePi in run in XIP mode
>>  UINTN mGlobalVariableBase = 0;
>> @@ -108,8 +108,8 @@ PrePiMain (
>>
>>    // If ensure the FD is either part of the System Memory or totally
>> outside of the System Memory (XIP)
>>    ASSERT (IS_XIP() ||
>> -          ((FixedPcdGet32 (PcdFdBaseAddress) >= FixedPcdGet64
>> (PcdSystemMemoryBase)) &&
>> -           ((UINT32)(FixedPcdGet32 (PcdFdBaseAddress) + FixedPcdGet32
>> (PcdFdSize)) <= (UINT32)(FixedPcdGet64 (PcdSystemMemoryBase) +
>> FixedPcdGet64 (PcdSystemMemorySize)))));
>> +          ((PcdGet64 (PcdFdBaseAddress) >= PcdGet64
>> (PcdSystemMemoryBase)) &&
>> +           ((UINT32)(PcdGet64 (PcdFdBaseAddress) + PcdGet32
>> (PcdFdSize)) <= (UINT32)(PcdGet64 (PcdSystemMemoryBase) + PcdGet64
>> (PcdSystemMemorySize)))));
>>
>>    // Initialize the architecture specific bits
>>    ArchInitialize ();
>> --
>> 1.8.3.2
>>
>
>
>
>

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.