[Qemu-devel] [PATCH v2 0/7] ramfb: simple boot framebuffer, no legacy vga

Gerd Hoffmann posted 7 patches 7 years, 7 months ago
Only 5 patches received!
There is a newer version of this series
hw/display/qxl.h              |   2 +
include/hw/display/ramfb.h    |   8 +++
include/hw/vfio/vfio-common.h |   2 +
hw/display/qxl.c              |  47 +++++++++++--
hw/display/ramfb-testdev.c    |  96 +++++++++++++++++++++++++++
hw/display/ramfb.c            |  95 +++++++++++++++++++++++++++
hw/display/virtio-ramfb.c     | 149 ++++++++++++++++++++++++++++++++++++++++++
hw/vfio/display.c             |  10 +++
hw/vfio/pci.c                 |  15 +++++
ui/spice-display.c            |   6 ++
hw/display/Makefile.objs      |   5 +-
pc-bios/OVMF-ramfb.fd         | Bin 0 -> 2097152 bytes
pc-bios/bios-256k.bin         | Bin 262144 -> 262144 bytes
pc-bios/bios.bin              | Bin 131072 -> 131072 bytes
pc-bios/vgabios-ramfb.bin     | Bin 0 -> 28160 bytes
15 files changed, 430 insertions(+), 5 deletions(-)
create mode 100644 include/hw/display/ramfb.h
create mode 100644 hw/display/ramfb-testdev.c
create mode 100644 hw/display/ramfb.c
create mode 100644 hw/display/virtio-ramfb.c
create mode 100644 pc-bios/OVMF-ramfb.fd
create mode 100644 pc-bios/vgabios-ramfb.bin
[Qemu-devel] [PATCH v2 0/7] ramfb: simple boot framebuffer, no legacy vga
Posted by Gerd Hoffmann 7 years, 7 months ago
  Hi,

Ok folks, here is a experimental patch series for a legacy free boot
framebuffer.  If you want play with it I recommend getting the bits from

	https://www.kraxel.org/cgit/qemu/log/?h=sirius/ramfb

because they come with an updated seabios and a new vgabios rom and an
experimental OVMF build.

Functional overview
-------------------

The boot framebuffer is expected to be configured by the firmware, so it
uses fw_cfg as interface.  Initialization goes as follows:

  (1) Check whenever etc/ramfb is present.
  (2) Allocate framebuffer from RAM.
  (3) Fill struct RAMFBCfg, write it to etc/ramfb.

Done.  You can write stuff to the framebuffer now, and it should appear
automagically on the screen.

Note that this isn't very efficient because it does a full display
update on each refresh.  No dirty tracking.  Dirty tracking would have
to be active for the whole ram slot, so that wouldn't be very efficient
either.  So it is *really* intended to be only active for a short time
at boot, before the guest loaded the drivers for the real display
hardware.

Firmware support -- seabios
---------------------------

seavgabios is able to emulate vga text mode on top of a framebuffer, for
coreboot native graphics initialialization.  Which works fine for
everything which writes text using the vgabios interface (basically
everyhing which works with sgabios).

So I hacked that up to work with ramfb.  Right now it's proof-of-concept
code with too much cut+paste, so it will clearly need a bunch of
cleanups if this approach turns out to be workable.  Look here:

	https://www.kraxe.org/cgit/seabios/log/?h=ramfb

Firmware support -- edk2
------------------------

There is a EFI driver too.  Likewise a hackish proof-of-concept thing,
clearly not in a mergeable state, but good enough for playing.  Note
that the build disables QemuVideoDxe and VirtoGpu drivers, so ramfb is
the only supported display.  Code is here:

	https://github.com/kraxel/edk2/commits/ramfb

Firmware blob is in pc-bios/OVMF-ramfb.fd, to be used with -bios.

So, how to play?
----------------

There is ramfb-testdev.  Standalone device, for testing purposes.  Also
can listen on vga ports and logs any access, so we can see the bad boys.
Use "qemu -vga none -device ramfb-testdev".  Add "vgalog=on" to watch
guests accessing vga registers.

There is virtio-ramfb.  Simliar to virtio-vga, but using ramfb instead of
adding vga compatibility.  Shows how you can wire up ramfb support to
some display device.  Unlike virtio-vga it should work fine on arm.  Use
"qemu -vga none -device virtio-ramfb" for this one.

Tried to add qxl-ramfb, for windows guest tests, but that doesn't work
yet.  Don't use, unless you want help debugging ;)

There is virtio-pci-ramfb, which provides boot display support to vgpu
devices.

In general using UEFI works better than BIOS, because guests don't
expect legacy vga being present then.

What works?
-----------

Both windows and linux UEFI guests handle the ramfb GOP just fine.

BIOS boot loaders for linux all use vgabios calls for text mode, so they
show up just fine.  Also ipxe, seabios itself of course.  So you can
boot up your linux guest.  vesafb works too.

What doesn't work?
------------------

vgacon (direct vga hardware access).  Linux boots just fine
nevertheless, the only effect is that you don't see any boot messages
until the drm driver loads.

Windows in BIOS mode.  Boot logo shows up just fine.  But at some point
windows does lots of vga register accesses (even though it sets the
video mode via vesa bios interface) and appears to be unhappy that
things don't work as expected because there is no vga hardware
emulation.

Known issues
------------

Handover from ramfb-backed efifb to the native linux driver is tricky.
Usually efifb gets kicked out when the native driver loads because of
overlapping ressources.  With efifb being in RAM instead of using a GPU
PCI bar this doesn't happen though, so you'll end up with two
framebuffer devices.

In case vgaarb classifies the GPU as primary display device fbcon will
switch all VTs over to the framebuffer device of the real GPU, so there
isn't a noticable difference.  Otherwise you'll end up with a
non-visible fbcon, because it continues to run on ramfb whereas qemu
switched over to the GPU because the native linux driver initialized the
display.

xorg/wayland will show up on the GPU in any case because they prefer drm
over fbdev, so they wouldn't run on efifb.

Not tested yet
--------------

ARM.

ramfb -> gpu handover with windows guests (only ramfb-testdev so far).

enjoy,
  Gerd

Gerd Hoffmann (7):
  [testing] update bios, add vgabios-ramfb
  [testing] add ovmf build with ramfb support
  hw/display: add ramfb, a simple boot framebuffer living in guest ram
  hw/display: add ramfb-testdev
  hw/display: add virtio-ramfb
  hw/vfio/display: add ramfb support
  [wip] hw/display: add qxl-ramfb

 hw/display/qxl.h              |   2 +
 include/hw/display/ramfb.h    |   8 +++
 include/hw/vfio/vfio-common.h |   2 +
 hw/display/qxl.c              |  47 +++++++++++--
 hw/display/ramfb-testdev.c    |  96 +++++++++++++++++++++++++++
 hw/display/ramfb.c            |  95 +++++++++++++++++++++++++++
 hw/display/virtio-ramfb.c     | 149 ++++++++++++++++++++++++++++++++++++++++++
 hw/vfio/display.c             |  10 +++
 hw/vfio/pci.c                 |  15 +++++
 ui/spice-display.c            |   6 ++
 hw/display/Makefile.objs      |   5 +-
 pc-bios/OVMF-ramfb.fd         | Bin 0 -> 2097152 bytes
 pc-bios/bios-256k.bin         | Bin 262144 -> 262144 bytes
 pc-bios/bios.bin              | Bin 131072 -> 131072 bytes
 pc-bios/vgabios-ramfb.bin     | Bin 0 -> 28160 bytes
 15 files changed, 430 insertions(+), 5 deletions(-)
 create mode 100644 include/hw/display/ramfb.h
 create mode 100644 hw/display/ramfb-testdev.c
 create mode 100644 hw/display/ramfb.c
 create mode 100644 hw/display/virtio-ramfb.c
 create mode 100644 pc-bios/OVMF-ramfb.fd
 create mode 100644 pc-bios/vgabios-ramfb.bin

-- 
2.9.3


Re: [Qemu-devel] [PATCH v2 0/7] ramfb: simple boot framebuffer, no legacy vga
Posted by Laszlo Ersek 7 years, 7 months ago
Adding Ard and Marc, and keeping the context undisturbed for his sake.
Comments at the bottom.

On 03/23/18 13:25, Gerd Hoffmann wrote:
>   Hi,
> 
> Ok folks, here is a experimental patch series for a legacy free boot
> framebuffer.  If you want play with it I recommend getting the bits from
> 
> 	https://www.kraxel.org/cgit/qemu/log/?h=sirius/ramfb
> 
> because they come with an updated seabios and a new vgabios rom and an
> experimental OVMF build.
> 
> Functional overview
> -------------------
> 
> The boot framebuffer is expected to be configured by the firmware, so it
> uses fw_cfg as interface.  Initialization goes as follows:
> 
>   (1) Check whenever etc/ramfb is present.
>   (2) Allocate framebuffer from RAM.
>   (3) Fill struct RAMFBCfg, write it to etc/ramfb.
> 
> Done.  You can write stuff to the framebuffer now, and it should appear
> automagically on the screen.
> 
> Note that this isn't very efficient because it does a full display
> update on each refresh.  No dirty tracking.  Dirty tracking would have
> to be active for the whole ram slot, so that wouldn't be very efficient
> either.  So it is *really* intended to be only active for a short time
> at boot, before the guest loaded the drivers for the real display
> hardware.
> 
> Firmware support -- seabios
> ---------------------------
> 
> seavgabios is able to emulate vga text mode on top of a framebuffer, for
> coreboot native graphics initialialization.  Which works fine for
> everything which writes text using the vgabios interface (basically
> everyhing which works with sgabios).
> 
> So I hacked that up to work with ramfb.  Right now it's proof-of-concept
> code with too much cut+paste, so it will clearly need a bunch of
> cleanups if this approach turns out to be workable.  Look here:
> 
> 	https://www.kraxe.org/cgit/seabios/log/?h=ramfb
> 
> Firmware support -- edk2
> ------------------------
> 
> There is a EFI driver too.  Likewise a hackish proof-of-concept thing,
> clearly not in a mergeable state, but good enough for playing.  Note
> that the build disables QemuVideoDxe and VirtoGpu drivers, so ramfb is
> the only supported display.  Code is here:
> 
> 	https://github.com/kraxel/edk2/commits/ramfb
> 
> Firmware blob is in pc-bios/OVMF-ramfb.fd, to be used with -bios.
> 
> So, how to play?
> ----------------
> 
> There is ramfb-testdev.  Standalone device, for testing purposes.  Also
> can listen on vga ports and logs any access, so we can see the bad boys.
> Use "qemu -vga none -device ramfb-testdev".  Add "vgalog=on" to watch
> guests accessing vga registers.
> 
> There is virtio-ramfb.  Simliar to virtio-vga, but using ramfb instead of
> adding vga compatibility.  Shows how you can wire up ramfb support to
> some display device.  Unlike virtio-vga it should work fine on arm.  Use
> "qemu -vga none -device virtio-ramfb" for this one.
> 
> Tried to add qxl-ramfb, for windows guest tests, but that doesn't work
> yet.  Don't use, unless you want help debugging ;)
> 
> There is virtio-pci-ramfb, which provides boot display support to vgpu
> devices.
> 
> In general using UEFI works better than BIOS, because guests don't
> expect legacy vga being present then.
> 
> What works?
> -----------
> 
> Both windows and linux UEFI guests handle the ramfb GOP just fine.
> 
> BIOS boot loaders for linux all use vgabios calls for text mode, so they
> show up just fine.  Also ipxe, seabios itself of course.  So you can
> boot up your linux guest.  vesafb works too.
> 
> What doesn't work?
> ------------------
> 
> vgacon (direct vga hardware access).  Linux boots just fine
> nevertheless, the only effect is that you don't see any boot messages
> until the drm driver loads.
> 
> Windows in BIOS mode.  Boot logo shows up just fine.  But at some point
> windows does lots of vga register accesses (even though it sets the
> video mode via vesa bios interface) and appears to be unhappy that
> things don't work as expected because there is no vga hardware
> emulation.
> 
> Known issues
> ------------
> 
> Handover from ramfb-backed efifb to the native linux driver is tricky.
> Usually efifb gets kicked out when the native driver loads because of
> overlapping ressources.  With efifb being in RAM instead of using a GPU
> PCI bar this doesn't happen though, so you'll end up with two
> framebuffer devices.
> 
> In case vgaarb classifies the GPU as primary display device fbcon will
> switch all VTs over to the framebuffer device of the real GPU, so there
> isn't a noticable difference.  Otherwise you'll end up with a
> non-visible fbcon, because it continues to run on ramfb whereas qemu
> switched over to the GPU because the native linux driver initialized the
> display.
> 
> xorg/wayland will show up on the GPU in any case because they prefer drm
> over fbdev, so they wouldn't run on efifb.
> 
> Not tested yet
> --------------
> 
> ARM.
> 
> ramfb -> gpu handover with windows guests (only ramfb-testdev so far).
> 
> enjoy,
>   Gerd
> 
> Gerd Hoffmann (7):
>   [testing] update bios, add vgabios-ramfb
>   [testing] add ovmf build with ramfb support
>   hw/display: add ramfb, a simple boot framebuffer living in guest ram
>   hw/display: add ramfb-testdev
>   hw/display: add virtio-ramfb
>   hw/vfio/display: add ramfb support
>   [wip] hw/display: add qxl-ramfb
> 
>  hw/display/qxl.h              |   2 +
>  include/hw/display/ramfb.h    |   8 +++
>  include/hw/vfio/vfio-common.h |   2 +
>  hw/display/qxl.c              |  47 +++++++++++--
>  hw/display/ramfb-testdev.c    |  96 +++++++++++++++++++++++++++
>  hw/display/ramfb.c            |  95 +++++++++++++++++++++++++++
>  hw/display/virtio-ramfb.c     | 149 ++++++++++++++++++++++++++++++++++++++++++
>  hw/vfio/display.c             |  10 +++
>  hw/vfio/pci.c                 |  15 +++++
>  ui/spice-display.c            |   6 ++
>  hw/display/Makefile.objs      |   5 +-
>  pc-bios/OVMF-ramfb.fd         | Bin 0 -> 2097152 bytes
>  pc-bios/bios-256k.bin         | Bin 262144 -> 262144 bytes
>  pc-bios/bios.bin              | Bin 131072 -> 131072 bytes
>  pc-bios/vgabios-ramfb.bin     | Bin 0 -> 28160 bytes
>  15 files changed, 430 insertions(+), 5 deletions(-)
>  create mode 100644 include/hw/display/ramfb.h
>  create mode 100644 hw/display/ramfb-testdev.c
>  create mode 100644 hw/display/ramfb.c
>  create mode 100644 hw/display/virtio-ramfb.c
>  create mode 100644 pc-bios/OVMF-ramfb.fd
>  create mode 100644 pc-bios/vgabios-ramfb.bin
> 

I believe the only point of this device model (and the associated guest
fw driver) is Windows-on-KVM/aarch64.

Would it be possible to make this stuff available for testing to the
guy(s) who reported
<https://bugzilla.tianocore.org/show_bug.cgi?id=785>? (Registration in
the TianoCore bugzilla is open, and once you log in, you can read email
addresses, and/or comment on BZs of course.)

My earlier comments from
<http://mid.mail-archive.com/4ea6f197-0aee-50d6-e53c-f98a6a8f999a@redhat.com>
apply, to the OVMF driver:

