On Wed, Jul 5, 2023 at 5:17 PM Geert Uytterhoeven <geert+renesas@xxxxxxxxx> wrote: > > On 32-bit: > > ../tests/amdgpu/amdgpu_stress.c: In function ‘alloc_bo’: > ../tests/amdgpu/amdgpu_stress.c:178:49: warning: format ‘%lx’ expects argument of type ‘long unsigned int’, but argument 4 has type ‘uint64_t’ {aka ‘long long unsigned int’} [-Wformat=] > fprintf(stdout, "Allocated BO number %u at 0x%lx, domain 0x%x, size %lu\n", > ~~^ > %llx > num_buffers++, addr, domain, size); > ~~~~ > ../tests/amdgpu/amdgpu_stress.c:178:72: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 6 has type ‘uint64_t’ {aka ‘long long unsigned int’} [-Wformat=] > fprintf(stdout, "Allocated BO number %u at 0x%lx, domain 0x%x, size %lu\n", > ~~^ > %llu > num_buffers++, addr, domain, size); > ~~~~ > ../tests/amdgpu/amdgpu_stress.c: In function ‘submit_ib’: > ../tests/amdgpu/amdgpu_stress.c:276:54: warning: format ‘%lx’ expects argument of type ‘long unsigned int’, but argument 5 has type ‘uint64_t’ {aka ‘long long unsigned int’} [-Wformat=] > fprintf(stdout, "Submitted %u IBs to copy from %u(%lx) to %u(%lx) %lu bytes took %lu usec\n", > ~~^ > %llx > count, from, virtual[from], to, virtual[to], copied, delta / 1000); > ~~~~~~~~~~~~~ > ../tests/amdgpu/amdgpu_stress.c:276:65: warning: format ‘%lx’ expects argument of type ‘long unsigned int’, but argument 7 has type ‘uint64_t’ {aka ‘long long unsigned int’} [-Wformat=] > fprintf(stdout, "Submitted %u IBs to copy from %u(%lx) to %u(%lx) %lu bytes took %lu usec\n", > ~~^ > %llx > count, from, virtual[from], to, virtual[to], copied, delta / 1000); > ~~~~~~~~~~~ > ../tests/amdgpu/amdgpu_stress.c:276:70: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 8 has type ‘uint64_t’ {aka ‘long long unsigned int’} [-Wformat=] > fprintf(stdout, "Submitted %u IBs to copy from %u(%lx) to %u(%lx) %lu bytes took %lu usec\n", > ~~^ > %llu > count, from, virtual[from], to, virtual[to], copied, delta / 1000); > ~~~~~~ > ../tests/amdgpu/amdgpu_stress.c:276:85: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 9 has type ‘uint64_t’ {aka ‘long long unsigned int’} [-Wformat=] > fprintf(stdout, "Submitted %u IBs to copy from %u(%lx) to %u(%lx) %lu bytes took %lu usec\n", > ~~^ > %llu > count, from, virtual[from], to, virtual[to], copied, delta / 1000); > ~~~~~~~~~~~~ > ../tests/amdgpu/amdgpu_stress.c: In function ‘parse_size’: > ../tests/amdgpu/amdgpu_stress.c:296:24: warning: format ‘%li’ expects argument of type ‘long int *’, but argument 3 has type ‘uint64_t *’ {aka ‘long long unsigned int *’} [-Wformat=] > if (sscanf(optarg, "%li%1[kmgKMG]", &size, ext) < 1) { > ~~^ ~~~~~ > %lli > ../tests/amdgpu/amdgpu_stress.c: In function ‘main’: > ../tests/amdgpu/amdgpu_stress.c:378:45: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 3 has type ‘uint64_t’ {aka ‘long long unsigned int’} [-Wformat=] > fprintf(stderr, "Buffer size to small %lu\n", size); > ~~^ ~~~~ > %llu > > Fix this by using the proper "%ll" format specifier prefix. > > Fixes: d77ccdf3ba6f5a39 ("amdgpu: add amdgpu_stress utility v2") > Signed-off-by: Geert Uytterhoeven <geert+renesas@xxxxxxxxx> Scrap it, now it fails on 64-bit :-( > --- a/tests/amdgpu/amdgpu_stress.c > +++ b/tests/amdgpu/amdgpu_stress.c > @@ -175,7 +175,7 @@ int alloc_bo(uint32_t domain, uint64_t size) > > resources[num_buffers] = bo; > virtual[num_buffers] = addr; > - fprintf(stdout, "Allocated BO number %u at 0x%lx, domain 0x%x, size %lu\n", > + fprintf(stdout, "Allocated BO number %u at 0x%llx, domain 0x%x, size %llu\n", > num_buffers++, addr, domain, size); > return 0; > } > @@ -273,7 +273,7 @@ int submit_ib(uint32_t from, uint32_t to, uint64_t size, uint32_t count) > delta = stop.tv_nsec + stop.tv_sec * 1000000000UL; > delta -= start.tv_nsec + start.tv_sec * 1000000000UL; > > - fprintf(stdout, "Submitted %u IBs to copy from %u(%lx) to %u(%lx) %lu bytes took %lu usec\n", > + fprintf(stdout, "Submitted %u IBs to copy from %u(%llx) to %u(%llx) %llu bytes took %llu usec\n", > count, from, virtual[from], to, virtual[to], copied, delta / 1000); > return 0; > } > @@ -293,7 +293,7 @@ uint64_t parse_size(void) > char ext[2]; > > ext[0] = 0; > - if (sscanf(optarg, "%li%1[kmgKMG]", &size, ext) < 1) { > + if (sscanf(optarg, "%lli%1[kmgKMG]", &size, ext) < 1) { > fprintf(stderr, "Can't parse size arg: %s\n", optarg); > exit(EXIT_FAILURE); > } > @@ -375,7 +375,7 @@ int main(int argc, char **argv) > next_arg(argc, argv, "Missing buffer size"); > size = parse_size(); > if (size < getpagesize()) { > - fprintf(stderr, "Buffer size to small %lu\n", size); > + fprintf(stderr, "Buffer size to small %llu\n", size); > exit(EXIT_FAILURE); > } > r = alloc_bo(domain, size); Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds