All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bjorn Helgaas <helgaas@kernel.org>
To: Marc Zyngier <marc.zyngier@arm.com>
Cc: Rob Herring <robh+dt@kernel.org>,
	Jason Cooper <jason@lakedaemon.net>,
	Thomas Gleixner <tglx@linutronix.de>,
	Bjorn Helgaas <bhelgaas@google.com>,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, linux-pci@vger.kernel.org,
	Mark Rutland <Mark.Rutland@arm.com>,
	David Daney <ddaney.cavm@gmail.com>,
	Robin Murphy <robin.murphy@arm.com>
Subject: Re: [PATCH v2 8/8] PCI/MSI: Allow the MSI domain to be device-specific
Date: Thu, 15 Oct 2015 15:11:35 -0500	[thread overview]
Message-ID: <20151015201135.GE10442@localhost> (raw)
In-Reply-To: <1444151043-31084-9-git-send-email-marc.zyngier@arm.com>

On Tue, Oct 06, 2015 at 06:04:03PM +0100, Marc Zyngier wrote:
> So far, we've always considered that for a given PCI device, its
> MSI controller was either set by the architecture-specific
> pcibios hook, or simply inherited from the host bridge.
> 
> This doesn't cover things like firmware-defined topologies like
> msi-map (DT) or IORT (ACPI), which can provide information about
> which MSI controller to use on a per-device basis.
> 
> This patch adds the necessary hook into the MSI code to allow this
> feature, and provides the msi-map functionnality as a first
> implementation.
> 
> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>

Acked-by: Bjorn Helgaas <bhelgaas@google.com>

I assume somebody other than me will merge this series.

> ---
>  drivers/pci/msi.c   | 17 +++++++++++++++++
>  drivers/pci/probe.c |  8 ++++++++
>  include/linux/msi.h |  6 ++++++
>  3 files changed, 31 insertions(+)
> 
> diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
> index 81a2798..3daff31 100644
> --- a/drivers/pci/msi.c
> +++ b/drivers/pci/msi.c
> @@ -1357,4 +1357,21 @@ u32 pci_msi_domain_get_msi_rid(struct irq_domain *domain, struct pci_dev *pdev)
>  
>  	return rid;
>  }
> +
> +/**
> + * pci_msi_get_device_domain - Get the MSI domain for a given PCI device
> + * @pdev:	The PCI device
> + *
> + * Use the firmware data to find a device-specific MSI domain
> + * (i.e. not one that is ste as a default).
> + *
> + * Returns: The coresponding MSI domain or NULL if none has been found.
> + */
> +struct irq_domain *pci_msi_get_device_domain(struct pci_dev *pdev)
> +{
> +	u32 rid = 0;
> +
> +	pci_for_each_dma_alias(pdev, get_msi_id_cb, &rid);
> +	return of_msi_map_get_device_domain(&pdev->dev, rid);
> +}
>  #endif /* CONFIG_PCI_MSI_IRQ_DOMAIN */
> diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
> index 7c333f8..f14a970 100644
> --- a/drivers/pci/probe.c
> +++ b/drivers/pci/probe.c
> @@ -1639,6 +1639,14 @@ static struct irq_domain *pci_dev_msi_domain(struct pci_dev *dev)
>  	if (d)
>  		return d;
>  
> +	/*
> +	 * Let's see if we have a firmware interface able to provide
> +	 * the domain.
> +	 */
> +	d = pci_msi_get_device_domain(dev);
> +	if (d)
> +		return d;
> +
>  	return NULL;
>  }
>  
> diff --git a/include/linux/msi.h b/include/linux/msi.h
> index 56e3b76..375be7c 100644
> --- a/include/linux/msi.h
> +++ b/include/linux/msi.h
> @@ -294,6 +294,12 @@ irq_hw_number_t pci_msi_domain_calc_hwirq(struct pci_dev *dev,
>  int pci_msi_domain_check_cap(struct irq_domain *domain,
>  			     struct msi_domain_info *info, struct device *dev);
>  u32 pci_msi_domain_get_msi_rid(struct irq_domain *domain, struct pci_dev *pdev);
> +struct irq_domain *pci_msi_get_device_domain(struct pci_dev *pdev);
> +#else
> +static inline struct irq_domain *pci_msi_get_device_domain(struct pci_dev *pdev)
> +{
> +	return NULL;
> +}
>  #endif /* CONFIG_PCI_MSI_IRQ_DOMAIN */
>  
>  #endif /* LINUX_MSI_H */
> -- 
> 2.1.4
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

WARNING: multiple messages have this Message-ID (diff)
From: helgaas@kernel.org (Bjorn Helgaas)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 8/8] PCI/MSI: Allow the MSI domain to be device-specific
Date: Thu, 15 Oct 2015 15:11:35 -0500	[thread overview]
Message-ID: <20151015201135.GE10442@localhost> (raw)
In-Reply-To: <1444151043-31084-9-git-send-email-marc.zyngier@arm.com>

On Tue, Oct 06, 2015 at 06:04:03PM +0100, Marc Zyngier wrote:
> So far, we've always considered that for a given PCI device, its
> MSI controller was either set by the architecture-specific
> pcibios hook, or simply inherited from the host bridge.
> 
> This doesn't cover things like firmware-defined topologies like
> msi-map (DT) or IORT (ACPI), which can provide information about
> which MSI controller to use on a per-device basis.
> 
> This patch adds the necessary hook into the MSI code to allow this
> feature, and provides the msi-map functionnality as a first
> implementation.
> 
> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>

Acked-by: Bjorn Helgaas <bhelgaas@google.com>

I assume somebody other than me will merge this series.

