static int init_cpu_pmu(void) { int i, irqs, err = 0; struct platform_device *pdev = pmu_devices[ARM_PMU_DEVICE_CPU]; if (!pdev) return -ENODEV; irqs = pdev->num_resources; /* * If we have a single PMU interrupt that we can't shift, assume that * we're running on a uniprocessor machine and continue. */ if (irqs == 1 && !irq_can_set_affinity(platform_get_irq(pdev, 0))) return 0; for (i = 0; i < irqs; ++i) { err = set_irq_affinity(platform_get_irq(pdev, i), i); if (err) break; } return err; }
static int init_cpu_pmu(void) { int i, err = 0; struct platform_device *pdev = pmu_devices[ARM_PMU_DEVICE_CPU]; if (!pdev) { err = -ENODEV; goto out; } for (i = 0; i < pdev->num_resources; ++i) { err = set_irq_affinity(platform_get_irq(pdev, i), i); if (err) break; } out: return err; }
int init_pmu_single(int cpu) { int irqs, err = 0; struct platform_device *pdev = pmu_devices[ARM_PMU_DEVICE_CPU]; if (!pdev) return -ENODEV; irqs = pdev->num_resources; /* * If we have a single PMU interrupt that we can't shift, assume that * we're running on a uniprocessor machine and continue. */ if (irqs == 1 && !irq_can_set_affinity(platform_get_irq(pdev, 0))) return 0; err = set_irq_affinity(platform_get_irq(pdev, cpu), cpu); return err; }