tech-x11 archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

radaeondrmkms on i386 - how to get the console back



hi folks.


as some of you are aware, radeondrmkms on i386 doesn't work properly.
i've been tracking down the problems.

there are several.  the first relate to vga(4) or pcdisplay(4)
attaching at isa, and providing wsdisplay0, and then drm gets
attached to wsdisplay1, and console input/output don't work.

simply adding this to my GENERIC-based config fixes that for me:

	no pcdisplay
	no vga0 at isa?

that lets the console input and output go to the right place
and you can login on the console.


but there is a much deeper issue in the drm code itself.  when
the ati driver is trying to mmap the shader it gets an EINVAL.
i tracked this down to his code failing:

drm_vm.c:
     87 static paddr_t
     88 drm_mmap_paddr_locked(struct drm_device *dev, off_t byte_offset, int prot)
     89 {
     90         const off_t page_offset = (byte_offset >> PAGE_SHIFT);
     91         struct drm_hash_item *hash;
     92
     93         KASSERT(mutex_is_locked(&dev->struct_mutex));
     94         KASSERT(byte_offset == (byte_offset & ~(PAGE_SIZE-1)));
     95
     96         if ((dev->dma != NULL) &&
     97             (0 <= byte_offset) &&
     98             (page_offset <= dev->dma->page_count))
     99                 return drm_mmap_dma_paddr(dev, byte_offset, prot);
    100
    101         if (drm_ht_find_item(&dev->map_hash, page_offset, &hash))
    102                 return -1;

at line 101 drm_ht_find_item() fails and we return -1.

no idea what's going on here, yet.


.mrg.


Home | Main Index | Thread Index | Old Index