<div dir="ltr">I also have no problems with this from the Bifrost facing side.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Apr 2, 2019 at 7:25 PM Tomeu Vizoso <<a href="mailto:tomeu.vizoso@collabora.com">tomeu.vizoso@collabora.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 4/1/19 2:16 AM, Alyssa Rosenzweig wrote:<br>
> Previously, there was minimal support for interoperating with legacy<br>
> kernels (reusing kernel modules originally designed for proprietary<br>
> legacy userspaces, rather than for upstream-friendly free software<br>
> stacks). Now that the Panfrost kernel is stabilising, this commit drops<br>
> the legacy code path.<br>
> <br>
> Panfrost users need to use a modern, mainline kernel supporting the<br>
> Panfrost kernel driver from this commit forward.<br>
<br>
Sounds good to me. This will make it easier to refactor code around and I <br>
don't think I will need any more register dumps from kbase any more (and <br>
if so, I can always go back in time).<br>
<br>
Reviewed-by: Tomeu Vizoso <<a href="mailto:tomeu.vizoso@collabora.com" target="_blank">tomeu.vizoso@collabora.com</a>><br>
<br>
Thanks!<br>
<br>
Tomeu<br>
<br>
> Signed-off-by: Alyssa Rosenzweig <<a href="mailto:alyssa@rosenzweig.io" target="_blank">alyssa@rosenzweig.io</a>><br>
> Cc: Tomeu Vizoso <<a href="mailto:tomeu.vizoso@collabora.com" target="_blank">tomeu.vizoso@collabora.com</a>><br>
> Cc: Rob Herring <<a href="mailto:robh@kernel.org" target="_blank">robh@kernel.org</a>><br>
> ---<br>
>   src/gallium/drivers/panfrost/.gitignore            |  1 -<br>
>   src/gallium/drivers/panfrost/meson.build           | 10 ----------<br>
>   src/gallium/drivers/panfrost/pan_drm.c             |  1 -<br>
>   src/gallium/drivers/panfrost/pan_public.h          |  2 +-<br>
>   src/gallium/drivers/panfrost/pan_screen.c          | 14 ++------------<br>
>   src/gallium/winsys/kmsro/drm/kmsro_drm_winsys.c    | 11 +----------<br>
>   .../winsys/panfrost/drm/panfrost_drm_public.h      |  2 +-<br>
>   .../winsys/panfrost/drm/panfrost_drm_winsys.c      |  6 +++---<br>
>   8 files changed, 8 insertions(+), 39 deletions(-)<br>
> <br>
> diff --git a/src/gallium/drivers/panfrost/.gitignore b/src/gallium/drivers/panfrost/.gitignore<br>
> index 9d2c2c18bef..e69de29bb2d 100644<br>
> --- a/src/gallium/drivers/panfrost/.gitignore<br>
> +++ b/src/gallium/drivers/panfrost/.gitignore<br>
> @@ -1 +0,0 @@<br>
> -nondrm<br>
> diff --git a/src/gallium/drivers/panfrost/meson.build b/src/gallium/drivers/panfrost/meson.build<br>
> index e3569e73468..371a11a934b 100644<br>
> --- a/src/gallium/drivers/panfrost/meson.build<br>
> +++ b/src/gallium/drivers/panfrost/meson.build<br>
> @@ -62,16 +62,6 @@ compile_args_panfrost = [<br>
>     '-Wno-pointer-arith'<br>
>   ]<br>
>   <br>
> -overlay = join_paths(meson.source_root(), meson.current_source_dir(), 'nondrm/pan_nondrm.c')<br>
> -nondrm_overlay_check = run_command('ls', overlay)<br>
> -has_nondrm_overlay = nondrm_overlay_check.returncode() == 0<br>
> -<br>
> -if has_nondrm_overlay<br>
> -  files_panfrost += files('nondrm/pan_nondrm.c')<br>
> -  inc_panfrost += include_directories('nondrm/include')<br>
> -  compile_args_panfrost += '-DPAN_NONDRM_OVERLAY'<br>
> -endif<br>
> -<br>
>   midgard_nir_algebraic_c = custom_target(<br>
>     'midgard_nir_algebraic.c',<br>
>     input : 'midgard/midgard_nir_algebraic.py',<br>
> diff --git a/src/gallium/drivers/panfrost/pan_drm.c b/src/gallium/drivers/panfrost/pan_drm.c<br>
> index c30beaf2b50..4b8c197be0e 100644<br>
> --- a/src/gallium/drivers/panfrost/pan_drm.c<br>
> +++ b/src/gallium/drivers/panfrost/pan_drm.c<br>
> @@ -298,7 +298,6 @@ panfrost_drm_force_flush_fragment(struct panfrost_context *ctx,<br>
>           struct pipe_context *gallium = (struct pipe_context *) ctx;<br>
>           struct panfrost_screen *screen = pan_screen(gallium->screen);<br>
>           struct panfrost_drm *drm = (struct panfrost_drm *)screen->driver;<br>
> -        int ret;<br>
>   <br>
>           if (!screen->last_fragment_flushed) {<br>
>               drmSyncobjWait(drm->fd, &ctx->out_sync, 1, INT64_MAX, 0, NULL);<br>
> diff --git a/src/gallium/drivers/panfrost/pan_public.h b/src/gallium/drivers/panfrost/pan_public.h<br>
> index f57fd6157f4..c7e72f94246 100644<br>
> --- a/src/gallium/drivers/panfrost/pan_public.h<br>
> +++ b/src/gallium/drivers/panfrost/pan_public.h<br>
> @@ -32,7 +32,7 @@ struct pipe_screen;<br>
>   struct renderonly;<br>
>   <br>
>   struct pipe_screen *<br>
> -panfrost_create_screen(int fd, struct renderonly *ro, bool is_drm);<br>
> +panfrost_create_screen(int fd, struct renderonly *ro);<br>
>   <br>
>   #ifdef __cplusplus<br>
>   }<br>
> diff --git a/src/gallium/drivers/panfrost/pan_screen.c b/src/gallium/drivers/panfrost/pan_screen.c<br>
> index 682eb37f5c7..71c6175d069 100644<br>
> --- a/src/gallium/drivers/panfrost/pan_screen.c<br>
> +++ b/src/gallium/drivers/panfrost/pan_screen.c<br>
> @@ -63,7 +63,6 @@ DEBUG_GET_ONCE_FLAGS_OPTION(pan_debug, "PAN_MESA_DEBUG", debug_options, 0)<br>
>   int pan_debug = 0;<br>
>   <br>
>   struct panfrost_driver *panfrost_create_drm_driver(int fd);<br>
> -struct panfrost_driver *panfrost_create_nondrm_driver(int fd);<br>
>   <br>
>   const char *pan_counters_base = NULL;<br>
>   <br>
> @@ -549,7 +548,7 @@ panfrost_screen_get_compiler_options(struct pipe_screen *pscreen,<br>
>   }<br>
>   <br>
>   struct pipe_screen *<br>
> -panfrost_create_screen(int fd, struct renderonly *ro, bool is_drm)<br>
> +panfrost_create_screen(int fd, struct renderonly *ro)<br>
>   {<br>
>           struct panfrost_screen *screen = CALLOC_STRUCT(panfrost_screen);<br>
>   <br>
> @@ -567,16 +566,7 @@ panfrost_create_screen(int fd, struct renderonly *ro, bool is_drm)<br>
>                   }<br>
>           }<br>
>   <br>
> -        if (is_drm) {<br>
> -                screen->driver = panfrost_create_drm_driver(fd);<br>
> -        } else {<br>
> -#ifdef PAN_NONDRM_OVERLAY<br>
> -                screen->driver = panfrost_create_nondrm_driver(fd);<br>
> -#else<br>
> -                fprintf(stderr, "Legacy (non-DRM) operation requires out-of-tree overlay\n");<br>
> -                return NULL;<br>
> -#endif<br>
> -        }<br>
> +        screen->driver = panfrost_create_drm_driver(fd);<br>
>   <br>
>           /* Dump memory and/or performance counters iff asked for in the environment */<br>
>           const char *pantrace_base = getenv("PANTRACE_BASE");<br>
> diff --git a/src/gallium/winsys/kmsro/drm/kmsro_drm_winsys.c b/src/gallium/winsys/kmsro/drm/kmsro_drm_winsys.c<br>
> index 7752474f8aa..59f2c28a2eb 100644<br>
> --- a/src/gallium/winsys/kmsro/drm/kmsro_drm_winsys.c<br>
> +++ b/src/gallium/winsys/kmsro/drm/kmsro_drm_winsys.c<br>
> @@ -86,18 +86,9 @@ struct pipe_screen *kmsro_drm_screen_create(int fd)<br>
>   #if defined(GALLIUM_PANFROST)<br>
>      ro.gpu_fd = drmOpenWithType("panfrost", NULL, DRM_NODE_RENDER);<br>
>   <br>
> -   bool is_drm = true;<br>
> -   if (ro.gpu_fd < 0) {<br>
> -      /* For compatibility with legacy kernels, fallback on the non-DRM<br>
> -       * interface */<br>
> -<br>
> -      ro.gpu_fd = open("/dev/mali0", O_RDWR | O_CLOEXEC);<br>
> -      is_drm = false;<br>
> -   }<br>
> -<br>
>      if (ro.gpu_fd >= 0) {<br>
>         ro.create_for_resource = renderonly_create_kms_dumb_buffer_for_resource,<br>
> -      screen = panfrost_drm_screen_create_renderonly(&ro, is_drm);<br>
> +      screen = panfrost_drm_screen_create_renderonly(&ro);<br>
>         if (!screen)<br>
>            close(ro.gpu_fd);<br>
>   <br>
> diff --git a/src/gallium/winsys/panfrost/drm/panfrost_drm_public.h b/src/gallium/winsys/panfrost/drm/panfrost_drm_public.h<br>
> index 4709c429b96..8568ffd8de5 100644<br>
> --- a/src/gallium/winsys/panfrost/drm/panfrost_drm_public.h<br>
> +++ b/src/gallium/winsys/panfrost/drm/panfrost_drm_public.h<br>
> @@ -31,6 +31,6 @@ struct pipe_screen;<br>
>   struct renderonly;<br>
>   <br>
>   struct pipe_screen *panfrost_drm_screen_create(int drmFD);<br>
> -struct pipe_screen *panfrost_drm_screen_create_renderonly(struct renderonly *ro, bool is_drm);<br>
> +struct pipe_screen *panfrost_drm_screen_create_renderonly(struct renderonly *ro);<br>
>   <br>
>   #endif /* __PAN_DRM_PUBLIC_H__ */<br>
> diff --git a/src/gallium/winsys/panfrost/drm/panfrost_drm_winsys.c b/src/gallium/winsys/panfrost/drm/panfrost_drm_winsys.c<br>
> index 7d08743e23c..1852e1c662a 100644<br>
> --- a/src/gallium/winsys/panfrost/drm/panfrost_drm_winsys.c<br>
> +++ b/src/gallium/winsys/panfrost/drm/panfrost_drm_winsys.c<br>
> @@ -32,11 +32,11 @@<br>
>   struct pipe_screen *<br>
>   panfrost_drm_screen_create(int fd)<br>
>   {<br>
> -   return panfrost_create_screen(fcntl(fd, F_DUPFD_CLOEXEC, 3), NULL, true);<br>
> +   return panfrost_create_screen(fcntl(fd, F_DUPFD_CLOEXEC, 3), NULL);<br>
>   }<br>
>   <br>
>   struct pipe_screen *<br>
> -panfrost_drm_screen_create_renderonly(struct renderonly *ro, bool is_drm)<br>
> +panfrost_drm_screen_create_renderonly(struct renderonly *ro)<br>
>   {<br>
> -   return panfrost_create_screen(fcntl(ro->gpu_fd, F_DUPFD_CLOEXEC, 3), ro, is_drm);<br>
> +   return panfrost_create_screen(fcntl(ro->gpu_fd, F_DUPFD_CLOEXEC, 3), ro);<br>
>   }<br>
> <br>
_______________________________________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org" target="_blank">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/mesa-dev</a></blockquote></div>