diff mbox series

PCI: Fix build error when CONFIG_PCI_MSI disabled

Message ID 158e40e1cfcfc58ae30ecb2bbfaf86e5bba7a1ef.1675978686.git.reinette.chatre@intel.com (mailing list archive)
State Not Applicable
Delegated to: Bjorn Helgaas
Headers show
Series PCI: Fix build error when CONFIG_PCI_MSI disabled | expand

Commit Message

Reinette Chatre Feb. 9, 2023, 9:49 p.m. UTC
pci_msix_alloc_irq_at() and pci_msix_free_irq() are not
declared when CONFIG_PCI_MSI is disabled.

Users of these two calls do not yet exist but when users
do appear (shown below is an attempt to use the new API
in vfio-pci) the following errors will be encountered when
compiling with CONFIG_PCI_MSI disabled:
drivers/vfio/pci/vfio_pci_intrs.c:461:4: error: implicit declaration of\
        function 'pci_msix_free_irq' is invalid in C99\
        [-Werror,-Wimplicit-function-declaration]
                           pci_msix_free_irq(pdev, msix_map);
                           ^
   drivers/vfio/pci/vfio_pci_intrs.c:461:4: note: did you mean 'pci_ims_free_irq'?
   include/linux/pci.h:2516:6: note: 'pci_ims_free_irq' declared here
   void pci_ims_free_irq(struct pci_dev *pdev, struct msi_map map);
        ^
drivers/vfio/pci/vfio_pci_intrs.c:511:15: error: implicit declaration of\
        function 'pci_msix_alloc_irq_at' is invalid in C99\
        [-Werror,-Wimplicit-function-declaration]
                   msix_map = pci_msix_alloc_irq_at(pdev, vector, NULL);
                                      ^
   drivers/vfio/pci/vfio_pci_intrs.c:511:15: note: did you mean 'pci_ims_alloc_irq'?
   include/linux/pci.h:2514:16: note: 'pci_ims_alloc_irq' declared here
   struct msi_map pci_ims_alloc_irq(struct pci_dev *pdev,\
                                    union msi_instance_cookie *icookie,

Provide definitions for pci_msix_alloc_irq_at() and pci_msix_free_irq() in
preparation for users that need to compile when CONFIG_PCI_MSI is
disabled.

Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
---

checkpatch.pl warns about the usage of -ENOSYS but it does appear
to be the custom.

 include/linux/pci.h | 13 +++++++++++++
 1 file changed, 13 insertions(+)

Comments

Tian, Kevin Feb. 10, 2023, 5:12 a.m. UTC | #1
> From: Chatre, Reinette <reinette.chatre@intel.com>
> Sent: Friday, February 10, 2023 5:49 AM
> 
> pci_msix_alloc_irq_at() and pci_msix_free_irq() are not
> declared when CONFIG_PCI_MSI is disabled.
> 
> Users of these two calls do not yet exist but when users
> do appear (shown below is an attempt to use the new API
> in vfio-pci) the following errors will be encountered when
> compiling with CONFIG_PCI_MSI disabled:
> drivers/vfio/pci/vfio_pci_intrs.c:461:4: error: implicit declaration of\
>         function 'pci_msix_free_irq' is invalid in C99\
>         [-Werror,-Wimplicit-function-declaration]
>                            pci_msix_free_irq(pdev, msix_map);
>                            ^
>    drivers/vfio/pci/vfio_pci_intrs.c:461:4: note: did you mean
> 'pci_ims_free_irq'?
>    include/linux/pci.h:2516:6: note: 'pci_ims_free_irq' declared here
>    void pci_ims_free_irq(struct pci_dev *pdev, struct msi_map map);
>         ^
> drivers/vfio/pci/vfio_pci_intrs.c:511:15: error: implicit declaration of\
>         function 'pci_msix_alloc_irq_at' is invalid in C99\
>         [-Werror,-Wimplicit-function-declaration]
>                    msix_map = pci_msix_alloc_irq_at(pdev, vector, NULL);
>                                       ^
>    drivers/vfio/pci/vfio_pci_intrs.c:511:15: note: did you mean
> 'pci_ims_alloc_irq'?
>    include/linux/pci.h:2514:16: note: 'pci_ims_alloc_irq' declared here
>    struct msi_map pci_ims_alloc_irq(struct pci_dev *pdev,\
>                                     union msi_instance_cookie *icookie,
> 
> Provide definitions for pci_msix_alloc_irq_at() and pci_msix_free_irq() in
> preparation for users that need to compile when CONFIG_PCI_MSI is
> disabled.
> 
> Reported-by: kernel test robot <lkp@intel.com>
> Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>

Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Alok Tiwari Feb. 10, 2023, 8:45 p.m. UTC | #2
shall we need to define this function under -> #ifndef CONFIG_PCI_MSI

#ifndef CONFIG_PCI_MSI

+static inline struct msi_map
+pci_msix_alloc_irq_at(struct pci_dev *dev, unsigned int index,
+		      const struct irq_affinity_desc *affdesc)
+{
+	struct msi_map map = { .index = -ENOSYS };
+
+	return map;
+}
+
+static inline void pci_msix_free_irq(struct pci_dev *pdev, struct msi_map map)
+{
+}
+#endif

Thanks,

Alok

On 2/10/2023 3:19 AM, Reinette Chatre wrote:
> pci_msix_alloc_irq_at() and pci_msix_free_irq() are not
> declared when CONFIG_PCI_MSI is disabled.
>
> Users of these two calls do not yet exist but when users
> do appear (shown below is an attempt to use the new API
> in vfio-pci) the following errors will be encountered when
> compiling with CONFIG_PCI_MSI disabled:
> drivers/vfio/pci/vfio_pci_intrs.c:461:4: error: implicit declaration of\
>          function 'pci_msix_free_irq' is invalid in C99\
>          [-Werror,-Wimplicit-function-declaration]
>                             pci_msix_free_irq(pdev, msix_map);
>                             ^
>     drivers/vfio/pci/vfio_pci_intrs.c:461:4: note: did you mean 'pci_ims_free_irq'?
>     include/linux/pci.h:2516:6: note: 'pci_ims_free_irq' declared here
>     void pci_ims_free_irq(struct pci_dev *pdev, struct msi_map map);
>          ^
> drivers/vfio/pci/vfio_pci_intrs.c:511:15: error: implicit declaration of\
>          function 'pci_msix_alloc_irq_at' is invalid in C99\
>          [-Werror,-Wimplicit-function-declaration]
>                     msix_map = pci_msix_alloc_irq_at(pdev, vector, NULL);
>                                        ^
>     drivers/vfio/pci/vfio_pci_intrs.c:511:15: note: did you mean 'pci_ims_alloc_irq'?
>     include/linux/pci.h:2514:16: note: 'pci_ims_alloc_irq' declared here
>     struct msi_map pci_ims_alloc_irq(struct pci_dev *pdev,\
>                                      union msi_instance_cookie *icookie,
>
> Provide definitions for pci_msix_alloc_irq_at() and pci_msix_free_irq() in
> preparation for users that need to compile when CONFIG_PCI_MSI is
> disabled.
>
> Reported-by: kernel test robot <lkp@intel.com>
> Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
> ---
>
> checkpatch.pl warns about the usage of -ENOSYS but it does appear
> to be the custom.
>
>   include/linux/pci.h | 13 +++++++++++++
>   1 file changed, 13 insertions(+)
>
> diff --git a/include/linux/pci.h b/include/linux/pci.h
> index adffd65e84b4..448482d1c4fe 100644
> --- a/include/linux/pci.h
> +++ b/include/linux/pci.h
> @@ -1621,6 +1621,19 @@ pci_alloc_irq_vectors(struct pci_dev *dev, unsigned int min_vecs,
>   					      flags, NULL);
>   }
>   
> +static inline struct msi_map
> +pci_msix_alloc_irq_at(struct pci_dev *dev, unsigned int index,
> +		      const struct irq_affinity_desc *affdesc)
> +{
> +	struct msi_map map = { .index = -ENOSYS };
> +
> +	return map;
> +}
> +
> +static inline void pci_msix_free_irq(struct pci_dev *pdev, struct msi_map map)
> +{
> +}
> +
>   static inline void pci_free_irq_vectors(struct pci_dev *dev)
>   {
>   }
Reinette Chatre Feb. 10, 2023, 9:12 p.m. UTC | #3
Hi Alok,

On 2/10/2023 12:45 PM, ALOK TIWARI wrote:
> shall we need to define this function under -> #ifndef CONFIG_PCI_MSI
> 
> #ifndef CONFIG_PCI_MSI
> 
> +static inline struct msi_map
> +pci_msix_alloc_irq_at(struct pci_dev *dev, unsigned int index,
> +              const struct irq_affinity_desc *affdesc)
> +{
> +    struct msi_map map = { .index = -ENOSYS };
> +
> +    return map;
> +}
> +
> +static inline void pci_msix_free_irq(struct pci_dev *pdev, struct msi_map map)
> +{
> +}
> +#endif

No need. include/linux/pci.h already has those definitions.

include/linux/pci.h already has:

#ifdef CONFIG_PCI_MSI

...

#else

... 
/*  new function definitions will be inserted here */
...

#endif


Reinette
Alok Tiwari Feb. 11, 2023, 5:05 a.m. UTC | #4
if, new function going to part of #else case . that is absolutely fine.

but that is not present in given PATCH.

Thanks,

Alok

On 2/11/2023 2:42 AM, Reinette Chatre wrote:
> Hi Alok,
>
> On 2/10/2023 12:45 PM, ALOK TIWARI wrote:
>> shall we need to define this function under -> #ifndef CONFIG_PCI_MSI
>>
>> #ifndef CONFIG_PCI_MSI
>>
>> +static inline struct msi_map
>> +pci_msix_alloc_irq_at(struct pci_dev *dev, unsigned int index,
>> +              const struct irq_affinity_desc *affdesc)
>> +{
>> +    struct msi_map map = { .index = -ENOSYS };
>> +
>> +    return map;
>> +}
>> +
>> +static inline void pci_msix_free_irq(struct pci_dev *pdev, struct msi_map map)
>> +{
>> +}
>> +#endif
> No need. include/linux/pci.h already has those definitions.
>
> include/linux/pci.h already has:
>
> #ifdef CONFIG_PCI_MSI
>
> ...
>
> #else
>
> ...
> /*  new function definitions will be inserted here */
> ...
>
> #endif
>
>
> Reinette
Thomas Gleixner Feb. 13, 2023, 6:46 p.m. UTC | #5
Alok!

On Sat, Feb 11 2023 at 10:35, ALOK TIWARI wrote:

Please do not top-post and trim your replies.

  https://people.kernel.org/tglx/notes-about-netiquette

> if, new function going to part of #else case . that is absolutely fine.
> but that is not present in given PATCH.

Care to apply the patch and look where the stub functions are placed
instead of making uninformed claims?

Thanks,

        tglx
Bjorn Helgaas Feb. 14, 2023, 10:24 p.m. UTC | #6
On Thu, Feb 09, 2023 at 01:49:00PM -0800, Reinette Chatre wrote:
> pci_msix_alloc_irq_at() and pci_msix_free_irq() are not
> declared when CONFIG_PCI_MSI is disabled.
> 
> Users of these two calls do not yet exist but when users
> do appear (shown below is an attempt to use the new API
> in vfio-pci) the following errors will be encountered when
> compiling with CONFIG_PCI_MSI disabled:
> drivers/vfio/pci/vfio_pci_intrs.c:461:4: error: implicit declaration of\
>         function 'pci_msix_free_irq' is invalid in C99\
>         [-Werror,-Wimplicit-function-declaration]
>                            pci_msix_free_irq(pdev, msix_map);
>                            ^
>    drivers/vfio/pci/vfio_pci_intrs.c:461:4: note: did you mean 'pci_ims_free_irq'?
>    include/linux/pci.h:2516:6: note: 'pci_ims_free_irq' declared here
>    void pci_ims_free_irq(struct pci_dev *pdev, struct msi_map map);
>         ^
> drivers/vfio/pci/vfio_pci_intrs.c:511:15: error: implicit declaration of\
>         function 'pci_msix_alloc_irq_at' is invalid in C99\
>         [-Werror,-Wimplicit-function-declaration]
>                    msix_map = pci_msix_alloc_irq_at(pdev, vector, NULL);
>                                       ^
>    drivers/vfio/pci/vfio_pci_intrs.c:511:15: note: did you mean 'pci_ims_alloc_irq'?
>    include/linux/pci.h:2514:16: note: 'pci_ims_alloc_irq' declared here
>    struct msi_map pci_ims_alloc_irq(struct pci_dev *pdev,\
>                                     union msi_instance_cookie *icookie,
> 
> Provide definitions for pci_msix_alloc_irq_at() and pci_msix_free_irq() in
> preparation for users that need to compile when CONFIG_PCI_MSI is
> disabled.

I think this should have a "Fixes:" tag to connect it with the commit
that added pci_msix_alloc_irq_at() and pci_msix_free_irq().

Looks like 34026364df8e ("PCI/MSI: Provide post-enable dynamic
allocation interfaces for MSI-X").

Thomas merged 34026364df8e, so it would be best if he took the fixup
as well.

> Reported-by: kernel test robot <lkp@intel.com>
> Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
> ---
> 
> checkpatch.pl warns about the usage of -ENOSYS but it does appear
> to be the custom.
> 
>  include/linux/pci.h | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
> 
> diff --git a/include/linux/pci.h b/include/linux/pci.h
> index adffd65e84b4..448482d1c4fe 100644
> --- a/include/linux/pci.h
> +++ b/include/linux/pci.h
> @@ -1621,6 +1621,19 @@ pci_alloc_irq_vectors(struct pci_dev *dev, unsigned int min_vecs,
>  					      flags, NULL);
>  }
>  
> +static inline struct msi_map
> +pci_msix_alloc_irq_at(struct pci_dev *dev, unsigned int index,
> +		      const struct irq_affinity_desc *affdesc)
> +{
> +	struct msi_map map = { .index = -ENOSYS };
> +
> +	return map;
> +}
> +
> +static inline void pci_msix_free_irq(struct pci_dev *pdev, struct msi_map map)
> +{
> +}
> +
>  static inline void pci_free_irq_vectors(struct pci_dev *dev)
>  {
>  }
> -- 
> 2.34.1
>
Reinette Chatre Feb. 14, 2023, 10:44 p.m. UTC | #7
Hi Bjorn,

On 2/14/2023 2:24 PM, Bjorn Helgaas wrote:

> I think this should have a "Fixes:" tag to connect it with the commit
> that added pci_msix_alloc_irq_at() and pci_msix_free_irq().
> 

Thank you. I was not sure if a Fixes tag was needed since it does not
fix an existing issue but instead prevents a future issue.

> Looks like 34026364df8e ("PCI/MSI: Provide post-enable dynamic
> allocation interfaces for MSI-X").
> 

Correct.

> Thomas merged 34026364df8e, so it would be best if he took the fixup
> as well.

Thomas did pick this up in tip's irq/urgent branch. While doing so he
added the Fixes tag that you proposed and also improved the subject.

Thank you very much

Reinette
Thomas Gleixner Feb. 14, 2023, 11:02 p.m. UTC | #8
On Tue, Feb 14 2023 at 16:24, Bjorn Helgaas wrote:
>> Provide definitions for pci_msix_alloc_irq_at() and pci_msix_free_irq() in
>> preparation for users that need to compile when CONFIG_PCI_MSI is
>> disabled.
>
> I think this should have a "Fixes:" tag to connect it with the commit
> that added pci_msix_alloc_irq_at() and pci_msix_free_irq().
>
> Looks like 34026364df8e ("PCI/MSI: Provide post-enable dynamic
> allocation interfaces for MSI-X").
>
> Thomas merged 34026364df8e, so it would be best if he took the fixup
> as well.

I did and miserably failed to Cc you on the notification. Sorry about that.

  https://lore.kernel.org/r/167628749774.4906.17069524905880641563.tip-bot2@tip-bot2

Thanks,

        tglx
Bjorn Helgaas Feb. 14, 2023, 11:14 p.m. UTC | #9
On Wed, Feb 15, 2023 at 12:02:17AM +0100, Thomas Gleixner wrote:
> On Tue, Feb 14 2023 at 16:24, Bjorn Helgaas wrote:
> >> Provide definitions for pci_msix_alloc_irq_at() and pci_msix_free_irq() in
> >> preparation for users that need to compile when CONFIG_PCI_MSI is
> >> disabled.
> >
> > I think this should have a "Fixes:" tag to connect it with the commit
> > that added pci_msix_alloc_irq_at() and pci_msix_free_irq().
> >
> > Looks like 34026364df8e ("PCI/MSI: Provide post-enable dynamic
> > allocation interfaces for MSI-X").
> >
> > Thomas merged 34026364df8e, so it would be best if he took the fixup
> > as well.
> 
> I did and miserably failed to Cc you on the notification. Sorry about that.
> 
>   https://lore.kernel.org/r/167628749774.4906.17069524905880641563.tip-bot2@tip-bot2

No worries, thank you!
diff mbox series

Patch

diff --git a/include/linux/pci.h b/include/linux/pci.h
index adffd65e84b4..448482d1c4fe 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -1621,6 +1621,19 @@  pci_alloc_irq_vectors(struct pci_dev *dev, unsigned int min_vecs,
 					      flags, NULL);
 }
 
+static inline struct msi_map
+pci_msix_alloc_irq_at(struct pci_dev *dev, unsigned int index,
+		      const struct irq_affinity_desc *affdesc)
+{
+	struct msi_map map = { .index = -ENOSYS };
+
+	return map;
+}
+
+static inline void pci_msix_free_irq(struct pci_dev *pdev, struct msi_map map)
+{
+}
+
 static inline void pci_free_irq_vectors(struct pci_dev *dev)
 {
 }