Re: [PATCH 1/2] vfio: add edid api for display (vgpu) devices.

From: Gerd Hoffmann
Date: Mon Sep 17 2018 - 06:14:05 EST


On Mon, Sep 17, 2018 at 05:15:50PM +0800, Zhenyu Wang wrote:
> On 2018.09.17 10:50:33 +0200, Gerd Hoffmann wrote:
> > > > +#define VFIO_DEVICE_INFO_CAP_EDID 1
> > > > +
> > > > +struct vfio_device_info_edid_cap {
> > > > + struct vfio_info_cap_header header;
> > > > + __u32 max_x; /* Max display height (zero == no limit) */
> > > > + __u32 max_y; /* Max display height (zero == no limit) */
> > > > +};
> > >
> > > As current virtual display for Intel vGPU is still emulating against real HW
> > > pipeline with same limitations, asked display developers that whether or not
> > > specific mode can work might still depend on current or future HW behavior.
> > > So could we add some hints on what kind of edid mode vfio device can operate?
> > > Some may support arbitrary modes, but some may only support standard modes.
> >
> > What kind of restrictions do we have here? Really to a fixed list of
> > standard modes?
>
> Restriction is still with HW differences, e.g for skl/kbl with ddi wrpll
> within min/max clock range which may generate any required frequency, but
> I've been told for bxt there're some gaps in clock range that could be
> generated.

Ok, handling min/max clock (pixel clock I assume) should be easy.
Ranges are more difficuilt ...

But shouldn't the guest driver be able to cope with modes which can't be
displayed? Monitors don't adjust edid to display driver capabilities
either, so the non-working modes are probably simply dropped from the
list of monitor modes ...

> > Oh, and btw: Seems the resolution restriction (to 1024x768 for the
> > smallest vgpu type) seems to not be enforced. Intentional?
>
> hmm, what do you mean here? Not enforce to have only one mode for vgpu type?
> Or can't change to other mode?

Using i915-GVTg_V5_8 type. Description says "resolution: 1024x768".
The edid data lists 640x480, 800x600, 1024x768.

I can set modes higher than 1024x768 though. Can create custom modes
(using xrandr --newmode), attach them to the output (xrandr --addmode)
and activate them (xrandr --mode).

cheers,
Gerd