Hi Sourab,

[auto build test WARNING on drm-intel/for-linux-next]
[also build test WARNING on next-20170731]
[cannot apply to v4.13-rc3]
[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/Sagar-Arun-Kamble/i915-perf-support-for-command-stream-based-OA-GPU-and-workload-metrics-capture/20170731-184412
base:   git://anongit.freedesktop.org/drm-intel for-linux-next
config: i386-randconfig-x071-201731 (attached as .config)
compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

All warnings (new ones prefixed by >>):

   drivers/gpu/drm/i915/i915_perf.c: In function 'read_properties_unlocked':
>> drivers/gpu/drm/i915/i915_perf.c:4022:35: warning: cast to pointer from 
>> integer of different size [-Wint-to-pointer-cast]
       ret = copy_mmio_list(dev_priv, (u64 __user *)value);
                                      ^

vim +4022 drivers/gpu/drm/i915/i915_perf.c

  3867  
  3868  /**
  3869   * read_properties_unlocked - validate + copy userspace stream open 
properties
  3870   * @dev_priv: i915 device instance
  3871   * @uprops: The array of u64 key value pairs given by userspace
  3872   * @n_props: The number of key value pairs expected in @uprops
  3873   * @props: The stream configuration built up while validating properties
  3874   *
  3875   * Note this function only validates properties in isolation it doesn't
  3876   * validate that the combination of properties makes sense or that all
  3877   * properties necessary for a particular kind of stream have been set.
  3878   *
  3879   * Note that there currently aren't any ordering requirements for 
properties so
  3880   * we shouldn't validate or assume anything about ordering here. This 
doesn't
  3881   * rule out defining new properties with ordering requirements in the 
future.
  3882   */
  3883  static int read_properties_unlocked(struct drm_i915_private *dev_priv,
  3884                                      u64 __user *uprops,
  3885                                      u32 n_props,
  3886                                      struct perf_open_properties *props)
  3887  {
  3888          u64 __user *uprop = uprops;
  3889          int i;
  3890  
  3891          memset(props, 0, sizeof(struct perf_open_properties));
  3892  
  3893          if (!n_props) {
  3894                  DRM_DEBUG("No i915 perf properties given\n");
  3895                  return -EINVAL;
  3896          }
  3897  
  3898          /* Considering that ID = 0 is reserved and assuming that we 
don't
  3899           * (currently) expect any configurations to ever specify 
duplicate
  3900           * values for a particular property ID then the last _PROP_MAX 
value is
  3901           * one greater than the maximum number of properties we expect 
to get
  3902           * from userspace.
  3903           */
  3904          if (n_props >= DRM_I915_PERF_PROP_MAX) {
  3905                  DRM_DEBUG("More i915 perf properties specified than 
exist\n");
  3906                  return -EINVAL;
  3907          }
  3908  
  3909          for (i = 0; i < n_props; i++) {
  3910                  u64 oa_period, oa_freq_hz;
  3911                  u64 id, value;
  3912                  int ret;
  3913  
  3914                  ret = get_user(id, uprop);
  3915                  if (ret)
  3916                          return ret;
  3917  
  3918                  ret = get_user(value, uprop + 1);
  3919                  if (ret)
  3920                          return ret;
  3921  
  3922                  if (id == 0 || id >= DRM_I915_PERF_PROP_MAX) {
  3923                          DRM_DEBUG("Unknown i915 perf property ID\n");
  3924                          return -EINVAL;
  3925                  }
  3926  
  3927                  switch ((enum drm_i915_perf_property_id)id) {
  3928                  case DRM_I915_PERF_PROP_CTX_HANDLE:
  3929                          props->single_context = 1;
  3930                          props->ctx_handle = value;
  3931                          break;
  3932                  case DRM_I915_PERF_PROP_SAMPLE_OA:
  3933                          props->sample_flags |= SAMPLE_OA_REPORT;
  3934                          break;
  3935                  case DRM_I915_PERF_PROP_OA_METRICS_SET:
  3936                          if (value == 0 ||
  3937                              value > dev_priv->perf.oa.n_builtin_sets) {
  3938                                  DRM_DEBUG("Unknown OA metric set ID\n");
  3939                                  return -EINVAL;
  3940                          }
  3941                          props->metrics_set = value;
  3942                          break;
  3943                  case DRM_I915_PERF_PROP_OA_FORMAT:
  3944                          if (value == 0 || value >= I915_OA_FORMAT_MAX) {
  3945                                  DRM_DEBUG("Out-of-range OA report 
format %llu\n",
  3946                                            value);
  3947                                  return -EINVAL;
  3948                          }
  3949                          if (!dev_priv->perf.oa.oa_formats[value].size) {
  3950                                  DRM_DEBUG("Unsupported OA report format 
%llu\n",
  3951                                            value);
  3952                                  return -EINVAL;
  3953                          }
  3954                          props->oa_format = value;
  3955                          break;
  3956                  case DRM_I915_PERF_PROP_OA_EXPONENT:
  3957                          if (value > OA_EXPONENT_MAX) {
  3958                                  DRM_DEBUG("OA timer exponent too high 
(> %u)\n",
  3959                                           OA_EXPONENT_MAX);
  3960                                  return -EINVAL;
  3961                          }
  3962  
  3963                          /* Theoretically we can program the OA unit to 
sample
  3964                           * e.g. every 160ns for HSW, 167ns for BDW/SKL 
or 104ns
  3965                           * for BXT. We don't allow such high sampling
  3966                           * frequencies by default unless root.
  3967                           */
  3968  
  3969                          BUILD_BUG_ON(sizeof(oa_period) != 8);
  3970                          oa_period = oa_exponent_to_ns(dev_priv, value);
  3971  
  3972                          /* This check is primarily to ensure that 
oa_period <=
  3973                           * UINT32_MAX (before passing to do_div which 
only
  3974                           * accepts a u32 denominator), but we can also 
skip
  3975                           * checking anything < 1Hz which implicitly 
can't be
  3976                           * limited via an integer oa_max_sample_rate.
  3977                           */
  3978                          if (oa_period <= NSEC_PER_SEC) {
  3979                                  u64 tmp = NSEC_PER_SEC;
  3980                                  do_div(tmp, oa_period);
  3981                                  oa_freq_hz = tmp;
  3982                          } else
  3983                                  oa_freq_hz = 0;
  3984  
  3985                          if (oa_freq_hz > i915_oa_max_sample_rate &&
  3986                              !capable(CAP_SYS_ADMIN)) {
  3987                                  DRM_DEBUG("OA exponent would exceed the 
max sampling frequency (sysctl dev.i915.oa_max_sample_rate) %uHz without root 
privileges\n",
  3988                                            i915_oa_max_sample_rate);
  3989                                  return -EACCES;
  3990                          }
  3991  
  3992                          props->oa_periodic = true;
  3993                          props->oa_period_exponent = value;
  3994                          break;
  3995                  case DRM_I915_PERF_PROP_SAMPLE_OA_SOURCE:
  3996                          props->sample_flags |= SAMPLE_OA_SOURCE;
  3997                          break;
  3998                  case DRM_I915_PERF_PROP_ENGINE: {
  3999                                  unsigned int user_ring_id =
  4000                                          value & I915_EXEC_RING_MASK;
  4001  
  4002                                  if (user_ring_id > I915_USER_RINGS)
  4003                                          return -EINVAL;
  4004  
  4005                                  props->cs_mode = true;
  4006                                  props->engine = 
user_ring_map[user_ring_id];
  4007                          }
  4008                          break;
  4009                  case DRM_I915_PERF_PROP_SAMPLE_CTX_ID:
  4010                          props->sample_flags |= SAMPLE_CTX_ID;
  4011                          break;
  4012                  case DRM_I915_PERF_PROP_SAMPLE_PID:
  4013                          props->sample_flags |= SAMPLE_PID;
  4014                          break;
  4015                  case DRM_I915_PERF_PROP_SAMPLE_TAG:
  4016                          props->sample_flags |= SAMPLE_TAG;
  4017                          break;
  4018                  case DRM_I915_PERF_PROP_SAMPLE_TS:
  4019                          props->sample_flags |= SAMPLE_TS;
  4020                          break;
  4021                  case DRM_I915_PERF_PROP_SAMPLE_MMIO:
> 4022                          ret = copy_mmio_list(dev_priv, (u64 __user 
> *)value);
  4023                          if (ret)
  4024                                  return ret;
  4025                          props->sample_flags |= SAMPLE_MMIO;
  4026                          break;
  4027                  case DRM_I915_PERF_PROP_MAX:
  4028                          MISSING_CASE(id);
  4029                          return -EINVAL;
  4030                  }
  4031  
  4032                  uprop += 2;
  4033          }
  4034  
  4035          return 0;
  4036  }
  4037  

---
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