drm/i915/gvt: Make mmio_attribute as type u8 to save 1.5MB memory
authorChangbin Du <changbin.du@intel.com>
Tue, 6 Jun 2017 07:56:11 +0000 (15:56 +0800)
committerZhenyu Wang <zhenyuw@linux.intel.com>
Thu, 8 Jun 2017 05:59:20 +0000 (13:59 +0800)
Type u8 is big enough to contain all MMIO attribute flags. As the
total MMIO size is 2MB so we saved 1.5MB memory.

Signed-off-by: Changbin Du <changbin.du@intel.com>
Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
drivers/gpu/drm/i915/gvt/gvt.h
drivers/gpu/drm/i915/gvt/handlers.c

index 1fca76b..9ff371b 100644 (file)
@@ -198,7 +198,7 @@ struct intel_gvt_fence {
 #define INTEL_GVT_MMIO_HASH_BITS 9
 
 struct intel_gvt_mmio {
-       u32 *mmio_attribute;
+       u8 *mmio_attribute;
        DECLARE_HASHTABLE(mmio_info_table, INTEL_GVT_MMIO_HASH_BITS);
 };
 
index 29de07f..6ec4759 100644 (file)
@@ -105,7 +105,7 @@ static struct intel_gvt_mmio_info *find_mmio_info(struct intel_gvt *gvt,
 }
 
 static int new_mmio_info(struct intel_gvt *gvt,
-               u32 offset, u32 flags, u32 size,
+               u32 offset, u8 flags, u32 size,
                u32 addr_mask, u32 ro_mask, u32 device,
                gvt_mmio_func read, gvt_mmio_func write)
 {
@@ -2922,9 +2922,10 @@ int intel_gvt_setup_mmio_info(struct intel_gvt *gvt)
 {
        struct intel_gvt_device_info *info = &gvt->device_info;
        struct drm_i915_private *dev_priv = gvt->dev_priv;
+       int size = info->mmio_size / 4 * sizeof(*gvt->mmio.mmio_attribute);
        int ret;
 
-       gvt->mmio.mmio_attribute = vzalloc(info->mmio_size);
+       gvt->mmio.mmio_attribute = vzalloc(size);
        if (!gvt->mmio.mmio_attribute)
                return -ENOMEM;