[U-Boot] [PATCH v2 01/11] x86: quark: Optimize MRC execution time

Bin Meng bmeng.cn at gmail.com
Thu Sep 3 06:49:35 CEST 2015


Hi Simon,

On Wed, Sep 2, 2015 at 10:05 PM, Simon Glass <sjg at chromium.org> wrote:
> Hi Bin,
>
> On 2 September 2015 at 03:17, Bin Meng <bmeng.cn at gmail.com> wrote:
>> Intel Quark SoC has a low end x86 processor with only 400MHz
>> frequency. Currently it takes about 15 seconds for U-Boot to
>> boot to shell and the most time consuming part is with MRC,
>> which is about 12 seconds. MRC programs lots of registers on
>> the SoC internal message bus indirectly accessed via pci bus.
>>
>> To speed up the boot, create an optimized version of pci config
>> read/write dword routines which directly operate on PCI I/O ports.
>> These two routines are inlined to provide better performance too.
>> Now it only takes about 3 seconds to finish MRC, which is really
>> fast (4 times faster than before).
>
> Is it possible to use the new memory-mapped-based PCI configuration
> approach on Quark. Also I wonder if we should adjust the functions in
> arch/x86/cpu.c to do this?

Yes, it is possible to use PCIe ECAM on quark. For arch/x86/cpu.c, I
think we have two choices: 1). use ECAM for every chipset 2). use a
config option for this new capability. Given PCIe ECAM is a must-have
for PCIe, we can do option 1. But so far U-Boot still supports QEMU
i440FX which is an old PCI chipset, this looks like the only exception
that does not support ECAM. QEMU q35 supports it. We may drop the
i440FX support instead. (note the ACPI support that Saket did is also
for q35, not for i440FX)

>
>>
>> Signed-off-by: Bin Meng <bmeng.cn at gmail.com>
>>
>> ---
>>
>> Changes in v2:
>> - Drop v1 patch: "x86: quark: Make host bridge (b.d.f=0.0.0) visible",
>>   as pci_skip_dev() is not needed with the conversion to dm pci.
>> - Drop v1 patch: "dm: pci: Allow skipping device configuration",
>>   as full PCIe root port support has been added and there is no need
>>   to add such feature at this point. We can still add such capability
>>   to dm pci in the future whenever needed.
>> - Reorder to put patch "Optimize MRC execution time" as the first one
>>   in v2, as this patch addressed the slow boot time issue which exists
>>   before dm pci conversion, although it significantly improves more
>>   after dm pci conversion :-)
>> - Move qrk_pci_write_config_dword() and qrk_pci_read_config_dword()
>>   to arch/x86/cpu/quark/quark.c
>> - Rewrite this commit's message (ie: not mentioning dm pci conversion)
>>
>>  arch/x86/cpu/quark/msg_port.c           | 44 ++++++++++++++++-----------------
>>  arch/x86/include/asm/arch-quark/quark.h | 35 ++++++++++++++++++++++++++
>>  2 files changed, 57 insertions(+), 22 deletions(-)
>
> Acked-by: Simon Glass <sjg at chromium.org>
>
> Regards,
> Simon


More information about the U-Boot mailing list