From: Bjorn Helgaas <helgaas@kernel.org>
To: Ming Lei <ming.lei@redhat.com>
Cc: Christoph Hellwig <hch@lst.de>,
Thomas Gleixner <tglx@linutronix.de>,
Jens Axboe <axboe@kernel.dk>,
linux-block@vger.kernel.org, Sagi Grimberg <sagi@grimberg.me>,
linux-nvme@lists.infradead.org, linux-kernel@vger.kernel.org,
linux-pci@vger.kernel.org, Keith Busch <keith.busch@intel.com>
Subject: Re: [PATCH V2 4/4] genirq/affinity: Document .calc_sets as required in case of multiple sets
Date: Tue, 12 Feb 2019 17:42:24 -0600 [thread overview]
Message-ID: <20190212234224.GA96272@google.com> (raw)
In-Reply-To: <20190212130439.14501-5-ming.lei@redhat.com>
On Tue, Feb 12, 2019 at 09:04:39PM +0800, Ming Lei wrote:
> Now NVMe has implemented the .calc_sets callback for caculating each
> set's vectors.
>
> For other cases of multiple irq sets, it isn't a good way to pre-caculate
> each set's vectors before allocating IRQ vectors because NVMe's same issue
> exists too.
s/irq/IRQ/ so it's consistent in the paragraph.
> Document .calc_sets as required explicitly for multiple sets.
>
> Signed-off-by: Ming Lei <ming.lei@redhat.com>
Acked-by: Bjorn Helgaas <bhelgaas@google.com>
Note minor comments below.
> ---
> drivers/pci/msi.c | 4 ++--
> include/linux/interrupt.h | 3 ++-
> 2 files changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
> index 4c0b47867258..9f91fa713141 100644
> --- a/drivers/pci/msi.c
> +++ b/drivers/pci/msi.c
> @@ -1039,7 +1039,7 @@ static int __pci_enable_msi_range(struct pci_dev *dev, int minvec, int maxvec,
> * If the caller is passing in sets, we can't support a range of
> * vectors. The caller needs to handle that.
Looks like this comment needs to be tweaked, maybe along the lines of:
If the caller requests multiple sets of IRQs where each set requires
different affinity, it must also supply a ->calc_sets() callback to
compute the affinity cpumask for each set.
(I'm not 100% clear on how calc_sets() works, so I might not have
described this exactly right.)
> */
> - if (affd && affd->nr_sets && minvec != maxvec)
> + if (affd && affd->nr_sets > 1 && !affd->calc_sets)
> return -EINVAL;
>
> if (WARN_ON_ONCE(dev->msi_enabled))
> @@ -1097,7 +1097,7 @@ static int __pci_enable_msix_range(struct pci_dev *dev,
> * If the caller is passing in sets, we can't support a range of
> * supported vectors. The caller needs to handle that.
Similar comment update here?
> */
> - if (affd && affd->nr_sets && minvec != maxvec)
> + if (affd && affd->nr_sets > 1 && !affd->calc_sets)
> return -EINVAL;
>
> if (WARN_ON_ONCE(dev->msix_enabled))
> diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
> index 7a27f6ba1f2f..a053f7fb0ff1 100644
> --- a/include/linux/interrupt.h
> +++ b/include/linux/interrupt.h
> @@ -269,7 +269,8 @@ struct irq_affinity_notify {
> * the MSI(-X) vector space
> * @nr_sets: Length of passed in *sets array
> * @set_vectors: Number of affinitized sets
> - * @calc_sets: Callback for caculating set vectors
> + * @calc_sets: Callback for caculating set vectors, required for
> + * multiple irq sets.
> * @priv: Private data of @calc_sets
> */
> struct irq_affinity {
> --
> 2.9.5
>
WARNING: multiple messages have this Message-ID (diff)
From: helgaas@kernel.org (Bjorn Helgaas)
Subject: [PATCH V2 4/4] genirq/affinity: Document .calc_sets as required in case of multiple sets
Date: Tue, 12 Feb 2019 17:42:24 -0600 [thread overview]
Message-ID: <20190212234224.GA96272@google.com> (raw)
In-Reply-To: <20190212130439.14501-5-ming.lei@redhat.com>
On Tue, Feb 12, 2019@09:04:39PM +0800, Ming Lei wrote:
> Now NVMe has implemented the .calc_sets callback for caculating each
> set's vectors.
>
> For other cases of multiple irq sets, it isn't a good way to pre-caculate
> each set's vectors before allocating IRQ vectors because NVMe's same issue
> exists too.
s/irq/IRQ/ so it's consistent in the paragraph.
> Document .calc_sets as required explicitly for multiple sets.
>
> Signed-off-by: Ming Lei <ming.lei at redhat.com>
Acked-by: Bjorn Helgaas <bhelgaas at google.com>
Note minor comments below.
> ---
> drivers/pci/msi.c | 4 ++--
> include/linux/interrupt.h | 3 ++-
> 2 files changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
> index 4c0b47867258..9f91fa713141 100644
> --- a/drivers/pci/msi.c
> +++ b/drivers/pci/msi.c
> @@ -1039,7 +1039,7 @@ static int __pci_enable_msi_range(struct pci_dev *dev, int minvec, int maxvec,
> * If the caller is passing in sets, we can't support a range of
> * vectors. The caller needs to handle that.
Looks like this comment needs to be tweaked, maybe along the lines of:
If the caller requests multiple sets of IRQs where each set requires
different affinity, it must also supply a ->calc_sets() callback to
compute the affinity cpumask for each set.
(I'm not 100% clear on how calc_sets() works, so I might not have
described this exactly right.)
> */
> - if (affd && affd->nr_sets && minvec != maxvec)
> + if (affd && affd->nr_sets > 1 && !affd->calc_sets)
> return -EINVAL;
>
> if (WARN_ON_ONCE(dev->msi_enabled))
> @@ -1097,7 +1097,7 @@ static int __pci_enable_msix_range(struct pci_dev *dev,
> * If the caller is passing in sets, we can't support a range of
> * supported vectors. The caller needs to handle that.
Similar comment update here?
> */
> - if (affd && affd->nr_sets && minvec != maxvec)
> + if (affd && affd->nr_sets > 1 && !affd->calc_sets)
> return -EINVAL;
>
> if (WARN_ON_ONCE(dev->msix_enabled))
> diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
> index 7a27f6ba1f2f..a053f7fb0ff1 100644
> --- a/include/linux/interrupt.h
> +++ b/include/linux/interrupt.h
> @@ -269,7 +269,8 @@ struct irq_affinity_notify {
> * the MSI(-X) vector space
> * @nr_sets: Length of passed in *sets array
> * @set_vectors: Number of affinitized sets
> - * @calc_sets: Callback for caculating set vectors
> + * @calc_sets: Callback for caculating set vectors, required for
> + * multiple irq sets.
> * @priv: Private data of @calc_sets
> */
> struct irq_affinity {
> --
> 2.9.5
>
next prev parent reply other threads:[~2019-02-12 23:42 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-12 13:04 [PATCH V2 0/4] genirq/affinity: add .calc_sets for improving IRQ allocation & spread Ming Lei
2019-02-12 13:04 ` Ming Lei
2019-02-12 13:04 ` [PATCH V2 1/4] genirq/affinity: store irq set vectors in 'struct irq_affinity' Ming Lei
2019-02-12 13:04 ` Ming Lei
2019-02-12 13:35 ` Thomas Gleixner
2019-02-12 13:35 ` Thomas Gleixner
2019-02-12 13:04 ` [PATCH V2 2/4] genirq/affinity: add new callback for caculating set vectors Ming Lei
2019-02-12 13:04 ` Ming Lei
2019-02-12 13:37 ` Thomas Gleixner
2019-02-12 13:37 ` Thomas Gleixner
2019-02-12 13:04 ` [PATCH V2 3/4] nvme-pci: avoid irq allocation retrying via .calc_sets Ming Lei
2019-02-12 13:04 ` Ming Lei
2019-02-12 15:49 ` Keith Busch
2019-02-12 15:49 ` Keith Busch
2019-02-12 13:04 ` [PATCH V2 4/4] genirq/affinity: Document .calc_sets as required in case of multiple sets Ming Lei
2019-02-12 13:04 ` Ming Lei
2019-02-12 23:42 ` Bjorn Helgaas [this message]
2019-02-12 23:42 ` Bjorn Helgaas
2019-02-12 13:42 ` [PATCH V2 0/4] genirq/affinity: add .calc_sets for improving IRQ allocation & spread Thomas Gleixner
2019-02-12 13:42 ` Thomas Gleixner
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=20190212234224.GA96272@google.com \
--to=helgaas@kernel.org \
--cc=axboe@kernel.dk \
--cc=hch@lst.de \
--cc=keith.busch@intel.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-nvme@lists.infradead.org \
--cc=linux-pci@vger.kernel.org \
--cc=ming.lei@redhat.com \
--cc=sagi@grimberg.me \
--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.