]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/i915/gvt: stop using drm_edid_block_valid()
authorJani Nikula <jani.nikula@intel.com>
Mon, 12 Aug 2024 14:28:48 +0000 (17:28 +0300)
committerJani Nikula <jani.nikula@intel.com>
Wed, 14 Aug 2024 09:16:22 +0000 (12:16 +0300)
We'll want to stop drm_edid_block_valid() usage. KVMGT is the last
user. Replace with drm_edid_valid(), which unfortunately requires an
allocated drm_edid. However, on the plus side, this would be required to
handle the TODO comment about EDID extension block support.

Acked-by: Zhi Wang <zhiwang@kernel.rog>
Reviewed-by: Zhenyu Wang <zhenyuw@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240812142849.1588006-1-jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/gvt/kvmgt.c

index 38830818c12020466900694b0b70ff6611c83c54..ca0fb126b02d6544ea45c5e4a49ce1c9c7c3d48d 100644 (file)
@@ -425,6 +425,18 @@ static const struct intel_vgpu_regops intel_vgpu_regops_opregion = {
        .release = intel_vgpu_reg_release_opregion,
 };
 
+static bool edid_valid(const void *edid, size_t size)
+{
+       const struct drm_edid *drm_edid;
+       bool is_valid;
+
+       drm_edid = drm_edid_alloc(edid, size);
+       is_valid = drm_edid_valid(drm_edid);
+       drm_edid_free(drm_edid);
+
+       return is_valid;
+}
+
 static int handle_edid_regs(struct intel_vgpu *vgpu,
                        struct vfio_edid_region *region, char *buf,
                        size_t count, u16 offset, bool is_write)
@@ -443,11 +455,7 @@ static int handle_edid_regs(struct intel_vgpu *vgpu,
                switch (offset) {
                case offsetof(struct vfio_region_gfx_edid, link_state):
                        if (data == VFIO_DEVICE_GFX_LINK_STATE_UP) {
-                               if (!drm_edid_block_valid(
-                                       (u8 *)region->edid_blob,
-                                       0,
-                                       true,
-                                       NULL)) {
+                               if (!edid_valid(region->edid_blob, EDID_SIZE)) {
                                        gvt_vgpu_err("invalid EDID blob\n");
                                        return -EINVAL;
                                }