linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org, Nathan Lynch <nathanl@linux.ibm.com>,
	Michael Ellerman <mpe@ellerman.id.au>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 4.4 08/36] powerpc/pseries/mobility: use cond_resched when updating device tree
Date: Sun,  6 Oct 2019 19:18:50 +0200	[thread overview]
Message-ID: <20191006171045.639649064@linuxfoundation.org> (raw)
In-Reply-To: <20191006171038.266461022@linuxfoundation.org>

From: Nathan Lynch <nathanl@linux.ibm.com>

[ Upstream commit ccfb5bd71d3d1228090a8633800ae7cdf42a94ac ]

After a partition migration, pseries_devicetree_update() processes
changes to the device tree communicated from the platform to
Linux. This is a relatively heavyweight operation, with multiple
device tree searches, memory allocations, and conversations with
partition firmware.

There's a few levels of nested loops which are bounded only by
decisions made by the platform, outside of Linux's control, and indeed
we have seen RCU stalls on large systems while executing this call
graph. Use cond_resched() in these loops so that the cpu is yielded
when needed.

Signed-off-by: Nathan Lynch <nathanl@linux.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20190802192926.19277-4-nathanl@linux.ibm.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/powerpc/platforms/pseries/mobility.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/arch/powerpc/platforms/pseries/mobility.c b/arch/powerpc/platforms/pseries/mobility.c
index c773396d0969b..8d30a425a88ab 100644
--- a/arch/powerpc/platforms/pseries/mobility.c
+++ b/arch/powerpc/platforms/pseries/mobility.c
@@ -11,6 +11,7 @@
 
 #include <linux/kernel.h>
 #include <linux/kobject.h>
+#include <linux/sched.h>
 #include <linux/smp.h>
 #include <linux/stat.h>
 #include <linux/completion.h>
@@ -206,7 +207,11 @@ static int update_dt_node(__be32 phandle, s32 scope)
 
 				prop_data += vd;
 			}
+
+			cond_resched();
 		}
+
+		cond_resched();
 	} while (rtas_rc == 1);
 
 	of_node_put(dn);
@@ -282,8 +287,12 @@ int pseries_devicetree_update(s32 scope)
 					add_dt_node(phandle, drc_index);
 					break;
 				}
+
+				cond_resched();
 			}
 		}
+
+		cond_resched();
 	} while (rc == 1);
 
 	kfree(rtas_buf);
