Compilation on 32 bit Linux results in lots of warnings caused by wrong format specifiers. Please don't add type casts, but try to use the format specifiers needed (PRIu64, ...).
CC hw/nvme.o /qemu/hw/nvme.c: In function 'nvme_init_file': /qemu/hw/nvme.c:834:5: error: format '%lu' expects argument of type 'long unsigned int', but argument 5 has type 'off_t' [-Werror=format] /qemu/hw/nvme.c:845:13: error: format '%lu' expects argument of type 'long unsigned int', but argument 4 has type 'off_t' [-Werror=format] /qemu/hw/nvme.c: In function 'nvme_open_namespace': /qemu/hw/nvme.c:871:5: error: format '%lu' expects argument of type 'long unsigned int', but argument 7 has type 'uint64_t' [-Werror=format] /qemu/hw/nvme.c: In function 'nvme_close_namespace': /qemu/hw/nvme.c:895:5: error: format '%lu' expects argument of type 'long unsigned int', but argument 7 has type 'size_t' [-Werror=format] /qemu/hw/nvme.c:895:5: error: format '%lu' expects argument of type 'long unsigned int', but argument 8 has type 'size_t' [-Werror=format] /qemu/hw/nvme.c: In function 'nvme_setup_discontig': /qemu/hw/nvme.c:955:17: error: format '%lx' expects argument of type 'long unsigned int', but argument 4 has type 'uint64_t' [-Werror=format] /qemu/hw/nvme.c:964:9: error: format '%lx' expects argument of type 'long unsigned int', but argument 4 has type 'uint64_t' [-Werror=format] /qemu/hw/nvme.c:966:13: error: format '%lx' expects argument of type 'long unsigned int', but argument 4 has type 'uint64_t' [-Werror=format] /qemu/hw/nvme.c: In function 'nvme_discontig': /qemu/hw/nvme.c:981:5: error: format '%lx' expects argument of type 'long unsigned int', but argument 4 has type 'uint64_t' [-Werror=format] /qemu/hw/nvme.c: In function 'nvme_do_prp': /qemu/hw/nvme.c:997:5: error: format '%lx' expects argument of type 'long unsigned int', but argument 6 has type 'uint64_t' [-Werror=format] /qemu/hw/nvme.c:997:5: error: format '%lx' expects argument of type 'long unsigned int', but argument 7 has type 'uint64_t' [-Werror=format] /qemu/hw/nvme.c:1021:25: error: format '%lx' expects argument of type 'long unsigned int', but argument 5 has type 'uint64_t' [-Werror=format] /qemu/hw/nvme.c:1034:21: error: format '%lx' expects argument of type 'long unsigned int', but argument 5 has type 'uint64_t' [-Werror=format] /qemu/hw/nvme.c:1039:17: error: format '%lx' expects argument of type 'long unsigned int', but argument 5 has type 'uint64_t' [-Werror=format] /qemu/hw/nvme.c: In function 'nvme_wait_sq': /qemu/hw/nvme.c:1079:5: error: format '%lu' expects argument of type 'long unsigned int', but argument 5 has type 'uint64_t' [-Werror=format] /qemu/hw/nvme.c: In function 'nvme_post_cqe': /qemu/hw/nvme.c:1153:5: error: format '%lx' expects argument of type 'long unsigned int', but argument 7 has type 'hwaddr' [-Werror=format] /qemu/hw/nvme.c: In function 'nvme_dsm': /qemu/hw/nvme.c:1305:17: error: format '%ld' expects argument of type 'long int', but argument 4 has type 'uint64_t' [-Werror=format] /qemu/hw/nvme.c:1305:17: error: format '%ld' expects argument of type 'long int', but argument 5 has type 'uint64_t' [-Werror=format] /qemu/hw/nvme.c:1305:17: error: format '%ld' expects argument of type 'long int', but argument 6 has type 'uint64_t' [-Werror=format] /qemu/hw/nvme.c: In function 'nvme_rw': /qemu/hw/nvme.c:1329:5: error: format '%lu' expects argument of type 'long unsigned int', but argument 5 has type 'uint64_t' [-Werror=format] /qemu/hw/nvme.c:1329:5: error: format '%lu' expects argument of type 'long unsigned int', but argument 7 has type 'uint64_t' [-Werror=format] /qemu/hw/nvme.c:1329:5: error: format '%lu' expects argument of type 'long unsigned int', but argument 8 has type 'uint64_t' [-Werror=format] /qemu/hw/nvme.c:1332:9: error: format '%ld' expects argument of type 'long int', but argument 4 has type 'uint64_t' [-Werror=format] /qemu/hw/nvme.c:1332:9: error: format '%ld' expects argument of type 'long int', but argument 6 has type 'uint64_t' [-Werror=format] /qemu/hw/nvme.c:1339:9: error: format '%lu' expects argument of type 'long unsigned int', but argument 5 has type 'uint64_t' [-Werror=format] /qemu/hw/nvme.c:1352:9: error: format '%lx' expects argument of type 'long unsigned int', but argument 5 has type 'uint64_t' [-Werror=format] /qemu/hw/nvme.c: In function 'nvme_write_uncor': /qemu/hw/nvme.c:1404:5: error: format '%lu' expects argument of type 'long unsigned int', but argument 5 has type 'uint64_t' [-Werror=format] /qemu/hw/nvme.c:1406:9: error: format '%ld' expects argument of type 'long int', but argument 4 has type 'uint64_t' [-Werror=format] /qemu/hw/nvme.c:1406:9: error: format '%ld' expects argument of type 'long int', but argument 6 has type 'uint64_t' [-Werror=format] /qemu/hw/nvme.c: In function 'nvme_compare': /qemu/hw/nvme.c:1446:5: error: format '%lu' expects argument of type 'long unsigned int', but argument 5 has type 'uint64_t' [-Werror=format] /qemu/hw/nvme.c:1446:5: error: format '%lu' expects argument of type 'long unsigned int', but argument 7 has type 'uint64_t' [-Werror=format] /qemu/hw/nvme.c:1449:9: error: format '%ld' expects argument of type 'long int', but argument 5 has type 'uint64_t' [-Werror=format] /qemu/hw/nvme.c:1449:9: error: format '%ld' expects argument of type 'long int', but argument 7 has type 'uint64_t' [-Werror=format] /qemu/hw/nvme.c:1456:9: error: format '%lu' expects argument of type 'long unsigned int', but argument 6 has type 'uint64_t' [-Werror=format] /qemu/hw/nvme.c:1469:9: error: format '%lx' expects argument of type 'long unsigned int', but argument 5 has type 'uint64_t' [-Werror=format] /qemu/hw/nvme.c: In function 'nvme_create_sq': /qemu/hw/nvme.c:1592:9: error: format '%lx' expects argument of type 'long unsigned int', but argument 4 has type 'uint64_t' [-Werror=format] /qemu/hw/nvme.c: In function 'nvme_fw_log_info': /qemu/hw/nvme.c:1863:9: error: format '%ld' expects argument of type 'long int', but argument 4 has type 'unsigned int' [-Werror=format] /qemu/hw/nvme.c: In function 'nvme_error_log_info': /qemu/hw/nvme.c:1876:9: error: format '%lu' expects argument of type 'long unsigned int', but argument 4 has type 'unsigned int' [-Werror=format] /qemu/hw/nvme.c: In function 'nvme_smart_info': /qemu/hw/nvme.c:1896:9: error: format '%ld' expects argument of type 'long int', but argument 4 has type 'unsigned int' [-Werror=format] /qemu/hw/nvme.c: In function 'nvme_abort_req': /qemu/hw/nvme.c:2162:21: error: variable 'cqe' set but not used [-Werror=unused-but-set-variable] /qemu/hw/nvme.c: In function 'nvme_start_ctrl': /qemu/hw/nvme.c:2360:9: error: format '%lx' expects argument of type 'long unsigned int', but argument 4 has type 'uint64_t' [-Werror=format] /qemu/hw/nvme.c:2360:9: error: format '%lx' expects argument of type 'long unsigned int', but argument 5 has type 'uint64_t' [-Werror=format] /qemu/hw/nvme.c: In function 'nvme_write_bar': /qemu/hw/nvme.c:2405:5: error: format '%lx' expects argument of type 'long unsigned int', but argument 5 has type 'hwaddr' [-Werror=format] /qemu/hw/nvme.c:2405:5: error: format '%lx' expects argument of type 'long unsigned int', but argument 6 has type 'uint64_t' [-Werror=format] /qemu/hw/nvme.c: In function 'nvme_mmio_read': /qemu/hw/nvme.c:2464:9: error: format '%ld' expects argument of type 'long int', but argument 4 has type 'hwaddr' [-Werror=format] /qemu/hw/nvme.c: In function 'nvme_process_db': /qemu/hw/nvme.c:2473:5: error: format '%lx' expects argument of type 'long unsigned int', but argument 5 has type 'hwaddr' [-Werror=format] /qemu/hw/nvme.c:2475:9: error: format '%lx' expects argument of type 'long unsigned int', but argument 4 has type 'hwaddr' [-Werror=format] /qemu/hw/nvme.c:2490:13: error: format '%lx' expects argument of type 'long unsigned int', but argument 5 has type 'hwaddr' [-Werror=format] /qemu/hw/nvme.c: In function 'nvme_mmio_write': /qemu/hw/nvme.c:2557:9: error: format '%ld' expects argument of type 'long int', but argument 4 has type 'hwaddr' [-Werror=format] /qemu/hw/nvme.c: In function 'nvme_init_ctrl': /qemu/hw/nvme.c:2705:5: error: format '%lx' expects argument of type 'long unsigned int', but argument 5 has type 'uint64_t' [-Werror=format] cc1: all warnings being treated as errors make: *** [hw/nvme.o] Error 1 make: Leaving directory `/qemu/bin/debug/i686-linux-gnu'