[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1528738546-3328-1-git-send-email-jmf@amazon.com>
Date: Mon, 11 Jun 2018 10:35:46 -0700
From: Jarrett Farnitano <jmf@...zon.com>
To: Eric Biederman <ebiederm@...ssion.com>
Cc: kexec@...ts.infradead.org, linux-kernel@...r.kernel.org,
Jarrett Farnitano <jmf@...zon.com>
Subject: [PATCH] kexec: yield to scheduler when loading kimage segments
Without yielding while loading kimage segments, a large initrd
will block all other work on the CPU performing the load until
it is completed. For example loading an initrd of 200MB on a
low power single core system will lock up the system for a few
seconds.
To increase system responsiveness to other tasks at that time,
call cond_resched() in both the crash kernel and normal kernel
segment loading loops.
Signed-off-by: Jarrett Farnitano <jmf@...zon.com>
---
kernel/kexec_core.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/kernel/kexec_core.c b/kernel/kexec_core.c
index 5616755..8ee07d6 100644
--- a/kernel/kexec_core.c
+++ b/kernel/kexec_core.c
@@ -783,6 +783,8 @@ static int kimage_load_normal_segment(struct kimage *image,
else
buf += mchunk;
mbytes -= mchunk;
+
+ cond_resched();
}
out:
return result;
@@ -847,6 +849,8 @@ static int kimage_load_crash_segment(struct kimage *image,
else
buf += mchunk;
mbytes -= mchunk;
+
+ cond_resched();
}
out:
return result;
--
2.7.4
Powered by blists - more mailing lists