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;