[SRU][bionic][PATCHv2 0/5] powerpc fixes (deadlock/snooze)

classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|

[SRU][bionic][PATCHv2 0/5] powerpc fixes (deadlock/snooze)

Kamal Mostafa-2
[v2 corrected cherry-picked-from shas]

Customer-requested fixes for two bugs.  These are all upstream cherry-picks
which affect only powerpc.

  Watchdog CPU:19 Hard LOCKUP when kernel crash was triggered
  BugLink: http://bugs.launchpad.net/bugs/1790636

  Ubuntu18.04.1: cpuidle: powernv: Fix promotion from snooze if next state disabled (performance)
  BugLink: http://bugs.launchpad.net/bugs/1790602

 -Kamal

-----


Gautham R. Shenoy (1):
  cpuidle: powernv: Fix promotion from snooze if next state disabled

Nicholas Piggin (4):
  powerpc: hard disable irqs in smp_send_stop loop
  powerpc: Fix deadlock with multiple calls to smp_send_stop
  powerpc: smp_send_stop do not offline stopped CPUs
  powerpc/powernv: Fix opal_event_shutdown() called with interrupts
    disabled

 arch/powerpc/kernel/smp.c                     | 48 ++++++++++++++++++---------
 arch/powerpc/platforms/powernv/opal-irqchip.c |  2 +-
 drivers/cpuidle/cpuidle-powernv.c             | 32 ++++++++++++++----
 3 files changed, 60 insertions(+), 22 deletions(-)

--
2.7.4


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

[SRU][bionic][PATCHv2 1/5] powerpc: hard disable irqs in smp_send_stop loop

Kamal Mostafa-2
From: Nicholas Piggin <[hidden email]>

BugLink: http://bugs.launchpad.net/bugs/1790636

The hard lockup watchdog can fire under local_irq_disable
on platforms with irq soft masking.

Signed-off-by: Nicholas Piggin <[hidden email]>
Signed-off-by: Michael Ellerman <[hidden email]>
(cherry picked from commit 855bfe0de1a05a01f89975ea8ba9f5521fb0f567)
Signed-off-by: Kamal Mostafa <[hidden email]>
---
 arch/powerpc/kernel/smp.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c
index c190d68..7ed7d0c 100644
--- a/arch/powerpc/kernel/smp.c
+++ b/arch/powerpc/kernel/smp.c
@@ -570,9 +570,10 @@ static void stop_this_cpu(void *dummy)
  /* Remove this CPU */
  set_cpu_online(smp_processor_id(), false);
 
- local_irq_disable();
+ hard_irq_disable();
+ spin_begin();
  while (1)
- ;
+ spin_cpu_relax();
 }
 
 #ifdef CONFIG_NMI_IPI
--
2.7.4


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

[SRU][bionic][PATCHv2 2/5] powerpc: Fix deadlock with multiple calls to smp_send_stop

Kamal Mostafa-2
In reply to this post by Kamal Mostafa-2
From: Nicholas Piggin <[hidden email]>

BugLink: http://bugs.launchpad.net/bugs/1790636

smp_send_stop can lock up the IPI path for any subsequent calls,
because the receiving CPUs spin in their handler function. This
started becoming a problem with the addition of an smp_send_stop
call in the reboot path, because panics can reboot after doing
their own smp_send_stop.

The NMI IPI variant was fixed with ac61c11566 ("powerpc: Fix
smp_send_stop NMI IPI handling"), which leaves the smp_call_function
variant.

This is fixed by having smp_send_stop only ever do the
smp_call_function once. This is a bit less robust than the NMI IPI
fix, because any other call to smp_call_function after smp_send_stop
could deadlock, but that has always been the case, and it was not
been a problem before.

Fixes: f2748bdfe1573 ("powerpc/powernv: Always stop secondaries before reboot/shutdown")
Reported-by: Abdul Haleem <[hidden email]>
Signed-off-by: Nicholas Piggin <[hidden email]>
Signed-off-by: Michael Ellerman <[hidden email]>
(cherry picked from commit 6029755eed95e5c90f763188c87ae3ff41e48e5c)
Signed-off-by: Kamal Mostafa <[hidden email]>
---
 arch/powerpc/kernel/smp.c | 55 +++++++++++++++++++++++++++++++++--------------
 1 file changed, 39 insertions(+), 16 deletions(-)

diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c
index 7ed7d0c..4c61282 100644
--- a/arch/powerpc/kernel/smp.c
+++ b/arch/powerpc/kernel/smp.c
@@ -565,17 +565,6 @@ void crash_send_ipi(void (*crash_ipi_callback)(struct pt_regs *))
 }
 #endif
 
-static void stop_this_cpu(void *dummy)
-{
- /* Remove this CPU */
- set_cpu_online(smp_processor_id(), false);
-
- hard_irq_disable();
- spin_begin();
- while (1)
- spin_cpu_relax();
-}
-
 #ifdef CONFIG_NMI_IPI
 static void nmi_stop_this_cpu(struct pt_regs *regs)
 {
@@ -583,23 +572,57 @@ static void nmi_stop_this_cpu(struct pt_regs *regs)
  * This is a special case because it never returns, so the NMI IPI
  * handling would never mark it as done, which makes any later
  * smp_send_nmi_ipi() call spin forever. Mark it done now.
+ *
+ * IRQs are already hard disabled by the smp_handle_nmi_ipi.
  */
  nmi_ipi_lock();
  nmi_ipi_busy_count--;
  nmi_ipi_unlock();
 
- stop_this_cpu(NULL);
+ /* Remove this CPU */
+ set_cpu_online(smp_processor_id(), false);
+
+ spin_begin();
+ while (1)
+ spin_cpu_relax();
 }
-#endif
 
 void smp_send_stop(void)
 {
-#ifdef CONFIG_NMI_IPI
  smp_send_nmi_ipi(NMI_IPI_ALL_OTHERS, nmi_stop_this_cpu, 1000000);
-#else
+}
+
+#else /* CONFIG_NMI_IPI */
+
+static void stop_this_cpu(void *dummy)
+{
+ /* Remove this CPU */
+ set_cpu_online(smp_processor_id(), false);
+
+ hard_irq_disable();
+ spin_begin();
+ while (1)
+ spin_cpu_relax();
+}
+
+void smp_send_stop(void)
+{
+ static bool stopped = false;
+
+ /*
+ * Prevent waiting on csd lock from a previous smp_send_stop.
+ * This is racy, but in general callers try to do the right
+ * thing and only fire off one smp_send_stop (e.g., see
+ * kernel/panic.c)
+ */
+ if (stopped)
+ return;
+
+ stopped = true;
+
  smp_call_function(stop_this_cpu, NULL, 0);
-#endif
 }
+#endif /* CONFIG_NMI_IPI */
 
 struct thread_info *current_set[NR_CPUS];
 
--
2.7.4


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

[SRU][bionic][PATCHv2 3/5] powerpc: smp_send_stop do not offline stopped CPUs

Kamal Mostafa-2
In reply to this post by Kamal Mostafa-2
From: Nicholas Piggin <[hidden email]>

BugLink: http://bugs.launchpad.net/bugs/1790636

[ Upstream commit de6e5d38417e6cdb005843db420a2974993d36ff ]

Marking CPUs stopped by smp_send_stop as offline can cause warnings
due to cross-CPU wakeups. This trace was noticed on a busy system
running a sysrq+c crash test, after the injected crash:

WARNING: CPU: 51 PID: 1546 at kernel/sched/core.c:1179 set_task_cpu+0x22c/0x240
CPU: 51 PID: 1546 Comm: kworker/u352:1 Tainted: G      D
Workqueue: mlx5e mlx5e_update_stats_work [mlx5_core]
[...]
NIP [c00000000017c21c] set_task_cpu+0x22c/0x240
LR [c00000000017d580] try_to_wake_up+0x230/0x720
Call Trace:
[c000000001017700] runqueues+0x0/0xb00 (unreliable)
[c00000000017d580] try_to_wake_up+0x230/0x720
[c00000000015a214] insert_work+0x104/0x140
[c00000000015adb0] __queue_work+0x230/0x690
[c000003fc5007910] [c00000000015b26c] queue_work_on+0x5c/0x90
[c0080000135fc8f8] mlx5_cmd_exec+0x538/0xcb0 [mlx5_core]
[c008000013608fd0] mlx5_core_access_reg+0x140/0x1d0 [mlx5_core]
[c00800001362777c] mlx5e_update_pport_counters.constprop.59+0x6c/0x90 [mlx5_core]
[c008000013628868] mlx5e_update_ndo_stats+0x28/0x90 [mlx5_core]
[c008000013625558] mlx5e_update_stats_work+0x68/0xb0 [mlx5_core]
[c00000000015bcec] process_one_work+0x1bc/0x5f0
[c00000000015ecac] worker_thread+0xac/0x6b0
[c000000000168338] kthread+0x168/0x1b0
[c00000000000b628] ret_from_kernel_thread+0x5c/0xb4

