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