[edk2] [PATCH] ArmVirtPkg/ArmVirtQemuKernel: increase slack space for DTB

Ard Biesheuvel posted 1 patch 7 years, 7 months ago
Failed in applying to current master (apply log)
ArmVirtPkg/ArmVirtQemuKernel.fdf | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
[edk2] [PATCH] ArmVirtPkg/ArmVirtQemuKernel: increase slack space for DTB
Posted by Ard Biesheuvel 7 years, 7 months ago
The relocatable build of ArmVirtQemuKernel is designed to be executed
from RAM, and contains some scratch memory at the start of the image
to use as a stack very early on, and to preserve the DTB image received
from QEMU while it discovers and initializes memory.

It turns out that 8 KB is a bit on the small side here, especially when
executing with secure world emulation enabled, in which case there are
additional nodes present.

So increase the slack space to 32 KB.

While at it, remove a stale Xen reference that was copy/pasted when this
file was created.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
---
 ArmVirtPkg/ArmVirtQemuKernel.fdf | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/ArmVirtPkg/ArmVirtQemuKernel.fdf b/ArmVirtPkg/ArmVirtQemuKernel.fdf
index 7bc62f6b0b48..55541a1075d8 100644
--- a/ArmVirtPkg/ArmVirtQemuKernel.fdf
+++ b/ArmVirtPkg/ArmVirtQemuKernel.fdf
@@ -52,15 +52,15 @@ [FD.QEMU_EFI]
 ################################################################################
 
 #
-# Implement the Linux kernel header layout so that the Xen loader will identify
+# Implement the Linux kernel header layout so that the loader will identify
 # it as something bootable, and execute it with a FDT pointer in x0 or r2.
-# This area will be reused to store a copy of the FDT so round it up to 8 KB.
+# This area will be reused to store a copy of the FDT so round it up to 32 KB.
 #
-0x00000000|0x00002000
+0x00000000|0x00008000
 DATA = {
 !if $(ARCH) == AARCH64
   0x01, 0x00, 0x00, 0x10,                         # code0: adr x1, .
-  0xff, 0x07, 0x00, 0x14,                         # code1: b 0x2000
+  0xff, 0x1f, 0x00, 0x14,                         # code1: b 0x8000
   0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, # text_offset: 512 KB
   0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, # image_size: 2 MB
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # flags
@@ -79,7 +79,7 @@ [FD.QEMU_EFI]
   0x00, 0x00, 0xa0, 0xe1, # nop
   0x00, 0x00, 0xa0, 0xe1, # nop
 
-  0xf6, 0x07, 0x00, 0xea, # b 0x2000
+  0xf6, 0x1f, 0x00, 0xea, # b 0x8000
   0x18, 0x28, 0x6f, 0x01, # magic
   0x00, 0x00, 0x00, 0x00, # start
   0x00, 0x00, 0x20, 0x00, # image size: 2 MB
@@ -87,7 +87,7 @@ [FD.QEMU_EFI]
 !endif
 }
 
-0x00002000|0x001fe000
+0x00008000|0x001f8000
 gArmTokenSpaceGuid.PcdFvBaseAddress|gArmTokenSpaceGuid.PcdFvSize
 FV = FVMAIN_COMPACT
 
