|
@@ -31,6 +31,7 @@
|
|
|
#include <linux/stop_machine.h>
|
|
|
#include <linux/zlib.h>
|
|
|
#include <drm/drm_print.h>
|
|
|
+#include <linux/ascii85.h>
|
|
|
|
|
|
#include "i915_gpu_error.h"
|
|
|
#include "i915_drv.h"
|
|
@@ -517,35 +518,12 @@ void i915_error_printf(struct drm_i915_error_state_buf *e, const char *f, ...)
|
|
|
va_end(args);
|
|
|
}
|
|
|
|
|
|
-static int
|
|
|
-ascii85_encode_len(int len)
|
|
|
-{
|
|
|
- return DIV_ROUND_UP(len, 4);
|
|
|
-}
|
|
|
-
|
|
|
-static bool
|
|
|
-ascii85_encode(u32 in, char *out)
|
|
|
-{
|
|
|
- int i;
|
|
|
-
|
|
|
- if (in == 0)
|
|
|
- return false;
|
|
|
-
|
|
|
- out[5] = '\0';
|
|
|
- for (i = 5; i--; ) {
|
|
|
- out[i] = '!' + in % 85;
|
|
|
- in /= 85;
|
|
|
- }
|
|
|
-
|
|
|
- return true;
|
|
|
-}
|
|
|
-
|
|
|
static void print_error_obj(struct drm_i915_error_state_buf *m,
|
|
|
struct intel_engine_cs *engine,
|
|
|
const char *name,
|
|
|
struct drm_i915_error_object *obj)
|
|
|
{
|
|
|
- char out[6];
|
|
|
+ char out[ASCII85_BUFSZ];
|
|
|
int page;
|
|
|
|
|
|
if (!obj)
|
|
@@ -567,12 +545,8 @@ static void print_error_obj(struct drm_i915_error_state_buf *m,
|
|
|
len -= obj->unused;
|
|
|
len = ascii85_encode_len(len);
|
|
|
|
|
|
- for (i = 0; i < len; i++) {
|
|
|
- if (ascii85_encode(obj->pages[page][i], out))
|
|
|
- err_puts(m, out);
|
|
|
- else
|
|
|
- err_puts(m, "z");
|
|
|
- }
|
|
|
+ for (i = 0; i < len; i++)
|
|
|
+ err_puts(m, ascii85_encode(obj->pages[page][i], out));
|
|
|
}
|
|
|
err_puts(m, "\n");
|
|
|
}
|