diff --git a/libcfs/include/libcfs/libcfs.h b/libcfs/include/libcfs/libcfs.h
index d8886701cc3b64e88e0a62ba7c1df1b5c9e6006f..745f3a03d83e9b425dc179325dbe7b687c5547d9 100644
--- a/libcfs/include/libcfs/libcfs.h
+++ b/libcfs/include/libcfs/libcfs.h
@@ -103,6 +103,16 @@ static inline int __is_po2(unsigned long long val)
 
 #include <libcfs/list.h>
 
+/* for_each_possible_cpu is defined newly, the former is
+ * for_each_cpu(eg. sles9 and sles10) b=15878 */
+#ifndef for_each_possible_cpu
+# ifdef for_each_cpu
+#  define for_each_possible_cpu(cpu) for_each_cpu(cpu)
+# else
+#  error for_each_possible_cpu is not supported by kernel!
+# endif
+#endif
+
 /* libcfs tcpip */
 int libcfs_ipif_query(char *name, int *up, __u32 *ip, __u32 *mask);
 int libcfs_ipif_enumerate(char ***names);