2006-09-08 19:22:44

by Kevin Hilman

[permalink] [raw]
Subject: [PATCH -rt] use SA_NODELAY for XScale PMU interrupts

In the XScale oprofile support, the performance monitoring unit (PMU)
triggers interrupts and the ISR reads out the performance data. These
ISRs are currently set to SA_INTERRUPT. In order to get accurate
performance and profiling data under PREEMPT_RT, these should use
SA_NODELAY. The functions called by this ISR are limited to
drivers/oprofile functions.

Patch against 2.6.18-rt8

Signed-off-by: Kevin Hilman <[email protected]>

Index: dev/arch/arm/oprofile/op_model_xscale.c
===================================================================
--- dev.orig/arch/arm/oprofile/op_model_xscale.c
+++ dev/arch/arm/oprofile/op_model_xscale.c
@@ -14,12 +14,14 @@
* @author Zwane Mwaikambo
*/

-/* #define DEBUG */
+#define DEBUG
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/sched.h>
#include <linux/oprofile.h>
#include <linux/interrupt.h>
+#include <linux/irq.h>
+
#include <asm/irq.h>
#include <asm/system.h>

@@ -383,8 +385,9 @@ static int xscale_pmu_start(void)
{
int ret;
u32 pmnc = read_pmnc();
+ int irq_flags = SA_INTERRUPT | SA_NODELAY;

- ret = request_irq(XSCALE_PMU_IRQ, xscale_pmu_interrupt, SA_INTERRUPT,
+ ret = request_irq(XSCALE_PMU_IRQ, xscale_pmu_interrupt, irq_flags,
"XScale PMU", (void *)results);

if (ret < 0) {


2006-09-08 19:46:46

by Kevin Hilman

[permalink] [raw]
Subject: Re: [PATCH -rt] use SA_NODELAY for XScale PMU interrupts

Kevin Hilman wrote:
> In the XScale oprofile support, the performance monitoring unit (PMU)
> triggers interrupts and the ISR reads out the performance data. These
> ISRs are currently set to SA_INTERRUPT. In order to get accurate
> performance and profiling data under PREEMPT_RT, these should use
> SA_NODELAY. The functions called by this ISR are limited to
> drivers/oprofile functions.
>
> Patch against 2.6.18-rt8
>
> Signed-off-by: Kevin Hilman <[email protected]>

Resend, without the #define DEBUG.

Index: dev/arch/arm/oprofile/op_model_xscale.c
===================================================================
--- dev.orig/arch/arm/oprofile/op_model_xscale.c
+++ dev/arch/arm/oprofile/op_model_xscale.c
@@ -20,6 +20,8 @@
#include <linux/sched.h>
#include <linux/oprofile.h>
#include <linux/interrupt.h>
+#include <linux/irq.h>
+
#include <asm/irq.h>
#include <asm/system.h>

@@ -383,8 +385,9 @@ static int xscale_pmu_start(void)
{
int ret;
u32 pmnc = read_pmnc();
+ int irq_flags = SA_INTERRUPT | SA_NODELAY;

- ret = request_irq(XSCALE_PMU_IRQ, xscale_pmu_interrupt, SA_INTERRUPT,
+ ret = request_irq(XSCALE_PMU_IRQ, xscale_pmu_interrupt, irq_flags,
"XScale PMU", (void *)results);

if (ret < 0) {

2006-09-08 21:28:20

by Arjan van de Ven

[permalink] [raw]
Subject: Re: [PATCH -rt] use SA_NODELAY for XScale PMU interrupts

On Fri, 2006-09-08 at 12:22 -0700, Kevin Hilman wrote:
> In the XScale oprofile support, the performance monitoring unit (PMU)
> triggers interrupts and the ISR reads out the performance data. These
> ISRs are currently set to SA_INTERRUPT. In order to get accurate
> performance and profiling data under PREEMPT_RT, these should use
> SA_NODELAY. The functions called by this ISR are limited to
> drivers/oprofile functions.
>
> Patch against 2.6.18-rt8


hmm I thought the SA_ flags were deprecated ???


2006-09-08 22:48:44

by Kevin Hilman

[permalink] [raw]
Subject: Re: [PATCH -rt] use SA_NODELAY for XScale PMU interrupts

Arjan van de Ven wrote:
> On Fri, 2006-09-08 at 12:22 -0700, Kevin Hilman wrote:
>> In the XScale oprofile support, the performance monitoring unit (PMU)
>> triggers interrupts and the ISR reads out the performance data. These
>> ISRs are currently set to SA_INTERRUPT. In order to get accurate
>> performance and profiling data under PREEMPT_RT, these should use
>> SA_NODELAY. The functions called by this ISR are limited to
>> drivers/oprofile functions.
>>
>> Patch against 2.6.18-rt8
>
> hmm I thought the SA_ flags were deprecated ???
>

Sorry, although I said 2.6.18-rt8, the patch is against 2.6.17-rt8,
where the SA_ flags are still used.

Kevin