[6/6] intel_aubdump: Add --no-exec command option
diff mbox

Message ID 20170914011100.7743-6-jordan.l.justen@intel.com
State New
Headers show

Commit Message

Jordan Justen Sept. 14, 2017, 1:11 a.m. UTC
In some cases it is preferable to not send exec commands to the
kernel, but to otherwise record the exec command into the AUB file.

For example, when using the --device override option, it might be best
to avoid passing the EXEC ioctls through to the kernel.

Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
---
 tools/aubdump.c        | 13 +++++++++++--
 tools/intel_aubdump.in |  7 +++++++
 2 files changed, 18 insertions(+), 2 deletions(-)

Comments

Jordan Justen Sept. 14, 2017, 1:23 a.m. UTC | #1
On 2017-09-13 18:11:00, Jordan Justen wrote:
> In some cases it is preferable to not send exec commands to the
> kernel, but to otherwise record the exec command into the AUB file.
> 
> For example, when using the --device override option, it might be best
> to avoid passing the EXEC ioctls through to the kernel.
> 
> Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
> ---
>  tools/aubdump.c        | 13 +++++++++++--
>  tools/intel_aubdump.in |  7 +++++++
>  2 files changed, 18 insertions(+), 2 deletions(-)
> 
> diff --git a/tools/aubdump.c b/tools/aubdump.c
> index 4392e589..6961cd51 100644
> --- a/tools/aubdump.c
> +++ b/tools/aubdump.c
> @@ -58,6 +58,7 @@ static int gen = 0;
>  static int verbose = 0;
>  static bool device_override;
>  static uint32_t device;
> +static bool no_exec = false;
>  
>  #define MAX_BO_COUNT 64 * 1024
>  
> @@ -567,6 +568,8 @@ maybe_init(void)
>                                 "intel_aubdump: failed to parse device id '%s'",
>                                 value);
>                         device_override = true;
> +               } else if (!strcmp(key, "no_exec")) {
> +                       no_exec = true;
>                 } else if (!strcmp(key, "file")) {
>                         filename = strdup(value);
>                         files[0] = fopen(filename, "w+");
> @@ -645,7 +648,10 @@ ioctl(int fd, unsigned long request, ...)
>                                         "application uses DRM_IOCTL_I915_GEM_EXECBUFFER, not handled\n");
>                                 once = true;
>                         }
> -                       return libc_ioctl(fd, request, argp);
> +                       if (verbose && no_exec)
> +                               printf("Skipping DRM_IOCTL_I915_GEM_EXECBUFFER "
> +                                      "ioctl (--no-exec)\n");
> +                       return no_exec ? 0 : libc_ioctl(fd, request, argp);
>                 }
>  
>                 case DRM_IOCTL_I915_GEM_EXECBUFFER2:
> @@ -654,7 +660,10 @@ ioctl(int fd, unsigned long request, ...)
>                         if (device_override)
>                                 return 0;

Hmm, I guess I just looked at the DRM_IOCTL_I915_GEM_EXECBUFFER case
and then glossed over the fact that DRM_IOCTL_I915_GEM_EXECBUFFER2
already skips exec when --device is used.

So, this patch should be dropped...

I guess the other meson ones might be useful.

-Jordan

>  
> -                       return libc_ioctl(fd, request, argp);
> +                       if (verbose && no_exec)
> +                               printf("Skipping DRM_IOCTL_I915_GEM_EXECBUFFER2 "
> +                                      "ioctl (--no-exec)\n");
> +                       return no_exec ? 0 : libc_ioctl(fd, request, argp);
>                 }
>  
>                 case DRM_IOCTL_I915_GEM_CREATE: {
> diff --git a/tools/intel_aubdump.in b/tools/intel_aubdump.in
> index 8bc6b19d..ce77c849 100755
> --- a/tools/intel_aubdump.in
> +++ b/tools/intel_aubdump.in
> @@ -15,6 +15,9 @@ contents and execution of the GEM application.
>  
>        --device=ID    Override PCI ID of the reported device
>  
> +  -n, --no-exec      Record exec commands in the AUB file, but don't send
> +                     them to the kernel
> +
>    -v                 Enable verbose output
>  
>        --help         Display this help message and exit
> @@ -79,6 +82,10 @@ while true; do
>               add_arg "device=${1##--device=}"
>               shift
>               ;;
> +         -n|--no-exec)
> +             add_arg "no_exec=1"
> +             shift
> +             ;;
>           --help)
>               show_help
>               ;;
> -- 
> 2.14.1
>

Patch
diff mbox

diff --git a/tools/aubdump.c b/tools/aubdump.c
index 4392e589..6961cd51 100644
--- a/tools/aubdump.c
+++ b/tools/aubdump.c
@@ -58,6 +58,7 @@  static int gen = 0;
 static int verbose = 0;
 static bool device_override;
 static uint32_t device;
+static bool no_exec = false;
 
 #define MAX_BO_COUNT 64 * 1024
 
@@ -567,6 +568,8 @@  maybe_init(void)
 				"intel_aubdump: failed to parse device id '%s'",
 				value);
 			device_override = true;
+		} else if (!strcmp(key, "no_exec")) {
+			no_exec = true;
 		} else if (!strcmp(key, "file")) {
 			filename = strdup(value);
 			files[0] = fopen(filename, "w+");
@@ -645,7 +648,10 @@  ioctl(int fd, unsigned long request, ...)
 					"application uses DRM_IOCTL_I915_GEM_EXECBUFFER, not handled\n");
 				once = true;
 			}
-			return libc_ioctl(fd, request, argp);
+			if (verbose && no_exec)
+				printf("Skipping DRM_IOCTL_I915_GEM_EXECBUFFER "
+				       "ioctl (--no-exec)\n");
+			return no_exec ? 0 : libc_ioctl(fd, request, argp);
 		}
 
 		case DRM_IOCTL_I915_GEM_EXECBUFFER2:
@@ -654,7 +660,10 @@  ioctl(int fd, unsigned long request, ...)
 			if (device_override)
 				return 0;
 
-			return libc_ioctl(fd, request, argp);
+			if (verbose && no_exec)
+				printf("Skipping DRM_IOCTL_I915_GEM_EXECBUFFER2 "
+				       "ioctl (--no-exec)\n");
+			return no_exec ? 0 : libc_ioctl(fd, request, argp);
 		}
 
 		case DRM_IOCTL_I915_GEM_CREATE: {
diff --git a/tools/intel_aubdump.in b/tools/intel_aubdump.in
index 8bc6b19d..ce77c849 100755
--- a/tools/intel_aubdump.in
+++ b/tools/intel_aubdump.in
@@ -15,6 +15,9 @@  contents and execution of the GEM application.
 
       --device=ID    Override PCI ID of the reported device
 
+  -n, --no-exec      Record exec commands in the AUB file, but don't send
+                     them to the kernel
+
   -v                 Enable verbose output
 
       --help         Display this help message and exit
@@ -79,6 +82,10 @@  while true; do
 	      add_arg "device=${1##--device=}"
 	      shift
 	      ;;
+	  -n|--no-exec)
+	      add_arg "no_exec=1"
+	      shift
+	      ;;
 	  --help)
 	      show_help
 	      ;;