|
@@ -2395,16 +2395,11 @@ static void gen8_ggtt_insert_page(struct i915_address_space *vm,
|
|
|
gen8_pte_t __iomem *pte =
|
|
|
(gen8_pte_t __iomem *)dev_priv->ggtt.gsm +
|
|
|
(offset >> PAGE_SHIFT);
|
|
|
- int rpm_atomic_seq;
|
|
|
-
|
|
|
- rpm_atomic_seq = assert_rpm_atomic_begin(dev_priv);
|
|
|
|
|
|
gen8_set_pte(pte, gen8_pte_encode(addr, level));
|
|
|
|
|
|
I915_WRITE(GFX_FLSH_CNTL_GEN6, GFX_FLSH_CNTL_EN);
|
|
|
POSTING_READ(GFX_FLSH_CNTL_GEN6);
|
|
|
-
|
|
|
- assert_rpm_atomic_end(dev_priv, rpm_atomic_seq);
|
|
|
}
|
|
|
|
|
|
static void gen8_ggtt_insert_entries(struct i915_address_space *vm,
|
|
@@ -2418,11 +2413,8 @@ static void gen8_ggtt_insert_entries(struct i915_address_space *vm,
|
|
|
gen8_pte_t __iomem *gtt_entries;
|
|
|
gen8_pte_t gtt_entry;
|
|
|
dma_addr_t addr;
|
|
|
- int rpm_atomic_seq;
|
|
|
int i = 0;
|
|
|
|
|
|
- rpm_atomic_seq = assert_rpm_atomic_begin(dev_priv);
|
|
|
-
|
|
|
gtt_entries = (gen8_pte_t __iomem *)ggtt->gsm + (start >> PAGE_SHIFT);
|
|
|
|
|
|
for_each_sgt_dma(addr, sgt_iter, st) {
|
|
@@ -2446,8 +2438,6 @@ static void gen8_ggtt_insert_entries(struct i915_address_space *vm,
|
|
|
*/
|
|
|
I915_WRITE(GFX_FLSH_CNTL_GEN6, GFX_FLSH_CNTL_EN);
|
|
|
POSTING_READ(GFX_FLSH_CNTL_GEN6);
|
|
|
-
|
|
|
- assert_rpm_atomic_end(dev_priv, rpm_atomic_seq);
|
|
|
}
|
|
|
|
|
|
struct insert_entries {
|
|
@@ -2486,16 +2476,11 @@ static void gen6_ggtt_insert_page(struct i915_address_space *vm,
|
|
|
gen6_pte_t __iomem *pte =
|
|
|
(gen6_pte_t __iomem *)dev_priv->ggtt.gsm +
|
|
|
(offset >> PAGE_SHIFT);
|
|
|
- int rpm_atomic_seq;
|
|
|
-
|
|
|
- rpm_atomic_seq = assert_rpm_atomic_begin(dev_priv);
|
|
|
|
|
|
iowrite32(vm->pte_encode(addr, level, flags), pte);
|
|
|
|
|
|
I915_WRITE(GFX_FLSH_CNTL_GEN6, GFX_FLSH_CNTL_EN);
|
|
|
POSTING_READ(GFX_FLSH_CNTL_GEN6);
|
|
|
-
|
|
|
- assert_rpm_atomic_end(dev_priv, rpm_atomic_seq);
|
|
|
}
|
|
|
|
|
|
/*
|
|
@@ -2515,11 +2500,8 @@ static void gen6_ggtt_insert_entries(struct i915_address_space *vm,
|
|
|
gen6_pte_t __iomem *gtt_entries;
|
|
|
gen6_pte_t gtt_entry;
|
|
|
dma_addr_t addr;
|
|
|
- int rpm_atomic_seq;
|
|
|
int i = 0;
|
|
|
|
|
|
- rpm_atomic_seq = assert_rpm_atomic_begin(dev_priv);
|
|
|
-
|
|
|
gtt_entries = (gen6_pte_t __iomem *)ggtt->gsm + (start >> PAGE_SHIFT);
|
|
|
|
|
|
for_each_sgt_dma(addr, sgt_iter, st) {
|
|
@@ -2542,8 +2524,6 @@ static void gen6_ggtt_insert_entries(struct i915_address_space *vm,
|
|
|
*/
|
|
|
I915_WRITE(GFX_FLSH_CNTL_GEN6, GFX_FLSH_CNTL_EN);
|
|
|
POSTING_READ(GFX_FLSH_CNTL_GEN6);
|
|
|
-
|
|
|
- assert_rpm_atomic_end(dev_priv, rpm_atomic_seq);
|
|
|
}
|
|
|
|
|
|
static void nop_clear_range(struct i915_address_space *vm,
|
|
@@ -2554,7 +2534,6 @@ static void nop_clear_range(struct i915_address_space *vm,
|
|
|
static void gen8_ggtt_clear_range(struct i915_address_space *vm,
|
|
|
uint64_t start, uint64_t length)
|
|
|
{
|
|
|
- struct drm_i915_private *dev_priv = to_i915(vm->dev);
|
|
|
struct i915_ggtt *ggtt = i915_vm_to_ggtt(vm);
|
|
|
unsigned first_entry = start >> PAGE_SHIFT;
|
|
|
unsigned num_entries = length >> PAGE_SHIFT;
|
|
@@ -2562,9 +2541,6 @@ static void gen8_ggtt_clear_range(struct i915_address_space *vm,
|
|
|
(gen8_pte_t __iomem *)ggtt->gsm + first_entry;
|
|
|
const int max_entries = ggtt_total_entries(ggtt) - first_entry;
|
|
|
int i;
|
|
|
- int rpm_atomic_seq;
|
|
|
-
|
|
|
- rpm_atomic_seq = assert_rpm_atomic_begin(dev_priv);
|
|
|
|
|
|
if (WARN(num_entries > max_entries,
|
|
|
"First entry = %d; Num entries = %d (max=%d)\n",
|
|
@@ -2576,15 +2552,12 @@ static void gen8_ggtt_clear_range(struct i915_address_space *vm,
|
|
|
for (i = 0; i < num_entries; i++)
|
|
|
gen8_set_pte(>t_base[i], scratch_pte);
|
|
|
readl(gtt_base);
|
|
|
-
|
|
|
- assert_rpm_atomic_end(dev_priv, rpm_atomic_seq);
|
|
|
}
|
|
|
|
|
|
static void gen6_ggtt_clear_range(struct i915_address_space *vm,
|
|
|
uint64_t start,
|
|
|
uint64_t length)
|
|
|
{
|
|
|
- struct drm_i915_private *dev_priv = to_i915(vm->dev);
|
|
|
struct i915_ggtt *ggtt = i915_vm_to_ggtt(vm);
|
|
|
unsigned first_entry = start >> PAGE_SHIFT;
|
|
|
unsigned num_entries = length >> PAGE_SHIFT;
|
|
@@ -2592,9 +2565,6 @@ static void gen6_ggtt_clear_range(struct i915_address_space *vm,
|
|
|
(gen6_pte_t __iomem *)ggtt->gsm + first_entry;
|
|
|
const int max_entries = ggtt_total_entries(ggtt) - first_entry;
|
|
|
int i;
|
|
|
- int rpm_atomic_seq;
|
|
|
-
|
|
|
- rpm_atomic_seq = assert_rpm_atomic_begin(dev_priv);
|
|
|
|
|
|
if (WARN(num_entries > max_entries,
|
|
|
"First entry = %d; Num entries = %d (max=%d)\n",
|
|
@@ -2607,8 +2577,6 @@ static void gen6_ggtt_clear_range(struct i915_address_space *vm,
|
|
|
for (i = 0; i < num_entries; i++)
|
|
|
iowrite32(scratch_pte, >t_base[i]);
|
|
|
readl(gtt_base);
|
|
|
-
|
|
|
- assert_rpm_atomic_end(dev_priv, rpm_atomic_seq);
|
|
|
}
|
|
|
|
|
|
static void i915_ggtt_insert_page(struct i915_address_space *vm,
|
|
@@ -2617,16 +2585,10 @@ static void i915_ggtt_insert_page(struct i915_address_space *vm,
|
|
|
enum i915_cache_level cache_level,
|
|
|
u32 unused)
|
|
|
{
|
|
|
- struct drm_i915_private *dev_priv = to_i915(vm->dev);
|
|
|
unsigned int flags = (cache_level == I915_CACHE_NONE) ?
|
|
|
AGP_USER_MEMORY : AGP_USER_CACHED_MEMORY;
|
|
|
- int rpm_atomic_seq;
|
|
|
-
|
|
|
- rpm_atomic_seq = assert_rpm_atomic_begin(dev_priv);
|
|
|
|
|
|
intel_gtt_insert_page(addr, offset >> PAGE_SHIFT, flags);
|
|
|
-
|
|
|
- assert_rpm_atomic_end(dev_priv, rpm_atomic_seq);
|
|
|
}
|
|
|
|
|
|
static void i915_ggtt_insert_entries(struct i915_address_space *vm,
|
|
@@ -2634,33 +2596,18 @@ static void i915_ggtt_insert_entries(struct i915_address_space *vm,
|
|
|
uint64_t start,
|
|
|
enum i915_cache_level cache_level, u32 unused)
|
|
|
{
|
|
|
- struct drm_i915_private *dev_priv = to_i915(vm->dev);
|
|
|
unsigned int flags = (cache_level == I915_CACHE_NONE) ?
|
|
|
AGP_USER_MEMORY : AGP_USER_CACHED_MEMORY;
|
|
|
- int rpm_atomic_seq;
|
|
|
-
|
|
|
- rpm_atomic_seq = assert_rpm_atomic_begin(dev_priv);
|
|
|
|
|
|
intel_gtt_insert_sg_entries(pages, start >> PAGE_SHIFT, flags);
|
|
|
|
|
|
- assert_rpm_atomic_end(dev_priv, rpm_atomic_seq);
|
|
|
-
|
|
|
}
|
|
|
|
|
|
static void i915_ggtt_clear_range(struct i915_address_space *vm,
|
|
|
uint64_t start,
|
|
|
uint64_t length)
|
|
|
{
|
|
|
- struct drm_i915_private *dev_priv = to_i915(vm->dev);
|
|
|
- unsigned first_entry = start >> PAGE_SHIFT;
|
|
|
- unsigned num_entries = length >> PAGE_SHIFT;
|
|
|
- int rpm_atomic_seq;
|
|
|
-
|
|
|
- rpm_atomic_seq = assert_rpm_atomic_begin(dev_priv);
|
|
|
-
|
|
|
- intel_gtt_clear_range(first_entry, num_entries);
|
|
|
-
|
|
|
- assert_rpm_atomic_end(dev_priv, rpm_atomic_seq);
|
|
|
+ intel_gtt_clear_range(start >> PAGE_SHIFT, length >> PAGE_SHIFT);
|
|
|
}
|
|
|
|
|
|
static int ggtt_bind_vma(struct i915_vma *vma,
|