• Home
  • Raw
  • Download

Lines Matching refs:perf

389 i915_perf_get_oa_config(struct i915_perf *perf, int metrics_set)  in i915_perf_get_oa_config()  argument
394 oa_config = idr_find(&perf->metrics_idr, metrics_set); in i915_perf_get_oa_config()
471 hw_tail = stream->perf->ops.oa_hw_tail_read(stream); in oa_buffer_check_unlocked()
521 __ratelimit(&stream->perf->tail_pointer_race)) in oa_buffer_check_unlocked()
722 (GRAPHICS_VER(stream->perf->i915) == 12 ? in gen8_append_oa_reports()
736 if (!(report32[0] & stream->perf->gen8_valid_ctx_bit) && in gen8_append_oa_reports()
737 GRAPHICS_VER(stream->perf->i915) <= 11) in gen8_append_oa_reports()
771 if (!stream->perf->exclusive_stream->ctx || in gen8_append_oa_reports()
780 if (stream->perf->exclusive_stream->ctx && in gen8_append_oa_reports()
804 oaheadptr = GRAPHICS_VER(stream->perf->i915) == 12 ? in gen8_append_oa_reports()
857 oastatus_reg = GRAPHICS_VER(stream->perf->i915) == 12 ? in gen8_oa_read()
882 drm_dbg(&stream->perf->i915->drm, in gen8_oa_read()
886 stream->perf->ops.oa_disable(stream); in gen8_oa_read()
887 stream->perf->ops.oa_enable(stream); in gen8_oa_read()
1008 if (__ratelimit(&stream->perf->spurious_report_rs)) in gen7_append_oa_reports()
1078 oastatus1 &= ~stream->perf->gen7_latched_oastatus1; in gen7_oa_read()
1106 drm_dbg(&stream->perf->i915->drm, in gen7_oa_read()
1110 stream->perf->ops.oa_disable(stream); in gen7_oa_read()
1111 stream->perf->ops.oa_enable(stream); in gen7_oa_read()
1121 stream->perf->gen7_latched_oastatus1 |= in gen7_oa_read()
1186 return stream->perf->ops.read(stream, buf, count, offset); in i915_oa_read()
1315 drm_dbg(&stream->perf->i915->drm, in oa_get_render_ctx_id()
1371 struct i915_perf *perf = stream->perf; in i915_oa_stream_destroy() local
1373 BUG_ON(stream != perf->exclusive_stream); in i915_oa_stream_destroy()
1381 WRITE_ONCE(perf->exclusive_stream, NULL); in i915_oa_stream_destroy()
1382 perf->ops.disable_metric_set(stream); in i915_oa_stream_destroy()
1395 if (perf->spurious_report_rs.missed) { in i915_oa_stream_destroy()
1397 perf->spurious_report_rs.missed); in i915_oa_stream_destroy()
1431 stream->perf->gen7_latched_oastatus1 = 0; in gen7_init_oa_buffer()
1558 struct drm_i915_private *i915 = stream->perf->i915; in alloc_oa_buffer()
1569 bo = i915_gem_object_create_shmem(stream->perf->i915, OA_BUFFER_SIZE); in alloc_oa_buffer()
1615 if (GRAPHICS_VER(stream->perf->i915) >= 8) in save_restore_register()
1631 struct drm_i915_private *i915 = stream->perf->i915; in alloc_noa_wait()
1635 intel_gt_ns_to_clock_interval(stream->perf->i915->ggtt.vm.gt, in alloc_noa_wait()
1636 atomic64_read(&stream->perf->noa_programming_delay)); in alloc_noa_wait()
1876 obj = i915_gem_object_create_shmem(stream->perf->i915, config_length); in alloc_oa_config_buffer()
1905 *cs++ = (GRAPHICS_VER(stream->perf->i915) < 8 ? in alloc_oa_config_buffer()
2116 u32 ctx_oactxctrl = stream->perf->ctx_oactxctrl_offset; in gen8_update_reg_state_unlocked()
2117 u32 ctx_flexeu0 = stream->perf->ctx_flexeu0_offset; in gen8_update_reg_state_unlocked()
2283 stream->perf->ctx_oactxctrl_offset + 1, in gen12_configure_oar_context()
2353 struct drm_i915_private *i915 = stream->perf->i915; in oa_configure_all_contexts()
2358 lockdep_assert_held(&stream->perf->lock); in oa_configure_all_contexts()
2439 const u32 ctx_flexeu0 = stream->perf->ctx_flexeu0_offset; in lrc_configure_all_contexts()
2448 stream->perf->ctx_oactxctrl_offset + 1, in lrc_configure_all_contexts()
2505 if (IS_GRAPHICS_VER(stream->perf->i915, 9, 11)) { in gen8_enable_metric_set()
2707 stream->perf->ops.oa_enable(stream); in i915_oa_stream_enable()
2723 drm_err(&stream->perf->i915->drm, in gen7_oa_disable()
2735 drm_err(&stream->perf->i915->drm, in gen8_oa_disable()
2748 drm_err(&stream->perf->i915->drm, in gen12_oa_disable()
2756 drm_err(&stream->perf->i915->drm, in gen12_oa_disable()
2770 stream->perf->ops.oa_disable(stream); in i915_oa_stream_disable()
2794 err = stream->perf->ops.enable_metric_set(stream, active); in i915_perf_stream_enable_sync()
2856 struct drm_i915_private *i915 = stream->perf->i915; in i915_oa_stream_init()
2857 struct i915_perf *perf = stream->perf; in i915_oa_stream_init() local
2862 drm_dbg(&stream->perf->i915->drm, in i915_oa_stream_init()
2872 if (!perf->metrics_kobj) { in i915_oa_stream_init()
2873 drm_dbg(&stream->perf->i915->drm, in i915_oa_stream_init()
2879 (GRAPHICS_VER(perf->i915) < 12 || !stream->ctx)) { in i915_oa_stream_init()
2880 drm_dbg(&stream->perf->i915->drm, in i915_oa_stream_init()
2885 if (!perf->ops.enable_metric_set) { in i915_oa_stream_init()
2886 drm_dbg(&stream->perf->i915->drm, in i915_oa_stream_init()
2896 if (perf->exclusive_stream) { in i915_oa_stream_init()
2897 drm_dbg(&stream->perf->i915->drm, in i915_oa_stream_init()
2903 drm_dbg(&stream->perf->i915->drm, in i915_oa_stream_init()
2913 format_size = perf->oa_formats[props->oa_format].size; in i915_oa_stream_init()
2925 perf->oa_formats[props->oa_format].format; in i915_oa_stream_init()
2934 drm_dbg(&stream->perf->i915->drm, in i915_oa_stream_init()
2942 drm_dbg(&stream->perf->i915->drm, in i915_oa_stream_init()
2947 stream->oa_config = i915_perf_get_oa_config(perf, props->metrics_set); in i915_oa_stream_init()
2949 drm_dbg(&stream->perf->i915->drm, in i915_oa_stream_init()
2976 perf->sseu = props->sseu; in i915_oa_stream_init()
2977 WRITE_ONCE(perf->exclusive_stream, stream); in i915_oa_stream_init()
2981 drm_dbg(&stream->perf->i915->drm, in i915_oa_stream_init()
2986 drm_dbg(&stream->perf->i915->drm, in i915_oa_stream_init()
2999 WRITE_ONCE(perf->exclusive_stream, NULL); in i915_oa_stream_init()
3000 perf->ops.disable_metric_set(stream); in i915_oa_stream_init()
3029 stream = READ_ONCE(engine->i915->perf.exclusive_stream); in i915_oa_init_reg_state()
3030 if (stream && GRAPHICS_VER(stream->perf->i915) < 12) in i915_oa_init_reg_state()
3058 struct i915_perf *perf = stream->perf; in i915_perf_read() local
3082 mutex_lock(&perf->lock); in i915_perf_read()
3084 mutex_unlock(&perf->lock); in i915_perf_read()
3087 mutex_lock(&perf->lock); in i915_perf_read()
3089 mutex_unlock(&perf->lock); in i915_perf_read()
3177 struct i915_perf *perf = stream->perf; in i915_perf_poll() local
3180 mutex_lock(&perf->lock); in i915_perf_poll()
3182 mutex_unlock(&perf->lock); in i915_perf_poll()
3247 config = i915_perf_get_oa_config(stream->perf, metrics_set); in i915_perf_config_locked()
3321 struct i915_perf *perf = stream->perf; in i915_perf_ioctl() local
3324 mutex_lock(&perf->lock); in i915_perf_ioctl()
3326 mutex_unlock(&perf->lock); in i915_perf_ioctl()
3369 struct i915_perf *perf = stream->perf; in i915_perf_release() local
3371 mutex_lock(&perf->lock); in i915_perf_release()
3373 mutex_unlock(&perf->lock); in i915_perf_release()
3376 drm_dev_put(&perf->i915->drm); in i915_perf_release()
3421 i915_perf_open_ioctl_locked(struct i915_perf *perf, in i915_perf_open_ioctl_locked() argument
3439 drm_dbg(&perf->i915->drm, in i915_perf_open_ioctl_locked()
3466 if (IS_HASWELL(perf->i915) && specific_ctx) in i915_perf_open_ioctl_locked()
3468 else if (GRAPHICS_VER(perf->i915) == 12 && specific_ctx && in i915_perf_open_ioctl_locked()
3474 drm_dbg(&perf->i915->drm, in i915_perf_open_ioctl_locked()
3497 drm_dbg(&perf->i915->drm, in i915_perf_open_ioctl_locked()
3509 stream->perf = perf; in i915_perf_open_ioctl_locked()
3543 drm_dev_get(&perf->i915->drm); in i915_perf_open_ioctl_locked()
3559 static u64 oa_exponent_to_ns(struct i915_perf *perf, int exponent) in oa_exponent_to_ns() argument
3561 return intel_gt_clock_interval_to_ns(perf->i915->ggtt.vm.gt, in oa_exponent_to_ns()
3566 oa_format_valid(struct i915_perf *perf, enum drm_i915_oa_format format) in oa_format_valid() argument
3568 return test_bit(format, perf->format_mask); in oa_format_valid()
3572 oa_format_add(struct i915_perf *perf, enum drm_i915_oa_format format) in oa_format_add() argument
3574 __set_bit(format, perf->format_mask); in oa_format_add()
3592 static int read_properties_unlocked(struct i915_perf *perf, in read_properties_unlocked() argument
3605 drm_dbg(&perf->i915->drm, in read_properties_unlocked()
3611 props->engine = intel_engine_lookup_user(perf->i915, in read_properties_unlocked()
3615 drm_dbg(&perf->i915->drm, in read_properties_unlocked()
3627 drm_dbg(&perf->i915->drm, in read_properties_unlocked()
3645 drm_dbg(&perf->i915->drm, in read_properties_unlocked()
3661 drm_dbg(&perf->i915->drm, in read_properties_unlocked()
3669 drm_dbg(&perf->i915->drm, in read_properties_unlocked()
3674 if (!oa_format_valid(perf, value)) { in read_properties_unlocked()
3675 drm_dbg(&perf->i915->drm, in read_properties_unlocked()
3684 drm_dbg(&perf->i915->drm, in read_properties_unlocked()
3697 oa_period = oa_exponent_to_ns(perf, value); in read_properties_unlocked()
3713 drm_dbg(&perf->i915->drm, in read_properties_unlocked()
3731 drm_dbg(&perf->i915->drm, in read_properties_unlocked()
3738 drm_dbg(&perf->i915->drm, in read_properties_unlocked()
3747 drm_dbg(&perf->i915->drm, in read_properties_unlocked()
3792 struct i915_perf *perf = &to_i915(dev)->perf; in i915_perf_open_ioctl() local
3798 if (!perf->i915) in i915_perf_open_ioctl()
3805 drm_dbg(&perf->i915->drm, in i915_perf_open_ioctl()
3810 ret = read_properties_unlocked(perf, in i915_perf_open_ioctl()
3817 mutex_lock(&perf->lock); in i915_perf_open_ioctl()
3818 ret = i915_perf_open_ioctl_locked(perf, param, &props, file); in i915_perf_open_ioctl()
3819 mutex_unlock(&perf->lock); in i915_perf_open_ioctl()
3834 struct i915_perf *perf = &i915->perf; in i915_perf_register() local
3836 if (!perf->i915) in i915_perf_register()
3843 mutex_lock(&perf->lock); in i915_perf_register()
3845 perf->metrics_kobj = in i915_perf_register()
3849 mutex_unlock(&perf->lock); in i915_perf_register()
3863 struct i915_perf *perf = &i915->perf; in i915_perf_unregister() local
3865 if (!perf->metrics_kobj) in i915_perf_unregister()
3868 kobject_put(perf->metrics_kobj); in i915_perf_unregister()
3869 perf->metrics_kobj = NULL; in i915_perf_unregister()
3872 static bool gen8_is_valid_flex_addr(struct i915_perf *perf, u32 addr) in gen8_is_valid_flex_addr() argument
3903 static bool gen7_is_valid_b_counter_addr(struct i915_perf *perf, u32 addr) in gen7_is_valid_b_counter_addr() argument
3910 static bool gen7_is_valid_mux_addr(struct i915_perf *perf, u32 addr) in gen7_is_valid_mux_addr() argument
3918 static bool gen8_is_valid_mux_addr(struct i915_perf *perf, u32 addr) in gen8_is_valid_mux_addr() argument
3920 return gen7_is_valid_mux_addr(perf, addr) || in gen8_is_valid_mux_addr()
3925 static bool gen11_is_valid_mux_addr(struct i915_perf *perf, u32 addr) in gen11_is_valid_mux_addr() argument
3927 return gen8_is_valid_mux_addr(perf, addr) || in gen11_is_valid_mux_addr()
3932 static bool hsw_is_valid_mux_addr(struct i915_perf *perf, u32 addr) in hsw_is_valid_mux_addr() argument
3934 return gen7_is_valid_mux_addr(perf, addr) || in hsw_is_valid_mux_addr()
3940 static bool chv_is_valid_mux_addr(struct i915_perf *perf, u32 addr) in chv_is_valid_mux_addr() argument
3942 return gen7_is_valid_mux_addr(perf, addr) || in chv_is_valid_mux_addr()
3946 static bool gen12_is_valid_b_counter_addr(struct i915_perf *perf, u32 addr) in gen12_is_valid_b_counter_addr() argument
3957 static bool gen12_is_valid_mux_addr(struct i915_perf *perf, u32 addr) in gen12_is_valid_mux_addr() argument
3987 static struct i915_oa_reg *alloc_oa_regs(struct i915_perf *perf, in alloc_oa_regs() argument
3988 bool (*is_valid)(struct i915_perf *perf, u32 addr), in alloc_oa_regs() argument
4015 if (!is_valid(perf, addr)) { in alloc_oa_regs()
4016 drm_dbg(&perf->i915->drm, in alloc_oa_regs()
4049 static int create_dynamic_oa_sysfs_entry(struct i915_perf *perf, in create_dynamic_oa_sysfs_entry() argument
4064 return sysfs_create_group(perf->metrics_kobj, in create_dynamic_oa_sysfs_entry()
4084 struct i915_perf *perf = &to_i915(dev)->perf; in i915_perf_add_config_ioctl() local
4090 if (!perf->i915) in i915_perf_add_config_ioctl()
4093 if (!perf->metrics_kobj) { in i915_perf_add_config_ioctl()
4094 drm_dbg(&perf->i915->drm, in i915_perf_add_config_ioctl()
4100 drm_dbg(&perf->i915->drm, in i915_perf_add_config_ioctl()
4108 drm_dbg(&perf->i915->drm, in i915_perf_add_config_ioctl()
4115 drm_dbg(&perf->i915->drm, in i915_perf_add_config_ioctl()
4120 oa_config->perf = perf; in i915_perf_add_config_ioctl()
4124 drm_dbg(&perf->i915->drm, in i915_perf_add_config_ioctl()
4136 regs = alloc_oa_regs(perf, in i915_perf_add_config_ioctl()
4137 perf->ops.is_valid_mux_reg, in i915_perf_add_config_ioctl()
4142 drm_dbg(&perf->i915->drm, in i915_perf_add_config_ioctl()
4150 regs = alloc_oa_regs(perf, in i915_perf_add_config_ioctl()
4151 perf->ops.is_valid_b_counter_reg, in i915_perf_add_config_ioctl()
4156 drm_dbg(&perf->i915->drm, in i915_perf_add_config_ioctl()
4163 if (GRAPHICS_VER(perf->i915) < 8) { in i915_perf_add_config_ioctl()
4170 regs = alloc_oa_regs(perf, in i915_perf_add_config_ioctl()
4171 perf->ops.is_valid_flex_reg, in i915_perf_add_config_ioctl()
4176 drm_dbg(&perf->i915->drm, in i915_perf_add_config_ioctl()
4184 err = mutex_lock_interruptible(&perf->metrics_lock); in i915_perf_add_config_ioctl()
4191 idr_for_each_entry(&perf->metrics_idr, tmp, id) { in i915_perf_add_config_ioctl()
4193 drm_dbg(&perf->i915->drm, in i915_perf_add_config_ioctl()
4200 err = create_dynamic_oa_sysfs_entry(perf, oa_config); in i915_perf_add_config_ioctl()
4202 drm_dbg(&perf->i915->drm, in i915_perf_add_config_ioctl()
4208 oa_config->id = idr_alloc(&perf->metrics_idr, in i915_perf_add_config_ioctl()
4212 drm_dbg(&perf->i915->drm, in i915_perf_add_config_ioctl()
4219 drm_dbg(&perf->i915->drm, in i915_perf_add_config_ioctl()
4221 mutex_unlock(&perf->metrics_lock); in i915_perf_add_config_ioctl()
4226 mutex_unlock(&perf->metrics_lock); in i915_perf_add_config_ioctl()
4229 drm_dbg(&perf->i915->drm, in i915_perf_add_config_ioctl()
4248 struct i915_perf *perf = &to_i915(dev)->perf; in i915_perf_remove_config_ioctl() local
4253 if (!perf->i915) in i915_perf_remove_config_ioctl()
4257 drm_dbg(&perf->i915->drm, in i915_perf_remove_config_ioctl()
4262 ret = mutex_lock_interruptible(&perf->metrics_lock); in i915_perf_remove_config_ioctl()
4266 oa_config = idr_find(&perf->metrics_idr, *arg); in i915_perf_remove_config_ioctl()
4268 drm_dbg(&perf->i915->drm, in i915_perf_remove_config_ioctl()
4276 sysfs_remove_group(perf->metrics_kobj, &oa_config->sysfs_metric); in i915_perf_remove_config_ioctl()
4278 idr_remove(&perf->metrics_idr, *arg); in i915_perf_remove_config_ioctl()
4280 mutex_unlock(&perf->metrics_lock); in i915_perf_remove_config_ioctl()
4282 drm_dbg(&perf->i915->drm, in i915_perf_remove_config_ioctl()
4290 mutex_unlock(&perf->metrics_lock); in i915_perf_remove_config_ioctl()
4336 static void oa_init_supported_formats(struct i915_perf *perf) in oa_init_supported_formats() argument
4338 struct drm_i915_private *i915 = perf->i915; in oa_init_supported_formats()
4343 oa_format_add(perf, I915_OA_FORMAT_A13); in oa_init_supported_formats()
4344 oa_format_add(perf, I915_OA_FORMAT_A13); in oa_init_supported_formats()
4345 oa_format_add(perf, I915_OA_FORMAT_A29); in oa_init_supported_formats()
4346 oa_format_add(perf, I915_OA_FORMAT_A13_B8_C8); in oa_init_supported_formats()
4347 oa_format_add(perf, I915_OA_FORMAT_B4_C8); in oa_init_supported_formats()
4348 oa_format_add(perf, I915_OA_FORMAT_A45_B8_C8); in oa_init_supported_formats()
4349 oa_format_add(perf, I915_OA_FORMAT_B4_C8_A16); in oa_init_supported_formats()
4350 oa_format_add(perf, I915_OA_FORMAT_C4_B8); in oa_init_supported_formats()
4369 oa_format_add(perf, I915_OA_FORMAT_A12); in oa_init_supported_formats()
4370 oa_format_add(perf, I915_OA_FORMAT_A12_B8_C8); in oa_init_supported_formats()
4371 oa_format_add(perf, I915_OA_FORMAT_A32u40_A4u32_B8_C8); in oa_init_supported_formats()
4372 oa_format_add(perf, I915_OA_FORMAT_C4_B8); in oa_init_supported_formats()
4391 struct i915_perf *perf = &i915->perf; in i915_perf_init() local
4395 perf->oa_formats = oa_formats; in i915_perf_init()
4397 perf->ops.is_valid_b_counter_reg = gen7_is_valid_b_counter_addr; in i915_perf_init()
4398 perf->ops.is_valid_mux_reg = hsw_is_valid_mux_addr; in i915_perf_init()
4399 perf->ops.is_valid_flex_reg = NULL; in i915_perf_init()
4400 perf->ops.enable_metric_set = hsw_enable_metric_set; in i915_perf_init()
4401 perf->ops.disable_metric_set = hsw_disable_metric_set; in i915_perf_init()
4402 perf->ops.oa_enable = gen7_oa_enable; in i915_perf_init()
4403 perf->ops.oa_disable = gen7_oa_disable; in i915_perf_init()
4404 perf->ops.read = gen7_oa_read; in i915_perf_init()
4405 perf->ops.oa_hw_tail_read = gen7_oa_hw_tail_read; in i915_perf_init()
4413 perf->ops.read = gen8_oa_read; in i915_perf_init()
4416 perf->ops.is_valid_b_counter_reg = in i915_perf_init()
4418 perf->ops.is_valid_mux_reg = in i915_perf_init()
4420 perf->ops.is_valid_flex_reg = in i915_perf_init()
4424 perf->ops.is_valid_mux_reg = in i915_perf_init()
4428 perf->ops.oa_enable = gen8_oa_enable; in i915_perf_init()
4429 perf->ops.oa_disable = gen8_oa_disable; in i915_perf_init()
4430 perf->ops.enable_metric_set = gen8_enable_metric_set; in i915_perf_init()
4431 perf->ops.disable_metric_set = gen8_disable_metric_set; in i915_perf_init()
4432 perf->ops.oa_hw_tail_read = gen8_oa_hw_tail_read; in i915_perf_init()
4435 perf->ctx_oactxctrl_offset = 0x120; in i915_perf_init()
4436 perf->ctx_flexeu0_offset = 0x2ce; in i915_perf_init()
4438 perf->gen8_valid_ctx_bit = BIT(25); in i915_perf_init()
4440 perf->ctx_oactxctrl_offset = 0x128; in i915_perf_init()
4441 perf->ctx_flexeu0_offset = 0x3de; in i915_perf_init()
4443 perf->gen8_valid_ctx_bit = BIT(16); in i915_perf_init()
4446 perf->ops.is_valid_b_counter_reg = in i915_perf_init()
4448 perf->ops.is_valid_mux_reg = in i915_perf_init()
4450 perf->ops.is_valid_flex_reg = in i915_perf_init()
4453 perf->ops.oa_enable = gen8_oa_enable; in i915_perf_init()
4454 perf->ops.oa_disable = gen8_oa_disable; in i915_perf_init()
4455 perf->ops.enable_metric_set = gen8_enable_metric_set; in i915_perf_init()
4456 perf->ops.disable_metric_set = gen11_disable_metric_set; in i915_perf_init()
4457 perf->ops.oa_hw_tail_read = gen8_oa_hw_tail_read; in i915_perf_init()
4459 perf->ctx_oactxctrl_offset = 0x124; in i915_perf_init()
4460 perf->ctx_flexeu0_offset = 0x78e; in i915_perf_init()
4462 perf->gen8_valid_ctx_bit = BIT(16); in i915_perf_init()
4464 perf->ops.is_valid_b_counter_reg = in i915_perf_init()
4466 perf->ops.is_valid_mux_reg = in i915_perf_init()
4468 perf->ops.is_valid_flex_reg = in i915_perf_init()
4471 perf->ops.oa_enable = gen12_oa_enable; in i915_perf_init()
4472 perf->ops.oa_disable = gen12_oa_disable; in i915_perf_init()
4473 perf->ops.enable_metric_set = gen12_enable_metric_set; in i915_perf_init()
4474 perf->ops.disable_metric_set = gen12_disable_metric_set; in i915_perf_init()
4475 perf->ops.oa_hw_tail_read = gen12_oa_hw_tail_read; in i915_perf_init()
4477 perf->ctx_flexeu0_offset = 0; in i915_perf_init()
4478 perf->ctx_oactxctrl_offset = 0x144; in i915_perf_init()
4482 if (perf->ops.enable_metric_set) { in i915_perf_init()
4483 mutex_init(&perf->lock); in i915_perf_init()
4488 mutex_init(&perf->metrics_lock); in i915_perf_init()
4489 idr_init_base(&perf->metrics_idr, 1); in i915_perf_init()
4501 ratelimit_state_init(&perf->spurious_report_rs, 5 * HZ, 10); in i915_perf_init()
4506 ratelimit_set_flags(&perf->spurious_report_rs, in i915_perf_init()
4509 ratelimit_state_init(&perf->tail_pointer_race, in i915_perf_init()
4511 ratelimit_set_flags(&perf->tail_pointer_race, in i915_perf_init()
4514 atomic64_set(&perf->noa_programming_delay, in i915_perf_init()
4517 perf->i915 = i915; in i915_perf_init()
4519 oa_init_supported_formats(perf); in i915_perf_init()
4546 struct i915_perf *perf = &i915->perf; in i915_perf_fini() local
4548 if (!perf->i915) in i915_perf_fini()
4551 idr_for_each(&perf->metrics_idr, destroy_config, perf); in i915_perf_fini()
4552 idr_destroy(&perf->metrics_idr); in i915_perf_fini()
4554 memset(&perf->ops, 0, sizeof(perf->ops)); in i915_perf_fini()
4555 perf->i915 = NULL; in i915_perf_fini()