diff -ruNp 211-save-and-restore-avenrun-old/kernel/timer.c 211-save-and-restore-avenrun-new/kernel/timer.c
--- 211-save-and-restore-avenrun-old/kernel/timer.c	2004-12-13 18:08:16.000000000 +1100
+++ 211-save-and-restore-avenrun-new/kernel/timer.c	2004-12-13 19:12:12.000000000 +1100
@@ -882,6 +882,36 @@ static unsigned long count_active_tasks(
  * Requires xtime_lock to access.
  */
 unsigned long avenrun[3];
+static unsigned long avenrun_save[3];
+
+/*
+ * Running suspend makes for a very high load average. I'm told that
+ * sendmail and crond check the load average, and will refuse to do
+ * work until it gets low enough. In order for them to not be 
+ * unnecessarily affected by the operation of suspend, we therefore
+ * store the avenrun values prior to suspending and restore them
+ * at the end of the resume cycle. Thus, the operation of suspend
+ * should be invisible to them. Thanks to Marcus Gaugusch and Bernard
+ * Blackham for noticing the problem and suggesting the solution.
+ * 				--Nigel Cunningahm
+ */
+void save_avenrun_values(void)
+{
+	int i;
+
+	for (i = 0; i < 3; i++)
+		avenrun_save[i] = avenrun[i];
+}
+EXPORT_SYMBOL_GPL(save_avenrun_values);
+
+void restore_avenrun_values(void)
+{
+	int i;
+
+	for (i = 0; i < 3; i++)
+		avenrun[i] = avenrun_save[i];
+}
+EXPORT_SYMBOL_GPL(restore_avenrun_values);
 
 /*
  * calc_load - given tick count, update the avenrun load estimates.