-- 
2.20.1




  parent reply	other threads:[~2019-10-06 17:21 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-06 17:18 [PATCH 4.4 00/36] 4.4.196-stable review Greg Kroah-Hartman
2019-10-06 17:18 ` [PATCH 4.4 01/36] video: ssd1307fb: Start page range at page_offset Greg Kroah-Hartman
2019-10-06 17:18 ` [PATCH 4.4 02/36] gpu: drm: radeon: Fix a possible null-pointer dereference in radeon_connector_set_property() Greg Kroah-Hartman
2019-10-06 17:18 ` [PATCH 4.4 03/36] ipmi_si: Only schedule continuously in the thread in maintenance mode Greg Kroah-Hartman
2019-10-06 17:18 ` [PATCH 4.4 04/36] clk: qoriq: Fix -Wunused-const-variable Greg Kroah-Hartman
2019-10-06 17:18 ` [PATCH 4.4 05/36] clk: sirf: Dont reference clk_init_data after registration Greg Kroah-Hartman
2019-10-06 17:18 ` [PATCH 4.4 06/36] powerpc/rtas: use device model APIs and serialization during LPM Greg Kroah-Hartman
2019-10-06 17:18 ` [PATCH 4.4 07/36] powerpc/futex: Fix warning: oldval may be used uninitialized in this function Greg Kroah-Hartman
2019-10-06 17:18 ` Greg Kroah-Hartman [this message]
2019-10-06 17:18 ` [PATCH 4.4 09/36] pinctrl: tegra: Fix write barrier placement in pmx_writel Greg Kroah-Hartman
2019-10-06 17:18 ` [PATCH 4.4 10/36] powerpc/eeh: Clear stale EEH_DEV_NO_HANDLER flag Greg Kroah-Hartman
2019-10-06 17:18 ` [PATCH 4.4 11/36] vfio_pci: Restore original state on release Greg Kroah-Hartman
2019-10-06 17:18 ` [PATCH 4.4 12/36] powerpc/64s/exception: machine check use correct cfar for late handler Greg Kroah-Hartman
2019-10-06 17:18 ` [PATCH 4.4 13/36] powerpc/pseries: correctly track irq state in default idle Greg Kroah-Hartman
2019-10-06 17:18 ` [PATCH 4.4 14/36] scsi: core: Reduce memory required for SCSI logging Greg Kroah-Hartman
2019-10-06 17:18 ` [PATCH 4.4 15/36] mfd: intel-lpss: Remove D3cold delay Greg Kroah-Hartman
2019-10-06 17:18 ` [PATCH 4.4 16/36] ARM: 8898/1: mm: Dont treat faults reported from cache maintenance as writes Greg Kroah-Hartman
2019-10-06 17:18 ` [PATCH 4.4 17/36] HID: apple: Fix stuck function keys when using FN Greg Kroah-Hartman
2019-10-06 17:19 ` [PATCH 4.4 18/36] security: smack: Fix possible null-pointer dereferences in smack_socket_sock_rcv_skb() Greg Kroah-Hartman
2019-10-06 17:19 ` [PATCH 4.4 19/36] fat: work around race with userspaces read via blockdev while mounting Greg Kroah-Hartman
2019-10-06 17:19 ` [PATCH 4.4 20/36] hypfs: Fix error number left in struct pointer member Greg Kroah-Hartman
2019-10-06 17:19 ` [PATCH 4.4 21/36] ocfs2: wait for recovering done after direct unlock request Greg Kroah-Hartman
2019-10-06 17:19 ` [PATCH 4.4 22/36] kmemleak: increase DEBUG_KMEMLEAK_EARLY_LOG_SIZE default to 16K Greg Kroah-Hartman
2019-10-06 17:19 ` [PATCH 4.4 23/36] ANDROID: binder: remove waitqueue when thread exits Greg Kroah-Hartman
2019-10-06 17:19 ` [PATCH 4.4 24/36] ANDROID: binder: synchronize_rcu() when using POLLFREE Greg Kroah-Hartman
2019-10-06 17:19 ` [PATCH 4.4 25/36] hso: fix NULL-deref on tty open Greg Kroah-Hartman
2019-10-06 17:19 ` [PATCH 4.4 26/36] ipv6: drop incoming packets having a v4mapped source address Greg Kroah-Hartman
2019-10-06 17:19 ` [PATCH 4.4 27/36] net: ipv4: avoid mixed n_redirects and rate_tokens usage Greg Kroah-Hartman
2019-10-06 17:19 ` [PATCH 4.4 28/36] net: qlogic: Fix memory leak in ql_alloc_large_buffers Greg Kroah-Hartman
2019-10-06 17:19 ` [PATCH 4.4 29/36] nfc: fix memory leak in llcp_sock_bind() Greg Kroah-Hartman
2019-10-06 17:19 ` [PATCH 4.4 30/36] sch_dsmark: fix potential NULL deref in dsmark_init() Greg Kroah-Hartman
2019-10-06 17:19 ` [PATCH 4.4 31/36] xen-netfront: do not use ~0U as error return value for xennet_fill_frags() Greg Kroah-Hartman
2019-10-06 17:19 ` [PATCH 4.4 32/36] net/rds: Fix error handling in rds_ib_add_one() Greg Kroah-Hartman
2019-10-06 17:19 ` [PATCH 4.4 33/36] sch_cbq: validate TCA_CBQ_WRROPT to avoid crash Greg Kroah-Hartman
2019-10-06 17:19 ` [PATCH 4.4 34/36] Smack: Dont ignore other bprm->unsafe flags if LSM_UNSAFE_PTRACE is set Greg Kroah-Hartman
2019-10-06 17:19 ` [PATCH 4.4 35/36] smack: use GFP_NOFS while holding inode_smack::smk_lock Greg Kroah-Hartman
2019-10-06 17:19 ` [PATCH 4.4 36/36] NFC: fix attrs checks in netlink interface Greg Kroah-Hartman
2019-10-06 22:01 ` [PATCH 4.4 00/36] 4.4.196-stable review kernelci.org bot
2019-10-07 10:07 ` Jon Hunter
2019-10-07 12:53 ` Guenter Roeck
2019-10-07 14:49   ` Greg Kroah-Hartman
2019-10-07 22:36     ` Guenter Roeck
2019-10-08  5:14       ` Greg Kroah-Hartman
2019-10-07 23:07     ` Sasha Levin
2019-10-07 23:16       ` Guenter Roeck
2019-10-08  1:49         ` Sasha Levin
2019-10-08  3:13           ` Guenter Roeck
2019-10-07 14:31 ` Guenter Roeck
2019-10-07 16:37 ` Daniel Díaz

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=20191006171045.639649064@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mpe@ellerman.id.au \
    --cc=nathanl@linux.ibm.com \
    --cc=sashal@kernel.org \
    --cc=stable@vger.kernel.org \
    /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;
as well as URLs for NNTP newsgroup(s).