Re: [PATCH 1/2] powerpc: drop dependency on <asm/machdep.h> in archrandom.h
From: Michael Ellerman <mpe@ellerman.id.au>
Date: 2022-07-26 02:47:00
Also in:
lkml
Yury Norov [off-list ref] writes:
On Mon, Jul 25, 2022 at 10:22:13PM +1000, Michael Ellerman wrote:quoted
Michael Ellerman [off-list ref] writes:quoted
Yury Norov [off-list ref] writes:quoted
archrandom.h includes <asm/machdep.h> to refer ppc_md. This causes circular header dependency, if generic nodemask.h includes random.h: In file included from include/linux/cred.h:16, from include/linux/seq_file.h:13, from arch/powerpc/include/asm/machdep.h:6, from arch/powerpc/include/asm/archrandom.h:5, from include/linux/random.h:109, from include/linux/nodemask.h:97, from include/linux/list_lru.h:12, from include/linux/fs.h:13, from include/linux/compat.h:17, from arch/powerpc/kernel/asm-offsets.c:12: include/linux/sched.h:1203:9: error: unknown type name 'nodemask_t' 1203 | nodemask_t mems_allowed; | ^~~~~~~~~~ Fix it by removing <asm/machdep.h> dependency from archrandom.h Signed-off-by: Yury Norov <yury.norov@gmail.com> --- arch/powerpc/include/asm/archrandom.h | 9 +-------- arch/powerpc/kernel/setup-common.c | 11 +++++++++++ 2 files changed, 12 insertions(+), 8 deletions(-)diff --git a/arch/powerpc/include/asm/archrandom.h b/arch/powerpc/include/asm/archrandom.h index 9a53e29680f4..21def59ef1a6 100644 --- a/arch/powerpc/include/asm/archrandom.h +++ b/arch/powerpc/include/asm/archrandom.h@@ -4,7 +4,7 @@ #ifdef CONFIG_ARCH_RANDOM -#include <asm/machdep.h> +bool __must_check arch_get_random_seed_long(unsigned long *v); static inline bool __must_check arch_get_random_long(unsigned long *v) {@@ -16,13 +16,6 @@ static inline bool __must_check arch_get_random_int(unsigned int *v) return false; } -static inline bool __must_check arch_get_random_seed_long(unsigned long *v) -{ - if (ppc_md.get_random_seed) - return ppc_md.get_random_seed(v); - - return false; -}I'd rather we didn't have to force this out of line. I think I see a different way to fix it, I'll just do some more build tests.Of course my idea didn't work :} So I'll just ack your patch for now, and maybe I can get the headers cleaned up in future to allow it to be out-of-line again.I understand that it looks like a tradeoff - we inline a couple of small functions with the cost of uninlining an almost innocent victim.
Yeah. The truth is the cost to access the RNG will far outweigh the cost of that out-of-line call, so there's no real issue. But it's also such a small function that it just cries out to be inlined :)
The complete solution would be probably a splitting ppc_md declaration out of asm/machdep.h. I wanted to do that, but I'm not a PPC guy, and just don't know how to split the header correctly.
I managed to drop the includes of seq_file.h and dma-mapping.h, which seemed to fix the circular include problem, but there's a bit of fall out in unrelated files. I think I can get that sorted though eventually.
Anyways, thanks for the ack. Applied on bitmap-for-next.
No worries. cheers