spe_pmu           103 drivers/perf/arm_spe_pmu.c static u32 arm_spe_pmu_cap_get(struct arm_spe_pmu *spe_pmu, int cap)
spe_pmu           106 drivers/perf/arm_spe_pmu.c 		return !!(spe_pmu->features & arm_spe_pmu_feat_caps[cap]);
spe_pmu           110 drivers/perf/arm_spe_pmu.c 		return spe_pmu->counter_sz;
spe_pmu           112 drivers/perf/arm_spe_pmu.c 		return spe_pmu->min_period;
spe_pmu           124 drivers/perf/arm_spe_pmu.c 	struct arm_spe_pmu *spe_pmu = dev_get_drvdata(dev);
spe_pmu           130 drivers/perf/arm_spe_pmu.c 		arm_spe_pmu_cap_get(spe_pmu, cap));
spe_pmu           239 drivers/perf/arm_spe_pmu.c 	struct arm_spe_pmu *spe_pmu = dev_get_drvdata(dev);
spe_pmu           241 drivers/perf/arm_spe_pmu.c 	return cpumap_print_to_pagebuf(true, buf, &spe_pmu->supported_cpus);
spe_pmu           285 drivers/perf/arm_spe_pmu.c 	struct arm_spe_pmu *spe_pmu = to_spe_pmu(event->pmu);
spe_pmu           290 drivers/perf/arm_spe_pmu.c 	if (period < spe_pmu->min_period)
spe_pmu           291 drivers/perf/arm_spe_pmu.c 		period = spe_pmu->min_period;
spe_pmu           360 drivers/perf/arm_spe_pmu.c 	struct arm_spe_pmu *spe_pmu = to_spe_pmu(handle->event->pmu);
spe_pmu           377 drivers/perf/arm_spe_pmu.c 	if (limit - head < spe_pmu->max_record_sz) {
spe_pmu           388 drivers/perf/arm_spe_pmu.c 	struct arm_spe_pmu *spe_pmu = to_spe_pmu(handle->event->pmu);
spe_pmu           409 drivers/perf/arm_spe_pmu.c 	if (!IS_ALIGNED(head, spe_pmu->align)) {
spe_pmu           410 drivers/perf/arm_spe_pmu.c 		unsigned long delta = roundup(head, spe_pmu->align) - head;
spe_pmu           459 drivers/perf/arm_spe_pmu.c 	struct arm_spe_pmu *spe_pmu = to_spe_pmu(handle->event->pmu);
spe_pmu           467 drivers/perf/arm_spe_pmu.c 	if (limit && (limit - head < spe_pmu->max_record_sz)) {
spe_pmu           663 drivers/perf/arm_spe_pmu.c 	struct arm_spe_pmu *spe_pmu = to_spe_pmu(event->pmu);
spe_pmu           670 drivers/perf/arm_spe_pmu.c 	    !cpumask_test_cpu(event->cpu, &spe_pmu->supported_cpus))
spe_pmu           691 drivers/perf/arm_spe_pmu.c 	    !(spe_pmu->features & SPE_PMU_FEAT_FILT_EVT))
spe_pmu           695 drivers/perf/arm_spe_pmu.c 	    !(spe_pmu->features & SPE_PMU_FEAT_FILT_TYP))
spe_pmu           699 drivers/perf/arm_spe_pmu.c 	    !(spe_pmu->features & SPE_PMU_FEAT_FILT_LAT))
spe_pmu           715 drivers/perf/arm_spe_pmu.c 	struct arm_spe_pmu *spe_pmu = to_spe_pmu(event->pmu);
spe_pmu           717 drivers/perf/arm_spe_pmu.c 	struct perf_output_handle *handle = this_cpu_ptr(spe_pmu->handle);
spe_pmu           748 drivers/perf/arm_spe_pmu.c 	struct arm_spe_pmu *spe_pmu = to_spe_pmu(event->pmu);
spe_pmu           750 drivers/perf/arm_spe_pmu.c 	struct perf_output_handle *handle = this_cpu_ptr(spe_pmu->handle);
spe_pmu           790 drivers/perf/arm_spe_pmu.c 	struct arm_spe_pmu *spe_pmu = to_spe_pmu(event->pmu);
spe_pmu           794 drivers/perf/arm_spe_pmu.c 	if (!cpumask_test_cpu(cpu, &spe_pmu->supported_cpus))
spe_pmu           877 drivers/perf/arm_spe_pmu.c static int arm_spe_pmu_perf_init(struct arm_spe_pmu *spe_pmu)
spe_pmu           883 drivers/perf/arm_spe_pmu.c 	struct device *dev = &spe_pmu->pdev->dev;
spe_pmu           885 drivers/perf/arm_spe_pmu.c 	spe_pmu->pmu = (struct pmu) {
spe_pmu           917 drivers/perf/arm_spe_pmu.c 	return perf_pmu_register(&spe_pmu->pmu, name, -1);
spe_pmu           920 drivers/perf/arm_spe_pmu.c static void arm_spe_pmu_perf_destroy(struct arm_spe_pmu *spe_pmu)
spe_pmu           922 drivers/perf/arm_spe_pmu.c 	perf_pmu_unregister(&spe_pmu->pmu);
spe_pmu           929 drivers/perf/arm_spe_pmu.c 	struct arm_spe_pmu *spe_pmu = info;
spe_pmu           930 drivers/perf/arm_spe_pmu.c 	struct device *dev = &spe_pmu->pdev->dev;
spe_pmu           951 drivers/perf/arm_spe_pmu.c 	spe_pmu->align = 1 << fld;
spe_pmu           952 drivers/perf/arm_spe_pmu.c 	if (spe_pmu->align > SZ_2K) {
spe_pmu           961 drivers/perf/arm_spe_pmu.c 		spe_pmu->features |= SPE_PMU_FEAT_FILT_EVT;
spe_pmu           964 drivers/perf/arm_spe_pmu.c 		spe_pmu->features |= SPE_PMU_FEAT_FILT_TYP;
spe_pmu           967 drivers/perf/arm_spe_pmu.c 		spe_pmu->features |= SPE_PMU_FEAT_FILT_LAT;
spe_pmu           970 drivers/perf/arm_spe_pmu.c 		spe_pmu->features |= SPE_PMU_FEAT_ARCH_INST;
spe_pmu           973 drivers/perf/arm_spe_pmu.c 		spe_pmu->features |= SPE_PMU_FEAT_LDS;
spe_pmu           976 drivers/perf/arm_spe_pmu.c 		spe_pmu->features |= SPE_PMU_FEAT_ERND;
spe_pmu           982 drivers/perf/arm_spe_pmu.c 		spe_pmu->min_period = 256;
spe_pmu           985 drivers/perf/arm_spe_pmu.c 		spe_pmu->min_period = 512;
spe_pmu           988 drivers/perf/arm_spe_pmu.c 		spe_pmu->min_period = 768;
spe_pmu           991 drivers/perf/arm_spe_pmu.c 		spe_pmu->min_period = 1024;
spe_pmu           994 drivers/perf/arm_spe_pmu.c 		spe_pmu->min_period = 1536;
spe_pmu           997 drivers/perf/arm_spe_pmu.c 		spe_pmu->min_period = 2048;
spe_pmu          1000 drivers/perf/arm_spe_pmu.c 		spe_pmu->min_period = 3072;
spe_pmu          1007 drivers/perf/arm_spe_pmu.c 		spe_pmu->min_period = 4096;
spe_pmu          1012 drivers/perf/arm_spe_pmu.c 	spe_pmu->max_record_sz = 1 << fld;
spe_pmu          1013 drivers/perf/arm_spe_pmu.c 	if (spe_pmu->max_record_sz > SZ_2K || spe_pmu->max_record_sz < 16) {
spe_pmu          1026 drivers/perf/arm_spe_pmu.c 		spe_pmu->counter_sz = 12;
spe_pmu          1031 drivers/perf/arm_spe_pmu.c 		 cpumask_pr_args(&spe_pmu->supported_cpus),
spe_pmu          1032 drivers/perf/arm_spe_pmu.c 		 spe_pmu->max_record_sz, spe_pmu->align, spe_pmu->features);
spe_pmu          1034 drivers/perf/arm_spe_pmu.c 	spe_pmu->features |= SPE_PMU_FEAT_DEV_PROBED;
spe_pmu          1057 drivers/perf/arm_spe_pmu.c 	struct arm_spe_pmu *spe_pmu = info;
spe_pmu          1060 drivers/perf/arm_spe_pmu.c 	enable_percpu_irq(spe_pmu->irq, IRQ_TYPE_NONE);
spe_pmu          1065 drivers/perf/arm_spe_pmu.c 	struct arm_spe_pmu *spe_pmu = info;
spe_pmu          1067 drivers/perf/arm_spe_pmu.c 	disable_percpu_irq(spe_pmu->irq);
spe_pmu          1073 drivers/perf/arm_spe_pmu.c 	struct arm_spe_pmu *spe_pmu;
spe_pmu          1075 drivers/perf/arm_spe_pmu.c 	spe_pmu = hlist_entry_safe(node, struct arm_spe_pmu, hotplug_node);
spe_pmu          1076 drivers/perf/arm_spe_pmu.c 	if (!cpumask_test_cpu(cpu, &spe_pmu->supported_cpus))
spe_pmu          1079 drivers/perf/arm_spe_pmu.c 	__arm_spe_pmu_setup_one(spe_pmu);
spe_pmu          1085 drivers/perf/arm_spe_pmu.c 	struct arm_spe_pmu *spe_pmu;
spe_pmu          1087 drivers/perf/arm_spe_pmu.c 	spe_pmu = hlist_entry_safe(node, struct arm_spe_pmu, hotplug_node);
spe_pmu          1088 drivers/perf/arm_spe_pmu.c 	if (!cpumask_test_cpu(cpu, &spe_pmu->supported_cpus))
spe_pmu          1091 drivers/perf/arm_spe_pmu.c 	__arm_spe_pmu_stop_one(spe_pmu);
spe_pmu          1095 drivers/perf/arm_spe_pmu.c static int arm_spe_pmu_dev_init(struct arm_spe_pmu *spe_pmu)
spe_pmu          1098 drivers/perf/arm_spe_pmu.c 	cpumask_t *mask = &spe_pmu->supported_cpus;
spe_pmu          1101 drivers/perf/arm_spe_pmu.c 	ret = smp_call_function_any(mask,  __arm_spe_pmu_dev_probe, spe_pmu, 1);
spe_pmu          1102 drivers/perf/arm_spe_pmu.c 	if (ret || !(spe_pmu->features & SPE_PMU_FEAT_DEV_PROBED))
spe_pmu          1106 drivers/perf/arm_spe_pmu.c 	ret = request_percpu_irq(spe_pmu->irq, arm_spe_pmu_irq_handler, DRVNAME,
spe_pmu          1107 drivers/perf/arm_spe_pmu.c 				 spe_pmu->handle);
spe_pmu          1117 drivers/perf/arm_spe_pmu.c 				       &spe_pmu->hotplug_node);
spe_pmu          1119 drivers/perf/arm_spe_pmu.c 		free_percpu_irq(spe_pmu->irq, spe_pmu->handle);
spe_pmu          1124 drivers/perf/arm_spe_pmu.c static void arm_spe_pmu_dev_teardown(struct arm_spe_pmu *spe_pmu)
spe_pmu          1126 drivers/perf/arm_spe_pmu.c 	cpuhp_state_remove_instance(arm_spe_pmu_online, &spe_pmu->hotplug_node);
spe_pmu          1127 drivers/perf/arm_spe_pmu.c 	free_percpu_irq(spe_pmu->irq, spe_pmu->handle);
spe_pmu          1131 drivers/perf/arm_spe_pmu.c static int arm_spe_pmu_irq_probe(struct arm_spe_pmu *spe_pmu)
spe_pmu          1133 drivers/perf/arm_spe_pmu.c 	struct platform_device *pdev = spe_pmu->pdev;
spe_pmu          1146 drivers/perf/arm_spe_pmu.c 	if (irq_get_percpu_devid_partition(irq, &spe_pmu->supported_cpus)) {
spe_pmu          1151 drivers/perf/arm_spe_pmu.c 	spe_pmu->irq = irq;
spe_pmu          1170 drivers/perf/arm_spe_pmu.c 	struct arm_spe_pmu *spe_pmu;
spe_pmu          1182 drivers/perf/arm_spe_pmu.c 	spe_pmu = devm_kzalloc(dev, sizeof(*spe_pmu), GFP_KERNEL);
spe_pmu          1183 drivers/perf/arm_spe_pmu.c 	if (!spe_pmu) {
spe_pmu          1188 drivers/perf/arm_spe_pmu.c 	spe_pmu->handle = alloc_percpu(typeof(*spe_pmu->handle));
spe_pmu          1189 drivers/perf/arm_spe_pmu.c 	if (!spe_pmu->handle)
spe_pmu          1192 drivers/perf/arm_spe_pmu.c 	spe_pmu->pdev = pdev;
spe_pmu          1193 drivers/perf/arm_spe_pmu.c 	platform_set_drvdata(pdev, spe_pmu);
spe_pmu          1195 drivers/perf/arm_spe_pmu.c 	ret = arm_spe_pmu_irq_probe(spe_pmu);
spe_pmu          1199 drivers/perf/arm_spe_pmu.c 	ret = arm_spe_pmu_dev_init(spe_pmu);
spe_pmu          1203 drivers/perf/arm_spe_pmu.c 	ret = arm_spe_pmu_perf_init(spe_pmu);
spe_pmu          1210 drivers/perf/arm_spe_pmu.c 	arm_spe_pmu_dev_teardown(spe_pmu);
spe_pmu          1212 drivers/perf/arm_spe_pmu.c 	free_percpu(spe_pmu->handle);
spe_pmu          1218 drivers/perf/arm_spe_pmu.c 	struct arm_spe_pmu *spe_pmu = platform_get_drvdata(pdev);
spe_pmu          1220 drivers/perf/arm_spe_pmu.c 	arm_spe_pmu_perf_destroy(spe_pmu);
spe_pmu          1221 drivers/perf/arm_spe_pmu.c 	arm_spe_pmu_dev_teardown(spe_pmu);
spe_pmu          1222 drivers/perf/arm_spe_pmu.c 	free_percpu(spe_pmu->handle);