[PATCH] drm/i915/gvt: Fix firmware loading interface for GVT-g golden HW state
Zhi Wang
zhi.a.wang at intel.com
Thu Mar 30 13:21:38 UTC 2017
Please take this one. I changed the title of patch. Tested on my SKL NUC.
On 03/31/17 05:42, Zhi Wang wrote:
> Firmware loading interface for GVT-g golden HW state has been broken
> before. This patch fixes GVT-g firmware loading interface. A user should
> apply this patch if he wants to load GVT-g golden HW state from firmware
> interface.
>
> Signed-off-by: Zhi Wang <zhi.a.wang at intel.com>
> ---
> drivers/gpu/drm/i915/gvt/firmware.c | 9 ++++++---
> 1 file changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gvt/firmware.c b/drivers/gpu/drm/i915/gvt/firmware.c
> index 933a7c2..dce8d15 100644
> --- a/drivers/gpu/drm/i915/gvt/firmware.c
> +++ b/drivers/gpu/drm/i915/gvt/firmware.c
> @@ -75,11 +75,11 @@ static int expose_firmware_sysfs(struct intel_gvt *gvt)
> struct gvt_firmware_header *h;
> void *firmware;
> void *p;
> - unsigned long size;
> + unsigned long size, crc32_start;
> int i;
> int ret;
>
> - size = sizeof(*h) + info->mmio_size + info->cfg_space_size - 1;
> + size = sizeof(*h) + info->mmio_size + info->cfg_space_size;
> firmware = vzalloc(size);
> if (!firmware)
> return -ENOMEM;
> @@ -112,6 +112,9 @@ static int expose_firmware_sysfs(struct intel_gvt *gvt)
>
> memcpy(gvt->firmware.mmio, p, info->mmio_size);
>
> + crc32_start = offsetof(struct gvt_firmware_header, crc32) + 4;
> + h->crc32 = crc32_le(0, firmware + crc32_start, size - crc32_start);
> +
> firmware_attr.size = size;
> firmware_attr.private = firmware;
>
> @@ -234,7 +237,7 @@ int intel_gvt_load_firmware(struct intel_gvt *gvt)
>
> firmware->mmio = mem;
>
> - sprintf(path, "%s/vid_0x%04x_did_0x%04x_rid_0x%04x.golden_hw_state",
> + sprintf(path, "%s/vid_0x%04x_did_0x%04x_rid_0x%02x.golden_hw_state",
> GVT_FIRMWARE_PATH, pdev->vendor, pdev->device,
> pdev->revision);
>
>
More information about the intel-gvt-dev
mailing list