> Date: Tue, 24 Apr 2018 20:18:42 +1000
> From: Jonathan Gray <j...@jsg.id.au>
> 
> On Wed, Apr 18, 2018 at 06:55:35PM +0200, Alexander Bluhm wrote:
> > On Thu, Apr 19, 2018 at 12:10:04AM +1000, Jonathan Gray wrote:
> > > That's with the big radeon update diff as well?
> > 
> > That was current.  Boots fine.
> > 
> > With ~jsg/radeon.diff.2 it still crashes.  I have checked, it is
> > the diff with
> > 
> >         if (rdev->rio_mem_size > 0)
> >                 bus_space_unmap(rdev->iot, rdev->rio_mem, 
> > rdev->rio_mem_size);
> > 
> > initializing kernel modesetting (RV100 0x1002:0x515E 0x1002:0x515E).
> > radeon_cp: Failed to load firmware "radeon/R100_cp.bin"
> > error: [drm:pid0:r100_cp_init] *ERROR* Failed to load firmware!
> > drm:pid0:r100_startup *ERROR* failed initializing CP (-2).
> > drm:pid0:r100_init *ERROR* Disabling GPU acceleration
> > uvm_fault(0xd0cae21c, 0xd11e2000, 0, 1) -> e
> > kernel: page fault trap, code=0
> > Stopped at      pmap_page_remove_pae+0x18:      cmpl    $0,0x48(%edi)
> > ddb{0}> trace
> > pmap_page_remove_pae(d11e2768) at pmap_page_remove_pae+0x18
> > ttm_tt_destroy(d5765a00) at ttm_tt_destroy+0x61
> > ttm_bo_cleanup_refs_or_queue(d572eb28) at ttm_bo_cleanup_refs_or_queue+0x2b3
> > ttm_bo_unref(d0f63ed8) at ttm_bo_unref+0x69
> > radeon_bo_unref(d572eb28) at radeon_bo_unref+0x27
> > radeon_wb_fini(d572d000) at radeon_wb_fini+0x49
> > r100_init(d572d000) at r100_init+0x409
> > radeon_device_init(d572d000,d5701400,d570143c,840001) at 
> > radeon_device_init+0x7
> > 97
> > radeondrm_attachhook(d572d000) at radeondrm_attachhook+0x2b
> > config_process_deferred_mountroot() at 
> > config_process_deferred_mountroot+0x2c
> > main(0) at main+0x7bf
> 
> After spending some time trying to track this down I have come up with
> the diff below and included it in ~jsg/radeon.diff.4 can you confirm
> that it works for you as well?

That fix is correct.  UVM works differently from the Linux VM system,
so we can't really implement kunmap().  Maybe we should rename it (to
kunmap_virt()?).

Cheers,

Mark


> diff --git sys/dev/pci/drm/ttm/ttm_bo_util.c sys/dev/pci/drm/ttm/ttm_bo_util.c
> index 3b26d865be2..da6c459bd39 100644
> --- sys/dev/pci/drm/ttm/ttm_bo_util.c
> +++ sys/dev/pci/drm/ttm/ttm_bo_util.c
> @@ -644,7 +644,7 @@ void ttm_bo_kunmap(struct ttm_bo_kmap_obj *map)
>               vunmap(map->virtual, bo->mem.bus.size);
>               break;
>       case ttm_bo_map_kmap:
> -             kunmap(map->page);
> +             kunmap(map->virtual);
>               break;
>       case ttm_bo_map_premapped:
>               break;
> 
> 

Reply via email to