All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Paul E. McKenney" <paulmck@us.ibm.com>
To: Ingo Molnar <mingo@elte.hu>
Cc: Dipankar Sarma <dipankar@in.ibm.com>,
	linux-kernel@vger.kernel.org, john stultz <johnstul@us.ibm.com>
Subject: Re: [PATCH] 2.6.17-rt1 : fix x86_64 oops
Date: Thu, 6 Jul 2006 13:06:39 -0700	[thread overview]
Message-ID: <20060706200639.GG1316@us.ibm.com> (raw)
In-Reply-To: <20060704065024.GA5789@elte.hu>

On Tue, Jul 04, 2006 at 08:50:24AM +0200, Ingo Molnar wrote:
> 
> * Ingo Molnar <mingo@elte.hu> wrote:
> 
> > > Ingo, do you have a suspect ?
> > 
> > I suspect it's the patch below. That patch (from John) relaxes the 
> > affinities of IRQ threads: if there are /proc/irq/*/smp_affinity 
> > entries that have multiple bits set an IRQ thread is allowed to jump 
> > from one CPU to another while it is executing a IRQ-handler. It 
> > _should_ be fine but i'd not be surprised if that caused breakage ...
> 
> the patch below is against 2.6.17-rt5, does this solve the crashes?

And I also still get a segmentation fault when modprobing rcutorture
with this patch.  :-/

The segfault is bizarre -- it is in the module symbol-lookup code.  I get
the segfault regardless of what module parameters I specify, in fact,
it even shows up even if I comment out all the module parameters in
rcutorture.c.  Tiny modules, such as hello.c from "Linux Device Drivers",
work just fine -- but the size of rcutorture.ko is -way- below the
64k limit, and, as I mentioned, I get the oops even if I comment out
all of rcutorture's module parameters.

See oops below.

Any enlightenment available?

							Thanx, Paul

BUG: unable to handle kernel paging request at virtual address 75010000
 printing eip:
c0133941
*pde = 00000000
Oops: 0000 [#1]
PREEMPT SMP 
Modules linked in:
CPU:    0
EIP:    0060:[<c0133941>]    Not tainted VLI
EFLAGS: 00010297   (2.6.17-rt5-autokern1 #1) 
EIP is at lookup_symbol+0x16/0x3b
eax: ffffffff   ebx: c0345a5c   ecx: c0343e90   edx: c0343e98
esi: 75010000   edi: f8ded2a6   ebp: f1a61edc   esp: f1a61e98
ds: 007b   es: 007b   ss: 0068   preempt: 00000001
Process modprobe (pid: 3663, threadinfo=f1a60000 task=f12160d0 stack_left=7780 worst_left=-1)
Stack: f8df02d0 f8df1380 f8ded2a6 c013398c f8ded2a6 c03419f0 c0345a5c f8df02d0 
       f8df1380 0000008e 00000062 c01345b5 f8ded2a6 f1a61ed8 f1a61edc 00000001 
       00000000 f8dc2e31 f8df02d0 00000620 c0134b49 f8de2214 00000000 f8ded2a6 
Call Trace:
 [<c013398c>] __find_symbol+0x26/0x158 (16)
 [<c01345b5>] resolve_symbol+0x21/0x46 (32)
 [<c0134b49>] simplify_symbols+0x88/0x101 (36)
 [<c0135707>] load_module+0x5f0/0x913 (40)
 [<c0135a8e>] sys_init_module+0x41/0x1c5 (144)
 [<c0102a03>] syscall_call+0x7/0xb (24)
---------------------------
| preempt count: 00000001 ]
| 1-level deep critical section nesting:
----------------------------------------
.. [<c02f17f7>] .... _raw_spin_lock_irqsave+0xe/0x35
.....[<00000000>] ..   ( <= _stext+0x3feffd64/0x41)

Code: 43 83 c1 28 0f b7 42 30 39 c3 72 c7 31 d2 5b 89 d0 5e 5f 5d c3 57 56 53 8b 5c 24 18 8b 54 24 14 39 da 73 24 8b 72 04 8b 7c 24 10 <ac> ae 75 08 84 c0 75 f8 31 c0 eb 04 19 c0 0c 01 85 c0 89 d1 74 
EIP: [<c0133941>] lookup_symbol+0x16/0x3b SS:ESP 0068:f1a61e98

> 	Ingo
> 
> Index: linux-rt.q/kernel/irq/manage.c
> ===================================================================
> --- linux-rt.q.orig/kernel/irq/manage.c
> +++ linux-rt.q/kernel/irq/manage.c
> @@ -645,17 +645,24 @@ extern asmlinkage void __do_softirq(void
>  
>  static int curr_irq_prio = 49;
>  
> -static int do_irqd(void * __desc)
> +static void follow_irq_affinity(struct irq_desc *desc)
>  {
> -	struct sched_param param = { 0, };
> -	struct irq_desc *desc = __desc;
>  #ifdef CONFIG_SMP
> -	int irq = desc - irq_desc;
>  	cpumask_t mask;
>  
> -	mask = cpumask_of_cpu(any_online_cpu(irq_desc[irq].affinity));
> +	if (cpus_equal(current->cpus_allowed, desc->affinity))
> +		return;
> +	mask = cpumask_of_cpu(any_online_cpu(desc->affinity));
>  	set_cpus_allowed(current, mask);
>  #endif
> +}
> +
> +static int do_irqd(void * __desc)
> +{
> +	struct sched_param param = { 0, };
> +	struct irq_desc *desc = __desc;
> +
> +	follow_irq_affinity(desc);
>  	current->flags |= PF_NOFREEZE | PF_HARDIRQ;
>  
>  	/*
> @@ -674,13 +681,7 @@ static int do_irqd(void * __desc)
>  		local_irq_disable();
>  		__do_softirq();
>  		local_irq_enable();
> -#ifdef CONFIG_SMP
> -		/*
> -		 * Did IRQ affinities change?
> -		 */
> -		if (!cpus_equal(current->cpus_allowed, irq_desc[irq].affinity))
> -			set_cpus_allowed(current, irq_desc[irq].affinity);
> -#endif
> +		follow_irq_affinity(desc);
>  		schedule();
>  	}
>  	__set_current_state(TASK_RUNNING);

      parent reply	other threads:[~2006-07-06 20:06 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-06-27 20:01 2.6.17-rt1 : x86_64 oops Dipankar Sarma
2006-06-28 18:21 ` [PATCH] 2.6.17-rt1 : fix " Dipankar Sarma
2006-06-28 19:32   ` Ingo Molnar
2006-06-28 20:02     ` Dipankar Sarma
2006-06-29 14:24       ` Ingo Molnar
2006-06-29 16:32         ` Paul E. McKenney
2006-06-29 19:41           ` Paul E. McKenney
2006-06-29 20:11             ` Ingo Molnar
2006-06-29 21:35               ` Paul E. McKenney
2006-07-03 16:57               ` Dipankar Sarma
2006-07-04  4:15                 ` Dipankar Sarma
2006-07-04  6:43                   ` Ingo Molnar
2006-07-04  6:50                     ` Ingo Molnar
2006-07-05  9:11                       ` Dipankar Sarma
2006-07-26  7:36                         ` Dipankar Sarma
2006-07-06 20:06                       ` Paul E. McKenney [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=20060706200639.GG1316@us.ibm.com \
    --to=paulmck@us.ibm.com \
    --cc=dipankar@in.ibm.com \
    --cc=johnstul@us.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    /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.