drm/i915/gtt: Reorder page alloc/free/init functions
Maintain base page handling functions in order of alloc, free, init. No functional changes. v2: s/Introduce/Maintain (Michel) v3: Rebase Cc: Michel Thierry <michel.thierry@intel.com> Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com> Reviewed-by: Michel Thierry <michel.thierry@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
parent
79bbcc299f
commit
2e906beac6
1 changed files with 83 additions and 83 deletions
|
@ -384,24 +384,6 @@ static void fill_page_dma_32(struct drm_device *dev, struct i915_page_dma *p,
|
||||||
fill_page_dma(dev, p, v);
|
fill_page_dma(dev, p, v);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void free_pt(struct drm_device *dev, struct i915_page_table *pt)
|
|
||||||
{
|
|
||||||
cleanup_px(dev, pt);
|
|
||||||
kfree(pt->used_ptes);
|
|
||||||
kfree(pt);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void gen8_initialize_pt(struct i915_address_space *vm,
|
|
||||||
struct i915_page_table *pt)
|
|
||||||
{
|
|
||||||
gen8_pte_t scratch_pte;
|
|
||||||
|
|
||||||
scratch_pte = gen8_pte_encode(px_dma(vm->scratch_page),
|
|
||||||
I915_CACHE_LLC, true);
|
|
||||||
|
|
||||||
fill_px(vm->dev, pt, scratch_pte);
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct i915_page_table *alloc_pt(struct drm_device *dev)
|
static struct i915_page_table *alloc_pt(struct drm_device *dev)
|
||||||
{
|
{
|
||||||
struct i915_page_table *pt;
|
struct i915_page_table *pt;
|
||||||
|
@ -433,13 +415,35 @@ fail_bitmap:
|
||||||
return ERR_PTR(ret);
|
return ERR_PTR(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void free_pd(struct drm_device *dev, struct i915_page_directory *pd)
|
static void free_pt(struct drm_device *dev, struct i915_page_table *pt)
|
||||||
{
|
{
|
||||||
if (px_page(pd)) {
|
cleanup_px(dev, pt);
|
||||||
cleanup_px(dev, pd);
|
kfree(pt->used_ptes);
|
||||||
kfree(pd->used_pdes);
|
kfree(pt);
|
||||||
kfree(pd);
|
}
|
||||||
}
|
|
||||||
|
static void gen8_initialize_pt(struct i915_address_space *vm,
|
||||||
|
struct i915_page_table *pt)
|
||||||
|
{
|
||||||
|
gen8_pte_t scratch_pte;
|
||||||
|
|
||||||
|
scratch_pte = gen8_pte_encode(px_dma(vm->scratch_page),
|
||||||
|
I915_CACHE_LLC, true);
|
||||||
|
|
||||||
|
fill_px(vm->dev, pt, scratch_pte);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void gen6_initialize_pt(struct i915_address_space *vm,
|
||||||
|
struct i915_page_table *pt)
|
||||||
|
{
|
||||||
|
gen6_pte_t scratch_pte;
|
||||||
|
|
||||||
|
WARN_ON(px_dma(vm->scratch_page) == 0);
|
||||||
|
|
||||||
|
scratch_pte = vm->pte_encode(px_dma(vm->scratch_page),
|
||||||
|
I915_CACHE_LLC, true, 0);
|
||||||
|
|
||||||
|
fill32_px(vm->dev, pt, scratch_pte);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct i915_page_directory *alloc_pd(struct drm_device *dev)
|
static struct i915_page_directory *alloc_pd(struct drm_device *dev)
|
||||||
|
@ -470,6 +474,61 @@ fail_bitmap:
|
||||||
return ERR_PTR(ret);
|
return ERR_PTR(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void free_pd(struct drm_device *dev, struct i915_page_directory *pd)
|
||||||
|
{
|
||||||
|
if (px_page(pd)) {
|
||||||
|
cleanup_px(dev, pd);
|
||||||
|
kfree(pd->used_pdes);
|
||||||
|
kfree(pd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void gen8_initialize_pd(struct i915_address_space *vm,
|
||||||
|
struct i915_page_directory *pd)
|
||||||
|
{
|
||||||
|
gen8_pde_t scratch_pde;
|
||||||
|
|
||||||
|
scratch_pde = gen8_pde_encode(px_dma(vm->scratch_pt), I915_CACHE_LLC);
|
||||||
|
|
||||||
|
fill_px(vm->dev, pd, scratch_pde);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int alloc_scratch_page(struct i915_address_space *vm)
|
||||||
|
{
|
||||||
|
struct i915_page_scratch *sp;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
WARN_ON(vm->scratch_page);
|
||||||
|
|
||||||
|
sp = kzalloc(sizeof(*sp), GFP_KERNEL);
|
||||||
|
if (sp == NULL)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
|
ret = __setup_page_dma(vm->dev, px_base(sp), GFP_DMA32 | __GFP_ZERO);
|
||||||
|
if (ret) {
|
||||||
|
kfree(sp);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
set_pages_uc(px_page(sp), 1);
|
||||||
|
|
||||||
|
vm->scratch_page = sp;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void free_scratch_page(struct i915_address_space *vm)
|
||||||
|
{
|
||||||
|
struct i915_page_scratch *sp = vm->scratch_page;
|
||||||
|
|
||||||
|
set_pages_wb(px_page(sp), 1);
|
||||||
|
|
||||||
|
cleanup_px(vm->dev, sp);
|
||||||
|
kfree(sp);
|
||||||
|
|
||||||
|
vm->scratch_page = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/* Broadwell Page Directory Pointer Descriptors */
|
/* Broadwell Page Directory Pointer Descriptors */
|
||||||
static int gen8_write_pdp(struct drm_i915_gem_request *req,
|
static int gen8_write_pdp(struct drm_i915_gem_request *req,
|
||||||
unsigned entry,
|
unsigned entry,
|
||||||
|
@ -609,16 +668,6 @@ static void gen8_ppgtt_insert_entries(struct i915_address_space *vm,
|
||||||
kunmap_px(ppgtt, pt_vaddr);
|
kunmap_px(ppgtt, pt_vaddr);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void gen8_initialize_pd(struct i915_address_space *vm,
|
|
||||||
struct i915_page_directory *pd)
|
|
||||||
{
|
|
||||||
gen8_pde_t scratch_pde;
|
|
||||||
|
|
||||||
scratch_pde = gen8_pde_encode(px_dma(vm->scratch_pt), I915_CACHE_LLC);
|
|
||||||
|
|
||||||
fill_px(vm->dev, pd, scratch_pde);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void gen8_free_page_tables(struct drm_device *dev,
|
static void gen8_free_page_tables(struct drm_device *dev,
|
||||||
struct i915_page_directory *pd)
|
struct i915_page_directory *pd)
|
||||||
{
|
{
|
||||||
|
@ -1274,19 +1323,6 @@ static void gen6_ppgtt_insert_entries(struct i915_address_space *vm,
|
||||||
kunmap_px(ppgtt, pt_vaddr);
|
kunmap_px(ppgtt, pt_vaddr);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void gen6_initialize_pt(struct i915_address_space *vm,
|
|
||||||
struct i915_page_table *pt)
|
|
||||||
{
|
|
||||||
gen6_pte_t scratch_pte;
|
|
||||||
|
|
||||||
WARN_ON(px_dma(vm->scratch_page) == 0);
|
|
||||||
|
|
||||||
scratch_pte = vm->pte_encode(px_dma(vm->scratch_page),
|
|
||||||
I915_CACHE_LLC, true, 0);
|
|
||||||
|
|
||||||
fill32_px(vm->dev, pt, scratch_pte);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int gen6_alloc_va_range(struct i915_address_space *vm,
|
static int gen6_alloc_va_range(struct i915_address_space *vm,
|
||||||
uint64_t start_in, uint64_t length_in)
|
uint64_t start_in, uint64_t length_in)
|
||||||
{
|
{
|
||||||
|
@ -2126,42 +2162,6 @@ void i915_global_gtt_cleanup(struct drm_device *dev)
|
||||||
vm->cleanup(vm);
|
vm->cleanup(vm);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int alloc_scratch_page(struct i915_address_space *vm)
|
|
||||||
{
|
|
||||||
struct i915_page_scratch *sp;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
WARN_ON(vm->scratch_page);
|
|
||||||
|
|
||||||
sp = kzalloc(sizeof(*sp), GFP_KERNEL);
|
|
||||||
if (sp == NULL)
|
|
||||||
return -ENOMEM;
|
|
||||||
|
|
||||||
ret = __setup_page_dma(vm->dev, px_base(sp), GFP_DMA32 | __GFP_ZERO);
|
|
||||||
if (ret) {
|
|
||||||
kfree(sp);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
set_pages_uc(px_page(sp), 1);
|
|
||||||
|
|
||||||
vm->scratch_page = sp;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void free_scratch_page(struct i915_address_space *vm)
|
|
||||||
{
|
|
||||||
struct i915_page_scratch *sp = vm->scratch_page;
|
|
||||||
|
|
||||||
set_pages_wb(px_page(sp), 1);
|
|
||||||
|
|
||||||
cleanup_px(vm->dev, sp);
|
|
||||||
kfree(sp);
|
|
||||||
|
|
||||||
vm->scratch_page = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static unsigned int gen6_get_total_gtt_size(u16 snb_gmch_ctl)
|
static unsigned int gen6_get_total_gtt_size(u16 snb_gmch_ctl)
|
||||||
{
|
{
|
||||||
snb_gmch_ctl >>= SNB_GMCH_GGMS_SHIFT;
|
snb_gmch_ctl >>= SNB_GMCH_GGMS_SHIFT;
|
||||||
|
|
Loading…
Add table
Reference in a new issue