public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
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>

      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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox