public inbox for linux-arm-kernel@lists.infradead.org 
 help / color / mirror / Atom feed
From: gregory.clement@free-electrons•com (Gregory CLEMENT)
To: linux-arm-kernel@lists•infradead.org
Subject: [PATCH v2 5/6] irqchip: irq-armada-370-xp: allow allocation of multiple MSIs
Date: Wed, 27 Jan 2016 14:40:29 +0100	[thread overview]
Message-ID: <87d1sn9m42.fsf@free-electrons.com> (raw)
In-Reply-To: <1453899395-3532-6-git-send-email-thomas.petazzoni@free-electrons.com> (Thomas Petazzoni's message of "Wed, 27 Jan 2016 13:56:34 +0100")

Hi Thomas,
 
 On mer., janv. 27 2016, Thomas Petazzoni <thomas.petazzoni@free-electrons•com> wrote:

> Add support for allocating multiple MSIs at the same time, so that the
> MSI_FLAG_MULTI_PCI_MSI flag can be added to the msi_domain_info
> structure.
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons•com>

Reviewed-by: Gregory CLEMENT <gregory.clement@free-electrons•com>

Thanks,

Gregory

> ---
>  drivers/irqchip/irq-armada-370-xp.c | 25 ++++++++++++++-----------
>  1 file changed, 14 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/irqchip/irq-armada-370-xp.c b/drivers/irqchip/irq-armada-370-xp.c
> index c99ae5f..e7dc6cb 100644
> --- a/drivers/irqchip/irq-armada-370-xp.c
> +++ b/drivers/irqchip/irq-armada-370-xp.c
> @@ -123,7 +123,8 @@ static struct irq_chip armada_370_xp_msi_irq_chip = {
>  };
>  
>  static struct msi_domain_info armada_370_xp_msi_domain_info = {
> -	.flags	= (MSI_FLAG_USE_DEF_DOM_OPS | MSI_FLAG_USE_DEF_CHIP_OPS),
> +	.flags	= (MSI_FLAG_USE_DEF_DOM_OPS | MSI_FLAG_USE_DEF_CHIP_OPS |
> +		   MSI_FLAG_MULTI_PCI_MSI),
>  	.chip	= &armada_370_xp_msi_irq_chip,
>  };
>  
> @@ -149,21 +150,26 @@ static struct irq_chip armada_370_xp_msi_bottom_irq_chip = {
>  static int armada_370_xp_msi_alloc(struct irq_domain *domain, unsigned int virq,
>  				   unsigned int nr_irqs, void *args)
>  {
> -	int hwirq;
> +	int hwirq, i;
>  
>  	mutex_lock(&msi_used_lock);
> -	hwirq = find_first_zero_bit(&msi_used, PCI_MSI_DOORBELL_NR);
> +
> +	hwirq = bitmap_find_next_zero_area(msi_used, PCI_MSI_DOORBELL_NR,
> +					   0, nr_irqs, 0);
>  	if (hwirq >= PCI_MSI_DOORBELL_NR) {
>  		mutex_unlock(&msi_used_lock);
>  		return -ENOSPC;
>  	}
>  
> -	set_bit(hwirq, msi_used);
> +	bitmap_set(msi_used, hwirq, nr_irqs);
>  	mutex_unlock(&msi_used_lock);
>  
> -	irq_domain_set_info(domain, virq, hwirq, &armada_370_xp_msi_bottom_irq_chip,
> -			    domain->host_data, handle_simple_irq,
> -			    NULL, NULL);
> +	for (i = 0; i < nr_irqs; i++) {
> +		irq_domain_set_info(domain, virq + i, hwirq + i,
> +				    &armada_370_xp_msi_bottom_irq_chip,
> +				    domain->host_data, handle_simple_irq,
> +				    NULL, NULL);
> +	}
>  
>  	return hwirq;
>  }
> @@ -174,10 +180,7 @@ static void armada_370_xp_msi_free(struct irq_domain *domain,
>  	struct irq_data *d = irq_domain_get_irq_data(domain, virq);
>  
>  	mutex_lock(&msi_used_lock);
> -	if (!test_bit(d->hwirq, msi_used))
> -		pr_err("trying to free unused MSI#%lu\n", d->hwirq);
> -	else
> -		clear_bit(d->hwirq, msi_used);
> +	bitmap_clear(msi_used, d->hwirq, nr_irqs);
>  	mutex_unlock(&msi_used_lock);
>  }
>  
> -- 
> 2.6.4
>

-- 
Gregory Clement, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

  reply	other threads:[~2016-01-27 13:40 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-27 12:56 [PATCH v2 0/6] irqchip: irq-armada-370-xp: generic MSI infrastructure and assorted fixes Thomas Petazzoni
2016-01-27 12:56 ` [PATCH v2 1/6] irqchip: irq-armada-370-xp: add Kconfig option for the driver Thomas Petazzoni
2016-01-27 12:56 ` [PATCH v2 2/6] irqchip: irq-armada-370-xp: use the generic MSI infrastructure Thomas Petazzoni
2016-01-28 16:24   ` Marc Zyngier
2016-01-27 12:56 ` [PATCH v2 3/6] irqchip: irq-armada-370-xp: use PCI_MSI_DOORBELL_START where appropriate Thomas Petazzoni
2016-01-27 13:39   ` Gregory CLEMENT
2016-01-27 12:56 ` [PATCH v2 4/6] irqchip: irq-armada-370-xp: use shorter names for irq_chip Thomas Petazzoni
2016-01-27 13:20   ` Gregory CLEMENT
2016-01-27 12:56 ` [PATCH v2 5/6] irqchip: irq-armada-370-xp: allow allocation of multiple MSIs Thomas Petazzoni
2016-01-27 13:40   ` Gregory CLEMENT [this message]
2016-01-27 12:56 ` [PATCH v2 6/6] ARM: mvebu: use the ARMADA_370_XP_IRQ option Thomas Petazzoni
2016-01-27 13:28   ` Gregory CLEMENT
2016-02-10 14:00 ` [PATCH v2 0/6] irqchip: irq-armada-370-xp: generic MSI infrastructure and assorted fixes Thomas Petazzoni
2016-02-10 14:08   ` Marc Zyngier
2016-02-10 14:10     ` Thomas Petazzoni
2016-02-10 15:38     ` Jason Cooper
2016-02-10 18:09       ` Gregory CLEMENT
2016-02-10 18:13         ` Jason Cooper

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=87d1sn9m42.fsf@free-electrons.com \
    --to=gregory.clement@free-electrons$(echo .)com \
    --cc=linux-arm-kernel@lists$(echo .)infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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