On Mon, Jun 4, 2018 at 8:11 PM Laszlo Ersek <ler...@redhat.com> wrote:
>
> Hi!
>
> Apologies if this isn't the right place for asking. For the problem
> statement, I'll simply steal Ard's writeup [1]:
>
> > KVM on ARM refuses to decode load/store instructions used to perform
> > I/O to emulated devices, and instead relies on the exception syndrome
> > information to describe the operand register, access size, etc. This
> > is only possible for instructions that have a single input/output
> > register (as opposed to ones that increment the offset register, or
> > load/store pair instructions, etc). Otherwise, QEMU crashes with the
> > following error
> >
> >   error: kvm run failed Function not implemented
> >   [...]
> >   QEMU: Terminated
> >
> > and KVM produces a warning such as the following in the kernel log
> >
> >   kvm [17646]: load/store instruction decoding not implemented

This looks like a kvm/qemu issue to me.  Whatever that exception syndrome
thing is, it surely has a pointer to the offending instruction it could decode?

> >
> > GCC with LTO enabled will emit such instructions for Mmio[Read|Write]
> > invocations performed in a loop, so we need to disable LTO [...]
>
> We have a Red Hat Bugzilla about the (very likely) same issue [2].
>
> Earlier, we had to work around the same on AArch64 too [3].
>
> Would it be possible to introduce a dedicated -mXXX option, for ARM and
> AArch64, that disabled the generation of such multi-operand
> instructions?
>
> I note there are several similar instructions (for other architectures):
> * -mno-multiple (ppc)
> * -mno-fused-madd (ia64)
> * -mno-mmx and a lot of friends (x86)
>
> Obviously, if the feature request is deemed justified, we should provide
> the exact family of instructions to disable. I'll leave that to others
> on the CC list with more ARM/AArch64 expertise; I just wanted to get
> this thread started. (Sorry if the option is already being requested
> elsewhere; I admit I didn't search the GCC bugzilla.)
>
> Thanks!
> Laszlo
>
> [1] https://lists.01.org/pipermail/edk2-devel/2018-June/025476.html
> [2] https://bugzilla.redhat.com/show_bug.cgi?id=1576593
> [3] https://github.com/tianocore/edk2/commit/2efbf710e27a

Reply via email to