From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Dejin Zheng <zhengdejin5@gmail.com>
Cc: helgaas@kernel.org, corbet@lwn.net,
jarkko.nikula@linux.intel.com, mika.westerberg@linux.intel.com,
rric@kernel.org, bhelgaas@google.com, wsa@kernel.org,
Sanket.Goswami@amd.com, linux-doc@vger.kernel.org,
linux-i2c@vger.kernel.org, linux-pci@vger.kernel.org,
linux-kernel@vger.kernel.org, kernel test robot <lkp@intel.com>
Subject: Re: [PATCH v7 1/4] PCI: Introduce pcim_alloc_irq_vectors()
Date: Mon, 7 Jun 2021 19:12:34 +0300 [thread overview]
Message-ID: <YL5FcivbsIBnVvo0@smile.fi.intel.com> (raw)
In-Reply-To: <20210607153916.1021016-2-zhengdejin5@gmail.com>
On Mon, Jun 07, 2021 at 11:39:13PM +0800, Dejin Zheng wrote:
> Introduce pcim_alloc_irq_vectors(), a device-managed version of
> pci_alloc_irq_vectors(). Introducing this function can simplify
> the error handling path in many drivers.
>
> And use pci_free_irq_vectors() to replace some code in pcim_release(),
> they are equivalent, and no functional change. It is more explicit
> that pcim_alloc_irq_vectors() is a device-managed function.
...
> When CONFIG_PCI=n, there is no stub for pci_is_managed(), but
> pcim_alloc_irq_vectors() will use it, so add one like other similar stubs.
> Otherwise there can be build errors, as here by kernel test robot
> reported:
> include/linux/pci.h: In function 'pcim_alloc_irq_vectors':
> >> include/linux/pci.h:1847:7: error: implicit declaration of function 'pci_is_managed' [-Werror=implicit-function-declaration]
> 1847 | if (!pci_is_managed(dev))
> | ^~~~~~~~~~~~~~
This is rather changelog related material. No need to pollute commit message
with this.
...
> Reported-by: kernel test robot <lkp@intel.com>
It's new functionality. Why this tag is here?
Use comments (similar location than changelog) to give a credit if you wish.
> Suggested-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> Reviewed-by: Robert Richter <rric@kernel.org>
> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> Acked-by: Bjorn Helgaas <bhelgaas@google.com>
> Signed-off-by: Dejin Zheng <zhengdejin5@gmail.com>
> ---
> v6 -> v7:
> - rebase to PCI next branch
> - add a stub for pci_is_managed() when disable PCI for
> fix build error in sparc architecture.
> v5 -> v6:
> - rebase to 5.13-rc4
> v4 -> v5:
> - Remove the check of enable device in pcim_alloc_irq_vectors()
> and make it as a static line function.
> v3 -> v4:
> - No change
> v2 -> v3:
> - Add some commit comments for replace some codes in
> pcim_release() by pci_free_irq_vectors().
> v1 -> v2:
> - Use pci_free_irq_vectors() to replace some code in
> pcim_release().
> - Modify some commit messages.
>
> drivers/pci/pci.c | 5 +----
> include/linux/pci.h | 25 +++++++++++++++++++++++++
> 2 files changed, 26 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
> index 452351025a09..e3b3fc59bd35 100644
> --- a/drivers/pci/pci.c
> +++ b/drivers/pci/pci.c
> @@ -1989,10 +1989,7 @@ static void pcim_release(struct device *gendev, void *res)
> struct pci_devres *this = res;
> int i;
>
> - if (dev->msi_enabled)
> - pci_disable_msi(dev);
> - if (dev->msix_enabled)
> - pci_disable_msix(dev);
> + pci_free_irq_vectors(dev);
>
> for (i = 0; i < DEVICE_COUNT_RESOURCE; i++)
> if (this->region_mask & (1 << i))
> diff --git a/include/linux/pci.h b/include/linux/pci.h
> index c20211e59a57..5783262c4643 100644
> --- a/include/linux/pci.h
> +++ b/include/linux/pci.h
> @@ -1730,6 +1730,7 @@ static inline struct pci_dev *pci_get_class(unsigned int class,
>
> static inline void pci_set_master(struct pci_dev *dev) { }
> static inline int pci_enable_device(struct pci_dev *dev) { return -EIO; }
> +static inline int pci_is_managed(struct pci_dev *pdev) { return 0; }
> static inline void pci_disable_device(struct pci_dev *dev) { }
> static inline int pcim_enable_device(struct pci_dev *pdev) { return -EIO; }
> static inline int pci_assign_resource(struct pci_dev *dev, int i)
> @@ -1825,6 +1826,30 @@ pci_alloc_irq_vectors(struct pci_dev *dev, unsigned int min_vecs,
> NULL);
> }
>
> +/**
> + * pcim_alloc_irq_vectors - a device-managed pci_alloc_irq_vectors()
> + * @dev: PCI device to operate on
> + * @min_vecs: minimum number of vectors required (must be >= 1)
> + * @max_vecs: maximum (desired) number of vectors
> + * @flags: flags or quirks for the allocation
> + *
> + * Return the number of vectors allocated, (which might be smaller than
> + * @max_vecs) if successful, or a negative error code on error. If less
> + * than @min_vecs interrupt vectors are available for @dev the function
> + * will fail with -ENOSPC.
> + *
> + * It depends on calling pcim_enable_device() to make IRQ resources
> + * manageable.
> + */
> +static inline int
> +pcim_alloc_irq_vectors(struct pci_dev *dev, unsigned int min_vecs,
> + unsigned int max_vecs, unsigned int flags)
> +{
> + if (!pci_is_managed(dev))
> + return -EINVAL;
> + return pci_alloc_irq_vectors(dev, min_vecs, max_vecs, flags);
> +}
> +
> /* Include architecture-dependent settings and functions */
>
> #include <asm/pci.h>
> --
> 2.30.1
>
--
With Best Regards,
Andy Shevchenko
next prev parent reply other threads:[~2021-06-07 16:18 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-07 15:39 [PATCH v7 0/4] Introduce pcim_alloc_irq_vectors() Dejin Zheng
2021-06-07 15:39 ` [PATCH v7 1/4] PCI: " Dejin Zheng
2021-06-07 16:12 ` Andy Shevchenko [this message]
2021-06-07 17:14 ` Bjorn Helgaas
2021-06-08 14:23 ` Dejin Zheng
2021-06-08 14:20 ` Dejin Zheng
2021-06-10 22:41 ` Bjorn Helgaas
2021-06-11 9:37 ` Andy Shevchenko
2021-06-16 19:25 ` Bjorn Helgaas
2021-06-17 13:20 ` Andy Shevchenko
2021-06-17 15:58 ` Bjorn Helgaas
2022-12-16 8:34 ` Andy Shevchenko
2021-06-17 17:17 ` Dejin Zheng
2022-02-24 11:07 ` Christoph Hellwig
2021-06-07 15:39 ` [PATCH v7 2/4] Documentation: devres: Add pcim_alloc_irq_vectors() Dejin Zheng
2021-06-07 16:13 ` Andy Shevchenko
2021-06-07 15:39 ` [PATCH v7 3/4] i2c: designware: Use pcim_alloc_irq_vectors() to allocate IRQ vectors Dejin Zheng
2021-11-29 19:15 ` Wolfram Sang
2021-06-07 15:39 ` [PATCH v7 4/4] i2c: thunderx: " Dejin Zheng
2021-11-29 19:16 ` Wolfram Sang
2024-10-10 18:20 ` [PATCH v7 0/4] Introduce pcim_alloc_irq_vectors() Andy Shevchenko
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=YL5FcivbsIBnVvo0@smile.fi.intel.com \
--to=andriy.shevchenko@linux.intel.com \
--cc=Sanket.Goswami@amd.com \
--cc=bhelgaas@google.com \
--cc=corbet@lwn.net \
--cc=helgaas@kernel.org \
--cc=jarkko.nikula@linux.intel.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-i2c@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=lkp@intel.com \
--cc=mika.westerberg@linux.intel.com \
--cc=rric@kernel.org \
--cc=wsa@kernel.org \
--cc=zhengdejin5@gmail.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.