linux-mips
[Top] [All Lists]

Re: [PATCH RESEND 16/17] MIPS: make oprofile use cp0_perfcount_irq if it

To: John Crispin <blogic@openwrt.org>
Subject: Re: [PATCH RESEND 16/17] MIPS: make oprofile use cp0_perfcount_irq if it is set
From: Sergei Shtylyov <sshtylyov@mvista.com>
Date: Thu, 12 Jan 2012 18:38:22 +0300
Cc: Ralf Baechle <ralf@linux-mips.org>, linux-mips@linux-mips.org, Felix Fietkau <nbd@openwrt.org>
In-reply-to: <1326314674-9899-16-git-send-email-blogic@openwrt.org>
References: <1326314674-9899-1-git-send-email-blogic@openwrt.org> <1326314674-9899-16-git-send-email-blogic@openwrt.org>
Sender: linux-mips-bounce@linux-mips.org
User-agent: Mozilla/5.0 (X11; Linux i686; rv:6.0) Gecko/20110812 Thunderbird/6.0
Hello.

On 01/11/2012 11:44 PM, John Crispin wrote:

The patch makes the oprofile code use the performance counters irq.

This patch is written by Felix Fietkau.

Signed-off-by: Felix Fietkau<nbd@openwrt.org>
Signed-off-by: John Crispin<blogic@openwrt.org>

@@ -374,6 +379,10 @@ static int __init mipsxx_init(void)
        save_perf_irq = perf_irq;
        perf_irq = mipsxx_perfcount_handler;

+       if (cp0_perfcount_irq>= 0)

BTW, I just noticed. IRQ0 is not a valid IRQ in Linux, request_irq() should fail when passed 0, so this and following check should be '> 0'.

+               return request_irq(cp0_perfcount_irq, mipsxx_perfcount_int,
+                       IRQF_SHARED, "Perfcounter", save_perf_irq);
+
        return 0;
  }

@@ -381,6 +390,9 @@ static void mipsxx_exit(void)
  {
        int counters = op_model_mipsxx_ops.num_counters;

+       if (cp0_perfcount_irq>= 0)
+               free_irq(cp0_perfcount_irq, save_perf_irq);
+
        counters = counters_per_cpu_to_total(counters);
        on_each_cpu(reset_counters, (void *)(long)counters, 1);


WBR, Sergei

<Prev in Thread] Current Thread [Next in Thread>