linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Mike Qiu <qiudayu@linux.vnet.ibm.com>
To: Michael Ellerman <michael@ellerman.id.au>
Cc: linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org,
	tglx@linutronix.de
Subject: Re: [PATCH 2/3] irq: Add hw continuous IRQs map to virtual continuous IRQs support
Date: Wed, 06 Mar 2013 15:02:42 +0800	[thread overview]
Message-ID: <5136EA12.7040703@linux.vnet.ibm.com> (raw)
In-Reply-To: <20130306054203.GA13075@concordia>

于 2013/3/6 13:42, Michael Ellerman 写道:
> On Wed, Mar 06, 2013 at 01:34:58PM +0800, Mike Qiu wrote:
>> 于 2013/3/6 11:54, Michael Ellerman 写道:
>>> On Tue, Mar 05, 2013 at 03:19:57PM +0800, Mike Qiu wrote:
>>>> 于 2013/3/5 10:23, Michael Ellerman 写道:
>>>>> On Tue, Jan 15, 2013 at 03:38:55PM +0800, Mike Qiu wrote:
>>>>>> diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c
>>>>>> index 96f3a1d..38648e6 100644
>>>>>> --- a/kernel/irq/irqdomain.c
>>>>>> +++ b/kernel/irq/irqdomain.c
>>>>>> @@ -636,6 +636,67 @@ int irq_create_strict_mappings(struct irq_domain *domain, unsigned int irq_base,
>>>>>>   }
>>>>>>   EXPORT_SYMBOL_GPL(irq_create_strict_mappings);
>>>>>> +/**
>>>>>> + * irq_create_mapping_many - Map a range of hw IRQs to a range of virtual IRQs
>>>>>> + * @domain: domain owning the interrupt range
>>>>>> + * @hwirq_base: beginning of continuous hardware IRQ range
>>>>>> + * @count: Number of interrupts to map
>>>>> For multiple-MSI the allocated interrupt numbers must be a power-of-2,
>>>>> and must be naturally aligned. I don't /think/ that's a requirement for
>>>>> the virtual numbers, but it's probably best that we do it anyway.
>>>>>
>>>>> So this API needs to specify that it will give you back a power-of-2
>>>>> block that is naturally aligned - otherwise you can't use it for MSI.
>>>> rtas_call will return the numbers of hardware interrupt, and it
>>>> should be power-of-2, as this I think do not need to specify
>>> You're confusing hardware interrupt numbers and virtual interrupt
>>> numbers. My comment is about irq_create_mapping_many(), which returns
>>> virtual interrupt numbers.
>>>
>>> As I said I don't think there is a requirement that the virtual
>>> interrupt numbers are also a power-of-2 naturally aligned block, but we
>>> should allocate them as one anyway, to avoid any issues in future.
>> But for virtual interrupt numbersit should be a power-of-2 naturally
>> aligned block, because it must be continuous, as the MSI-HOWTO.txt says:
>>
>>      4.2.2 pci_enable_msi_block
>>      int pci_enable_msi_block(struct pci_dev *dev, int count)
>>      This variation on the above call allows a device driver to request
>>      multiple MSIs.  The MSI specification only allows interrupts to be
>>      allocated in powers of two, up to a maximum of 2^5 (32).
>>      If this function returns 0, it has succeeded in allocating at least
>>      as many interrupts as the driver requested
>>      (it may have allocated more in order to satisfy the power-of-two
>>      requirement). In this case, the function enables MSI on this device
>>      and updates dev->irq to be the lowest of the new interrupts
>>      assigned to it. The other interrupts assigned to the device are in
>>      the range dev->irq to dev->irq + count - 1.
>>
>> See the last line, that means for the virtual interrupts must be a
>> continuous block.
> In practice I think things could work if we didn't, because we are not
> using the mask routines that assume that layout.
>
> But you're right, we must implement the API as it's specified, so the
> virtual interrupt numbers must be a naturally aligned power-of-2.
Yes, also your opinion is also right, just becasue the API requires
a naturally aligned power-of-2 interrupt numbers, so we need to
implement it like this.

cheers
>
> cheers
>


  reply	other threads:[~2013-03-06  7:03 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-15  7:38 [PATCH 0/3] Enable multiple MSI feature in pSeries Mike Qiu
2013-01-15  7:38 ` [PATCH 1/3] irq: Set multiple MSI descriptor data for multiple IRQs Mike Qiu
2013-06-05 23:03   ` Grant Likely
2013-01-15  7:38 ` [PATCH 2/3] irq: Add hw continuous IRQs map to virtual continuous IRQs support Mike Qiu
2013-03-05  2:23   ` Michael Ellerman
2013-03-05  7:19     ` Mike Qiu
2013-03-06  3:54       ` Michael Ellerman
     [not found]         ` <5136D582.80101@linux.vnet.ibm.com>
2013-03-06  5:42           ` Michael Ellerman
2013-03-06  7:02             ` Mike Qiu [this message]
2013-03-05  2:41   ` Paul Mundt
2013-03-05  7:44     ` Mike Qiu
2013-01-15  7:38 ` [PATCH 3/3] powerpc/pci: Enable pSeries multiple MSI feature Mike Qiu
2013-01-31  2:10 ` [PATCH 0/3] Enable multiple MSI feature in pSeries Mike
2013-02-04  3:23 ` Michael Ellerman
     [not found]   ` <510F2FDB.6020303@linux.vnet.ibm.com>
2013-02-04  5:56     ` Michael Ellerman
2013-02-04  6:43       ` Mike Qiu
2013-03-01  3:07 ` Mike
2013-03-01  3:08 ` Mike
2013-03-01  3:54   ` Michael Ellerman
2013-03-04  3:14     ` Mike Qiu
2013-03-05  0:28       ` Michael Ellerman
2013-05-21 14:45 ` Alexander Gordeev
2013-05-22  0:15   ` Benjamin Herrenschmidt
2013-05-22  6:16     ` Mike Qiu

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=5136EA12.7040703@linux.vnet.ibm.com \
    --to=qiudayu@linux.vnet.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=michael@ellerman.id.au \
    --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).