On Mon, Nov 03, 2014 at 01:29:04PM +0000, Dave Gordon wrote: > Fixes to both the LRC and the legacy ringbuffer code to correctly > calculate and update the available space in a ring. > > The logical ring code was updating the software ring 'head' value > by reading the hardware 'HEAD' register. In LRC mode, this is not > valid as the hardware is not necessarily executing the same context > that is being processed by the software. Thus reading the h/w HEAD > could put an unrelated (undefined, effectively random) value into > the s/w 'head' -- A Bad Thing for the free space calculations. > > In addition, the old code could update a ringbuffer's 'head' value > from the 'last_retired_head' even when the latter hadn't been recently > updated and therefore had a value of -1; this would also confuse the > freespace calculations. Now, we consume 'last_retired_head' in just > one place, ensuring that this confusion does not arise. > > Change-Id: Id7ce9096ed100a2882c68a54206f30b6c87e92fa > Signed-off-by: Dave Gordon <david.s.gordon@xxxxxxxxx> Is there an igt testcase which readily reproduces this? Or can we have one? -Daniel -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx