diff -Naur linux-2002-02-11/Makefile evms-2002-02-11/Makefile
--- linux-2002-02-11/Makefile	Mon Feb 11 07:34:13 2002
+++ evms-2002-02-11/Makefile	Mon Feb 11 07:33:02 2002
@@ -187,6 +187,7 @@
 DRIVERS-$(CONFIG_BLUEZ) += drivers/bluetooth/bluetooth.o
 DRIVERS-$(CONFIG_HOTPLUG_PCI) += drivers/hotplug/vmlinux-obj.o
 DRIVERS-$(CONFIG_ISDN) += drivers/isdn/vmlinux-obj.o
+DRIVERS-$(CONFIG_EVMS) += drivers/evms/evmsdrvr.o
 
 DRIVERS := $(DRIVERS-y)
 
diff -Naur linux-2002-02-11/arch/i386/config.in evms-2002-02-11/arch/i386/config.in
--- linux-2002-02-11/arch/i386/config.in	Mon Feb 11 07:34:13 2002
+++ evms-2002-02-11/arch/i386/config.in	Mon Feb 11 07:24:40 2002
@@ -279,6 +279,8 @@
 
 source drivers/block/Config.in
 
+source drivers/evms/Config.in
+
 source drivers/md/Config.in
 
 if [ "$CONFIG_NET" = "y" ]; then
diff -Naur linux-2002-02-11/arch/ia64/config.in evms-2002-02-11/arch/ia64/config.in
--- linux-2002-02-11/arch/ia64/config.in	Mon Feb 11 07:34:13 2002
+++ evms-2002-02-11/arch/ia64/config.in	Thu Jan 31 07:36:29 2002
@@ -120,6 +120,7 @@
 source drivers/pnp/Config.in
 source drivers/block/Config.in
 source drivers/message/i2o/Config.in
+source drivers/evms/Config.in
 source drivers/md/Config.in
 
 mainmenu_option next_comment
diff -Naur linux-2002-02-11/arch/ppc/config.in evms-2002-02-11/arch/ppc/config.in
--- linux-2002-02-11/arch/ppc/config.in	Mon Feb 11 07:34:13 2002
+++ evms-2002-02-11/arch/ppc/config.in	Thu Jan 31 07:36:29 2002
@@ -224,6 +224,7 @@
 source drivers/mtd/Config.in
 source drivers/pnp/Config.in
 source drivers/block/Config.in
+source drivers/evms/Config.in
 source drivers/md/Config.in
 
 if [ "$CONFIG_NET" = "y" ]; then
diff -Naur linux-2002-02-11/arch/parisc/config.in evms-2002-02-11/arch/parisc/config.in
--- linux-2002-02-11/arch/parisc/config.in	Mon Feb 11 07:34:13 2002
+++ evms-2002-02-11/arch/parisc/config.in	Thu Jan 31 07:36:29 2002
@@ -98,6 +98,8 @@
 
 source drivers/block/Config.in
 
+source drivers/evms/Config.in
+
 if [ "$CONFIG_NET" = "y" ]; then
   source net/Config.in
 fi
diff -Naur linux-2002-02-11/arch/s390/config.in evms-2002-02-11/arch/s390/config.in
--- linux-2002-02-11/arch/s390/config.in	Mon Feb 11 07:34:13 2002
+++ evms-2002-02-11/arch/s390/config.in	Thu Jan 31 07:36:29 2002
@@ -41,6 +41,8 @@
 
 source drivers/s390/Config.in
 
+source drivers/evms/Config.in
+
 if [ "$CONFIG_NET" = "y" ]; then
   source net/Config.in
 fi
diff -Naur linux-2002-02-11/arch/s390x/config.in evms-2002-02-11/arch/s390x/config.in
--- linux-2002-02-11/arch/s390x/config.in	Mon Feb 11 07:34:13 2002
+++ evms-2002-02-11/arch/s390x/config.in	Thu Jan 31 07:36:29 2002
@@ -44,6 +44,8 @@
 
 source drivers/s390/Config.in
 
+source drivers/evms/Config.in
+
 if [ "$CONFIG_NET" = "y" ]; then
   source net/Config.in
 fi
diff -Naur linux-2002-02-11/drivers/Makefile evms-2002-02-11/drivers/Makefile
--- linux-2002-02-11/drivers/Makefile	Mon Feb 11 07:34:13 2002
+++ evms-2002-02-11/drivers/Makefile	Mon Feb 11 07:28:37 2002
@@ -8,7 +8,8 @@
 
 mod-subdirs :=	dio mtd sbus video macintosh usb input telephony sgi ide \
 		message/i2o message/fusion scsi md ieee1394 pnp isdn atm \
-		fc4 net/hamradio i2c acpi bluetooth input/serio input/gameport
+		fc4 net/hamradio i2c acpi bluetooth input/serio input/gameport \
+		evms
 
 subdir-y :=	base parport char block net sound misc media cdrom hotplug
 subdir-m :=	$(subdir-y)
@@ -48,5 +49,6 @@
 subdir-$(CONFIG_ACPI)		+= acpi
 
 subdir-$(CONFIG_BLUEZ)		+= bluetooth
+subdir-$(CONFIG_EVMS)		+= evms
 
 include $(TOPDIR)/Rules.make
diff -Naur linux-2002-02-11/drivers/block/genhd.c evms-2002-02-11/drivers/block/genhd.c
--- linux-2002-02-11/drivers/block/genhd.c	Mon Feb 11 07:34:13 2002
+++ evms-2002-02-11/drivers/block/genhd.c	Tue Jan 15 08:19:34 2002
@@ -117,6 +117,32 @@
 EXPORT_SYMBOL(get_gendisk);
 
 
+/**
+ * walk_gendisk - issue a command for every registered gendisk
+ * @walk: user-specified callback
+ * @data: opaque data for the callback
+ *
+ * This function walks through the gendisk chain and calls back
+ * into @walk for every element.
+ */
+int
+walk_gendisk(int (*walk)(struct gendisk *, void *), void *data)
+{
+	struct gendisk *gp;
+	int error = 0;
+
+	read_lock(&gendisk_lock);
+	for (gp = gendisk_head; gp; gp = gp->next)
+		if ((error = walk(gp, data)))
+			break;
+	read_unlock(&gendisk_lock);
+
+	return error;
+}
+
+EXPORT_SYMBOL(walk_gendisk);
+
+
 unsigned long
 get_start_sect(kdev_t dev)
 {
diff -Naur linux-2002-02-11/include/linux/fs.h evms-2002-02-11/include/linux/fs.h
--- linux-2002-02-11/include/linux/fs.h	Mon Feb 11 07:34:13 2002
+++ evms-2002-02-11/include/linux/fs.h	Tue Jan 15 08:20:22 2002
@@ -1479,7 +1479,7 @@
 	return 0;
 }
 extern kdev_t ROOT_DEV;
-extern char root_device_name[];
+extern void get_root_device_name( char * root_name );
 
 
 extern void show_buffers(void);
diff -Naur linux-2002-02-11/include/linux/genhd.h evms-2002-02-11/include/linux/genhd.h
--- linux-2002-02-11/include/linux/genhd.h	Mon Feb 11 07:34:13 2002
+++ evms-2002-02-11/include/linux/genhd.h	Tue Jan 15 08:20:22 2002
@@ -87,6 +87,7 @@
 extern void add_gendisk(struct gendisk *gp);
 extern void del_gendisk(struct gendisk *gp);
 extern struct gendisk *get_gendisk(kdev_t dev);
+extern int walk_gendisk(int (*walk)(struct gendisk *, void *), void *data);
 extern unsigned long get_start_sect(kdev_t dev);
 extern unsigned long get_nr_sects(kdev_t dev);
 
diff -Naur linux-2002-02-11/include/linux/sysctl.h evms-2002-02-11/include/linux/sysctl.h
--- linux-2002-02-11/include/linux/sysctl.h	Mon Feb 11 07:34:13 2002
+++ evms-2002-02-11/include/linux/sysctl.h	Tue Jan 15 08:20:22 2002
@@ -551,7 +551,8 @@
 	DEV_HWMON=2,
 	DEV_PARPORT=3,
 	DEV_RAID=4,
-	DEV_MAC_HID=5
+	DEV_MAC_HID=5,
+	DEV_EVMS=6
 };
 
 /* /proc/sys/dev/cdrom */
@@ -567,6 +568,18 @@
 /* /proc/sys/dev/parport */
 enum {
 	DEV_PARPORT_DEFAULT=-3
+};
+
+/* /proc/sys/dev/evms */
+enum {
+	DEV_EVMS_INFO_LEVEL=1,
+	DEV_EVMS_MD=2
+};
+
+/* /proc/sys/dev/evms/raid */
+enum {
+	DEV_EVMS_MD_SPEED_LIMIT_MIN=1,
+	DEV_EVMS_MD_SPEED_LIMIT_MAX=2
 };
 
 /* /proc/sys/dev/raid */
diff -Naur linux-2002-02-11/init/do_mounts.c evms-2002-02-11/init/do_mounts.c
--- linux-2002-02-11/init/do_mounts.c	Mon Feb 11 07:34:13 2002
+++ evms-2002-02-11/init/do_mounts.c	Thu Jan 17 07:54:13 2002
@@ -210,6 +210,7 @@
 	{ "ftlc", 0x2c10 },
 	{ "ftld", 0x2c18 },
 	{ "mtdblock", 0x1f00 },
+	{ "evms", 0x3f00 },
 	{ NULL, 0 }
 };
 
@@ -724,6 +725,11 @@
 	mount_block_root("/dev/root", root_mountflags);
 }
 
+void get_root_device_name( char * root_name )
+{
+	strncpy(root_name, root_device_name, 63);
+}
+
 #ifdef CONFIG_BLK_DEV_INITRD
 static int do_linuxrc(void * shell)
 {
diff -Naur linux-2002-02-11/kernel/ksyms.c evms-2002-02-11/kernel/ksyms.c
--- linux-2002-02-11/kernel/ksyms.c	Mon Feb 11 07:34:13 2002
+++ evms-2002-02-11/kernel/ksyms.c	Thu Jan 17 07:54:13 2002
@@ -323,6 +323,7 @@
 EXPORT_SYMBOL(refile_buffer);
 EXPORT_SYMBOL(max_readahead);
 EXPORT_SYMBOL(wipe_partitions);
+EXPORT_SYMBOL(is_swap_partition);
 
 /* tty routines */
 EXPORT_SYMBOL(tty_hangup);
