Lines Matching refs:ppat
3091 __alloc_ppat_entry(struct intel_ppat *ppat, unsigned int index, u8 value) in __alloc_ppat_entry() argument
3093 struct intel_ppat_entry *entry = &ppat->entries[index]; in __alloc_ppat_entry()
3095 GEM_BUG_ON(index >= ppat->max_entries); in __alloc_ppat_entry()
3096 GEM_BUG_ON(test_bit(index, ppat->used)); in __alloc_ppat_entry()
3098 entry->ppat = ppat; in __alloc_ppat_entry()
3101 set_bit(index, ppat->used); in __alloc_ppat_entry()
3102 set_bit(index, ppat->dirty); in __alloc_ppat_entry()
3109 struct intel_ppat *ppat = entry->ppat; in __free_ppat_entry() local
3110 unsigned int index = entry - ppat->entries; in __free_ppat_entry()
3112 GEM_BUG_ON(index >= ppat->max_entries); in __free_ppat_entry()
3113 GEM_BUG_ON(!test_bit(index, ppat->used)); in __free_ppat_entry()
3115 entry->value = ppat->clear_value; in __free_ppat_entry()
3116 clear_bit(index, ppat->used); in __free_ppat_entry()
3117 set_bit(index, ppat->dirty); in __free_ppat_entry()
3135 struct intel_ppat *ppat = &i915->ppat; in intel_ppat_get() local
3140 GEM_BUG_ON(!ppat->max_entries); in intel_ppat_get()
3143 for_each_set_bit(i, ppat->used, ppat->max_entries) { in intel_ppat_get()
3146 score = ppat->match(ppat->entries[i].value, value); in intel_ppat_get()
3148 entry = &ppat->entries[i]; in intel_ppat_get()
3158 if (scanned == ppat->max_entries) { in intel_ppat_get()
3166 i = find_first_zero_bit(ppat->used, ppat->max_entries); in intel_ppat_get()
3167 entry = __alloc_ppat_entry(ppat, i, value); in intel_ppat_get()
3168 ppat->update_hw(i915); in intel_ppat_get()
3176 struct drm_i915_private *i915 = entry->ppat->i915; in release_ppat()
3179 entry->ppat->update_hw(i915); in release_ppat()
3192 struct intel_ppat *ppat = entry->ppat; in intel_ppat_put() local
3193 unsigned int index = entry - ppat->entries; in intel_ppat_put()
3195 GEM_BUG_ON(!ppat->max_entries); in intel_ppat_put()
3197 kref_put(&ppat->entries[index].ref, release_ppat); in intel_ppat_put()
3202 struct intel_ppat *ppat = &dev_priv->ppat; in cnl_private_pat_update_hw() local
3205 for_each_set_bit(i, ppat->dirty, ppat->max_entries) { in cnl_private_pat_update_hw()
3206 I915_WRITE(GEN10_PAT_INDEX(i), ppat->entries[i].value); in cnl_private_pat_update_hw()
3207 clear_bit(i, ppat->dirty); in cnl_private_pat_update_hw()
3213 struct intel_ppat *ppat = &dev_priv->ppat; in bdw_private_pat_update_hw() local
3217 for (i = 0; i < ppat->max_entries; i++) in bdw_private_pat_update_hw()
3218 pat |= GEN8_PPAT(i, ppat->entries[i].value); in bdw_private_pat_update_hw()
3220 bitmap_clear(ppat->dirty, 0, ppat->max_entries); in bdw_private_pat_update_hw()
3259 static void cnl_setup_private_ppat(struct intel_ppat *ppat) in cnl_setup_private_ppat() argument
3261 ppat->max_entries = 8; in cnl_setup_private_ppat()
3262 ppat->update_hw = cnl_private_pat_update_hw; in cnl_setup_private_ppat()
3263 ppat->match = bdw_private_pat_match; in cnl_setup_private_ppat()
3264 ppat->clear_value = GEN8_PPAT_WB | GEN8_PPAT_LLCELLC | GEN8_PPAT_AGE(3); in cnl_setup_private_ppat()
3266 __alloc_ppat_entry(ppat, 0, GEN8_PPAT_WB | GEN8_PPAT_LLC); in cnl_setup_private_ppat()
3267 __alloc_ppat_entry(ppat, 1, GEN8_PPAT_WC | GEN8_PPAT_LLCELLC); in cnl_setup_private_ppat()
3268 __alloc_ppat_entry(ppat, 2, GEN8_PPAT_WT | GEN8_PPAT_LLCELLC); in cnl_setup_private_ppat()
3269 __alloc_ppat_entry(ppat, 3, GEN8_PPAT_UC); in cnl_setup_private_ppat()
3270 __alloc_ppat_entry(ppat, 4, GEN8_PPAT_WB | GEN8_PPAT_LLCELLC | GEN8_PPAT_AGE(0)); in cnl_setup_private_ppat()
3271 __alloc_ppat_entry(ppat, 5, GEN8_PPAT_WB | GEN8_PPAT_LLCELLC | GEN8_PPAT_AGE(1)); in cnl_setup_private_ppat()
3272 __alloc_ppat_entry(ppat, 6, GEN8_PPAT_WB | GEN8_PPAT_LLCELLC | GEN8_PPAT_AGE(2)); in cnl_setup_private_ppat()
3273 __alloc_ppat_entry(ppat, 7, GEN8_PPAT_WB | GEN8_PPAT_LLCELLC | GEN8_PPAT_AGE(3)); in cnl_setup_private_ppat()
3279 static void bdw_setup_private_ppat(struct intel_ppat *ppat) in bdw_setup_private_ppat() argument
3281 ppat->max_entries = 8; in bdw_setup_private_ppat()
3282 ppat->update_hw = bdw_private_pat_update_hw; in bdw_setup_private_ppat()
3283 ppat->match = bdw_private_pat_match; in bdw_setup_private_ppat()
3284 ppat->clear_value = GEN8_PPAT_WB | GEN8_PPAT_LLCELLC | GEN8_PPAT_AGE(3); in bdw_setup_private_ppat()
3286 if (!USES_PPGTT(ppat->i915)) { in bdw_setup_private_ppat()
3300 __alloc_ppat_entry(ppat, 0, GEN8_PPAT_UC); in bdw_setup_private_ppat()
3304 __alloc_ppat_entry(ppat, 0, GEN8_PPAT_WB | GEN8_PPAT_LLC); /* for normal objects, no eLLC */ in bdw_setup_private_ppat()
3305 …__alloc_ppat_entry(ppat, 1, GEN8_PPAT_WC | GEN8_PPAT_LLCELLC); /* for something pointing to ptes?… in bdw_setup_private_ppat()
3306 __alloc_ppat_entry(ppat, 2, GEN8_PPAT_WT | GEN8_PPAT_LLCELLC); /* for scanout with eLLC */ in bdw_setup_private_ppat()
3307 …__alloc_ppat_entry(ppat, 3, GEN8_PPAT_UC); /* Uncached objects, mostly for sc… in bdw_setup_private_ppat()
3308 __alloc_ppat_entry(ppat, 4, GEN8_PPAT_WB | GEN8_PPAT_LLCELLC | GEN8_PPAT_AGE(0)); in bdw_setup_private_ppat()
3309 __alloc_ppat_entry(ppat, 5, GEN8_PPAT_WB | GEN8_PPAT_LLCELLC | GEN8_PPAT_AGE(1)); in bdw_setup_private_ppat()
3310 __alloc_ppat_entry(ppat, 6, GEN8_PPAT_WB | GEN8_PPAT_LLCELLC | GEN8_PPAT_AGE(2)); in bdw_setup_private_ppat()
3311 __alloc_ppat_entry(ppat, 7, GEN8_PPAT_WB | GEN8_PPAT_LLCELLC | GEN8_PPAT_AGE(3)); in bdw_setup_private_ppat()
3314 static void chv_setup_private_ppat(struct intel_ppat *ppat) in chv_setup_private_ppat() argument
3316 ppat->max_entries = 8; in chv_setup_private_ppat()
3317 ppat->update_hw = bdw_private_pat_update_hw; in chv_setup_private_ppat()
3318 ppat->match = chv_private_pat_match; in chv_setup_private_ppat()
3319 ppat->clear_value = CHV_PPAT_SNOOP; in chv_setup_private_ppat()
3340 __alloc_ppat_entry(ppat, 0, CHV_PPAT_SNOOP); in chv_setup_private_ppat()
3341 __alloc_ppat_entry(ppat, 1, 0); in chv_setup_private_ppat()
3342 __alloc_ppat_entry(ppat, 2, 0); in chv_setup_private_ppat()
3343 __alloc_ppat_entry(ppat, 3, 0); in chv_setup_private_ppat()
3344 __alloc_ppat_entry(ppat, 4, CHV_PPAT_SNOOP); in chv_setup_private_ppat()
3345 __alloc_ppat_entry(ppat, 5, CHV_PPAT_SNOOP); in chv_setup_private_ppat()
3346 __alloc_ppat_entry(ppat, 6, CHV_PPAT_SNOOP); in chv_setup_private_ppat()
3347 __alloc_ppat_entry(ppat, 7, CHV_PPAT_SNOOP); in chv_setup_private_ppat()
3360 struct intel_ppat *ppat = &dev_priv->ppat; in setup_private_pat() local
3363 ppat->i915 = dev_priv; in setup_private_pat()
3366 cnl_setup_private_ppat(ppat); in setup_private_pat()
3368 chv_setup_private_ppat(ppat); in setup_private_pat()
3370 bdw_setup_private_ppat(ppat); in setup_private_pat()
3372 GEM_BUG_ON(ppat->max_entries > INTEL_MAX_PPAT_ENTRIES); in setup_private_pat()
3374 for_each_clear_bit(i, ppat->used, ppat->max_entries) { in setup_private_pat()
3375 ppat->entries[i].value = ppat->clear_value; in setup_private_pat()
3376 ppat->entries[i].ppat = ppat; in setup_private_pat()
3377 set_bit(i, ppat->dirty); in setup_private_pat()
3380 ppat->update_hw(dev_priv); in setup_private_pat()
3707 struct intel_ppat *ppat = &dev_priv->ppat; in i915_gem_restore_gtt_mappings() local
3709 bitmap_set(ppat->dirty, 0, ppat->max_entries); in i915_gem_restore_gtt_mappings()
3710 dev_priv->ppat.update_hw(dev_priv); in i915_gem_restore_gtt_mappings()