> We should make sure that any device model that combines ramfb with
> another PCI display device is not matched by the OVMF driver for that
> PCI display device. IOW, we should use separate PCI IDs or subsystem
> IDs (I don't recall the details off-hand). I'd like to avoid messing
> with the current device probing code in OVMF. It just wouldn't be nice
> if two independent drivers (e.g. VirtioGpuDxe and a supposed
> "RamFbDxe") bound the two interfaces at the same time.

For example, virtio-vga is already problematic like this (it could be
driven by both Virtio10Dxe+VirtioGpuDxe, and QemuVideoDxe), and it had
to be hacked around in Virtio10Dxe. So I'm strongly in favor of a device
model that clearly looks like one device and one device only to the full
set of edk2 drivers, without cross-driver hacks.

(I'm not saying the "combined" device models should be removed, just
that they should never be specified on the QEMU command line when the
guest runs OVMF or ArmVirtQemu. Unless, of course, the combined device
models had separate PCI-level identifiers from the original PCI display
devices, so the fw would never be tempted to bind the PCI-based drivers
to the combined devices.)

If Ard agrees that this device model & matching edk2 driver are a good
thing for Windows-on-KVM/aarch64, I can help clean up QemuRamfbDxe. (It
should be a DXE driver; it should start the device path with a VenHw()
node; the memory we allocate should be reserved memory, not runtime
memory etc...)

I vaguely remember that Ard argued against allocating (reserved) RAM for
such purposes, because it is lost for the OS even after the OS switches
to the native display driver.

BTW I recently re-read Marc's presentation on this:

http://mid.mail-archive.com/86muzgb181.wl-marc.zyngier@arm.com
http://events17.linuxfoundation.org/sites/events/files/slides/slides_10.pdf

Has anyone tried the following idea from those: "perform cache
maintenance from userspace in QEMU based on the dirty tracking bitmap
that it uses for the VGA memory"?


Anyway, again, personally I'm fine with this, and I'm willing to help
clean up the edk2 driver, if:
- Ard thinks it's a good thing for Windows-on-KVM/aarch64, and
- the device model stays out of the way of the existing edk2 display
drivers (if that is solved with QEMU cmdline restrictions spelled out in
documentation, that's fine).

Thanks
Laszlo

Re: [Qemu-devel] [PATCH v2 0/7] ramfb: simple boot framebuffer, no legacy vga
Posted by Gerd Hoffmann 7 years, 7 months ago
  Hi,

> I believe the only point of this device model (and the associated guest
> fw driver) is Windows-on-KVM/aarch64.

The other one is vgpu boot display.

And maybe killing vga emulation.  Well, at least be able to not use it
any more for UEFI guests.  It's so much crazy stuff in vga emulation
which isn't used by anyone these days (especially on uefi which doesn't
even need vga text mode any more), except by guys who try to find holes
in qemu for a host escape ...

> Would it be possible to make this stuff available for testing to the
> guy(s) who reported
> <https://bugzilla.tianocore.org/show_bug.cgi?id=785>? (Registration in
> the TianoCore bugzilla is open, and once you log in, you can read email
> addresses, and/or comment on BZs of course.)

I plan to look at arm, but that likely will happen after easter holidays
(I'm offline next week).

> > We should make sure that any device model that combines ramfb with
> > another PCI display device is not matched by the OVMF driver for that
> > PCI display device. IOW, we should use separate PCI IDs or subsystem
> > IDs (I don't recall the details off-hand). I'd like to avoid messing
> > with the current device probing code in OVMF. It just wouldn't be nice
> > if two independent drivers (e.g. VirtioGpuDxe and a supposed
> > "RamFbDxe") bound the two interfaces at the same time.
> 
> For example, virtio-vga is already problematic like this (it could be
> driven by both Virtio10Dxe+VirtioGpuDxe, and QemuVideoDxe), and it had
> to be hacked around in Virtio10Dxe. So I'm strongly in favor of a device
> model that clearly looks like one device and one device only to the full
> set of edk2 drivers, without cross-driver hacks.

Yep, that is one of the things which still need to be sorted.  The
approach of the experimental firmware builds to just disable the
QemuVideo and VirtioGpu drivers clearly doesn't fly for anything but the
initial testing.

Giving out different IDs to the ramfb-enabled device variants would be
one option.  Not fully sure whenever that works for virtio-gpu.  But
given that there are no legacy/transitional virtio-gpu devices I think
we are free to change the subsystem ID as we like.

cheers,
  Gerd


Re: [Qemu-devel] [PATCH v2 0/7] ramfb: simple boot framebuffer, no legacy vga
Posted by Laszlo Ersek 7 years, 7 months ago
On 03/23/18 15:51, Gerd Hoffmann wrote:
>   Hi,
> 
>> I believe the only point of this device model (and the associated guest
>> fw driver) is Windows-on-KVM/aarch64.
> 
> The other one is vgpu boot display.

Interesting. I know nearly nothing about vgpu, but I hoped it'd come
with its own UEFI GOP driver in the ROM BAR; similarly to assigned
physical GPUs. I thought the oprom would originate from the physical GPU
(with the help of the host kernel), out of which the vgpu was carved out.

Is that far-fetched?

Thanks
Laszlo

Re: [Qemu-devel] [PATCH v2 0/7] ramfb: simple boot framebuffer, no legacy vga
Posted by Gerd Hoffmann 7 years, 7 months ago
On Fri, Mar 23, 2018 at 04:12:21PM +0100, Laszlo Ersek wrote:
> On 03/23/18 15:51, Gerd Hoffmann wrote:
> >   Hi,
> > 
> >> I believe the only point of this device model (and the associated guest
> >> fw driver) is Windows-on-KVM/aarch64.
> > 
> > The other one is vgpu boot display.
> 
> Interesting. I know nearly nothing about vgpu, but I hoped it'd come
> with its own UEFI GOP driver in the ROM BAR; similarly to assigned
> physical GPUs.

Well.  They don't ...

And even for assigned GPUs it is a PITA.  For example the intel rom
appears to have the pci slot hardcoded.  You have to place the GPU in
00:02.0 (which it has on bare metal), otherwise the rom doesn't work.
I would be *very* surprised if the rom is able to handle vgpu devices
correctly.  Beside that it isn't easy to get the rom in the first place,
at least for intel, as it isn't stored in the rom bar but in the
firmware flash.

cheers,
  Gerd


Re: [Qemu-devel] [PATCH v2 0/7] ramfb: simple boot framebuffer, no legacy vga
Posted by Laszlo Ersek 7 years, 7 months ago
On 03/23/18 18:07, Gerd Hoffmann wrote:
> On Fri, Mar 23, 2018 at 04:12:21PM +0100, Laszlo Ersek wrote:
>> On 03/23/18 15:51, Gerd Hoffmann wrote:
>>>   Hi,
>>>
>>>> I believe the only point of this device model (and the associated guest
>>>> fw driver) is Windows-on-KVM/aarch64.
>>>
>>> The other one is vgpu boot display.
>>
>> Interesting. I know nearly nothing about vgpu, but I hoped it'd come
>> with its own UEFI GOP driver in the ROM BAR; similarly to assigned
>> physical GPUs.
> 
> Well.  They don't ...
> 
> And even for assigned GPUs it is a PITA.  For example the intel rom
> appears to have the pci slot hardcoded.  You have to place the GPU in
> 00:02.0 (which it has on bare metal), otherwise the rom doesn't work.
> I would be *very* surprised if the rom is able to handle vgpu devices
> correctly.  Beside that it isn't easy to get the rom in the first place,
> at least for intel, as it isn't stored in the rom bar but in the
> firmware flash.

Sure, IGD assignment is a different animal; I thought vgpu would follow
the discrete PCI card assignment case.

Anyway, I just wanted to educate myself on this; thanks!
Laszlo

Re: [Qemu-devel] [PATCH v2 0/7] ramfb: simple boot framebuffer, no legacy vga
Posted by Ard Biesheuvel 7 years, 7 months ago
Hi all,

On 23 March 2018 at 13:27, Laszlo Ersek <lersek@redhat.com> wrote:
> Adding Ard and Marc, and keeping the context undisturbed for his sake.
> Comments at the bottom.
>
> On 03/23/18 13:25, Gerd Hoffmann wrote:
>>   Hi,
>>
>> Ok folks, here is a experimental patch series for a legacy free boot
>> framebuffer.  If you want play with it I recommend getting the bits from
>>
>>       https://www.kraxel.org/cgit/qemu/log/?h=sirius/ramfb
>>
>> because they come with an updated seabios and a new vgabios rom and an
>> experimental OVMF build.
>>
>> Functional overview
>> -------------------
>>
>> The boot framebuffer is expected to be configured by the firmware, so it
>> uses fw_cfg as interface.  Initialization goes as follows:
>>
>>   (1) Check whenever etc/ramfb is present.
>>   (2) Allocate framebuffer from RAM.
>>   (3) Fill struct RAMFBCfg, write it to etc/ramfb.
>>
>> Done.  You can write stuff to the framebuffer now, and it should appear
>> automagically on the screen.
>>
>> Note that this isn't very efficient because it does a full display
>> update on each refresh.  No dirty tracking.  Dirty tracking would have
>> to be active for the whole ram slot, so that wouldn't be very efficient
>> either.  So it is *really* intended to be only active for a short time
>> at boot, before the guest loaded the drivers for the real display
>> hardware.
>>
>> Firmware support -- seabios
>> ---------------------------
>>
>> seavgabios is able to emulate vga text mode on top of a framebuffer, for
>> coreboot native graphics initialialization.  Which works fine for
>> everything which writes text using the vgabios interface (basically
>> everyhing which works with sgabios).
>>
>> So I hacked that up to work with ramfb.  Right now it's proof-of-concept
>> code with too much cut+paste, so it will clearly need a bunch of
>> cleanups if this approach turns out to be workable.  Look here:
>>
>>       https://www.kraxe.org/cgit/seabios/log/?h=ramfb
>>
>> Firmware support -- edk2
>> ------------------------
>>
>> There is a EFI driver too.  Likewise a hackish proof-of-concept thing,
>> clearly not in a mergeable state, but good enough for playing.  Note
>> that the build disables QemuVideoDxe and VirtoGpu drivers, so ramfb is
>> the only supported display.  Code is here:
>>
>>       https://github.com/kraxel/edk2/commits/ramfb
>>
>> Firmware blob is in pc-bios/OVMF-ramfb.fd, to be used with -bios.
>>
>> So, how to play?
>> ----------------
>>
>> There is ramfb-testdev.  Standalone device, for testing purposes.  Also
>> can listen on vga ports and logs any access, so we can see the bad boys.
>> Use "qemu -vga none -device ramfb-testdev".  Add "vgalog=on" to watch
>> guests accessing vga registers.
>>
>> There is virtio-ramfb.  Simliar to virtio-vga, but using ramfb instead of
>> adding vga compatibility.  Shows how you can wire up ramfb support to
>> some display device.  Unlike virtio-vga it should work fine on arm.  Use
>> "qemu -vga none -device virtio-ramfb" for this one.
>>
>> Tried to add qxl-ramfb, for windows guest tests, but that doesn't work
>> yet.  Don't use, unless you want help debugging ;)
>>
>> There is virtio-pci-ramfb, which provides boot display support to vgpu
>> devices.
>>
>> In general using UEFI works better than BIOS, because guests don't
>> expect legacy vga being present then.
>>
>> What works?
>> -----------
>>
>> Both windows and linux UEFI guests handle the ramfb GOP just fine.
>>
>> BIOS boot loaders for linux all use vgabios calls for text mode, so they
>> show up just fine.  Also ipxe, seabios itself of course.  So you can
>> boot up your linux guest.  vesafb works too.
>>
>> What doesn't work?
>> ------------------
>>
>> vgacon (direct vga hardware access).  Linux boots just fine
>> nevertheless, the only effect is that you don't see any boot messages
>> until the drm driver loads.
>>
>> Windows in BIOS mode.  Boot logo shows up just fine.  But at some point
>> windows does lots of vga register accesses (even though it sets the
>> video mode via vesa bios interface) and appears to be unhappy that
>> things don't work as expected because there is no vga hardware
>> emulation.
>>
>> Known issues
>> ------------
>>
>> Handover from ramfb-backed efifb to the native linux driver is tricky.
>> Usually efifb gets kicked out when the native driver loads because of
>> overlapping ressources.  With efifb being in RAM instead of using a GPU
>> PCI bar this doesn't happen though, so you'll end up with two
>> framebuffer devices.
>>

This exact issue occurs on actual hardware as well:

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1755304

so if anyone has a clue how to address it, I'm all ears.


>> In case vgaarb classifies the GPU as primary display device fbcon will
>> switch all VTs over to the framebuffer device of the real GPU, so there
>> isn't a noticable difference.  Otherwise you'll end up with a
>> non-visible fbcon, because it continues to run on ramfb whereas qemu
>> switched over to the GPU because the native linux driver initialized the
>> display.
>>
>> xorg/wayland will show up on the GPU in any case because they prefer drm
>> over fbdev, so they wouldn't run on efifb.
>>
>> Not tested yet
>> --------------
>>
>> ARM.
>>
>> ramfb -> gpu handover with windows guests (only ramfb-testdev so far).
>>
>> enjoy,
>>   Gerd
>>
>> Gerd Hoffmann (7):
>>   [testing] update bios, add vgabios-ramfb
>>   [testing] add ovmf build with ramfb support
>>   hw/display: add ramfb, a simple boot framebuffer living in guest ram
>>   hw/display: add ramfb-testdev
>>   hw/display: add virtio-ramfb
>>   hw/vfio/display: add ramfb support
>>   [wip] hw/display: add qxl-ramfb
>>
>>  hw/display/qxl.h              |   2 +
>>  include/hw/display/ramfb.h    |   8 +++
>>  include/hw/vfio/vfio-common.h |   2 +
>>  hw/display/qxl.c              |  47 +++++++++++--
>>  hw/display/ramfb-testdev.c    |  96 +++++++++++++++++++++++++++
>>  hw/display/ramfb.c            |  95 +++++++++++++++++++++++++++
>>  hw/display/virtio-ramfb.c     | 149 ++++++++++++++++++++++++++++++++++++++++++
>>  hw/vfio/display.c             |  10 +++
>>  hw/vfio/pci.c                 |  15 +++++
>>  ui/spice-display.c            |   6 ++
>>  hw/display/Makefile.objs      |   5 +-
>>  pc-bios/OVMF-ramfb.fd         | Bin 0 -> 2097152 bytes
>>  pc-bios/bios-256k.bin         | Bin 262144 -> 262144 bytes
>>  pc-bios/bios.bin              | Bin 131072 -> 131072 bytes
>>  pc-bios/vgabios-ramfb.bin     | Bin 0 -> 28160 bytes
>>  15 files changed, 430 insertions(+), 5 deletions(-)
>>  create mode 100644 include/hw/display/ramfb.h
>>  create mode 100644 hw/display/ramfb-testdev.c
>>  create mode 100644 hw/display/ramfb.c
>>  create mode 100644 hw/display/virtio-ramfb.c
>>  create mode 100644 pc-bios/OVMF-ramfb.fd
>>  create mode 100644 pc-bios/vgabios-ramfb.bin
>>
>
> I believe the only point of this device model (and the associated guest
> fw driver) is Windows-on-KVM/aarch64.
>
> Would it be possible to make this stuff available for testing to the
> guy(s) who reported
> <https://bugzilla.tianocore.org/show_bug.cgi?id=785>? (Registration in
> the TianoCore bugzilla is open, and once you log in, you can read email
> addresses, and/or comment on BZs of course.)
>
> My earlier comments from
> <http://mid.mail-archive.com/4ea6f197-0aee-50d6-e53c-f98a6a8f999a@redhat.com>
> apply, to the OVMF driver:
>
>> We should make sure that any device model that combines ramfb with
>> another PCI display device is not matched by the OVMF driver for that
>> PCI display device. IOW, we should use separate PCI IDs or subsystem
>> IDs (I don't recall the details off-hand). I'd like to avoid messing
>> with the current device probing code in OVMF. It just wouldn't be nice
>> if two independent drivers (e.g. VirtioGpuDxe and a supposed
>> "RamFbDxe") bound the two interfaces at the same time.
>
> For example, virtio-vga is already problematic like this (it could be
> driven by both Virtio10Dxe+VirtioGpuDxe, and QemuVideoDxe), and it had
> to be hacked around in Virtio10Dxe. So I'm strongly in favor of a device
> model that clearly looks like one device and one device only to the full
> set of edk2 drivers, without cross-driver hacks.
>
> (I'm not saying the "combined" device models should be removed, just
> that they should never be specified on the QEMU command line when the
> guest runs OVMF or ArmVirtQemu. Unless, of course, the combined device
> models had separate PCI-level identifiers from the original PCI display
> devices, so the fw would never be tempted to bind the PCI-based drivers
> to the combined devices.)
>
> If Ard agrees that this device model & matching edk2 driver are a good
> thing for Windows-on-KVM/aarch64, I can help clean up QemuRamfbDxe. (It
> should be a DXE driver; it should start the device path with a VenHw()
> node; the memory we allocate should be reserved memory, not runtime
> memory etc...)
>
> I vaguely remember that Ard argued against allocating (reserved) RAM for
> such purposes, because it is lost for the OS even after the OS switches
> to the native display driver.
>
> BTW I recently re-read Marc's presentation on this:
>
> http://mid.mail-archive.com/86muzgb181.wl-marc.zyngier@arm.com
> http://events17.linuxfoundation.org/sites/events/files/slides/slides_10.pdf
>
> Has anyone tried the following idea from those: "perform cache
> maintenance from userspace in QEMU based on the dirty tracking bitmap
> that it uses for the VGA memory"?
>
>
> Anyway, again, personally I'm fine with this, and I'm willing to help
> clean up the edk2 driver, if:
> - Ard thinks it's a good thing for Windows-on-KVM/aarch64, and
> - the device model stays out of the way of the existing edk2 display
> drivers (if that is solved with QEMU cmdline restrictions spelled out in
> documentation, that's fine).
>
> Thanks
> Laszlo

Re: [Qemu-devel] [PATCH v2 0/7] ramfb: simple boot framebuffer, no legacy vga
Posted by Gerd Hoffmann 7 years, 6 months ago
  Hi,

> > We should make sure that any device model that combines ramfb with
> > another PCI display device is not matched by the OVMF driver for that
> > PCI display device. IOW, we should use separate PCI IDs or subsystem
> > IDs (I don't recall the details off-hand). I'd like to avoid messing
> > with the current device probing code in OVMF. It just wouldn't be nice
> > if two independent drivers (e.g. VirtioGpuDxe and a supposed
> > "RamFbDxe") bound the two interfaces at the same time.
> 
> For example, virtio-vga is already problematic like this (it could be
> driven by both Virtio10Dxe+VirtioGpuDxe, and QemuVideoDxe), and it had
> to be hacked around in Virtio10Dxe. So I'm strongly in favor of a device
> model that clearly looks like one device and one device only to the full
> set of edk2 drivers, without cross-driver hacks.

Hmm, trying to figure what we should do here best ...

First, ramfb has absolutely no connection to the "combined" device,
other than that the combined devices have a single device only.  From
the guests point of view there is no difference between

  (a) qemu -device virtio-ramfb, and
  (b) qemu -device virtio-gpu-pci -device ramfb-testdev

On the host side the difference is that (a) is a single QemuConsole
which shows virtio-gpu-pci once activated and ramfb otherwise, and
(b) is two QemuConsoles, so you can see both virtio-gpu-pci and ramfb
side-by-side, for debugging purposes.

Second, one usecase is vgpu boot display.  When combining ramfb with a
(mdev) vgpu qemu can't modify the pci device.  Which I think pretty much
implies that adding a whitelist of pci devices to ramfb isn't going to
fly.  It would also have the drawback that -device ramfb-testdev will
not work.

So lets do it the other way around?  Blacklist devices which
QemuVideoDxe and VirtioGpuDxe should *not* bind to?  One way would be to
just use different pci (subsystem) ids.  Problem is that the guest os
driver might not bind too then.  So something else?  Add a pci
capability maybe?  Other ideas?

cheers,
  Gerd


Re: [Qemu-devel] [PATCH v2 0/7] ramfb: simple boot framebuffer, no legacy vga
Posted by Laszlo Ersek 7 years, 6 months ago
On 04/25/18 16:07, Gerd Hoffmann wrote:
>   Hi,
> 
>>> We should make sure that any device model that combines ramfb with
>>> another PCI display device is not matched by the OVMF driver for that
>>> PCI display device. IOW, we should use separate PCI IDs or subsystem
>>> IDs (I don't recall the details off-hand). I'd like to avoid messing
>>> with the current device probing code in OVMF. It just wouldn't be nice
>>> if two independent drivers (e.g. VirtioGpuDxe and a supposed
>>> "RamFbDxe") bound the two interfaces at the same time.
>>
>> For example, virtio-vga is already problematic like this (it could be
>> driven by both Virtio10Dxe+VirtioGpuDxe, and QemuVideoDxe), and it had
>> to be hacked around in Virtio10Dxe. So I'm strongly in favor of a device
>> model that clearly looks like one device and one device only to the full
>> set of edk2 drivers, without cross-driver hacks.
> 
> Hmm, trying to figure what we should do here best ...
> 
> First, ramfb has absolutely no connection to the "combined" device,
> other than that the combined devices have a single device only.

I think you mean "... single back-end only">

> From
> the guests point of view there is no difference between
> 
>   (a) qemu -device virtio-ramfb, and
>   (b) qemu -device virtio-gpu-pci -device ramfb-testdev
> 
> On the host side the difference is that (a) is a single QemuConsole
> which shows virtio-gpu-pci once activated and ramfb otherwise, and
> (b) is two QemuConsoles, so you can see both virtio-gpu-pci and ramfb
> side-by-side, for debugging purposes.

Exactly this "multiple frontends, single backend" connection is the
problem. In UEFI, it is possible to establish a priority order between
drivers that are all capable of binding the same controller ("handle"),
but especially with ramfb + another (PCI) video frontend, it's the
"handles" that are different. The "priority mechanism" would have no
idea that the drivers cannot peacefully coexist, i.e. it's clueless
about the (host side only) competition.

This is a problem because you display something on the one device, and
the screen still shows the other, and users complain.

To my understanding, in Linux, special cross-driver hacks exist for
this. For example, you boot with efifb (which is not a PCI device), and
once an actual PCI display driver is configured, it is considered
superior, and it supplants efifb.

On a tangent: on the host side, we already have to entirely separate I/O
consoles: some kind of graphics + emulated keyboard, plus serial. Those
are always displayed in parallel -- not in two GUI toolkit windows, mind
you, but it's never the case that one permanently "hides" the other. You
can switch between them in virt-manager. Or, connect to the emulated
serial port from a terminal window that is separate from the main
graphics window.

If this was the case with ramfb + something else (i.e., writing to ramfb
wouldn't be possible to "read back" for the other firmware driver, from
the PCI framebuffer, and one could switch back and forth between ramfb
display and PCI display on their desktop), then it would be OK for both
firmware drivers to bind. Point is, the two back-ends need not occupy
double the screen real estate; it would suffice if one didn't hide the
other permanently, and users could switch at will.

> Second, one usecase is vgpu boot display.  When combining ramfb with a
> (mdev) vgpu qemu can't modify the pci device.  Which I think pretty much
> implies that adding a whitelist of pci devices to ramfb isn't going to
> fly.  It would also have the drawback that -device ramfb-testdev will
> not work.
> 
> So lets do it the other way around?  Blacklist devices which
> QemuVideoDxe and VirtioGpuDxe should *not* bind to?

(It's a bit worse than that, actually -- VirtioGpuDxe does not consume
EFI_PCI_IO_PROTOCOL, it consumes VIRTIO_DEVICE_PROTOCOL.
VIRTIO_DEVICE_PROTOCOL is produced by the various virtio transport
drivers we have; in this particular case, that is Virtio10Dxe. And it is
Virtio10Dxe that consumes EFI_PCI_IO_PROTOCOL. So the mutual exclusion,
for virtio-vga anyway, happens between QemuVideoDxe and Virtio10Dxe, on
the controller handle that has a PciIo interface on it.)

> One way would be to
> just use different pci (subsystem) ids.  Problem is that the guest os
> driver might not bind too then.  So something else?  Add a pci
> capability maybe?  Other ideas?

I could imagine an OvmfPkg-specific PCI capability that said, "all PCI
drivers in OvmfPkg that could otherwise drive this device, ignore it --
another (platform) driver in OvmfPkg will pick it up instead". This
would resolve the competition between ramfb and whatever PCI device;
ramfb would always win. (We should add the capability check to OvmfPkg's
PCI drivers *no later* than introducing the ramfb driver though, so
there be no "window" where both kinds bound.)

(Wrt. updating the PCI ID lists of guest OS drivers -- I guess that too
could be viable, at least for Linux. I'm not really certain.)

Thanks
Laszlo

Re: [Qemu-devel] [PATCH v2 0/7] ramfb: simple boot framebuffer, no legacy vga
Posted by Gerd Hoffmann 7 years, 4 months ago
  Hi,

Resuming an old discussion ...

> > From
> > the guests point of view there is no difference between
> > 
> >   (a) qemu -device virtio-ramfb, and
> >   (b) qemu -device virtio-gpu-pci -device ramfb-testdev
> > 
> > On the host side the difference is that (a) is a single QemuConsole
> > which shows virtio-gpu-pci once activated and ramfb otherwise, and
> > (b) is two QemuConsoles, so you can see both virtio-gpu-pci and ramfb
> > side-by-side, for debugging purposes.
> 
> Exactly this "multiple frontends, single backend" connection is the
> problem. In UEFI, it is possible to establish a priority order between
> drivers that are all capable of binding the same controller ("handle"),
> but especially with ramfb + another (PCI) video frontend, it's the
> "handles" that are different. The "priority mechanism" would have no
> idea that the drivers cannot peacefully coexist, i.e. it's clueless
> about the (host side only) competition.

Well, virtio-vga and qxl-vga are very simliar.  They both are two-in-one
devices, with legacy vga frontend and native (qxl/virtio) frontend
sharing a single backend.  When the guest initialized the native
frontend the backend switches over from vga to native.

> This is a problem because you display something on the one device, and
> the screen still shows the other, and users complain.

In ovmf the console splitter handles this reasonable well, firmware and
bootloader simply show up on all outputs.  Got the ramfb driver to the
point where it joins the party properly.

The early boot phase (efifb active for linux) is more problematic.  Only
one of the GOPs is used, and it seems whatever GOP was registered first
gets used.  Try boot a fedora live iso with (a) "-device VGA -device
secondary-vga" and (b) "-device secondary-vga -device VGA".  efifb shows
up on the first device (probably because it also is first in pci scan
order).  fbcon shows up on the VGA device.  So for (b) the boot output
switches the display when bochs-drm.ko loads.

> To my understanding, in Linux, special cross-driver hacks exist for
> this. For example, you boot with efifb (which is not a PCI device), and
> once an actual PCI display driver is configured, it is considered
> superior, and it supplants efifb.

Linux does two things here.

First it checks ressource ranges, and if there is a conflict the
firmware framebuffer (efifb in ovmf case, but vesafb and others on !x86
platforms are handled simliar) the firmware framebuffer driver is
unregistered, only the native framebuffer driver remains active.

Second one device is picked as "primary".  Basically linux tries to
figure which device was activated by the firmware, to prefer that for
fbcon.  This is what makes linux switch over in case (b) above, because
linux prefers VGA display devices here (-device secondary-vga is
PCI_CLASS_DISPLAY_OTHER).

The logic to pick the "primary" display is arch-specific.

> On a tangent: on the host side, we already have to entirely separate I/O
> consoles: some kind of graphics + emulated keyboard, plus serial. Those
> are always displayed in parallel -- not in two GUI toolkit windows, mind
> you, but it's never the case that one permanently "hides" the other.

Well, try "View / Detach tab" in the gtk ui in case you want them side
by side in two windows.  SDL2 uses one window per console too.

> If this was the case with ramfb + something else (i.e., writing to ramfb
> wouldn't be possible to "read back" for the other firmware driver, from
> the PCI framebuffer, and one could switch back and forth between ramfb
> display and PCI display on their desktop), then it would be OK for both
> firmware drivers to bind. Point is, the two back-ends need not occupy
> double the screen real estate; it would suffice if one didn't hide the
> other permanently, and users could switch at will.

I think it makes sense for the *-ramfb devices behave simliar to the
existing *-vga devices, which are *not* user-switchable between
frontends.

Given ovmf has virtio-gpu drivers I'm not sure we need virtio-ramfb at
all.

> I could imagine an OvmfPkg-specific PCI capability that said, "all PCI
> drivers in OvmfPkg that could otherwise drive this device, ignore it --
> another (platform) driver in OvmfPkg will pick it up instead".

pci capability for ramfb could be useful (also for linux).  I'll keep it
in mind for now.

cheers,
  Gerd


Re: [Qemu-devel] [PATCH v2 0/7] ramfb: simple boot framebuffer, no legacy vga
Posted by Laszlo Ersek 7 years, 4 months ago
On 05/31/18 10:43, Gerd Hoffmann wrote:
>   Hi,
> 
> Resuming an old discussion ...
> 
>>> From
>>> the guests point of view there is no difference between
>>>
>>>   (a) qemu -device virtio-ramfb, and
>>>   (b) qemu -device virtio-gpu-pci -device ramfb-testdev
>>>
>>> On the host side the difference is that (a) is a single QemuConsole
>>> which shows virtio-gpu-pci once activated and ramfb otherwise, and
>>> (b) is two QemuConsoles, so you can see both virtio-gpu-pci and ramfb
>>> side-by-side, for debugging purposes.
>>
>> Exactly this "multiple frontends, single backend" connection is the
>> problem. In UEFI, it is possible to establish a priority order between
>> drivers that are all capable of binding the same controller ("handle"),
>> but especially with ramfb + another (PCI) video frontend, it's the
>> "handles" that are different. The "priority mechanism" would have no
>> idea that the drivers cannot peacefully coexist, i.e. it's clueless
>> about the (host side only) competition.
> 
> Well, virtio-vga and qxl-vga are very simliar.  They both are two-in-one
> devices, with legacy vga frontend and native (qxl/virtio) frontend
> sharing a single backend.  When the guest initialized the native
> frontend the backend switches over from vga to native.

True -- the difference is however, that the firmware doesn't even try to
drive the native QXL frontend; it's clueless about it.

IOW, in the (QXL, VGA) two-in-one device, the firmware only sees VGA,
because the firmware entirely (globally) ignores the QXL frontend; it
has no driver for native QXL.

We couldn't do that for virtio-gpu (we really wanted to drive it for
aarch64's sake), so the (virtio-gpu, VGA) two-in-one device required
special hacks, to prevent double-binding.

[snip]

>> I could imagine an OvmfPkg-specific PCI capability that said, "all PCI
>> drivers in OvmfPkg that could otherwise drive this device, ignore it --
>> another (platform) driver in OvmfPkg will pick it up instead".
> 
> pci capability for ramfb could be useful (also for linux).  I'll keep it
> in mind for now.

Please do. :)

When you brought up the PCI capability last time in this thread (and I
liked it), I realized that scanning for this new (likely "vendor")
capability would require me to code up the *third* PCI caplist scanning
loop in OVMF.

(Until that point we had implemented two such scans, one in the
virtio-1.0 driver, because virtio-1.0 uses vendor capabilities
liberally, and the other one in PciHotPlugInitDxe, which looks for the
PCI resource reservation hints on bridges, for hotplug purposes.)

After I had added the 2nd such scan (in PciHotPlugInitDxe), Jordan
suggested that we should rather use some helper library to save us the
manual fiddling with the capability headers and contents.

So, when you brought up PCI capabilities the last time in this thread,
the foreseeable "third scan" got stuck in my mind, and it ultimtely
spurred me to write that helper library, originally suggested by Jordan.
It's been upstream for a week now, and both Virtio10Dxe and
PciHotPlugInitDxe have been converted to use it (commit range
4b8552d794e7..5685a243b6f8). (Thank you Ard again for the review.)

If you add the above-suggested

  "hands off for platform drivers' sake"

capability in QEMU, I think we'll be able to locate and parse it cleanly
in the OVMF PCI drivers that need to honor it.

Thanks!
Laszlo

Re: [Qemu-devel] [PATCH v2 0/7] ramfb: simple boot framebuffer, no legacy vga
Posted by Gerd Hoffmann 7 years, 4 months ago
  Hi,

> >> I could imagine an OvmfPkg-specific PCI capability that said, "all PCI
> >> drivers in OvmfPkg that could otherwise drive this device, ignore it --
> >> another (platform) driver in OvmfPkg will pick it up instead".
> > 
> > pci capability for ramfb could be useful (also for linux).  I'll keep it
> > in mind for now.
> 
> Please do. :)

Hmm, well.  Virtio 1.0 uses vendor specific capabilities already to
define the regions, and they don't have a fixed field saying "this is
for virtio".  So adding another vendor specific capability for something
else on the same device is a bit problematic ...

cheers,
  Gerd


Re: [Qemu-devel] [PATCH v2 0/7] ramfb: simple boot framebuffer, no legacy vga
Posted by Laszlo Ersek 7 years, 4 months ago
On 06/05/18 13:06, Gerd Hoffmann wrote:
>   Hi,
> 
>>>> I could imagine an OvmfPkg-specific PCI capability that said, "all PCI
>>>> drivers in OvmfPkg that could otherwise drive this device, ignore it --
>>>> another (platform) driver in OvmfPkg will pick it up instead".
>>>
>>> pci capability for ramfb could be useful (also for linux).  I'll keep it
>>> in mind for now.
>>
>> Please do. :)
> 
> Hmm, well.  Virtio 1.0 uses vendor specific capabilities already to
> define the regions, and they don't have a fixed field saying "this is
> for virtio".  So adding another vendor specific capability for something
> else on the same device is a bit problematic ...

Can we invent a non-PCI method, e.g. fw_cfg, that tells QemuVideoDxe and
Virtio10Dxe not to bind some PCI S/B/D/Fs? Something like:

(1) When the UEFI driver (QemuVideoDxe or Virtio10Dxe) is loaded, it
looks up and caches the fw_cfg selector key (from the fw_cfg directory)
for the fw_cfg file that exposes what S/B/D/Fs not to bind.

(2) When the UEFI driver is asked by BDS (Boot Device Selection) to
state if it supports a specific controller handle, the driver (same as
now) first checks if a PciIo protocol interface is available on the
handle at all. If so, the driver selects the cached fw_cfg selector.

(3) When the key is selected for the first time ever, QEMU refreshes the
contents of the fw_cfg file, with the S/B/D/Fs assigned to the combined
devices. The ordering should be fine here, because in step (2), we first
open a PciIo protocol interface (before selecting the fw_cfg key), and
successfully opening a PciIo interface implies that PciBusDxe has
enumerated the PCI(e) hierarchies and has assigned bus numbers to
devices. The fw_cfg file would be padded at machine startup to a large
enough size so that the regenerated contents fit.

I think this is similar to how ACPI is regenerated in QEMU, to reflect
the resources assigned to PCI(e) devices in various AML aperture
objects. (IIRC.)

(4) The UEFI driver reads (caches) the selected fw_cfg file into a
memory buffer, calls PciIo->GetLocation(), then searches the buffer for
a S/B/D/F match. If there's a match, then the driver returns
EFI_UNSUPPORTED.

(5) Once the fw_cfg file is read (cached), it could be reused for
deciding about further controller binding attempts (involving that
driver), without any further fw_cfg traffic (in that driver anyway).

Thanks,
Laszlo

Re: [Qemu-devel] [PATCH v2 0/7] ramfb: simple boot framebuffer, no legacy vga
Posted by Gerd Hoffmann 7 years, 4 months ago
On Tue, Jun 05, 2018 at 02:07:27PM +0200, Laszlo Ersek wrote:
> On 06/05/18 13:06, Gerd Hoffmann wrote:
> >   Hi,
> > 
> >>>> I could imagine an OvmfPkg-specific PCI capability that said, "all PCI
> >>>> drivers in OvmfPkg that could otherwise drive this device, ignore it --
> >>>> another (platform) driver in OvmfPkg will pick it up instead".
> >>>
> >>> pci capability for ramfb could be useful (also for linux).  I'll keep it
> >>> in mind for now.
> >>
> >> Please do. :)
> > 
> > Hmm, well.  Virtio 1.0 uses vendor specific capabilities already to
> > define the regions, and they don't have a fixed field saying "this is
> > for virtio".  So adding another vendor specific capability for something
> > else on the same device is a bit problematic ...
> 
> Can we invent a non-PCI method, e.g. fw_cfg, that tells QemuVideoDxe and
> Virtio10Dxe not to bind some PCI S/B/D/Fs? Something like:

Well, from edk2 point of view Virtio10Dxe is the only problematic case
because there is a is a native driver.  For cirrus/stdvga a version with
ramfb is rather pointless.  A qxl-ramfb device might make sense, but
QemuVideoDxe would ignore such a device like it ignores qxl today as it
can only handle the vga mode of qxl-vga devices.

Also I'd prefer to provide informations (device foo has ramfb at <addr>)
not instructions (please ignore device foo).

Maybe we should for now just scratch the idea of an virtio-ramfb device.
Linux doesn't need it, and windows wouldn't use the virtio part of it so
a standalone ramfb device would work equally well.

cheers,
  Gerd


Re: [Qemu-devel] [PATCH v2 0/7] ramfb: simple boot framebuffer, no legacy vga
Posted by Laszlo Ersek 7 years, 4 months ago
On 06/05/18 15:16, Gerd Hoffmann wrote:
> On Tue, Jun 05, 2018 at 02:07:27PM +0200, Laszlo Ersek wrote:
>> On 06/05/18 13:06, Gerd Hoffmann wrote:
>>>   Hi,
>>>
>>>>>> I could imagine an OvmfPkg-specific PCI capability that said, "all PCI
>>>>>> drivers in OvmfPkg that could otherwise drive this device, ignore it --
>>>>>> another (platform) driver in OvmfPkg will pick it up instead".
>>>>>
>>>>> pci capability for ramfb could be useful (also for linux).  I'll keep it
>>>>> in mind for now.
>>>>
>>>> Please do. :)
>>>
>>> Hmm, well.  Virtio 1.0 uses vendor specific capabilities already to
>>> define the regions, and they don't have a fixed field saying "this is
>>> for virtio".  So adding another vendor specific capability for something
>>> else on the same device is a bit problematic ...
>>
>> Can we invent a non-PCI method, e.g. fw_cfg, that tells QemuVideoDxe and
>> Virtio10Dxe not to bind some PCI S/B/D/Fs? Something like:
> 
> Well, from edk2 point of view Virtio10Dxe is the only problematic case
> because there is a is a native driver.  For cirrus/stdvga a version with
> ramfb is rather pointless.

Good catch; thinko on my part!

> A qxl-ramfb device might make sense, but
> QemuVideoDxe would ignore such a device like it ignores qxl today as it
> can only handle the vga mode of qxl-vga devices.

Indeed.

> Also I'd prefer to provide informations (device foo has ramfb at <addr>)
> not instructions (please ignore device foo).
> 
> Maybe we should for now just scratch the idea of an virtio-ramfb device.
> Linux doesn't need it, and windows wouldn't use the virtio part of it so
> a standalone ramfb device would work equally well.

If that works for you, it works for me best!

Thanks!
Laszlo

Re: [Qemu-devel] [PATCH v2 0/7] ramfb: simple boot framebuffer, no legacy vga
Posted by Gerd Hoffmann 7 years, 4 months ago
  Hi,

> > Maybe we should for now just scratch the idea of an virtio-ramfb device.
> > Linux doesn't need it, and windows wouldn't use the virtio part of it so
> > a standalone ramfb device would work equally well.
> 
> If that works for you, it works for me best!


Ok, pushed updated branches.

qemu (including seabios + ovmf blobs):
  https://git.kraxel.org/cgit/qemu/log/?h=sirius/ramfb

edk2:
  https://github.com/kraxel/edk2/commits/ramfb

seabios:
  https://git.kraxel.org/cgit/seabios/log/?h=bochs


What is in there?

qemu:
   -device ramfb
      standalone ramfb device
   -device virtio-ramfb
      kept for now for testing, as discussed above no plans
      to merge this one for now.
   -device vfio-pci-ramfb
      boot display for vgpu devices.
   bochs-display got a vgabios.

seabios:
   support for bochs-display + rmafb added.  For both of them
   vga text mode (at vgabios call level) is emulated by seabios
   inside the guest.

edk2:
   QemuRamfbDxe driver, x86 wireup, incomplete arm wireup.


Notes on QemuRamfbDxe:

QemuRamfbDxe registers as VenHw device with a fresh generated uuid.  The
uuid should probably go to some header file, suggestions where to place
it best? 

QemuRamfbDxe registers a acpi devpath node for the gop protocol.  It's
appended to the VenHw path, but looks like that isn't enough to create
it as child node of the VenHw device (according to devtree outout).
Suggestions how to fix that?  Still this is good enough for consplitter
to accept the device.

The device path is added to the gPlatformConsole list, so consplitter
will pick up the ramfb device even though it isn't a pci display device.
The firmware display will show up on ramfb in addition to other display
devices (if any).  Is that approach ok?  If so I'll do that for armvirt
too.

thanks and happy playing,

  Gerd


Re: [Qemu-devel] [PATCH v2 0/7] ramfb: simple boot framebuffer, no legacy vga
Posted by Laszlo Ersek 7 years, 4 months ago
On 06/06/18 10:49, Gerd Hoffmann wrote:

> edk2:
>    QemuRamfbDxe driver, x86 wireup, incomplete arm wireup.

I'm looking at the patches very cursorily right now:

> Notes on QemuRamfbDxe:
>
> QemuRamfbDxe registers as VenHw device with a fresh generated uuid.
> The uuid should probably go to some header file, suggestions where to
> place it best?

(1) Under "OvmfPkg/Include/Guid/". The file "VirtioMmioTransport.h" is a
minimal example.

Please review commit 3765e030affb ("OvmfPkg: introduce
VIRTIO_MMIO_TRANSPORT_GUID", 2015-01-02) in its entirety though, as the
OvmfPkg.dec file should be modified as well.

> QemuRamfbDxe registers a acpi devpath node for the gop protocol.  It's
> appended to the VenHw path, but looks like that isn't enough to create
> it as child node of the VenHw device (according to devtree outout).
> Suggestions how to fix that?  Still this is good enough for
> consplitter to accept the device.

The UEFI Driver Writer's Guide, and the UEFI spec, treat this
extensively, but let's save ourselves some time:

(2) Please flip the MODULE_TYPE of the driver to DXE_DRIVER, from
UEFI_DRIVER. (This will also let you drop some of the other patches.)

(3) Try adding the following at the end of QemuRamfbDxe:

  VOID *DevicePath;

  ...

  gBS->OpenProtocol (
         RamfbHandle,
         &gEfiDevicePathProtocolGuid,
         &DevicePath,
         gImageHandle,
         GopHandle,
         EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER
         );

See also iPXE commit d6817943d187 ("[efi] Install the HII config access
protocol on a child of the SNP handle", 2016-07-08), especially the call
to efi_child_add().

> The device path is added to the gPlatformConsole list,

Good idea.

Two notes on that:

(4) Once you add the venhw GUID as a standalone header file (see (1)),
you won't need to duplicate the constants between patches. In
"gQemuRamfbDevicePath", you'll be able to use the EFI_GUID structure
initializer macro from the header file.

(5) Does it work if you replace ACPI_ADR_DISPLAY_TYPE_VGA with
ACPI_ADR_DISPLAY_TYPE_EXTERNAL_DIGITAL? QemuVideoDxe uses the former,
but VirtioGpuDxe uses the latter. Windows has some really obscure
requirements dependent on "ACPI display type", if I remember correctly,
and "external" looked the most robust when I last checked.

> so consplitter will pick up the ramfb device even though it isn't a
> pci display device. The firmware display will show up on ramfb in
> addition to other display devices (if any).  Is that approach ok?

Absolutely, that's what we want.

> If so I'll do that for armvirt too.

(6) No extra steps should be necessary for ArmVirtPkg; in the
PlatformBootManagerBeforeConsole() function
[ArmVirtPkg/Library/PlatformBootManagerLib/PlatformBm.c], we have

>   //
>   // Find all display class PCI devices (using the handles from the previous
>   // step), and connect them non-recursively. This should produce a number of
>   // child handles with GOPs on them.
>   //
>   FilterAndProcess (&gEfiPciIoProtocolGuid, IsPciDisplay, Connect);
>
>   //
>   // Now add the device path of all handles with GOP on them to ConOut and
>   // ErrOut.
>   //
>   FilterAndProcess (&gEfiGraphicsOutputProtocolGuid, NULL, AddOutput);

The first call does not cover the new device, but that's fine: the new
child handle with the GOP instance on it is produced by a DXE_DRIVER in
its entry point function -- that is, not by a UEFI driver that follows
the UEFI driver model --, hence it need not be connected by platform BDS
explicitly. By the time BDS is entered in the first place, the GOP will
exist already.

Therefore, the second call will simply pick up the devpath from the new
child (GOP) handle automatically, and add it to both ConOut and ErrOut.

Does it not work for you?

Thanks
Laszlo

Re: [Qemu-devel] [PATCH v2 0/7] ramfb: simple boot framebuffer, no legacy vga
Posted by Gerd Hoffmann 7 years, 4 months ago
  Hi,

> > QemuRamfbDxe registers as VenHw device with a fresh generated uuid.
> > The uuid should probably go to some header file, suggestions where to
> > place it best?
> 
> (1) Under "OvmfPkg/Include/Guid/". The file "VirtioMmioTransport.h" is a
> minimal example.

Ok.

> (4) Once you add the venhw GUID as a standalone header file (see (1)),
> you won't need to duplicate the constants between patches. In
> "gQemuRamfbDevicePath", you'll be able to use the EFI_GUID structure
> initializer macro from the header file.

Sure.

> (5) Does it work if you replace ACPI_ADR_DISPLAY_TYPE_VGA with
> ACPI_ADR_DISPLAY_TYPE_EXTERNAL_DIGITAL? QemuVideoDxe uses the former,
> but VirtioGpuDxe uses the latter. Windows has some really obscure
> requirements dependent on "ACPI display type", if I remember correctly,
> and "external" looked the most robust when I last checked.

I'll try.

> > so consplitter will pick up the ramfb device even though it isn't a
> > pci display device. The firmware display will show up on ramfb in
> > addition to other display devices (if any).  Is that approach ok?
> 
> Absolutely, that's what we want.

Cool.

> > If so I'll do that for armvirt too.
> 
> (6) No extra steps should be necessary for ArmVirtPkg; in the

> Therefore, the second call will simply pick up the devpath from the new
> child (GOP) handle automatically, and add it to both ConOut and ErrOut.
> 
> Does it not work for you?

Didn't test arm at all yet, wanted to get x86 into shape first.  I'll
have a look as soon as I've fixed all the things listed above on x86.

thanks,
  Gerd


[Qemu-devel] [PATCH v2 1/7] [testing] update bios, add vgabios-ramfb
Posted by Gerd Hoffmann 7 years, 7 months ago
source code: https://www.kraxe.org/cgit/seabios/log/?h=ramfb
---
 pc-bios/bios-256k.bin     | Bin 262144 -> 262144 bytes
 pc-bios/bios.bin          | Bin 131072 -> 131072 bytes
 pc-bios/vgabios-ramfb.bin | Bin 0 -> 28160 bytes
 3 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 pc-bios/vgabios-ramfb.bin

diff --git a/pc-bios/bios-256k.bin b/pc-bios/bios-256k.bin
index 0061dc99288bee61e60e31d1e24a52b97b0c5fb6..3d279529d6106c8577f4d205cc8d3c532e5f8431 100644
GIT binary patch
delta 45325
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

delta 44809
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
ZIc<0fZ%nDs)Wr1b-RFtk0|sDy_&-b)ql5qe

diff --git a/pc-bios/bios.bin b/pc-bios/bios.bin
index 69bb8635ae36e95f3b066ae16ff9d44e8a3665ba..7cb8849f44d37535bf6a07d780fbfd9aa0e3b69e 100644
GIT binary patch
delta 16825
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
F{{R9C$5j9T

delta 16793
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
HTKxY34O{Z@

diff --git a/pc-bios/vgabios-ramfb.bin b/pc-bios/vgabios-ramfb.bin
new file mode 100644
index 0000000000000000000000000000000000000000..131f96b70e56d089f7fd941b1b81bc0f1aeaaab1
GIT binary patch
literal 28160
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

literal 0
HcmV?d00001

-- 
2.9.3