[PATCH libdrm v2] amdgpu: Use PRI?64 to format uint64_t

Christian König ckoenig.leichtzumerken at gmail.com
Fri Jul 7 12:06:01 UTC 2023



Am 06.07.23 um 10:36 schrieb Geert Uytterhoeven:
> 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 "PRI?64" format specifiers.
>
> Fixes: d77ccdf3ba6f5a39 ("amdgpu: add amdgpu_stress utility v2")
> Signed-off-by: Geert Uytterhoeven <geert+renesas at glider.be>

Well generally good patch, but libdrm changes are now reviewed by merge 
request and not on the mailing list any more.

Regards,
Christian.

> ---
> On Linux/amd64, the format strings in the resulting binary are
> unchanged.
>
> v2:
>    - Use PRI?64 to unbreak 64-bit build.
> ---
>   tests/amdgpu/amdgpu_stress.c | 9 +++++----
>   1 file changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/tests/amdgpu/amdgpu_stress.c b/tests/amdgpu/amdgpu_stress.c
> index 5c5c88c5be985eb6..f919351e1f17d70b 100644
> --- a/tests/amdgpu/amdgpu_stress.c
> +++ b/tests/amdgpu/amdgpu_stress.c
> @@ -30,6 +30,7 @@
>   #include <errno.h>
>   #include <unistd.h>
>   #include <stdlib.h>
> +#include <inttypes.h>
>   
>   #include "drm.h"
>   #include "xf86drmMode.h"
> @@ -175,7 +176,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%" PRIx64 ", domain 0x%x, size %" PRIu64 "\n",
>   		num_buffers++, addr, domain, size);
>   	return 0;
>   }
> @@ -273,7 +274,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(%" PRIx64 ") to %u(%" PRIx64 ") %" PRIu64 " bytes took %" PRIu64 " usec\n",
>   		count, from, virtual[from], to, virtual[to], copied, delta / 1000);
>   	return 0;
>   }
> @@ -293,7 +294,7 @@ uint64_t parse_size(void)
>   	char ext[2];
>   
>   	ext[0] = 0;
> -	if (sscanf(optarg, "%li%1[kmgKMG]", &size, ext) < 1) {
> +	if (sscanf(optarg, "%" PRIi64 "%1[kmgKMG]", &size, ext) < 1) {
>   		fprintf(stderr, "Can't parse size arg: %s\n", optarg);
>   		exit(EXIT_FAILURE);
>   	}
> @@ -375,7 +376,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 %" PRIu64 "\n", size);
>   				exit(EXIT_FAILURE);
>   			}
>   			r = alloc_bo(domain, size);



More information about the dri-devel mailing list