> ---
>  drivers/pci/msi.c   | 17 +++++++++++++++++
>  drivers/pci/probe.c |  8 ++++++++
>  include/linux/msi.h |  6 ++++++
>  3 files changed, 31 insertions(+)
> 
> diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
> index 81a2798..3daff31 100644
> --- a/drivers/pci/msi.c
> +++ b/drivers/pci/msi.c
> @@ -1357,4 +1357,21 @@ u32 pci_msi_domain_get_msi_rid(struct irq_domain *domain, struct pci_dev *pdev)
>  
>  	return rid;
>  }
> +
> +/**
> + * pci_msi_get_device_domain - Get the MSI domain for a given PCI device
> + * @pdev:	The PCI device
> + *
> + * Use the firmware data to find a device-specific MSI domain
> + * (i.e. not one that is ste as a default).
> + *
> + * Returns: The coresponding MSI domain or NULL if none has been found.
> + */
> +struct irq_domain *pci_msi_get_device_domain(struct pci_dev *pdev)
> +{
> +	u32 rid = 0;
> +
> +	pci_for_each_dma_alias(pdev, get_msi_id_cb, &rid);
> +	return of_msi_map_get_device_domain(&pdev->dev, rid);
> +}
>  #endif /* CONFIG_PCI_MSI_IRQ_DOMAIN */
> diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
> index 7c333f8..f14a970 100644
> --- a/drivers/pci/probe.c
> +++ b/drivers/pci/probe.c
> @@ -1639,6 +1639,14 @@ static struct irq_domain *pci_dev_msi_domain(struct pci_dev *dev)
>  	if (d)
>  		return d;
>  
> +	/*
> +	 * Let's see if we have a firmware interface able to provide
> +	 * the domain.
> +	 */
> +	d = pci_msi_get_device_domain(dev);
> +	if (d)
> +		return d;
> +
>  	return NULL;
>  }
>  
> diff --git a/include/linux/msi.h b/include/linux/msi.h
> index 56e3b76..375be7c 100644
> --- a/include/linux/msi.h
> +++ b/include/linux/msi.h
> @@ -294,6 +294,12 @@ irq_hw_number_t pci_msi_domain_calc_hwirq(struct pci_dev *dev,
>  int pci_msi_domain_check_cap(struct irq_domain *domain,
>  			     struct msi_domain_info *info, struct device *dev);
>  u32 pci_msi_domain_get_msi_rid(struct irq_domain *domain, struct pci_dev *pdev);
> +struct irq_domain *pci_msi_get_device_domain(struct pci_dev *pdev);
> +#else
> +static inline struct irq_domain *pci_msi_get_device_domain(struct pci_dev *pdev)
> +{
> +	return NULL;
> +}
>  #endif /* CONFIG_PCI_MSI_IRQ_DOMAIN */
>  
>  #endif /* LINUX_MSI_H */
> -- 
> 2.1.4
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

  reply	other threads:[~2015-10-15 20:11 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-06 17:03 [PATCH v2 0/8] of: Handle multi-parent version of msi-parent & msi-map Marc Zyngier
2015-10-06 17:03 ` Marc Zyngier
2015-10-06 17:03 ` [PATCH v2 1/8] of/irq: Add support code for multi-parent version of "msi-parent" Marc Zyngier
2015-10-06 17:03   ` Marc Zyngier
2015-10-06 17:03 ` [PATCH v2 2/8] of/irq: Use of_msi_get_domain instead of open-coded "msi-parent" parsing Marc Zyngier
2015-10-06 17:03   ` Marc Zyngier
2015-10-06 17:03 ` [PATCH v2 3/8] PCI/MSI: " Marc Zyngier
2015-10-06 17:03   ` Marc Zyngier
2015-10-15 20:10   ` Bjorn Helgaas
2015-10-15 20:10     ` Bjorn Helgaas
2015-10-06 17:03 ` [PATCH v2 4/8] irqchip/gic-v3-its: Parse new version of msi-parent property Marc Zyngier
2015-10-06 17:03   ` Marc Zyngier
2015-10-06 17:04 ` [PATCH v2 5/8] of/irq: Split of_msi_map_rid to reuse msi-map lookup Marc Zyngier
2015-10-06 17:04   ` Marc Zyngier
2015-10-06 17:04 ` [PATCH v2 6/8] of/irq: Use the msi-map property to provide device-specific MSI domain Marc Zyngier
2015-10-06 17:04   ` Marc Zyngier
2015-10-06 17:04 ` [PATCH v2 7/8] PCI: Add per-device MSI domain hook Marc Zyngier
2015-10-06 17:04   ` Marc Zyngier
2015-10-15 20:11   ` Bjorn Helgaas
2015-10-15 20:11     ` Bjorn Helgaas
2015-10-06 17:04 ` [PATCH v2 8/8] PCI/MSI: Allow the MSI domain to be device-specific Marc Zyngier
2015-10-06 17:04   ` Marc Zyngier
2015-10-15 20:11   ` Bjorn Helgaas [this message]
2015-10-15 20:11     ` Bjorn Helgaas
2015-10-15 20:39 ` [PATCH v2 0/8] of: Handle multi-parent version of msi-parent & msi-map Rob Herring
2015-10-15 20:39   ` Rob Herring

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=20151015201135.GE10442@localhost \
    --to=helgaas@kernel.org \
    --cc=Mark.Rutland@arm.com \
    --cc=bhelgaas@google.com \
    --cc=ddaney.cavm@gmail.com \
    --cc=jason@lakedaemon.net \
    --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=robh+dt@kernel.org \
    --cc=robin.murphy@arm.com \
    --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 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.