[U-Boot] [PATCH 6/8] cpu: Add cpu_print_info function

Mario Six mario.six at gdsys.cc
Thu Apr 26 06:07:05 UTC 2018


Hi Simon,

On Tue, Apr 24, 2018 at 11:53 PM, Simon Glass <sjg at chromium.org> wrote:
> Hi Mario,
>
> On 19 April 2018 at 01:50, Mario Six <mario.six at gdsys.cc> wrote:
>>
>> Hi Simon,
>>
>> On Wed, Apr 18, 2018 at 5:45 PM, Simon Glass <sjg at chromium.org> wrote:
>> > Hi Mario,
>> >
>> > On 18 April 2018 at 02:35, Mario Six <mario.six at gdsys.cc> wrote:
>> >> Hi Simon,
>> >>
>> >> On Thu, Apr 12, 2018 at 6:37 PM, Simon Glass <sjg at chromium.org> wrote:
>> >>> Hi Mario,
>> >>>
>> >>> On 11 April 2018 at 00:39, Mario Six <mario.six at gdsys.cc> wrote:
>> >>>> Hi Simon,
>> >>>>
>> >>>> On Fri, Mar 30, 2018 at 10:41 AM, Simon Glass <sjg at chromium.org> wrote:
>> >>>>> Hi,
>> >>>>>
>> >>>>> On 28 March 2018 at 20:38, Mario Six <mario.six at gdsys.cc> wrote:
>> >>>>>> Add a cpu_print_info function to the CPU uclass to emulate the behavior
>> >>>>>> of some current non-DM drivers (e.g. MPC83xx) to print CPU information
>> >>>>>> during startup.
>> >>>>>>
>> >>>>>> Signed-off-by: Mario Six <mario.six at gdsys.cc>
>> >>>>>> ---
>> >>>>>>  drivers/cpu/cpu-uclass.c | 10 ++++++++++
>> >>>>>>  include/cpu.h            | 15 +++++++++++++++
>> >>>>>>  2 files changed, 25 insertions(+)
>> >>>>>>
>> >>>>>
>> >>>>> I really don't want drivers printing stuff. Can you use the existing
>> >>>>> get_info() method?
>> >>>>>
>> >>>>
>> >>>> I could, but I'm just emulating the behavior of the legacy code here, which
>> >>>> prints some information when the CPU is initialized. I think that's pretty
>> >>>> useful, and I can do that in our board file, but that would mean implementing
>> >>>> the same routine in every MPC83xx board to get the legacy behavior back.
>> >>>
>> >>> Yes, but I don't want the legacy code creeping into the eclass. Can
>> >>> you convert the board to use the CPU eclass instead?
>> >>>
>> >>
>> >> That's what I did, and I just discovered DISPLAY_CPUINFO, which does exactly
>> >> what is needed. I'll implement the print_cpuinfo function in the CPU driver, so
>> >> I can get rid of the print function in the uclass (and still retain the
>> >> information printing at bootup).
>> >
>> > OK I see. Ideally we would have a function (perhaps in board_f) which
>> > prints out the CPU info after obtaining it from the uclass. So could
>> > you move your print_cpuinfo() function into board_f? Would it be
>> > possible to use that if CONFIG_CPU is defined?
>> >
>> > At some point print_cpuinfo() could be removed from various board files.
>> >
>>
>> The function prints the following (example for our device):
>>
>> --- >8 ---
>>
>> Reset Status: External/Internal Soft, External/Internal Hard
>>
>> CPU:   e300c3, MPC8308, Rev: 1.1 at 400 MHz, CSB: 133.333 MHz
>>
>> --- >8 ---
>>
>> So there are some values that are very specific to the platform, such as the
>> CSB (Coherent System Bus) frequency, or the reset status. While it's probably
>> possible to put some of that into a generic info printing routine, lots of it
>> is so MPC83xx-specific that it doesn't make much sense for other CPUs.
>
> Well you get to provide a string from get_desc() so you can add
> whatever you like!
>

OK, I thought I was supposed to decode the cpu_info and print that in the
function. If i can use get_desc(), then it's fine. :-)

>>
>> Any idea how to tackle this? I don't really want to get rid of the Reset Status
>> printing especially, since it's pretty useful information for debugging devices
>> in the field.
>
> Re the reset status, shouldn't that come from the sysreset driver? I
> wonder if we should add an API call for that? Or is it something
> printed by the board?
>

No, that's indeed printed on every MPC83xx board (see prt_83xx_rsr in
arch/powerpc/cpu/mpc83xx/cpu_init.c). A sysreset driver would probably be a
good canonical candidate for printing such a message, true. But since there is
no real system reset on MPC83xx to speak of, that would (for now at least) be
the only thing a MPC83xx sysreset driver did. Also, we'd need another function
in board_f.c, and I don't really know if reset cause printing is very
wide-spread on other platforms to justify that.

> Regards,
> Simon
>

Best regards,
Mario


More information about the U-Boot mailing list