Linus, A couple of versions of this patch went into Alan's tree, but weren't quite right. This one is minimal, but works. The problem is that the the tidy up of xor.o, it auto-initialises itself, instead of being called by raid.o, and so needs to be linked *before* md.o, as the initialiser for md.o may start up a raid5 device that needs xor. This patch simply puts xor before md. I would like to tidy this up further and have all the raid flavours auto-initialise, but there are issues that I have to clarify with the kbuild people before I do that. After compiling with this patch, % objdump -t vmlinux | grep initcall.init contains: c03345dc l O .initcall.init 00000004 __initcall_calibrate_xor_block c03345e0 l O .initcall.init 00000004 __initcall_md_init c03345e4 l O .initcall.init 00000004 __initcall_md_run_setup in that order which convinces me that it gets the order right. NeilBrown --- ./drivers/md/Makefile 2000/11/29 03:46:13 1.1 +++ ./drivers/md/Makefile 2000/11/29 04:05:27 1.2 @@ -16,12 +16,16 @@ obj-n := obj- := -obj-$(CONFIG_BLK_DEV_MD) += md.o +# NOTE: xor.o must link *before* md.o so that auto-detect +# of raid5 arrays works (and doesn't Oops). Fortunately +# they are both export-objs, so setting the order here +# works. obj-$(CONFIG_MD_LINEAR) += linear.o obj-$(CONFIG_MD_RAID0) += raid0.o obj-$(CONFIG_MD_RAID1) += raid1.o obj-$(CONFIG_MD_RAID5) += raid5.o xor.o +obj-$(CONFIG_BLK_DEV_MD) += md.o obj-$(CONFIG_BLK_DEV_LVM) += lvm-mod.o # Translate to Rules.make lists. O_OBJS := $(filter-out $(export-objs), $(obj-y)) - To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to [EMAIL PROTECTED]