From: Tom Rini <trini@konsulko.com>
To: u-boot@lists.denx.de
Subject: [PATCH v3 5/5] arm: qemu: override flash accessors to use virtualizable instructions
Date: Wed, 29 Jul 2020 09:44:02 -0400 [thread overview]
Message-ID: <20200729134402.GS6965@bill-the-cat> (raw)
In-Reply-To: <20200707100711.7446-6-ardb@kernel.org>
On Tue, Jul 07, 2020 at 12:07:11PM +0200, Ard Biesheuvel wrote:
> Some instructions in the ARM ISA have multiple output registers, such
> as ldrd/ldp (load pair), where two registers are loaded from memory,
> but also ldr with indexing, where the memory base register is incremented
> as well when the value is loaded to the destination register.
>
> MMIO emulation under KVM is based on using the architecturally defined
> syndrome information that is provided when an exception is taken to the
> hypervisor. This syndrome information describes whether the instruction
> that triggered the exception is a load or a store, what the faulting
> address was, and which register was the destination register.
>
> This syndrome information can only describe one destination register, and
> when the trapping instruction is one with multiple outputs, KVM throws an
> error like
>
> kvm [615929]: Data abort outside memslots with no valid syndrome info
>
> on the host and kills the QEMU process with the following error:
>
> U-Boot 2020.07-rc3-00208-g88bd5b179360-dirty (Jun 06 2020 - 11:59:22 +0200)
>
> DRAM: 1 GiB
> Flash: error: kvm run failed Function not implemented
> R00=00000001 R01=00000040 R02=7ee0ce20 R03=00000000
> R04=7ffd9eec R05=00000004 R06=7ffda3f8 R07=00000055
> R08=7ffd9eec R09=7ef0ded0 R10=7ee0ce20 R11=00000000
> R12=00000004 R13=7ee0cdf8 R14=00000000 R15=7ff72d08
> PSR=200001d3 --C- A svc32
> QEMU: Terminated
>
> This means that, in order to run U-Boot in QEMU under KVM, we need to
> avoid such instructions when accessing emulated devices. For the flash
> in particular, which is a hybrid between a ROM (backed by a read-only
> KVM memslot) when in array mode, and an emulated MMIO device (when in
> write mode), we need to take care to only use instructions that KVM can
> deal with when they trap.
>
> So override the flash read accessors that are used when running on QEMU
> under KVM. Note that the the 64-bit wide read and write accessors have
> been omitted: they are never used when running under QEMU given that it
> does not emulate CFI flash that supports it.
>
> Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
> Reviewed-by: Andre Przywara <andre.przywara@arm.com>
Applied to u-boot/master, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20200729/1f52fbdf/attachment.sig>
prev parent reply other threads:[~2020-07-29 13:44 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-07 10:07 [PATCH v3 0/5] Fixes for running U-boot under QEMU/KVM Ard Biesheuvel
2020-07-07 10:07 ` [PATCH v3 1/5] arm: enable allocate-on-read for LPAE's DCACHE_WRITEBACK/_WRITETHROUGH Ard Biesheuvel
2020-07-07 12:03 ` André Przywara
2020-07-29 13:43 ` Tom Rini
2020-07-07 10:07 ` [PATCH v3 2/5] arm: qemu: enable LPAE on 32-bit Ard Biesheuvel
2020-07-29 13:43 ` Tom Rini
2020-07-07 10:07 ` [PATCH v3 3/5] arm: qemu: implement enable_caches() Ard Biesheuvel
2020-07-07 10:51 ` Heinrich Schuchardt
2020-07-07 12:58 ` André Przywara
2020-07-29 13:43 ` Tom Rini
2020-07-07 10:07 ` [PATCH v3 4/5] arm: qemu: disable the EFI workaround for older GRUB Ard Biesheuvel
2020-07-29 13:43 ` Tom Rini
2020-07-07 10:07 ` [PATCH v3 5/5] arm: qemu: override flash accessors to use virtualizable instructions Ard Biesheuvel
2020-07-07 14:26 ` André Przywara
2020-07-29 13:44 ` Tom Rini [this message]
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=20200729134402.GS6965@bill-the-cat \
--to=trini@konsulko.com \
--cc=u-boot@lists.denx.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.