linux-mips
[Top] [All Lists]

Re: MIPS: Octeon: mailbox_interrupt is not registered as per cpu

To: SAURABH MALPANI <saurabh140585@gmail.com>
Subject: Re: MIPS: Octeon: mailbox_interrupt is not registered as per cpu
From: David Daney <david.daney@cavium.com>
Date: Tue, 06 Sep 2011 12:17:04 -0700
Cc: linux-mips@linux-mips.org
In-reply-to: <CAFsuBjU_VnUPL+hpQV=m1HNJ6Fis38hyToOHBgROmiYYTEQHyQ@mail.gmail.com>
References: <CAFsuBjW4XZy6x4gDL+0cw92jUbuEodF4vzCcCijQDize97wkNQ@mail.gmail.com> <4E6668A4.8010300@cavium.com> <CAFsuBjU_VnUPL+hpQV=m1HNJ6Fis38hyToOHBgROmiYYTEQHyQ@mail.gmail.com>
Sender: linux-mips-bounce@linux-mips.org
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.15) Gecko/20101027 Fedora/3.0.10-1.fc12 Thunderbird/3.0.10
On 09/06/2011 12:02 PM, SAURABH MALPANI wrote:
Hi David,

Thanks a bunch for clarifying this. Just to complete, I have some code
which calls CHECK_IRQ_PER_CPU(desc->status) after every time a
descriptor is created for an irq. And based on it we create either per
cpu data structures or single data structure for that particular irq.

After your clarification, I can safely create exception for
OCTEON_IRQ_MBOX0 and OCTEON_IRQ_MBOX1 as you mention that missing the
flag is just cosmetic.


Well the performance counter and timer interrupts may suffer in a similar manner.

David Daney


Thanks again
Saurabh


On Wed, Sep 7, 2011 at 12:08 AM, David Daney<david.daney@cavium.com>  wrote:
On 09/05/2011 03:23 AM, SAURABH MALPANI wrote:

Hi,

<Re sending this because last time I am afraid I didn't hit the
correct mail filters.>

Query:

mailbox_interrupt is not registered with IRQF_PERCPU but it is
supposed to be percpu interrupt. Is that on purpose or a miss?

On Octeon the per-cpuness of a particular irq is a property of the irq
itself rather than being controlled by IRQF_PERCPU.  So other than being
perhaps stylistically in poor taste, no harm is done by omitting IRQF_PERCPU
here.

I am
porting some code from x86 to octeon which requires special handling
for per cpu interrupts.

  void octeon_prepare_cpus(unsigned int max_cpus)
{
          cvmx_write_csr(CVMX_CIU_MBOX_CLRX(cvmx_get_core_num()),
0xffffffff);
          if (request_irq(OCTEON_IRQ_MBOX0, mailbox_interrupt,
IRQF_DISABLED,
                          "mailbox0", mailbox_interrupt)) {
                  panic("Cannot request_irq(OCTEON_IRQ_MBOX0)\n");
          }
          if (request_irq(OCTEON_IRQ_MBOX1, mailbox_interrupt,
IRQF_DISABLED,
                          "mailbox1", mailbox_interrupt)) {
                  panic("Cannot request_irq(OCTEON_IRQ_MBOX1)\n");
          }
}

--
Saurabh









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