2023-05-22 16:16:35

by Dave Jiang

[permalink] [raw]
Subject: [PATCH] acpi: Fix header declaration of acpi_arch_dma_setup() w/o CONFIG_ACPI

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 <[email protected]>
Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
Fixes: bf2ee8d0c385 ("ACPI: scan: Support multiple DMA windows with different offsets")
CC: Jianmin Lv <[email protected]>
CC: Rafael J. Wysocki <[email protected]>
Signed-off-by: Dave Jiang <[email protected]>
---
include/linux/acpi.h | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)

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




2023-06-01 02:09:23

by Hanjun Guo

[permalink] [raw]
Subject: Re: [PATCH] acpi: Fix header declaration of acpi_arch_dma_setup() w/o CONFIG_ACPI

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 <[email protected]>
> Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/

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

Thanks
Hanjun

2023-06-01 11:04:55

by Robin Murphy

[permalink] [raw]
Subject: Re: [PATCH] acpi: Fix header declaration of acpi_arch_dma_setup() w/o CONFIG_ACPI

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.

2023-06-01 15:45:29

by Dave Jiang

[permalink] [raw]
Subject: Re: [PATCH] acpi: Fix header declaration of acpi_arch_dma_setup() w/o CONFIG_ACPI


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.