Lines Matching +full:secure +full:- +full:reg +full:- +full:access

1 // SPDX-License-Identifier: GPL-2.0
30 int ret = -ENODEV; in probe_current_pmu()
34 for (; info->init != NULL; info++) { in probe_current_pmu()
35 if ((cpuid & info->mask) != info->cpuid) in probe_current_pmu()
37 ret = info->init(pmu); in probe_current_pmu()
48 struct pmu_hw_events __percpu *hw_events = pmu->hw_events; in pmu_parse_percpu_irq()
50 ret = irq_get_percpu_devid_partition(irq, &pmu->supported_cpus); in pmu_parse_percpu_irq()
54 for_each_cpu(cpu, &pmu->supported_cpus) in pmu_parse_percpu_irq()
55 per_cpu(hw_events->irq, cpu) = irq; in pmu_parse_percpu_irq()
62 return !!of_find_property(node, "interrupt-affinity", NULL); in pmu_has_irq_affinity()
71 * If we don't have an interrupt-affinity property, we guess irq in pmu_parse_irq_affinity()
78 dn = of_parse_phandle(node, "interrupt-affinity", i); in pmu_parse_irq_affinity()
80 pr_warn("failed to parse interrupt-affinity[%d] for %pOFn\n", in pmu_parse_irq_affinity()
82 return -EINVAL; in pmu_parse_irq_affinity()
99 struct platform_device *pdev = pmu->plat_device; in pmu_parse_irqs()
100 struct pmu_hw_events __percpu *hw_events = pmu->hw_events; in pmu_parse_irqs()
114 pmu->pmu.capabilities |= PERF_PMU_CAP_NO_INTERRUPT; in pmu_parse_irqs()
115 cpumask_setall(&pmu->supported_cpus); in pmu_parse_irqs()
125 if (nr_cpu_ids != 1 && !pmu_has_irq_affinity(pdev->dev.of_node)) { in pmu_parse_irqs()
126 pr_warn("no interrupt-affinity property for %pOF, guessing.\n", in pmu_parse_irqs()
127 pdev->dev.of_node); in pmu_parse_irqs()
139 return -EINVAL; in pmu_parse_irqs()
142 cpu = pmu_parse_irq_affinity(pdev->dev.of_node, i); in pmu_parse_irqs()
148 if (per_cpu(hw_events->irq, cpu)) { in pmu_parse_irqs()
150 return -EINVAL; in pmu_parse_irqs()
153 per_cpu(hw_events->irq, cpu) = irq; in pmu_parse_irqs()
154 cpumask_set_cpu(cpu, &pmu->supported_cpus); in pmu_parse_irqs()
162 struct pmu_hw_events __percpu *hw_events = armpmu->hw_events; in armpmu_request_irqs()
165 for_each_cpu(cpu, &armpmu->supported_cpus) { in armpmu_request_irqs()
166 int irq = per_cpu(hw_events->irq, cpu); in armpmu_request_irqs()
181 struct pmu_hw_events __percpu *hw_events = armpmu->hw_events; in armpmu_free_irqs()
183 for_each_cpu(cpu, &armpmu->supported_cpus) { in armpmu_free_irqs()
184 int irq = per_cpu(hw_events->irq, cpu); in armpmu_free_irqs()
196 struct device_node *node = pdev->dev.of_node; in arm_pmu_device_probe()
198 int ret = -ENODEV; in arm_pmu_device_probe()
202 return -ENOMEM; in arm_pmu_device_probe()
204 pmu->plat_device = pdev; in arm_pmu_device_probe()
210 if (node && (of_id = of_match_node(of_table, pdev->dev.of_node))) { in arm_pmu_device_probe()
211 init_fn = of_id->data; in arm_pmu_device_probe()
213 pmu->secure_access = of_property_read_bool(pdev->dev.of_node, in arm_pmu_device_probe()
214 "secure-reg-access"); in arm_pmu_device_probe()
216 /* arm64 systems boot only as non-secure */ in arm_pmu_device_probe()
217 if (IS_ENABLED(CONFIG_ARM64) && pmu->secure_access) { in arm_pmu_device_probe()
218 pr_warn("ignoring \"secure-reg-access\" property for arm64\n"); in arm_pmu_device_probe()
219 pmu->secure_access = false; in arm_pmu_device_probe()
224 cpumask_setall(&pmu->supported_cpus); in arm_pmu_device_probe()