From: Jiang Liu <jiang.liu@linux.intel.com>
To: Yijing Wang <wangyijing@huawei.com>,
Bjorn Helgaas <bhelgaas@google.com>,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>,
Grant Likely <grant.likely@linaro.org>,
Marc Zyngier <marc.zyngier@arm.com>,
Yingjoe Chen <yingjoe.chen@mediatek.com>,
Borislav Petkov <bp@alien8.de>, "H. Peter Anvin" <hpa@zytor.com>,
Matthias Brugger <matthias.bgg@gmail.com>
Cc: Tony Luck <tony.luck@intel.com>,
linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org,
linux-arm-kernel@lists.infradead.org
Subject: Re: [Patch V1 0/6] Refine generic/PCI MSI irqodmian interfaces
Date: Thu, 13 Nov 2014 20:39:42 +0800 [thread overview]
Message-ID: <5464A68E.4010004@linux.intel.com> (raw)
In-Reply-To: <5464A3F8.1000807@huawei.com>
On 2014/11/13 20:28, Yijing Wang wrote:
> On 2014/11/13 19:43, Jiang Liu wrote:
>> This patch set is based on tip/irq/irqdomain and tries to refine
>> interfaces to support irqdomain for generic MSI and PCI MSI.
>>
>> Patch 1 is just minor fixes for tip/irq/irqdomain.
>>
>> Patch 2 introduces some helpers to hide struct msi_desc implementation
>> details, so later we could move msi_list from struct pci_dev into
>> struct device to enable generic MSI support.
>
> Hi Gerry,
> I tried to move msi info(eg. msi_list) into struct device, but I found
> DMAR fault interrupt is initialized before the driver core init. And I don't
> know whether there are other devices like ARM consolidator(introduced in GIC v3)
> need to be initialized before driver core. What do you think about this ?
Hi Yijing,
DMAR interrupt doesn't make use of msi_desc, so has no
dependency on msi_list.
Actually there are two levels of generic MSI sharing. The first
level is to share common irq_chip/irqdomain code, such as HPET, DMAR and
HT_IRQ. The second level is to share msi_desc, such as some device
on ARM side as you have mentioned.
With this patch set applied, we achieve level one sharing. For
level two sharing, we need to move msi_list into struct device, refactor
struct msi_desc, and provide a generic pci_enable_msix_range alike
user interfaces. I'm still working on this part, so we could cooperate
with each other.
Thanks!
Gerry
>
> Thanks!
> Yijing.
>
>>
>> Patch 3 introduces msi_domain_{alloc|free}_irqs() which generalize
>> pci_msi_domain_alloc_irqs() to support generic MSI.
>>
>> Patch 4 introduces default data structures and callback implementations
>> to support msi_domain_alloc_irqs(), so reduce burden on generic MSI
>> users.
>>
>> Patch 5 converts PCI MSI to use generic MSI interfaces, and also
>> implement default callbacks for PCI MSI.
>>
>> Patch 6 introduces a mechanism to replace arch_setup_msi_irq()/
>> arch_setup_msi_irqs()/arch_teardown_msi_irq()/arch_teardown_msi_irqs().
>>
>> With this patch set applied, the generic MSI and PCI MSI interfaces
>> are much easier to use. For extreme case, you only need to define
>> a "struct msi_domain_info" and don't need to implement any callbacks,
>> just using the default callbacks is OK:)
>>
>> This patch set is also a preparation for:
>> 1) Kill all weak functions in drivers/pci/msi.c
>> 2) Implement support for non-PCI-compliant MSI device
>>
>> It has been tested on x86 platforms, comments are welcomed!
>>
>> Jiang Liu (6):
>> PCI, MSI: Fix errors caused by commit e5f1a59c4e12
>> PCI, MSI: Introduce helpers to hide struct msi_desc implemenation
>> details
>> genirq: Introduce msi_domain_{alloc|free}_irqs()
>> genirq: Provide default callbacks for msi_domain_ops
>> PCI, MSI: Refine irqdomain interfaces to simplify its usage
>> PCI, MSI: Provide mechanism to alloc/free MSI/MSIX interrupt from
>> irqdomain
>>
>> drivers/pci/msi.c | 170 ++++++++++++++++++++++++++++++++++++++++-----------
>> include/linux/msi.h | 90 ++++++++++++++++++++++++---
>> kernel/irq/msi.c | 150 ++++++++++++++++++++++++++++++++++++++++++++-
>> 3 files changed, 366 insertions(+), 44 deletions(-)
>>
>
>
WARNING: multiple messages have this Message-ID (diff)
From: jiang.liu@linux.intel.com (Jiang Liu)
To: linux-arm-kernel@lists.infradead.org
Subject: [Patch V1 0/6] Refine generic/PCI MSI irqodmian interfaces
Date: Thu, 13 Nov 2014 20:39:42 +0800 [thread overview]
Message-ID: <5464A68E.4010004@linux.intel.com> (raw)
In-Reply-To: <5464A3F8.1000807@huawei.com>
On 2014/11/13 20:28, Yijing Wang wrote:
> On 2014/11/13 19:43, Jiang Liu wrote:
>> This patch set is based on tip/irq/irqdomain and tries to refine
>> interfaces to support irqdomain for generic MSI and PCI MSI.
>>
>> Patch 1 is just minor fixes for tip/irq/irqdomain.
>>
>> Patch 2 introduces some helpers to hide struct msi_desc implementation
>> details, so later we could move msi_list from struct pci_dev into
>> struct device to enable generic MSI support.
>
> Hi Gerry,
> I tried to move msi info(eg. msi_list) into struct device, but I found
> DMAR fault interrupt is initialized before the driver core init. And I don't
> know whether there are other devices like ARM consolidator(introduced in GIC v3)
> need to be initialized before driver core. What do you think about this ?
Hi Yijing,
DMAR interrupt doesn't make use of msi_desc, so has no
dependency on msi_list.
Actually there are two levels of generic MSI sharing. The first
level is to share common irq_chip/irqdomain code, such as HPET, DMAR and
HT_IRQ. The second level is to share msi_desc, such as some device
on ARM side as you have mentioned.
With this patch set applied, we achieve level one sharing. For
level two sharing, we need to move msi_list into struct device, refactor
struct msi_desc, and provide a generic pci_enable_msix_range alike
user interfaces. I'm still working on this part, so we could cooperate
with each other.
Thanks!
Gerry
>
> Thanks!
> Yijing.
>
>>
>> Patch 3 introduces msi_domain_{alloc|free}_irqs() which generalize
>> pci_msi_domain_alloc_irqs() to support generic MSI.
>>
>> Patch 4 introduces default data structures and callback implementations
>> to support msi_domain_alloc_irqs(), so reduce burden on generic MSI
>> users.
>>
>> Patch 5 converts PCI MSI to use generic MSI interfaces, and also
>> implement default callbacks for PCI MSI.
>>
>> Patch 6 introduces a mechanism to replace arch_setup_msi_irq()/
>> arch_setup_msi_irqs()/arch_teardown_msi_irq()/arch_teardown_msi_irqs().
>>
>> With this patch set applied, the generic MSI and PCI MSI interfaces
>> are much easier to use. For extreme case, you only need to define
>> a "struct msi_domain_info" and don't need to implement any callbacks,
>> just using the default callbacks is OK:)
>>
>> This patch set is also a preparation for:
>> 1) Kill all weak functions in drivers/pci/msi.c
>> 2) Implement support for non-PCI-compliant MSI device
>>
>> It has been tested on x86 platforms, comments are welcomed!
>>
>> Jiang Liu (6):
>> PCI, MSI: Fix errors caused by commit e5f1a59c4e12
>> PCI, MSI: Introduce helpers to hide struct msi_desc implemenation
>> details
>> genirq: Introduce msi_domain_{alloc|free}_irqs()
>> genirq: Provide default callbacks for msi_domain_ops
>> PCI, MSI: Refine irqdomain interfaces to simplify its usage
>> PCI, MSI: Provide mechanism to alloc/free MSI/MSIX interrupt from
>> irqdomain
>>
>> drivers/pci/msi.c | 170 ++++++++++++++++++++++++++++++++++++++++-----------
>> include/linux/msi.h | 90 ++++++++++++++++++++++++---
>> kernel/irq/msi.c | 150 ++++++++++++++++++++++++++++++++++++++++++++-
>> 3 files changed, 366 insertions(+), 44 deletions(-)
>>
>
>
next prev parent reply other threads:[~2014-11-13 12:39 UTC|newest]
Thread overview: 74+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-13 11:43 [Patch V1 0/6] Refine generic/PCI MSI irqodmian interfaces Jiang Liu
2014-11-13 11:43 ` Jiang Liu
2014-11-13 11:43 ` [Patch V1 1/6] PCI, MSI: Fix errors caused by commit e5f1a59c4e12 Jiang Liu
2014-11-13 11:43 ` Jiang Liu
2014-11-13 11:43 ` [Patch V1 2/6] PCI, MSI: Introduce helpers to hide struct msi_desc implemenation details Jiang Liu
2014-11-13 11:43 ` Jiang Liu
2014-11-13 11:43 ` [Patch V1 3/6] genirq: Introduce msi_domain_{alloc|free}_irqs() Jiang Liu
2014-11-13 11:43 ` Jiang Liu
2014-11-13 20:23 ` Marc Zyngier
2014-11-13 20:23 ` Marc Zyngier
2014-11-14 0:18 ` Jiang Liu
2014-11-14 0:18 ` Jiang Liu
2014-11-13 11:43 ` [Patch V1 3/6] genirq: Introduce msi_irq_domain_{alloc|free}_irqs() Jiang Liu
2014-11-13 11:43 ` Jiang Liu
2014-11-13 12:34 ` Yijing Wang
2014-11-13 12:34 ` Yijing Wang
2014-11-13 12:41 ` Jiang Liu
2014-11-13 12:41 ` Jiang Liu
2014-11-13 12:57 ` Yijing Wang
2014-11-13 12:57 ` Yijing Wang
2014-11-13 11:43 ` [Patch V1 4/6] genirq: Provide default callbacks for msi_domain_ops Jiang Liu
2014-11-13 11:43 ` Jiang Liu
2014-11-13 11:43 ` [Patch V1 5/6] PCI, MSI: Refine irqdomain interfaces to simplify its usage Jiang Liu
2014-11-13 11:43 ` Jiang Liu
2014-11-13 11:43 ` [Patch V1 6/6] PCI, MSI: Provide mechanism to alloc/free MSI/MSIX interrupt from irqdomain Jiang Liu
2014-11-13 11:43 ` Jiang Liu
2014-11-13 19:46 ` Marc Zyngier
2014-11-13 19:46 ` Marc Zyngier
2014-11-13 12:28 ` [Patch V1 0/6] Refine generic/PCI MSI irqodmian interfaces Yijing Wang
2014-11-13 12:28 ` Yijing Wang
2014-11-13 12:39 ` Jiang Liu [this message]
2014-11-13 12:39 ` Jiang Liu
2014-11-13 12:55 ` Yijing Wang
2014-11-13 12:55 ` Yijing Wang
2014-11-13 13:03 ` Jiang Liu
2014-11-13 13:03 ` Jiang Liu
2014-11-13 13:05 ` Jiang Liu
2014-11-13 13:05 ` Jiang Liu
2014-11-13 21:00 ` Marc Zyngier
2014-11-13 21:00 ` Marc Zyngier
2014-11-13 21:11 ` Thomas Gleixner
2014-11-13 21:11 ` Thomas Gleixner
2014-11-13 21:28 ` Marc Zyngier
2014-11-13 21:28 ` Marc Zyngier
2014-11-14 15:54 ` Jiang Liu
2014-11-14 15:54 ` Jiang Liu
2014-11-14 16:13 ` Marc Zyngier
2014-11-14 16:13 ` Marc Zyngier
2014-11-14 0:25 ` Jiang Liu
2014-11-14 0:25 ` Jiang Liu
2014-11-14 1:09 ` Yijing Wang
2014-11-14 1:09 ` Yijing Wang
2014-11-14 1:22 ` Jiang Liu
2014-11-14 1:22 ` Jiang Liu
2014-11-14 1:31 ` Thomas Gleixner
2014-11-14 1:31 ` Thomas Gleixner
2014-11-14 1:39 ` Jiang Liu
2014-11-14 1:39 ` Jiang Liu
2014-11-14 12:13 ` Thomas Gleixner
2014-11-14 12:13 ` Thomas Gleixner
2014-11-14 14:11 ` Yijing Wang
2014-11-14 14:11 ` Yijing Wang
2014-11-14 14:26 ` Jiang Liu
2014-11-14 14:26 ` Jiang Liu
2014-11-14 15:16 ` Marc Zyngier
2014-11-14 15:16 ` Marc Zyngier
2014-11-14 15:25 ` Jiang Liu
2014-11-14 15:25 ` Jiang Liu
2014-11-14 16:03 ` Marc Zyngier
2014-11-14 16:03 ` Marc Zyngier
2014-11-14 17:11 ` Lucas Stach
2014-11-14 17:11 ` Lucas Stach
2014-11-14 2:16 ` Yijing Wang
2014-11-14 2:16 ` Yijing Wang
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=5464A68E.4010004@linux.intel.com \
--to=jiang.liu@linux.intel.com \
--cc=bhelgaas@google.com \
--cc=bp@alien8.de \
--cc=grant.likely@linaro.org \
--cc=hpa@zytor.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=marc.zyngier@arm.com \
--cc=matthias.bgg@gmail.com \
--cc=mingo@redhat.com \
--cc=tglx@linutronix.de \
--cc=tony.luck@intel.com \
--cc=wangyijing@huawei.com \
--cc=yingjoe.chen@mediatek.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.