Re: [PATCH v6 06/36] nds32: Kernel booting and initialization

From: Greentime Hu
Date: Fri Jan 19 2018 - 11:35:34 EST


Hi, Arnd:

2018-01-18 18:11 GMT+08:00 Arnd Bergmann <arnd@xxxxxxxx>:
> On Mon, Jan 15, 2018 at 6:53 AM, Greentime Hu <green.hu@xxxxxxxxx> wrote:
>
> I had not looked at this patch in enough detail earlier, sorry about
> that. It should be
> easy enough to fix though.
>
>> +#ifdef CONFIG_VGA_CONSOLE
>> +struct screen_info screen_info;
>> +#endif
>
> I would assume that you can't ever have a VGA console. Just drop all
> the references
> here and instead send a patch to the fbdev maintainer to add the dependency
> at CONFIG_VGA_CONSOLE to prevent selecting it with nds32.

I found it can be built pass for now because we disable it in defconfig.
Should I send the patch in v7 series?

>> +
>> +extern void __init early_init_devtree(void *params);
>> +extern void __init early_trap_init(void);
>
> similarly, these are declared in include/linux/of_fdt.h
>

early_trap_init is a nds32 function. I will move it to nds32.h

>> +void __init setup_arch(char **cmdline_p)
>> +{
>> + early_init_devtree(__atags_pointer ?
>> + phys_to_virt(__atags_pointer) : __dtb_start);
>
> The reference to '__atags_pointer' appears to be a leftover from pre-DT
> days. Can you just remove that?

Yes, I will remove it.

>> +void calibrate_delay(void)
>> +{
>> + const int *val;
>> + struct device_node *cpu = NULL;
>> + cpu = of_find_compatible_node(NULL, NULL, "andestech,nds32v3");
>> + val = of_get_property(cpu, "clock-frequency", NULL);
>> + if (!val || !*val)
>> + panic("no cpu 'clock-frequency' parameter in device tree");
>> + loops_per_jiffy = be32_to_cpup(val) / HZ;
>> + pr_cont("%lu.%02lu BogoMIPS (lpj=%lu)\n",
>> + loops_per_jiffy / (500000 / HZ),
>> + (loops_per_jiffy / (5000 / HZ)) % 100, loops_per_jiffy);
>> +}
>
> This seems very odd to me: The 'clock-frequency' property in the
> cpu node should refer to the actual frequency it is running at, but that
> tends to be different from the bogomips as needed by the ndelay()
> function. Can you explain what is going on here?
>

This implementation is referenced from openrisc.
https://lkml.org/lkml/2017/11/17/228



Thank you.