acpi: Fix header declaration of acpi_arch_dma_setup() w/o CONFIG_ACPI

Message ID 168477156440.3873520.6153672647621739139.stgit@djiang5-mobl3
State New
Headers
Series acpi: Fix header declaration of acpi_arch_dma_setup() w/o CONFIG_ACPI |

Commit Message

Dave Jiang May 22, 2023, 4:06 p.m. UTC
  arm64 build can be done without CONFIG_ACPI. The ifdef bits for
acpi_arch_dma_setup() is placed inside CONFIG_ACPI. When CONFIG_ACPI is
not set, this causes warning reported by kernel test bot. Move the
prototype declaration for acpi_arch_dma_setup() outside of CONFIG_ACPI.

>> drivers/acpi/arm64/dma.c:7:6: warning: no previous prototype for function 'acpi_arch_dma_setup' [-Wmissing-prototypes]
   void acpi_arch_dma_setup(struct device *dev)
        ^
   drivers/acpi/arm64/dma.c:7:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   void acpi_arch_dma_setup(struct device *dev)
   ^
   static
   1 warning generated.

Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202305200933.afKCLlxS-lkp@intel.com/
Fixes: bf2ee8d0c385 ("ACPI: scan: Support multiple DMA windows with different offsets")
CC: Jianmin Lv <lvjianmin@loongson.cn>
CC: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
---
 include/linux/acpi.h |   12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)
  

Comments

Hanjun Guo June 1, 2023, 1:48 a.m. UTC | #1
Hi Dave,

Sorry for the late reply, I have some comments inline.

On 2023/5/23 0:06, Dave Jiang wrote:
> arm64 build can be done without CONFIG_ACPI. The ifdef bits for
> acpi_arch_dma_setup() is placed inside CONFIG_ACPI. When CONFIG_ACPI is
> not set, this causes warning reported by kernel test bot. Move the
> prototype declaration for acpi_arch_dma_setup() outside of CONFIG_ACPI.

...

> 
>>> drivers/acpi/arm64/dma.c:7:6: warning: no previous prototype for function 'acpi_arch_dma_setup' [-Wmissing-prototypes]
>     void acpi_arch_dma_setup(struct device *dev)
>          ^
>     drivers/acpi/arm64/dma.c:7:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
>     void acpi_arch_dma_setup(struct device *dev)
>     ^
>     static
>     1 warning generated.

drivers/acpi can only be compiled with CONFIG_ACPI=y, so
drivers/acpi/arm64/ will be the same, not sure how to trigger
this compile warning.

I disable CONFIG_ACPI on my ARM64 machine, but didn't get the
warning you reported.

> 
> Reported-by: kernel test robot <lkp@intel.com>
> Closes: https://lore.kernel.org/oe-kbuild-all/202305200933.afKCLlxS-lkp@intel.com/

How to generate the kernel config file as you kindly attached in the
link?

Thanks
Hanjun
  
Robin Murphy June 1, 2023, 10:31 a.m. UTC | #2
On 2023-06-01 02:48, Hanjun Guo wrote:
> Hi Dave,
> 
> Sorry for the late reply, I have some comments inline.
> 
> On 2023/5/23 0:06, Dave Jiang wrote:
>> arm64 build can be done without CONFIG_ACPI. The ifdef bits for
>> acpi_arch_dma_setup() is placed inside CONFIG_ACPI. When CONFIG_ACPI is
>> not set, this causes warning reported by kernel test bot. Move the
>> prototype declaration for acpi_arch_dma_setup() outside of CONFIG_ACPI.
> 
> ...
> 
>>
>>>> drivers/acpi/arm64/dma.c:7:6: warning: no previous prototype for 
>>>> function 'acpi_arch_dma_setup' [-Wmissing-prototypes]
>>     void acpi_arch_dma_setup(struct device *dev)
>>          ^
>>     drivers/acpi/arm64/dma.c:7:1: note: declare 'static' if the 
>> function is not intended to be used outside of this translation unit
>>     void acpi_arch_dma_setup(struct device *dev)
>>     ^
>>     static
>>     1 warning generated.
> 
> drivers/acpi can only be compiled with CONFIG_ACPI=y, so
> drivers/acpi/arm64/ will be the same, not sure how to trigger
> this compile warning.
> 
> I disable CONFIG_ACPI on my ARM64 machine, but didn't get the
> warning you reported.

