Re: [U-Boot] [PATCH v2 5/8] arm: efi: Add a hello world test program
Hi Alex, On 19 October 2016 at 01:07, Alexander Graf wrote: > > > On 18/10/2016 22:37, Simon Glass wrote: >> Hi Alex, >> >> On 4 October 2016 at 09:50, Alexander Graf wrote: >>> >>> >>> Am 04.10.2016 um 17:37 schrieb Simon Glass : >>> >>> Hi Alex, >>> >>> On 3 October 2016 at 21:15, Alexander Graf wrote: >>> >>> >>> >>> Am 03.10.2016 um 23:50 schrieb Simon Glass : >>> >>> >>> Hi, >>> >>> >>> On 27 September 2016 at 15:28, Tom Rini wrote: >>> >>> >>> On Mon, Sep 26, 2016 at 09:36:19AM +0200, Alexander Graf wrote: >>> >>> >>> >>> >>> On 25.09.16 23:27, Simon Glass wrote: >>> >>> >>> It is useful to have a basic sanity check for EFI loader support. Add a >>> >>> >>> 'bootefi hello' command which loads HelloWord.efi and runs it under U-Boot. >>> >>> >>> >>> Signed-off-by: Simon Glass >>> >>> >>> --- >>> >>> >>> >>> Changes in v2: None >>> >>> >>> >>> arch/arm/lib/HelloWorld32.efi | Bin 0 -> 11712 bytes >>> >>> >>> >>> IIRC U-Boot as a whole is GPL licensed, which means that any binaries >>> >>> >>> shipped inside would also need to be GPL compatibly licensed which again >>> >>> >>> means that the source code (and build instructions?) for this .efi file >>> >>> >>> would need to be part of the tree, no? >>> >>> >>> >>> Yeah, I'm not super comfortable with this. >>> >>> >>> >>> Do you think we should drop these binary patches? I could always put >>> >>> the binaries somewhere along with instructions on how to get them. >>> >>> >>> >>> I think that's the best option, yes. You can always just add a url to the >>> >>> readme to point people into the right direction. >>> >>> >>> OK. One problem is that we cannot write a test for it unless we >>> actually run an EFI application. >>> >>> >>> Well, you could always provide a binary disk image that you run in qemu as >>> test case. That one doesn't have to be gpl compliant thn because it's not >>> derived work :). >>> >>> >>> >>> >>> I do think it is useful to be able to test the platform though. >>> >>> >>> >>> I don't disagree, but I would argue that for the average u-boot user it >>> >>> brings no additional value ;). And people like you who know how to enable a >>> >>> new architecture probably also know how to get a file into their target's >>> >>> memory. >>> >>> >>> I wonder if we can build our own hello world application? I think I >>> did it once. But there is EFI library code that we would need to bring >>> in (perhaps a small amount). >>> >>> >>> We could. The main problem is the PE header. >> >> What is tricky about that? > > Our compiler usually generates elf files, no PE binaries. So we'd have > to assemble the PE header ourselves - or rely on a second compiler. I think I'm going to go with the first option which seems easy enough. Regards, Simon ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH v2 5/8] arm: efi: Add a hello world test program
On 18/10/2016 22:37, Simon Glass wrote: > Hi Alex, > > On 4 October 2016 at 09:50, Alexander Graf wrote: >> >> >> Am 04.10.2016 um 17:37 schrieb Simon Glass : >> >> Hi Alex, >> >> On 3 October 2016 at 21:15, Alexander Graf wrote: >> >> >> >> Am 03.10.2016 um 23:50 schrieb Simon Glass : >> >> >> Hi, >> >> >> On 27 September 2016 at 15:28, Tom Rini wrote: >> >> >> On Mon, Sep 26, 2016 at 09:36:19AM +0200, Alexander Graf wrote: >> >> >> >> >> On 25.09.16 23:27, Simon Glass wrote: >> >> >> It is useful to have a basic sanity check for EFI loader support. Add a >> >> >> 'bootefi hello' command which loads HelloWord.efi and runs it under U-Boot. >> >> >> >> Signed-off-by: Simon Glass >> >> >> --- >> >> >> >> Changes in v2: None >> >> >> >> arch/arm/lib/HelloWorld32.efi | Bin 0 -> 11712 bytes >> >> >> >> IIRC U-Boot as a whole is GPL licensed, which means that any binaries >> >> >> shipped inside would also need to be GPL compatibly licensed which again >> >> >> means that the source code (and build instructions?) for this .efi file >> >> >> would need to be part of the tree, no? >> >> >> >> Yeah, I'm not super comfortable with this. >> >> >> >> Do you think we should drop these binary patches? I could always put >> >> the binaries somewhere along with instructions on how to get them. >> >> >> >> I think that's the best option, yes. You can always just add a url to the >> >> readme to point people into the right direction. >> >> >> OK. One problem is that we cannot write a test for it unless we >> actually run an EFI application. >> >> >> Well, you could always provide a binary disk image that you run in qemu as >> test case. That one doesn't have to be gpl compliant thn because it's not >> derived work :). >> >> >> >> >> I do think it is useful to be able to test the platform though. >> >> >> >> I don't disagree, but I would argue that for the average u-boot user it >> >> brings no additional value ;). And people like you who know how to enable a >> >> new architecture probably also know how to get a file into their target's >> >> memory. >> >> >> I wonder if we can build our own hello world application? I think I >> did it once. But there is EFI library code that we would need to bring >> in (perhaps a small amount). >> >> >> We could. The main problem is the PE header. > > What is tricky about that? Our compiler usually generates elf files, no PE binaries. So we'd have to assemble the PE header ourselves - or rely on a second compiler. Alex ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH v2 5/8] arm: efi: Add a hello world test program
Hi Alex, On 4 October 2016 at 09:50, Alexander Graf wrote: > > > Am 04.10.2016 um 17:37 schrieb Simon Glass : > > Hi Alex, > > On 3 October 2016 at 21:15, Alexander Graf wrote: > > > > Am 03.10.2016 um 23:50 schrieb Simon Glass : > > > Hi, > > > On 27 September 2016 at 15:28, Tom Rini wrote: > > > On Mon, Sep 26, 2016 at 09:36:19AM +0200, Alexander Graf wrote: > > > > > On 25.09.16 23:27, Simon Glass wrote: > > > It is useful to have a basic sanity check for EFI loader support. Add a > > > 'bootefi hello' command which loads HelloWord.efi and runs it under U-Boot. > > > > Signed-off-by: Simon Glass > > > --- > > > > Changes in v2: None > > > > arch/arm/lib/HelloWorld32.efi | Bin 0 -> 11712 bytes > > > > IIRC U-Boot as a whole is GPL licensed, which means that any binaries > > > shipped inside would also need to be GPL compatibly licensed which again > > > means that the source code (and build instructions?) for this .efi file > > > would need to be part of the tree, no? > > > > Yeah, I'm not super comfortable with this. > > > > Do you think we should drop these binary patches? I could always put > > the binaries somewhere along with instructions on how to get them. > > > > I think that's the best option, yes. You can always just add a url to the > > readme to point people into the right direction. > > > OK. One problem is that we cannot write a test for it unless we > actually run an EFI application. > > > Well, you could always provide a binary disk image that you run in qemu as > test case. That one doesn't have to be gpl compliant thn because it's not > derived work :). > > > > > I do think it is useful to be able to test the platform though. > > > > I don't disagree, but I would argue that for the average u-boot user it > > brings no additional value ;). And people like you who know how to enable a > > new architecture probably also know how to get a file into their target's > > memory. > > > I wonder if we can build our own hello world application? I think I > did it once. But there is EFI library code that we would need to bring > in (perhaps a small amount). > > > We could. The main problem is the PE header. What is tricky about that? > > Maybe we can trick around that with bincopy -O binary though. Hmm :). Yes I think it is possible, and desirable. But for now I've gone with using an external patch. I may come back to this another time. Regards, Simon ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH v2 5/8] arm: efi: Add a hello world test program
Hi Alex, On 3 October 2016 at 21:15, Alexander Graf wrote: > > > Am 03.10.2016 um 23:50 schrieb Simon Glass : > > Hi, > > On 27 September 2016 at 15:28, Tom Rini wrote: > > On Mon, Sep 26, 2016 at 09:36:19AM +0200, Alexander Graf wrote: > > > > On 25.09.16 23:27, Simon Glass wrote: > > It is useful to have a basic sanity check for EFI loader support. Add a > > 'bootefi hello' command which loads HelloWord.efi and runs it under U-Boot. > > > Signed-off-by: Simon Glass > > --- > > > Changes in v2: None > > > arch/arm/lib/HelloWorld32.efi | Bin 0 -> 11712 bytes > > > IIRC U-Boot as a whole is GPL licensed, which means that any binaries > > shipped inside would also need to be GPL compatibly licensed which again > > means that the source code (and build instructions?) for this .efi file > > would need to be part of the tree, no? > > > Yeah, I'm not super comfortable with this. > > > Do you think we should drop these binary patches? I could always put > the binaries somewhere along with instructions on how to get them. > > > I think that's the best option, yes. You can always just add a url to the > readme to point people into the right direction. OK. One problem is that we cannot write a test for it unless we actually run an EFI application. > > > I do think it is useful to be able to test the platform though. > > > I don't disagree, but I would argue that for the average u-boot user it > brings no additional value ;). And people like you who know how to enable a > new architecture probably also know how to get a file into their target's > memory. I wonder if we can build our own hello world application? I think I did it once. But there is EFI library code that we would need to bring in (perhaps a small amount). Regards, Simon ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH v2 5/8] arm: efi: Add a hello world test program
> Am 04.10.2016 um 17:37 schrieb Simon Glass : > > Hi Alex, > >> On 3 October 2016 at 21:15, Alexander Graf wrote: >> >> >> Am 03.10.2016 um 23:50 schrieb Simon Glass : >> >> Hi, >> >> On 27 September 2016 at 15:28, Tom Rini wrote: >> >> On Mon, Sep 26, 2016 at 09:36:19AM +0200, Alexander Graf wrote: >> >> >> >> On 25.09.16 23:27, Simon Glass wrote: >> >> It is useful to have a basic sanity check for EFI loader support. Add a >> >> 'bootefi hello' command which loads HelloWord.efi and runs it under U-Boot. >> >> >> Signed-off-by: Simon Glass >> >> --- >> >> >> Changes in v2: None >> >> >> arch/arm/lib/HelloWorld32.efi | Bin 0 -> 11712 bytes >> >> >> IIRC U-Boot as a whole is GPL licensed, which means that any binaries >> >> shipped inside would also need to be GPL compatibly licensed which again >> >> means that the source code (and build instructions?) for this .efi file >> >> would need to be part of the tree, no? >> >> >> Yeah, I'm not super comfortable with this. >> >> >> Do you think we should drop these binary patches? I could always put >> the binaries somewhere along with instructions on how to get them. >> >> >> I think that's the best option, yes. You can always just add a url to the >> readme to point people into the right direction. > > OK. One problem is that we cannot write a test for it unless we > actually run an EFI application. Well, you could always provide a binary disk image that you run in qemu as test case. That one doesn't have to be gpl compliant thn because it's not derived work :). > >> >> >> I do think it is useful to be able to test the platform though. >> >> >> I don't disagree, but I would argue that for the average u-boot user it >> brings no additional value ;). And people like you who know how to enable a >> new architecture probably also know how to get a file into their target's >> memory. > > I wonder if we can build our own hello world application? I think I > did it once. But there is EFI library code that we would need to bring > in (perhaps a small amount). We could. The main problem is the PE header. Maybe we can trick around that with bincopy -O binary though. Hmm :). Alex > > Regards, > Simon ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH v2 5/8] arm: efi: Add a hello world test program
> Am 03.10.2016 um 23:50 schrieb Simon Glass : > > Hi, > >> On 27 September 2016 at 15:28, Tom Rini wrote: >>> On Mon, Sep 26, 2016 at 09:36:19AM +0200, Alexander Graf wrote: >>> >>> On 25.09.16 23:27, Simon Glass wrote: It is useful to have a basic sanity check for EFI loader support. Add a 'bootefi hello' command which loads HelloWord.efi and runs it under U-Boot. Signed-off-by: Simon Glass --- Changes in v2: None arch/arm/lib/HelloWorld32.efi | Bin 0 -> 11712 bytes >>> >>> IIRC U-Boot as a whole is GPL licensed, which means that any binaries >>> shipped inside would also need to be GPL compatibly licensed which again >>> means that the source code (and build instructions?) for this .efi file >>> would need to be part of the tree, no? >> >> Yeah, I'm not super comfortable with this. > > Do you think we should drop these binary patches? I could always put > the binaries somewhere along with instructions on how to get them. I think that's the best option, yes. You can always just add a url to the readme to point people into the right direction. > > I do think it is useful to be able to test the platform though. I don't disagree, but I would argue that for the average u-boot user it brings no additional value ;). And people like you who know how to enable a new architecture probably also know how to get a file into their target's memory. Alex > > Regards, > Simon ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH v2 5/8] arm: efi: Add a hello world test program
Hi, On 27 September 2016 at 15:28, Tom Rini wrote: > On Mon, Sep 26, 2016 at 09:36:19AM +0200, Alexander Graf wrote: >> >> >> On 25.09.16 23:27, Simon Glass wrote: >> > It is useful to have a basic sanity check for EFI loader support. Add a >> > 'bootefi hello' command which loads HelloWord.efi and runs it under U-Boot. >> > >> > Signed-off-by: Simon Glass >> > --- >> > >> > Changes in v2: None >> > >> > arch/arm/lib/HelloWorld32.efi | Bin 0 -> 11712 bytes >> >> IIRC U-Boot as a whole is GPL licensed, which means that any binaries >> shipped inside would also need to be GPL compatibly licensed which again >> means that the source code (and build instructions?) for this .efi file >> would need to be part of the tree, no? > > Yeah, I'm not super comfortable with this. Do you think we should drop these binary patches? I could always put the binaries somewhere along with instructions on how to get them. I do think it is useful to be able to test the platform though. Regards, Simon ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH v2 5/8] arm: efi: Add a hello world test program
On Mon, Sep 26, 2016 at 09:36:19AM +0200, Alexander Graf wrote: > > > On 25.09.16 23:27, Simon Glass wrote: > > It is useful to have a basic sanity check for EFI loader support. Add a > > 'bootefi hello' command which loads HelloWord.efi and runs it under U-Boot. > > > > Signed-off-by: Simon Glass > > --- > > > > Changes in v2: None > > > > arch/arm/lib/HelloWorld32.efi | Bin 0 -> 11712 bytes > > IIRC U-Boot as a whole is GPL licensed, which means that any binaries > shipped inside would also need to be GPL compatibly licensed which again > means that the source code (and build instructions?) for this .efi file > would need to be part of the tree, no? Yeah, I'm not super comfortable with this. -- Tom signature.asc Description: Digital signature ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH v2 5/8] arm: efi: Add a hello world test program
Hi Simon, On Mon, Sep 26, 2016 at 5:27 AM, Simon Glass wrote: > It is useful to have a basic sanity check for EFI loader support. Add a > 'bootefi hello' command which loads HelloWord.efi and runs it under U-Boot. > > Signed-off-by: Simon Glass > --- > > Changes in v2: None > > arch/arm/lib/HelloWorld32.efi | Bin 0 -> 11712 bytes > arch/arm/lib/Makefile | 7 +++ > cmd/Kconfig| 10 ++ > cmd/bootefi.c | 26 -- > include/asm-generic/sections.h | 2 ++ > scripts/Makefile.lib | 19 +++ > 6 files changed, 58 insertions(+), 6 deletions(-) > create mode 100644 arch/arm/lib/HelloWorld32.efi > [snip] > diff --git a/arch/arm/lib/Makefile b/arch/arm/lib/Makefile > index caa62c6..64378e1 100644 > --- a/arch/arm/lib/Makefile > +++ b/arch/arm/lib/Makefile > @@ -30,6 +30,13 @@ obj-$(CONFIG_CMD_BOOTI) += bootm.o > obj-$(CONFIG_CMD_BOOTM) += bootm.o > obj-$(CONFIG_CMD_BOOTZ) += bootm.o zimage.o > obj-$(CONFIG_SYS_L2_PL310) += cache-pl310.o > +ifdef CONFIG_ARM64 > +# This option does not work for arm64, as there is no binary. > +# TODO(s...@chromium.org): Add this once it is possible to build one > +obj-$(CONFIG_CMD_BOOTEFI_HELLO) += HelloWorld64.o > +else > +obj-$(CONFIG_CMD_BOOTEFI_HELLO) += HelloWorld32.o > +endif > obj-$(CONFIG_USE_ARCH_MEMSET) += memset.o > obj-$(CONFIG_USE_ARCH_MEMCPY) += memcpy.o > else > diff --git a/cmd/Kconfig b/cmd/Kconfig > index d28da54..f12fcb8 100644 > --- a/cmd/Kconfig > +++ b/cmd/Kconfig > @@ -181,6 +181,16 @@ config CMD_BOOTEFI > help > Boot an EFI image from memory. > > +config CMD_BOOTEFI_HELLO > + bool "Allow booting a standard EFI hello word for testing" typo: world Please fix all other typos which were pointed out in the v1 comment: http://patchwork.ozlabs.org/patch/656430/ > + depends on CMD_BOOTEFI > + default y if CMD_BOOTEFI && !ARM64 > + help > + This adds a standard EFI hello world application to U-Boot so that > + it can be used with the 'bootefi hello' command. This is useful > + for testing that EFI is woring at a basic level, and for brining > + up EFI support on a new architecture. > + [snip] Regards, Bin ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH v2 5/8] arm: efi: Add a hello world test program
On 25.09.16 23:27, Simon Glass wrote: > It is useful to have a basic sanity check for EFI loader support. Add a > 'bootefi hello' command which loads HelloWord.efi and runs it under U-Boot. > > Signed-off-by: Simon Glass > --- > > Changes in v2: None > > arch/arm/lib/HelloWorld32.efi | Bin 0 -> 11712 bytes IIRC U-Boot as a whole is GPL licensed, which means that any binaries shipped inside would also need to be GPL compatibly licensed which again means that the source code (and build instructions?) for this .efi file would need to be part of the tree, no? Alex ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
[U-Boot] [PATCH v2 5/8] arm: efi: Add a hello world test program
It is useful to have a basic sanity check for EFI loader support. Add a 'bootefi hello' command which loads HelloWord.efi and runs it under U-Boot. Signed-off-by: Simon Glass --- Changes in v2: None arch/arm/lib/HelloWorld32.efi | Bin 0 -> 11712 bytes arch/arm/lib/Makefile | 7 +++ cmd/Kconfig| 10 ++ cmd/bootefi.c | 26 -- include/asm-generic/sections.h | 2 ++ scripts/Makefile.lib | 19 +++ 6 files changed, 58 insertions(+), 6 deletions(-) create mode 100644 arch/arm/lib/HelloWorld32.efi diff --git a/arch/arm/lib/HelloWorld32.efi b/arch/arm/lib/HelloWorld32.efi new file mode 100644 index ..7708451c04a99752ed468842090a9b3f3506090e GIT binary patch literal 11712 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