All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/18] x86: Improve operation under QEMU
@ 2024-11-12 13:58 Simon Glass
  2024-11-12 13:58 ` [PATCH 01/18] scripts: Add a script for building and booting QEMU Simon Glass
                   ` (17 more replies)
  0 siblings, 18 replies; 32+ messages in thread
From: Simon Glass @ 2024-11-12 13:58 UTC (permalink / raw)
  To: U-Boot Mailing List
  Cc: Bin Meng, Simon Glass, Andrew Goodbody, Andy Shevchenko,
	Angelo Dureghello, Caleb Connolly, Heinrich Schuchardt,
	Ilias Apalodimas, Jiaxun Yang, Marek Vasut, Mattijs Korpershoek,
	Nathan Barrett-Morrison, Oliver Gaskell, Patrick Rudolph,
	Robert Marko, Sam Protsenko, Sumit Garg, Tom Rini, qemu-devel

U-Boot can start and boot an OS in both qemu-x86 and qemu-x86_64 but it
is not perfect.

With both builds, executing the VESA ROM causes an intermittent hang, at
least on some AMD CPUs.

With qemu-x86_64 kvm cannot be used since the move to long mode (64-bit)
is done in a way that works on real hardware but not with QEMU. This
means that performance is 4-5x slower than it could be, at least on my
CPU.

We can work around the first problem by using Bochs, which is anyway a
better choice than VESA for QEMU. But this results in the Ubuntu
installer failing to boot via EFI. It isn't clear whether this due to
a problem with the UEFI GOP, or something else. It hangs before the
Ubuntu logo appears.

So this series is unfinished. I thought it best to post what is here in
the hope that others can help work out the kinks.


Simon Glass (18):
  scripts: Add a script for building and booting QEMU
  x86: Expand x86_64 early memory
  RFC: x86: qemu: Switch to bochs display
  x86: qemu: Enable dhrystone
  x86: qemu: Avoid accessing BSS too early
  x86: Drop mpspec from the SPL build
  x86: Add some log categories
  x86: Drop use of CONFIG_REALMODE_DEBUG
  x86: Avoid clearing the VESA display
  x86: Add 64-bit entries to the GDT
  x86: Use defines for the cache flags
  x86: spl: Drop duplicate CPU init
  x86: Drop the message about features missing in 64-bit
  x86: Include stdbool.h in interrupt header
  x86: Tidy up the GDT size in start/16.S
  x86: Disable paging before changing to long mode
  x86: Use the same GDT when jumping to long mode
  x86: Use a simple jump into long mode

 MAINTAINERS                      |   8 ++
 arch/x86/cpu/i386/call64.S       |  35 +++----
 arch/x86/cpu/i386/cpu.c          |  18 +++-
 arch/x86/cpu/qemu/qemu.c         |  20 ++--
 arch/x86/cpu/start.S             |   4 +-
 arch/x86/cpu/start16.S           |   3 +-
 arch/x86/include/asm/interrupt.h |   1 +
 arch/x86/include/asm/processor.h |   5 +-
 arch/x86/lib/Makefile            |   2 +
 arch/x86/lib/bios.c              |  27 +++--
 arch/x86/lib/bios_interrupts.c   |   8 +-
 arch/x86/lib/i8259.c             |   2 +
 arch/x86/lib/spl.c               |   4 +-
 configs/qemu-x86_64_defconfig    |  10 +-
 configs/qemu-x86_defconfig       |   6 +-
 doc/board/emulation/index.rst    |   1 +
 doc/board/emulation/script.rst   |  61 +++++++++++
 scripts/build-qemu.sh            | 175 +++++++++++++++++++++++++++++++
 18 files changed, 331 insertions(+), 59 deletions(-)
 create mode 100644 doc/board/emulation/script.rst
 create mode 100755 scripts/build-qemu.sh

-- 
2.34.1



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

end of thread, other threads:[~2025-01-10 20:46 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-12 13:58 [PATCH 00/18] x86: Improve operation under QEMU Simon Glass
2024-11-12 13:58 ` [PATCH 01/18] scripts: Add a script for building and booting QEMU Simon Glass
2024-11-12 23:11   ` Tom Rini
2024-11-13  0:49   ` Heinrich Schuchardt
2024-11-13  0:54     ` Tom Rini
2024-11-15 14:21       ` Simon Glass
2024-11-15 15:14         ` Tom Rini
2024-12-07 23:39           ` Simon Glass
2025-01-06 14:55           ` Tom Rini
2025-01-09 12:36             ` Simon Glass
2025-01-09 14:56               ` Tom Rini
2025-01-10 13:39                 ` Simon Glass
2025-01-10 16:01                   ` Tom Rini
2025-01-10 19:50                     ` Simon Glass
2025-01-10 20:46                       ` Tom Rini
2024-11-12 13:58 ` [PATCH 02/18] x86: Expand x86_64 early memory Simon Glass
2024-11-12 13:58 ` [PATCH 03/18] RFC: x86: qemu: Switch to bochs display Simon Glass
2024-11-12 13:58 ` [PATCH 04/18] x86: qemu: Enable dhrystone Simon Glass
2024-11-12 13:58 ` [PATCH 05/18] x86: qemu: Avoid accessing BSS too early Simon Glass
2024-11-12 13:58 ` [PATCH 06/18] x86: Drop mpspec from the SPL build Simon Glass
2024-11-12 13:59 ` [PATCH 07/18] x86: Add some log categories Simon Glass
2024-11-12 13:59 ` [PATCH 08/18] x86: Drop use of CONFIG_REALMODE_DEBUG Simon Glass
2024-11-12 13:59 ` [PATCH 09/18] x86: Avoid clearing the VESA display Simon Glass
2024-11-12 13:59 ` [PATCH 10/18] x86: Add 64-bit entries to the GDT Simon Glass
2024-11-12 13:59 ` [PATCH 11/18] x86: Use defines for the cache flags Simon Glass
2024-11-12 13:59 ` [PATCH 12/18] x86: spl: Drop duplicate CPU init Simon Glass
2024-11-12 13:59 ` [PATCH 13/18] x86: Drop the message about features missing in 64-bit Simon Glass
2024-11-12 13:59 ` [PATCH 14/18] x86: Include stdbool.h in interrupt header Simon Glass
2024-11-12 13:59 ` [PATCH 15/18] x86: Tidy up the GDT size in start/16.S Simon Glass
2024-11-12 13:59 ` [PATCH 16/18] x86: Disable paging before changing to long mode Simon Glass
2024-11-12 13:59 ` [PATCH 17/18] x86: Use the same GDT when jumping " Simon Glass
2024-11-12 13:59 ` [PATCH 18/18] x86: Use a simple jump into " Simon Glass

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.