Hi Lionel,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on drm-intel/for-linux-next]
[cannot apply to v5.3-rc8 next-20190904]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:    
https://github.com/0day-ci/linux/commits/Lionel-Landwerlin/drm-i915-Vulkan-performance-query-support/20190907-052009
base:   git://anongit.freedesktop.org/drm-intel for-linux-next
config: x86_64-randconfig-f004-201936 (attached as .config)
compiler: gcc-7 (Debian 7.4.0-11) 7.4.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <l...@intel.com>

All errors (new ones prefixed by >>):

   drivers/gpu/drm/i915/i915_perf.c: In function 'i915_oa_stream_init':
>> drivers/gpu/drm/i915/i915_perf.c:2697:3: error: ignoring return value of 
>> 'i915_active_request_retire', declared with attribute warn_unused_result 
>> [-Werror=unused-result]
      i915_active_request_retire(&stream->active_config_rq, 0,
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            &stream->config_mutex);
            ~~~~~~~~~~~~~~~~~~~~~~
   cc1: all warnings being treated as errors

vim +/i915_active_request_retire +2697 drivers/gpu/drm/i915/i915_perf.c

  2556  
  2557  /**
  2558   * i915_oa_stream_init - validate combined props for OA stream and init
  2559   * @stream: An i915 perf stream
  2560   * @param: The open parameters passed to `DRM_I915_PERF_OPEN`
  2561   * @props: The property state that configures stream (individually 
validated)
  2562   *
  2563   * While read_properties_unlocked() validates properties in isolation it
  2564   * doesn't ensure that the combination necessarily makes sense.
  2565   *
  2566   * At this point it has been determined that userspace wants a stream of
  2567   * OA metrics, but still we need to further validate the combined
  2568   * properties are OK.
  2569   *
  2570   * If the configuration makes sense then we can allocate memory for
  2571   * a circular OA buffer and apply the requested metric set 
configuration.
  2572   *
  2573   * Returns: zero on success or a negative error code.
  2574   */
  2575  static int i915_oa_stream_init(struct i915_perf_stream *stream,
  2576                                 struct drm_i915_perf_open_param *param,
  2577                                 struct perf_open_properties *props)
  2578  {
  2579          struct drm_i915_private *dev_priv = stream->dev_priv;
  2580          int format_size;
  2581          int ret;
  2582  
  2583          /* If the sysfs metrics/ directory wasn't registered for some
  2584           * reason then don't let userspace try their luck with config
  2585           * IDs
  2586           */
  2587          if (!dev_priv->perf.metrics_kobj) {
  2588                  DRM_DEBUG("OA metrics weren't advertised via sysfs\n");
  2589                  return -EINVAL;
  2590          }
  2591  
  2592          if (!(props->sample_flags & SAMPLE_OA_REPORT)) {
  2593                  DRM_DEBUG("Only OA report sampling supported\n");
  2594                  return -EINVAL;
  2595          }
  2596  
  2597          if (!dev_priv->perf.ops.enable_metric_set) {
  2598                  DRM_DEBUG("OA unit not supported\n");
  2599                  return -ENODEV;
  2600          }
  2601  
  2602          /* To avoid the complexity of having to accurately filter
  2603           * counter reports and marshal to the appropriate client
  2604           * we currently only allow exclusive access
  2605           */
  2606          if (dev_priv->perf.exclusive_stream) {
  2607                  DRM_DEBUG("OA unit already in use\n");
  2608                  return -EBUSY;
  2609          }
  2610  
  2611          if (!props->oa_format) {
  2612                  DRM_DEBUG("OA report format not specified\n");
  2613                  return -EINVAL;
  2614          }
  2615  
  2616          mutex_init(&stream->config_mutex);
  2617  
  2618          stream->sample_size = sizeof(struct 
drm_i915_perf_record_header);
  2619  
  2620          format_size = dev_priv->perf.oa_formats[props->oa_format].size;
  2621  
  2622          stream->engine = props->engine;
  2623  
  2624          INIT_ACTIVE_REQUEST(&stream->active_config_rq,
  2625                              &stream->config_mutex);
  2626  
  2627          stream->sample_flags |= SAMPLE_OA_REPORT;
  2628          stream->sample_size += format_size;
  2629  
  2630          stream->oa_buffer.format_size = format_size;
  2631          if (WARN_ON(stream->oa_buffer.format_size == 0))
  2632                  return -EINVAL;
  2633  
  2634          stream->oa_buffer.format =
  2635                  dev_priv->perf.oa_formats[props->oa_format].format;
  2636  
  2637          stream->periodic = props->oa_periodic;
  2638          if (stream->periodic)
  2639                  stream->period_exponent = props->oa_period_exponent;
  2640  
  2641          if (stream->ctx) {
  2642                  ret = oa_get_render_ctx_id(stream);
  2643                  if (ret) {
  2644                          DRM_DEBUG("Invalid context id to filter 
with\n");
  2645                          return ret;
  2646                  }
  2647          }
  2648  
  2649          ret = alloc_noa_wait(stream);
  2650          if (ret) {
  2651                  DRM_DEBUG("Unable to allocate NOA wait batch buffer\n");
  2652                  goto err_noa_wait_alloc;
  2653          }
  2654  
  2655          ret = i915_perf_get_oa_config_and_bo(stream, props->metrics_set,
  2656                                               &stream->oa_config,
  2657                                               
&stream->initial_oa_config_bo);
  2658          if (ret) {
  2659                  DRM_DEBUG("Invalid OA config id=%i\n", 
props->metrics_set);
  2660                  goto err_config;
  2661          }
  2662  
  2663          /* PRM - observability performance counters:
  2664           *
  2665           *   OACONTROL, performance counter enable, note:
  2666           *
  2667           *   "When this bit is set, in order to have coherent counts,
  2668           *   RC6 power state and trunk clock gating must be disabled.
  2669           *   This can be achieved by programming MMIO registers as
  2670           *   0xA094=0 and 0xA090[31]=1"
  2671           *
  2672           *   In our case we are expecting that taking pm + FORCEWAKE
  2673           *   references will effectively disable RC6.
  2674           */
  2675          stream->wakeref = intel_runtime_pm_get(&dev_priv->runtime_pm);
  2676          intel_uncore_forcewake_get(&dev_priv->uncore, FORCEWAKE_ALL);
  2677  
  2678          ret = alloc_oa_buffer(stream);
  2679          if (ret)
  2680                  goto err_oa_buf_alloc;
  2681  
  2682          ret = i915_mutex_lock_interruptible(&dev_priv->drm);
  2683          if (ret)
  2684                  goto err_lock;
  2685  
  2686          stream->ops = &i915_oa_stream_ops;
  2687          dev_priv->perf.exclusive_stream = stream;
  2688  
  2689          mutex_lock(&stream->config_mutex);
  2690          ret = dev_priv->perf.ops.enable_metric_set(stream);
  2691          if (ret) {
  2692                  DRM_DEBUG("Unable to enable metric set\n");
  2693                  /*
  2694                   * Ignore the return value since we already have an 
error from
  2695                   * the enable vfunc.
  2696                   */
> 2697                  i915_active_request_retire(&stream->active_config_rq, 0,
  2698                                             &stream->config_mutex);
  2699          } else {
  2700                  ret = 
i915_active_request_retire(&stream->active_config_rq, 0,
  2701                                                   &stream->config_mutex);
  2702          }
  2703  
  2704          mutex_unlock(&stream->config_mutex);
  2705          mutex_unlock(&dev_priv->drm.struct_mutex);
  2706  
  2707          i915_gem_object_put(stream->initial_oa_config_bo);
  2708          stream->initial_oa_config_bo = NULL;
  2709          if (ret)
  2710                  goto err_enable;
  2711  
  2712          DRM_DEBUG("opening stream oa config uuid=%s\n", 
stream->oa_config->uuid);
  2713  
  2714          hrtimer_init(&stream->poll_check_timer,
  2715                       CLOCK_MONOTONIC, HRTIMER_MODE_REL);
  2716          stream->poll_check_timer.function = oa_poll_check_timer_cb;
  2717          init_waitqueue_head(&stream->poll_wq);
  2718          spin_lock_init(&stream->oa_buffer.ptr_lock);
  2719  
  2720          return 0;
  2721  
  2722  err_enable:
  2723          mutex_lock(&dev_priv->drm.struct_mutex);
  2724          mutex_lock(&stream->config_mutex);
  2725          dev_priv->perf.ops.disable_metric_set(stream);
  2726          mutex_unlock(&stream->config_mutex);
  2727          dev_priv->perf.exclusive_stream = NULL;
  2728          mutex_unlock(&dev_priv->drm.struct_mutex);
  2729  
  2730  err_lock:
  2731          free_oa_buffer(stream);
  2732  
  2733  err_oa_buf_alloc:
  2734          intel_uncore_forcewake_put(&dev_priv->uncore, FORCEWAKE_ALL);
  2735          intel_runtime_pm_put(&dev_priv->runtime_pm, stream->wakeref);
  2736  
  2737          free_oa_configs(stream);
  2738  
  2739          if (stream->initial_oa_config_bo)
  2740                  i915_gem_object_put(stream->initial_oa_config_bo);
  2741  
  2742  err_config:
  2743          free_noa_wait(stream);
  2744  
  2745  err_noa_wait_alloc:
  2746          if (stream->ctx)
  2747                  oa_put_render_ctx_id(stream);
  2748  
  2749          return ret;
  2750  }
  2751  

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to