diff -ruNp 400-exports-old/drivers/acpi/hardware/hwsleep.c 400-exports-new/drivers/acpi/hardware/hwsleep.c
--- 400-exports-old/drivers/acpi/hardware/hwsleep.c	2004-11-03 21:51:15.000000000 +1100
+++ 400-exports-new/drivers/acpi/hardware/hwsleep.c	2004-12-13 18:09:53.000000000 +1100
@@ -43,6 +43,7 @@
  */
 
 #include <acpi/acpi.h>
+#include <linux/module.h>
 
 #define _COMPONENT          ACPI_HARDWARE
 	 ACPI_MODULE_NAME    ("hwsleep")
@@ -591,3 +592,6 @@ acpi_leave_sleep_state (
 
 	return_ACPI_STATUS (status);
 }
+
+/* For suspend2 */
+EXPORT_SYMBOL(acpi_leave_sleep_state);
diff -ruNp 400-exports-old/drivers/base/power/shutdown.c 400-exports-new/drivers/base/power/shutdown.c
--- 400-exports-old/drivers/base/power/shutdown.c	2004-11-03 21:54:14.000000000 +1100
+++ 400-exports-new/drivers/base/power/shutdown.c	2004-12-13 18:09:54.000000000 +1100
@@ -64,4 +64,4 @@ void device_shutdown(void)
 
 	sysdev_shutdown();
 }
-
+EXPORT_SYMBOL_GPL(device_shutdown);
diff -ruNp 400-exports-old/fs/bio.c 400-exports-new/fs/bio.c
--- 400-exports-old/fs/bio.c	2004-11-03 21:53:50.000000000 +1100
+++ 400-exports-new/fs/bio.c	2004-12-13 18:09:53.000000000 +1100
@@ -1002,3 +1002,4 @@ EXPORT_SYMBOL(bio_split);
 EXPORT_SYMBOL(bio_split_pool);
 EXPORT_SYMBOL(bio_copy_user);
 EXPORT_SYMBOL(bio_uncopy_user);
+EXPORT_SYMBOL(bio_set_pages_dirty);
diff -ruNp 400-exports-old/fs/ioctl.c 400-exports-new/fs/ioctl.c
--- 400-exports-old/fs/ioctl.c	2004-12-13 18:08:10.000000000 +1100
+++ 400-exports-new/fs/ioctl.c	2004-12-13 18:09:53.000000000 +1100
@@ -139,8 +139,7 @@ out:
 
 /*
  * Platforms implementing 32 bit compatibility ioctl handlers in
- * modules need this exported
+ * modules need this exported. So does Suspend2 (when made as
+ * modules), so the export_symbol is now unconditional.
  */
-#ifdef CONFIG_COMPAT
 EXPORT_SYMBOL(sys_ioctl);
-#endif
diff -ruNp 400-exports-old/fs/namei.c 400-exports-new/fs/namei.c
--- 400-exports-old/fs/namei.c	2004-12-13 18:08:10.000000000 +1100
+++ 400-exports-new/fs/namei.c	2004-12-13 18:09:53.000000000 +1100
@@ -1717,6 +1717,8 @@ out:
 	return error;
 }
 
+EXPORT_SYMBOL(sys_mkdir);
+
 /*
  * We try to drop the dentry early: we should have
  * a usage count of 2 if we're the only user of this
diff -ruNp 400-exports-old/fs/namespace.c 400-exports-new/fs/namespace.c
--- 400-exports-old/fs/namespace.c	2004-12-13 18:08:10.000000000 +1100
+++ 400-exports-new/fs/namespace.c	2004-12-13 18:09:53.000000000 +1100
@@ -491,6 +491,8 @@ out:
 	return retval;
 }
 
+EXPORT_SYMBOL(sys_umount);
+
 #ifdef __ARCH_WANT_SYS_OLDUMOUNT
 
 /*
@@ -1188,6 +1190,8 @@ out1:
 	return retval;
 }
 
+EXPORT_SYMBOL(sys_mount);
+
 /*
  * Replace the fs->{rootmnt,root} with {mnt,dentry}. Put the old values.
  * It can block. Requires the big lock held.
diff -ruNp 400-exports-old/fs/proc/generic.c 400-exports-new/fs/proc/generic.c
--- 400-exports-old/fs/proc/generic.c	2004-12-13 18:08:11.000000000 +1100
+++ 400-exports-new/fs/proc/generic.c	2004-12-13 18:09:53.000000000 +1100
@@ -698,3 +698,5 @@ void remove_proc_entry(const char *name,
 out:
 	return;
 }
+
+EXPORT_SYMBOL(proc_match);
diff -ruNp 400-exports-old/fs/read_write.c 400-exports-new/fs/read_write.c
--- 400-exports-old/fs/read_write.c	2004-12-13 18:08:11.000000000 +1100
+++ 400-exports-new/fs/read_write.c	2004-12-13 18:09:53.000000000 +1100
@@ -315,6 +315,7 @@ asmlinkage ssize_t sys_write(unsigned in
 
 	return ret;
 }
+EXPORT_SYMBOL(sys_write);
 
 asmlinkage ssize_t sys_pread64(unsigned int fd, char __user *buf,
 			     size_t count, loff_t pos)
diff -ruNp 400-exports-old/kernel/power/main.c 400-exports-new/kernel/power/main.c
--- 400-exports-old/kernel/power/main.c	2004-11-03 21:52:25.000000000 +1100
+++ 400-exports-new/kernel/power/main.c	2004-12-13 18:52:26.000000000 +1100
@@ -15,7 +15,7 @@
 #include <linux/errno.h>
 #include <linux/init.h>
 #include <linux/pm.h>
-
+#include <linux/module.h>
 
 #include "power.h"
 
@@ -262,3 +262,7 @@ static int __init pm_init(void)
 }
 
 core_initcall(pm_init);
+
+/* For Suspend2 ACPI support */
+EXPORT_SYMBOL(pm_ops);
+EXPORT_SYMBOL(pm_disk_mode);
diff -ruNp 400-exports-old/kernel/sched.c 400-exports-new/kernel/sched.c
--- 400-exports-old/kernel/sched.c	2004-12-13 18:52:18.000000000 +1100
+++ 400-exports-new/kernel/sched.c	2004-12-13 18:52:26.000000000 +1100
@@ -3651,6 +3651,7 @@ void show_state(void)
 
 	read_unlock(&tasklist_lock);
 }
+EXPORT_SYMBOL_GPL(show_state);
 
 void __devinit init_idle(task_t *idle, int cpu)
 {
diff -ruNp 400-exports-old/mm/page_alloc.c 400-exports-new/mm/page_alloc.c
--- 400-exports-old/mm/page_alloc.c	2004-12-13 18:08:16.000000000 +1100
+++ 400-exports-new/mm/page_alloc.c	2004-12-13 18:52:26.000000000 +1100
@@ -2072,3 +2072,7 @@ void *__init alloc_large_system_hash(con
 
 	return table;
 }
+
+/* Exported for Software Suspend 2 */
+EXPORT_SYMBOL(nr_free_highpages);
+EXPORT_SYMBOL(pgdat_list);
diff -ruNp 400-exports-old/mm/swapfile.c 400-exports-new/mm/swapfile.c
--- 400-exports-old/mm/swapfile.c	2004-12-13 18:52:18.000000000 +1100
+++ 400-exports-new/mm/swapfile.c	2004-12-13 18:52:26.000000000 +1100
@@ -1728,3 +1728,13 @@ int valid_swaphandles(swp_entry_t entry,
 	swap_device_unlock(swapdev);
 	return ret;
 }
+
+/* Functions exported for Software Suspend's swapwriter */
+EXPORT_SYMBOL(swap_free);
+EXPORT_SYMBOL(swap_info);
+EXPORT_SYMBOL(sys_swapoff);
+EXPORT_SYMBOL(sys_swapon);
+EXPORT_SYMBOL(si_swapinfo);
+EXPORT_SYMBOL(map_swap_page);
+EXPORT_SYMBOL(get_swap_page);
+EXPORT_SYMBOL(get_swap_info_struct);
diff -ruNp 400-exports-old/mm/vmscan.c 400-exports-new/mm/vmscan.c
--- 400-exports-old/mm/vmscan.c	2004-12-13 18:52:18.000000000 +1100
+++ 400-exports-new/mm/vmscan.c	2004-12-13 18:52:26.000000000 +1100
@@ -1221,6 +1221,9 @@ int shrink_all_memory(int nr_pages)
 	current->reclaim_state = NULL;
 	return ret;
 }
+
+/* For Suspend2 */	
+EXPORT_SYMBOL(shrink_all_memory);
 #endif
 
 #ifdef CONFIG_HOTPLUG_CPU
