[PATCH] drm/i915/gvt: scan non-privileged batch buffer for debug purpose
Hang Yuan
hang.yuan at linux.intel.com
Fri Mar 16 01:01:34 UTC 2018
On Thu, Mar 15, 2018 at 09:47:19AM +0800, Zhao, Yan Y wrote:
>
>
> On 3/14/2018 4:17 PM, Hang Yuan wrote:
> >On Wed, Mar 14, 2018 at 08:43:13AM +0800, Zhao Yan wrote:
> >>@@ -1664,6 +1670,9 @@ static int perform_bb_shadow(struct parser_exec_state *s)
> >> unsigned long gma = 0;
> >> unsigned long bb_size;
> >> int ret = 0;
> >>+ unsigned long bb_offset = 0;
> >>+ struct intel_vgpu_mm *mm = (s->buf_addr_type == GTT_BUFFER) ?
> >>+ s->vgpu->gtt.ggtt_mm : s->workload->shadow_mm;
> >> /* get the start gm address of the batch buffer */
> >> gma = get_gma_bb_from_cmd(s, 1);
> >>@@ -1678,8 +1687,12 @@ static int perform_bb_shadow(struct parser_exec_state *s)
> >> if (!bb)
> >> return -ENOMEM;
> >>+ bb->ppgtt = (s->buf_addr_type == GTT_BUFFER) ? false : true;
> >>+ if (bb->ppgtt)
> >>+ bb_offset = gma & ~I915_GTT_PAGE_MASK;
> >>+
> >> bb->obj = i915_gem_object_create(s->vgpu->gvt->dev_priv,
> >>- roundup(bb_size, PAGE_SIZE));
> >>+ roundup(bb_size + bb_offset, PAGE_SIZE));
> >Just curious why 'bb_offset' size of space is allocated but looks like not used later?
> or you mean why bb->obj is not used later? because it's referenced by
> bb->va. For scan it, we use s->ip_va, and s->ip_gma
I'm wondering why you allocate additional bb_offset size of buffer for non-pri BB. You have explained later. Thanks.
> >
> >> if (IS_ERR(bb->obj)) {
> >> ret = PTR_ERR(bb->obj);
> >> goto err_free_bb;
> >>@@ -1700,9 +1713,9 @@ static int perform_bb_shadow(struct parser_exec_state *s)
> >> bb->clflush &= ~CLFLUSH_BEFORE;
> >> }
> >>- ret = copy_gma_to_hva(s->vgpu, s->vgpu->gtt.ggtt_mm,
> >>+ ret = copy_gma_to_hva(s->vgpu, mm,
> >> gma, gma + bb_size,
> >>- bb->va);
> >>+ bb->va + bb_offset);
> bb_offset is used here. I add bb_offset is to make shadowed BB looks the
> same as original BB, so if later we want to change PPGTT's mapping of the
> BB's gma to shadowed BB's physical address, it still works.
> >> if (ret < 0) {
> >> gvt_vgpu_err("fail to copy guest ring buffer\n");
> >> ret = -EFAULT;
>
> _______________________________________________
> intel-gvt-dev mailing list
> intel-gvt-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gvt-dev
More information about the intel-gvt-dev
mailing list