Re: [U-Boot] [PATCH v2 5/8] arm: efi: Add a hello world test program

2016-11-07 Thread Simon Glass
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

2016-10-19 Thread Alexander Graf


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

2016-10-18 Thread Simon Glass
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

2016-10-04 Thread 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.

>
>
> 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

2016-10-04 Thread Alexander Graf


> 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

2016-10-03 Thread Alexander Graf


> 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

2016-10-03 Thread 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 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

2016-09-27 Thread Tom Rini
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

2016-09-26 Thread Bin Meng
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

2016-09-26 Thread Alexander Graf


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

2016-09-25 Thread Simon Glass
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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