[gvt-linux:gvt-stable-4.12 27/36] drivers/gpu/drm/i915/gvt/scheduler.c:270:7: error: assignment makes pointer from integer without a cast

Gao, Ping A ping.a.gao at intel.com
Tue Jul 25 02:15:50 UTC 2017


It causes by the API changing in i915, the context_pin return a point
instead of an int after 4.12 stable.

Weinan has fix this problem when backport this patch to 4.12 stable.


On 2017/7/23 7:04, Wu, Fengguang wrote:
> tree:   https://github.com/01org/gvt-linux.git gvt-stable-4.12
> head:   322c8b39403d133cfd51a85c8720acb5c0174d4f
> commit: 4a3c46abff595b52a44b3b870307489f44989f41 [27/36] drm/i915/gvt: Factor out scan and shadow from workload dispatch
> config: x86_64-randconfig-g0-07230443 (attached as .config)
> compiler: gcc-5 (Debian 5.4.1-2) 5.4.1 20160904
> reproduce:
>         git checkout 4a3c46abff595b52a44b3b870307489f44989f41
>         # save the attached .config to linux build tree
>         make ARCH=x86_64 
>
> All errors (new ones prefixed by >>):
>
>    drivers/gpu/drm/i915/gvt/scheduler.c: In function 'dispatch_workload':
>>> drivers/gpu/drm/i915/gvt/scheduler.c:270:7: error: assignment makes pointer from integer without a cast [-Werror=int-conversion]
>      ring = engine->context_pin(engine, shadow_ctx);
>           ^
>    cc1: all warnings being treated as errors
>
> vim +270 drivers/gpu/drm/i915/gvt/scheduler.c
>
>    237	
>    238	static int dispatch_workload(struct intel_vgpu_workload *workload)
>    239	{
>    240		int ring_id = workload->ring_id;
>    241		struct i915_gem_context *shadow_ctx = workload->vgpu->shadow_ctx;
>    242		struct drm_i915_private *dev_priv = workload->vgpu->gvt->dev_priv;
>    243		struct intel_engine_cs *engine = dev_priv->engine[ring_id];
>    244		struct intel_vgpu *vgpu = workload->vgpu;
>    245		struct intel_ring *ring;
>    246		int ret = 0;
>    247	
>    248		gvt_dbg_sched("ring id %d prepare to dispatch workload %p\n",
>    249			ring_id, workload);
>    250	
>    251		mutex_lock(&dev_priv->drm.struct_mutex);
>    252	
>    253		ret = intel_gvt_scan_and_shadow_workload(workload);
>    254		if (ret)
>    255			goto out;
>    256	
>    257		if (workload->prepare) {
>    258			ret = workload->prepare(workload);
>    259			if (ret)
>    260				goto out;
>    261		}
>    262	
>    263		/* pin shadow context by gvt even the shadow context will be pinned
>    264		 * when i915 alloc request. That is because gvt will update the guest
>    265		 * context from shadow context when workload is completed, and at that
>    266		 * moment, i915 may already unpined the shadow context to make the
>    267		 * shadow_ctx pages invalid. So gvt need to pin itself. After update
>    268		 * the guest context, gvt can unpin the shadow_ctx safely.
>    269		 */
>  > 270		ring = engine->context_pin(engine, shadow_ctx);
>    271		if (IS_ERR(ring)) {
>    272			ret = PTR_ERR(ring);
>    273			gvt_vgpu_err("fail to pin shadow context\n");
>    274			goto out;
>    275		}
>    276	
>    277	out:
>    278		if (ret)
>    279			workload->status = ret;
>    280	
>    281		if (!IS_ERR_OR_NULL(workload->req)) {
>    282			gvt_dbg_sched("ring id %d submit workload to i915 %p\n",
>    283					ring_id, workload->req);
>    284			i915_add_request(workload->req);
>    285			workload->dispatched = true;
>    286		}
>    287	
>    288		mutex_unlock(&dev_priv->drm.struct_mutex);
>    289		return ret;
>    290	}
>    291	
>
> ---
> 0-DAY kernel test infrastructure                Open Source Technology Center
> https://lists.01.org/pipermail/kbuild-all                   Intel Corporation



More information about the intel-gvt-dev mailing list