Lines Matching refs:cpudata

69 	struct trbe_cpudata *cpudata;  member
138 struct trbe_cpudata __percpu *cpudata; member
147 static void trbe_check_errata(struct trbe_cpudata *cpudata) in trbe_check_errata() argument
157 set_bit(i, cpudata->errata); in trbe_check_errata()
161 static inline bool trbe_has_erratum(struct trbe_cpudata *cpudata, int i) in trbe_has_erratum() argument
163 return (i < TRBE_ERRATA_MAX) && test_bit(i, cpudata->errata); in trbe_has_erratum()
166 static inline bool trbe_may_overwrite_in_fill_mode(struct trbe_cpudata *cpudata) in trbe_may_overwrite_in_fill_mode() argument
168 return trbe_has_erratum(cpudata, TRBE_WORKAROUND_OVERWRITE_FILL_MODE); in trbe_may_overwrite_in_fill_mode()
171 static inline bool trbe_may_write_out_of_range(struct trbe_cpudata *cpudata) in trbe_may_write_out_of_range() argument
173 return trbe_has_erratum(cpudata, TRBE_WORKAROUND_WRITE_OUT_OF_RANGE); in trbe_may_write_out_of_range()
176 static inline bool trbe_needs_drain_after_disable(struct trbe_cpudata *cpudata) in trbe_needs_drain_after_disable() argument
183 return trbe_has_erratum(cpudata, TRBE_NEEDS_DRAIN_AFTER_DISABLE); in trbe_needs_drain_after_disable()
186 static inline bool trbe_needs_ctxt_sync_after_enable(struct trbe_cpudata *cpudata) in trbe_needs_ctxt_sync_after_enable() argument
194 return trbe_has_erratum(cpudata, TRBE_NEEDS_CTXT_SYNC_AFTER_ENABLE); in trbe_needs_ctxt_sync_after_enable()
197 static inline bool trbe_is_broken(struct trbe_cpudata *cpudata) in trbe_is_broken() argument
199 return trbe_has_erratum(cpudata, TRBE_IS_BROKEN); in trbe_is_broken()
215 static inline void set_trbe_enabled(struct trbe_cpudata *cpudata, u64 trblimitr) in set_trbe_enabled() argument
227 if (trbe_needs_ctxt_sync_after_enable(cpudata)) in set_trbe_enabled()
231 static inline void set_trbe_disabled(struct trbe_cpudata *cpudata) in set_trbe_disabled() argument
242 if (trbe_needs_drain_after_disable(cpudata)) in set_trbe_disabled()
247 static void trbe_drain_and_disable_local(struct trbe_cpudata *cpudata) in trbe_drain_and_disable_local() argument
250 set_trbe_disabled(cpudata); in trbe_drain_and_disable_local()
253 static void trbe_reset_local(struct trbe_cpudata *cpudata) in trbe_reset_local() argument
255 trbe_drain_and_disable_local(cpudata); in trbe_reset_local()
292 trbe_drain_and_disable_local(buf->cpudata); in trbe_stop_and_truncate_event()
295 *this_cpu_ptr(buf->cpudata->drvdata->handle) = NULL; in trbe_stop_and_truncate_event()
372 struct trbe_cpudata *cpudata = buf->cpudata; in trbe_min_trace_buf_size() local
382 if (trbe_may_write_out_of_range(cpudata)) in trbe_min_trace_buf_size()
400 struct trbe_cpudata *cpudata = buf->cpudata; in __trbe_normal_offset() local
423 if (!IS_ALIGNED(head, cpudata->trbe_align)) { in __trbe_normal_offset()
424 unsigned long delta = roundup(head, cpudata->trbe_align) - head; in __trbe_normal_offset()
625 set_trbe_enabled(buf->cpudata, trblimitr); in set_trbe_limit_pointer_enabled()
633 set_trbe_disabled(buf->cpudata); in trbe_enable_hw()
652 struct trbe_cpudata *cpudata = buf->cpudata; in trbe_get_fault_act() local
667 (trbe_may_overwrite_in_fill_mode(cpudata) || in trbe_get_fault_act()
719 if (trbe_has_erratum(buf->cpudata, TRBE_WORKAROUND_OVERWRITE_FILL_MODE) && in trbe_get_trace_size()
784 struct trbe_cpudata *cpudata = dev_get_drvdata(&csdev->dev); in arm_trbe_update_buffer() local
791 WARN_ON(buf->cpudata != cpudata); in arm_trbe_update_buffer()
792 WARN_ON(cpudata->cpu != smp_processor_id()); in arm_trbe_update_buffer()
793 WARN_ON(cpudata->drvdata != drvdata); in arm_trbe_update_buffer()
794 if (cpudata->mode != CS_MODE_PERF) in arm_trbe_update_buffer()
828 trbe_drain_and_disable_local(cpudata); in arm_trbe_update_buffer()
942 if (trbe_has_erratum(buf->cpudata, TRBE_WORKAROUND_OVERWRITE_FILL_MODE)) { in trbe_apply_work_around_before_enable()
966 if (trbe_has_erratum(buf->cpudata, TRBE_WORKAROUND_WRITE_OUT_OF_RANGE)) { in trbe_apply_work_around_before_enable()
1000 *this_cpu_ptr(buf->cpudata->drvdata->handle) = handle; in __arm_trbe_enable()
1011 struct trbe_cpudata *cpudata = dev_get_drvdata(&csdev->dev); in arm_trbe_enable() local
1015 WARN_ON(cpudata->cpu != smp_processor_id()); in arm_trbe_enable()
1016 WARN_ON(cpudata->drvdata != drvdata); in arm_trbe_enable()
1020 cpudata->buf = buf; in arm_trbe_enable()
1021 cpudata->mode = mode; in arm_trbe_enable()
1022 buf->cpudata = cpudata; in arm_trbe_enable()
1030 struct trbe_cpudata *cpudata = dev_get_drvdata(&csdev->dev); in arm_trbe_disable() local
1031 struct trbe_buf *buf = cpudata->buf; in arm_trbe_disable()
1033 WARN_ON(buf->cpudata != cpudata); in arm_trbe_disable()
1034 WARN_ON(cpudata->cpu != smp_processor_id()); in arm_trbe_disable()
1035 WARN_ON(cpudata->drvdata != drvdata); in arm_trbe_disable()
1036 if (cpudata->mode != CS_MODE_PERF) in arm_trbe_disable()
1039 trbe_drain_and_disable_local(cpudata); in arm_trbe_disable()
1040 buf->cpudata = NULL; in arm_trbe_disable()
1041 cpudata->buf = NULL; in arm_trbe_disable()
1042 cpudata->mode = CS_MODE_DISABLED; in arm_trbe_disable()
1056 set_trbe_enabled(buf->cpudata, trblimitr); in trbe_handle_spurious()
1080 trbe_drain_and_disable_local(buf->cpudata); in trbe_handle_overflow()
1081 *this_cpu_ptr(buf->cpudata->drvdata->handle) = NULL; in trbe_handle_overflow()
1091 struct trbe_cpudata *cpudata = buf->cpudata; in is_perf_trbe() local
1092 struct trbe_drvdata *drvdata = cpudata->drvdata; in is_perf_trbe()
1098 if (cpudata->mode != CS_MODE_PERF) in is_perf_trbe()
1101 if (cpudata->cpu != cpu) in is_perf_trbe()
1135 trbe_drain_and_disable_local(buf->cpudata); in arm_trbe_irq_handler()
1188 struct trbe_cpudata *cpudata = dev_get_drvdata(dev); in align_show() local
1190 return sprintf(buf, "%llx\n", cpudata->trbe_hw_align); in align_show()
1196 struct trbe_cpudata *cpudata = dev_get_drvdata(dev); in flag_show() local
1198 return sprintf(buf, "%d\n", cpudata->trbe_flag); in flag_show()
1220 struct trbe_cpudata *cpudata = this_cpu_ptr(drvdata->cpudata); in arm_trbe_enable_cpu() local
1222 trbe_reset_local(cpudata); in arm_trbe_enable_cpu()
1228 struct trbe_cpudata *cpudata = per_cpu_ptr(drvdata->cpudata, cpu); in arm_trbe_register_coresight_cpu() local
1237 if (WARN_ON(!cpudata->drvdata)) in arm_trbe_register_coresight_cpu()
1240 dev = &cpudata->drvdata->pdev->dev; in arm_trbe_register_coresight_cpu()
1255 dev_set_drvdata(&trbe_csdev->dev, cpudata); in arm_trbe_register_coresight_cpu()
1269 struct trbe_cpudata *cpudata = per_cpu_ptr(drvdata->cpudata, cpu); in arm_trbe_probe_cpu() local
1272 if (WARN_ON(!cpudata)) in arm_trbe_probe_cpu()
1286 cpudata->trbe_hw_align = 1ULL << get_trbe_address_align(trbidr); in arm_trbe_probe_cpu()
1287 if (cpudata->trbe_hw_align > SZ_2K) { in arm_trbe_probe_cpu()
1296 trbe_check_errata(cpudata); in arm_trbe_probe_cpu()
1298 if (trbe_is_broken(cpudata)) { in arm_trbe_probe_cpu()
1314 if (trbe_may_overwrite_in_fill_mode(cpudata)) in arm_trbe_probe_cpu()
1315 cpudata->trbe_align = PAGE_SIZE; in arm_trbe_probe_cpu()
1317 cpudata->trbe_align = cpudata->trbe_hw_align; in arm_trbe_probe_cpu()
1319 cpudata->trbe_flag = get_trbe_flag_update(trbidr); in arm_trbe_probe_cpu()
1320 cpudata->cpu = cpu; in arm_trbe_probe_cpu()
1321 cpudata->drvdata = drvdata; in arm_trbe_probe_cpu()
1331 struct trbe_cpudata *cpudata = per_cpu_ptr(drvdata->cpudata, cpu); in arm_trbe_remove_coresight_cpu() local
1335 trbe_reset_local(cpudata); in arm_trbe_remove_coresight_cpu()
1338 cpudata->drvdata = NULL; in arm_trbe_remove_coresight_cpu()
1347 drvdata->cpudata = alloc_percpu(typeof(*drvdata->cpudata)); in arm_trbe_probe_coresight()
1348 if (!drvdata->cpudata) in arm_trbe_probe_coresight()
1369 free_percpu(drvdata->cpudata); in arm_trbe_remove_coresight()
1408 struct trbe_cpudata *cpudata = per_cpu_ptr(drvdata->cpudata, cpu); in arm_trbe_cpu_teardown() local
1411 trbe_reset_local(cpudata); in arm_trbe_cpu_teardown()