Set custom EDID
Stefan Hertrampf
stefan.hertrampf at cyberus-technology.de
Fri Jul 10 08:10:36 UTC 2020
Hello,
we are developing a custom hypervisor backend for GVT which (from the
mediators perspective) behaves like XEN.
Currently, we are working with the Linux Kernel v5.4.41 and we are
trying to pass a custom EDID to a given vGPU.
The code flow roughly looks like this:
|vgpu = intel_gvt_ops->vgpu_create();|
|port = intel_vgpu_port(vgpu, port);||
|
|edid_data = intel_vgpu_edid_block(port);|
|memcpy(edid_data, custom_edid, EDID_SIZE);|
We are wondering how the |set_edid| callback of the |intel_gvt_mpt| is
meant to be used to receive the correct port where the virtual display
is attached. In v5.4.41 it seems, the default port is PORT_B and the
mediator only calls |set_edid| on certain platforms where it is a
different port. Is this correct?
Is there any other method to receive the correct port?
It seems that in v5.4.41 the mediator misses to call |set_edid| if the
platform |IS_COFFEELAKE|, which leads to a crash because we then assume
the default PORT_B where no memory is allocated for the EDID data.
Also in some later commits [1] the behavior is changed and the
|set_edid| callback is always called passing PORT_D. Does that mean that
the virtual display is always attached at PORT_D on newer versions of GVT?
Greetings,
Stefan
[1]
https://github.com/torvalds/linux/commit/0178f4ce3c3be4d9784c88ed512816eb653a717b
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/intel-gvt-dev/attachments/20200710/3a8d449e/attachment.htm>
More information about the intel-gvt-dev
mailing list