Message ID | 20240904135019.200756-1-gmonaco@redhat.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | um: kunit: resolve missing prototypes warning | expand |
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
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
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(-) base-commit: 67784a74e258a467225f0e68335df77acd67b7ab