From: Alexander Graf <agraf@suse.de>
To: Laszlo Ersek <lersek@redhat.com>,
Christoffer Dall <christoffer.dall@linaro.org>,
Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Marc Zyngier <marc.zyngier@arm.com>,
Catalin Marinas <catalin.marinas@arm.com>,
"kvmarm@lists.cs.columbia.edu" <kvmarm@lists.cs.columbia.edu>
Subject: Re: issues with emulated PCI MMIO backed by host memory under KVM
Date: Tue, 28 Jun 2016 17:23:32 +0200 [thread overview]
Message-ID: <57729674.5010308@suse.de> (raw)
In-Reply-To: <52f1a2e2-63c9-a5d2-9b78-7264923e04c4@redhat.com>
On 06/28/2016 12:55 PM, Laszlo Ersek wrote:
> On 06/27/16 12:34, Christoffer Dall wrote:
>> On Mon, Jun 27, 2016 at 11:47:18AM +0200, Ard Biesheuvel wrote:
>>> So first of all, let me reiterate that I could only find a single
>>> instance in QEMU where a PCI MMIO region is backed by host memory,
>>> which is vga-pci.c. I wonder of there are any other occurrences, but
>>> if there aren't any, it makes much more sense to prohibit PCI BARs
>>> backed by host memory rather than spend a lot of effort working around
>>> it.
>> Right, ok. So Marc's point during his KVM Forum talk was basically,
>> don't use the legacy VGA adapter on ARM and use virtio graphics, right?
> The EFI GOP (Graphics Output Protocol) abstraction provides two ways for
> UEFI applications to access the display, and one way for a runtime OS to
> inherit the display hardware from the firmware (without OS native drivers).
>
> (a) For UEFI apps:
> - direct framebuffer access
> - Blt() (block transfer) member function
>
> (b) For runtime OS:
> - direct framebuffer access ("efifb" in Linux)
>
> Virtio-gpu lacks a linear framebuffer by design. Therefore the above
> methods are reduced to the following:
>
> (c) UEFI apps can access virtio-gpu with:
> - GOP.Blt() member function only
>
> (d) The runtime guest OS can access the virtio-gpu device as-inherited
> from the firmware (i.e., without native drivers) with:
> - n/a.
>
> Given that we expect all aarch64 OSes to include native virtio-gpu
> drivers on their install media, (d) is actually not a problem. Whenever
> the OS kernel runs, we except to have no need for "efifb", ever. So
> that's good.
>
> The problem is (c). UEFI boot loaders would have to be taught to call
> GOP.Blt() manually, whenever they need to display something. I'm not
> sure about grub2's current status, but it is free software, so in theory
> it should be doable. However, UEFI windows boot loaders are proprietary
Yes, grub2 already ignores the frame buffer target address and instead
uses Blt() operations only.
> *and* they require direct framebuffer access (on x86 at least); they
> don't work with Blt()-only. (I found some Microsoft presentations about
> this earlier.)
>
> So, virtio-gpu is an almost universal solution for the problem, but not
> entirely. For any given GOP, offering Blt() *only* (i.e., not exposing a
> linear framebuffer) conforms to the UEFI spec, but some boot loaders are
> known to present further requirements (on x86 anyway).
Well, I'm perfectly happy in ignoring Windows on KVM for now, if that
gets us working, smooth Linux guest support :).
Alex
next prev parent reply other threads:[~2016-06-28 15:18 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-24 14:04 issues with emulated PCI MMIO backed by host memory under KVM Ard Biesheuvel
2016-06-24 14:57 ` Andrew Jones
2016-06-27 8:17 ` Marc Zyngier
2016-06-24 18:16 ` Ard Biesheuvel
2016-06-25 7:15 ` Alexander Graf
2016-06-25 7:19 ` Alexander Graf
2016-06-27 8:11 ` Marc Zyngier
2016-06-27 9:16 ` Christoffer Dall
2016-06-27 9:47 ` Ard Biesheuvel
2016-06-27 10:34 ` Christoffer Dall
2016-06-27 12:30 ` Ard Biesheuvel
2016-06-27 13:35 ` Christoffer Dall
2016-06-27 13:57 ` Ard Biesheuvel
2016-06-27 14:29 ` Alexander Graf
2016-06-28 11:02 ` Laszlo Ersek
2016-06-28 10:04 ` Christoffer Dall
2016-06-28 11:06 ` Laszlo Ersek
2016-06-28 12:20 ` Christoffer Dall
2016-06-28 13:10 ` Catalin Marinas
2016-06-28 13:19 ` Ard Biesheuvel
2016-06-28 13:25 ` Catalin Marinas
2016-06-28 14:02 ` Andrew Jones
2016-06-27 14:24 ` Alexander Graf
2016-06-28 10:55 ` Laszlo Ersek
2016-06-28 13:14 ` Ard Biesheuvel
2016-06-28 13:32 ` Laszlo Ersek
2016-06-29 7:12 ` Gerd Hoffmann
2016-06-28 15:23 ` Alexander Graf [this message]
2016-06-27 13:15 ` Peter Maydell
2016-06-27 13:49 ` Mark Rutland
2016-06-27 14:10 ` Peter Maydell
2016-06-28 10:05 ` Christoffer Dall
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=57729674.5010308@suse.de \
--to=agraf@suse.de \
--cc=ard.biesheuvel@linaro.org \
--cc=catalin.marinas@arm.com \
--cc=christoffer.dall@linaro.org \
--cc=kvmarm@lists.cs.columbia.edu \
--cc=lersek@redhat.com \
--cc=marc.zyngier@arm.com \
/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