[PATCH v2 2/4] drm/i915/gvt: Select appropriate mmio list at initialization time
Du, Changbin
changbin.du at intel.com
Tue Dec 5 03:49:34 UTC 2017
On Tue, Dec 05, 2017 at 11:46:22AM +0800, Zhenyu Wang wrote:
> static u32 gen9_render_mocs[I915_NUM_ENGINES][64];
> > @@ -282,21 +276,14 @@ static void switch_mmio_to_vgpu(struct intel_vgpu *vgpu, int ring_id)
> > u32 inhibit_mask =
> > _MASKED_BIT_ENABLE(CTX_CTRL_ENGINE_CTX_RESTORE_INHIBIT);
> > i915_reg_t last_reg = _MMIO(0);
> > - struct render_mmio *mmio;
> > + struct engine_mmio *mmio;
> > u32 v;
> > - int i, array_size;
> >
> > - if (IS_SKYLAKE(vgpu->gvt->dev_priv)
> > - || IS_KABYLAKE(vgpu->gvt->dev_priv)) {
> > - mmio = gen9_render_mmio_list;
> > - array_size = ARRAY_SIZE(gen9_render_mmio_list);
> > + if (IS_SKYLAKE(dev_priv) || IS_KABYLAKE(dev_priv))
> > load_mocs(vgpu, ring_id);
> > - } else {
> > - mmio = gen8_render_mmio_list;
> > - array_size = ARRAY_SIZE(gen8_render_mmio_list);
> > - }
> >
> > - for (i = 0; i < array_size; i++, mmio++) {
> > + mmio = vgpu->gvt->engine_mmio_list;
> > + while (i915_mmio_reg_offset((mmio++)->reg)) {
> > if (mmio->ring_id != ring_id)
> > continue;
>
> Not safe to check end of the list and this will try to exceed the list?
> Seems wrong to me. Either use size of the list or mark array 0 end then
> check mmio pointer.
>
It will not exceed the list. The last mmio item is termination mark.
> --
> Open Source Technology Center, Intel ltd.
>
> $gpg --keyserver wwwkeys.pgp.net --recv-keys 4D781827
--
Thanks,
Changbin Du
More information about the intel-gvt-dev
mailing list