diff options
Diffstat (limited to 'arch/arm/kernel')
| -rw-r--r-- | arch/arm/kernel/entry-common.S | 4 | ||||
| -rw-r--r-- | arch/arm/kernel/perf_event_cpu.c | 12 | 
2 files changed, 12 insertions, 4 deletions
| diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S index f8ccc21fa032..4e7f40c577e6 100644 --- a/arch/arm/kernel/entry-common.S +++ b/arch/arm/kernel/entry-common.S @@ -33,7 +33,9 @@ ret_fast_syscall:   UNWIND(.fnstart	)   UNWIND(.cantunwind	)  	disable_irq				@ disable interrupts -	ldr	r1, [tsk, #TI_FLAGS] +	ldr	r1, [tsk, #TI_FLAGS]		@ re-check for syscall tracing +	tst	r1, #_TIF_SYSCALL_WORK +	bne	__sys_trace_return  	tst	r1, #_TIF_WORK_MASK  	bne	fast_work_pending  	asm_trace_hardirqs_on diff --git a/arch/arm/kernel/perf_event_cpu.c b/arch/arm/kernel/perf_event_cpu.c index 91c7ba182dcd..3b8c2833c537 100644 --- a/arch/arm/kernel/perf_event_cpu.c +++ b/arch/arm/kernel/perf_event_cpu.c @@ -303,9 +303,15 @@ static int probe_current_pmu(struct arm_pmu *pmu)  static int of_pmu_irq_cfg(struct platform_device *pdev)  { -	int i; -	int *irqs = kcalloc(pdev->num_resources, sizeof(*irqs), GFP_KERNEL); +	int i, irq; +	int *irqs; +	/* Don't bother with PPIs; they're already affine */ +	irq = platform_get_irq(pdev, 0); +	if (irq >= 0 && irq_is_percpu(irq)) +		return 0; + +	irqs = kcalloc(pdev->num_resources, sizeof(*irqs), GFP_KERNEL);  	if (!irqs)  		return -ENOMEM; @@ -317,7 +323,7 @@ static int of_pmu_irq_cfg(struct platform_device *pdev)  				      i);  		if (!dn) {  			pr_warn("Failed to parse %s/interrupt-affinity[%d]\n", -				of_node_full_name(dn), i); +				of_node_full_name(pdev->dev.of_node), i);  			break;  		} |