diff mbox series

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

Message ID 8ffa3be3dc7b27345dde3bb32498c4cd3af050fa.1688632590.git.geert+renesas@glider.be (mailing list archive)
State New, archived
Headers show
Series [libdrm,v2] amdgpu: Use PRI?64 to format uint64_t | expand

Commit Message

Geert Uytterhoeven July 6, 2023, 8:36 a.m. UTC
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@glider.be>
---
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(-)

Comments

Christian König July 7, 2023, 12:06 p.m. UTC | #1
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@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);
Geert Uytterhoeven July 7, 2023, 7:36 p.m. UTC | #2
Hi Christian,

On Fri, Jul 7, 2023 at 2:06 PM Christian König
<ckoenig.leichtzumerken@gmail.com> wrote:
> 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);
> >                        ~~~~

[...]

> > 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@glider.be>
>
> Well generally good patch, but libdrm changes are now reviewed by merge
> request and not on the mailing list any more.

I heard such a rumor, too ;-)

Unfortunately one year later, that process is still not documented in
https://gitlab.freedesktop.org/mesa/drm/-/blob/main/CONTRIBUTING.rst
which still instructs me (a casual drive-by developer) to just submit
my patches to the mailing list...

Thanks!

Gr{oetje,eeting}s,

                        Geert
Geert Uytterhoeven Aug. 21, 2023, 9:14 a.m. UTC | #3
Hi Christian,

On Fri, Jul 7, 2023 at 9:36 PM Geert Uytterhoeven <geert@linux-m68k.org> wrote:
> On Fri, Jul 7, 2023 at 2:06 PM Christian König
> <ckoenig.leichtzumerken@gmail.com> wrote:
> > 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);
> > >                        ~~~~
>
> [...]
>
> > > 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@glider.be>
> >
> > Well generally good patch, but libdrm changes are now reviewed by merge
> > request and not on the mailing list any more.
>
> I heard such a rumor, too ;-)
>
> Unfortunately one year later, that process is still not documented in
> https://gitlab.freedesktop.org/mesa/drm/-/blob/main/CONTRIBUTING.rst
> which still instructs me (a casual drive-by developer) to just submit
> my patches to the mailing list...

So a few weeks ago I created gitlab PRs for all my pending libdrm
patch series, and I rebased them regularly when needed.
What needs to be done to get them merged?

Thanks!

Gr{oetje,eeting}s,

                        Geert
Christian König Aug. 21, 2023, 9:33 a.m. UTC | #4
Am 21.08.23 um 11:14 schrieb Geert Uytterhoeven:
> Hi Christian,
>
> On Fri, Jul 7, 2023 at 9:36 PM Geert Uytterhoeven <geert@linux-m68k.org> wrote:
>> On Fri, Jul 7, 2023 at 2:06 PM Christian König
>> <ckoenig.leichtzumerken@gmail.com> wrote:
>>> 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);
>>>>                         ~~~~
>> [...]
>>
>>>> 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@glider.be>
>>> Well generally good patch, but libdrm changes are now reviewed by merge
>>> request and not on the mailing list any more.
>> I heard such a rumor, too ;-)
>>
>> Unfortunately one year later, that process is still not documented in
>> https://gitlab.freedesktop.org/mesa/drm/-/blob/main/CONTRIBUTING.rst
>> which still instructs me (a casual drive-by developer) to just submit
>> my patches to the mailing list...
> So a few weeks ago I created gitlab PRs for all my pending libdrm
> patch series, and I rebased them regularly when needed.
> What needs to be done to get them merged?

You need to ping the userspace maintainers for this. Like Marek, 
Pierre-Eric etc..

Regards,
Christian.

>
> Thanks!
>
> Gr{oetje,eeting}s,
>
>                          Geert
>
Geert Uytterhoeven Aug. 21, 2023, 9:48 a.m. UTC | #5
Hi Christian,

