drm/radeon: "ring test failed" on PA-RISC Linux

Alex Ivanov gnidorah at p0n4ik.tk
Thu Sep 19 23:52:11 PDT 2013


17.09.2013, в 23:33, Alex Ivanov <gnidorah at p0n4ik.tk> написал(а):

> 17.09.2013, в 18:24, Alex Deucher <alexdeucher at gmail.com> написал(а):
> 
>> On Tue, Sep 17, 2013 at 5:23 AM, Alex Ivanov <gnidorah at p0n4ik.tk> wrote:
>>> Alex,
>>> 
>>> 10.09.2013, в 16:37, Alex Deucher <alexdeucher at gmail.com> написал(а):
>>> 
>>>> The dummy page isn't really going to help much.  That page is just
>>>> used as a safety placeholder for gart entries that aren't mapped on
>>>> the GPU.  TTM (drivers/gpu/drm/ttm) actually does the allocation of
>>>> the backing pages for the gart.
>>> 
>>>> You may want to look there.
>>> 
>>> Ah, sorry. Indeed. Though, my idea with:
>>> 
>>> On Tue, Sep 10, 2013 at 5:20 AM, Alex Ivanov <gnidorah at p0n4ik.tk> wrote:
>>> 
>>>> Thanks! I'll try. Meanwhile i've tried a switch from page_alloc() to
>>>> dma_alloc_coherent() in radeon_dummy_page_*(), which didn't help :(
>>> 
>>> doesn't make a sense at TTM part as well.
>> 
>> After the driver is loaded, you can dump some info from debugfs:
>> r100_rbbm_info
>> r100_cp_ring_info
>> r100_cp_csq_fifo
>> Which will dump a bunch of registers and internal fifos so we can see
>> that the chip actually processed.
>> 
>> Alex
> 
> Reading of r100_cp_ring_info leads to a KP:
> 
> r100_debugfs_cp_ring_info():
> count = (rdp + ring->ring_size - wdp) & ring->ptr_mask;
> i = (rdp + j) & ring->ptr_mask;
> 
>        for (j = 0; j <= count; j++) {
>                i = (rdp + j) & ring->ptr_mask;
> 		--> Here at first iteration <--
> 		--> count = 262080, i = 0 <--
>                seq_printf(m, "r[%04d]=0x%08x\n", i, ring->ring[i]);
>        }
> 
> Reading of radeon_ring_gfx (which i've additionally tried to read) 
> throws an MCE:
> 
> radeon_debugfs_ring_info():
> count = (ring->ring_size / 4) - ring->ring_free_dw;
> i = (ring->rptr + ring->ptr_mask + 1 - 32) & ring->ptr_mask;
> 
>        for (j = 0; j <= (count + 32); j++) {
> 		--> Here at first iteration <--
> 		--> count = 64, i = 262112 <--
>                seq_printf(m, "r[%5d]=0x%08x\n", i, ring->ring[i]);
>                i = (i + 1) & ring->ptr_mask;
>        }
> 
> I'm attaching debug outputs on kernel built with these loops commented.
> <drm_parisc_debug.tgz>_______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel

The ring->ring is NULL...


More information about the dri-devel mailing list