drivers/hwtracing/ptt/hisi_ptt.c
100
if (!hisi_ptt_wait_tuning_finish(hisi_ptt)) {
drivers/hwtracing/ptt/hisi_ptt.c
1001
if (event->attr.type != hisi_ptt->hisi_ptt_pmu.type)
drivers/hwtracing/ptt/hisi_ptt.c
101
mutex_unlock(&hisi_ptt->tune_lock);
drivers/hwtracing/ptt/hisi_ptt.c
1012
ret = hisi_ptt_trace_valid_filter(hisi_ptt, event->attr.config);
drivers/hwtracing/ptt/hisi_ptt.c
105
mutex_unlock(&hisi_ptt->tune_lock);
drivers/hwtracing/ptt/hisi_ptt.c
1084
struct hisi_ptt *hisi_ptt = to_hisi_ptt(event->pmu);
drivers/hwtracing/ptt/hisi_ptt.c
1085
struct perf_output_handle *handle = &hisi_ptt->trace_ctrl.handle;
drivers/hwtracing/ptt/hisi_ptt.c
1095
spin_lock(&hisi_ptt->pmu_lock);
drivers/hwtracing/ptt/hisi_ptt.c
1096
if (hisi_ptt->trace_ctrl.started) {
drivers/hwtracing/ptt/hisi_ptt.c
1107
ret = irq_set_affinity(hisi_ptt->trace_irq, cpumask_of(cpu));
drivers/hwtracing/ptt/hisi_ptt.c
1111
hisi_ptt->trace_ctrl.on_cpu = cpu;
drivers/hwtracing/ptt/hisi_ptt.c
1121
hisi_ptt_pmu_init_configs(hisi_ptt, event);
drivers/hwtracing/ptt/hisi_ptt.c
1123
ret = hisi_ptt_trace_start(hisi_ptt);
drivers/hwtracing/ptt/hisi_ptt.c
1130
spin_unlock(&hisi_ptt->pmu_lock);
drivers/hwtracing/ptt/hisi_ptt.c
1134
spin_unlock(&hisi_ptt->pmu_lock);
drivers/hwtracing/ptt/hisi_ptt.c
1139
struct hisi_ptt *hisi_ptt = to_hisi_ptt(event->pmu);
drivers/hwtracing/ptt/hisi_ptt.c
1145
spin_lock(&hisi_ptt->pmu_lock);
drivers/hwtracing/ptt/hisi_ptt.c
1146
if (hisi_ptt->trace_ctrl.started) {
drivers/hwtracing/ptt/hisi_ptt.c
1147
hisi_ptt_trace_end(hisi_ptt);
drivers/hwtracing/ptt/hisi_ptt.c
1149
if (!hisi_ptt_wait_trace_hw_idle(hisi_ptt))
drivers/hwtracing/ptt/hisi_ptt.c
1152
hisi_ptt_update_aux(hisi_ptt, hisi_ptt->trace_ctrl.buf_index, true);
drivers/hwtracing/ptt/hisi_ptt.c
1154
spin_unlock(&hisi_ptt->pmu_lock);
drivers/hwtracing/ptt/hisi_ptt.c
1163
struct hisi_ptt *hisi_ptt = to_hisi_ptt(event->pmu);
drivers/hwtracing/ptt/hisi_ptt.c
1168
if (!cpumask_test_cpu(cpu, cpumask_of_node(dev_to_node(&hisi_ptt->pdev->dev))))
drivers/hwtracing/ptt/hisi_ptt.c
1201
static int hisi_ptt_register_pmu(struct hisi_ptt *hisi_ptt)
drivers/hwtracing/ptt/hisi_ptt.c
1209
&hisi_ptt->hotplug_node);
drivers/hwtracing/ptt/hisi_ptt.c
1213
ret = devm_add_action_or_reset(&hisi_ptt->pdev->dev,
drivers/hwtracing/ptt/hisi_ptt.c
1215
&hisi_ptt->hotplug_node);
drivers/hwtracing/ptt/hisi_ptt.c
1219
mutex_init(&hisi_ptt->tune_lock);
drivers/hwtracing/ptt/hisi_ptt.c
1220
spin_lock_init(&hisi_ptt->pmu_lock);
drivers/hwtracing/ptt/hisi_ptt.c
1222
hisi_ptt->hisi_ptt_pmu = (struct pmu) {
drivers/hwtracing/ptt/hisi_ptt.c
1224
.parent = &hisi_ptt->pdev->dev,
drivers/hwtracing/ptt/hisi_ptt.c
1238
reg = readl(hisi_ptt->iobase + HISI_PTT_LOCATION);
drivers/hwtracing/ptt/hisi_ptt.c
1242
pmu_name = devm_kasprintf(&hisi_ptt->pdev->dev, GFP_KERNEL, "hisi_ptt%u_%u",
drivers/hwtracing/ptt/hisi_ptt.c
1247
ret = perf_pmu_register(&hisi_ptt->hisi_ptt_pmu, pmu_name, -1);
drivers/hwtracing/ptt/hisi_ptt.c
1251
return devm_add_action_or_reset(&hisi_ptt->pdev->dev,
drivers/hwtracing/ptt/hisi_ptt.c
1253
&hisi_ptt->hisi_ptt_pmu);
drivers/hwtracing/ptt/hisi_ptt.c
1258
struct hisi_ptt *hisi_ptt = data;
drivers/hwtracing/ptt/hisi_ptt.c
1260
bus_unregister_notifier(&pci_bus_type, &hisi_ptt->hisi_ptt_nb);
drivers/hwtracing/ptt/hisi_ptt.c
1263
cancel_delayed_work_sync(&hisi_ptt->work);
drivers/hwtracing/ptt/hisi_ptt.c
1267
static int hisi_ptt_register_filter_update_notifier(struct hisi_ptt *hisi_ptt)
drivers/hwtracing/ptt/hisi_ptt.c
1271
hisi_ptt->hisi_ptt_nb.notifier_call = hisi_ptt_notifier_call;
drivers/hwtracing/ptt/hisi_ptt.c
1272
ret = bus_register_notifier(&pci_bus_type, &hisi_ptt->hisi_ptt_nb);
drivers/hwtracing/ptt/hisi_ptt.c
1276
return devm_add_action_or_reset(&hisi_ptt->pdev->dev,
drivers/hwtracing/ptt/hisi_ptt.c
1278
hisi_ptt);
drivers/hwtracing/ptt/hisi_ptt.c
1304
struct hisi_ptt *hisi_ptt;
drivers/hwtracing/ptt/hisi_ptt.c
1313
hisi_ptt = devm_kzalloc(&pdev->dev, sizeof(*hisi_ptt), GFP_KERNEL);
drivers/hwtracing/ptt/hisi_ptt.c
1314
if (!hisi_ptt)
drivers/hwtracing/ptt/hisi_ptt.c
1317
hisi_ptt->pdev = pdev;
drivers/hwtracing/ptt/hisi_ptt.c
1318
pci_set_drvdata(pdev, hisi_ptt);
drivers/hwtracing/ptt/hisi_ptt.c
1332
hisi_ptt->iobase = pcim_iomap_table(pdev)[2];
drivers/hwtracing/ptt/hisi_ptt.c
1342
ret = hisi_ptt_register_irq(hisi_ptt);
drivers/hwtracing/ptt/hisi_ptt.c
1346
ret = hisi_ptt_init_ctrls(hisi_ptt);
drivers/hwtracing/ptt/hisi_ptt.c
1352
ret = hisi_ptt_register_filter_update_notifier(hisi_ptt);
drivers/hwtracing/ptt/hisi_ptt.c
1356
ret = hisi_ptt_register_pmu(hisi_ptt);
drivers/hwtracing/ptt/hisi_ptt.c
1362
ret = hisi_ptt_init_filter_attributes(hisi_ptt);
drivers/hwtracing/ptt/hisi_ptt.c
1385
struct hisi_ptt *hisi_ptt;
drivers/hwtracing/ptt/hisi_ptt.c
1389
hisi_ptt = hlist_entry_safe(node, struct hisi_ptt, hotplug_node);
drivers/hwtracing/ptt/hisi_ptt.c
1390
src = hisi_ptt->trace_ctrl.on_cpu;
drivers/hwtracing/ptt/hisi_ptt.c
1391
dev = hisi_ptt->hisi_ptt_pmu.dev;
drivers/hwtracing/ptt/hisi_ptt.c
1393
if (!hisi_ptt->trace_ctrl.started || src != cpu)
drivers/hwtracing/ptt/hisi_ptt.c
1396
target = cpumask_any_but(cpumask_of_node(dev_to_node(&hisi_ptt->pdev->dev)), cpu);
drivers/hwtracing/ptt/hisi_ptt.c
1402
perf_pmu_migrate_context(&hisi_ptt->hisi_ptt_pmu, src, target);
drivers/hwtracing/ptt/hisi_ptt.c
1408
if (irq_set_affinity(hisi_ptt->trace_irq, cpumask_of(target)))
drivers/hwtracing/ptt/hisi_ptt.c
1411
hisi_ptt->trace_ctrl.on_cpu = target;
drivers/hwtracing/ptt/hisi_ptt.c
164
static bool hisi_ptt_wait_trace_hw_idle(struct hisi_ptt *hisi_ptt)
drivers/hwtracing/ptt/hisi_ptt.c
168
return !readl_poll_timeout_atomic(hisi_ptt->iobase + HISI_PTT_TRACE_STS,
drivers/hwtracing/ptt/hisi_ptt.c
174
static void hisi_ptt_wait_dma_reset_done(struct hisi_ptt *hisi_ptt)
drivers/hwtracing/ptt/hisi_ptt.c
178
readl_poll_timeout_atomic(hisi_ptt->iobase + HISI_PTT_TRACE_WR_STS,
drivers/hwtracing/ptt/hisi_ptt.c
183
static void hisi_ptt_trace_end(struct hisi_ptt *hisi_ptt)
drivers/hwtracing/ptt/hisi_ptt.c
185
writel(0, hisi_ptt->iobase + HISI_PTT_TRACE_CTRL);
drivers/hwtracing/ptt/hisi_ptt.c
188
writel(HISI_PTT_TRACE_INT_MASK_ALL, hisi_ptt->iobase + HISI_PTT_TRACE_INT_MASK);
drivers/hwtracing/ptt/hisi_ptt.c
190
hisi_ptt->trace_ctrl.started = false;
drivers/hwtracing/ptt/hisi_ptt.c
193
static int hisi_ptt_trace_start(struct hisi_ptt *hisi_ptt)
drivers/hwtracing/ptt/hisi_ptt.c
195
struct hisi_ptt_trace_ctrl *ctrl = &hisi_ptt->trace_ctrl;
drivers/hwtracing/ptt/hisi_ptt.c
200
if (!hisi_ptt_wait_trace_hw_idle(hisi_ptt)) {
drivers/hwtracing/ptt/hisi_ptt.c
201
pci_err(hisi_ptt->pdev, "Failed to start trace, the device is still busy\n");
drivers/hwtracing/ptt/hisi_ptt.c
208
val = readl(hisi_ptt->iobase + HISI_PTT_TRACE_CTRL);
drivers/hwtracing/ptt/hisi_ptt.c
210
writel(val, hisi_ptt->iobase + HISI_PTT_TRACE_CTRL);
drivers/hwtracing/ptt/hisi_ptt.c
212
hisi_ptt_wait_dma_reset_done(hisi_ptt);
drivers/hwtracing/ptt/hisi_ptt.c
214
val = readl(hisi_ptt->iobase + HISI_PTT_TRACE_CTRL);
drivers/hwtracing/ptt/hisi_ptt.c
216
writel(val, hisi_ptt->iobase + HISI_PTT_TRACE_CTRL);
drivers/hwtracing/ptt/hisi_ptt.c
219
hisi_ptt->trace_ctrl.buf_index = 0;
drivers/hwtracing/ptt/hisi_ptt.c
226
writel(HISI_PTT_TRACE_INT_STAT_MASK, hisi_ptt->iobase + HISI_PTT_TRACE_INT_STAT);
drivers/hwtracing/ptt/hisi_ptt.c
227
writel(0, hisi_ptt->iobase + HISI_PTT_TRACE_INT_MASK);
drivers/hwtracing/ptt/hisi_ptt.c
233
val |= FIELD_PREP(HISI_PTT_TRACE_CTRL_TARGET_SEL, hisi_ptt->trace_ctrl.filter);
drivers/hwtracing/ptt/hisi_ptt.c
234
if (!hisi_ptt->trace_ctrl.is_port)
drivers/hwtracing/ptt/hisi_ptt.c
239
writel(val, hisi_ptt->iobase + HISI_PTT_TRACE_CTRL);
drivers/hwtracing/ptt/hisi_ptt.c
244
static int hisi_ptt_update_aux(struct hisi_ptt *hisi_ptt, int index, bool stop)
drivers/hwtracing/ptt/hisi_ptt.c
246
struct hisi_ptt_trace_ctrl *ctrl = &hisi_ptt->trace_ctrl;
drivers/hwtracing/ptt/hisi_ptt.c
267
reg = readl(hisi_ptt->iobase + HISI_PTT_TRACE_WR_STS);
drivers/hwtracing/ptt/hisi_ptt.c
27
static bool hisi_ptt_wait_tuning_finish(struct hisi_ptt *hisi_ptt)
drivers/hwtracing/ptt/hisi_ptt.c
301
struct hisi_ptt *hisi_ptt = context;
drivers/hwtracing/ptt/hisi_ptt.c
304
status = readl(hisi_ptt->iobase + HISI_PTT_TRACE_INT_STAT);
drivers/hwtracing/ptt/hisi_ptt.c
31
return !readl_poll_timeout(hisi_ptt->iobase + HISI_PTT_TUNING_INT_STAT,
drivers/hwtracing/ptt/hisi_ptt.c
311
writel(status, hisi_ptt->iobase + HISI_PTT_TRACE_INT_STAT);
drivers/hwtracing/ptt/hisi_ptt.c
319
if (hisi_ptt_update_aux(hisi_ptt, buf_idx, false))
drivers/hwtracing/ptt/hisi_ptt.c
320
hisi_ptt_trace_end(hisi_ptt);
drivers/hwtracing/ptt/hisi_ptt.c
322
hisi_ptt->trace_ctrl.buf_index = (buf_idx + 1) % HISI_PTT_TRACE_BUF_CNT;
drivers/hwtracing/ptt/hisi_ptt.c
332
static int hisi_ptt_register_irq(struct hisi_ptt *hisi_ptt)
drivers/hwtracing/ptt/hisi_ptt.c
334
struct pci_dev *pdev = hisi_ptt->pdev;
drivers/hwtracing/ptt/hisi_ptt.c
347
hisi_ptt->trace_irq = pci_irq_vector(pdev, HISI_PTT_TRACE_DMA_IRQ);
drivers/hwtracing/ptt/hisi_ptt.c
348
ret = devm_request_irq(&pdev->dev, hisi_ptt->trace_irq, hisi_ptt_isr,
drivers/hwtracing/ptt/hisi_ptt.c
350
hisi_ptt);
drivers/hwtracing/ptt/hisi_ptt.c
353
hisi_ptt->trace_irq, ret);
drivers/hwtracing/ptt/hisi_ptt.c
360
static void hisi_ptt_del_free_filter(struct hisi_ptt *hisi_ptt,
drivers/hwtracing/ptt/hisi_ptt.c
364
hisi_ptt->port_mask &= ~hisi_ptt_get_filter_val(filter->devid, true);
drivers/hwtracing/ptt/hisi_ptt.c
372
hisi_ptt_alloc_add_filter(struct hisi_ptt *hisi_ptt, u16 devid, bool is_port)
drivers/hwtracing/ptt/hisi_ptt.c
378
filter_name = kasprintf(GFP_KERNEL, "%04x:%02x:%02x.%d", pci_domain_nr(hisi_ptt->pdev->bus),
drivers/hwtracing/ptt/hisi_ptt.c
381
pci_err(hisi_ptt->pdev, "failed to allocate name for filter %04x:%02x:%02x.%d\n",
drivers/hwtracing/ptt/hisi_ptt.c
382
pci_domain_nr(hisi_ptt->pdev->bus), PCI_BUS_NUM(devid),
drivers/hwtracing/ptt/hisi_ptt.c
389
pci_err(hisi_ptt->pdev, "failed to add filter for %s\n",
drivers/hwtracing/ptt/hisi_ptt.c
400
list_add_tail(&filter->list, &hisi_ptt->port_filters);
drivers/hwtracing/ptt/hisi_ptt.c
403
hisi_ptt->port_mask |= hisi_ptt_get_filter_val(filter->devid, true);
drivers/hwtracing/ptt/hisi_ptt.c
405
list_add_tail(&filter->list, &hisi_ptt->req_filters);
drivers/hwtracing/ptt/hisi_ptt.c
41
struct hisi_ptt *hisi_ptt = to_hisi_ptt(dev_get_drvdata(dev));
drivers/hwtracing/ptt/hisi_ptt.c
424
static int hisi_ptt_create_rp_filter_attr(struct hisi_ptt *hisi_ptt,
drivers/hwtracing/ptt/hisi_ptt.c
427
struct kobject *kobj = &hisi_ptt->hisi_ptt_pmu.dev->kobj;
drivers/hwtracing/ptt/hisi_ptt.c
438
static void hisi_ptt_remove_rp_filter_attr(struct hisi_ptt *hisi_ptt,
drivers/hwtracing/ptt/hisi_ptt.c
441
struct kobject *kobj = &hisi_ptt->hisi_ptt_pmu.dev->kobj;
drivers/hwtracing/ptt/hisi_ptt.c
447
static int hisi_ptt_create_req_filter_attr(struct hisi_ptt *hisi_ptt,
drivers/hwtracing/ptt/hisi_ptt.c
450
struct kobject *kobj = &hisi_ptt->hisi_ptt_pmu.dev->kobj;
drivers/hwtracing/ptt/hisi_ptt.c
461
static void hisi_ptt_remove_req_filter_attr(struct hisi_ptt *hisi_ptt,
drivers/hwtracing/ptt/hisi_ptt.c
464
struct kobject *kobj = &hisi_ptt->hisi_ptt_pmu.dev->kobj;
drivers/hwtracing/ptt/hisi_ptt.c
470
static int hisi_ptt_create_filter_attr(struct hisi_ptt *hisi_ptt,
drivers/hwtracing/ptt/hisi_ptt.c
476
ret = hisi_ptt_create_rp_filter_attr(hisi_ptt, filter);
drivers/hwtracing/ptt/hisi_ptt.c
478
ret = hisi_ptt_create_req_filter_attr(hisi_ptt, filter);
drivers/hwtracing/ptt/hisi_ptt.c
481
pci_err(hisi_ptt->pdev, "failed to create sysfs attribute for filter %s\n",
drivers/hwtracing/ptt/hisi_ptt.c
487
static void hisi_ptt_remove_filter_attr(struct hisi_ptt *hisi_ptt,
drivers/hwtracing/ptt/hisi_ptt.c
491
hisi_ptt_remove_rp_filter_attr(hisi_ptt, filter);
drivers/hwtracing/ptt/hisi_ptt.c
493
hisi_ptt_remove_req_filter_attr(hisi_ptt, filter);
drivers/hwtracing/ptt/hisi_ptt.c
499
struct hisi_ptt *hisi_ptt = data;
drivers/hwtracing/ptt/hisi_ptt.c
50
mutex_lock(&hisi_ptt->tune_lock);
drivers/hwtracing/ptt/hisi_ptt.c
501
mutex_lock(&hisi_ptt->filter_lock);
drivers/hwtracing/ptt/hisi_ptt.c
503
list_for_each_entry(filter, &hisi_ptt->req_filters, list)
drivers/hwtracing/ptt/hisi_ptt.c
504
hisi_ptt_remove_filter_attr(hisi_ptt, filter);
drivers/hwtracing/ptt/hisi_ptt.c
506
list_for_each_entry(filter, &hisi_ptt->port_filters, list)
drivers/hwtracing/ptt/hisi_ptt.c
507
hisi_ptt_remove_filter_attr(hisi_ptt, filter);
drivers/hwtracing/ptt/hisi_ptt.c
509
hisi_ptt->sysfs_inited = false;
drivers/hwtracing/ptt/hisi_ptt.c
510
mutex_unlock(&hisi_ptt->filter_lock);
drivers/hwtracing/ptt/hisi_ptt.c
513
static int hisi_ptt_init_filter_attributes(struct hisi_ptt *hisi_ptt)
drivers/hwtracing/ptt/hisi_ptt.c
518
mutex_lock(&hisi_ptt->filter_lock);
drivers/hwtracing/ptt/hisi_ptt.c
52
reg = readl(hisi_ptt->iobase + HISI_PTT_TUNING_CTRL);
drivers/hwtracing/ptt/hisi_ptt.c
525
ret = devm_add_action(&hisi_ptt->pdev->dev,
drivers/hwtracing/ptt/hisi_ptt.c
527
hisi_ptt);
drivers/hwtracing/ptt/hisi_ptt.c
531
list_for_each_entry(filter, &hisi_ptt->port_filters, list) {
drivers/hwtracing/ptt/hisi_ptt.c
532
ret = hisi_ptt_create_filter_attr(hisi_ptt, filter);
drivers/hwtracing/ptt/hisi_ptt.c
537
list_for_each_entry(filter, &hisi_ptt->req_filters, list) {
drivers/hwtracing/ptt/hisi_ptt.c
538
ret = hisi_ptt_create_filter_attr(hisi_ptt, filter);
drivers/hwtracing/ptt/hisi_ptt.c
543
hisi_ptt->sysfs_inited = true;
drivers/hwtracing/ptt/hisi_ptt.c
545
mutex_unlock(&hisi_ptt->filter_lock);
drivers/hwtracing/ptt/hisi_ptt.c
554
struct hisi_ptt *hisi_ptt;
drivers/hwtracing/ptt/hisi_ptt.c
556
hisi_ptt = container_of(delayed_work, struct hisi_ptt, work);
drivers/hwtracing/ptt/hisi_ptt.c
558
if (!mutex_trylock(&hisi_ptt->filter_lock)) {
drivers/hwtracing/ptt/hisi_ptt.c
559
schedule_delayed_work(&hisi_ptt->work, HISI_PTT_WORK_DELAY_MS);
drivers/hwtracing/ptt/hisi_ptt.c
56
writel(reg, hisi_ptt->iobase + HISI_PTT_TUNING_CTRL);
drivers/hwtracing/ptt/hisi_ptt.c
563
while (kfifo_get(&hisi_ptt->filter_update_kfifo, &info)) {
drivers/hwtracing/ptt/hisi_ptt.c
570
filter = hisi_ptt_alloc_add_filter(hisi_ptt, info.devid, info.is_port);
drivers/hwtracing/ptt/hisi_ptt.c
580
if (hisi_ptt->sysfs_inited &&
drivers/hwtracing/ptt/hisi_ptt.c
581
hisi_ptt_create_filter_attr(hisi_ptt, filter)) {
drivers/hwtracing/ptt/hisi_ptt.c
582
hisi_ptt_del_free_filter(hisi_ptt, filter);
drivers/hwtracing/ptt/hisi_ptt.c
589
target_list = info.is_port ? &hisi_ptt->port_filters :
drivers/hwtracing/ptt/hisi_ptt.c
59
writel(~0U, hisi_ptt->iobase + HISI_PTT_TUNING_DATA);
drivers/hwtracing/ptt/hisi_ptt.c
590
&hisi_ptt->req_filters;
drivers/hwtracing/ptt/hisi_ptt.c
594
if (hisi_ptt->sysfs_inited)
drivers/hwtracing/ptt/hisi_ptt.c
595
hisi_ptt_remove_filter_attr(hisi_ptt, filter);
drivers/hwtracing/ptt/hisi_ptt.c
597
hisi_ptt_del_free_filter(hisi_ptt, filter);
drivers/hwtracing/ptt/hisi_ptt.c
603
mutex_unlock(&hisi_ptt->filter_lock);
drivers/hwtracing/ptt/hisi_ptt.c
61
if (!hisi_ptt_wait_tuning_finish(hisi_ptt)) {
drivers/hwtracing/ptt/hisi_ptt.c
613
struct hisi_ptt *hisi_ptt = container_of(nb, struct hisi_ptt, hisi_ptt_nb);
drivers/hwtracing/ptt/hisi_ptt.c
62
mutex_unlock(&hisi_ptt->tune_lock);
drivers/hwtracing/ptt/hisi_ptt.c
625
if (port_devid < hisi_ptt->lower_bdf ||
drivers/hwtracing/ptt/hisi_ptt.c
626
port_devid > hisi_ptt->upper_bdf)
drivers/hwtracing/ptt/hisi_ptt.c
649
if (kfifo_in_spinlocked(&hisi_ptt->filter_update_kfifo, &info, 1,
drivers/hwtracing/ptt/hisi_ptt.c
650
&hisi_ptt->filter_update_lock))
drivers/hwtracing/ptt/hisi_ptt.c
651
schedule_delayed_work(&hisi_ptt->work, 0);
drivers/hwtracing/ptt/hisi_ptt.c
653
pci_warn(hisi_ptt->pdev,
drivers/hwtracing/ptt/hisi_ptt.c
66
reg = readl(hisi_ptt->iobase + HISI_PTT_TUNING_DATA);
drivers/hwtracing/ptt/hisi_ptt.c
664
struct hisi_ptt *hisi_ptt = data;
drivers/hwtracing/ptt/hisi_ptt.c
671
if (port_devid < hisi_ptt->lower_bdf ||
drivers/hwtracing/ptt/hisi_ptt.c
672
port_devid > hisi_ptt->upper_bdf)
drivers/hwtracing/ptt/hisi_ptt.c
680
filter = hisi_ptt_alloc_add_filter(hisi_ptt, pci_dev_id(pdev),
drivers/hwtracing/ptt/hisi_ptt.c
691
struct hisi_ptt *hisi_ptt = data;
drivers/hwtracing/ptt/hisi_ptt.c
693
list_for_each_entry_safe(filter, tmp, &hisi_ptt->req_filters, list)
drivers/hwtracing/ptt/hisi_ptt.c
694
hisi_ptt_del_free_filter(hisi_ptt, filter);
drivers/hwtracing/ptt/hisi_ptt.c
696
list_for_each_entry_safe(filter, tmp, &hisi_ptt->port_filters, list)
drivers/hwtracing/ptt/hisi_ptt.c
697
hisi_ptt_del_free_filter(hisi_ptt, filter);
drivers/hwtracing/ptt/hisi_ptt.c
70
mutex_unlock(&hisi_ptt->tune_lock);
drivers/hwtracing/ptt/hisi_ptt.c
700
static int hisi_ptt_config_trace_buf(struct hisi_ptt *hisi_ptt)
drivers/hwtracing/ptt/hisi_ptt.c
702
struct hisi_ptt_trace_ctrl *ctrl = &hisi_ptt->trace_ctrl;
drivers/hwtracing/ptt/hisi_ptt.c
703
struct device *dev = &hisi_ptt->pdev->dev;
drivers/hwtracing/ptt/hisi_ptt.c
722
hisi_ptt->iobase + HISI_PTT_TRACE_ADDR_BASE_LO_0 +
drivers/hwtracing/ptt/hisi_ptt.c
725
hisi_ptt->iobase + HISI_PTT_TRACE_ADDR_BASE_HI_0 +
drivers/hwtracing/ptt/hisi_ptt.c
728
writel(HISI_PTT_TRACE_BUF_SIZE, hisi_ptt->iobase + HISI_PTT_TRACE_ADDR_SIZE);
drivers/hwtracing/ptt/hisi_ptt.c
733
static int hisi_ptt_init_ctrls(struct hisi_ptt *hisi_ptt)
drivers/hwtracing/ptt/hisi_ptt.c
735
struct pci_dev *pdev = hisi_ptt->pdev;
drivers/hwtracing/ptt/hisi_ptt.c
740
INIT_DELAYED_WORK(&hisi_ptt->work, hisi_ptt_update_filters);
drivers/hwtracing/ptt/hisi_ptt.c
741
INIT_KFIFO(hisi_ptt->filter_update_kfifo);
drivers/hwtracing/ptt/hisi_ptt.c
742
spin_lock_init(&hisi_ptt->filter_update_lock);
drivers/hwtracing/ptt/hisi_ptt.c
744
INIT_LIST_HEAD(&hisi_ptt->port_filters);
drivers/hwtracing/ptt/hisi_ptt.c
745
INIT_LIST_HEAD(&hisi_ptt->req_filters);
drivers/hwtracing/ptt/hisi_ptt.c
746
mutex_init(&hisi_ptt->filter_lock);
drivers/hwtracing/ptt/hisi_ptt.c
748
ret = hisi_ptt_config_trace_buf(hisi_ptt);
drivers/hwtracing/ptt/hisi_ptt.c
761
reg = readl(hisi_ptt->iobase + HISI_PTT_DEVICE_RANGE);
drivers/hwtracing/ptt/hisi_ptt.c
762
hisi_ptt->upper_bdf = FIELD_GET(HISI_PTT_DEVICE_RANGE_UPPER, reg);
drivers/hwtracing/ptt/hisi_ptt.c
763
hisi_ptt->lower_bdf = FIELD_GET(HISI_PTT_DEVICE_RANGE_LOWER, reg);
drivers/hwtracing/ptt/hisi_ptt.c
765
bus = pci_find_bus(pci_domain_nr(pdev->bus), PCI_BUS_NUM(hisi_ptt->upper_bdf));
drivers/hwtracing/ptt/hisi_ptt.c
767
pci_walk_bus(bus, hisi_ptt_init_filters, hisi_ptt);
drivers/hwtracing/ptt/hisi_ptt.c
769
ret = devm_add_action_or_reset(&pdev->dev, hisi_ptt_release_filters, hisi_ptt);
drivers/hwtracing/ptt/hisi_ptt.c
773
hisi_ptt->trace_ctrl.on_cpu = -1;
drivers/hwtracing/ptt/hisi_ptt.c
78
struct hisi_ptt *hisi_ptt = to_hisi_ptt(dev_get_drvdata(dev));
drivers/hwtracing/ptt/hisi_ptt.c
780
struct hisi_ptt *hisi_ptt = to_hisi_ptt(dev_get_drvdata(dev));
drivers/hwtracing/ptt/hisi_ptt.c
781
const cpumask_t *cpumask = cpumask_of_node(dev_to_node(&hisi_ptt->pdev->dev));
drivers/hwtracing/ptt/hisi_ptt.c
90
mutex_lock(&hisi_ptt->tune_lock);
drivers/hwtracing/ptt/hisi_ptt.c
92
reg = readl(hisi_ptt->iobase + HISI_PTT_TUNING_CTRL);
drivers/hwtracing/ptt/hisi_ptt.c
943
static int hisi_ptt_trace_valid_filter(struct hisi_ptt *hisi_ptt, u64 config)
drivers/hwtracing/ptt/hisi_ptt.c
945
unsigned long val, port_mask = hisi_ptt->port_mask;
drivers/hwtracing/ptt/hisi_ptt.c
949
hisi_ptt->trace_ctrl.is_port = FIELD_GET(HISI_PTT_PMU_FILTER_IS_PORT, config);
drivers/hwtracing/ptt/hisi_ptt.c
96
writel(reg, hisi_ptt->iobase + HISI_PTT_TUNING_CTRL);
drivers/hwtracing/ptt/hisi_ptt.c
961
mutex_lock(&hisi_ptt->filter_lock);
drivers/hwtracing/ptt/hisi_ptt.c
962
if (!hisi_ptt->trace_ctrl.is_port) {
drivers/hwtracing/ptt/hisi_ptt.c
963
list_for_each_entry(filter, &hisi_ptt->req_filters, list) {
drivers/hwtracing/ptt/hisi_ptt.c
973
mutex_unlock(&hisi_ptt->filter_lock);
drivers/hwtracing/ptt/hisi_ptt.c
977
static void hisi_ptt_pmu_init_configs(struct hisi_ptt *hisi_ptt, struct perf_event *event)
drivers/hwtracing/ptt/hisi_ptt.c
979
struct hisi_ptt_trace_ctrl *ctrl = &hisi_ptt->trace_ctrl;
drivers/hwtracing/ptt/hisi_ptt.c
98
hisi_ptt->iobase + HISI_PTT_TUNING_DATA);
drivers/hwtracing/ptt/hisi_ptt.c
983
hisi_ptt->trace_ctrl.filter = val;
drivers/hwtracing/ptt/hisi_ptt.c
997
struct hisi_ptt *hisi_ptt = to_hisi_ptt(event->pmu);
drivers/hwtracing/ptt/hisi_ptt.h
100
struct hisi_ptt *hisi_ptt;
drivers/hwtracing/ptt/hisi_ptt.h
255
#define to_hisi_ptt(pmu) container_of(pmu, struct hisi_ptt, hisi_ptt_pmu)
tools/perf/util/hisi-ptt.c
137
struct hisi_ptt *ptt = container_of(session->auxtrace, struct hisi_ptt,
tools/perf/util/hisi-ptt.c
147
struct hisi_ptt *ptt = container_of(session->auxtrace, struct hisi_ptt, auxtrace);
tools/perf/util/hisi-ptt.c
164
struct hisi_ptt *ptt;
tools/perf/util/hisi-ptt.c
48
static void hisi_ptt_dump(struct hisi_ptt *ptt __maybe_unused,
tools/perf/util/hisi-ptt.c
71
static void hisi_ptt_dump_event(struct hisi_ptt *ptt, unsigned char *buf,
tools/perf/util/hisi-ptt.c
91
struct hisi_ptt *ptt = container_of(session->auxtrace, struct hisi_ptt,