linux-um.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] um: add RCU syscall hack for time-travel
@ 2024-08-30 15:38 Benjamin Berg
  2024-09-12 19:02 ` Richard Weinberger
  0 siblings, 1 reply; 6+ messages in thread
From: Benjamin Berg @ 2024-08-30 15:38 UTC (permalink / raw)
  To: linux-um; +Cc: Benjamin Berg

From: Benjamin Berg <benjamin.berg@intel.com>

In time-travel mode userspace can do a lot of work without any time
passing. Unfortunately, this can result in OOM situations as the RCU
core code will never be run.

Work around that by kicking the RCU using rcu_sched_clock_irq. So
behave to the RCU code as if a clock tick happened every syscall.

Signed-off-by: Benjamin Berg <benjamin.berg@intel.com>

---

This patch is on top of "um: fix time-travel syscall scheduling hack"
---
 arch/um/kernel/skas/syscall.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/arch/um/kernel/skas/syscall.c b/arch/um/kernel/skas/syscall.c
index b09e85279d2b..4b4ab8bf8a0c 100644
--- a/arch/um/kernel/skas/syscall.c
+++ b/arch/um/kernel/skas/syscall.c
@@ -19,6 +19,21 @@ void handle_syscall(struct uml_pt_regs *r)
 	struct pt_regs *regs = container_of(r, struct pt_regs, regs);
 	int syscall;
 
+	/*
+	 * This is a "bit" of a hack. But in time-travel mode userspace can do
+	 * a lot of work without any time passing. Unfortunately, this can
+	 * result in OOM situations as the RCU core code will never be run.
+	 *
+	 * Work around that by kicking the RCU using rcu_sched_clock_irq. So
+	 * behave to the RCU code as if a clock tick happened every syscall.
+	 */
+	if (time_travel_mode == TT_MODE_INFCPU ||
+	    time_travel_mode == TT_MODE_EXTERNAL) {
+		local_irq_disable();
+		rcu_sched_clock_irq(1);
+		local_irq_enable();
+	}
+
 	/* Initialize the syscall number and default return value. */
 	UPT_SYSCALL_NR(r) = PT_SYSCALL_NR(r->gp);
 	PT_REGS_SET_SYSCALL_RETURN(regs, -ENOSYS);
-- 
2.46.0



^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2024-09-13 12:32 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-30 15:38 [PATCH] um: add RCU syscall hack for time-travel Benjamin Berg
2024-09-12 19:02 ` Richard Weinberger
2024-09-13 10:50   ` Benjamin Berg
2024-09-13 11:47     ` Richard Weinberger
2024-09-13 12:04       ` Benjamin Berg
2024-09-13 12:32         ` Richard Weinberger

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).