On Mon, Feb 13, 2017 at 04:58:06PM +0200, Mika Kuoppala wrote:
> Chris Wilson <[email protected]> writes:
> > +static __always_inline bool
> > +gen8_ppgtt_insert_pte_entries(struct i915_hw_ppgtt *ppgtt,
> >                           struct i915_page_directory_pointer *pdp,
> > -                         struct sg_page_iter *sg_iter,
> > -                         uint64_t start,
> > +                         struct sgt_dma *iter,
> > +                         u64 start,
> >                           enum i915_cache_level cache_level)
> >  {
> > -   struct i915_hw_ppgtt *ppgtt = i915_vm_to_ppgtt(vm);
> > -   gen8_pte_t *pt_vaddr;
> > -   unsigned pdpe = gen8_pdpe_index(start);
> > -   unsigned pde = gen8_pde_index(start);
> > -   unsigned pte = gen8_pte_index(start);
> > +   unsigned int pdpe = gen8_pdpe_index(start);
> > +   unsigned int pde = gen8_pde_index(start);
> > +   unsigned int pte = gen8_pte_index(start);
> > +   struct i915_page_directory *pd;
> > +   const gen8_pte_t pte_encode = gen8_pte_encode(0, cache_level);
> > +   gen8_pte_t *vaddr;
> > +   bool ret = true;
> >  
> > -   pt_vaddr = NULL;
> > +   pd = pdp->page_directory[pdpe];
> > +   vaddr = kmap_px(pd->page_table[pde]);
> > +   do {
> > +           vaddr[pte] = pte_encode | iter->dma;
> > +           iter->dma += PAGE_SIZE;
> > +           if (iter->dma >= iter->max) {
> > +                   iter->sg = __sg_next(iter->sg);
> > +                   if (!iter->sg) {
> > +                           ret = false;
> > +                           break;
> 
> We never exit with ret = true in this loop.

Indeed, and I have a test now to prove it.
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to