diff options
Diffstat (limited to 'drivers/perf/arm_pmu_acpi.c')
| -rw-r--r-- | drivers/perf/arm_pmu_acpi.c | 11 | 
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/perf/arm_pmu_acpi.c b/drivers/perf/arm_pmu_acpi.c index 34c862f213c7..0a9b78705ee8 100644 --- a/drivers/perf/arm_pmu_acpi.c +++ b/drivers/perf/arm_pmu_acpi.c @@ -29,6 +29,17 @@ static int arm_pmu_acpi_register_irq(int cpu)  		return -EINVAL;  	gsi = gicc->performance_interrupt; + +	/* +	 * Per the ACPI spec, the MADT cannot describe a PMU that doesn't +	 * have an interrupt. QEMU advertises this by using a GSI of zero, +	 * which is not known to be valid on any hardware despite being +	 * valid per the spec. Take the pragmatic approach and reject a +	 * GSI of zero for now. +	 */ +	if (!gsi) +		return 0; +  	if (gicc->flags & ACPI_MADT_PERFORMANCE_IRQ_MODE)  		trigger = ACPI_EDGE_SENSITIVE;  	else  | 
