All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michael Opdenacker <michael.opdenacker@bootlin.com>
To: u-boot@lists.denx.de
Subject: [PATCH v2] time: Fix get_ticks being non-monotonic
Date: Mon, 1 Mar 2021 17:40:49 +0100	[thread overview]
Message-ID: <5253cdc9-1d19-79c3-204b-4f14928ae852@bootlin.com> (raw)
In-Reply-To: <CAPnjgZ0-G=khChOH0_c8y3_ScMT2Koi80tc2GNarMv+7sFyO=w@mail.gmail.com>

Hi Simon,

I'm back working on this old issue. Thanks for your help with this!

So, SPL support for Atmel/Microchip SAMA5D3 is still broken in the
latest mainline, at least for the Xplained board with the MMC configuration.

My comments and further questions below...

On 11/22/20 12:07 AM, Simon Glass wrote:
> Hi Michael,
>
> On Thu, 19 Nov 2020 at 04:23, Michael Opdenacker
> <michael.opdenacker@bootlin.com> wrote:
>> Hi,
>>
>> Sorry, no messaging quoting, I was not subscribed to the list at that time.
>>
>> Merging this change into master actually broke the SPL on
>> Atmel/Microchip SAMA5D3, at least booting from MMC:
>>
>> RomBOOT
>>
>> <debug_uart>
>> Could not initialize timer (err -11)
>>
>> Could not initialize timer (err -11)
>>
>> Could not initialize timer (err -11)
>> ...
>>
>> I'll look for a fix, but suggestions are welcome!


Now, it's:

Could not initialize timer (err -19)
(-19 is -ENODEV? /* No such device */)

> The board might need CONFIG_TIMER_EARLY, but otherwise I think it is a
> case of figuring out why the timer is used before it is available.


I tried to enable CONFIG_TIMER_EARLY but it fails at link time:

? LD????? u-boot
arm-linux-ld.bfd: lib/built-in.o: in function `get_tbclk':
/home/mike/work/git/git.denx.de/u-boot/lib/time.c:70: undefined
reference to `timer_early_get_rate'
arm-linux-ld.bfd: lib/built-in.o: in function `get_ticks':
/home/mike/work/git/git.denx.de/u-boot/lib/time.c:90: undefined
reference to `timer_early_get_count'
make: *** [Makefile:1765: u-boot] Error 1


This is not a surprise, as according to
https://elixir.bootlin.com/u-boot/latest/C/ident/timer_early_get_rate,?
timer_early_get_rate() is not implemented on ARM, only on sandbox
(drivers/timer/sandbox_timer.c) and on x86 (drivers/timer/tsc_timer.c).

So, I'm moving to your second suggestion...


>
> You can use dm_dump_all() to print out available devices and whether
> they are probed.


Done, I added dm_dump_all to lib/time.c right before the panic() message:

