[PATCH libdrm] amdgpu: Use %ll to format 64-bit integers
Geert Uytterhoeven
geert at linux-m68k.org
Wed Jul 5 16:00:36 UTC 2023
On Wed, Jul 5, 2023 at 5:17 PM Geert Uytterhoeven
<geert+renesas at glider.be> 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 at glider.be>
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 at linux-m68k.org
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
More information about the dri-devel
mailing list