All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH v2 00/14] x86: Bring qemu-x86_64 target in travis-ci build/testing
@ 2018-10-14  3:52 Bin Meng
  2018-10-14  3:52 ` [U-Boot] [PATCH v2 01/14] x86: Specify -march=core2 to build 64-bit U-Boot proper Bin Meng
                   ` (14 more replies)
  0 siblings, 15 replies; 26+ messages in thread
From: Bin Meng @ 2018-10-14  3:52 UTC (permalink / raw)
  To: u-boot

At present the QEMU x86_64 target is broken here and there, for
example with newer compiler it even does not boot. EFI loader does
not work either.

This series is a combination of Heinrich's EFI loader fixes and
my fixes to QEMU x86_64 target. To enable qemu-x86_64 target in
travis-ci for build and testing, uboot-test-hooks needs to be
updated and the PR is sent.

The series is available at u-boot-x86/qemu-working for testing.

Changes in v2:
- some rewording in the doc per Heinrich's review comments
- Change to use MHz instead of Hz for the early timer frequency
- Change the config option value to 400 which indicates 400 MHz
- new patch to generate grub_x64.efi for qemu-x86_64 for travis-ci
- new patch to update to use QEMU 3.0.0 for travis-ci testing

Bin Meng (10):
  x86: Specify -march=core2 to build 64-bit U-Boot proper
  x86: Ensure no instruction sets of MMX/SSE are generated in 64-bit
    build
  x86: doc: Mention qemu-x86_64 support
  x86: doc: Remove stale sections of 64-bit support
  x86: Fix the mystery of printch() during 64-bit boot
  x86: tsc: Introduce config option for early timer frequency
  x86: quark: Specify X86_TSC_TIMER_EARLY_FREQ
  travis: Generate grub_x64.efi for qemu-x86_64
  travis: Update to use QEMU 3.0.0 for testing
  travis: Add qemu-x86_64 target for test.py testing

Heinrich Schuchardt (4):
  x86: qemu: enable CONFIG_SPL_DM_RTC
  x86: detect unsupported relocation types
  x86: put global data pointer into the .data section
  efi_loader: fix relocation on x86_64

 .travis.yml                   | 13 ++++++++++++-
 arch/x86/config.mk            |  3 ++-
 arch/x86/cpu/quark/Kconfig    |  4 ++++
 arch/x86/cpu/start64.S        |  1 +
 arch/x86/cpu/x86_64/cpu.c     | 28 ++++++++--------------------
 arch/x86/lib/relocate.c       | 18 ++++++++++++++++++
 configs/qemu-x86_64_defconfig |  1 +
 doc/README.x86                | 36 +++++++++++++++++-------------------
 drivers/timer/Kconfig         | 10 ++++++++++
 drivers/timer/tsc_timer.c     |  6 +++---
 lib/efi_loader/efi_runtime.c  | 16 ++++++++++++----
 11 files changed, 88 insertions(+), 48 deletions(-)

-- 
2.7.4

^ permalink raw reply	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH v2 01/14] x86: Specify -march=core2 to build 64-bit U-Boot proper
  2018-10-14  3:52 [U-Boot] [PATCH v2 00/14] x86: Bring qemu-x86_64 target in travis-ci build/testing Bin Meng
@ 2018-10-14  3:52 ` Bin Meng
  2018-10-14  3:52 ` [U-Boot] [PATCH v2 02/14] x86: Ensure no instruction sets of MMX/SSE are generated in 64-bit build Bin Meng
                   ` (13 subsequent siblings)
  14 siblings, 0 replies; 26+ messages in thread
From: Bin Meng @ 2018-10-14  3:52 UTC (permalink / raw)
  To: u-boot

With newer kernel.org GCC (7.3.0 or 8.1.0), the u-boot.rom image
built for qemu-x86_64 target does not boot. It keeps resetting
soon after the 32-bit SPL jumps to 64-bit proper. Debugging shows
that the reset happens inside env_callback_init().

000000000113dd85 <env_callback_init>:
 113dd85:       41 54                   push   %r12
 113dd87:       55                      push   %rbp
 113dd88:       31 c0                   xor    %eax,%eax
 113dd8a:       53                      push   %rbx
 113dd8b:       0f 57 c0                xorps  %xmm0,%xmm0

Executing "xorps %xmm0,%xmm0" causes CPU to immediately reset.
However older GCC like 5.4.0 (the one shipped by Ubuntu 16.04)
does not generate such instructions that utilizes SSE for this
function - env_callback_init() and U-Boot boots without any issue.
Explicitly specifying -march=core2 for newer GCC allows U-Boot
proper to boot again. Examine assembly codes of env_callback_init
and there is no SSE instruction in that function hence U-Boot
continues to boot.

core2 seems to be the oldest arch in GCC that supports 64-bit.
Like 32-bit U-Boot build we use -march=i386 which is the most
conservative cpu type so that the image can run on any x86
processor, let's do the same for the 64-bit U-Boot build.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Reviewed-by: Simon Glass <sjg@chromium.org>
---

Changes in v2: None

 arch/x86/config.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/config.mk b/arch/x86/config.mk
index cc94071..576501e 100644
--- a/arch/x86/config.mk
+++ b/arch/x86/config.mk
@@ -23,7 +23,7 @@ endif
 ifeq ($(IS_32BIT),y)
 PLATFORM_CPPFLAGS += -march=i386 -m32
 else
-PLATFORM_CPPFLAGS += $(if $(CONFIG_SPL_BUILD),,-fpic) -fno-common -m64
+PLATFORM_CPPFLAGS += $(if $(CONFIG_SPL_BUILD),,-fpic) -fno-common -march=core2 -m64
 endif
 
 PLATFORM_RELFLAGS += -fdata-sections -ffunction-sections -fvisibility=hidden
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH v2 02/14] x86: Ensure no instruction sets of MMX/SSE are generated in 64-bit build
  2018-10-14  3:52 [U-Boot] [PATCH v2 00/14] x86: Bring qemu-x86_64 target in travis-ci build/testing Bin Meng
  2018-10-14  3:52 ` [U-Boot] [PATCH v2 01/14] x86: Specify -march=core2 to build 64-bit U-Boot proper Bin Meng
@ 2018-10-14  3:52 ` Bin Meng
  2018-10-19  3:26   ` Simon Glass
  2018-10-14  3:52 ` [U-Boot] [PATCH v2 03/14] x86: doc: Mention qemu-x86_64 support Bin Meng
                   ` (12 subsequent siblings)
  14 siblings, 1 reply; 26+ messages in thread
From: Bin Meng @ 2018-10-14  3:52 UTC (permalink / raw)
  To: u-boot

With the '-march=core2' fix, it seems that we have some luck that
the 64-bit U-Boot boots again. However if we examine the disassembly
codes there are still SSE instructions elsewhere which means passing
cpu type to GCC is not enough to prevent it from generating these
instructions. A simple test case is doing a 'bootefi selftest' from
the U-Boot shell and it leads to a reset too.

The 'bootefi selftest' reset is even seen with the image created by
the relative older GCC 5.4.0, the one shipped by Ubuntu 16.04.

The reset actually originates from undefined instruction exception
caused by these SSE instructions. To keep U-Boot as a bootloader as
simple as possible, we don't want to handle such advanced SIMD stuff.
To make sure no MMX/SSE instruction sets are generated, tell GCC not
to do this. Note AVX is out of the question as CORE2 is old enough
to support AVX yet.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
---

Changes in v2: None

 arch/x86/config.mk | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/x86/config.mk b/arch/x86/config.mk
index 576501e..8151e47 100644
--- a/arch/x86/config.mk
+++ b/arch/x86/config.mk
@@ -24,6 +24,7 @@ ifeq ($(IS_32BIT),y)
 PLATFORM_CPPFLAGS += -march=i386 -m32
 else
 PLATFORM_CPPFLAGS += $(if $(CONFIG_SPL_BUILD),,-fpic) -fno-common -march=core2 -m64
+PLATFORM_CPPFLAGS += -mno-mmx -mno-sse
 endif
 
 PLATFORM_RELFLAGS += -fdata-sections -ffunction-sections -fvisibility=hidden
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH v2 03/14] x86: doc: Mention qemu-x86_64 support
  2018-10-14  3:52 [U-Boot] [PATCH v2 00/14] x86: Bring qemu-x86_64 target in travis-ci build/testing Bin Meng
  2018-10-14  3:52 ` [U-Boot] [PATCH v2 01/14] x86: Specify -march=core2 to build 64-bit U-Boot proper Bin Meng
  2018-10-14  3:52 ` [U-Boot] [PATCH v2 02/14] x86: Ensure no instruction sets of MMX/SSE are generated in 64-bit build Bin Meng
@ 2018-10-14  3:52 ` Bin Meng
  2018-10-19  3:26   ` Simon Glass
  2018-10-14  3:52 ` [U-Boot] [PATCH v2 04/14] x86: doc: Remove stale sections of 64-bit support Bin Meng
                   ` (11 subsequent siblings)
  14 siblings, 1 reply; 26+ messages in thread
From: Bin Meng @ 2018-10-14  3:52 UTC (permalink / raw)
  To: u-boot

Currently only 32-bit U-Boot for QEMU x86 is documented. Mention
the 64-bit support.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>

---

Changes in v2:
- some rewording in the doc per Heinrich's review comments

 doc/README.x86 | 19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)

diff --git a/doc/README.x86 b/doc/README.x86
index 8cc4672..22bfbab 100644
--- a/doc/README.x86
+++ b/doc/README.x86
@@ -32,7 +32,7 @@ are supported:
    - Link (Chromebook Pixel)
    - Minnowboard MAX
    - Samus (Chromebook Pixel 2015)
-   - QEMU x86
+   - QEMU x86 (32-bit & 64-bit)
 
 As for loading an OS, U-Boot supports directly booting a 32-bit or 64-bit
 Linux kernel as part of a FIT image. It also supports a compressed zImage.
@@ -376,7 +376,9 @@ QEMU x86 target instructions for bare mode:
 
 To build u-boot.rom for QEMU x86 targets, just simply run
 
-$ make qemu-x86_defconfig
+$ make qemu-x86_defconfig (for 32-bit)
+or
+$ make qemu-x86_64_defconfig (for 64-bit)
 $ make all
 
 Note this default configuration will build a U-Boot for the QEMU x86 i440FX
@@ -479,6 +481,19 @@ Here the kernel (bzImage) is loaded to 01000000 and initrd is to 04000000. Then,
 
 => zboot 01000000 - 04000000 1b1ab50
 
+To run 64-bit U-Boot, qemu-system-x86_64 should be used instead, e.g.:
+$ qemu-system-x86_64 -nographic -bios path/to/u-boot.rom
+
+A specific CPU can be specified via the '-cpu' parameter but please make
+sure the specified CPU supports 64-bit like '-cpu core2duo'. Conversely
+'-cpu pentium' won't work for obvious reasons that the processor only
+supports 32-bit.
+
+Note 64-bit support is very preliminary at this point. Lots of features
+are missing in the 64-bit world. One notable feature is the VGA console
+support which is currently missing, so that you must specify '-nographic'
+to get 64-bit U-Boot up and running.
+
 Updating U-Boot on Edison
 -------------------------
 By default Intel Edison boards are shipped with preinstalled heavily
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH v2 04/14] x86: doc: Remove stale sections of 64-bit support
  2018-10-14  3:52 [U-Boot] [PATCH v2 00/14] x86: Bring qemu-x86_64 target in travis-ci build/testing Bin Meng
                   ` (2 preceding siblings ...)
  2018-10-14  3:52 ` [U-Boot] [PATCH v2 03/14] x86: doc: Mention qemu-x86_64 support Bin Meng
@ 2018-10-14  3:52 ` Bin Meng
  2018-10-14  3:52 ` [U-Boot] [PATCH v2 05/14] x86: qemu: enable CONFIG_SPL_DM_RTC Bin Meng
                   ` (10 subsequent siblings)
  14 siblings, 0 replies; 26+ messages in thread
From: Bin Meng @ 2018-10-14  3:52 UTC (permalink / raw)
  To: u-boot

There are some sections in current doc saying 64-bit is unsupported.
This apparently is out of date. Remove it.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
---

Changes in v2: None

 doc/README.x86 | 17 -----------------
 1 file changed, 17 deletions(-)

diff --git a/doc/README.x86 b/doc/README.x86
index 22bfbab..fa49cb8 100644
--- a/doc/README.x86
+++ b/doc/README.x86
@@ -1160,27 +1160,10 @@ to load a 'u-boot-payload.efi', see below test logs on QEMU.
 
 See README.u-boot_on_efi and README.uefi for details of EFI support in U-Boot.
 
-64-bit Support
---------------
-U-Boot supports booting a 64-bit kernel directly and is able to change to
-64-bit mode to do so. However, U-Boot itself is currently always built
-in 32-bit mode. Some access to the full memory range is provided with
-arch_phys_memset().
-
-The development work to make U-Boot itself run in 64-bit mode has not yet
-been attempted. The best approach would likely be to build a 32-bit SPL
-image for U-Boot, with CONFIG_SPL_BUILD. This could then handle the early CPU
-init in 16-bit and 32-bit mode, running the FSP and any other binaries that
-are needed. Then it could change to 64-bit model and jump to U-Boot proper.
-
-Given U-Boot's extensive 64-bit support this has not been a high priority,
-but it would be a nice addition.
-
 TODO List
 ---------
 - Audio
 - Chrome OS verified boot
-- Building U-Boot to run in 64-bit mode
 
 References
 ----------
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH v2 05/14] x86: qemu: enable CONFIG_SPL_DM_RTC
  2018-10-14  3:52 [U-Boot] [PATCH v2 00/14] x86: Bring qemu-x86_64 target in travis-ci build/testing Bin Meng
                   ` (3 preceding siblings ...)
  2018-10-14  3:52 ` [U-Boot] [PATCH v2 04/14] x86: doc: Remove stale sections of 64-bit support Bin Meng
@ 2018-10-14  3:52 ` Bin Meng
  2018-10-14  3:52 ` [U-Boot] [PATCH v2 06/14] x86: detect unsupported relocation types Bin Meng
                   ` (9 subsequent siblings)
  14 siblings, 0 replies; 26+ messages in thread
From: Bin Meng @ 2018-10-14  3:52 UTC (permalink / raw)
  To: u-boot

From: Heinrich Schuchardt <xypron.glpk@gmx.de>

Since commit 380d4f787a3f ("rtc: Allow use of RTC in SPL and TPL")
qemu-x86_64_defconfig does not boot anymore.

Fixes: 380d4f787a3f ("rtc: Allow use of RTC in SPL and TPL")
Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
---

Changes in v2: None

 configs/qemu-x86_64_defconfig | 1 +
 1 file changed, 1 insertion(+)

diff --git a/configs/qemu-x86_64_defconfig b/configs/qemu-x86_64_defconfig
index cf1ba8e..32922b8 100644
--- a/configs/qemu-x86_64_defconfig
+++ b/configs/qemu-x86_64_defconfig
@@ -63,6 +63,7 @@ CONFIG_SPL_REGMAP=y
 CONFIG_SYSCON=y
 CONFIG_SPL_SYSCON=y
 CONFIG_CPU=y
+CONFIG_SPL_DM_RTC=y
 CONFIG_SPI=y
 CONFIG_SPL_TIMER=y
 CONFIG_USB_STORAGE=y
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH v2 06/14] x86: detect unsupported relocation types
  2018-10-14  3:52 [U-Boot] [PATCH v2 00/14] x86: Bring qemu-x86_64 target in travis-ci build/testing Bin Meng
                   ` (4 preceding siblings ...)
  2018-10-14  3:52 ` [U-Boot] [PATCH v2 05/14] x86: qemu: enable CONFIG_SPL_DM_RTC Bin Meng
@ 2018-10-14  3:52 ` Bin Meng
  2018-10-14  3:52 ` [U-Boot] [PATCH v2 07/14] x86: put global data pointer into the .data section Bin Meng
                   ` (8 subsequent siblings)
  14 siblings, 0 replies; 26+ messages in thread
From: Bin Meng @ 2018-10-14  3:52 UTC (permalink / raw)
  To: u-boot

From: Heinrich Schuchardt <xypron.glpk@gmx.de>

Currently we support only relocations of type ELF64_R_TYPE or ELF32_R_TYPE.
We should be warned if other relocation types appear in the relocation
sections.

This type of message has helped to identify code overwriting a relocation
section before relocation and incorrect parsing of relocation tables.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
---

Changes in v2: None

 arch/x86/lib/relocate.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/arch/x86/lib/relocate.c b/arch/x86/lib/relocate.c
index ed10755..4d09e4d 100644
--- a/arch/x86/lib/relocate.c
+++ b/arch/x86/lib/relocate.c
@@ -53,6 +53,15 @@ static void do_elf_reloc_fixups64(unsigned int text_base, uintptr_t size,
 	Elf64_Addr *offset_ptr_ram;
 
 	do {
+		unsigned long long type = ELF64_R_TYPE(re_src->r_info);
+
+		if (type != R_X86_64_RELATIVE) {
+			printf("%s: unsupported relocation type 0x%llx "
+			       "at %p, ", __func__, type, re_src);
+			printf("offset = 0x%llx\n", re_src->r_offset);
+			continue;
+		}
+
 		/* Get the location from the relocation entry */
 		offset_ptr_rom = (Elf64_Addr *)(uintptr_t)re_src->r_offset;
 
@@ -91,6 +100,15 @@ static void do_elf_reloc_fixups32(unsigned int text_base, uintptr_t size,
 	Elf32_Addr *offset_ptr_ram;
 
 	do {
+		unsigned int type = ELF32_R_TYPE(re_src->r_info);
+
+		if (type != R_386_RELATIVE) {
+			printf("%s: unsupported relocation type 0x%x "
+			       "at %p, ", __func__, type, re_src);
+			printf("offset = 0x%x\n", re_src->r_offset);
+			continue;
+		}
+
 		/* Get the location from the relocation entry */
 		offset_ptr_rom = (Elf32_Addr *)(uintptr_t)re_src->r_offset;
 
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH v2 07/14] x86: put global data pointer into the .data section
  2018-10-14  3:52 [U-Boot] [PATCH v2 00/14] x86: Bring qemu-x86_64 target in travis-ci build/testing Bin Meng
                   ` (5 preceding siblings ...)
  2018-10-14  3:52 ` [U-Boot] [PATCH v2 06/14] x86: detect unsupported relocation types Bin Meng
@ 2018-10-14  3:52 ` Bin Meng
  2018-10-14  3:52 ` [U-Boot] [PATCH v2 08/14] efi_loader: fix relocation on x86_64 Bin Meng
                   ` (7 subsequent siblings)
  14 siblings, 0 replies; 26+ messages in thread
From: Bin Meng @ 2018-10-14  3:52 UTC (permalink / raw)
  To: u-boot

From: Heinrich Schuchardt <xypron.glpk@gmx.de>

On x86_64 the field global_data_ptr is assigned before relocation. As
sections for uninitialized global data (.bss) overlap with the relocation
sections (.rela) this destroys the relocation table and leads to spurious
errors.

Initialization forces the global_data_ptr into a section for initialized
global data (.data) which cannot overlap any .rela section.

Fixes: a160092a610f ("x86: Support global_data on x86_64")
Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Bin Meng <bmeng.cn@gmail.com>
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
---

Changes in v2: None

 arch/x86/cpu/x86_64/cpu.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/arch/x86/cpu/x86_64/cpu.c b/arch/x86/cpu/x86_64/cpu.c
index 18b3e94..ef5e812 100644
--- a/arch/x86/cpu/x86_64/cpu.c
+++ b/arch/x86/cpu/x86_64/cpu.c
@@ -7,8 +7,14 @@
 #include <common.h>
 #include <debug_uart.h>
 
-/* Global declaration of gd */
-struct global_data *global_data_ptr;
+/*
+ * Global declaration of gd.
+ *
+ * As we write to it before relocation we have to make sure it is not put into
+ * a .bss section which may overlap a .rela section. Initialization forces it
+ * into a .data section which cannot overlap any .rela section.
+ */
+struct global_data *global_data_ptr = (struct global_data *)~0;
 
 void arch_setup_gd(gd_t *new_gd)
 {
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH v2 08/14] efi_loader: fix relocation on x86_64
  2018-10-14  3:52 [U-Boot] [PATCH v2 00/14] x86: Bring qemu-x86_64 target in travis-ci build/testing Bin Meng
                   ` (6 preceding siblings ...)
  2018-10-14  3:52 ` [U-Boot] [PATCH v2 07/14] x86: put global data pointer into the .data section Bin Meng
