make ARCH=i386 allyesconfig gave bellow errors:
   drivers/built-in.o: In function `kiblnd_create_conn':
>> (.text+0x1a74425): undefined reference to `__umoddi3'
Reported-by: Wu Fengguang <fengguang.wu@intel.com>
Signed-off-by: Peng Tao <tao.peng@emc.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  */
 
 #include "o2iblnd.h"
+#include <asm/div64.h>
 
 lnd_t the_o2iblnd = {
        .lnd_type       = O2IBLND,
        int             vectors;
        int             off;
        int             i;
+       lnet_nid_t      nid = conn->ibc_peer->ibp_nid;
 
        vectors = conn->ibc_cmid->device->num_comp_vectors;
        if (vectors <= 1)
        mask = cfs_cpt_cpumask(lnet_cpt_table(), cpt);
 
        /* hash NID to CPU id in this partition... */
-       off = conn->ibc_peer->ibp_nid % cpus_weight(*mask);
+       off = do_div(nid, cpus_weight(*mask));
        for_each_cpu_mask(i, *mask) {
                if (off-- == 0)
                        return i % vectors;