aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2017-01-06 10:20:11 -0500
committerChris Wilson <chris@chris-wilson.co.uk>2017-01-06 11:02:09 -0500
commitedd1f2fe11ff77ab2a3169b9359e2ba69541a2f2 (patch)
tree80ff829dfb8f32a6f5056011782823b5a8b1c3df
parent46fad808b1b73c3f7c0b88016dcc6fb4cd549b27 (diff)
drm/i915: Use fixed-sized types for stolen
Stolen memory is a hardware resource of known size, so use an accurate fixed integer type rather than the ambiguous variable size_t. This was motivated by the next patch spotting inconsistencies in our types. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/20170106152013.24684-3-chris@chris-wilson.co.uk
-rw-r--r--drivers/char/agp/intel-gtt.c6
-rw-r--r--drivers/gpu/drm/i915/i915_gem_gtt.c8
-rw-r--r--drivers/gpu/drm/i915/i915_gem_gtt.h13
-rw-r--r--drivers/gpu/drm/i915/i915_gem_stolen.c20
-rw-r--r--include/drm/intel-gtt.h6
5 files changed, 30 insertions, 23 deletions
diff --git a/drivers/char/agp/intel-gtt.c b/drivers/char/agp/intel-gtt.c
index 0f7d28a98b9a..9702c78f458d 100644
--- a/drivers/char/agp/intel-gtt.c
+++ b/drivers/char/agp/intel-gtt.c
@@ -1420,8 +1420,10 @@ int intel_gmch_probe(struct pci_dev *bridge_pdev, struct pci_dev *gpu_pdev,
1420} 1420}
1421EXPORT_SYMBOL(intel_gmch_probe); 1421EXPORT_SYMBOL(intel_gmch_probe);
1422 1422
1423void intel_gtt_get(u64 *gtt_total, size_t *stolen_size, 1423void intel_gtt_get(u64 *gtt_total,
1424 phys_addr_t *mappable_base, u64 *mappable_end) 1424 u32 *stolen_size,
1425 phys_addr_t *mappable_base,
1426 u64 *mappable_end)
1425{ 1427{
1426 *gtt_total = intel_private.gtt_total_entries << PAGE_SHIFT; 1428 *gtt_total = intel_private.gtt_total_entries << PAGE_SHIFT;
1427 *stolen_size = intel_private.stolen_size; 1429 *stolen_size = intel_private.stolen_size;
diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
index bc2b4421cbd6..00520f27bea6 100644
--- a/drivers/gpu/drm/i915/i915_gem_gtt.c
+++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
@@ -3139,8 +3139,10 @@ static int i915_gmch_probe(struct i915_ggtt *ggtt)
3139 return -EIO; 3139 return -EIO;
3140 } 3140 }
3141 3141
3142 intel_gtt_get(&ggtt->base.total, &ggtt->stolen_size, 3142 intel_gtt_get(&ggtt->base.total,
3143 &ggtt->mappable_base, &ggtt->mappable_end); 3143 &ggtt->stolen_size,
3144 &ggtt->mappable_base,
3145 &ggtt->mappable_end);
3144 3146
3145 ggtt->do_idle_maps = needs_idle_maps(dev_priv); 3147 ggtt->do_idle_maps = needs_idle_maps(dev_priv);
3146 ggtt->base.insert_page = i915_ggtt_insert_page; 3148 ggtt->base.insert_page = i915_ggtt_insert_page;
@@ -3205,7 +3207,7 @@ int i915_ggtt_probe_hw(struct drm_i915_private *dev_priv)
3205 DRM_INFO("Memory usable by graphics device = %lluM\n", 3207 DRM_INFO("Memory usable by graphics device = %lluM\n",
3206 ggtt->base.total >> 20); 3208 ggtt->base.total >> 20);
3207 DRM_DEBUG_DRIVER("GMADR size = %lldM\n", ggtt->mappable_end >> 20); 3209 DRM_DEBUG_DRIVER("GMADR size = %lldM\n", ggtt->mappable_end >> 20);
3208 DRM_DEBUG_DRIVER("GTT stolen size = %zdM\n", ggtt->stolen_size >> 20); 3210 DRM_DEBUG_DRIVER("GTT stolen size = %uM\n", ggtt->stolen_size >> 20);
3209#ifdef CONFIG_INTEL_IOMMU 3211#ifdef CONFIG_INTEL_IOMMU
3210 if (intel_iommu_gfx_mapped) 3212 if (intel_iommu_gfx_mapped)
3211 DRM_INFO("VT-d active for gfx access\n"); 3213 DRM_INFO("VT-d active for gfx access\n");
diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.h b/drivers/gpu/drm/i915/i915_gem_gtt.h
index 0055b8567a43..9e91d7e6149c 100644
--- a/drivers/gpu/drm/i915/i915_gem_gtt.h
+++ b/drivers/gpu/drm/i915/i915_gem_gtt.h
@@ -315,6 +315,9 @@ struct i915_ggtt {
315 struct i915_address_space base; 315 struct i915_address_space base;
316 struct io_mapping mappable; /* Mapping to our CPU mappable region */ 316 struct io_mapping mappable; /* Mapping to our CPU mappable region */
317 317
318 phys_addr_t mappable_base; /* PA of our GMADR */
319 u64 mappable_end; /* End offset that we can CPU map */
320
318 /* Stolen memory is segmented in hardware with different portions 321 /* Stolen memory is segmented in hardware with different portions
319 * offlimits to certain functions. 322 * offlimits to certain functions.
320 * 323 *
@@ -323,12 +326,10 @@ struct i915_ggtt {
323 * avoid the first page! The upper end of stolen memory is reserved for 326 * avoid the first page! The upper end of stolen memory is reserved for
324 * hardware functions and similarly removed from the accessible range. 327 * hardware functions and similarly removed from the accessible range.
325 */ 328 */
326 size_t stolen_size; /* Total size of stolen memory */ 329 u32 stolen_size; /* Total size of stolen memory */
327 size_t stolen_usable_size; /* Total size minus reserved ranges */ 330 u32 stolen_usable_size; /* Total size minus reserved ranges */
328 size_t stolen_reserved_base; 331 u32 stolen_reserved_base;
329 size_t stolen_reserved_size; 332 u32 stolen_reserved_size;
330 u64 mappable_end; /* End offset that we can CPU map */
331 phys_addr_t mappable_base; /* PA of our GMADR */
332 333
333 /** "Graphics Stolen Memory" holds the global PTEs */ 334 /** "Graphics Stolen Memory" holds the global PTEs */
334 void __iomem *gsm; 335 void __iomem *gsm;
diff --git a/drivers/gpu/drm/i915/i915_gem_stolen.c b/drivers/gpu/drm/i915/i915_gem_stolen.c
index 38ae6b228ca9..0e9b99941946 100644
--- a/drivers/gpu/drm/i915/i915_gem_stolen.c
+++ b/drivers/gpu/drm/i915/i915_gem_stolen.c
@@ -281,7 +281,7 @@ void i915_gem_cleanup_stolen(struct drm_device *dev)
281} 281}
282 282
283static void g4x_get_stolen_reserved(struct drm_i915_private *dev_priv, 283static void g4x_get_stolen_reserved(struct drm_i915_private *dev_priv,
284 phys_addr_t *base, unsigned long *size) 284 phys_addr_t *base, u32 *size)
285{ 285{
286 struct i915_ggtt *ggtt = &dev_priv->ggtt; 286 struct i915_ggtt *ggtt = &dev_priv->ggtt;
287 uint32_t reg_val = I915_READ(IS_GM45(dev_priv) ? 287 uint32_t reg_val = I915_READ(IS_GM45(dev_priv) ?
@@ -304,7 +304,7 @@ static void g4x_get_stolen_reserved(struct drm_i915_private *dev_priv,
304} 304}
305 305
306static void gen6_get_stolen_reserved(struct drm_i915_private *dev_priv, 306static void gen6_get_stolen_reserved(struct drm_i915_private *dev_priv,
307 phys_addr_t *base, unsigned long *size) 307 phys_addr_t *base, u32 *size)
308{ 308{
309 uint32_t reg_val = I915_READ(GEN6_STOLEN_RESERVED); 309 uint32_t reg_val = I915_READ(GEN6_STOLEN_RESERVED);
310 310
@@ -330,7 +330,7 @@ static void gen6_get_stolen_reserved(struct drm_i915_private *dev_priv,
330} 330}
331 331
332static void gen7_get_stolen_reserved(struct drm_i915_private *dev_priv, 332static void gen7_get_stolen_reserved(struct drm_i915_private *dev_priv,
333 phys_addr_t *base, unsigned long *size) 333 phys_addr_t *base, u32 *size)
334{ 334{
335 uint32_t reg_val = I915_READ(GEN6_STOLEN_RESERVED); 335 uint32_t reg_val = I915_READ(GEN6_STOLEN_RESERVED);
336 336
@@ -350,7 +350,7 @@ static void gen7_get_stolen_reserved(struct drm_i915_private *dev_priv,
350} 350}
351 351
352static void chv_get_stolen_reserved(struct drm_i915_private *dev_priv, 352static void chv_get_stolen_reserved(struct drm_i915_private *dev_priv,
353 phys_addr_t *base, unsigned long *size) 353 phys_addr_t *base, u32 *size)
354{ 354{
355 uint32_t reg_val = I915_READ(GEN6_STOLEN_RESERVED); 355 uint32_t reg_val = I915_READ(GEN6_STOLEN_RESERVED);
356 356
@@ -376,7 +376,7 @@ static void chv_get_stolen_reserved(struct drm_i915_private *dev_priv,
376} 376}
377 377
378static void bdw_get_stolen_reserved(struct drm_i915_private *dev_priv, 378static void bdw_get_stolen_reserved(struct drm_i915_private *dev_priv,
379 phys_addr_t *base, unsigned long *size) 379 phys_addr_t *base, u32 *size)
380{ 380{
381 struct i915_ggtt *ggtt = &dev_priv->ggtt; 381 struct i915_ggtt *ggtt = &dev_priv->ggtt;
382 uint32_t reg_val = I915_READ(GEN6_STOLEN_RESERVED); 382 uint32_t reg_val = I915_READ(GEN6_STOLEN_RESERVED);
@@ -400,8 +400,8 @@ int i915_gem_init_stolen(struct drm_i915_private *dev_priv)
400{ 400{
401 struct i915_ggtt *ggtt = &dev_priv->ggtt; 401 struct i915_ggtt *ggtt = &dev_priv->ggtt;
402 phys_addr_t reserved_base, stolen_top; 402 phys_addr_t reserved_base, stolen_top;
403 unsigned long reserved_total, reserved_size; 403 u32 reserved_total, reserved_size;
404 unsigned long stolen_usable_start; 404 u32 stolen_usable_start;
405 405
406 mutex_init(&dev_priv->mm.stolen_lock); 406 mutex_init(&dev_priv->mm.stolen_lock);
407 407
@@ -478,7 +478,7 @@ int i915_gem_init_stolen(struct drm_i915_private *dev_priv)
478 * memory, so just consider the start. */ 478 * memory, so just consider the start. */
479 reserved_total = stolen_top - reserved_base; 479 reserved_total = stolen_top - reserved_base;
480 480
481 DRM_DEBUG_KMS("Memory reserved for graphics device: %zuK, usable: %luK\n", 481 DRM_DEBUG_KMS("Memory reserved for graphics device: %uK, usable: %uK\n",
482 ggtt->stolen_size >> 10, 482 ggtt->stolen_size >> 10,
483 (ggtt->stolen_size - reserved_total) >> 10); 483 (ggtt->stolen_size - reserved_total) >> 10);
484 484
@@ -487,8 +487,8 @@ int i915_gem_init_stolen(struct drm_i915_private *dev_priv)
487 if (INTEL_GEN(dev_priv) >= 8) 487 if (INTEL_GEN(dev_priv) >= 8)
488 stolen_usable_start = 4096; 488 stolen_usable_start = 4096;
489 489
490 ggtt->stolen_usable_size = ggtt->stolen_size - reserved_total - 490 ggtt->stolen_usable_size =
491 stolen_usable_start; 491 ggtt->stolen_size - reserved_total - stolen_usable_start;
492 492
493 /* Basic memrange allocator for stolen space. */ 493 /* Basic memrange allocator for stolen space. */
494 drm_mm_init(&dev_priv->mm.stolen, stolen_usable_start, 494 drm_mm_init(&dev_priv->mm.stolen, stolen_usable_start,
diff --git a/include/drm/intel-gtt.h b/include/drm/intel-gtt.h
index f49edecd66a3..b3bf717cfc45 100644
--- a/include/drm/intel-gtt.h
+++ b/include/drm/intel-gtt.h
@@ -3,8 +3,10 @@
3#ifndef _DRM_INTEL_GTT_H 3#ifndef _DRM_INTEL_GTT_H
4#define _DRM_INTEL_GTT_H 4#define _DRM_INTEL_GTT_H
5 5
6void intel_gtt_get(u64 *gtt_total, size_t *stolen_size, 6void intel_gtt_get(u64 *gtt_total,
7 phys_addr_t *mappable_base, u64 *mappable_end); 7 u32 *stolen_size,
8 phys_addr_t *mappable_base,
9 u64 *mappable_end);
8 10
9int intel_gmch_probe(struct pci_dev *bridge_pdev, struct pci_dev *gpu_pdev, 11int intel_gmch_probe(struct pci_dev *bridge_pdev, struct pci_dev *gpu_pdev,
10 struct agp_bridge_data *bridge); 12 struct agp_bridge_data *bridge);