nido/pscnv
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
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 [email protected].
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