fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / drivers / md / raid6algos.c
index b02cff3..9265761 100644 (file)
@@ -19,6 +19,7 @@
 #include "raid6.h"
 #ifndef __KERNEL__
 #include <sys/mman.h>
+#include <stdio.h>
 #endif
 
 struct raid6_calls raid6_call;
@@ -37,6 +38,10 @@ extern const struct raid6_calls raid6_sse1x2;
 extern const struct raid6_calls raid6_sse2x1;
 extern const struct raid6_calls raid6_sse2x2;
 extern const struct raid6_calls raid6_sse2x4;
+extern const struct raid6_calls raid6_altivec1;
+extern const struct raid6_calls raid6_altivec2;
+extern const struct raid6_calls raid6_altivec4;
+extern const struct raid6_calls raid6_altivec8;
 
 const struct raid6_calls * const raid6_algos[] = {
        &raid6_intx1,
@@ -59,6 +64,12 @@ const struct raid6_calls * const raid6_algos[] = {
        &raid6_sse2x1,
        &raid6_sse2x2,
        &raid6_sse2x4,
+#endif
+#ifdef CONFIG_ALTIVEC
+       &raid6_altivec1,
+       &raid6_altivec2,
+       &raid6_altivec4,
+       &raid6_altivec8,
 #endif
        NULL
 };
@@ -128,15 +139,14 @@ int __init raid6_select_algo(void)
                }
        }
 
-       if ( best )
+       if (best) {
                printk("raid6: using algorithm %s (%ld MB/s)\n",
                       best->name,
                       (bestperf*HZ) >> (20-16+RAID6_TIME_JIFFIES_LG2));
-       else
+               raid6_call = *best;
+       } else
                printk("raid6: Yikes!  No algorithm found!\n");
 
-       raid6_call = *best;
-
        free_pages((unsigned long)syndromes, 1);
 
        return best ? 0 : -EINVAL;