-- 
2.9.3

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Re: [edk2] [PATCH] ArmVirtPkg/ArmVirtQemuKernel: increase slack space for DTB
Posted by Laszlo Ersek 7 years, 7 months ago
On 04/04/17 16:45, Ard Biesheuvel wrote:
> The relocatable build of ArmVirtQemuKernel is designed to be executed
> from RAM, and contains some scratch memory at the start of the image
> to use as a stack very early on, and to preserve the DTB image received
> from QEMU while it discovers and initializes memory.
> 
> It turns out that 8 KB is a bit on the small side here, especially when
> executing with secure world emulation enabled, in which case there are
> additional nodes present.
> 
> So increase the slack space to 32 KB.
> 
> While at it, remove a stale Xen reference that was copy/pasted when this
> file was created.
> 
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> ---
>  ArmVirtPkg/ArmVirtQemuKernel.fdf | 12 ++++++------
>  1 file changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/ArmVirtPkg/ArmVirtQemuKernel.fdf b/ArmVirtPkg/ArmVirtQemuKernel.fdf
> index 7bc62f6b0b48..55541a1075d8 100644
> --- a/ArmVirtPkg/ArmVirtQemuKernel.fdf
> +++ b/ArmVirtPkg/ArmVirtQemuKernel.fdf
> @@ -52,15 +52,15 @@ [FD.QEMU_EFI]
>  ################################################################################
>  
>  #
> -# Implement the Linux kernel header layout so that the Xen loader will identify
> +# Implement the Linux kernel header layout so that the loader will identify
>  # it as something bootable, and execute it with a FDT pointer in x0 or r2.
> -# This area will be reused to store a copy of the FDT so round it up to 8 KB.
> +# This area will be reused to store a copy of the FDT so round it up to 32 KB.
>  #
> -0x00000000|0x00002000
> +0x00000000|0x00008000
>  DATA = {
>  !if $(ARCH) == AARCH64
>    0x01, 0x00, 0x00, 0x10,                         # code0: adr x1, .
> -  0xff, 0x07, 0x00, 0x14,                         # code1: b 0x2000
> +  0xff, 0x1f, 0x00, 0x14,                         # code1: b 0x8000
>    0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, # text_offset: 512 KB
>    0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, # image_size: 2 MB
>    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # flags
> @@ -79,7 +79,7 @@ [FD.QEMU_EFI]
>    0x00, 0x00, 0xa0, 0xe1, # nop
>    0x00, 0x00, 0xa0, 0xe1, # nop
>  
> -  0xf6, 0x07, 0x00, 0xea, # b 0x2000
> +  0xf6, 0x1f, 0x00, 0xea, # b 0x8000
>    0x18, 0x28, 0x6f, 0x01, # magic
>    0x00, 0x00, 0x00, 0x00, # start
>    0x00, 0x00, 0x20, 0x00, # image size: 2 MB
> @@ -87,7 +87,7 @@ [FD.QEMU_EFI]
>  !endif
>  }
>  
> -0x00002000|0x001fe000
> +0x00008000|0x001f8000
>  gArmTokenSpaceGuid.PcdFvBaseAddress|gArmTokenSpaceGuid.PcdFvSize
>  FV = FVMAIN_COMPACT
>  
> 

Acked-by: Laszlo Ersek <lersek@redhat.com>
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Re: [edk2] [PATCH] ArmVirtPkg/ArmVirtQemuKernel: increase slack space for DTB
Posted by Ard Biesheuvel 7 years, 7 months ago
On 4 April 2017 at 15:59, Laszlo Ersek <lersek@redhat.com> wrote:
> On 04/04/17 16:45, Ard Biesheuvel wrote:
>> The relocatable build of ArmVirtQemuKernel is designed to be executed
>> from RAM, and contains some scratch memory at the start of the image
>> to use as a stack very early on, and to preserve the DTB image received
>> from QEMU while it discovers and initializes memory.
>>
>> It turns out that 8 KB is a bit on the small side here, especially when
>> executing with secure world emulation enabled, in which case there are
>> additional nodes present.
>>
>> So increase the slack space to 32 KB.
>>
>> While at it, remove a stale Xen reference that was copy/pasted when this
>> file was created.
>>
>> Contributed-under: TianoCore Contribution Agreement 1.0
>> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
>> ---
>>  ArmVirtPkg/ArmVirtQemuKernel.fdf | 12 ++++++------
>>  1 file changed, 6 insertions(+), 6 deletions(-)
>>
>> diff --git a/ArmVirtPkg/ArmVirtQemuKernel.fdf b/ArmVirtPkg/ArmVirtQemuKernel.fdf
>> index 7bc62f6b0b48..55541a1075d8 100644
>> --- a/ArmVirtPkg/ArmVirtQemuKernel.fdf
>> +++ b/ArmVirtPkg/ArmVirtQemuKernel.fdf
>> @@ -52,15 +52,15 @@ [FD.QEMU_EFI]
>>  ################################################################################
>>
>>  #
>> -# Implement the Linux kernel header layout so that the Xen loader will identify
>> +# Implement the Linux kernel header layout so that the loader will identify
>>  # it as something bootable, and execute it with a FDT pointer in x0 or r2.
>> -# This area will be reused to store a copy of the FDT so round it up to 8 KB.
>> +# This area will be reused to store a copy of the FDT so round it up to 32 KB.
>>  #
>> -0x00000000|0x00002000
>> +0x00000000|0x00008000
>>  DATA = {
>>  !if $(ARCH) == AARCH64
>>    0x01, 0x00, 0x00, 0x10,                         # code0: adr x1, .
>> -  0xff, 0x07, 0x00, 0x14,                         # code1: b 0x2000
>> +  0xff, 0x1f, 0x00, 0x14,                         # code1: b 0x8000
>>    0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, # text_offset: 512 KB
>>    0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, # image_size: 2 MB
>>    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # flags
>> @@ -79,7 +79,7 @@ [FD.QEMU_EFI]
>>    0x00, 0x00, 0xa0, 0xe1, # nop
>>    0x00, 0x00, 0xa0, 0xe1, # nop
>>
>> -  0xf6, 0x07, 0x00, 0xea, # b 0x2000
>> +  0xf6, 0x1f, 0x00, 0xea, # b 0x8000
>>    0x18, 0x28, 0x6f, 0x01, # magic
>>    0x00, 0x00, 0x00, 0x00, # start
>>    0x00, 0x00, 0x20, 0x00, # image size: 2 MB
>> @@ -87,7 +87,7 @@ [FD.QEMU_EFI]
>>  !endif
>>  }
>>
>> -0x00002000|0x001fe000
>> +0x00008000|0x001f8000
>>  gArmTokenSpaceGuid.PcdFvBaseAddress|gArmTokenSpaceGuid.PcdFvSize
>>  FV = FVMAIN_COMPACT
>>
>>
>
> Acked-by: Laszlo Ersek <lersek@redhat.com>

