While building for KUnit with default settings, the build is generating the following compilation warnings.
``` $ make ARCH=um O=.kunit --jobs=16 ../lib/iomap.c:156:5: warning: no previous prototype for ‘ioread64_lo_hi’ [-Wmissing-prototypes] 156 | u64 ioread64_lo_hi(const void __iomem *addr) | ^~~~~~~~~~~~~~ [...] ```
The warning happens because the prototypes are defined in `asm-generic/iomap.h` only when `readq` and `writeq` are defined. For UM, those function get some default definitions but are currently defined _after_ the prototypes for `ioread64*`/`iowrite64*` functions. Moving the inclusion of `asm-generic/iomap.h` fixes it.
Signed-off-by: Gabriele Monaco gmonaco@redhat.com --- include/asm-generic/io.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/include/asm-generic/io.h b/include/asm-generic/io.h index 80de699bf6af..0b02c8e38f20 100644 --- a/include/asm-generic/io.h +++ b/include/asm-generic/io.h @@ -13,10 +13,6 @@ #include <linux/types.h> #include <linux/instruction_pointer.h>
-#ifdef CONFIG_GENERIC_IOMAP -#include <asm-generic/iomap.h> -#endif - #include <asm/mmiowb.h> #include <asm-generic/pci_iomap.h>
@@ -295,6 +291,10 @@ static inline void writeq(u64 value, volatile void __iomem *addr) #endif #endif /* CONFIG_64BIT */
+#ifdef CONFIG_GENERIC_IOMAP +#include <asm-generic/iomap.h> +#endif + /* * {read,write}{b,w,l,q}_relaxed() are like the regular version, but * are not guaranteed to provide ordering against spinlocks or memory
base-commit: 67784a74e258a467225f0e68335df77acd67b7ab
On Wed, 2024-09-04 at 15:50 +0200, Gabriele Monaco wrote:
While building for KUnit with default settings, the build is generating the following compilation warnings.
$ make ARCH=um O=.kunit --jobs=16 ../lib/iomap.c:156:5: warning: no previous prototype for ‘ioread64_lo_hi’ [-Wmissing-prototypes] 156 | u64 ioread64_lo_hi(const void __iomem *addr) | ^~~~~~~~~~~~~~ [...]
The warning happens because the prototypes are defined in `asm-generic/iomap.h` only when `readq` and `writeq` are defined. For UM, those function get some default definitions but are currently defined _after_ the prototypes for `ioread64*`/`iowrite64*` functions. Moving the inclusion of `asm-generic/iomap.h` fixes it.
Signed-off-by: Gabriele Monaco gmonaco@redhat.com
include/asm-generic/io.h | 8 ++++----
I get that you have this on kunit on ARCH=um, but that makes it neither a kunit nor a um patch :)
Arnd had originally wanted to fix this another way, but that got dropped. I don't know if this fix is right, though I can see that it works. I have the same workaround in my tree, but I'm really not convinced that it doesn't have side-effects on other architectures.
johannes
First of all, thanks for the quick reply
I get that you have this on kunit on ARCH=um, but that makes it neither a kunit nor a um patch :)
Well, yes I wasn't entirely sure how to put it, sure people from UM/KUnit know what this is about, but I agree perhaps the patch title can be a bit misleading.
Arnd had originally wanted to fix this another way, but that got dropped. I don't know if this fix is right, though I can see that it works. I have the same workaround in my tree, but I'm really not convinced that it doesn't have side-effects on other architectures.
I thought about doing it differently, perhaps using an additional header file or even re-arranging the macro dependency, this seemed to me the easiest and perhaps less risky for other architectures, but I get the concerns.
I could perform some further analyses building it for multiple targets (besides _it builds_ I mean), if you have anything specific in mind.
Gabriele
linux-kselftest-mirror@lists.linaro.org