Le 5/18/20 à 7:03 AM, Markus Armbruster a écrit :
xlnx_dp_init() creates these two devices, but they're never realized.
Affects machine xlnx-zcu102.
I wonder how this ever worked. If the "device becomes real only on
realize" thing actually works, then we've always been missing these
two devices, yet nobody noticed.
I can't tell, but it used to work back in 2016 since these devices were required
to have a working framebuffer.
Fix by realizing them in xlnx_dp_realize().
Fixes: 58ac482a66de09a7590f705e53fc6a3fb8a055e8
Cc: KONRAD Frederic <fred.kon...@greensocs.com>
Cc: Alistair Francis <alist...@alistair23.me>
Cc: "Edgar E. Iglesias" <edgar.igles...@gmail.com>
Cc: Peter Maydell <peter.mayd...@linaro.org>
Cc: qemu-...@nongnu.org
Signed-off-by: Markus Armbruster <arm...@redhat.com>
---
hw/display/xlnx_dp.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/hw/display/xlnx_dp.c b/hw/display/xlnx_dp.c
index 3e5fb44e06..bdc229a51e 100644
--- a/hw/display/xlnx_dp.c
+++ b/hw/display/xlnx_dp.c
@@ -1264,9 +1264,13 @@ static void xlnx_dp_realize(DeviceState *dev, Error
**errp)
DisplaySurface *surface;
struct audsettings as;
+ qdev_init_nofail(DEVICE(s->aux_bus->bridge));
+
qdev_init_nofail(DEVICE(s->dpcd));
aux_map_slave(AUX_SLAVE(s->dpcd), 0x0000);
+ qdev_init_nofail(DEVICE(s->edid));
+
s->console = graphic_console_init(dev, 0, &xlnx_dp_gfx_ops, s);
surface = qemu_console_surface(s->console);
xlnx_dpdma_set_host_data_location(s->dpdma, DP_GRAPHIC_DMA_CHANNEL,