* [U-Boot-Users] [PATCH] Blackfin: implement go/boote wrappers
@ 2008-04-19 5:45 Mike Frysinger
2008-04-20 23:38 ` Wolfgang Denk
0 siblings, 1 reply; 19+ messages in thread
From: Mike Frysinger @ 2008-04-19 5:45 UTC (permalink / raw)
To: u-boot
Override the default go/boote handlers as we want to disable both data and
instruction cache before executing external programs (since Blackfin cache
handling requires a software handler in U-Boot which may be overwritten).
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
lib_blackfin/Makefile | 2 +-
lib_blackfin/{bootm.c => boot.c} | 20 ++++++++++++++++++++
2 files changed, 21 insertions(+), 1 deletions(-)
rename lib_blackfin/{bootm.c => boot.c} (80%)
diff --git a/lib_blackfin/Makefile b/lib_blackfin/Makefile
index 3617104..879c37f 100644
--- a/lib_blackfin/Makefile
+++ b/lib_blackfin/Makefile
@@ -37,7 +37,7 @@ SOBJS-y += memmove.o
SOBJS-y += memset.o
COBJS-y += board.o
-COBJS-y += bootm.o
+COBJS-y += boot.o
COBJS-y += cache.o
COBJS-y += muldi3.o
COBJS-y += post.o
diff --git a/lib_blackfin/bootm.c b/lib_blackfin/boot.c
similarity index 80%
rename from lib_blackfin/bootm.c
rename to lib_blackfin/boot.c
index ef4b112..5ea4afb 100644
--- a/lib_blackfin/bootm.c
+++ b/lib_blackfin/boot.c
@@ -77,3 +77,23 @@ void do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
if (images->autostart)
do_reset (cmdtp, flag, argc, argv);
}
+
+unsigned long do_go_exec(ulong (*entry)(int, char *[]), int argc, char *argv[])
+{
+ int d = dcache_status();
+ int i = icache_status();
+
+ dcache_disable();
+ icache_disable();
+
+ int ret = entry(argc, argv);
+
+ if (d) dcache_enable();
+ if (i) icache_enable();
+
+ return ret;
+}
+unsigned long do_bootelf_exec(ulong (*entry)(int, char *[]), int argc, char *argv[])
+{
+ return do_go_exec(entry, argc, argv);
+}
--
1.5.5
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [U-Boot-Users] [PATCH] Blackfin: implement go/boote wrappers
2008-04-19 5:45 [U-Boot-Users] [PATCH] Blackfin: implement go/boote wrappers Mike Frysinger
@ 2008-04-20 23:38 ` Wolfgang Denk
2008-04-21 0:31 ` Mike Frysinger
0 siblings, 1 reply; 19+ messages in thread
From: Wolfgang Denk @ 2008-04-20 23:38 UTC (permalink / raw)
To: u-boot
In message <1208583950-9454-1-git-send-email-vapier@gentoo.org> you wrote:
> Override the default go/boote handlers as we want to disable both data and
> instruction cache before executing external programs (since Blackfin cache
> handling requires a software handler in U-Boot which may be overwritten).
Umnmm... no. "go" is supposed to be return to U-Boot, i. e. it must
not overwrite (or otherwise meddle with) any U-Boot code.
I think you should not change cache status for "go".
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
... The things love can drive a man to -- the ecstasies, the mise-
ries, the broken rules, the desperate chances, the glorious failures
and the glorious victories.
-- McCoy, "Requiem for Methuselah", stardate 5843.7
^ permalink raw reply [flat|nested] 19+ messages in thread
* [U-Boot-Users] [PATCH] Blackfin: implement go/boote wrappers
2008-04-20 23:38 ` Wolfgang Denk
@ 2008-04-21 0:31 ` Mike Frysinger
2008-04-21 5:00 ` Wolfgang Denk
0 siblings, 1 reply; 19+ messages in thread
From: Mike Frysinger @ 2008-04-21 0:31 UTC (permalink / raw)
To: u-boot
On Sunday 20 April 2008, Wolfgang Denk wrote:
> In message <1208583950-9454-1-git-send-email-vapier@gentoo.org> you wrote:
> > Override the default go/boote handlers as we want to disable both data
> > and instruction cache before executing external programs (since Blackfin
> > cache handling requires a software handler in U-Boot which may be
> > overwritten).
>
> Umnmm... no. "go" is supposed to be return to U-Boot, i. e. it must
> not overwrite (or otherwise meddle with) any U-Boot code.
>
> I think you should not change cache status for "go".
reality is that people often times use go to execute their binary blobs. i
also see it this way: go means to jump to some address and most likely never
return.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 827 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20080420/eccf9a97/attachment.pgp
^ permalink raw reply [flat|nested] 19+ messages in thread
* [U-Boot-Users] [PATCH] Blackfin: implement go/boote wrappers
2008-04-21 0:31 ` Mike Frysinger
@ 2008-04-21 5:00 ` Wolfgang Denk
2008-04-21 5:25 ` Mike Frysinger
0 siblings, 1 reply; 19+ messages in thread
From: Wolfgang Denk @ 2008-04-21 5:00 UTC (permalink / raw)
To: u-boot
In message <200804202031.31936.vapier@gentoo.org> you wrote:
>
> > Umnmm... no. "go" is supposed to be return to U-Boot, i. e. it must
> > not overwrite (or otherwise meddle with) any U-Boot code.
> >
> > I think you should not change cache status for "go".
>
> reality is that people often times use go to execute their binary blobs. i
> also see it this way: go means to jump to some address and most likely never
> return.
This may be your private interpretation, but it is wrong.
Intended and documented behaviour is that "go" is used to start
standalone applications, which are supposed to return.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
They're usually so busy thinking about what happens next that the
only time they ever find out what is happening now is when they come
to look back on it. - Terry Pratchett, _Wyrd Sisters_
^ permalink raw reply [flat|nested] 19+ messages in thread
* [U-Boot-Users] [PATCH] Blackfin: implement go/boote wrappers
2008-04-21 5:00 ` Wolfgang Denk
@ 2008-04-21 5:25 ` Mike Frysinger
2008-04-21 7:26 ` Wolfgang Denk
0 siblings, 1 reply; 19+ messages in thread
From: Mike Frysinger @ 2008-04-21 5:25 UTC (permalink / raw)
To: u-boot
On Monday 21 April 2008, Wolfgang Denk wrote:
> In message <200804202031.31936.vapier@gentoo.org> you wrote:
> > > Umnmm... no. "go" is supposed to be return to U-Boot, i. e. it must
> > > not overwrite (or otherwise meddle with) any U-Boot code.
> > >
> > > I think you should not change cache status for "go".
> >
> > reality is that people often times use go to execute their binary blobs.
> > i also see it this way: go means to jump to some address and most likely
> > never return.
>
> This may be your private interpretation, but it is wrong.
>
> Intended and documented behaviour is that "go" is used to start
> standalone applications, which are supposed to return.
then how exactly are people supposed to execute their flat binaries ? none of
the other boot methods allow for straight jumps that i'm aware of. otherwise
i'm going to have to add even more bloat to add a slight variation on the go
command: one where the documentation doesnt require it to return.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 827 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20080421/ac68d99c/attachment.pgp
^ permalink raw reply [flat|nested] 19+ messages in thread
* [U-Boot-Users] [PATCH] Blackfin: implement go/boote wrappers
2008-04-21 5:25 ` Mike Frysinger
@ 2008-04-21 7:26 ` Wolfgang Denk
2008-04-21 7:49 ` Mike Frysinger
0 siblings, 1 reply; 19+ messages in thread
From: Wolfgang Denk @ 2008-04-21 7:26 UTC (permalink / raw)
To: u-boot
In message <200804210125.45077.vapier@gentoo.org> you wrote:
>
> > Intended and documented behaviour is that "go" is used to start
> > standalone applications, which are supposed to return.
>
> then how exactly are people supposed to execute their flat binaries ? none of
I am not an expert for the Blackfin implementation. But "go" is for
standalone applications. The "boot*" commands are intended to boot OS
images.
> the other boot methods allow for straight jumps that i'm aware of. otherwise
> i'm going to have to add even more bloat to add a slight variation on the go
> command: one where the documentation doesnt require it to return.
That makes no sense to me. If you want to boot some OS, use a "boot*"
commands, not "go" or the like.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Sometimes a man will tell his bartender things he'll never tell his doctor.
-- Dr. Phillip Boyce, "The Menagerie" ("The Cage"),
stardate unknown.
^ permalink raw reply [flat|nested] 19+ messages in thread
* [U-Boot-Users] [PATCH] Blackfin: implement go/boote wrappers
2008-04-21 7:26 ` Wolfgang Denk
@ 2008-04-21 7:49 ` Mike Frysinger
2008-04-21 9:03 ` Wolfgang Denk
0 siblings, 1 reply; 19+ messages in thread
From: Mike Frysinger @ 2008-04-21 7:49 UTC (permalink / raw)
To: u-boot
On Monday 21 April 2008, Wolfgang Denk wrote:
> In message <200804210125.45077.vapier@gentoo.org> you wrote:
> > > Intended and documented behaviour is that "go" is used to start
> > > standalone applications, which are supposed to return.
> >
> > then how exactly are people supposed to execute their flat binaries ?
> > none of
>
> I am not an expert for the Blackfin implementation. But "go" is for
> standalone applications. The "boot*" commands are intended to boot OS
> images.
>
> > the other boot methods allow for straight jumps that i'm aware of.
> > otherwise i'm going to have to add even more bloat to add a slight
> > variation on the go command: one where the documentation doesnt require
> > it to return.
>
> That makes no sense to me. If you want to boot some OS, use a "boot*"
> commands, not "go" or the like.
i'm not talking about operating system code, i'm talking about flat binary
applications that run bare metal. something like "u-boot.bin" where it's
just a binary blob that gets loaded and u-boot jumps to it and never returns.
since "go" isnt appropriate according to you (and seeing as how none of the
boot commands are appropriate), then the only next step is to implement
a "jump" command that is exactly like "go" except it doesnt return.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 827 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20080421/ac20f856/attachment.pgp
^ permalink raw reply [flat|nested] 19+ messages in thread
* [U-Boot-Users] [PATCH] Blackfin: implement go/boote wrappers
2008-04-21 7:49 ` Mike Frysinger
@ 2008-04-21 9:03 ` Wolfgang Denk
2008-04-21 9:41 ` Mike Frysinger
0 siblings, 1 reply; 19+ messages in thread
From: Wolfgang Denk @ 2008-04-21 9:03 UTC (permalink / raw)
To: u-boot
In message <200804210349.27495.vapier@gentoo.org> you wrote:
>
> > That makes no sense to me. If you want to boot some OS, use a "boot*"
> > commands, not "go" or the like.
>
> i'm not talking about operating system code, i'm talking about flat binary
> applications that run bare metal. something like "u-boot.bin" where it's
> just a binary blob that gets loaded and u-boot jumps to it and never returns.
> since "go" isnt appropriate according to you (and seeing as how none of the>
> boot commands are appropriate), then the only next step is to implement
> a "jump" command that is exactly like "go" except it doesnt return.
This makes no sense. If it is ``exactly like "go"'' it doesn't matter
if the code returns or not (and actually this is what I'm trying to
point out all the time).
It's just that "go" shall retain the standard U-Boot environment for
application it runs, and that the applications need to take care if
they need to meddle with interrupts, exception handlers, etc.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
F u cn rd ths u cnt spl wrth a dm!
^ permalink raw reply [flat|nested] 19+ messages in thread
* [U-Boot-Users] [PATCH] Blackfin: implement go/boote wrappers
2008-04-21 9:03 ` Wolfgang Denk
@ 2008-04-21 9:41 ` Mike Frysinger
2008-04-21 10:07 ` Wolfgang Denk
0 siblings, 1 reply; 19+ messages in thread
From: Mike Frysinger @ 2008-04-21 9:41 UTC (permalink / raw)
To: u-boot
On Monday 21 April 2008, Wolfgang Denk wrote:
> In message <200804210349.27495.vapier@gentoo.org> you wrote:
> > > That makes no sense to me. If you want to boot some OS, use a "boot*"
> > > commands, not "go" or the like.
> >
> > i'm not talking about operating system code, i'm talking about flat
> > binary applications that run bare metal. something like "u-boot.bin"
> > where it's just a binary blob that gets loaded and u-boot jumps to it and
> > never returns. since "go" isnt appropriate according to you (and seeing
> > as how none of the> boot commands are appropriate), then the only next
> > step is to implement a "jump" command that is exactly like "go" except it
> > doesnt return.
>
> This makes no sense. If it is ``exactly like "go"'' it doesn't matter
> if the code returns or not (and actually this is what I'm trying to
> point out all the time).
the obvious implication is that i would add the cache disabling hooks to the
jump command instead of the go command since you wont allow the hook around
go.
> It's just that "go" shall retain the standard U-Boot environment for
> application it runs, and that the applications need to take care if
> they need to meddle with interrupts, exception handlers, etc.
U-Boot sets up no interrupts and the only exceptions that occur on the
Blackfin are for cache handling. disabling the caches forces a sane
environment where applications dont have to deal with a chicken/egg of having
to setup exception handlers before taking an exception. we've seen it
already with customers.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 827 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20080421/1f91120b/attachment.pgp
^ permalink raw reply [flat|nested] 19+ messages in thread
* [U-Boot-Users] [PATCH] Blackfin: implement go/boote wrappers
2008-04-21 9:41 ` Mike Frysinger
@ 2008-04-21 10:07 ` Wolfgang Denk
2008-04-21 10:35 ` Mike Frysinger
0 siblings, 1 reply; 19+ messages in thread
From: Wolfgang Denk @ 2008-04-21 10:07 UTC (permalink / raw)
To: u-boot
In message <200804210541.41085.vapier@gentoo.org> you wrote:
>
> > This makes no sense. If it is ``exactly like "go"'' it doesn't matter
> > if the code returns or not (and actually this is what I'm trying to
> > point out all the time).
>
> the obvious implication is that i would add the cache disabling hooks to the
> jump command instead of the go command since you wont allow the hook around
> go.
So it would NOT be ``exactly like "go"''.
Providing both a "go" and a "jump" command which differ just in cahce
handling seems broken to me. If you want to add such a feature, then
I recommend to do it as part of "go", but make it optional, i. e. in-
troduce a new optional argument to the "go" command, something like
go [ -cache={off,d-off,i-off,on,d-on,i-on} ] addr [ args ... ]
> > It's just that "go" shall retain the standard U-Boot environment for
> > application it runs, and that the applications need to take care if
> > they need to meddle with interrupts, exception handlers, etc.
>
> U-Boot sets up no interrupts and the only exceptions that occur on the
> Blackfin are for cache handling. disabling the caches forces a sane
There is more procvessors in this world than just Blackfin, and
others *do* enable interrupts, etc. It is important to me that
implementations behave the same no matter which architecture you are
using.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Where there's no emotion, there's no motive for violence.
-- Spock, "Dagger of the Mind", stardate 2715.1
^ permalink raw reply [flat|nested] 19+ messages in thread
* [U-Boot-Users] [PATCH] Blackfin: implement go/boote wrappers
2008-04-21 10:07 ` Wolfgang Denk
@ 2008-04-21 10:35 ` Mike Frysinger
2008-04-21 10:59 ` Mike Frysinger
2008-04-21 12:13 ` Wolfgang Denk
0 siblings, 2 replies; 19+ messages in thread
From: Mike Frysinger @ 2008-04-21 10:35 UTC (permalink / raw)
To: u-boot
On Monday 21 April 2008, Wolfgang Denk wrote:
> In message <200804210541.41085.vapier@gentoo.org> you wrote:
> > > This makes no sense. If it is ``exactly like "go"'' it doesn't matter
> > > if the code returns or not (and actually this is what I'm trying to
> > > point out all the time).
> >
> > the obvious implication is that i would add the cache disabling hooks to
> > the jump command instead of the go command since you wont allow the hook
> > around go.
>
> So it would NOT be ``exactly like "go"''.
well, duh. my point was that you're making "go" get duplicated just to
conform to documentation. the command name itself "go" doesnt really conjurn
up usage of "executing an application and returning" ... fits better with "go
to this location and never come back". "run" probably would have been a
better name. but that's hindsight for you.
> Providing both a "go" and a "jump" command which differ just in cahce
> handling seems broken to me. If you want to add such a feature, then
> I recommend to do it as part of "go", but make it optional, i. e. in-
> troduce a new optional argument to the "go" command, something like
>
> go [ -cache={off,d-off,i-off,on,d-on,i-on} ] addr [ args ... ]
cache is just an example. other arches may want to do other sort of "system
breakdown/cleanup" before relinquishing control. option flags to commands
really doesnt fit the style of u-boot (i expect that sort of painful option
parsing in redboot, not really u-boot).
so we can do:
go [-noret] addr [args...]
or we can add "jump" to cmd_boot.c and merge the differences by just using a
function pointer to "do_go_exec" or "do_jump_exec".
> > > It's just that "go" shall retain the standard U-Boot environment for
> > > application it runs, and that the applications need to take care if
> > > they need to meddle with interrupts, exception handlers, etc.
> >
> > U-Boot sets up no interrupts and the only exceptions that occur on the
> > Blackfin are for cache handling. disabling the caches forces a sane
>
> There is more procvessors in this world than just Blackfin, and
> others *do* enable interrupts, etc. It is important to me that
> implementations behave the same no matter which architecture you are
> using.
i never said Blackfin was the only thing that mattered. in fact, my goal is
to make it so that people using this facility get a more standard initial
environment before they start taking over the system. i guess i wont point
out the U-Boot policy about not using interrupts ...
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 827 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20080421/ce750ff8/attachment.pgp
^ permalink raw reply [flat|nested] 19+ messages in thread
* [U-Boot-Users] [PATCH] Blackfin: implement go/boote wrappers
2008-04-21 10:35 ` Mike Frysinger
@ 2008-04-21 10:59 ` Mike Frysinger
2008-04-21 12:14 ` Wolfgang Denk
2008-04-21 12:13 ` Wolfgang Denk
1 sibling, 1 reply; 19+ messages in thread
From: Mike Frysinger @ 2008-04-21 10:59 UTC (permalink / raw)
To: u-boot
On Monday 21 April 2008, Mike Frysinger wrote:
> On Monday 21 April 2008, Wolfgang Denk wrote:
> > Providing both a "go" and a "jump" command which differ just in cahce
> > handling seems broken to me. If you want to add such a feature, then
> > I recommend to do it as part of "go", but make it optional, i. e. in-
> > troduce a new optional argument to the "go" command, something like
> >
> > go [ -cache={off,d-off,i-off,on,d-on,i-on} ] addr [ args ... ]
>
> cache is just an example. other arches may want to do other sort of
> "system breakdown/cleanup" before relinquishing control. option flags to
> commands really doesnt fit the style of u-boot (i expect that sort of
> painful option parsing in redboot, not really u-boot).
>
> so we can do:
> go [-noret] addr [args...]
> or we can add "jump" to cmd_boot.c and merge the differences by just using
> a function pointer to "do_go_exec" or "do_jump_exec".
untested poc attached
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 827 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20080421/edee92fc/attachment.pgp
-------------- next part --------------
A non-text attachment was scrubbed...
Name: u-boot-jump-cmd.patch
Type: text/x-diff
Size: 1779 bytes
Desc: not available
Url : http://lists.denx.de/pipermail/u-boot/attachments/20080421/edee92fc/attachment.patch
^ permalink raw reply [flat|nested] 19+ messages in thread
* [U-Boot-Users] [PATCH] Blackfin: implement go/boote wrappers
2008-04-21 10:35 ` Mike Frysinger
2008-04-21 10:59 ` Mike Frysinger
@ 2008-04-21 12:13 ` Wolfgang Denk
2008-04-21 18:44 ` Mike Frysinger
1 sibling, 1 reply; 19+ messages in thread
From: Wolfgang Denk @ 2008-04-21 12:13 UTC (permalink / raw)
To: u-boot
In message <200804210635.08416.vapier@gentoo.org> you wrote:
>
> well, duh. my point was that you're making "go" get duplicated just to
> conform to documentation. the command name itself "go" doesnt really conjurn
> up usage of "executing an application and returning" ... fits better with "go
> to this location and never come back". "run" probably would have been a
> better name. but that's hindsight for you.
You are right. Today I would probably name this "call".
> > go [ -cache={off,d-off,i-off,on,d-on,i-on} ] addr [ args ... ]
>
> cache is just an example. other arches may want to do other sort of "system
> breakdown/cleanup" before relinquishing control. option flags to commands
As the situation is, other arches seem to be just fine as it. It's
only BF which needs a pork sausage.
> really doesnt fit the style of u-boot (i expect that sort of painful option
> parsing in redboot, not really u-boot).
I don;t like it either, but just ading random new commands is even
worse.
> so we can do:
> go [-noret] addr [args...]
Ummm... "no return" programs is just an example. Other pograms may
want to do other sort of "system breakdown/cleanup" before relin-
quishing control.
> or we can add "jump" to cmd_boot.c and merge the differences by just using > a
> function pointer to "do_go_exec" or "do_jump_exec".
Adn then we add "call" and "exec" and "do" and so oon just for other
needed options? I say no.
> i never said Blackfin was the only thing that mattered. in fact, my goal is
> to make it so that people using this facility get a more standard initial
> environment before they start taking over the system. i guess i wont point
> out the U-Boot policy about not using interrupts ...
Are you aware that U-Boot does use interrupts here and there? That we
actually provide functions to register interrupt handlers to
standalone programs, etc. ?
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Shakespeare's Law of Prototyping: (Hamlet III, iv, 156-160)
O, throw away the worser part of it,
And live the purer with the other half.
^ permalink raw reply [flat|nested] 19+ messages in thread
* [U-Boot-Users] [PATCH] Blackfin: implement go/boote wrappers
2008-04-21 10:59 ` Mike Frysinger
@ 2008-04-21 12:14 ` Wolfgang Denk
0 siblings, 0 replies; 19+ messages in thread
From: Wolfgang Denk @ 2008-04-21 12:14 UTC (permalink / raw)
To: u-boot
In message <200804210659.43481.vapier@gentoo.org> you wrote:
>
> > or we can add "jump" to cmd_boot.c and merge the differences by just using
> > a function pointer to "do_go_exec" or "do_jump_exec".
>
> untested poc attached
Don't waste efforts on this. I will not accept it.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
In the realm of scientific observation, luck is granted only to those
who are prepared. - Louis Pasteur
^ permalink raw reply [flat|nested] 19+ messages in thread
* [U-Boot-Users] [PATCH] Blackfin: implement go/boote wrappers
2008-04-21 12:13 ` Wolfgang Denk
@ 2008-04-21 18:44 ` Mike Frysinger
2008-04-21 19:45 ` Wolfgang Denk
0 siblings, 1 reply; 19+ messages in thread
From: Mike Frysinger @ 2008-04-21 18:44 UTC (permalink / raw)
To: u-boot
On Monday 21 April 2008, Wolfgang Denk wrote:
> In message <200804210635.08416.vapier@gentoo.org> you wrote:
> > > go [ -cache={off,d-off,i-off,on,d-on,i-on} ] addr [ args ... ]
> >
> > cache is just an example. other arches may want to do other sort of
> > "system breakdown/cleanup" before relinquishing control. option flags to
> > commands
>
> As the situation is, other arches seem to be just fine as it. It's
> only BF which needs a pork sausage.
this is incorrect. any architecture which wants to overwrite u-boot sanely
needs to worry about causing exceptions or interrupts. i just want to make
the obvious easy since it has caused more than enough support requests.
> > really doesnt fit the style of u-boot (i expect that sort of painful
> > option parsing in redboot, not really u-boot).
>
> I don;t like it either, but just ading random new commands is even
> worse.
>
> > so we can do:
> > go [-noret] addr [args...]
>
> Ummm... "no return" programs is just an example. Other pograms may
> want to do other sort of "system breakdown/cleanup" before relin-
> quishing control.
>
> > or we can add "jump" to cmd_boot.c and merge the differences by just
> > using > a function pointer to "do_go_exec" or "do_jump_exec".
>
> Adn then we add "call" and "exec" and "do" and so oon just for other
> needed options? I say no.
then implement whatever. in the mean time i'll keep forking the Blackfin
code.
> > i never said Blackfin was the only thing that mattered. in fact, my goal
> > is to make it so that people using this facility get a more standard
> > initial environment before they start taking over the system. i guess i
> > wont point out the U-Boot policy about not using interrupts ...
>
> Are you aware that U-Boot does use interrupts here and there? That we
> actually provide functions to register interrupt handlers to
> standalone programs, etc. ?
yes i'm aware, but we arent talking about standalone applications here, so
those really dont matter.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 827 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20080421/902f64c9/attachment.pgp
^ permalink raw reply [flat|nested] 19+ messages in thread
* [U-Boot-Users] [PATCH] Blackfin: implement go/boote wrappers
2008-04-21 18:44 ` Mike Frysinger
@ 2008-04-21 19:45 ` Wolfgang Denk
2008-04-21 20:58 ` Mike Frysinger
0 siblings, 1 reply; 19+ messages in thread
From: Wolfgang Denk @ 2008-04-21 19:45 UTC (permalink / raw)
To: u-boot
In message <200804211444.43917.vapier@gentoo.org> you wrote:
>
> > Adn then we add "call" and "exec" and "do" and so oon just for other
> > needed options? I say no.
>
> then implement whatever. in the mean time i'll keep forking the Blackfin
> code.
OK. I offered you a way out. It's your decision.
I tried understanding what you are trying to do, and even though I
feel it's not exactly an important or frequently used feature for
most of the users I tried to come up with a compromize that allows
you to do what you want to do without hurting others and without
polluting the command name space.
I'm sorry that I wasted my time on thinking about this.
> > Are you aware that U-Boot does use interrupts here and there? That we
> > actually provide functions to register interrupt handlers to
> > standalone programs, etc. ?
>
> yes i'm aware, but we arent talking about standalone applications here, so
> those really dont matter.
You have a really, really funny way of deciding what matters and what
not. All the things you have in mind do matter (even if they are
documented to be unsupported), while other existing and legal ways of
doing things don't matter. That doesn't make working with you an easy
task.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
...the increased productivity fostered by a friendly environment and
quality tools is essential to meet ever increasing demands for
software. - M. D. McIlroy, E. N. Pinson and B. A. Tague
^ permalink raw reply [flat|nested] 19+ messages in thread
* [U-Boot-Users] [PATCH] Blackfin: implement go/boote wrappers
2008-04-21 19:45 ` Wolfgang Denk
@ 2008-04-21 20:58 ` Mike Frysinger
2008-04-21 22:19 ` Wolfgang Denk
0 siblings, 1 reply; 19+ messages in thread
From: Mike Frysinger @ 2008-04-21 20:58 UTC (permalink / raw)
To: u-boot
On Monday 21 April 2008, Wolfgang Denk wrote:
> In message <200804211444.43917.vapier@gentoo.org> you wrote:
> > > Adn then we add "call" and "exec" and "do" and so oon just for other
> > > needed options? I say no.
> >
> > then implement whatever. in the mean time i'll keep forking the Blackfin
> > code.
>
> OK. I offered you a way out. It's your decision.
>
> I tried understanding what you are trying to do, and even though I
> feel it's not exactly an important or frequently used feature for
> most of the users I tried to come up with a compromize that allows
> you to do what you want to do without hurting others and without
> polluting the command name space.
i consider the cache one aspect of it. the users shouldnt have to know "oh i
gotta turn off cache", they just have to know "i'm loading up my code and
it's going to take over the system". that is why a "-noret" flags makes
sense instead of trying to break down specific aspects. also adding a myriad
of cache options to one function achieves the same thing as doing:
dcache off; icache off; go <address>
> > > Are you aware that U-Boot does use interrupts here and there? That we
> > > actually provide functions to register interrupt handlers to
> > > standalone programs, etc. ?
> >
> > yes i'm aware, but we arent talking about standalone applications here,
> > so those really dont matter.
>
> You have a really, really funny way of deciding what matters and what
> not. All the things you have in mind do matter (even if they are
> documented to be unsupported), while other existing and legal ways of
> doing things don't matter. That doesn't make working with you an easy
> task.
it's really quite simple. the need is to jump to an address to execute a blob
and never return to u-boot. what features are available to standalone u-boot
applications (while useful) dont really matter. such applications rely on
u-boot remaining resident which is the opposite of what i'm talking about.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 827 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20080421/46d3f3e1/attachment.pgp
^ permalink raw reply [flat|nested] 19+ messages in thread
* [U-Boot-Users] [PATCH] Blackfin: implement go/boote wrappers
2008-04-21 20:58 ` Mike Frysinger
@ 2008-04-21 22:19 ` Wolfgang Denk
2008-04-21 23:08 ` Mike Frysinger
0 siblings, 1 reply; 19+ messages in thread
From: Wolfgang Denk @ 2008-04-21 22:19 UTC (permalink / raw)
To: u-boot
In message <200804211658.44036.vapier@gentoo.org> you wrote:
>
> > I tried understanding what you are trying to do, and even though I
> > feel it's not exactly an important or frequently used feature for
> > most of the users I tried to come up with a compromize that allows
> > you to do what you want to do without hurting others and without
> > polluting the command name space.
>
> i consider the cache one aspect of it. the users shouldnt have to know "oh i
> gotta turn off cache", they just have to know "i'm loading up my code and
I agree that cache is just one aspect; I disagree that users
shouldn't know what they are doing. On contrary, I want to give them
all necessary control to do what they may want to do. It is a matter
of higher software levels to provide more convenient abstractions.
> it's going to take over the system". that is why a "-noret" flags makes
Who says that *my* application which doesn;t return does the same as
your application? Maybe I *want* to have the caches on for perfor-
mance?
I accept that the default settings may be not optimal for your use
case, so please accept that your settings may not be always optimal,
either. As a solution I imagine options to the "go" command. If you
consider this too complicated for your users, please feel free to
provide an alias in an envrionment variable which your users can
"run".
> sense instead of trying to break down specific aspects. also adding a myriad
> of cache options to one function achieves the same thing as doing:
> dcache off; icache off; go <address>
Ah! You see - there is no need at all for any changes - you can put
*that* sequence in a variable and run it.
So what exactly was the reason we need a new command?
> it's really quite simple. the need is to jump to an address to execute a blob
> and never return to u-boot. what features are available to standalone u-boot
"go" does that. If your application does not attempt to return, that's
fine.
> applications (while useful) dont really matter. such applications rely on
> u-boot remaining resident which is the opposite of what i'm talking about.
But then it doesn't hurt, does it? Your application can do anything it
wants as long as it does not attempt to return to U-Boot.
I see zero justification for a new command (and very little for
changes to the implementation of "go", but I am still willing to
allow for such extensions if you think it's necessary or more
convenient).
I thik this is my last word on this.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"Unix is simple, but it takes a genius to understand the simplicity."
- Dennis Ritchie
^ permalink raw reply [flat|nested] 19+ messages in thread
* [U-Boot-Users] [PATCH] Blackfin: implement go/boote wrappers
2008-04-21 22:19 ` Wolfgang Denk
@ 2008-04-21 23:08 ` Mike Frysinger
0 siblings, 0 replies; 19+ messages in thread
From: Mike Frysinger @ 2008-04-21 23:08 UTC (permalink / raw)
To: u-boot
On Monday 21 April 2008, Wolfgang Denk wrote:
> In message <200804211658.44036.vapier@gentoo.org> you wrote:
> > > I tried understanding what you are trying to do, and even though I
> > > feel it's not exactly an important or frequently used feature for
> > > most of the users I tried to come up with a compromize that allows
> > > you to do what you want to do without hurting others and without
> > > polluting the command name space.
> >
> > i consider the cache one aspect of it. the users shouldnt have to know
> > "oh i gotta turn off cache", they just have to know "i'm loading up my
> > code and
>
> I agree that cache is just one aspect; I disagree that users
> shouldn't know what they are doing. On contrary, I want to give them
> all necessary control to do what they may want to do. It is a matter
> of higher software levels to provide more convenient abstractions.
yes, but the fact that we have to turn off caches is not for performance
reasons. users should not need to be aware of these system deficiencies
which is why i'm proposing a "noret" flag.
> > it's going to take over the system". that is why a "-noret" flags makes
>
> Who says that *my* application which doesn;t return does the same as
> your application? Maybe I *want* to have the caches on for perfor-
> mance?
i'm not concerned with the performance aspect. caches on the Blackfin are
intertwined with protection, and protection handlers require a software
vector to process exceptions. the act of executing a program that takes over
the system means the exception handler is no longer reliable so i have to
guarantee it wont be called. based on information given to me from our
hardware team, this can only be accomplished implicitly by disabling caches.
> I accept that the default settings may be not optimal for your use
> case, so please accept that your settings may not be always optimal,
> either. As a solution I imagine options to the "go" command. If you
> consider this too complicated for your users, please feel free to
> provide an alias in an envrionment variable which your users can
> "run".
i completely accept that the patch i posted to turn off caches for all things
to "go" result in a suboptimal environment for standalone u-boot
applications. for Blackfin usage though, that takes a back seat to things
silently crashing.
> > applications (while useful) dont really matter. such applications rely
> > on u-boot remaining resident which is the opposite of what i'm talking
> > about.
>
> But then it doesn't hurt, does it? Your application can do anything it
> wants as long as it does not attempt to return to U-Boot.
except that it may inadvertently do so on Blackfin.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 827 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20080421/4e200f81/attachment.pgp
^ permalink raw reply [flat|nested] 19+ messages in thread
end of thread, other threads:[~2008-04-21 23:08 UTC | newest]
Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-04-19 5:45 [U-Boot-Users] [PATCH] Blackfin: implement go/boote wrappers Mike Frysinger
2008-04-20 23:38 ` Wolfgang Denk
2008-04-21 0:31 ` Mike Frysinger
2008-04-21 5:00 ` Wolfgang Denk
2008-04-21 5:25 ` Mike Frysinger
2008-04-21 7:26 ` Wolfgang Denk
2008-04-21 7:49 ` Mike Frysinger
2008-04-21 9:03 ` Wolfgang Denk
2008-04-21 9:41 ` Mike Frysinger
2008-04-21 10:07 ` Wolfgang Denk
2008-04-21 10:35 ` Mike Frysinger
2008-04-21 10:59 ` Mike Frysinger
2008-04-21 12:14 ` Wolfgang Denk
2008-04-21 12:13 ` Wolfgang Denk
2008-04-21 18:44 ` Mike Frysinger
2008-04-21 19:45 ` Wolfgang Denk
2008-04-21 20:58 ` Mike Frysinger
2008-04-21 22:19 ` Wolfgang Denk
2008-04-21 23:08 ` Mike Frysinger
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox