[coreboot] Add coreboot storage driver
Andrey Petrov
andrey.petrov at intel.com
Wed Feb 15 02:06:43 CET 2017
Hi,
On 02/13/2017 11:16 AM, Nico Huber wrote:
> On 13.02.2017 08:19, Andrey Petrov wrote:
>> For example Apollolake is struggling to finish firmware boot with all
>> the whistles and bells (vboot, tpm and our friendly, ever-vigilant TXE)
>> under one second.
> Can you provide exhaustive figures, which part of this system's boot
> process takes how long? That would make it easier to reason about where
> "parallelism" would provide a benefit.
Such data is available. Here is a boot chart I drew few months back:
http://imgur.com/a/huyPQ
I color-coded different work types. Some blocks are coded incorrectly
please bear with me).
So what we can see is that everything is serial and there is great deal
of waiting. For that specific SDHCI case you can see "Storage device
initialization" that is happening in depthcharge. That is CMD1 that you
need keep on sending to the controller. As you can see, it completes in
130ms. Unfortunately you really can't just send CMD1 and go about your
business. You need to poll readiness status and keep on sending CMD1
again and again. Also, it is not always 130ms. It tends to vary and
worst case we seen was over 300ms. Another one is "kernel read", which
is pure IO and takes 132ms. If you invest some 300ms in training the
link (has to happen on every boot on every board) to HS400 you can read
it in just 10ms. Naturally you can't see HS400 in the picture because
enabling it late in the boot flow would be counter productive.
That's essentially the motivation to why we are looking into starting
this CMD1 and HS400 link training as early as possible. However fixing
this particular issue is just a "per-platform" fix. I was hoping we
could come up with a model that adds parallelism as a generic reusable
feature not just a quick hack.
Andrey
More information about the coreboot
mailing list