?Class???? Index? Probed? Driver??????????????? Name
-----------------------------------------------------------
?root? 0? [ + ]?? root_driver? root_driver
?simple_bus? 0? [?? ]?? simple_bus? `-- ahb
?simple_bus? 1? [?? ]?? simple_bus????? `-- apb
?mmc? 0? [?? ]?? atmel-mci????????? |-- mmc at f0000000
?blk? 0? [?? ]?? mmc_blk????????? |?? `-- mmc at f0000000.blk
?mmc? 1? [?? ]?? atmel-mci????????? |-- mmc at f8000000
?blk? 1? [?? ]?? mmc_blk????????? |?? `-- mmc at f8000000.blk
?serial? 0? [?? ]?? serial_atmel????????? |-- serial at ffffee00
?pinctrl? 0? [?? ]?? atmel_sama5d3_pinctrl????????? |-- pinctrl at fffff200
?pinconfig? 0? [?? ]?? pinconfig????????? |?? |-- dbgu
?pinconfig? 1? [?? ]?? pinconfig????????? |?? |?? `-- dbgu-0
?pinconfig? 2? [?? ]?? pinconfig????????? |?? |-- mmc0
?pinconfig? 3? [?? ]?? pinconfig????????? |?? |?? |-- mmc0_clk_cmd_dat0
?pinconfig? 4? [?? ]?? pinconfig????????? |?? |?? |-- mmc0_dat1_3
?pinconfig? 5? [?? ]?? pinconfig????????? |?? |?? `-- mmc0_dat4_7
?pinconfig? 6? [?? ]?? pinconfig????????? |?? |-- mmc1
?pinconfig? 7? [?? ]?? pinconfig????????? |?? |?? |-- mmc1_clk_cmd_dat0
?pinconfig? 8? [?? ]?? pinconfig????????? |?? |?? `-- mmc1_dat1_3
?pinconfig? 9? [?? ]?? pinconfig????????? |?? |-- spi0
?pinconfig? 10? [?? ]?? pinconfig????????? |?? |?? `-- spi0-0
?pinconfig? 11? [?? ]?? pinconfig????????? |?? |-- spi1
?pinconfig? 12? [?? ]?? pinconfig????????? |?? |?? `-- spi1-0
?pinconfig? 13? [?? ]?? pinconfig????????? |?? `-- board
?pinconfig? 14? [?? ]?? pinconfig????????? |?????? |-- mmc0_cd
?pinconfig? 15? [?? ]?? pinconfig????????? |?????? `-- mmc1_cd
?gpio? 0? [?? ]?? atmel_at91rm9200_gpio????????? |-- gpio at fffff200
?gpio? 1? [?? ]?? atmel_at91rm9200_gpio????????? |-- gpio at fffff400
?gpio? 2? [?? ]?? atmel_at91rm9200_gpio????????? |-- gpio at fffff600
?gpio? 3? [?? ]?? atmel_at91rm9200_gpio????????? |-- gpio at fffff800
?gpio? 4? [?? ]?? atmel_at91rm9200_gpio????????? |-- gpio at fffffa00
?simple_bus? 2? [?? ]?? at91-pmc????????? `-- pmc at fffffc00
?clk? 0? [?? ]?? at91sam9x5-utmi-clk????????????? |-- utmick
?clk? 1? [?? ]?? at91-master-clk????????????? |-- masterck
?misc? 0? [?? ]?? sam9x5-periph-clk????????????? `-- periphck
?clk? 2? [?? ]?? periph-clk????????????????? |-- dbgu_clk at 2
?clk? 3? [?? ]?? periph-clk????????????????? |-- pioA_clk at 6
?clk? 4? [?? ]?? periph-clk????????????????? |-- pioB_clk at 7
?clk? 5? [?? ]?? periph-clk????????????????? |-- pioC_clk at 8
?clk? 6? [?? ]?? periph-clk????????????????? |-- pioD_clk at 9
?clk? 7? [?? ]?? periph-clk????????????????? |-- pioE_clk at 10
?clk? 8? [?? ]?? periph-clk????????????????? |-- mci0_clk at 21
?clk? 9? [?? ]?? periph-clk????????????????? |-- mci1_clk at 22
?clk? 10? [?? ]?? periph-clk????????????????? |-- spi0_clk at 24
?clk? 11? [?? ]?? periph-clk????????????????? `-- spi1_clk at 25
Could not initialize timer (err -19)

I'm not familiar enough with U-Boot yet (and with SAMA5D3 support
either) to see why the timer device is missing here, but I hope our
Microchip friends can give us further clues...

Thanks again,

Cheers,

Michael.

-- 
Michael Opdenacker, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

  reply	other threads:[~2021-03-01 16:40 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-09 20:24 [PATCH v2] time: Fix get_ticks being non-monotonic Sean Anderson
2020-09-10 13:38 ` Simon Glass
2020-10-14 17:42 ` Tom Rini
2020-11-19 10:23   ` Michael Opdenacker
2020-11-21 23:07     ` Simon Glass
2021-03-01 16:40       ` Michael Opdenacker [this message]
2021-03-01 23:02         ` Sean Anderson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5253cdc9-1d19-79c3-204b-4f14928ae852@bootlin.com \
    --to=michael.opdenacker@bootlin.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.