[PATCH] drm/ttm: fix delayed ttm_bo_cleanup_refs_and_unlock delayed handling

Jerome Glisse j.glisse at gmail.com
Thu Jan 17 07:44:00 PST 2013


On Thu, Jan 17, 2013 at 3:46 AM, Markus Trippelsdorf
<markus at trippelsdorf.de> wrote:
> On 2013.01.16 at 19:18 -0500, Jerome Glisse wrote:
>> On Wed, Jan 16, 2013 at 6:10 PM, Markus Trippelsdorf
>> <markus at trippelsdorf.de> wrote:
>> > On 2013.01.16 at 17:36 -0500, Alex Deucher wrote:
>> >> On Tue, Jan 15, 2013 at 12:03 PM, Markus Trippelsdorf
>> >> <markus at trippelsdorf.de> wrote:
>> >> > On 2013.01.15 at 17:32 +0100, Markus Trippelsdorf wrote:
>> >> >> On 2013.01.15 at 16:26 +0100, Michel Dänzer wrote:
>> >> >> > On Die, 201301-15 at 16:23 +0100, Markus Trippelsdorf wrote:
>> >> >> > > On 2013.01.15 at 15:43 +0100, Michel Dänzer wrote:
>> >> >> > > > On Sam, 2013-01-05 at 11:41 +0100, Markus Trippelsdorf wrote:
>> >> >> > > > > On 2012.12.20 at 14:58 +0100, Markus Trippelsdorf wrote:
>> >> >> > > > > >
>> >> >> > > > > > And just in case it got lost in the noise yesterday:
>> >> >> > > > > > The image corruption is caused by Dave's commit:
>> >> >> > > > > >
>> >> >> > > > > > commit dd54fee7d440c4a9756cce2c24a50c15e4c17ccb
>> >> >> > > > > > Author: Dave Airlie <airlied at redhat.com>
>> >> >> > > > > > Date:   Fri Dec 14 21:04:46 2012 +1000
>> >> >> > > > > >
>> >> >> > > > > >     radeon: fix regression with eviction since evict caching changes
>> >> >> > > > > >
>> >> >> > > > > > Reverting it 'fixes' the issue.
>> >> >> > > > >
>> >> >> > > > > Ping.
>> >> >> > > > > The issue still happens with todays Linus git tree.
>> >> >> > > >
>> >> >> > > > Does the corruption also occur with
>> >> >> > > > dd54fee7d440c4a9756cce2c24a50c15e4c17ccb applied manually on top of
>> >> >> > > > 0d0b3e7443bed6b49cb90fe7ddc4b5578a83a88d?
>> >> >> > >
>> >> >> > > No.
>> >> >> >
>> >> >> > So, can you bisect which change between those two actually introduced
>> >> >> > the corruption?
>> >> >
>> >> > The real cause of the image corruption is:
>> >> >
>> >> > d025e9e2b890db679f1246037bf65bd4be512627 is the first bad commit
>> >> > commit d025e9e2b890db679f1246037bf65bd4be512627
>> >> > Author: Jerome Glisse <jglisse at redhat.com>
>> >> > Date:   Thu Nov 29 10:35:41 2012 -0500
>> >> >
>> >> >     drm/radeon: do not move bo to different placement at each cs
>> >> >
>> >> >     The bo creation placement is where the bo will be. Instead of trying
>> >> >     to move bo at each command stream let this work to another worker
>> >> >     thread that will use more advance heuristic.
>> >> >
>> >> >     agd5f: remove leftover unused variable
>> >> >
>> >> >     Signed-off-by: Jerome Glisse <jglisse at redhat.com>
>> >> >     Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
>> >> >
>> >> > Reverting d025e9e2b890d on top of Linus' tree fixes the issue.
>> >>
>> >> Can you try this patch from Jerome:
>> >> https://bugzilla.kernel.org/attachment.cgi?id=91421
>> >
>> > It fixes the corruption, but it degrades performance so much that it
>> > takes several seconds to switch virtual desktops under xmonad. And
>> > sometimes the website used for the scroll test is stuck for several
>> > seconds and unscrollable during that time.
>> >
>> > --
>> > Markus
>>
>> What about this patch instead :
>> http://people.freedesktop.org/~glisse/0001-drm-radeon-exclude-system-placement-when-validating-.patch
>
> This one doesn't work:
>
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: GPU lockup CP stall for more than 10000msec
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: GPU lockup (waiting for 0x0000000000000a63 last fence id 0x0000000000000a62)
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ioctl] *ERROR* Failed to parse relocation -12!
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:53 x4 kernel: radeon 0000:01:05.0: couldn't schedule ib
> Jan 17 09:40:53 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to schedule IB !
> Jan 17 09:40:54 x4 kernel: radeon 0000:01:05.0: GPU lockup CP stall for more than 10560msec
> Jan 17 09:40:54 x4 kernel: radeon 0000:01:05.0: GPU lockup (waiting for 0x0000000000000a63)
> Jan 17 09:40:54 x4 kernel: radeon 0000:01:05.0: failed to get a new IB (-35)
> Jan 17 09:40:54 x4 kernel: [drm:radeon_cs_ib_chunk] *ERROR* Failed to get ib !
> Jan 17 09:40:54 x4 kernel: radeon 0000:01:05.0: Saved 12633 dwords of commands on ring 0.
> Jan 17 09:40:54 x4 kernel: radeon 0000:01:05.0: GPU softreset: 0x00000007
> Jan 17 09:40:54 x4 kernel: radeon 0000:01:05.0:   R_008010_GRBM_STATUS      = 0xA0003030
> Jan 17 09:40:54 x4 kernel: radeon 0000:01:05.0:   R_008014_GRBM_STATUS2     = 0x00000003
> Jan 17 09:40:54 x4 kernel: radeon 0000:01:05.0:   R_000E50_SRBM_STATUS      = 0x20000040
> Jan 17 09:40:54 x4 kernel: radeon 0000:01:05.0:   R_008674_CP_STALLED_STAT1 = 0x00000000
> Jan 17 09:40:54 x4 kernel: radeon 0000:01:05.0:   R_008678_CP_STALLED_STAT2 = 0x00000000
> Jan 17 09:40:54 x4 kernel: radeon 0000:01:05.0:   R_00867C_CP_BUSY_STAT     = 0x00028182
> Jan 17 09:40:54 x4 kernel: radeon 0000:01:05.0:   R_008680_CP_STAT          = 0x80028241
> Jan 17 09:40:54 x4 kernel: radeon 0000:01:05.0:   R_008020_GRBM_SOFT_RESET=0x00007FEE
> Jan 17 09:40:54 x4 kernel: radeon 0000:01:05.0: R_008020_GRBM_SOFT_RESET=0x00000001
> Jan 17 09:40:54 x4 kernel: radeon 0000:01:05.0:   R_008010_GRBM_STATUS      = 0xA0003030
> Jan 17 09:40:54 x4 kernel: radeon 0000:01:05.0:   R_008014_GRBM_STATUS2     = 0x00000003
> Jan 17 09:40:54 x4 kernel: radeon 0000:01:05.0:   R_000E50_SRBM_STATUS      = 0x20008040
> Jan 17 09:40:54 x4 kernel: radeon 0000:01:05.0:   R_008674_CP_STALLED_STAT1 = 0x00000000
> Jan 17 09:40:54 x4 kernel: radeon 0000:01:05.0:   R_008678_CP_STALLED_STAT2 = 0x00000000
> Jan 17 09:40:54 x4 kernel: radeon 0000:01:05.0:   R_00867C_CP_BUSY_STAT     = 0x00000000
> Jan 17 09:40:54 x4 kernel: radeon 0000:01:05.0:   R_008680_CP_STAT          = 0x80100000
> Jan 17 09:40:54 x4 kernel: radeon 0000:01:05.0: GPU reset succeeded, trying to resume
> Jan 17 09:40:54 x4 kernel: [drm] PCIE GART of 512M enabled (table at 0x00000000C0040000).
> Jan 17 09:40:54 x4 kernel: radeon 0000:01:05.0: WB enabled
> Jan 17 09:40:54 x4 kernel: radeon 0000:01:05.0: fence driver on ring 0 use gpu addr 0x00000000a0226c00 and cpu addr 0xffff8802163adc00
> Jan 17 09:40:54 x4 kernel: radeon 0000:01:05.0: fence driver on ring 3 use gpu addr 0x00000000a0226c0c and cpu addr 0xffff8802163adc0c
> Jan 17 09:40:54 x4 kernel: radeon 0000:01:05.0: setting latency timer to 64
> Jan 17 09:40:54 x4 kernel: [drm:r600_ring_test] *ERROR* radeon: ring 0 test failed (scratch(0x8504)=0xCAFEDEAD)
> Jan 17 09:40:54 x4 kernel: [drm:r600_resume] *ERROR* r600 startup failed on resume
> Jan 17 09:40:54 x4 kernel: [drm:radeon_gem_object_create] *ERROR* Failed to allocate GEM object (7208960, 2, 4096, -12)
> Jan 17 09:41:23 x4 kernel: SysRq : Emergency Sync
> Jan 17 09:41:23 x4 kernel: Emergency Sync complete
>
> --
> Markus

Same address updated patch

http://people.freedesktop.org/~glisse/0001-drm-radeon-exclude-system-placement-when-validating-.patch

Cheers,
Jerome


More information about the dri-devel mailing list