linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Zhou Qiao(周侨)" <qiaozhou@asrmicro.com>
To: "Thomas Gleixner" <tglx@linutronix.de>
Cc: <jason@lakedaemon.net>, <linux-kernel@vger.kernel.org>
Subject: RE: [Questions]: how to extend nr_irqs for arch arm64
Date: Mon, 11 Jan 2016 16:45:43 +0800	[thread overview]
Message-ID: <F297158F9216834BAB1B3BCC98DBDCCB42D2DE@mailsh.asrmicro.com> (raw)
In-Reply-To: alpine.DEB.2.11.1601110856120.3575@nanos

> -----Original Message-----
> From: Thomas Gleixner [mailto:tglx@linutronix.de]
> Sent: Monday, January 11, 2016 4:04 PM
> To: Zhou Qiao(周侨)
> Cc: jason@lakedaemon.net; linux-kernel@vger.kernel.org
> Subject: Re: [Questions]: how to extend nr_irqs for arch arm64
> 
> On Mon, 11 Jan 2016, Zhou Qiao(周侨) wrote:
> 
> > The nr_irqs is set to NR_IRQS by default and NR_IRQS is small(64).
> > Arch/arm platforms will re-set nr_irqs to a larger value. I didn't
> > find similar way for arm64. The way I can think of is to redefine
> > NR_IRQS. But according comments in include/asm-generic/irq.h, NR_IRQS
> > should not be a large value. so what's the preferred way to extend
> > nr_irqs, for arm64 specifically? Thanks in advance.
> 
> With SPARSE_IRQ enabled the core will modify nr_irqs with the following
> mechanims:
> 
>  - Early boot: arch_probe_nr_irqs(). If the return value of that
> function is >
>    	       NR_IRQS then it will be set to that.
> 
> 	       This is used for interrupts which have to be allocated and
> 	       assigned in early boot, but that's really only for legacy
> 	       purposes. So arm64 should not use that at all.
Agree. Thanks for the details.
> 
>  - Runtime:    The core dynamically increases nr_irqs up to
> IRQ_BITMAP_BITS,
>     	       which is NR_IRQS + 8192.
> 
> The runtime increase is happening, when interrupts are allocated. And
> you won't notice unless you try to extend nr_irqs above NR_IRQS + 8192.
> So there is nothing to do for arm64, it should just work.
I met an issue here. The nr_irqs is extended when the start_irq + cnt >
nr_irqs. So when nr_irqs is not extended(still 64), a device with a large
hr_irq(70) will get a wrong virq. since it will be mod by nr_irqs before
actually allocating the descriptor in irq_domain_alloc_descs. I don't know
what I missed.

static int irq_domain_alloc_descs(int virq, unsigned int cnt,
                  irq_hw_number_t hwirq, int node)
{
    unsigned int hint;

    if (virq >= 0) {
        virq = irq_alloc_descs(virq, virq, cnt, node);
    } else {
        hint = hwirq % nr_irqs;
        if (hint == 0)
            hint++;
        virq = irq_alloc_descs_from(hint, cnt, node);
        if (virq <= 0 && hint > 1)
            virq = irq_alloc_descs_from(1, cnt, node);
    }

    return virq;
}
> 
> Thanks,
> 
> 	tglx

  reply	other threads:[~2016-01-11  8:46 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-11  3:18 [Questions]: how to extend nr_irqs for arch arm64 Zhou Qiao(周侨)
2016-01-11  8:03 ` Thomas Gleixner
2016-01-11  8:45   ` Zhou Qiao(周侨) [this message]
2016-01-11  8:50     ` Thomas Gleixner
2016-01-11  9:04       ` Zhou Qiao(周侨)
2016-01-11  9:17         ` Thomas Gleixner
2016-01-11 11:15           ` Zhou Qiao(周侨)

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=F297158F9216834BAB1B3BCC98DBDCCB42D2DE@mailsh.asrmicro.com \
    --to=qiaozhou@asrmicro.com \
    --cc=jason@lakedaemon.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).