On 3/21/24 13:51, David Gibson wrote: > On Thu, Mar 21, 2024 at 11:47:45PM +1100, David Gibson wrote: >> On Thu, Mar 21, 2024 at 01:21:03PM +0100, Laurent Vivier wrote: >>> On 3/21/24 11:55, David Gibson wrote: >>>> On Thu, Mar 21, 2024 at 09:26:58AM +0100, Laurent Vivier wrote: >>>>> On 3/21/24 02:26, David Gibson wrote: >>>>>> On Wed, Mar 20, 2024 at 05:31:46PM +0100, Laurent Vivier wrote: >>>>>>> To be able to provide pointers to TCP headers and IP headers without >>>>>>> worrying about alignment in the structure, split the structure into >>>>>>> several arrays and point to each part of the frame using an iovec array. >>>>>>> >>>>>>> Using iovec also allows us to simply ignore the first entry when the >>>>>>> vnet length header is not needed. >>>>>>> >>>>>>> Signed-off-by: Laurent Vivier >>>>>> >>>>>> [snip] >>>>>>> +static_assert(MSS4 <= sizeof(tcp4_payload[0].data)); >>>>>> >>>>>> This generates a clang-tidy warning, because apparently the C11 >>>>>> version of static_assert() requires a message - making it optional is >>>>>> a C2x extension. >>>>>> >>>>>> Laurent, I know you're having trouble getting the full testsuite to >>>>>> run (but some ideas on that later today, I hope). But could you >>>>>> please add a "make cppcheck" and "make clang-tidy" to your pre-post >>>>>> routine. >>>>>> >>>>> >>>>> I'll do. >>>>> Thank you to have checked that. >>>>> Are there any other commands to run before to send? >>>>> Something like scripts/chekpatch.pl we have in QEMU? >>>>> >>>>> I have always the same problem with the test suite, even after a "make >>>>> realclean" in test (see attachment) >>>>> How to debug? >>>> >>>> Huh. Guest kernel can't find root. That's not a fault I was >>>> expecting (and alas, won't be helped by the patch I have in the >>>> works). >>>> >>>> What's really weird is I don't see any signs of loading the initrd >>>> before that failure, and with the mbuto images we're using we should >>>> never *leave* the initrd. Which kind of makes sense - if it's not >>>> seeing the initrd, then there is indeed no root to mount. >>>> >>>> Can you gran the full qemu command line it's trying to use? >>>> >>> My file mbuto seems to be empty: >> >> Welp, that would explain it. >> >>> $ cd test/ >>> $ make >>> ./mbuto/mbuto -p ./passt.mem.mbuto -c lz4 -f mbuto.mem.img >>> Applying profile from file ./passt.mem.mbuto >>> depmod: WARNING: could not open modules.builtin.modinfo at >>> /tmp/tmp.0Xr88SNogx/lib/modules/6.7.9-200.fc39.x86_64: No such file or >>> directory >> >> So now we have two mysteries. 1) Why is depmod failing here, and 2) >> why isn't depmod failing causing mbuto to fail, rather than generating >> nonsense output. > > Can you get the output of running mbuto with sh -x? That might shed > some light. Really strange: + /usr/bin/cpio --create -H newc --quiet + /usr/bin/gzip + '[' -n /usr/bin/archivemount ']' + /usr/bin/archivemount /home/lvivier/Projects/passt/test/mbuto.mem.img /tmp/tmp.AXKp3fwxoA + info 'Mounted CPIO archive /home/lvivier/Projects/passt/test/mbuto.mem.img at /tmp/tmp.AXKp3fwxoA' and then: $ find /tmp/tmp.AXKp3fwxoA /tmp/tmp.AXKp3fwxoA /tmp/tmp.AXKp3fwxoA/lib /tmp/tmp.AXKp3fwxoA/lib/modules /tmp/tmp.AXKp3fwxoA/lib/modules/6.7.9-200.fc39.x86_64 /tmp/tmp.AXKp3fwxoA/lib/modules/6.7.9-200.fc39.x86_64/kernel /tmp/tmp.AXKp3fwxoA/lib/modules/6.7.9-200.fc39.x86_64/kernel/drivers /tmp/tmp.AXKp3fwxoA/lib/modules/6.7.9-200.fc39.x86_64/kernel/drivers/net /tmp/tmp.AXKp3fwxoA/lib/modules/6.7.9-200.fc39.x86_64/kernel/drivers/net/dummy.ko.xz /tmp/tmp.AXKp3fwxoA/lib/modules/6.7.9-200.fc39.x86_64/modules.order /tmp/tmp.AXKp3fwxoA/lib/modules/6.7.9-200.fc39.x86_64/modules.builtin /tmp/tmp.AXKp3fwxoA/lib/modules/6.7.9-200.fc39.x86_64/modules.dep /tmp/tmp.AXKp3fwxoA/lib/modules/6.7.9-200.fc39.x86_64/modules.dep.bin /tmp/tmp.AXKp3fwxoA/lib/modules/6.7.9-200.fc39.x86_64/modules.alias /tmp/tmp.AXKp3fwxoA/lib/modules/6.7.9-200.fc39.x86_64/modules.alias.bin /tmp/tmp.AXKp3fwxoA/lib/modules/6.7.9-200.fc39.x86_64/modules.softdep /tmp/tmp.AXKp3fwxoA/lib/modules/6.7.9-200.fc39.x86_64/modules.symbols /tmp/tmp.AXKp3fwxoA/lib/modules/6.7.9-200.fc39.x86_64/modules.symbols.bin /tmp/tmp.AXKp3fwxoA/lib/modules/6.7.9-200.fc39.x86_64/modules.builtin.bin /tmp/tmp.AXKp3fwxoA/lib/modules/6.7.9-200.fc39.x86_64/modules.builtin.alias.bin /tmp/tmp.AXKp3fwxoA/lib/modules/6.7.9-200.fc39.x86_64/modules.devname /tmp/tmp.AXKp3fwxoA/proc /tmp/tmp.AXKp3fwxoA/sys /tmp/tmp.AXKp3fwxoA/tmp /tmp/tmp.AXKp3fwxoA/sbin /tmp/tmp.AXKp3fwxoA/usr /tmp/tmp.AXKp3fwxoA/usr/bin /tmp/tmp.AXKp3fwxoA/usr/bin/bash /tmp/tmp.AXKp3fwxoA/usr/bin/chmod /tmp/tmp.AXKp3fwxoA/usr/bin/mount /tmp/tmp.AXKp3fwxoA/usr/bin/mkdir /tmp/tmp.AXKp3fwxoA/usr/bin/ln /tmp/tmp.AXKp3fwxoA/usr/bin/cat /tmp/tmp.AXKp3fwxoA/usr/bin/grep /tmp/tmp.AXKp3fwxoA/usr/bin/mknod /tmp/tmp.AXKp3fwxoA/usr/bin/sed /tmp/tmp.AXKp3fwxoA/usr/bin/chown /tmp/tmp.AXKp3fwxoA/usr/bin/sleep /tmp/tmp.AXKp3fwxoA/usr/bin/bc /tmp/tmp.AXKp3fwxoA/usr/bin/ls /tmp/tmp.AXKp3fwxoA/usr/bin/ps /tmp/tmp.AXKp3fwxoA/usr/bin/unshare /tmp/tmp.AXKp3fwxoA/usr/bin/cp /tmp/tmp.AXKp3fwxoA/usr/bin/kill /tmp/tmp.AXKp3fwxoA/usr/bin/diff /tmp/tmp.AXKp3fwxoA/usr/bin/head /tmp/tmp.AXKp3fwxoA/usr/bin/tail /tmp/tmp.AXKp3fwxoA/usr/bin/sort /tmp/tmp.AXKp3fwxoA/usr/bin/tr /tmp/tmp.AXKp3fwxoA/usr/bin/tee /tmp/tmp.AXKp3fwxoA/usr/bin/cut /tmp/tmp.AXKp3fwxoA/usr/bin/nm /tmp/tmp.AXKp3fwxoA/usr/bin/which /tmp/tmp.AXKp3fwxoA/usr/lib64 /tmp/tmp.AXKp3fwxoA/usr/lib64/libfakeroot /tmp/tmp.AXKp3fwxoA/usr/lib64/libfakeroot/libfakeroot-tcp.so /tmp/tmp.AXKp3fwxoA/usr/lib64/libfakeroot/libfakeroot-0.so /tmp/tmp.AXKp3fwxoA/usr/sbin /tmp/tmp.AXKp3fwxoA/usr/sbin/ip /tmp/tmp.AXKp3fwxoA/usr/sbin/insmod /tmp/tmp.AXKp3fwxoA/usr/sbin/modprobe /tmp/tmp.AXKp3fwxoA/usr/sbin/chroot /tmp/tmp.AXKp3fwxoA/bin /tmp/tmp.AXKp3fwxoA/bin/sh /tmp/tmp.AXKp3fwxoA/bin/passt.avx2 /tmp/tmp.AXKp3fwxoA/etc /tmp/tmp.AXKp3fwxoA/etc/ld.so.conf /tmp/tmp.AXKp3fwxoA/etc/ld.so.cache /tmp/tmp.AXKp3fwxoA/lib64 /tmp/tmp.AXKp3fwxoA/lib64/libc.so.6 /tmp/tmp.AXKp3fwxoA/lib64/libnss_dns.so.2 /tmp/tmp.AXKp3fwxoA/lib64/libresolv.so.2 /tmp/tmp.AXKp3fwxoA/lib64/ld-linux-x86-64.so.2 /tmp/tmp.AXKp3fwxoA/lib64/libnss_files.so.2 /tmp/tmp.AXKp3fwxoA/lib64/libtinfo.so.6 /tmp/tmp.AXKp3fwxoA/lib64/libbpf.so.1 /tmp/tmp.AXKp3fwxoA/lib64/libelf.so.1 /tmp/tmp.AXKp3fwxoA/lib64/libz.so.1 /tmp/tmp.AXKp3fwxoA/lib64/libzstd.so.1 /tmp/tmp.AXKp3fwxoA/lib64/libmnl.so.0 /tmp/tmp.AXKp3fwxoA/lib64/libcap.so.2 /tmp/tmp.AXKp3fwxoA/lib64/libmount.so.1 /tmp/tmp.AXKp3fwxoA/lib64/libblkid.so.1 /tmp/tmp.AXKp3fwxoA/lib64/libselinux.so.1 /tmp/tmp.AXKp3fwxoA/lib64/libpcre2-8.so.0 /tmp/tmp.AXKp3fwxoA/lib64/liblzma.so.5 /tmp/tmp.AXKp3fwxoA/lib64/libcrypto.so.3 /tmp/tmp.AXKp3fwxoA/lib64/libgcc_s.so.1 /tmp/tmp.AXKp3fwxoA/lib64/libacl.so.1 /tmp/tmp.AXKp3fwxoA/lib64/libattr.so.1 /tmp/tmp.AXKp3fwxoA/lib64/libreadline.so.8 /tmp/tmp.AXKp3fwxoA/lib64/libproc2.so.0 /tmp/tmp.AXKp3fwxoA/lib64/libsystemd.so.0 /tmp/tmp.AXKp3fwxoA/lib64/liblz4.so.1 /tmp/tmp.AXKp3fwxoA/lib64/libbfd-2.40-14.fc39.so /tmp/tmp.AXKp3fwxoA/lib64/libsframe.so.0 /tmp/tmp.AXKp3fwxoA/dev /tmp/tmp.AXKp3fwxoA/dev/console /tmp/tmp.AXKp3fwxoA/dev/kmsg /tmp/tmp.AXKp3fwxoA/dev/null /tmp/tmp.AXKp3fwxoA/dev/ptmx /tmp/tmp.AXKp3fwxoA/dev/random /tmp/tmp.AXKp3fwxoA/dev/urandom /tmp/tmp.AXKp3fwxoA/dev/zero /tmp/tmp.AXKp3fwxoA/init but $ gzip -d -c < /home/lvivier/Projects/passt/test/mbuto.mem.img | cpio -t 1 block Any idea? Thanks, Laurent