diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2017-01-06 10:20:11 -0500 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2017-01-06 11:02:09 -0500 |
commit | edd1f2fe11ff77ab2a3169b9359e2ba69541a2f2 (patch) | |
tree | 80ff829dfb8f32a6f5056011782823b5a8b1c3df | |
parent | 46fad808b1b73c3f7c0b88016dcc6fb4cd549b27 (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.c | 6 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem_gtt.c | 8 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem_gtt.h | 13 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem_stolen.c | 20 | ||||
-rw-r--r-- | include/drm/intel-gtt.h | 6 |
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 | } |
1421 | EXPORT_SYMBOL(intel_gmch_probe); | 1421 | EXPORT_SYMBOL(intel_gmch_probe); |
1422 | 1422 | ||
1423 | void intel_gtt_get(u64 *gtt_total, size_t *stolen_size, | 1423 | void 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 | ||
283 | static void g4x_get_stolen_reserved(struct drm_i915_private *dev_priv, | 283 | static 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 | ||
306 | static void gen6_get_stolen_reserved(struct drm_i915_private *dev_priv, | 306 | static 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 | ||
332 | static void gen7_get_stolen_reserved(struct drm_i915_private *dev_priv, | 332 | static 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 | ||
352 | static void chv_get_stolen_reserved(struct drm_i915_private *dev_priv, | 352 | static 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 | ||
378 | static void bdw_get_stolen_reserved(struct drm_i915_private *dev_priv, | 378 | static 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 | ||
6 | void intel_gtt_get(u64 *gtt_total, size_t *stolen_size, | 6 | void 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 | ||
9 | int intel_gmch_probe(struct pci_dev *bridge_pdev, struct pci_dev *gpu_pdev, | 11 | int 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); |