From: Badal Nilawar <badal.nilawar@intel.com>
To: intel-xe@lists.freedesktop.org
Cc: anshuman.gupta@intel.com, john.c.harrison@intel.com
Subject: [CI 05/12] drm/xe/guc: Copy GuC log prior to dumping
Date: Fri, 20 Sep 2024 19:59:15 +0530 [thread overview]
Message-ID: <20240920142922.618649-6-badal.nilawar@intel.com> (raw)
In-Reply-To: <20240920142922.618649-1-badal.nilawar@intel.com>
From: John Harrison <John.C.Harrison@Intel.com>
Add an extra stage to the GuC log print to copy the log buffer into
regular host memory first, rather than printing the live GPU buffer
object directly. Doing so helps prevent inconsistencies due to the log
being updated as it is being dumped. It also allows the use of the
ASCII85 helper function for printing the log in a more compact form
than a straight hex dump.
v2: Use %zx instead of %lx for size_t prints.
v3: Replace hexdump code with ascii85 call (review feedback from
Matthew B). Move chunking code into next patch as that reduces the
deltas of both.
v4: Add a prefix to the ASCII85 output to aid tool parsing.
Signed-off-by: John Harrison <John.C.Harrison@Intel.com>
Reviewed-by: Julia Filipchuk <julia.filipchuk@intel.com>
---
drivers/gpu/drm/xe/xe_guc_log.c | 40 +++++++++++++++++++--------------
1 file changed, 23 insertions(+), 17 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_guc_log.c b/drivers/gpu/drm/xe/xe_guc_log.c
index a37ee3419428..be47780ec2a7 100644
--- a/drivers/gpu/drm/xe/xe_guc_log.c
+++ b/drivers/gpu/drm/xe/xe_guc_log.c
@@ -6,9 +6,12 @@
#include "xe_guc_log.h"
#include <drm/drm_managed.h>
+#include <linux/vmalloc.h>
#include "xe_bo.h"
+#include "xe_devcoredump.h"
#include "xe_gt.h"
+#include "xe_gt_printk.h"
#include "xe_map.h"
#include "xe_module.h"
@@ -49,32 +52,35 @@ static size_t guc_log_size(void)
CAPTURE_BUFFER_SIZE;
}
+/**
+ * xe_guc_log_print - dump a copy of the GuC log to some useful location
+ * @log: GuC log structure
+ * @p: the printer object to output to
+ */
void xe_guc_log_print(struct xe_guc_log *log, struct drm_printer *p)
{
struct xe_device *xe = log_to_xe(log);
size_t size;
- int i, j;
+ void *copy;
- xe_assert(xe, log->bo);
+ if (!log->bo) {
+ drm_puts(p, "GuC log buffer not allocated");
+ return;
+ }
size = log->bo->size;
-#define DW_PER_READ 128
- xe_assert(xe, !(size % (DW_PER_READ * sizeof(u32))));
- for (i = 0; i < size / sizeof(u32); i += DW_PER_READ) {
- u32 read[DW_PER_READ];
-
- xe_map_memcpy_from(xe, read, &log->bo->vmap, i * sizeof(u32),
- DW_PER_READ * sizeof(u32));
-#define DW_PER_PRINT 4
- for (j = 0; j < DW_PER_READ / DW_PER_PRINT; ++j) {
- u32 *print = read + j * DW_PER_PRINT;
-
- drm_printf(p, "0x%08x 0x%08x 0x%08x 0x%08x\n",
- *(print + 0), *(print + 1),
- *(print + 2), *(print + 3));
- }
+ copy = vmalloc(size);
+ if (!copy) {
+ drm_printf(p, "Failed to allocate %zu", size);
+ return;
}
+
+ xe_map_memcpy_from(xe, copy, &log->bo->vmap, 0, size);
+
+ xe_print_blob_ascii85(p, "Log data", copy, 0, size);
+
+ vfree(copy);
}
int xe_guc_log_init(struct xe_guc_log *log)
--
2.34.1
next prev parent reply other threads:[~2024-09-20 14:09 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-20 14:29 [CI 00/12] Debug g2h timeout issue Badal Nilawar
2024-09-20 14:29 ` [CI 01/12] drm/xe/guc: Remove spurious line feed in debug print Badal Nilawar
2024-09-20 14:29 ` [CI 02/12] drm/xe/devcoredump: Use drm_puts and already cached local variables Badal Nilawar
2024-09-20 14:29 ` [CI 03/12] drm/xe/devcoredump: Improve section headings and add tile info Badal Nilawar
2024-09-20 14:29 ` [CI 04/12] drm/xe/devcoredump: Add ASCII85 dump helper function Badal Nilawar
2024-09-20 14:29 ` Badal Nilawar [this message]
2024-09-20 14:29 ` [CI 06/12] drm/xe/guc: Use a two stage dump for GuC logs and add more info Badal Nilawar
2024-09-20 14:29 ` [CI 07/12] drm/print: Introduce drm_line_printer Badal Nilawar
2024-09-20 14:29 ` [CI 08/12] drm/xe/guc: Dead CT helper Badal Nilawar
2024-09-20 14:29 ` [CI 09/12] drm/xe/guc: Dump entire CTB on errors Badal Nilawar
2024-09-20 14:29 ` [CI 10/12] drm/xe/guc: Add GuC log to devcoredump captures Badal Nilawar
2024-09-20 14:29 ` [CI 11/12] drm/xe/guc: Add a helper function for dumping GuC log to dmesg Badal Nilawar
2024-09-20 14:29 ` [CI 12/12] [For CI] Debug prints/logs to debug G2H timeout issue Badal Nilawar
2024-09-23 17:09 ` John Harrison
2024-09-20 14:48 ` [CI 00/12] Debug g2h " Jani Nikula
2024-09-23 19:45 ` John Harrison
2024-09-26 18:55 ` Rodrigo Vivi
2024-09-27 17:50 ` Nilawar, Badal
2024-09-20 15:24 ` ✓ CI.Patch_applied: success for " Patchwork
2024-09-20 15:24 ` ✗ CI.checkpatch: warning " Patchwork
2024-09-20 15:25 ` ✓ CI.KUnit: success " Patchwork
2024-09-20 15:37 ` ✓ CI.Build: " Patchwork
2024-09-20 15:39 ` ✓ CI.Hooks: " Patchwork
2024-09-20 15:41 ` ✗ CI.checksparse: warning " Patchwork
2024-09-20 16:10 ` ✓ CI.BAT: success " Patchwork
2024-09-20 21:21 ` ✓ CI.FULL: " Patchwork
-- strict thread matches above, loose matches on Subject: below --
2024-09-20 14:06 [[CI] 00/12] " bnilawar
2024-09-20 14:06 ` [[CI] 05/12] drm/xe/guc: Copy GuC log prior to dumping bnilawar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240920142922.618649-6-badal.nilawar@intel.com \
--to=badal.nilawar@intel.com \
--cc=anshuman.gupta@intel.com \
--cc=intel-xe@lists.freedesktop.org \
--cc=john.c.harrison@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox