Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
drm
libpscnv
nouveau
pscnv
test
.gitignore
README

README


This driver is for OpenSolaris. there will be no KMS support and only for computing.

nouveau_pscmm.c and nouveau_pscmm.h are the core part of PathScale memory manager which is part of nouveau kernel driver.
The ioctls reserved from current nouveau will not be shown here. They includes nouveau_ioctl_fifo_alloc, nouveau_ioctl_fifo_free, nouveau_ioctl_grobj_alloc nouveau_ioctl_notifier_alloc and etc.

It assume that 
    VRAM can be divided into two parts, non-page and page.
    non-page includes scanout, hardware-status page etc which will not be evicted and shared by all channels.
    page part for user bos. pscmm files are only focus on user bo alloc/free, evict, move, mmap, exec and etc. 

By now:
    The per-channel page table init at the channel_init and not changed then. (Improved at next)
    No mmap/flush_range at first (Improved at next)
    No VBIOS init (Improved at next)

Known issue:
    Console doesn't work after enable the driver, you can only access by ssh.

For bo alloc/free, it use the algorithm in drm_mm.c (buddy). 
For bo evict/replacement, it introduce a no_evicted list to track the no_evicted bo. For other bo, it will use modified CAR to do replacement if the VRAM is full.

For more detail, please check the pscmm plan.

By now, it's only a skeletal code, only can do attach. More implement and test will be next. 

Any feedback or suggestions, please send to me lkice@hotmail.com.



HOW TO BUILD:
1. Build OpenSolaris b134 or later from source.
2. cp the project to usr/src/uts/intel/ (E.g. cp -r pscmm /WORKSPCAE/usr/src/uts/intel/)
3. cd drm && make all (build drm binarie)
4. cd nouveau && make all (build nouveau binarie)

Install:
cp nouveau_drm /kernel/misc or /kernel/misc/amd64
cp nouveau /kernel/drv or /kernel/drv/amd64

Something went wrong with that request. Please try again.