All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michael Ellerman <mpe@ellerman.id.au>
To: Yury Norov <yury.norov@gmail.com>
Cc: linux-kernel@vger.kernel.org,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Rasmus Villemoes <linux@rasmusvillemoes.dk>,
	linuxppc-dev@lists.ozlabs.org,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	Paul Mackerras <paulus@samba.org>,
	Stephen Rothwell <sfr@canb.auug.org.au>
Subject: Re: [PATCH 1/2] powerpc: drop dependency on <asm/machdep.h> in archrandom.h
Date: Tue, 26 Jul 2022 12:46:49 +1000	[thread overview]
Message-ID: <87h734bnfq.fsf@mpe.ellerman.id.au> (raw)
In-Reply-To: <Yt7Ewi2vu49fW1ZJ@yury-laptop>

Yury Norov <yury.norov@gmail.com> writes:
> On Mon, Jul 25, 2022 at 10:22:13PM +1000, Michael Ellerman wrote:
>> Michael Ellerman <mpe@ellerman.id.au> writes:
>> > Yury Norov <yury.norov@gmail.com> writes:
>> >> 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

WARNING: multiple messages have this Message-ID (diff)
From: Michael Ellerman <mpe@ellerman.id.au>
To: Yury Norov <yury.norov@gmail.com>
Cc: Stephen Rothwell <sfr@canb.auug.org.au>,
	Rasmus Villemoes <linux@rasmusvillemoes.dk>,
	linux-kernel@vger.kernel.org, Paul Mackerras <paulus@samba.org>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH 1/2] powerpc: drop dependency on <asm/machdep.h> in archrandom.h
Date: Tue, 26 Jul 2022 12:46:49 +1000	[thread overview]
Message-ID: <87h734bnfq.fsf@mpe.ellerman.id.au> (raw)
In-Reply-To: <Yt7Ewi2vu49fW1ZJ@yury-laptop>

Yury Norov <yury.norov@gmail.com> writes:
> On Mon, Jul 25, 2022 at 10:22:13PM +1000, Michael Ellerman wrote:
>> Michael Ellerman <mpe@ellerman.id.au> writes:
>> > Yury Norov <yury.norov@gmail.com> writes:
>> >> 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

  reply	other threads:[~2022-07-26  2:47 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-23 21:45 [PATCH 0/2] lib/nodemask: inline wrappers around bitmap Yury Norov
2022-07-23 21:45 ` [PATCH 1/2] powerpc: drop dependency on <asm/machdep.h> in archrandom.h Yury Norov
2022-07-25  7:28   ` Andy Shevchenko
2022-07-25  7:28     ` Andy Shevchenko
2022-07-25 16:17     ` Yury Norov
2022-07-25 16:17       ` Yury Norov
2022-07-25 21:39       ` Andy Shevchenko
2022-07-25 21:39         ` Andy Shevchenko
2022-07-25 23:32         ` Yury Norov
2022-07-25 23:32           ` Yury Norov
2022-07-26  6:13           ` Andy Shevchenko
2022-07-26  6:13             ` Andy Shevchenko
2022-07-26  6:15             ` Andy Shevchenko
2022-07-26  6:15               ` Andy Shevchenko
2022-07-26  6:57       ` Michael Ellerman
2022-07-26  6:57         ` Michael Ellerman
2022-07-26 15:19         ` Yury Norov
2022-07-26 15:19           ` Yury Norov
2022-07-25  8:34   ` Michael Ellerman
2022-07-25 12:22     ` Michael Ellerman
2022-07-25 16:28       ` Yury Norov
2022-07-25 16:28         ` Yury Norov
2022-07-26  2:46         ` Michael Ellerman [this message]
2022-07-26  2:46           ` Michael Ellerman
2022-07-25 12:22   ` Michael Ellerman
2022-07-23 21:45 ` [RESEND PATCH 2/2] lib/nodemask: inline next_node_in() and node_random() Yury Norov
2022-08-12  5:16   ` Aneesh Kumar K.V
2022-08-12  5:40     ` Yury Norov
2022-08-12  5:40       ` Yury Norov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87h734bnfq.fsf@mpe.ellerman.id.au \
    --to=mpe@ellerman.id.au \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=benh@kernel.crashing.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@rasmusvillemoes.dk \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=paulus@samba.org \
    --cc=sfr@canb.auug.org.au \
    --cc=yury.norov@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.