Current-Users archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: amd64 system crash with radeondrm enabled after update
In article <201005141341.10771.sverre%viewmark.com@localhost>,
Sverre Froyen <sverre%viewmark.com@localhost> wrote:
>On Fri May 14 2010 13:02:59 David Young wrote:
>> On Fri, May 14, 2010 at 12:24:17PM -0600, Sverre Froyen wrote:
>> > On Thu May 13 2010 12:07:01 Iain Hibbert wrote:
>> > > On Thu, 13 May 2010, Brian Buhrow wrote:
>> > > > Hello. Isn't there a way to have ddb execute a series of
>> > > > commands
>> > > >
>> > > > when it fires? I think the output of ddb commands show up in the
>> > > > dmesg buffer. So, you could have it execute a back trace, then
>> > > > reboot after writing a core image, which will capture all the
>> > > > relevant output. I think it's a sysctl to tell ddb what to do.
>> > >
>> > > AFAIK it needs to be built in, see ddb(4)
>> >
>> > Using these suggestions I get the following output:
>> >
>> > info: [drm] Setting GART location based on new memory map
>> > info: [drm] Loading RV635 Microcode
>> > uvm_fault(0xffff80004ee23010, 0x0, 1) -> e
>> > fatal page fault in supervisor mode
>> > trap type 6 code 0 rip ffffffff801f7823 cs 8 rflags 13246 cr2 0 cpl 0
>> > rsp ffff8 0004f4cb888
>> > kernel: page fault trap, code=0
>> > Stopped in pid 1055.1 (Xorg) at netbsd:bus_space_write_4+0x3: cmpl
>> > $0,0(%rd
>> > i)
>> > db{0}> bt
>> > bus_space_write_4() at netbsd:bus_space_write_4+0x3
>> > r600_do_init_cp() at netbsd:r600_do_init_cp+0x5ee
>>
>> What line is that? In gdb, 'l *(r600_do_init_cp+0x5ee)'.
>
I think that the following code is problematic because it does not set
bst or bsh in the else case.
#if __OS_HAS_AGP
// XXX
if (dev_priv->flags & RADEON_IS_AGP) {
drm_core_ioremap_wc(dev_priv->cp_ring, dev);
drm_core_ioremap_wc(dev_priv->ring_rptr, dev);
drm_core_ioremap_wc(dev->agp_buffer_map, dev);
if (!dev_priv->cp_ring->handle ||
!dev_priv->ring_rptr->handle ||
!dev->agp_buffer_map->handle) {
DRM_ERROR("could not find ioremap agp regions!\n");
r600_do_cleanup_cp(dev);
return -EINVAL;
}
} else
#endif
{
dev_priv->cp_ring->handle = (void *)dev_priv->cp_ring->offset;
dev_priv->ring_rptr->handle =
(void *)dev_priv->ring_rptr->offset;
dev->agp_buffer_map->handle =
(void *)dev->agp_buffer_map->offset;
DRM_DEBUG("dev_priv->cp_ring->handle %p\n",
dev_priv->cp_ring->handle);
DRM_DEBUG("dev_priv->ring_rptr->handle %p\n",
dev_priv->ring_rptr->handle);
DRM_DEBUG("dev->agp_buffer_map->handle %p\n",
dev->agp_buffer_map->handle);
}
christos
Home |
Main Index |
Thread Index |
Old Index