All of lore.kernel.org
 help / color / mirror / Atom feed
From: Simon Glass <sjg@chromium.org>
To: U-Boot Mailing List <u-boot@lists.denx.de>
Cc: Bin Meng <bmeng.cn@gmail.com>, Simon Glass <sjg@chromium.org>,
	Andrew Goodbody <andrew.goodbody@linaro.org>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Angelo Dureghello <angelo@kernel-space.org>,
	Caleb Connolly <caleb.connolly@linaro.org>,
	Heinrich Schuchardt <xypron.glpk@gmx.de>,
	Ilias Apalodimas <ilias.apalodimas@linaro.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	Marek Vasut <marex@denx.de>,
	Mattijs Korpershoek <mkorpershoek@baylibre.com>,
	Nathan Barrett-Morrison <nathan.morrison@timesys.com>,
	Oliver Gaskell <Oliver.Gaskell@analog.com>,
	Patrick Rudolph <patrick.rudolph@9elements.com>,
	Robert Marko <robert.marko@sartura.hr>,
	Sam Protsenko <semen.protsenko@linaro.org>,
	Sumit Garg <sumit.garg@linaro.org>, Tom Rini <trini@konsulko.com>,
	qemu-devel@nongnu.org
Subject: [PATCH 00/18] x86: Improve operation under QEMU
Date: Tue, 12 Nov 2024 06:58:53 -0700	[thread overview]
Message-ID: <20241112135911.630586-1-sjg@chromium.org> (raw)

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



             reply	other threads:[~2024-11-12 13:59 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-11-12 13:58 Simon Glass [this message]
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

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20241112135911.630586-1-sjg@chromium.org \
    --to=sjg@chromium.org \
    --cc=Oliver.Gaskell@analog.com \
    --cc=andrew.goodbody@linaro.org \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=angelo@kernel-space.org \
    --cc=bmeng.cn@gmail.com \
    --cc=caleb.connolly@linaro.org \
    --cc=ilias.apalodimas@linaro.org \
    --cc=jiaxun.yang@flygoat.com \
    --cc=marex@denx.de \
    --cc=mkorpershoek@baylibre.com \
    --cc=nathan.morrison@timesys.com \
    --cc=patrick.rudolph@9elements.com \
    --cc=qemu-devel@nongnu.org \
    --cc=robert.marko@sartura.hr \
    --cc=semen.protsenko@linaro.org \
    --cc=sumit.garg@linaro.org \
    --cc=trini@konsulko.com \
    --cc=u-boot@lists.denx.de \
    --cc=xypron.glpk@gmx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.