* SMP soft lockup on smp_call_function_many when doing flush_tlb_page
@ 2011-03-08 9:53 saeed bishara
2011-03-08 13:33 ` Catalin Marinas
0 siblings, 1 reply; 12+ messages in thread
From: saeed bishara @ 2011-03-08 9:53 UTC (permalink / raw)
To: linux-arm-kernel
Hi,
The lockup below happens on my SMP system that doesn't support hw
tlb broadcast.
after some debug I found that the mask inside
smp_call_function_many() which points to mm_cpumask, get changed
asynchronously, apparently by reset_context() that called from IPI
that was issued by another cpu.
when I disable interrupts in smp_call_function_many around the
code that uses the mask, the issue disappears.
also, reverting the patch "ARM: 5905/1: ARM: Global ASID
allocation on SMP" eliminates this specific bug.
BUG: soft lockup - CPU#0 stuck for 61s! [aptitude:1721]
Modules linked in:
Pid: 1721, comm: aptitude
CPU: 0 Not tainted (2.6.35.9-00005-g106dd76 #4)
PC is at csd_lock_wait+0x14/0x28
LR is at smp_call_function_many+0x1f0/0x21c
pc : [<c01b70d8>] lr : [<c01b7804>] psr: 20000113
sp : e19b5d30 ip : e19b5d40 fp : e19b5d3c
r10: c05560e0 r9 : 00da3000 r8 : 00000001
r7 : c002ea00 r6 : c0dd1a00 r5 : 00000000 r4 : c0dd1a18
r3 : 00000000 r2 : 00000e00 r1 : 00000004 r0 : c0dd1a00
Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user
Control: 00c5387d Table: 21b6001a DAC: 00000015
[<c014e5c0>] (show_regs+0x0/0x50) from [<c01bdc64>] (softlockup_tick+0x160/0x1c8
)
r4:e19b5ce8 r3:c002db44
[<c01bdb04>] (softlockup_tick+0x0/0x1c8) from [<c019c330>] (run_local_timers+0x1
c/0x20)
[<c019c314>] (run_local_timers+0x0/0x20) from [<c019c368>] (update_process_times
+0x34/0x58)
[<c019c334>] (update_process_times+0x0/0x58) from [<c01b33d4>] (tick_periodic+0x
e8/0x114)
r6:c0dd0050 r5:c05a3dc0 r4:c0dd0050 r3:20000113
[<c01b32ec>] (tick_periodic+0x0/0x114) from [<c01b342c>] (tick_handle_periodic+0
x2c/0xd4)
[<c01b3400>] (tick_handle_periodic+0x0/0xd4) from [<c01529cc>] (ipi_timer+0x3c/0
x4c)
r7:c002ea00 r6:80000020 r5:c05a3dc0 r4:c0dd0050
[<c0152990>] (ipi_timer+0x0/0x4c) from [<c002f3fc>] (do_local_timer+0x58/0x88)
r4:00000000 r3:00003687
[<c002f3a4>] (do_local_timer+0x0/0x88) from [<c0043f74>] (__irq_svc+0x34/0x100)
Exception stack(0xe19b5ce8 to 0xe19b5d30)
5ce0: c0dd1a00 00000004 00000e00 00000000 c0dd1a18 00000000
5d00: c0dd1a00 c002ea00 00000001 00da3000 c05560e0 e19b5d3c e19b5d40 e19b5d30
5d20: c01b7804 c01b70d8 20000113 ffffffff
r5:fbb21000 r4:ffffffff
[<c01b70c4>] (csd_lock_wait+0x0/0x28) from [<c01b7804>] (smp_call_function_many+
0x1f0/0x21c)
[<c01b7614>] (smp_call_function_many+0x0/0x21c) from [<c0152bac>] (T.319+0x2c/0x
6c)
[<c0152b80>] (T.319+0x0/0x6c) from [<c0152ca8>] (flush_tlb_page+0x40/0xa4)
r6:41fb1000 r5:e1b906a8 r4:00000000 r3:00000000
[<c0152c68>] (flush_tlb_page+0x0/0xa4) from [<c01e653c>] (do_wp_page+0x3c0/0x7cc
)
[<c01e617c>] (do_wp_page+0x0/0x7cc) from [<c01e735c>] (handle_mm_fault+0x6e4/0x7
a8)
[<c01e6c78>] (handle_mm_fault+0x0/0x7a8) from [<c0046014>] (do_page_fault+0x130/
0x2f8)
[<c0045ee4>] (do_page_fault+0x0/0x2f8) from [<c002f590>] (do_DataAbort+0x3c/0xa0
)
[<c002f554>] (do_DataAbort+0x0/0xa0) from [<c00443c4>] (ret_from_exception+0x0/0
x10)
^ permalink raw reply [flat|nested] 12+ messages in thread
* SMP soft lockup on smp_call_function_many when doing flush_tlb_page
2011-03-08 9:53 SMP soft lockup on smp_call_function_many when doing flush_tlb_page saeed bishara
@ 2011-03-08 13:33 ` Catalin Marinas
2011-03-08 15:28 ` saeed bishara
0 siblings, 1 reply; 12+ messages in thread
From: Catalin Marinas @ 2011-03-08 13:33 UTC (permalink / raw)
To: linux-arm-kernel
On Tue, 2011-03-08 at 09:53 +0000, saeed bishara wrote:
> The lockup below happens on my SMP system that doesn't support hw
> tlb broadcast.
> after some debug I found that the mask inside
> smp_call_function_many() which points to mm_cpumask, get changed
> asynchronously, apparently by reset_context() that called from IPI
> that was issued by another cpu.
> when I disable interrupts in smp_call_function_many around the
> code that uses the mask, the issue disappears.
> also, reverting the patch "ARM: 5905/1: ARM: Global ASID
> allocation on SMP" eliminates this specific bug.
It looks like smp_call_function_many() does all the checks on the mask
argument that it received and decides that there are CPUs to call (fair
enough). But in the meantime reset_context() via IPI clears this mask
leaving only the current CPU. Once the IPI was handled,
smp_call_function_many() copies this mask to data->cpumask and clears
the current CPU leaving an empty mask. It then waits for the other
(none) CPUs to clear the csd lock which would never happen as data->refs
is 0.
There are probably a few ways to fix this. My preferred method is to
modify the generic code (I'll add a proper commit log later and post it
on LKML if it works):
diff --git a/kernel/smp.c b/kernel/smp.c
index 9910744..a79454f 100644
--- a/kernel/smp.c
+++ b/kernel/smp.c
@@ -499,6 +499,10 @@ void smp_call_function_many(const struct cpumask *mask,
smp_wmb();
atomic_set(&data->refs, cpumask_weight(data->cpumask));
+ if (unlikely(!atomic_read(&data->refs))) {
+ csd_unlock(&data->csd);
+ return;
+ }
raw_spin_lock_irqsave(&call_function.lock, flags);
/*
An alternative would be to copy the cpumask to a local variable in
on_each_cpu_mask(), though the workaround above would cover other cases
that we haven't spotted yet. Also, the smp_call_function_many()
description doesn't state that the cpumask should not be modified.
diff --git a/arch/arm/kernel/smp_tlb.c b/arch/arm/kernel/smp_tlb.c
index 8f57f32..1717dec 100644
--- a/arch/arm/kernel/smp_tlb.c
+++ b/arch/arm/kernel/smp_tlb.c
@@ -16,10 +16,13 @@
static void on_each_cpu_mask(void (*func)(void *), void *info, int wait,
const struct cpumask *mask)
{
+ struct cpumask call_mask;
+
preempt_disable();
+ cpumask_copy(&call_mask, mask);
smp_call_function_many(mask, func, info, wait);
- if (cpumask_test_cpu(smp_processor_id(), mask))
+ if (cpumask_test_cpu(smp_processor_id(), &call_mask))
func(info);
preempt_enable();
--
Catalin
^ permalink raw reply related [flat|nested] 12+ messages in thread
* SMP soft lockup on smp_call_function_many when doing flush_tlb_page
2011-03-08 13:33 ` Catalin Marinas
@ 2011-03-08 15:28 ` saeed bishara
2011-03-08 16:49 ` saeed bishara
0 siblings, 1 reply; 12+ messages in thread
From: saeed bishara @ 2011-03-08 15:28 UTC (permalink / raw)
To: linux-arm-kernel
> It looks like smp_call_function_many() does all the checks on the mask
> argument that it received and decides that there are CPUs to call (fair
> enough). But in the meantime reset_context() via IPI clears this mask
> leaving only the current CPU. Once the IPI was handled,
> smp_call_function_many() copies this mask to data->cpumask and clears
> the current CPU leaving an empty mask. It then waits for the other
> (none) CPUs to clear the csd lock which would never happen as data->refs
> is 0.
>
> There are probably a few ways to fix this. My preferred method is to
> modify the generic code (I'll add a proper commit log later and post it
> on LKML if it works):
>
>
> diff --git a/kernel/smp.c b/kernel/smp.c
> index 9910744..a79454f 100644
> --- a/kernel/smp.c
> +++ b/kernel/smp.c
> @@ -499,6 +499,10 @@ void smp_call_function_many(const struct cpumask *mask,
> ? ? ? ?smp_wmb();
>
> ? ? ? ?atomic_set(&data->refs, cpumask_weight(data->cpumask));
> + ? ? ? if (unlikely(!atomic_read(&data->refs))) {
> + ? ? ? ? ? ? ? csd_unlock(&data->csd);
> + ? ? ? ? ? ? ? return;
> + ? ? ? }
I don't think this is save, if the mask get cleaned after having cpu
set to valid value and before calculating the next_cpu, the code with
go to the fast path (smp_call_function_single)
>
> ? ? ? ?raw_spin_lock_irqsave(&call_function.lock, flags);
> ? ? ? ?/*
>
>
> An alternative would be to copy the cpumask to a local variable in
> on_each_cpu_mask(), though the workaround above would cover other cases
> that we haven't spotted yet. Also, the smp_call_function_many()
> description doesn't state that the cpumask should not be modified.
>
>
> diff --git a/arch/arm/kernel/smp_tlb.c b/arch/arm/kernel/smp_tlb.c
> index 8f57f32..1717dec 100644
> --- a/arch/arm/kernel/smp_tlb.c
> +++ b/arch/arm/kernel/smp_tlb.c
> @@ -16,10 +16,13 @@
> ?static void on_each_cpu_mask(void (*func)(void *), void *info, int wait,
> ? ? ? ?const struct cpumask *mask)
> ?{
> + ? ? ? struct cpumask call_mask;
> +
> ? ? ? ?preempt_disable();
>
> + ? ? ? cpumask_copy(&call_mask, mask);
> ? ? ? ?smp_call_function_many(mask, func, info, wait);
I'll check this one, but the mask here should be call_mask.
> - ? ? ? if (cpumask_test_cpu(smp_processor_id(), mask))
> + ? ? ? if (cpumask_test_cpu(smp_processor_id(), &call_mask))
> ? ? ? ? ? ? ? ?func(info);
>
> ? ? ? ?preempt_enable();
>
>
> --
> Catalin
>
>
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* SMP soft lockup on smp_call_function_many when doing flush_tlb_page
2011-03-08 15:28 ` saeed bishara
@ 2011-03-08 16:49 ` saeed bishara
2011-03-08 16:59 ` Catalin Marinas
0 siblings, 1 reply; 12+ messages in thread
From: saeed bishara @ 2011-03-08 16:49 UTC (permalink / raw)
To: linux-arm-kernel
>> ? ? ? ?atomic_set(&data->refs, cpumask_weight(data->cpumask));
>> + ? ? ? if (unlikely(!atomic_read(&data->refs))) {
>> + ? ? ? ? ? ? ? csd_unlock(&data->csd);
>> + ? ? ? ? ? ? ? return;
>> + ? ? ? }
> I don't think this is save, if the mask get cleaned after having cpu
> set to valid value and before calculating the next_cpu, the code with
> go to the fast path (smp_call_function_single)
I was wrong, this is actually not a problem, taking the fast path will
not hang the process.
>> An alternative would be to copy the cpumask to a local variable in
>> on_each_cpu_mask(), though the workaround above would cover other cases
>> that we haven't spotted yet. Also, the smp_call_function_many()
>> description doesn't state that the cpumask should not be modified.
>>
>>
>> diff --git a/arch/arm/kernel/smp_tlb.c b/arch/arm/kernel/smp_tlb.c
>> index 8f57f32..1717dec 100644
>> --- a/arch/arm/kernel/smp_tlb.c
>> +++ b/arch/arm/kernel/smp_tlb.c
>> @@ -16,10 +16,13 @@
>> ?static void on_each_cpu_mask(void (*func)(void *), void *info, int wait,
>> ? ? ? ?const struct cpumask *mask)
>> ?{
>> + ? ? ? struct cpumask call_mask;
>> +
>> ? ? ? ?preempt_disable();
>>
>> + ? ? ? cpumask_copy(&call_mask, mask);
>> ? ? ? ?smp_call_function_many(mask, func, info, wait);
> ?I'll check this one, but the mask here should be call_mask.
>> - ? ? ? if (cpumask_test_cpu(smp_processor_id(), mask))
>> + ? ? ? if (cpumask_test_cpu(smp_processor_id(), &call_mask))
>> ? ? ? ? ? ? ? ?func(info);
>>
this patch increases my system instability, for some reason, the
call_function_data data get corrupted when the
generic_smp_call_function_interrupt() is running.
saeed
^ permalink raw reply [flat|nested] 12+ messages in thread
* SMP soft lockup on smp_call_function_many when doing flush_tlb_page
2011-03-08 16:49 ` saeed bishara
@ 2011-03-08 16:59 ` Catalin Marinas
2011-03-09 15:22 ` saeed bishara
0 siblings, 1 reply; 12+ messages in thread
From: Catalin Marinas @ 2011-03-08 16:59 UTC (permalink / raw)
To: linux-arm-kernel
On Tue, 2011-03-08 at 16:49 +0000, saeed bishara wrote:
> >> atomic_set(&data->refs, cpumask_weight(data->cpumask));
> >> + if (unlikely(!atomic_read(&data->refs))) {
> >> + csd_unlock(&data->csd);
> >> + return;
> >> + }
> > I don't think this is save, if the mask get cleaned after having cpu
> > set to valid value and before calculating the next_cpu, the code with
> > go to the fast path (smp_call_function_single)
> I was wrong, this is actually not a problem, taking the fast path will
> not hang the process.
Did you get a chance to try this patch?
> >> An alternative would be to copy the cpumask to a local variable in
> >> on_each_cpu_mask(), though the workaround above would cover other cases
> >> that we haven't spotted yet. Also, the smp_call_function_many()
> >> description doesn't state that the cpumask should not be modified.
> >>
> >>
> >> diff --git a/arch/arm/kernel/smp_tlb.c b/arch/arm/kernel/smp_tlb.c
> >> index 8f57f32..1717dec 100644
> >> --- a/arch/arm/kernel/smp_tlb.c
> >> +++ b/arch/arm/kernel/smp_tlb.c
> >> @@ -16,10 +16,13 @@
> >> static void on_each_cpu_mask(void (*func)(void *), void *info, int wait,
> >> const struct cpumask *mask)
> >> {
> >> + struct cpumask call_mask;
> >> +
> >> preempt_disable();
> >>
> >> + cpumask_copy(&call_mask, mask);
> >> smp_call_function_many(mask, func, info, wait);
> > I'll check this one, but the mask here should be call_mask.
> >> - if (cpumask_test_cpu(smp_processor_id(), mask))
> >> + if (cpumask_test_cpu(smp_processor_id(), &call_mask))
> >> func(info);
> >>
> this patch increases my system instability, for some reason, the
> call_function_data data get corrupted when the
> generic_smp_call_function_interrupt() is running.
Strange, the patch only copies the cpumask.
--
Catalin
^ permalink raw reply [flat|nested] 12+ messages in thread
* SMP soft lockup on smp_call_function_many when doing flush_tlb_page
2011-03-08 16:59 ` Catalin Marinas
@ 2011-03-09 15:22 ` saeed bishara
2011-03-09 15:50 ` Catalin Marinas
0 siblings, 1 reply; 12+ messages in thread
From: saeed bishara @ 2011-03-09 15:22 UTC (permalink / raw)
To: linux-arm-kernel
>
> Did you get a chance to try this patch?
yes, it works fine
>
>> >> An alternative would be to copy the cpumask to a local variable in
>> >> on_each_cpu_mask(), though the workaround above would cover other cases
>> >> that we haven't spotted yet. Also, the smp_call_function_many()
>> >> description doesn't state that the cpumask should not be modified.
>> >>
>> >>
>> >> diff --git a/arch/arm/kernel/smp_tlb.c b/arch/arm/kernel/smp_tlb.c
>> >> index 8f57f32..1717dec 100644
>> >> --- a/arch/arm/kernel/smp_tlb.c
>> >> +++ b/arch/arm/kernel/smp_tlb.c
>> >> @@ -16,10 +16,13 @@
>> >> ?static void on_each_cpu_mask(void (*func)(void *), void *info, int wait,
>> >> ? ? ? ?const struct cpumask *mask)
>> >> ?{
>> >> + ? ? ? struct cpumask call_mask;
>> >> +
>> >> ? ? ? ?preempt_disable();
>> >>
>> >> + ? ? ? cpumask_copy(&call_mask, mask);
>> >> ? ? ? ?smp_call_function_many(mask, func, info, wait);
>> > ?I'll check this one, but the mask here should be call_mask.
>> >> - ? ? ? if (cpumask_test_cpu(smp_processor_id(), mask))
>> >> + ? ? ? if (cpumask_test_cpu(smp_processor_id(), &call_mask))
>> >> ? ? ? ? ? ? ? ?func(info);
>> >>
>> this patch increases my system instability, for some reason, the
>> call_function_data data get corrupted when the
>> generic_smp_call_function_interrupt() is running.
>
> Strange, the patch only copies the cpumask.
this patch also works fine, seems the instability was due to the code
that I added in order to accelerate the failure.
saeed
^ permalink raw reply [flat|nested] 12+ messages in thread
* SMP soft lockup on smp_call_function_many when doing flush_tlb_page
2011-03-09 15:22 ` saeed bishara
@ 2011-03-09 15:50 ` Catalin Marinas
2011-03-30 5:18 ` George G. Davis
0 siblings, 1 reply; 12+ messages in thread
From: Catalin Marinas @ 2011-03-09 15:50 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, 2011-03-09 at 15:22 +0000, saeed bishara wrote:
> > Did you get a chance to try this patch?
> yes, it works fine
Thanks for trying. I'll add a commit log and post.
--
Catalin
^ permalink raw reply [flat|nested] 12+ messages in thread
* SMP soft lockup on smp_call_function_many when doing flush_tlb_page
2011-03-09 15:50 ` Catalin Marinas
@ 2011-03-30 5:18 ` George G. Davis
2011-03-30 8:17 ` saeed bishara
2011-03-30 8:37 ` Catalin Marinas
0 siblings, 2 replies; 12+ messages in thread
From: George G. Davis @ 2011-03-30 5:18 UTC (permalink / raw)
To: linux-arm-kernel
Hi,
On Wed, Mar 09, 2011 at 03:50:48PM +0000, Catalin Marinas wrote:
> On Wed, 2011-03-09 at 15:22 +0000, saeed bishara wrote:
> > > Did you get a chance to try this patch?
> > yes, it works fine
>
> Thanks for trying. I'll add a commit log and post.
Based on your comments here [1], it looks like your fix for this [2] is
superseeded by [3] which is already applied [4]. Can you confirm?
TIA!
--
Regards,
George
[1] https://lkml.org/lkml/2011/3/15/429
[2] https://lkml.org/lkml/2011/3/15/296
[3] https://lkml.org/lkml/2011/3/15/315
[4] http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=723aae2
>
> --
> Catalin
>
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 12+ messages in thread
* SMP soft lockup on smp_call_function_many when doing flush_tlb_page
2011-03-30 5:18 ` George G. Davis
@ 2011-03-30 8:17 ` saeed bishara
2011-03-31 1:05 ` George G. Davis
2011-03-30 8:37 ` Catalin Marinas
1 sibling, 1 reply; 12+ messages in thread
From: saeed bishara @ 2011-03-30 8:17 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, Mar 30, 2011 at 7:18 AM, George G. Davis <gdavis@mvista.com> wrote:
> Hi,
>
> On Wed, Mar 09, 2011 at 03:50:48PM +0000, Catalin Marinas wrote:
>> On Wed, 2011-03-09 at 15:22 +0000, saeed bishara wrote:
>> > > Did you get a chance to try this patch?
>> > yes, it works fine
>>
>> Thanks for trying. I'll add a commit log and post.
>
> Based on your comments here [1], it looks like your fix for this [2] is
> superseeded by [3] which is already applied [4]. ?Can you confirm?
[4] fixed the bug that I reported here. and since my kernel based on
2.6.35.9, I backported several patches besides to that one, here is
the list::
0001-generic-ipi-Fix-deadlock-in-__smp_call_function_sing.patch
0002-kernel-smp.c-fix-smp_call_function_many-SMP-race.patch
0003-kernel-smp.c-consolidate-writes-in-smp_call_function.patch
0004-call_function_many-fix-list-delete-vs-add-race.patch
0005-call_function_many-add-missing-ordering.patch
0006-smp_call_function_many-handle-concurrent-clearing-of.patch
with those patches I don't see IPI lockup issue any more.
saeed
>
> TIA!
>
> --
> Regards,
> George
>
> [1] https://lkml.org/lkml/2011/3/15/429
> [2] https://lkml.org/lkml/2011/3/15/296
> [3] https://lkml.org/lkml/2011/3/15/315
> [4] http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=723aae2
>>
>> --
>> Catalin
>>
>>
>>
>> _______________________________________________
>> linux-arm-kernel mailing list
>> linux-arm-kernel at lists.infradead.org
>> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* SMP soft lockup on smp_call_function_many when doing flush_tlb_page
2011-03-30 5:18 ` George G. Davis
2011-03-30 8:17 ` saeed bishara
@ 2011-03-30 8:37 ` Catalin Marinas
2011-03-31 1:05 ` George G. Davis
1 sibling, 1 reply; 12+ messages in thread
From: Catalin Marinas @ 2011-03-30 8:37 UTC (permalink / raw)
To: linux-arm-kernel
On 30 March 2011 06:18, George G. Davis <gdavis@mvista.com> wrote:
> On Wed, Mar 09, 2011 at 03:50:48PM +0000, Catalin Marinas wrote:
>> On Wed, 2011-03-09 at 15:22 +0000, saeed bishara wrote:
>> > > Did you get a chance to try this patch?
>> > yes, it works fine
>>
>> Thanks for trying. I'll add a commit log and post.
>
> Based on your comments here [1], it looks like your fix for this [2] is
> superseeded by [3] which is already applied [4]. ?Can you confirm?
Yes, it's been fixed by the commit you mentioned.
--
Catalin
^ permalink raw reply [flat|nested] 12+ messages in thread
* SMP soft lockup on smp_call_function_many when doing flush_tlb_page
2011-03-30 8:17 ` saeed bishara
@ 2011-03-31 1:05 ` George G. Davis
0 siblings, 0 replies; 12+ messages in thread
From: George G. Davis @ 2011-03-31 1:05 UTC (permalink / raw)
To: linux-arm-kernel
Hi,
On Wed, Mar 30, 2011 at 10:17:38AM +0200, saeed bishara wrote:
> On Wed, Mar 30, 2011 at 7:18 AM, George G. Davis <gdavis@mvista.com> wrote:
> > Hi,
> >
> > On Wed, Mar 09, 2011 at 03:50:48PM +0000, Catalin Marinas wrote:
> >> On Wed, 2011-03-09 at 15:22 +0000, saeed bishara wrote:
> >> > > Did you get a chance to try this patch?
> >> > yes, it works fine
> >>
> >> Thanks for trying. I'll add a commit log and post.
> >
> > Based on your comments here [1], it looks like your fix for this [2] is
> > superseeded by [3] which is already applied [4]. ?Can you confirm?
> [4] fixed the bug that I reported here. and since my kernel based on
> 2.6.35.9, I backported several patches besides to that one, here is
> the list::
> 0001-generic-ipi-Fix-deadlock-in-__smp_call_function_sing.patch
> 0002-kernel-smp.c-fix-smp_call_function_many-SMP-race.patch
> 0003-kernel-smp.c-consolidate-writes-in-smp_call_function.patch
> 0004-call_function_many-fix-list-delete-vs-add-race.patch
> 0005-call_function_many-add-missing-ordering.patch
> 0006-smp_call_function_many-handle-concurrent-clearing-of.patch
>
> with those patches I don't see IPI lockup issue any more.
> saeed
Thanks!
--
Regards,
George
> >
> > TIA!
> >
> > --
> > Regards,
> > George
> >
> > [1] https://lkml.org/lkml/2011/3/15/429
> > [2] https://lkml.org/lkml/2011/3/15/296
> > [3] https://lkml.org/lkml/2011/3/15/315
> > [4] http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=723aae2
> >>
> >> --
> >> Catalin
> >>
> >>
> >>
> >> _______________________________________________
> >> linux-arm-kernel mailing list
> >> linux-arm-kernel at lists.infradead.org
> >> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
> >
^ permalink raw reply [flat|nested] 12+ messages in thread
* SMP soft lockup on smp_call_function_many when doing flush_tlb_page
2011-03-30 8:37 ` Catalin Marinas
@ 2011-03-31 1:05 ` George G. Davis
0 siblings, 0 replies; 12+ messages in thread
From: George G. Davis @ 2011-03-31 1:05 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, Mar 30, 2011 at 09:37:51AM +0100, Catalin Marinas wrote:
> On 30 March 2011 06:18, George G. Davis <gdavis@mvista.com> wrote:
> > On Wed, Mar 09, 2011 at 03:50:48PM +0000, Catalin Marinas wrote:
> >> On Wed, 2011-03-09 at 15:22 +0000, saeed bishara wrote:
> >> > > Did you get a chance to try this patch?
> >> > yes, it works fine
> >>
> >> Thanks for trying. I'll add a commit log and post.
> >
> > Based on your comments here [1], it looks like your fix for this [2] is
> > superseeded by [3] which is already applied [4]. ?Can you confirm?
>
> Yes, it's been fixed by the commit you mentioned.
Thanks!
--
Regards,
George
>
> --
> Catalin
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2011-03-31 1:05 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-03-08 9:53 SMP soft lockup on smp_call_function_many when doing flush_tlb_page saeed bishara
2011-03-08 13:33 ` Catalin Marinas
2011-03-08 15:28 ` saeed bishara
2011-03-08 16:49 ` saeed bishara
2011-03-08 16:59 ` Catalin Marinas
2011-03-09 15:22 ` saeed bishara
2011-03-09 15:50 ` Catalin Marinas
2011-03-30 5:18 ` George G. Davis
2011-03-30 8:17 ` saeed bishara
2011-03-31 1:05 ` George G. Davis
2011-03-30 8:37 ` Catalin Marinas
2011-03-31 1:05 ` George G. Davis
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox