linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Christophe Leroy <christophe.leroy@csgroup.eu>
To: Peter Zijlstra <peterz@infradead.org>,
	Paul Menzel <pmenzel@molgen.mpg.de>,
	Michael Ellerman <mpe@ellerman.id.au>
Cc: "linuxppc-dev@lists.ozlabs.org" <linuxppc-dev@lists.ozlabs.org>,
	"linux-mm@kvack.org" <linux-mm@kvack.org>,
	Josh Poimboeuf <jpoimboe@redhat.com>,
	Jason Baron <jbaron@akamai.com>,
	"rcu@vger.kernel.org" <rcu@vger.kernel.org>,
	LKML <linux-kernel@vger.kernel.org>,
	"Paul E. McKenney" <paulmck@kernel.org>,
	Zhouyi Zhou <zhouzhouyi@gmail.com>
Subject: Re: BUG: sleeping function called from invalid context at include/linux/sched/mm.h:256
Date: Mon, 14 Feb 2022 09:50:06 +0000	[thread overview]
Message-ID: <af4ecc95-8cb0-10a8-1819-cb6431b02156@csgroup.eu> (raw)
In-Reply-To: <YgoiWlNZvTusk1B9@hirez.programming.kicks-ass.net>



Le 14/02/2022 à 10:35, Peter Zijlstra a écrit :
> On Sun, Feb 13, 2022 at 12:05:50AM +0100, Paul Menzel wrote:
> 
>> [    0.012154][    T1] BUG: sleeping function called from invalid context at
> 
>> [    0.022443][    T1] [c0000000084837d0] [c000000000961aac] > dump_stack_lvl+0xa0/0xec (unreliable)
>> [    0.023356][    T1] [c000000008483820] [c00000000019b314] > __might_resched+0x2f4/0x310
>> [    0.024174][    T1] [c0000000084838b0] [c0000000004c0c70] > kmem_cache_alloc+0x220/0x4b0
>> [    0.025000][    T1] [c000000008483920] [c000000000448af4] > __pud_alloc+0x74/0x1d0
>> [    0.025772][    T1] [c000000008483970] [c00000000008fe3c] > hash__map_kernel_page+0x2cc/0x390
>> [    0.026643][    T1] [c000000008483a20] [c0000000000a9944] > do_patch_instruction+0x134/0x4a0
> 
> do_patch_instruction() rightfully disables IRQs, but then it goes and
> tries a memory alloc, which seems a bit daft.
> 
> I'm thinking Christophe might know more... he's recently been poking at
> Power text poking..


I don't know all details about PPC64, but here it seems like 
hash__map_kernel_page() allocates intermediate page directories when 
there is not one yet. So if that's the first time 
hash__map_kernel_page() is called for the text_poke_addr() it allocated 
PUD and PMD if necessary.

As it is kernel memory, once PUD and PMD are allocated they will remain 
forever I think. So maybe the only thing to do it to perform a dummy 
mapping/unmapping in text_area_cpu_up() to ensure the page directory are 
created in advance.

Christophe

      reply	other threads:[~2022-02-14  9:50 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-12 23:05 Paul Menzel
2022-02-12 23:48 ` Paul E. McKenney
2022-02-13  7:39   ` Paul Menzel
2022-02-13 14:45     ` Paul E. McKenney
2022-02-13 17:26       ` Paul Menzel
2022-02-13  3:19 ` Zhouyi Zhou
2022-02-13  4:09   ` Matthew Wilcox
2022-02-13  4:17     ` Zhouyi Zhou
2022-02-14  9:35 ` Peter Zijlstra
2022-02-14  9:50   ` Christophe Leroy [this message]

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=af4ecc95-8cb0-10a8-1819-cb6431b02156@csgroup.eu \
    --to=christophe.leroy@csgroup.eu \
    --cc=jbaron@akamai.com \
    --cc=jpoimboe@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=mpe@ellerman.id.au \
    --cc=paulmck@kernel.org \
    --cc=peterz@infradead.org \
    --cc=pmenzel@molgen.mpg.de \
    --cc=rcu@vger.kernel.org \
    --cc=zhouzhouyi@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox