[PATCH v2 -next] ACPI/IORT: Fix build error implicit-function-declaration

Ren Zhijie posted 1 patch 3 years, 8 months ago
drivers/acpi/arm64/iort.c | 56 +++++++++++++++++++--------------------
1 file changed, 28 insertions(+), 28 deletions(-)
[PATCH v2 -next] ACPI/IORT: Fix build error implicit-function-declaration
Posted by Ren Zhijie 3 years, 8 months ago
If CONFIG_ACPI_IORT=y and CONFIG_IOMMU_API is not set,
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-,
will be failed, like this:

drivers/acpi/arm64/iort.c: In function ‘iort_get_rmr_sids’:
drivers/acpi/arm64/iort.c:1406:2: error: implicit declaration of function ‘iort_iommu_rmr_get_resv_regions’; did you mean ‘iort_iommu_get_resv_regions’? [-Werror=implicit-function-declaration]
  iort_iommu_rmr_get_resv_regions(iommu_fwnode, NULL, head);
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  iort_iommu_get_resv_regions
cc1: some warnings being treated as errors
make[3]: *** [drivers/acpi/arm64/iort.o] Error 1

The function iort_iommu_rmr_get_resv_regions()
is declared under CONFIG_IOMMU_API, 
and the callers of iort_get_rmr_sids() and iort_put_rmr_sids()
would select IOMMU_API.

To fix this error, move the definitions to #ifdef CONFIG_IOMMU_API.

Fixes: e302eea8f497 ("ACPI/IORT: Add a helper to retrieve RMR info directly")
Signed-off-by: Ren Zhijie <renzhijie2@huawei.com>
---
Changes in v2:
 - change commit message to a max of 75 chars per line.

 drivers/acpi/arm64/iort.c | 56 +++++++++++++++++++--------------------
 1 file changed, 28 insertions(+), 28 deletions(-)

diff --git a/drivers/acpi/arm64/iort.c b/drivers/acpi/arm64/iort.c
index cd1349d3544e..ca2aed86b540 100644
--- a/drivers/acpi/arm64/iort.c
+++ b/drivers/acpi/arm64/iort.c
@@ -1162,6 +1162,34 @@ void iort_iommu_get_resv_regions(struct device *dev, struct list_head *head)
 	iort_iommu_rmr_get_resv_regions(fwspec->iommu_fwnode, dev, head);
 }
 
+/**
+ * iort_get_rmr_sids - Retrieve IORT RMR node reserved regions with
+ *                     associated StreamIDs information.
+ * @iommu_fwnode: fwnode associated with IOMMU
+ * @head: Resereved region list
+ */
+void iort_get_rmr_sids(struct fwnode_handle *iommu_fwnode,
+		       struct list_head *head)
+{
+	iort_iommu_rmr_get_resv_regions(iommu_fwnode, NULL, head);
+}
+EXPORT_SYMBOL_GPL(iort_get_rmr_sids);
+
+/**
+ * iort_put_rmr_sids - Free memory allocated for RMR reserved regions.
+ * @iommu_fwnode: fwnode associated with IOMMU
+ * @head: Resereved region list
+ */
+void iort_put_rmr_sids(struct fwnode_handle *iommu_fwnode,
+		       struct list_head *head)
+{
+	struct iommu_resv_region *entry, *next;
+
+	list_for_each_entry_safe(entry, next, head, list)
+		entry->free(NULL, entry);
+}
+EXPORT_SYMBOL_GPL(iort_put_rmr_sids);
+
 static inline bool iort_iommu_driver_enabled(u8 type)
 {
 	switch (type) {
@@ -1394,34 +1422,6 @@ int iort_dma_get_ranges(struct device *dev, u64 *size)
 		return nc_dma_get_range(dev, size);
 }
 
-/**
- * iort_get_rmr_sids - Retrieve IORT RMR node reserved regions with
- *                     associated StreamIDs information.
- * @iommu_fwnode: fwnode associated with IOMMU
- * @head: Resereved region list
- */
-void iort_get_rmr_sids(struct fwnode_handle *iommu_fwnode,
-		       struct list_head *head)
-{
-	iort_iommu_rmr_get_resv_regions(iommu_fwnode, NULL, head);
-}
-EXPORT_SYMBOL_GPL(iort_get_rmr_sids);
-
-/**
- * iort_put_rmr_sids - Free memory allocated for RMR reserved regions.
- * @iommu_fwnode: fwnode associated with IOMMU
- * @head: Resereved region list
- */
-void iort_put_rmr_sids(struct fwnode_handle *iommu_fwnode,
-		       struct list_head *head)
-{
-	struct iommu_resv_region *entry, *next;
-
-	list_for_each_entry_safe(entry, next, head, list)
-		entry->free(NULL, entry);
-}
-EXPORT_SYMBOL_GPL(iort_put_rmr_sids);
-
 static void __init acpi_iort_register_irq(int hwirq, const char *name,
 					  int trigger,
 					  struct resource *res)
-- 
2.17.1

Re: [PATCH v2 -next] ACPI/IORT: Fix build error implicit-function-declaration
Posted by Hanjun Guo 3 years, 8 months ago
On 2022/7/26 11:35, Ren Zhijie wrote:
> If CONFIG_ACPI_IORT=y and CONFIG_IOMMU_API is not set,
> make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-,
> will be failed, like this:
> 
> drivers/acpi/arm64/iort.c: In function ‘iort_get_rmr_sids’:
> drivers/acpi/arm64/iort.c:1406:2: error: implicit declaration of function ‘iort_iommu_rmr_get_resv_regions’; did you mean ‘iort_iommu_get_resv_regions’? [-Werror=implicit-function-declaration]
>    iort_iommu_rmr_get_resv_regions(iommu_fwnode, NULL, head);
>    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    iort_iommu_get_resv_regions
> cc1: some warnings being treated as errors
> make[3]: *** [drivers/acpi/arm64/iort.o] Error 1
> 
> The function iort_iommu_rmr_get_resv_regions()
> is declared under CONFIG_IOMMU_API,
> and the callers of iort_get_rmr_sids() and iort_put_rmr_sids()
> would select IOMMU_API.
> 
> To fix this error, move the definitions to #ifdef CONFIG_IOMMU_API.
> 
> Fixes: e302eea8f497 ("ACPI/IORT: Add a helper to retrieve RMR info directly")
> Signed-off-by: Ren Zhijie <renzhijie2@huawei.com>
> ---
> Changes in v2:
>   - change commit message to a max of 75 chars per line.
> 

Acked-by: Hanjun Guo <guohanjun@huawei.com>

Lorenzo, will this patch go via ARM64 tree?

Thanks
Hanjun

Re: [PATCH v2 -next] ACPI/IORT: Fix build error implicit-function-declaration
Posted by Joerg Roedel 3 years, 8 months ago
On Tue, Jul 26, 2022 at 02:54:59PM +0800, Hanjun Guo wrote:
> Lorenzo, will this patch go via ARM64 tree?

No, this needs to go via IOMMU tree, as the problem is introduced there.

Patch is now applied, thanks.

-- 
Jörg Rödel
jroedel@suse.de

SUSE Software Solutions Germany GmbH
Frankenstraße 146
90461 Nürnberg
Germany

(HRB 36809, AG Nürnberg)
Geschäftsführer: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman