On Thu, 21 Feb 2013 22:05:33 -0800
Ben Widawsky <b...@bwidawsk.net> wrote:

> With the introduction of the forcewake dance:
> 
> commit cac8f8b52621f246a7cff412f340a7db28cb1b99
> Author: Ben Widawsky <b...@bwidawsk.net>
> Date:   Thu Jul 28 13:40:19 2011 -0700
> 
>     forcewake: Add mmio code to do proper forcewake stuff for gen6
> 
> We lost the ability to do register access when either debugfs isn't
> mounted, or when the driver isn't loaded. The latter can be beneficial
> in debugging situations.
> 
> This patch will allow the driver to still do mmio (leaving forcewake
> management up to the callers) provided that the i915 driver appears to
> not be loaded (according to sysfs)
> 
> Requested by Jesse.
> 
> Cc: Jesse Barnes <jbar...@virtuousgeek.org>
> Signed-off-by: Ben Widawsky <b...@bwidawsk.net>
> ---
>  lib/intel_mmio.c | 30 ++++++++++++++++++++++++++----
>  1 file changed, 26 insertions(+), 4 deletions(-)
> 
> diff --git a/lib/intel_mmio.c b/lib/intel_mmio.c
> index 2281037..3933080 100644
> --- a/lib/intel_mmio.c
> +++ b/lib/intel_mmio.c
> @@ -43,6 +43,8 @@
>  
>  #include "intel_gpu_tools.h"
>  
> +#define FAKEKEY 0x2468ace0
> +
>  void *mmio;
>  
>  static struct _mmio_data {
> @@ -153,6 +155,22 @@ release_forcewake_lock(int fd)
>       close(fd);
>  }
>  
> +/* Dumb check to see if i915 was loaded */
> +static bool
> +i915_loaded(void)
> +{
> +     struct stat sb;
> +     int ret;
> +
> +     ret = stat("/sys/module/i915/", &sb);
> +     if (ret) {
> +             return false;
> +     }
> +
> +     assert(S_ISDIR(sb.st_mode));
> +     return true;
> +}
> +
>  /*
>   * Initialize register access library.
>   *
> @@ -188,10 +206,14 @@ intel_register_access_init(struct pci_device *pci_dev, 
> int safe)
>               ret = find_debugfs_path("/debug/dri");
>               if (ret) {
>                       fprintf(stderr, "Couldn't find path to dri/debugfs 
> entry\n");
> -                     return ret;
> +                     if (i915_loaded()) {
> +                             fprintf(stderr, "i915 loaded; not 
> proceeding.\n");
> +                             return ret;
> +                     }
>               }
> -     }
> -     mmio_data.key = get_forcewake_lock();
> +             mmio_data.key = FAKEKEY;
> +     } else
> +             mmio_data.key = get_forcewake_lock();
>  
>  done:
>       mmio_data.inited++;
> @@ -201,7 +223,7 @@ done:
>  void
>  intel_register_access_fini(void)
>  {
> -     if (mmio_data.key)
> +     if (mmio_data.key && mmio_data.key != FAKEKEY)
>               release_forcewake_lock(mmio_data.key);
>       mmio_data.inited--;
>  }

Cool thanks.  So it looks like it'll bail out if you've loaded i915 but
debugfs isn't mounted?  I guess that's fine; in that case we really do
want to do the forcewake thing...

-- 
Jesse Barnes, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to