[Mesa-dev] [PATCH] winsys/radeon: fix nop packet padding v2.

Jerome Glisse j.glisse at gmail.com
Fri Jul 25 06:50:04 PDT 2014


On Thu, Jul 24, 2014 at 8:07 PM, Alex Deucher <alexdeucher at gmail.com> wrote:

> On Thu, Jul 24, 2014 at 6:28 PM,  <j.glisse at gmail.com> wrote:
> > From: Jerome Glisse <jglisse at redhat.com>
> >
> > The ucode we got for hawaii does not support 0xffff1000 special nop
> > packet type 3 and this leads to gpu reading invalid memory. As packet
> > type 2 still exist just use packet type 2.
> >
> > Note this only partialy fix hawaii issues and some zbuffer tiling
> > issues are still present.
> >
> > Changed since v1:
> >   - use packet type 2 instead of packet 3.
>
> We don't need this change if we use the updated firmware in my 3.17
> tree.  Looks like the original hawaii CP ucode didn't support the new
> 0xffff1000 special case NOP packet.
>
>
I would rather have the nop2 packet solution than yet another is accel
working. Several
reasons :
  - 3.16 will be out soon and has most important fix
  - nop2 packet can easily be backported to stable mesa
  - testing for 3.16 is easy

So i think it would be cleaner to just do nop2 and 3.16.



> Alex
>
> >
> > Signed-off-by: Jérôme Glisse <jglisse at redhat.com>
> > ---
> >  src/gallium/winsys/radeon/drm/radeon_drm_cs.c | 9 ++-------
> >  1 file changed, 2 insertions(+), 7 deletions(-)
> >
> > diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
> b/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
> > index a06ecb2..9ac7d0e 100644
> > --- a/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
> > +++ b/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
> > @@ -447,13 +447,8 @@ static void radeon_drm_cs_flush(struct
> radeon_winsys_cs *rcs,
> >          /* pad DMA ring to 8 DWs to meet CP fetch alignment requirements
> >           * r6xx, requires at least 4 dw alignment to avoid a hw bug.
> >           */
> > -        if (cs->ws->info.chip_class <= SI) {
> > -            while (rcs->cdw & 7)
> > -                OUT_CS(&cs->base, 0x80000000); /* type2 nop packet */
> > -        } else {
> > -            while (rcs->cdw & 7)
> > -                OUT_CS(&cs->base, 0xffff1000); /* type3 nop packet */
> > -        }
> > +        while (rcs->cdw & 7)
> > +            OUT_CS(&cs->base, 0x80000000); /* type2 nop packet */
> >          break;
> >      case RING_UVD:
> >          while (rcs->cdw & 15)
> > --
> > 1.8.3.1
> >
> > _______________________________________________
> > mesa-dev mailing list
> > mesa-dev at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20140725/03d4ed45/attachment-0001.html>


More information about the mesa-dev mailing list