New donator - thanks, Michael Roach!
[ikiwiki.git] / docs / developer / GEMdrmKMS / index.mdwn
index 4372683..0221295 100644 (file)
@@ -154,9 +154,43 @@ The latest drm code from FreeBSD 9.x current has been successfully ported to Dra
 Current work on porting the Linux drm to DragonFly BSD can be found in
 git branch **gsocdrmalpha** git://leaf.dragonflybsd.org/~davshao/dragonfly.git
 
-As of Wednesday, May 26, 2010, the first goal is to port the API from *drm.h* and *drmP.h*.
+As of Friday, July 16, 2010, weeks of work have brought us to where many good things are on the cusp of happening.
 
-I have ported the easy 90% that does not require changing any working code.  The next harder step
-will be to fully use the already existing implementation of *list_head* to replace the custom list
-and locking for agp memory.
+### Data structures for minors and masters ported
+
+Linux drm has data structures for representing different devices, say */dev/dri/card0*, which are analogous to device minors,
+and for representing a current master process that has authentication for using such a device.  These data structures
+have now been ported to the latest DragonFly BSD port of drm.  The minors allow the possibility of eventually using
+dual-headed cards, and also there is a concept of a legacy minor and a control minor.  However, Linux has code for
+what it calls the VGA arbiter for which the BSDs may not have an equivalent.
+
+### Locking porting almost done
+
+The legacy BSD code was using an equivalent of one global lock for a drm device and the Linux code had
+moved on to use many more locks, as well as using a different global lock for a drm device.  The bulk of
+porting time has been spent carefully changing locking to fit the Linux model while having all machines
+continue to function, a process of locking up a test machine and then figuring how to fix the lockup.
+As of July 16, we are very close to basically using the Linux drm locks, translated in DragonFly BSD terms
+simply using *lockmgr*.  We are well aware that on DragonFly BSD in particular there are much better
+alternatives, but we are for now using a lowest common denominator just to get things working in some
+fashion.
+
+The combination of porting the minor/master data structures and the Linux drm locking means that 
+DragonFly BSD is very close to speaking the same language as Linux drm.
+
+## Next steps
+
+### Equivalent of *struct page*
+
+Every operating system will have an abstraction for virtual memory pages that can have a variety of
+mappings, but Linux's appears to have a concept allowing mapping more than the virtual memory space allocated
+in the upper half of virtual memory on 32-bit machines, about 1 GB.  We are investigating what will be
+the best translation to DragonFly BSD--if worse comes to worse perhaps only cards of lower graphics memory
+capacity can be supported.
+
+### i2c support for user modesetting
+
+Thanks to fellow DragonFly BSD developers the i2c bus API has been updated to reflect later work from
+FreeBSD.  We anticipate being able to map the Linux drm i2c callbacks directly to this API.