On Fri, 5 Oct 2018 at 22:10, Gerd Hoffmann <kraxel@xxxxxxxxxx> wrote: > > Recent qemu (latest master branch, upcoming 3.1 release) got support > for EDID data. This patch adds guest driver support. > > EDID support in qemu is not (yet) enabled by default, so please use > 'qemu -device VGA,edid=on' for testing. The EDID never changes after boot? Is there plans to let it? > > Signed-off-by: Gerd Hoffmann <kraxel@xxxxxxxxxx> > --- > drivers/gpu/drm/bochs/bochs.h | 1 + > drivers/gpu/drm/bochs/bochs_hw.c | 38 ++++++++++++++++++++++++++++++++++++++ > drivers/gpu/drm/bochs/bochs_kms.c | 18 +++++++++++++++--- > 3 files changed, 54 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/bochs/bochs.h b/drivers/gpu/drm/bochs/bochs.h > index e7a69077e4..06b8166efa 100644 > --- a/drivers/gpu/drm/bochs/bochs.h > +++ b/drivers/gpu/drm/bochs/bochs.h > @@ -66,6 +66,7 @@ struct bochs_device { > u16 yres_virtual; > u32 stride; > u32 bpp; > + struct edid *edid; > > /* drm */ > struct drm_device *dev; > diff --git a/drivers/gpu/drm/bochs/bochs_hw.c b/drivers/gpu/drm/bochs/bochs_hw.c > index cacff73a64..6ce4cdac38 100644 > --- a/drivers/gpu/drm/bochs/bochs_hw.c > +++ b/drivers/gpu/drm/bochs/bochs_hw.c > @@ -69,6 +69,41 @@ static void bochs_hw_set_little_endian(struct bochs_device *bochs) > #define bochs_hw_set_native_endian(_b) bochs_hw_set_little_endian(_b) > #endif > > +static int bochs_load_edid(struct bochs_device *bochs) > +{ > + uint8_t *blob; > + size_t i, len; > + uint8_t num_exts; > + > + if (!bochs->mmio) > + return -1; > + > + if ((readb(bochs->mmio+0) != 0x00 || > + readb(bochs->mmio+1) != 0xff)) > + return -1; > + > + num_exts = readb(bochs->mmio + 126); > + len = EDID_LENGTH * (1 + num_exts); > + if (len > 0x400 /* vga register offset */) > + return -1; > + > + kfree(bochs->edid); > + bochs->edid = kmalloc(len, GFP_KERNEL); Don't you need to free it somewhere? Dave. _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/virtualization