On Mon, Aug 21, 2023 at 11:34 AM Christian König
<christian.koenig@amd.com> wrote:
> Am 21.08.23 um 11:14 schrieb Geert Uytterhoeven:
> > On Fri, Jul 7, 2023 at 9:36 PM Geert Uytterhoeven <geert@linux-m68k.org> wrote:
> >> On Fri, Jul 7, 2023 at 2:06 PM Christian König
> >> <ckoenig.leichtzumerken@gmail.com> wrote:
> >>> 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);
> >>>>                         ~~~~
> >> [...]
> >>
> >>>> 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@glider.be>
> >>> Well generally good patch, but libdrm changes are now reviewed by merge
> >>> request and not on the mailing list any more.
> >> I heard such a rumor, too ;-)
> >>
> >> Unfortunately one year later, that process is still not documented in
> >> https://gitlab.freedesktop.org/mesa/drm/-/blob/main/CONTRIBUTING.rst
> >> which still instructs me (a casual drive-by developer) to just submit
> >> my patches to the mailing list...
> > So a few weeks ago I created gitlab PRs for all my pending libdrm
> > patch series, and I rebased them regularly when needed.
> > What needs to be done to get them merged?
>
> You need to ping the userspace maintainers for this. Like Marek,
> Pierre-Eric etc..

Thanks, I assume (from "git shortlog") you mean Marek Olšák and
Pierre-Eric Pelloux-Prayer?
How do I find out the maintainers for non-amd parts?

Looks like this thread is becoming a "what is missing in
CONTRIBUTING.rst?" list ;-)

Thanks again!

Gr{oetje,eeting}s,

                        Geert
Christian König Aug. 21, 2023, 11:07 a.m. UTC | #6
Am 21.08.23 um 11:48 schrieb Geert Uytterhoeven:
> Hi Christian,
>
> On Mon, Aug 21, 2023 at 11:34 AM Christian König
> <christian.koenig@amd.com> wrote:
>> Am 21.08.23 um 11:14 schrieb Geert Uytterhoeven:
>>> On Fri, Jul 7, 2023 at 9:36 PM Geert Uytterhoeven <geert@linux-m68k.org> wrote:
>>>> On Fri, Jul 7, 2023 at 2:06 PM Christian König
>>>> <ckoenig.leichtzumerken@gmail.com> wrote:
>>>>> 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);
>>>>>>                          ~~~~
>>>> [...]
>>>>
>>>>>> 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@glider.be>
>>>>> Well generally good patch, but libdrm changes are now reviewed by merge
>>>>> request and not on the mailing list any more.
>>>> I heard such a rumor, too ;-)
>>>>
>>>> Unfortunately one year later, that process is still not documented in
>>>> https://gitlab.freedesktop.org/mesa/drm/-/blob/main/CONTRIBUTING.rst
>>>> which still instructs me (a casual drive-by developer) to just submit
>>>> my patches to the mailing list...
>>> So a few weeks ago I created gitlab PRs for all my pending libdrm
>>> patch series, and I rebased them regularly when needed.
>>> What needs to be done to get them merged?
>> You need to ping the userspace maintainers for this. Like Marek,
>> Pierre-Eric etc..
> Thanks, I assume (from "git shortlog") you mean Marek Olšák and
> Pierre-Eric Pelloux-Prayer?

Yes, of course.

> How do I find out the maintainers for non-amd parts?

That's a really good question, I don't have the slightest idea either. 
My approach getting libdrm patches upstream used to be asking somebody 
for review and then pushing them.

But that was way before switching to merge requests. Since then I have 
at maximum merged a handful of patches.

>
> Looks like this thread is becoming a "what is missing in
> CONTRIBUTING.rst?" list ;-)

Indeed!

Cheers,
Christian.

>
> Thanks again!
>
> Gr{oetje,eeting}s,
>
>                          Geert
>
diff mbox series

Patch

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);