This happens because firstly the CPU is not really offline in the
usual sense, processes and interrupts have not been migrated away.
Secondly smp_send_stop does not happen atomically on all CPUs, so
one CPU can have marked itself offline, while another CPU is still
running processes or interrupts which can affect the first CPU.

Fix this by just not marking the CPU as offline. It's more like
frozen in time, so offline does not really reflect its state properly
anyway. There should be nothing in the crash/panic path that walks
online CPUs and synchronously waits for them, so this change should
not introduce new hangs.

Signed-off-by: Nicholas Piggin <[hidden email]>
Signed-off-by: Michael Ellerman <[hidden email]>
Signed-off-by: Sasha Levin <[hidden email]>
Signed-off-by: Greg Kroah-Hartman <[hidden email]>
(cherry picked from commit de6e5d38417e6cdb005843db420a2974993d36ff)
Signed-off-by: Kamal Mostafa <[hidden email]>
---
 arch/powerpc/kernel/smp.c | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c
index 4c61282..736c0de 100644
--- a/arch/powerpc/kernel/smp.c
+++ b/arch/powerpc/kernel/smp.c
@@ -579,9 +579,6 @@ static void nmi_stop_this_cpu(struct pt_regs *regs)
  nmi_ipi_busy_count--;
  nmi_ipi_unlock();
 
- /* Remove this CPU */
- set_cpu_online(smp_processor_id(), false);
-
  spin_begin();
  while (1)
  spin_cpu_relax();
@@ -596,9 +593,6 @@ void smp_send_stop(void)
 
 static void stop_this_cpu(void *dummy)
 {
- /* Remove this CPU */
- set_cpu_online(smp_processor_id(), false);
-
  hard_irq_disable();
  spin_begin();
  while (1)
--
2.7.4


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

[SRU][bionic][PATCHv2 4/5] powerpc/powernv: Fix opal_event_shutdown() called with interrupts disabled

Kamal Mostafa-2
In reply to this post by Kamal Mostafa-2
From: Nicholas Piggin <[hidden email]>

BugLink: http://bugs.launchpad.net/bugs/1790636

A kernel crash in process context that calls emergency_restart from
panic will end up calling opal_event_shutdown with interrupts disabled
but not in interrupt. This causes a sleeping function to be called
which gives the following warning with sysrq+c:

    Rebooting in 10 seconds..
    BUG: sleeping function called from invalid context at kernel/locking/mutex.c:238
    in_atomic(): 0, irqs_disabled(): 1, pid: 7669, name: bash
    CPU: 20 PID: 7669 Comm: bash Tainted: G      D W         4.17.0-rc5+ #3
    Call Trace:
    dump_stack+0xb0/0xf4 (unreliable)
    ___might_sleep+0x174/0x1a0
    mutex_lock+0x38/0xb0
    __free_irq+0x68/0x460
    free_irq+0x70/0xc0
    opal_event_shutdown+0xb4/0xf0
    opal_shutdown+0x24/0xa0
    pnv_shutdown+0x28/0x40
    machine_shutdown+0x44/0x60
    machine_restart+0x28/0x80
    emergency_restart+0x30/0x50
    panic+0x2a0/0x328
    oops_end+0x1ec/0x1f0
    bad_page_fault+0xe8/0x154
    handle_page_fault+0x34/0x38
    --- interrupt: 300 at sysrq_handle_crash+0x44/0x60
    LR = __handle_sysrq+0xfc/0x260
    flag_spec.62335+0x12b844/0x1e8db4 (unreliable)
    __handle_sysrq+0xfc/0x260
    write_sysrq_trigger+0xa8/0xb0
    proc_reg_write+0xac/0x110
    __vfs_write+0x6c/0x240
    vfs_write+0xd0/0x240
    ksys_write+0x6c/0x110

Fixes: 9f0fd0499d30 ("powerpc/powernv: Add a virtual irqchip for opal events")
Signed-off-by: Nicholas Piggin <[hidden email]>
Signed-off-by: Michael Ellerman <[hidden email]>
(cherry picked from commit c0beffc4f4c658fde86d52c837e784326e9cc875)
Signed-off-by: Kamal Mostafa <[hidden email]>
---
 arch/powerpc/platforms/powernv/opal-irqchip.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/powerpc/platforms/powernv/opal-irqchip.c b/arch/powerpc/platforms/powernv/opal-irqchip.c
index 9d1b8c0..05ffe05 100644
--- a/arch/powerpc/platforms/powernv/opal-irqchip.c
+++ b/arch/powerpc/platforms/powernv/opal-irqchip.c
@@ -177,7 +177,7 @@ void opal_event_shutdown(void)
  if (!opal_irqs[i])
  continue;
 
- if (in_interrupt())
+ if (in_interrupt() || irqs_disabled())
  disable_irq_nosync(opal_irqs[i]);
  else
  free_irq(opal_irqs[i], NULL);
--
2.7.4


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

[SRU][bionic][PATCHv2 5/5] cpuidle: powernv: Fix promotion from snooze if next state disabled

Kamal Mostafa-2
In reply to this post by Kamal Mostafa-2
From: "Gautham R. Shenoy" <[hidden email]>

BugLink: http://bugs.launchpad.net/bugs/1790602

The commit 78eaa10f027c ("cpuidle: powernv/pseries: Auto-promotion of
snooze to deeper idle state") introduced a timeout for the snooze idle
state so that it could be eventually be promoted to a deeper idle
state. The snooze timeout value is static and set to the target
residency of the next idle state, which would train the cpuidle
governor to pick the next idle state eventually.

The unfortunate side-effect of this is that if the next idle state(s)
is disabled, the CPU will forever remain in snooze, despite the fact
that the system is completely idle, and other deeper idle states are
available.

This patch fixes the issue by dynamically setting the snooze timeout
to the target residency of the next enabled state on the device.

Before Patch:
  POWER8 : Only nap disabled.
  $ cpupower monitor sleep 30
  sleep took 30.01297 seconds and exited with status 0
                |Idle_Stats
  PKG |CORE|CPU | snoo | Nap  | Fast
     0|   8|   0| 96.41|  0.00|  0.00
     0|   8|   1| 96.43|  0.00|  0.00
     0|   8|   2| 96.47|  0.00|  0.00
     0|   8|   3| 96.35|  0.00|  0.00
     0|   8|   4| 96.37|  0.00|  0.00
     0|   8|   5| 96.37|  0.00|  0.00
     0|   8|   6| 96.47|  0.00|  0.00
     0|   8|   7| 96.47|  0.00|  0.00

  POWER9: Shallow states (stop0lite, stop1lite, stop2lite, stop0, stop1,
  stop2) disabled:
  $ cpupower monitor sleep 30
  sleep took 30.05033 seconds and exited with status 0
                |Idle_Stats
  PKG |CORE|CPU | snoo | stop | stop | stop | stop | stop | stop | stop | stop
     0|  16|   0| 89.79|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00
     0|  16|   1| 90.12|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00
     0|  16|   2| 90.21|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00
     0|  16|   3| 90.29|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00

After Patch:
  POWER8 : Only nap disabled.
  $ cpupower monitor sleep 30
  sleep took 30.01200 seconds and exited with status 0
                |Idle_Stats
  PKG |CORE|CPU | snoo | Nap  | Fast
     0|   8|   0| 16.58|  0.00| 77.21
     0|   8|   1| 18.42|  0.00| 75.38
     0|   8|   2|  4.70|  0.00| 94.09
     0|   8|   3| 17.06|  0.00| 81.73
     0|   8|   4|  3.06|  0.00| 95.73
     0|   8|   5|  7.00|  0.00| 96.80
     0|   8|   6|  1.00|  0.00| 98.79
     0|   8|   7|  5.62|  0.00| 94.17

  POWER9: Shallow states (stop0lite, stop1lite, stop2lite, stop0, stop1,
  stop2) disabled:

  $ cpupower monitor sleep 30
  sleep took 30.02110 seconds and exited with status 0
                |Idle_Stats
  PKG |CORE|CPU | snoo | stop | stop | stop | stop | stop | stop | stop | stop
     0|   0|   0|  0.69|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00|  9.39| 89.70
     0|   0|   1|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00|  0.05| 93.21
     0|   0|   2|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00| 89.93
     0|   0|   3|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00|  0.00| 93.26

Fixes: 78eaa10f027c ("cpuidle: powernv/pseries: Auto-promotion of snooze to deeper idle state")
Cc: [hidden email] # v4.2+
Signed-off-by: Gautham R. Shenoy <[hidden email]>
Reviewed-by: Balbir Singh <[hidden email]>
Signed-off-by: Michael Ellerman <[hidden email]>
(cherry picked from commit 0a4ec6aa035a52c422eceb2ed51ed88392a3d6c2)
Signed-off-by: Kamal Mostafa <[hidden email]>
---
 drivers/cpuidle/cpuidle-powernv.c | 32 ++++++++++++++++++++++++++------
 1 file changed, 26 insertions(+), 6 deletions(-)

diff --git a/drivers/cpuidle/cpuidle-powernv.c b/drivers/cpuidle/cpuidle-powernv.c
index e06605b..1d7d5d1 100644
--- a/drivers/cpuidle/cpuidle-powernv.c
+++ b/drivers/cpuidle/cpuidle-powernv.c
@@ -43,9 +43,31 @@ struct stop_psscr_table {
 
 static struct stop_psscr_table stop_psscr_table[CPUIDLE_STATE_MAX] __read_mostly;
 
-static u64 snooze_timeout __read_mostly;
+static u64 default_snooze_timeout __read_mostly;
 static bool snooze_timeout_en __read_mostly;
 
+static u64 get_snooze_timeout(struct cpuidle_device *dev,
+      struct cpuidle_driver *drv,
+      int index)
+{
+ int i;
+
+ if (unlikely(!snooze_timeout_en))
+ return default_snooze_timeout;
+
+ for (i = index + 1; i < drv->state_count; i++) {
+ struct cpuidle_state *s = &drv->states[i];
+ struct cpuidle_state_usage *su = &dev->states_usage[i];
+
+ if (s->disabled || su->disable)
+ continue;
+
+ return s->target_residency * tb_ticks_per_usec;
+ }
+
+ return default_snooze_timeout;
+}
+
 static int snooze_loop(struct cpuidle_device *dev,
  struct cpuidle_driver *drv,
  int index)
@@ -56,7 +78,7 @@ static int snooze_loop(struct cpuidle_device *dev,
 
  local_irq_enable();
 
- snooze_exit_time = get_tb() + snooze_timeout;
+ snooze_exit_time = get_tb() + get_snooze_timeout(dev, drv, index);
  ppc64_runlatch_off();
  HMT_very_low();
  while (!need_resched()) {
@@ -463,11 +485,9 @@ static int powernv_idle_probe(void)
  cpuidle_state_table = powernv_states;
  /* Device tree can indicate more idle states */
  max_idle_state = powernv_add_idle_states();
- if (max_idle_state > 1) {
+ default_snooze_timeout = TICK_USEC * tb_ticks_per_usec;
+ if (max_idle_state > 1)
  snooze_timeout_en = true;
- snooze_timeout = powernv_states[1].target_residency *
- tb_ticks_per_usec;
- }
  } else
  return -ENODEV;
 
--
2.7.4


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

ACK/cmt: [SRU][bionic][PATCHv2 0/5] powerpc fixes (deadlock/snooze)

Colin Ian King-2
In reply to this post by Kamal Mostafa-2
If testing goes OK, then I'm OK-ish with the series of 5 patches.

Provisionally,

Acked-by: Colin Ian King <[hidden email]>

On 05/09/18 17:17, Kamal Mostafa wrote:

> [v2 corrected cherry-picked-from shas]
>
> Customer-requested fixes for two bugs.  These are all upstream cherry-picks
> which affect only powerpc.
>
>   Watchdog CPU:19 Hard LOCKUP when kernel crash was triggered
>   BugLink: http://bugs.launchpad.net/bugs/1790636
>
>   Ubuntu18.04.1: cpuidle: powernv: Fix promotion from snooze if next state disabled (performance)
>   BugLink: http://bugs.launchpad.net/bugs/1790602
>
>  -Kamal
>
> -----
>
>
> Gautham R. Shenoy (1):
>   cpuidle: powernv: Fix promotion from snooze if next state disabled
>
> Nicholas Piggin (4):
>   powerpc: hard disable irqs in smp_send_stop loop
>   powerpc: Fix deadlock with multiple calls to smp_send_stop
>   powerpc: smp_send_stop do not offline stopped CPUs
>   powerpc/powernv: Fix opal_event_shutdown() called with interrupts
>     disabled
>
>  arch/powerpc/kernel/smp.c                     | 48 ++++++++++++++++++---------
>  arch/powerpc/platforms/powernv/opal-irqchip.c |  2 +-
>  drivers/cpuidle/cpuidle-powernv.c             | 32 ++++++++++++++----
>  3 files changed, 60 insertions(+), 22 deletions(-)
>


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

ACK: [SRU][bionic][PATCHv2 0/5] powerpc fixes (deadlock/snooze)

Khalid Elmously
In reply to this post by Kamal Mostafa-2
On 2018-09-05 09:17:36 , Kamal Mostafa wrote:

> [v2 corrected cherry-picked-from shas]
>
> Customer-requested fixes for two bugs.  These are all upstream cherry-picks
> which affect only powerpc.
>
>   Watchdog CPU:19 Hard LOCKUP when kernel crash was triggered
>   BugLink: http://bugs.launchpad.net/bugs/1790636
>
>   Ubuntu18.04.1: cpuidle: powernv: Fix promotion from snooze if next state disabled (performance)
>   BugLink: http://bugs.launchpad.net/bugs/1790602
>
>  -Kamal
>
> -----
>
>
> Gautham R. Shenoy (1):
>   cpuidle: powernv: Fix promotion from snooze if next state disabled
>
> Nicholas Piggin (4):
>   powerpc: hard disable irqs in smp_send_stop loop
>   powerpc: Fix deadlock with multiple calls to smp_send_stop
>   powerpc: smp_send_stop do not offline stopped CPUs
>   powerpc/powernv: Fix opal_event_shutdown() called with interrupts
>     disabled
>
>  arch/powerpc/kernel/smp.c                     | 48 ++++++++++++++++++---------
>  arch/powerpc/platforms/powernv/opal-irqchip.c |  2 +-
>  drivers/cpuidle/cpuidle-powernv.c             | 32 ++++++++++++++----
>  3 files changed, 60 insertions(+), 22 deletions(-)
>

Acked-by: Khalid Elmously <[hidden email]>
 

--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

APPLIED: [SRU][bionic][PATCHv2 0/5] powerpc fixes (deadlock/snooze)

Kleber Souza
In reply to this post by Kamal Mostafa-2
On 09/05/18 18:17, Kamal Mostafa wrote:

> [v2 corrected cherry-picked-from shas]
>
> Customer-requested fixes for two bugs.  These are all upstream cherry-picks
> which affect only powerpc.
>
>   Watchdog CPU:19 Hard LOCKUP when kernel crash was triggered
>   BugLink: http://bugs.launchpad.net/bugs/1790636
>
>   Ubuntu18.04.1: cpuidle: powernv: Fix promotion from snooze if next state disabled (performance)
>   BugLink: http://bugs.launchpad.net/bugs/1790602
>
>  -Kamal
>
> -----
>
>
> Gautham R. Shenoy (1):
>   cpuidle: powernv: Fix promotion from snooze if next state disabled
>
> Nicholas Piggin (4):
>   powerpc: hard disable irqs in smp_send_stop loop
>   powerpc: Fix deadlock with multiple calls to smp_send_stop
>   powerpc: smp_send_stop do not offline stopped CPUs
>   powerpc/powernv: Fix opal_event_shutdown() called with interrupts
>     disabled
>
>  arch/powerpc/kernel/smp.c                     | 48 ++++++++++++++++++---------
>  arch/powerpc/platforms/powernv/opal-irqchip.c |  2 +-
>  drivers/cpuidle/cpuidle-powernv.c             | 32 ++++++++++++++----
>  3 files changed, 60 insertions(+), 22 deletions(-)
>

I have applied the patches to bionic/master-next branch, but we need to
follow up with the test results to remove those patches quickly if tests
show any problem with them.

Thanks,
Kleber

--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team