@ 2018-10-14  3:52 ` Bin Meng
  2018-10-16 13:30   ` [U-Boot] [U-Boot, v2, " Alexander Graf
  2018-10-14  3:52 ` [U-Boot] [PATCH v2 09/14] x86: Fix the mystery of printch() during 64-bit boot Bin Meng
                   ` (6 subsequent siblings)
  14 siblings, 1 reply; 26+ messages in thread
From: Bin Meng @ 2018-10-14  3:52 UTC (permalink / raw)
  To: u-boot

From: Heinrich Schuchardt <xypron.glpk@gmx.de>

Currently the relocation of the EFI runtime on x86_64 fails. This renders
the EFI subsystem unusable. The ELF relocation records for x86_64 contain
an addend field.

Always write the function name into error messages related to the EFI
runtime relocation.

Break an excessively long line.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Bin Meng <bmeng.cn@gmail.com>
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
---

Changes in v2: None

 lib/efi_loader/efi_runtime.c | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/lib/efi_loader/efi_runtime.c b/lib/efi_loader/efi_runtime.c
index c5fbd91..f059dc9 100644
--- a/lib/efi_loader/efi_runtime.c
+++ b/lib/efi_loader/efi_runtime.c
@@ -41,9 +41,13 @@ static efi_status_t __efi_runtime EFIAPI efi_invalid_parameter(void);
 #elif defined(__arm__)
 #define R_RELATIVE	R_ARM_RELATIVE
 #define R_MASK		0xffULL
-#elif defined(__x86_64__) || defined(__i386__)
+#elif defined(__i386__)
 #define R_RELATIVE	R_386_RELATIVE
 #define R_MASK		0xffULL
+#elif defined(__x86_64__)
+#define R_RELATIVE	R_X86_64_RELATIVE
+#define R_MASK		0xffffffffULL
+#define IS_RELA		1
 #elif defined(__riscv)
 #define R_RELATIVE	R_RISCV_RELATIVE
 #define R_MASK		0xffULL
@@ -358,7 +362,8 @@ void efi_runtime_relocate(ulong offset, struct efi_mem_desc *map)
 
 		p = (void*)((ulong)rel->offset - base) + gd->relocaddr;
 
-		debug("%s: rel->info=%#lx *p=%#lx rel->offset=%p\n", __func__, rel->info, *p, rel->offset);
+		debug("%s: rel->info=%#lx *p=%#lx rel->offset=%p\n", __func__,
+		      rel->info, *p, rel->offset);
 
 		switch (rel->info & R_MASK) {
 		case R_RELATIVE:
@@ -377,6 +382,9 @@ void efi_runtime_relocate(ulong offset, struct efi_mem_desc *map)
 		}
 #endif
 		default:
+			if (!efi_runtime_tobedetached(p))
+				printf("%s: Unknown relocation type %llx\n",
+				       __func__, rel->info & R_MASK);
 			continue;
 		}
 
@@ -385,8 +393,8 @@ void efi_runtime_relocate(ulong offset, struct efi_mem_desc *map)
 		    newaddr > (map->virtual_start +
 			      (map->num_pages << EFI_PAGE_SHIFT)))) {
 			if (!efi_runtime_tobedetached(p))
-				printf("U-Boot EFI: Relocation at %p is out of "
-				       "range (%lx)\n", p, newaddr);
+				printf("%s: Relocation@%p is out of "
+				       "range (%lx)\n", __func__, p, newaddr);
 			continue;
 		}
 
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH v2 09/14] x86: Fix the mystery of printch() during 64-bit boot
  2018-10-14  3:52 [U-Boot] [PATCH v2 00/14] x86: Bring qemu-x86_64 target in travis-ci build/testing Bin Meng
                   ` (7 preceding siblings ...)
  2018-10-14  3:52 ` [U-Boot] [PATCH v2 08/14] efi_loader: fix relocation on x86_64 Bin Meng
@ 2018-10-14  3:52 ` Bin Meng
  2018-10-14  3:52 ` [U-Boot] [PATCH v2 10/14] x86: tsc: Introduce config option for early timer frequency Bin Meng
                   ` (5 subsequent siblings)
  14 siblings, 0 replies; 26+ messages in thread
From: Bin Meng @ 2018-10-14  3:52 UTC (permalink / raw)
  To: u-boot

At present in arch_setup_gd() it calls printch(' ') at the end which
has been a mystery for a long time as without such call the 64-bit
U-Boot just does not boot at all.

In fact this is due to the bug that board_init_f() was called with
boot_flags not being set. Hence whatever value being there in the
rdi register becomes the boot_flags if without such magic call.
With a printch(' ') call the rdi register is initialized as 0x20
and this value seems to be sane enough for the whole boot process.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
---

Changes in v2: None

 arch/x86/cpu/start64.S    |  1 +
 arch/x86/cpu/x86_64/cpu.c | 18 ------------------
 2 files changed, 1 insertion(+), 18 deletions(-)

diff --git a/arch/x86/cpu/start64.S b/arch/x86/cpu/start64.S
index a473fd1..a78a331 100644
--- a/arch/x86/cpu/start64.S
+++ b/arch/x86/cpu/start64.S
@@ -20,6 +20,7 @@ _start:
 
 	call	board_init_f_init_reserve
 
+	xor	%rdi, %rdi
 	call	board_init_f
 	call	board_init_f_r
 
diff --git a/arch/x86/cpu/x86_64/cpu.c b/arch/x86/cpu/x86_64/cpu.c
index ef5e812..6c063e8 100644
--- a/arch/x86/cpu/x86_64/cpu.c
+++ b/arch/x86/cpu/x86_64/cpu.c
@@ -19,24 +19,6 @@ struct global_data *global_data_ptr = (struct global_data *)~0;
 void arch_setup_gd(gd_t *new_gd)
 {
 	global_data_ptr = new_gd;
-
-	/*
-	 * TODO(sjg at chromium.org): For some reason U-Boot does not boot
-	 * without this line. It fails to start up U-Boot proper and instead
-	 * restarts SPL. Need to figure out why:
-	 *
-	 * U-Boot SPL 2017.01
-	 *
-	 * U-Boot SPL 2017.01
-	 * CPU:   Intel(R) Core(TM) i5-3427U CPU @ 1.80GHz
-	 * Trying to boot from SPIJumping to 64-bit U-Boot: Note many
-	 * features are missing
-	 *
-	 * U-Boot SPL 2017.01
-	 */
-#ifdef CONFIG_DEBUG_UART
-	printch(' ');
-#endif
 }
 
 int cpu_has_64bit(void)
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH v2 10/14] x86: tsc: Introduce config option for early timer frequency
  2018-10-14  3:52 [U-Boot] [PATCH v2 00/14] x86: Bring qemu-x86_64 target in travis-ci build/testing Bin Meng
                   ` (8 preceding siblings ...)
  2018-10-14  3:52 ` [U-Boot] [PATCH v2 09/14] x86: Fix the mystery of printch() during 64-bit boot Bin Meng
@ 2018-10-14  3:52 ` Bin Meng
  2018-10-19  3:26   ` Simon Glass
  2018-10-14  3:52 ` [U-Boot] [PATCH v2 11/14] x86: quark: Specify X86_TSC_TIMER_EARLY_FREQ Bin Meng
                   ` (4 subsequent siblings)
  14 siblings, 1 reply; 26+ messages in thread
From: Bin Meng @ 2018-10-14  3:52 UTC (permalink / raw)
  To: u-boot

So far the TSC timer driver supports trying hardware calibration first
and using device tree as last resort for its running frequency as the
normal timer.

However when it is used as the early timer, it only supports hardware
calibration and if it fails, the driver just panics. This introduces
a new config option to specify the early timer frequency in MHz and
it should be equal to the value described in the device tree.

Without this patch, the travis-ci testing on QEMU x86_64 target fails
each time after it finishes the 'bootefi selftest' as the test.py see
an error was emitted on the console like this:

  TSC frequency is ZERO
  resetting ...
  ### ERROR ### Please RESET the board ###

It's strange that this error is consistently seen on the travis-ci
machine, but only occasionally seen on my local machine (maybe 1 out
of 10). Since QEMU x86_64 target enables BOOTSTAGE support which uses
early timer, with this fix it should work without any failure.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>

---

Changes in v2:
- Change to use MHz instead of Hz for the early timer frequency

 drivers/timer/Kconfig     | 10 ++++++++++
 drivers/timer/tsc_timer.c |  6 +++---
 2 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/drivers/timer/Kconfig b/drivers/timer/Kconfig
index 45a256a..d012cf7 100644
--- a/drivers/timer/Kconfig
+++ b/drivers/timer/Kconfig
@@ -82,6 +82,16 @@ config X86_TSC_TIMER
 	help
 	  Select this to enable Time-Stamp Counter (TSC) timer for x86.
 
+config X86_TSC_TIMER_EARLY_FREQ
+	int "x86 TSC timer frequency in MHz when used as the early timer"
+	depends on X86_TSC_TIMER
+	default 1000
+	help
+	  Sets the estimated CPU frequency in MHz when TSC is used as the
+	  early timer and the frequency can neither be calibrated via some
+	  hardware ways, nor got from device tree at the time when device
+	  tree is not available yet.
+
 config OMAP_TIMER
 	bool "Omap timer support"
 	depends on TIMER
diff --git a/drivers/timer/tsc_timer.c b/drivers/timer/tsc_timer.c
index 6473de2..da7c812 100644
--- a/drivers/timer/tsc_timer.c
+++ b/drivers/timer/tsc_timer.c
@@ -341,7 +341,7 @@ static int tsc_timer_get_count(struct udevice *dev, u64 *count)
 	return 0;
 }
 
-static void tsc_timer_ensure_setup(bool stop)
+static void tsc_timer_ensure_setup(bool early)
 {
 	if (gd->arch.tsc_base)
 		return;
@@ -362,8 +362,8 @@ static void tsc_timer_ensure_setup(bool stop)
 		if (fast_calibrate)
 			goto done;
 
-		if (stop)
-			panic("TSC frequency is ZERO");
+		if (early)
+			fast_calibrate = CONFIG_X86_TSC_TIMER_EARLY_FREQ;
 		else
 			return;
 
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH v2 11/14] x86: quark: Specify X86_TSC_TIMER_EARLY_FREQ
  2018-10-14  3:52 [U-Boot] [PATCH v2 00/14] x86: Bring qemu-x86_64 target in travis-ci build/testing Bin Meng
                   ` (9 preceding siblings ...)
  2018-10-14  3:52 ` [U-Boot] [PATCH v2 10/14] x86: tsc: Introduce config option for early timer frequency Bin Meng
@ 2018-10-14  3:52 ` Bin Meng
  2018-10-19  3:26   ` Simon Glass
  2018-10-14  3:52 ` [U-Boot] [PATCH v2 12/14] travis: Generate grub_x64.efi for qemu-x86_64 Bin Meng
                   ` (3 subsequent siblings)
  14 siblings, 1 reply; 26+ messages in thread
From: Bin Meng @ 2018-10-14  3:52 UTC (permalink / raw)
  To: u-boot

Specify X86_TSC_TIMER_EARLY_FREQ for Quark SoC so that TSC as
the early timer can be supported.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>

---

Changes in v2:
- Change the config option value to 400 which indicates 400 MHz

 arch/x86/cpu/quark/Kconfig | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/arch/x86/cpu/quark/Kconfig b/arch/x86/cpu/quark/Kconfig
index 76f1592..3a18cb0 100644
--- a/arch/x86/cpu/quark/Kconfig
+++ b/arch/x86/cpu/quark/Kconfig
@@ -130,4 +130,8 @@ config SYS_CAR_SIZE
 	  Space in bytes in eSRAM used as Cache-As-ARM (CAR).
 	  Note this size must not exceed eSRAM's total size.
 
+config X86_TSC_TIMER_EARLY_FREQ
+	int
+	default 400
+
 endif
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH v2 12/14] travis: Generate grub_x64.efi for qemu-x86_64
  2018-10-14  3:52 [U-Boot] [PATCH v2 00/14] x86: Bring qemu-x86_64 target in travis-ci build/testing Bin Meng
                   ` (10 preceding siblings ...)
  2018-10-14  3:52 ` [U-Boot] [PATCH v2 11/14] x86: quark: Specify X86_TSC_TIMER_EARLY_FREQ Bin Meng
@ 2018-10-14  3:52 ` Bin Meng
  2018-10-19  3:26   ` Simon Glass
  2018-10-14  3:52 ` [U-Boot] [PATCH v2 13/14] travis: Update to use QEMU 3.0.0 for testing Bin Meng
                   ` (2 subsequent siblings)
  14 siblings, 1 reply; 26+ messages in thread
From: Bin Meng @ 2018-10-14  3:52 UTC (permalink / raw)
  To: u-boot

grub_x86.efi is for 32-bit QEMU. Generate the 64-bit one.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>

---

Changes in v2:
- new patch to generate grub_x64.efi for qemu-x86_64 for travis-ci

 .travis.yml | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/.travis.yml b/.travis.yml
index f78749a..55d9123 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -23,6 +23,7 @@ addons:
     - libpython-dev
     - iasl
     - grub-efi-ia32-bin
+    - grub-efi-amd64-bin
     - rpm2cpio
     - wget
     - device-tree-compiler
@@ -49,6 +50,7 @@ install:
  - pip install pytest
  - pip install python-subunit
  - grub-mkimage -o ~/grub_x86.efi -O i386-efi normal  echo lsefimmap lsefi lsefisystab efinet tftp minicmd
+ - grub-mkimage -o ~/grub_x64.efi -O x86_64-efi normal  echo lsefimmap lsefi lsefisystab efinet tftp minicmd
  - mkdir ~/grub2-arm
  - ( cd ~/grub2-arm; wget -O - http://download.opensuse.org/ports/armv7hl/distribution/leap/42.2/repo/oss/suse/armv7hl/grub2-arm-efi-2.02~beta2-87.1.armv7hl.rpm | rpm2cpio | cpio -di )
  - mkdir ~/grub2-arm64
@@ -121,6 +123,7 @@ script:
  # value.
  - export UBOOT_TRAVIS_BUILD_DIR=`cd .. && pwd`/.bm-work/${TEST_PY_BD};
    cp ~/grub_x86.efi $UBOOT_TRAVIS_BUILD_DIR/;
+   cp ~/grub_x64.efi $UBOOT_TRAVIS_BUILD_DIR/;
    cp ~/grub2-arm/usr/lib/grub2/arm-efi/grub.efi $UBOOT_TRAVIS_BUILD_DIR/grub_arm.efi;
    cp ~/grub2-arm64/usr/lib/grub2/arm64-efi/grub.efi $UBOOT_TRAVIS_BUILD_DIR/grub_arm64.efi;
    if [[ "${TEST_PY_BD}" != "" ]]; then
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH v2 13/14] travis: Update to use QEMU 3.0.0 for testing
  2018-10-14  3:52 [U-Boot] [PATCH v2 00/14] x86: Bring qemu-x86_64 target in travis-ci build/testing Bin Meng
                   ` (11 preceding siblings ...)
  2018-10-14  3:52 ` [U-Boot] [PATCH v2 12/14] travis: Generate grub_x64.efi for qemu-x86_64 Bin Meng
@ 2018-10-14  3:52 ` Bin Meng
  2018-10-19  3:26   ` Simon Glass
  2018-10-14  3:52 ` [U-Boot] [PATCH v2 14/14] travis: Add qemu-x86_64 target for test.py testing Bin Meng
  2018-10-22  9:53 ` [U-Boot] [PATCH v2 00/14] x86: Bring qemu-x86_64 target in travis-ci build/testing Bin Meng
  14 siblings, 1 reply; 26+ messages in thread
From: Bin Meng @ 2018-10-14  3:52 UTC (permalink / raw)
  To: u-boot

This updates travis-ci to use QEMU 3.0.0 for testing.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>

---

Changes in v2:
- new patch to update to use QEMU 3.0.0 for travis-ci testing

 .travis.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.travis.yml b/.travis.yml
index 55d9123..d9e5b35 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -98,7 +98,7 @@ before_script:
        git clone git://git.qemu.org/qemu.git /tmp/qemu;
        pushd /tmp/qemu;
        git submodule update --init dtc &&
-       git checkout v2.8.0-rc3 &&
+       git checkout v3.0.0 &&
        ./configure --prefix=/tmp/qemu-install --target-list=${QEMU_TARGET} &&
        make -j4 all install;
        popd;
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH v2 14/14] travis: Add qemu-x86_64 target for test.py testing
  2018-10-14  3:52 [U-Boot] [PATCH v2 00/14] x86: Bring qemu-x86_64 target in travis-ci build/testing Bin Meng
                   ` (12 preceding siblings ...)
  2018-10-14  3:52 ` [U-Boot] [PATCH v2 13/14] travis: Update to use QEMU 3.0.0 for testing Bin Meng
@ 2018-10-14  3:52 ` Bin Meng
  2018-10-19  3:26   ` Simon Glass
  2018-10-22  9:53 ` [U-Boot] [PATCH v2 00/14] x86: Bring qemu-x86_64 target in travis-ci build/testing Bin Meng
  14 siblings, 1 reply; 26+ messages in thread
From: Bin Meng @ 2018-10-14  3:52 UTC (permalink / raw)
  To: u-boot

Add qemu-x86_64 to the list of targets we use for test.py runs.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>

---

Changes in v2: None

 .travis.yml | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/.travis.yml b/.travis.yml
index d9e5b35..ceef585 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -412,6 +412,14 @@ matrix:
           BUILDMAN="^qemu-x86$"
           TOOLCHAIN="x86_64"
           BUILD_ROM="yes"
+    - name: "test/py qemu-x86_64"
+      env:
+        - TEST_PY_BD="qemu-x86_64"
+          TEST_PY_TEST_SPEC="not sleep"
+          QEMU_TARGET="x86_64-softmmu"
+          BUILDMAN="^qemu-x86_64$"
+          TOOLCHAIN="x86_64"
+          BUILD_ROM="yes"
     - name: "test/py zynq_zc702"
       env:
         - TEST_PY_BD="zynq_zc702"
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [U-Boot] [U-Boot, v2, 08/14] efi_loader: fix relocation on x86_64
  2018-10-14  3:52 ` [U-Boot] [PATCH v2 08/14] efi_loader: fix relocation on x86_64 Bin Meng
@ 2018-10-16 13:30   ` Alexander Graf
  2018-10-16 23:08     ` Bin Meng
  0 siblings, 1 reply; 26+ messages in thread
From: Alexander Graf @ 2018-10-16 13:30 UTC (permalink / raw)
  To: u-boot

> From: Heinrich Schuchardt <xypron.glpk@gmx.de>
> 
> Currently the relocation of the EFI runtime on x86_64 fails. This renders
> the EFI subsystem unusable. The ELF relocation records for x86_64 contain
> an addend field.
> 
> Always write the function name into error messages related to the EFI
> runtime relocation.
> 
> Break an excessively long line.
> 
> Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
> Tested-by: Bin Meng <bmeng.cn@gmail.com>
> Signed-off-by: Bin Meng <bmeng.cn@gmail.com>

Thanks, applied to efi-2018.11

Alex

^ permalink raw reply	[flat|nested] 26+ messages in thread

* [U-Boot] [U-Boot, v2, 08/14] efi_loader: fix relocation on x86_64
  2018-10-16 13:30   ` [U-Boot] [U-Boot, v2, " Alexander Graf
@ 2018-10-16 23:08     ` Bin Meng
  2018-10-17  6:47       ` Alexander Graf
  0 siblings, 1 reply; 26+ messages in thread
From: Bin Meng @ 2018-10-16 23:08 UTC (permalink / raw)
  To: u-boot

Hi Alex,

On Tue, Oct 16, 2018 at 9:30 PM Alexander Graf <agraf@suse.de> wrote:
>
> > From: Heinrich Schuchardt <xypron.glpk@gmx.de>
> >
> > Currently the relocation of the EFI runtime on x86_64 fails. This renders
> > the EFI subsystem unusable. The ELF relocation records for x86_64 contain
> > an addend field.
> >
> > Always write the function name into error messages related to the EFI
> > runtime relocation.
> >
> > Break an excessively long line.
> >
> > Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
> > Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
> > Tested-by: Bin Meng <bmeng.cn@gmail.com>
> > Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
>
> Thanks, applied to efi-2018.11

Thanks for taking this, but this patch series was assigned to me in
patchwork :) This whole patch series needs to go in a batch to make
sure qemu-x86_64 travis-ci pass, since you've already taken this
single one, can you please let me know when you will send the PR? This
series will have to wait after the efi PR is merged.

Regards,
Bin

^ permalink raw reply	[flat|nested] 26+ messages in thread

* [U-Boot] [U-Boot, v2, 08/14] efi_loader: fix relocation on x86_64
  2018-10-16 23:08     ` Bin Meng
@ 2018-10-17  6:47       ` Alexander Graf
  0 siblings, 0 replies; 26+ messages in thread
From: Alexander Graf @ 2018-10-17  6:47 UTC (permalink / raw)
  To: u-boot

Hi Bin,

On 17.10.18 01:08, Bin Meng wrote:
> Hi Alex,
> 
> On Tue, Oct 16, 2018 at 9:30 PM Alexander Graf <agraf@suse.de> wrote:
>>
>>> From: Heinrich Schuchardt <xypron.glpk@gmx.de>
>>>
>>> Currently the relocation of the EFI runtime on x86_64 fails. This renders
>>> the EFI subsystem unusable. The ELF relocation records for x86_64 contain
>>> an addend field.
>>>
>>> Always write the function name into error messages related to the EFI
>>> runtime relocation.
>>>
>>> Break an excessively long line.
>>>
>>> Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
>>> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
>>> Tested-by: Bin Meng <bmeng.cn@gmail.com>
>>> Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
>>
>> Thanks, applied to efi-2018.11
> 
> Thanks for taking this, but this patch series was assigned to me in
> patchwork :) This whole patch series needs to go in a batch to make
> sure qemu-x86_64 travis-ci pass, since you've already taken this
> single one, can you please let me know when you will send the PR? This
> series will have to wait after the efi PR is merged.

I don't think you need to wait. Just apply it to your queue as well and
git merge will sort the rest :).


Alex

^ permalink raw reply	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH v2 02/14] x86: Ensure no instruction sets of MMX/SSE are generated in 64-bit build
  2018-10-14  3:52 ` [U-Boot] [PATCH v2 02/14] x86: Ensure no instruction sets of MMX/SSE are generated in 64-bit build Bin Meng
@ 2018-10-19  3:26   ` Simon Glass
  0 siblings, 0 replies; 26+ messages in thread
From: Simon Glass @ 2018-10-19  3:26 UTC (permalink / raw)
  To: u-boot

On 13 October 2018 at 21:52, Bin Meng <bmeng.cn@gmail.com> wrote:
> With the '-march=core2' fix, it seems that we have some luck that
> the 64-bit U-Boot boots again. However if we examine the disassembly
> codes there are still SSE instructions elsewhere which means passing
> cpu type to GCC is not enough to prevent it from generating these
> instructions. A simple test case is doing a 'bootefi selftest' from
> the U-Boot shell and it leads to a reset too.
>
> The 'bootefi selftest' reset is even seen with the image created by
> the relative older GCC 5.4.0, the one shipped by Ubuntu 16.04.
>
> The reset actually originates from undefined instruction exception
> caused by these SSE instructions. To keep U-Boot as a bootloader as
> simple as possible, we don't want to handle such advanced SIMD stuff.
> To make sure no MMX/SSE instruction sets are generated, tell GCC not
> to do this. Note AVX is out of the question as CORE2 is old enough
> to support AVX yet.
>
> Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
> Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
> ---
>
> Changes in v2: None
>
>  arch/x86/config.mk | 1 +
>  1 file changed, 1 insertion(+)

Reviewed-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH v2 03/14] x86: doc: Mention qemu-x86_64 support
  2018-10-14  3:52 ` [U-Boot] [PATCH v2 03/14] x86: doc: Mention qemu-x86_64 support Bin Meng
@ 2018-10-19  3:26   ` Simon Glass
  0 siblings, 0 replies; 26+ messages in thread
From: Simon Glass @ 2018-10-19  3:26 UTC (permalink / raw)
  To: u-boot

On 13 October 2018 at 21:52, Bin Meng <bmeng.cn@gmail.com> wrote:
> Currently only 32-bit U-Boot for QEMU x86 is documented. Mention
> the 64-bit support.
>
> Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
> Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
>
> ---
>
> Changes in v2:
> - some rewording in the doc per Heinrich's review comments
>
>  doc/README.x86 | 19 +++++++++++++++++--
>  1 file changed, 17 insertions(+), 2 deletions(-)

Reviewed-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH v2 10/14] x86: tsc: Introduce config option for early timer frequency
  2018-10-14  3:52 ` [U-Boot] [PATCH v2 10/14] x86: tsc: Introduce config option for early timer frequency Bin Meng
@ 2018-10-19  3:26   ` Simon Glass
  0 siblings, 0 replies; 26+ messages in thread
From: Simon Glass @ 2018-10-19  3:26 UTC (permalink / raw)
  To: u-boot

On 13 October 2018 at 21:52, Bin Meng <bmeng.cn@gmail.com> wrote:
> So far the TSC timer driver supports trying hardware calibration first
> and using device tree as last resort for its running frequency as the
> normal timer.
>
> However when it is used as the early timer, it only supports hardware
> calibration and if it fails, the driver just panics. This introduces
> a new config option to specify the early timer frequency in MHz and
> it should be equal to the value described in the device tree.
>
> Without this patch, the travis-ci testing on QEMU x86_64 target fails
> each time after it finishes the 'bootefi selftest' as the test.py see
> an error was emitted on the console like this:
>
>   TSC frequency is ZERO
>   resetting ...
>   ### ERROR ### Please RESET the board ###
>
> It's strange that this error is consistently seen on the travis-ci
> machine, but only occasionally seen on my local machine (maybe 1 out
> of 10). Since QEMU x86_64 target enables BOOTSTAGE support which uses
> early timer, with this fix it should work without any failure.
>
> Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
>
> ---
>
> Changes in v2:
> - Change to use MHz instead of Hz for the early timer frequency
>
>  drivers/timer/Kconfig     | 10 ++++++++++
>  drivers/timer/tsc_timer.c |  6 +++---
>  2 files changed, 13 insertions(+), 3 deletions(-)

Reviewed-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH v2 11/14] x86: quark: Specify X86_TSC_TIMER_EARLY_FREQ
  2018-10-14  3:52 ` [U-Boot] [PATCH v2 11/14] x86: quark: Specify X86_TSC_TIMER_EARLY_FREQ Bin Meng
@ 2018-10-19  3:26   ` Simon Glass
  0 siblings, 0 replies; 26+ messages in thread
From: Simon Glass @ 2018-10-19  3:26 UTC (permalink / raw)
  To: u-boot

On 13 October 2018 at 21:52, Bin Meng <bmeng.cn@gmail.com> wrote:
> Specify X86_TSC_TIMER_EARLY_FREQ for Quark SoC so that TSC as
> the early timer can be supported.
>
> Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
>
> ---
>
> Changes in v2:
> - Change the config option value to 400 which indicates 400 MHz
>
>  arch/x86/cpu/quark/Kconfig | 4 ++++
>  1 file changed, 4 insertions(+)

Reviewed-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH v2 12/14] travis: Generate grub_x64.efi for qemu-x86_64
  2018-10-14  3:52 ` [U-Boot] [PATCH v2 12/14] travis: Generate grub_x64.efi for qemu-x86_64 Bin Meng
@ 2018-10-19  3:26   ` Simon Glass
  0 siblings, 0 replies; 26+ messages in thread
From: Simon Glass @ 2018-10-19  3:26 UTC (permalink / raw)
  To: u-boot

On 13 October 2018 at 21:52, Bin Meng <bmeng.cn@gmail.com> wrote:
> grub_x86.efi is for 32-bit QEMU. Generate the 64-bit one.
>
> Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
>
> ---
>
> Changes in v2:
> - new patch to generate grub_x64.efi for qemu-x86_64 for travis-ci
>
>  .travis.yml | 3 +++
>  1 file changed, 3 insertions(+)

Reviewed-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH v2 13/14] travis: Update to use QEMU 3.0.0 for testing
  2018-10-14  3:52 ` [U-Boot] [PATCH v2 13/14] travis: Update to use QEMU 3.0.0 for testing Bin Meng
@ 2018-10-19  3:26   ` Simon Glass
  0 siblings, 0 replies; 26+ messages in thread
From: Simon Glass @ 2018-10-19  3:26 UTC (permalink / raw)
  To: u-boot

On 13 October 2018 at 21:52, Bin Meng <bmeng.cn@gmail.com> wrote:
> This updates travis-ci to use QEMU 3.0.0 for testing.
>
> Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
>
> ---
>
> Changes in v2:
> - new patch to update to use QEMU 3.0.0 for travis-ci testing
>
>  .travis.yml | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Reviewed-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH v2 14/14] travis: Add qemu-x86_64 target for test.py testing
  2018-10-14  3:52 ` [U-Boot] [PATCH v2 14/14] travis: Add qemu-x86_64 target for test.py testing Bin Meng
@ 2018-10-19  3:26   ` Simon Glass
  0 siblings, 0 replies; 26+ messages in thread
From: Simon Glass @ 2018-10-19  3:26 UTC (permalink / raw)
  To: u-boot

On 13 October 2018 at 21:52, Bin Meng <bmeng.cn@gmail.com> wrote:
> Add qemu-x86_64 to the list of targets we use for test.py runs.
>
> Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
>
> ---
>
> Changes in v2: None
>
>  .travis.yml | 8 ++++++++
>  1 file changed, 8 insertions(+)

Reviewed-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply	[flat|nested] 26+ messages in thread

* [U-Boot] [PATCH v2 00/14] x86: Bring qemu-x86_64 target in travis-ci build/testing
  2018-10-14  3:52 [U-Boot] [PATCH v2 00/14] x86: Bring qemu-x86_64 target in travis-ci build/testing Bin Meng
                   ` (13 preceding siblings ...)
  2018-10-14  3:52 ` [U-Boot] [PATCH v2 14/14] travis: Add qemu-x86_64 target for test.py testing Bin Meng
@ 2018-10-22  9:53 ` Bin Meng
  14 siblings, 0 replies; 26+ messages in thread
From: Bin Meng @ 2018-10-22  9:53 UTC (permalink / raw)
  To: u-boot

On Sun, Oct 14, 2018 at 11:47 AM Bin Meng <bmeng.cn@gmail.com> wrote:
>
> At present the QEMU x86_64 target is broken here and there, for
> example with newer compiler it even does not boot. EFI loader does
> not work either.
>
> This series is a combination of Heinrich's EFI loader fixes and
> my fixes to QEMU x86_64 target. To enable qemu-x86_64 target in
> travis-ci for build and testing, uboot-test-hooks needs to be
> updated and the PR is sent.
>
> The series is available at u-boot-x86/qemu-working for testing.
>
> Changes in v2:
> - some rewording in the doc per Heinrich's review comments
> - Change to use MHz instead of Hz for the early timer frequency
> - Change the config option value to 400 which indicates 400 MHz
> - new patch to generate grub_x64.efi for qemu-x86_64 for travis-ci
> - new patch to update to use QEMU 3.0.0 for travis-ci testing
>
> Bin Meng (10):
>   x86: Specify -march=core2 to build 64-bit U-Boot proper
>   x86: Ensure no instruction sets of MMX/SSE are generated in 64-bit
>     build
>   x86: doc: Mention qemu-x86_64 support
>   x86: doc: Remove stale sections of 64-bit support
>   x86: Fix the mystery of printch() during 64-bit boot
>   x86: tsc: Introduce config option for early timer frequency
>   x86: quark: Specify X86_TSC_TIMER_EARLY_FREQ
>   travis: Generate grub_x64.efi for qemu-x86_64
>   travis: Update to use QEMU 3.0.0 for testing
>   travis: Add qemu-x86_64 target for test.py testing
>
> Heinrich Schuchardt (4):
>   x86: qemu: enable CONFIG_SPL_DM_RTC
>   x86: detect unsupported relocation types
>   x86: put global data pointer into the .data section
>   efi_loader: fix relocation on x86_64
>

Series applied to u-boot-x86, thanks!

^ permalink raw reply	[flat|nested] 26+ messages in thread

end of thread, other threads:[~2018-10-22  9:53 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-10-14  3:52 [U-Boot] [PATCH v2 00/14] x86: Bring qemu-x86_64 target in travis-ci build/testing Bin Meng
2018-10-14  3:52 ` [U-Boot] [PATCH v2 01/14] x86: Specify -march=core2 to build 64-bit U-Boot proper Bin Meng
2018-10-14  3:52 ` [U-Boot] [PATCH v2 02/14] x86: Ensure no instruction sets of MMX/SSE are generated in 64-bit build Bin Meng
2018-10-19  3:26   ` Simon Glass
2018-10-14  3:52 ` [U-Boot] [PATCH v2 03/14] x86: doc: Mention qemu-x86_64 support Bin Meng
2018-10-19  3:26   ` Simon Glass
2018-10-14  3:52 ` [U-Boot] [PATCH v2 04/14] x86: doc: Remove stale sections of 64-bit support Bin Meng
2018-10-14  3:52 ` [U-Boot] [PATCH v2 05/14] x86: qemu: enable CONFIG_SPL_DM_RTC Bin Meng
2018-10-14  3:52 ` [U-Boot] [PATCH v2 06/14] x86: detect unsupported relocation types Bin Meng
2018-10-14  3:52 ` [U-Boot] [PATCH v2 07/14] x86: put global data pointer into the .data section Bin Meng
2018-10-14  3:52 ` [U-Boot] [PATCH v2 08/14] efi_loader: fix relocation on x86_64 Bin Meng
2018-10-16 13:30   ` [U-Boot] [U-Boot, v2, " Alexander Graf
2018-10-16 23:08     ` Bin Meng
2018-10-17  6:47       ` Alexander Graf
2018-10-14  3:52 ` [U-Boot] [PATCH v2 09/14] x86: Fix the mystery of printch() during 64-bit boot Bin Meng
2018-10-14  3:52 ` [U-Boot] [PATCH v2 10/14] x86: tsc: Introduce config option for early timer frequency Bin Meng
2018-10-19  3:26   ` Simon Glass
2018-10-14  3:52 ` [U-Boot] [PATCH v2 11/14] x86: quark: Specify X86_TSC_TIMER_EARLY_FREQ Bin Meng
2018-10-19  3:26   ` Simon Glass
2018-10-14  3:52 ` [U-Boot] [PATCH v2 12/14] travis: Generate grub_x64.efi for qemu-x86_64 Bin Meng
2018-10-19  3:26   ` Simon Glass
2018-10-14  3:52 ` [U-Boot] [PATCH v2 13/14] travis: Update to use QEMU 3.0.0 for testing Bin Meng
2018-10-19  3:26   ` Simon Glass
2018-10-14  3:52 ` [U-Boot] [PATCH v2 14/14] travis: Add qemu-x86_64 target for test.py testing Bin Meng
2018-10-19  3:26   ` Simon Glass
2018-10-22  9:53 ` [U-Boot] [PATCH v2 00/14] x86: Bring qemu-x86_64 target in travis-ci build/testing Bin Meng

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.