Looking at the linked LKP report, it seems it's it's explicitly trying 
to build drivers/acpi/arm64/ despite the config:

         mkdir build_dir && cp config build_dir/.config
         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 
O=build_dir ARCH=arm64 olddefconfig
         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 
O=build_dir ARCH=arm64 SHELL=/bin/bash drivers/acpi/arm64/

So I guess it's a problem with the LKP setup? In general, trying to 
build arbitrary parts of the kernel which are configured out can never 
be expected to work.

Thanks,
Robin.
  
Dave Jiang June 1, 2023, 3:24 p.m. UTC | #3
On 6/1/23 03:31, Robin Murphy wrote:
> On 2023-06-01 02:48, Hanjun Guo wrote:
>> Hi Dave,
>>
>> Sorry for the late reply, I have some comments inline.
>>
>> On 2023/5/23 0:06, Dave Jiang wrote:
>>> arm64 build can be done without CONFIG_ACPI. The ifdef bits for
>>> acpi_arch_dma_setup() is placed inside CONFIG_ACPI. When CONFIG_ACPI is
>>> not set, this causes warning reported by kernel test bot. Move the
>>> prototype declaration for acpi_arch_dma_setup() outside of CONFIG_ACPI.
>>
>> ...
>>
>>>
>>>>> drivers/acpi/arm64/dma.c:7:6: warning: no previous prototype for 
>>>>> function 'acpi_arch_dma_setup' [-Wmissing-prototypes]
>>>     void acpi_arch_dma_setup(struct device *dev)
>>>          ^
>>>     drivers/acpi/arm64/dma.c:7:1: note: declare 'static' if the 
>>> function is not intended to be used outside of this translation unit
>>>     void acpi_arch_dma_setup(struct device *dev)
>>>     ^
>>>     static
>>>     1 warning generated.
>>
>> drivers/acpi can only be compiled with CONFIG_ACPI=y, so
>> drivers/acpi/arm64/ will be the same, not sure how to trigger
>> this compile warning.
>>
>> I disable CONFIG_ACPI on my ARM64 machine, but didn't get the
>> warning you reported.
>
> Looking at the linked LKP report, it seems it's it's explicitly trying 
> to build drivers/acpi/arm64/ despite the config:
>
>         mkdir build_dir && cp config build_dir/.config
>         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 
> O=build_dir ARCH=arm64 olddefconfig
>         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 
> O=build_dir ARCH=arm64 SHELL=/bin/bash drivers/acpi/arm64/
>
> So I guess it's a problem with the LKP setup? In general, trying to 
> build arbitrary parts of the kernel which are configured out can never 
> be expected to work.

It seems to be a problem triggered because I was working on some patches 
that added obj-y at the drivers/Makefile for acpi/ and opened the ACPI 
dir for !CONFIG_ACPI compile. The code has been reworked after comments 
from Rafael. So this is no longer a problem. Please ignore patch. Sorry 
about the noise.




>
> Thanks,
> Robin.
  

Patch

diff --git a/include/linux/acpi.h b/include/linux/acpi.h
index 7b71dd74baeb..a0a8492d8a60 100644
--- a/include/linux/acpi.h
+++ b/include/linux/acpi.h
@@ -281,12 +281,6 @@  acpi_numa_processor_affinity_init(struct acpi_srat_cpu_affinity *pa) { }
 
 void acpi_numa_x2apic_affinity_init(struct acpi_srat_x2apic_cpu_affinity *pa);
 
-#if defined(CONFIG_ARM64) || defined(CONFIG_LOONGARCH)
-void acpi_arch_dma_setup(struct device *dev);
-#else
-static inline void acpi_arch_dma_setup(struct device *dev) { }
-#endif
-
 #ifdef CONFIG_ARM64
 void acpi_numa_gicc_affinity_init(struct acpi_srat_gicc_affinity *pa);
 #else
@@ -1084,6 +1078,12 @@  static inline bool acpi_sleep_state_supported(u8 sleep_state)
 
 #endif	/* !CONFIG_ACPI */
 
+#if defined(CONFIG_ARM64) || defined(CONFIG_LOONGARCH)
+void acpi_arch_dma_setup(struct device *dev);
+#else
+static inline void acpi_arch_dma_setup(struct device *dev) { }
+#endif
+
 #ifdef CONFIG_ACPI_HOTPLUG_IOAPIC
 int acpi_ioapic_add(acpi_handle root);
 #else