
Hi Simon,
On Wed, Sep 2, 2015 at 10:05 PM, Simon Glass sjg@chromium.org wrote:
Hi Bin,
On 2 September 2015 at 03:17, Bin Meng bmeng.cn@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@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@chromium.org
Regards, Simon