Thanks. Pushed as 4d2ea2616e94
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Re: [edk2] [PATCH] ArmVirtPkg/ArmVirtQemuKernel: increase slack space for DTB
Posted by Michael Zimmermann 7 years, 6 months ago
"contains some scratch memory at the start of the image to use as a
stack very early on"
When does this happen? I didn't see any edk2-code which sets SP to the
slack space.

Thanks
Michael

On Tue, Apr 4, 2017 at 5:02 PM, Ard Biesheuvel
<ard.biesheuvel@linaro.org> wrote:
> On 4 April 2017 at 15:59, Laszlo Ersek <lersek@redhat.com> wrote:
>> On 04/04/17 16:45, Ard Biesheuvel wrote:
>>> The relocatable build of ArmVirtQemuKernel is designed to be executed
>>> from RAM, and contains some scratch memory at the start of the image
>>> to use as a stack very early on, and to preserve the DTB image received
>>> from QEMU while it discovers and initializes memory.
>>>
>>> It turns out that 8 KB is a bit on the small side here, especially when
>>> executing with secure world emulation enabled, in which case there are
>>> additional nodes present.
>>>
>>> So increase the slack space to 32 KB.
>>>
>>> While at it, remove a stale Xen reference that was copy/pasted when this
>>> file was created.
>>>
>>> Contributed-under: TianoCore Contribution Agreement 1.0
>>> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
>>> ---
>>>  ArmVirtPkg/ArmVirtQemuKernel.fdf | 12 ++++++------
>>>  1 file changed, 6 insertions(+), 6 deletions(-)
>>>
>>> diff --git a/ArmVirtPkg/ArmVirtQemuKernel.fdf b/ArmVirtPkg/ArmVirtQemuKernel.fdf
>>> index 7bc62f6b0b48..55541a1075d8 100644
>>> --- a/ArmVirtPkg/ArmVirtQemuKernel.fdf
>>> +++ b/ArmVirtPkg/ArmVirtQemuKernel.fdf
>>> @@ -52,15 +52,15 @@ [FD.QEMU_EFI]
>>>  ################################################################################
>>>
>>>  #
>>> -# Implement the Linux kernel header layout so that the Xen loader will identify
>>> +# Implement the Linux kernel header layout so that the loader will identify
>>>  # it as something bootable, and execute it with a FDT pointer in x0 or r2.
>>> -# This area will be reused to store a copy of the FDT so round it up to 8 KB.
>>> +# This area will be reused to store a copy of the FDT so round it up to 32 KB.
>>>  #
>>> -0x00000000|0x00002000
>>> +0x00000000|0x00008000
>>>  DATA = {
>>>  !if $(ARCH) == AARCH64
>>>    0x01, 0x00, 0x00, 0x10,                         # code0: adr x1, .
>>> -  0xff, 0x07, 0x00, 0x14,                         # code1: b 0x2000
>>> +  0xff, 0x1f, 0x00, 0x14,                         # code1: b 0x8000
>>>    0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, # text_offset: 512 KB
>>>    0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, # image_size: 2 MB
>>>    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # flags
>>> @@ -79,7 +79,7 @@ [FD.QEMU_EFI]
>>>    0x00, 0x00, 0xa0, 0xe1, # nop
>>>    0x00, 0x00, 0xa0, 0xe1, # nop
>>>
>>> -  0xf6, 0x07, 0x00, 0xea, # b 0x2000
>>> +  0xf6, 0x1f, 0x00, 0xea, # b 0x8000
>>>    0x18, 0x28, 0x6f, 0x01, # magic
>>>    0x00, 0x00, 0x00, 0x00, # start
>>>    0x00, 0x00, 0x20, 0x00, # image size: 2 MB
>>> @@ -87,7 +87,7 @@ [FD.QEMU_EFI]
>>>  !endif
>>>  }
>>>
>>> -0x00002000|0x001fe000
>>> +0x00008000|0x001f8000
>>>  gArmTokenSpaceGuid.PcdFvBaseAddress|gArmTokenSpaceGuid.PcdFvSize
>>>  FV = FVMAIN_COMPACT
>>>
>>>
>>
>> Acked-by: Laszlo Ersek <lersek@redhat.com>
>
> Thanks. Pushed as 4d2ea2616e94
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Re: [edk2] [PATCH] ArmVirtPkg/ArmVirtQemuKernel: increase slack space for DTB
Posted by Michael Zimmermann 7 years, 6 months ago
Ok I've found it in "RelocatableVirtHelper.S".

Thanks
Michael

On Fri, Apr 14, 2017 at 8:04 AM, Michael Zimmermann
<sigmaepsilon92@gmail.com> wrote:
> "contains some scratch memory at the start of the image to use as a
> stack very early on"
> When does this happen? I didn't see any edk2-code which sets SP to the
> slack space.
>
> Thanks
> Michael
>
> On Tue, Apr 4, 2017 at 5:02 PM, Ard Biesheuvel
> <ard.biesheuvel@linaro.org> wrote:
>> On 4 April 2017 at 15:59, Laszlo Ersek <lersek@redhat.com> wrote:
>>> On 04/04/17 16:45, Ard Biesheuvel wrote:
>>>> The relocatable build of ArmVirtQemuKernel is designed to be executed
>>>> from RAM, and contains some scratch memory at the start of the image
>>>> to use as a stack very early on, and to preserve the DTB image received
>>>> from QEMU while it discovers and initializes memory.
>>>>
>>>> It turns out that 8 KB is a bit on the small side here, especially when
>>>> executing with secure world emulation enabled, in which case there are
>>>> additional nodes present.
>>>>
>>>> So increase the slack space to 32 KB.
>>>>
>>>> While at it, remove a stale Xen reference that was copy/pasted when this
>>>> file was created.
>>>>
>>>> Contributed-under: TianoCore Contribution Agreement 1.0
>>>> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
>>>> ---
>>>>  ArmVirtPkg/ArmVirtQemuKernel.fdf | 12 ++++++------
>>>>  1 file changed, 6 insertions(+), 6 deletions(-)
>>>>
>>>> diff --git a/ArmVirtPkg/ArmVirtQemuKernel.fdf b/ArmVirtPkg/ArmVirtQemuKernel.fdf
>>>> index 7bc62f6b0b48..55541a1075d8 100644
>>>> --- a/ArmVirtPkg/ArmVirtQemuKernel.fdf
>>>> +++ b/ArmVirtPkg/ArmVirtQemuKernel.fdf
>>>> @@ -52,15 +52,15 @@ [FD.QEMU_EFI]
>>>>  ################################################################################
>>>>
>>>>  #
>>>> -# Implement the Linux kernel header layout so that the Xen loader will identify
>>>> +# Implement the Linux kernel header layout so that the loader will identify
>>>>  # it as something bootable, and execute it with a FDT pointer in x0 or r2.
>>>> -# This area will be reused to store a copy of the FDT so round it up to 8 KB.
>>>> +# This area will be reused to store a copy of the FDT so round it up to 32 KB.
>>>>  #
>>>> -0x00000000|0x00002000
>>>> +0x00000000|0x00008000
>>>>  DATA = {
>>>>  !if $(ARCH) == AARCH64
>>>>    0x01, 0x00, 0x00, 0x10,                         # code0: adr x1, .
>>>> -  0xff, 0x07, 0x00, 0x14,                         # code1: b 0x2000
>>>> +  0xff, 0x1f, 0x00, 0x14,                         # code1: b 0x8000
>>>>    0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, # text_offset: 512 KB
>>>>    0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, # image_size: 2 MB
>>>>    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # flags
>>>> @@ -79,7 +79,7 @@ [FD.QEMU_EFI]
>>>>    0x00, 0x00, 0xa0, 0xe1, # nop
>>>>    0x00, 0x00, 0xa0, 0xe1, # nop
>>>>
>>>> -  0xf6, 0x07, 0x00, 0xea, # b 0x2000
>>>> +  0xf6, 0x1f, 0x00, 0xea, # b 0x8000
>>>>    0x18, 0x28, 0x6f, 0x01, # magic
>>>>    0x00, 0x00, 0x00, 0x00, # start
>>>>    0x00, 0x00, 0x20, 0x00, # image size: 2 MB
>>>> @@ -87,7 +87,7 @@ [FD.QEMU_EFI]
>>>>  !endif
>>>>  }
>>>>
>>>> -0x00002000|0x001fe000
>>>> +0x00008000|0x001f8000
>>>>  gArmTokenSpaceGuid.PcdFvBaseAddress|gArmTokenSpaceGuid.PcdFvSize
>>>>  FV = FVMAIN_COMPACT
>>>>
>>>>
>>>
>>> Acked-by: Laszlo Ersek <lersek@redhat.com>
>>
>> Thanks. Pushed as 4d2ea2616e94
>> _______________________________________________
>> edk2-devel mailing list
>> edk2-devel@lists.01.org
>> https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel