Message ID | 20170404144553.17976-1-ard.biesheuvel@linaro.org |
---|---|
State | Accepted |
Commit | 4d2ea2616e948cca34e03d90d9f094f11e42c00b |
Headers | show |
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
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
"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
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
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
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(-) -- 2.9.3 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel