On 09/09/2014 02:09 AM, Dr. David Alan Gilbert wrote:
(cc'ing Michael Hines who owns and knows the RDMA code)

* Karl-Philipp Richter (krichter...@aol.de) wrote:
** Description changed:

   After `make clean` and `git clean -x -f -d` `git checkout v2.1.0 &&
   configure --prefix=/home/user/prefix-qemu-2.1.0 && make` fails due to
   missing declarations

       CC    qemu-seccomp.o
       qemu-seccomp.c:28:1: error: '__NR_select' undeclared here (not in a 
function)
       qemu-seccomp.c:36:1: error: '__NR_mmap' undeclared here (not in a 
function)
       qemu-seccomp.c:57:1: error: '__NR_getrlimit' undeclared here (not in a 
function)
       qemu-seccomp.c:96:1: error: '__NR_time' undeclared here (not in a 
function)
         GEN   qmp-marshal.c
       qemu-seccomp.c:186:1: error: '__NR_alarm' undeclared here (not in a 
function)
       make: *** [qemu-seccomp.o] Error 1

   Same errors for master 8b3030114a449e66c68450acaac4b66f26d91416.
   `configure`should not succeed for a failing build. `config.log` for
   v2.1.0 and 8b303011... attached. The content is mostly compiler output
   which I think is unusual for `config.log`, but see for yourself.

   I'm building on a debian 7.6 chroot on Synology DSM 5.0. `uname -a` says
   `Linux diskstatation 3.2.40 #4493 SMP Thu Aug 21 21:43:02 CST 2014
   armv7l GNU/Linux`.
+
+ After installing some of the missing header files (-> configure should
+ fail at the right point with a good error message), i.e. `apt-get
+ install liblzo2-dev libbsd-dev syslinux-common libhwloc-dev librdmacm-
+ dev libsnappy-dev libibverbs-dev valgrind linux-headers-3.2.0-4-common`
+ I'm getting
+
+      CC    migration-rdma.o
+     migration-rdma.c: In function 'ram_chunk_start':
+     migration-rdma.c:523:12: error: cast to pointer from integer of different 
size [-Werror=int-to-pointer-cast]
is that:
     return (uint8_t *) (((uintptr_t) rdma_ram_block->local_host_addr)
                                     + (i << RDMA_REG_CHUNK_SHIFT));

244:    uint8_t  *local_host_addr; /* local virtual address */

in which case I think the problem is the 'i' which is a uint64_t.

+     migration-rdma.c: In function '__qemu_rdma_add_block':
+     migration-rdma.c:556:49: error: cast to pointer from integer of different 
size [-Werror=int-to-pointer-cast]
+     migration-rdma.c:557:49: error: cast to pointer from integer of different 
size [-Werror=int-to-pointer-cast]
+     migration-rdma.c: In function '__qemu_rdma_delete_block':
+     migration-rdma.c:664:45: error: cast to pointer from integer of different 
size [-Werror=int-to-pointer-cast]
+     migration-rdma.c:699:49: error: cast to pointer from integer of different 
size [-Werror=int-to-pointer-cast]
+     migration-rdma.c: In function 'qemu_rdma_search_ram_block':
+     migration-rdma.c:1113:49: error: cast to pointer from integer of 
different size [-Werror=int-to-pointer-cast]
+     migration-rdma.c: In function 'qemu_rdma_register_and_get_keys':
+     migration-rdma.c:1176:50: error: cast from pointer to integer of 
different size [-Werror=pointer-to-int-cast]
+     migration-rdma.c:1177:29: error: cast from pointer to integer of 
different size [-Werror=pointer-to-int-cast]
+     migration-rdma.c:1177:51: error: cast from pointer to integer of 
different size [-Werror=pointer-to-int-cast]
+     migration-rdma.c:1178:29: error: cast from pointer to integer of 
different size [-Werror=pointer-to-int-cast]
+     migration-rdma.c: In function 'qemu_rdma_post_send_control':
+     migration-rdma.c:1562:36: error: cast from pointer to integer of 
different size [-Werror=pointer-to-int-cast]
+     migration-rdma.c: In function 'qemu_rdma_post_recv_control':
+     migration-rdma.c:1616:37: error: cast from pointer to integer of 
different size [-Werror=pointer-to-int-cast]
+     migration-rdma.c: In function 'qemu_rdma_write_one':
+     migration-rdma.c:1864:16: error: cast from pointer to integer of 
different size [-Werror=pointer-to-int-cast]
+     migration-rdma.c:1868:53: error: cast to pointer from integer of 
different size [-Werror=int-to-pointer-cast]
+     migration-rdma.c:1922:52: error: cast to pointer from integer of 
different size [-Werror=int-to-pointer-cast]
+     migration-rdma.c:1923:50: error: cast to pointer from integer of 
different size [-Werror=int-to-pointer-cast]
+     migration-rdma.c:1977:49: error: cast to pointer from integer of 
different size [-Werror=int-to-pointer-cast]
+     migration-rdma.c:1998:49: error: cast to pointer from integer of 
different size [-Werror=int-to-pointer-cast]
+     migration-rdma.c:2010:58: error: cast to pointer from integer of 
different size [-Werror=int-to-pointer-cast]
+     migration-rdma.c: In function 'qemu_rdma_registration_handle':
+     migration-rdma.c:3027:21: error: cast from pointer to integer of 
different size [-Werror=pointer-to-int-cast]
+     migration-rdma.c:3092:41: error: cast from pointer to integer of 
different size [-Werror=pointer-to-int-cast]
+     cc1: all warnings being treated as errors
+     make: *** [migration-rdma.o] Error 1
There's lots of stuff there; I think it's one for Michael because it involves 
understanding the structures
and which ones get passed over the wire etc.
(The quick fix would probably to guard the RDMA configure with a test for 32bit 
pointers)

Dave




I could use some advice from the community on this: In particular, I have *zero* 32-bit machine to fix this on........ now, I could easily create a 32-bit machine, but I simply don't have any RDMA hardware
for which to run the 32-bit virtual machine against.

So, what are my options? Can I just submit a patch that completely disables RDMA in 32-bit environments?

Is that a bad thing?

- Michael


Reply via email to