[U-Boot] [PATCH v4 1/4] Refactor do_reset() into board-specific and CPU-specific portions

Moffett, Kyle D Kyle.D.Moffett at boeing.com
Thu Feb 24 21:30:16 CET 2011


On Feb 24, 2011, at 13:41, Wolfgang Denk wrote:
> In message <E379DE2E-DDED-45AD-B44B-8006D883F407 at boeing.com> you wrote:
>> 
>> Perhaps the default should instead be something like this?
>> 
>> __attribute__((__weak__)) int arch_reset(void)
>> {
>>         while(1);
>> }
> 
> No. Please don;t implement something that does not do what it is
> supposed to do. Rather make the problem obvious.
> 
>> Having a default might make it easier to do the initial standup of a new CPU
>> type (less code to write initially), but you wouldn't get any obvious errors
>> about the fact that you are missing functionality.
> 
> That's a fundamentally broken approach.  You know how people work:
> they start, they have something running without too blatant error
> messages, they leave it as is and go on to the next task.
> 
> I rather see a clear unresolved external reference error instead of a
> bad defualt that doesn't work.

Ok, I'm working on an updated patch.

There are a few CPU architectures like the 74xx_7xx which have worrying comments like these:
 /* no generic way to do board reset. simply call soft_reset. */

It basically just disables caching and performs a jump to the CPU reset vector.

Several boards already have overrides of various sorts to use board-specific reset vectors; from looking at commit logs and configuration for the boards based on the 74xx and 7xx I'm not convinced that reset function has ever been tested on some of them.

I would almost be willing to argue that if that kind of "soft reset" is a desirable feature then U-Boot should support it separately via a "kexec()"-style interface.

Anyways, I should be sending out a new patch here shortly.

Cheers,
Kyle Moffett


More information about the U-Boot mailing list