diff options
| author | Michel Thierry <michel.thierry@intel.com> | 2015-04-08 12:13:31 +0100 |
|---|---|---|
| committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2015-04-10 08:56:11 +0200 |
| commit | c488dbbaa7626e510c3d2560e9aa2ddc45fb1e99 (patch) | |
| tree | 2f7a1f14ffc2c182858eb44437c0af48038864c2 | |
| parent | 09942c656b7f857e3fd875a20f5967d316a20c73 (diff) | |
drm/i915: Extract PPGTT param from page_directory alloc
This will be useful for when we move to 48b addressing, and the PDP isn't
the root of the page table structure.
v2: Rebase after changes for Gen8+ systems with less than 4GB of memory.
v3: Rebase after Mika's code review.
Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
Signed-off-by: Michel Thierry <michel.thierry@intel.com> (v2)
Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
| -rw-r--r-- | drivers/gpu/drm/i915/i915_gem_gtt.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c index c5ec35ac0733..539060b8b66a 100644 --- a/drivers/gpu/drm/i915/i915_gem_gtt.c +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c @@ -716,12 +716,11 @@ unwind_out: return -ENOMEM; } -static int gen8_ppgtt_alloc_page_directories(struct i915_page_directory_pointer *pdp, +static int gen8_ppgtt_alloc_page_directories(struct i915_hw_ppgtt *ppgtt, + struct i915_page_directory_pointer *pdp, uint64_t start, uint64_t length) { - struct i915_hw_ppgtt *ppgtt = - container_of(pdp, struct i915_hw_ppgtt, pdp); struct i915_page_directory *unused; uint64_t temp; uint32_t pdpe; @@ -732,7 +731,7 @@ static int gen8_ppgtt_alloc_page_directories(struct i915_page_directory_pointer gen8_for_each_pdpe(unused, pdp, start, length, temp, pdpe) { WARN_ON(unused); pdp->page_directory[pdpe] = alloc_pd_single(); - if (IS_ERR(ppgtt->pdp.page_directory[pdpe])) + if (IS_ERR(pdp->page_directory[pdpe])) goto unwind_out; gen8_initialize_pd(&ppgtt->base, @@ -743,8 +742,8 @@ static int gen8_ppgtt_alloc_page_directories(struct i915_page_directory_pointer * 4GB of memory. This won't be needed after a subsequent patch. */ while (pdpe < GEN8_LEGACY_PDPES) { - ppgtt->pdp.page_directory[pdpe] = alloc_pd_single(); - if (IS_ERR(ppgtt->pdp.page_directory[pdpe])) + pdp->page_directory[pdpe] = alloc_pd_single(); + if (IS_ERR(pdp->page_directory[pdpe])) goto unwind_out; gen8_initialize_pd(&ppgtt->base, @@ -756,7 +755,7 @@ static int gen8_ppgtt_alloc_page_directories(struct i915_page_directory_pointer unwind_out: while (pdpe--) - unmap_and_free_pd(ppgtt->pdp.page_directory[pdpe]); + unmap_and_free_pd(pdp->page_directory[pdpe]); return -ENOMEM; } @@ -770,7 +769,7 @@ static int gen8_ppgtt_alloc(struct i915_hw_ppgtt *ppgtt, uint32_t pdpe; int ret; - ret = gen8_ppgtt_alloc_page_directories(&ppgtt->pdp, start, length); + ret = gen8_ppgtt_alloc_page_directories(ppgtt, &ppgtt->pdp, start, length); if (ret) return ret; |
