[U-Boot] [PATCH 5/5] Warn when the machine ID isn't passed to an ARM kernel and u-boot is compiled in debug mode. The kernel cannot boot without it.
Igor Grinberg
grinberg at compulab.co.il
Tue Jul 5 09:21:38 CEST 2011
On 07/05/11 00:24, Jason wrote:
> On Mon, Jul 04, 2011 at 04:32:35PM -0400, Christopher Harvey wrote:
>> On Mon, Jul 04, 2011 at 04:13:49PM -0400, Jason wrote:
>>> On Mon, Jul 04, 2011 at 02:55:54PM -0400, Christopher Harvey wrote:
>>>> On Mon, Jul 04, 2011 at 02:08:44PM -0400, Jason wrote:
>>>>> On Mon, Jul 04, 2011 at 01:45:41PM -0400, Christopher Harvey wrote:
>>>>>> + Hopefully there will never be this many machines.
>>>>>> + Can't use 0 since 0 is already used as a mach-type. */
>>>>>> + gd->bd->bi_arch_number = 0xffffffff;
>>>>>>
>>>>>> gd->bd->bi_baudrate = gd->baudrate;
>>>>>> /* Ram ist board specific, so move it to board code ... */
>>>>>> diff --git a/arch/arm/lib/bootm.c b/arch/arm/lib/bootm.c
>>>>>> index 802e833..70b3b76 100644
>>>>>> --- a/arch/arm/lib/bootm.c
>>>>>> +++ b/arch/arm/lib/bootm.c
>>>>>> @@ -113,6 +113,12 @@ int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images)
>>>>>> printf ("Using machid 0x%x from environment\n", machid);
>>>>>> }
>>>>>>
>>>>>> +#ifdef DEBUG
>>>>>> + if(machid==0xffffffff) {
>>>>>> + debug("\nWarning: machid not set! Linux will not finish booting.\n\n");
>>>>> s/finish/start/ ;-)
>>>>>
>>>> I'll have to disagree here. Linux will decompress and some functions
>>>> will run but it will eventually stop, hence will not finish.
>>> On further investigation, you're right, it doesn't finish
>>> starting/booting. Sorry for the noise.
>>>
>>>>> Also, shouldn't the compile fail in this case (#error)? Or, at least #warn?
>>>>>
>>>> The compiler can't know what machid will be at runtime. Maybe a "would
>>>> you like to continue?" prompt could work.
>>> Since the kernel throws a nice fat error message when the MACH_TYPE
>>> doesn't match what it was compiled for, I don't see the point to adding
>>> another message at the same point in the development process.
>> I didn't see that message. Do you know what lines of code in the
>> kernel print it? Or maybe just the message itself?
> In init/main.c
> start_kernel() calls
> setup_arch()
>
> In arch/arm/kernel/setup.c
> setup_arch() calls
> setup_machine_tags() which calls
> dump_machine_table()
>
> when the value in r1 doesn't match any of the mach-types the kernel was
> compiled for.
If you don't have the earlyprintk enabled, will this still be seen?
I don't think so...
So, I think there is a point to add a warning message.
--
Regards,
Igor.
More information about the U-Boot
mailing list