On Wed, Dec 12, 2018 at 08:54:37AM +0000, Mark Cave-Ayland wrote:
> On 12/12/2018 08:32, Gerd Hoffmann wrote:
> 
> > On Fri, Dec 07, 2018 at 04:08:05PM +0000, Mark Cave-Ayland wrote:
> >> This is in preparation for some upcoming QEMU NDRV driver changes that pass
> >> display information from the host to the guest.
> > 
> >> -    pci_vga_init(pci_bus);
> >> +    dev = qdev_create(BUS(pci_bus), "VGA");
> >> +    qdev_prop_set_int32(dev, "addr", -1);
> >> +    qdev_prop_set_bit(dev, "edid", true);
> >> +    qdev_init_nofail(dev);
> > 
> > Hmm.  IMO you should not overwrite the device defaults here.
> > 
> > edid is off by default only because it is new and I'm conservative.
> > I want a release (or two) with it being available for user testing.
> > If no issues pop up flip it to default on.
> 
> Oh, okay. I already have some unreleased guest code that makes use of this, 
> so my
> questions would be: how can EDID be enabled from the command line for 
> in-built VGA
> devices,

"-global VGA.edid=on" should do.

> and how do I detect whether EDID support is present from the guest?

Check whenever the header is present.  The edid blob has a fixed 8 byte
header (00 FF FF FF FF FF FF 00).  The linux kernel driver is lazy and
checks the first two bytes only.

> Otherwise a guest driver that assumes it is always present and tries
> to read from that area of memory will crash.

Oh, reading should work no matter what.  You just don't find valid edid
data there if it is turned off.

cheers,
  Gerd


Reply via email to