diff options
author | Trond Myklebust <trond.myklebust@primarydata.com> | 2017-08-15 18:54:13 +0300 |
---|---|---|
committer | Trond Myklebust <trond.myklebust@primarydata.com> | 2017-08-15 18:54:13 +0300 |
commit | 55cfcd12115419810972f62741df19ca98c575a3 (patch) | |
tree | eb9b6e6666c2791e7af030f3f4bf47fcce615454 /drivers/gpu/drm/i915/gvt/firmware.c | |
parent | 35bdb0979555e2fca39a5b0302d1b0c4b17d81e6 (diff) | |
parent | 75e8c48b9ef30bfda38e7f6e5d807352fbf0b090 (diff) | |
download | linux-55cfcd12115419810972f62741df19ca98c575a3.tar.xz |
Merge branch 'open_state'
Diffstat (limited to 'drivers/gpu/drm/i915/gvt/firmware.c')
-rw-r--r-- | drivers/gpu/drm/i915/gvt/firmware.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/gvt/firmware.c b/drivers/gpu/drm/i915/gvt/firmware.c index 5dad9298b2d5..a26c1705430e 100644 --- a/drivers/gpu/drm/i915/gvt/firmware.c +++ b/drivers/gpu/drm/i915/gvt/firmware.c @@ -72,11 +72,13 @@ static int expose_firmware_sysfs(struct intel_gvt *gvt) struct intel_gvt_device_info *info = &gvt->device_info; struct pci_dev *pdev = gvt->dev_priv->drm.pdev; struct intel_gvt_mmio_info *e; + struct gvt_mmio_block *block = gvt->mmio.mmio_block; + int num = gvt->mmio.num_mmio_block; struct gvt_firmware_header *h; void *firmware; void *p; unsigned long size, crc32_start; - int i; + int i, j; int ret; size = sizeof(*h) + info->mmio_size + info->cfg_space_size; @@ -105,6 +107,13 @@ static int expose_firmware_sysfs(struct intel_gvt *gvt) hash_for_each(gvt->mmio.mmio_info_table, i, e, node) *(u32 *)(p + e->offset) = I915_READ_NOTRACE(_MMIO(e->offset)); + for (i = 0; i < num; i++, block++) { + for (j = 0; j < block->size; j += 4) + *(u32 *)(p + INTEL_GVT_MMIO_OFFSET(block->offset) + j) = + I915_READ_NOTRACE(_MMIO(INTEL_GVT_MMIO_OFFSET( + block->offset) + j)); + } + memcpy(gvt->firmware.mmio, p, info->mmio_size); crc32_start = offsetof(struct gvt_firmware_header, crc32) + 4; |