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@xxxxxxxxxxxxxxxxxx> > Signed-off-by: Jordan Crouse <jcrouse@xxxxxxxxxxxxxx> > 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@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/freedreno -- The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel