[Freedreno] [PATCH 01/10] include: Move ascii85 functions from i915 to linux/ascii85.h
Jordan Crouse
jcrouse at codeaurora.org
Thu Apr 5 22:06:53 UTC 2018
On Thu, Apr 05, 2018 at 04:00:47PM -0600, Jordan Crouse wrote:
> The i915 DRM driver very cleverly used ascii85 encoding for their
> GPU state file. Move the encode functions to a general header file to
> support other drivers that might be interested in the same
> functionality.
In a previous version of this patch, Chris asked what tree I wanted this applied
to, and the answer is: I'm not sure? I'm hoping that Rob will be cool with
picking the rest up for msm-next for 4.18 but I'm okay with putting this
particular patch wherever it is easiest for the maintainers.
Jordan
> Reviewed-by: Chris Wilson <chris at chris-wilson.co.uk>
> Signed-off-by: Jordan Crouse <jcrouse at codeaurora.org>
> drivers/gpu/drm/i915/i915_gpu_error.c | 35 ++++---------------------------
> include/linux/ascii85.h | 39 +++++++++++++++++++++++++++++++++++
> 2 files changed, 43 insertions(+), 31 deletions(-)
> create mode 100644 include/linux/ascii85.h
>
> diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c b/drivers/gpu/drm/i915/i915_gpu_error.c
> index 67c902412193..969d967e58c7 100644
> --- a/drivers/gpu/drm/i915/i915_gpu_error.c
> +++ b/drivers/gpu/drm/i915/i915_gpu_error.c
> @@ -31,7 +31,7 @@
> #include <linux/stop_machine.h>
> #include <linux/zlib.h>
> #include <drm/drm_print.h>
> -
> +#include <linux/ascii85.h>
> #include "i915_drv.h"
>
> static inline const struct intel_engine_cs *
> @@ -518,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)
> @@ -568,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++)
> + error_puts(m, ascii85_encode(obj->pages[page][i], out));
> }
> err_puts(m, "\n");
> }
> diff --git a/include/linux/ascii85.h b/include/linux/ascii85.h
> new file mode 100644
> index 000000000000..322bbed731ae
> --- /dev/null
> +++ b/include/linux/ascii85.h
> @@ -0,0 +1,39 @@
> +
> +/*
> + * SPDX-License-Identifier: GPL-2.0
> + *
> + * Copyright (c) 2008 Intel Corporation
> + * Copyright (c) The Linux Foundation. All rights reserved.
> + */
> +
> +#ifndef _ASCII85_H_
> +#define _ASCII85_H_
> +
> +#include <linux/kernel.h>
> +
> +#define ASCII85_BUFSZ 6
> +
> +static inline long
> +ascii85_encode_len(long len)
> +{
> + return DIV_ROUND_UP(len, 4);
> +}
> +
> +static inline char *
> +ascii85_encode(u32 in, char *out)
> +{
> + int i;
> +
> + if (in == 0)
> + return "z";
> +
> + out[5] = '\0';
> + for (i = 5; i--; ) {
> + out[i] = '!' + in % 85;
> + in /= 85;
> + }
> +
> + return out;
> +}
> +
> +#endif
> --
> 2.16.1
>
> _______________________________________________
> Freedreno mailing list
> Freedreno at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/freedreno
--
The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project
More information about the Freedreno
mailing list