|
@@ -323,9 +323,8 @@ void drm_minor_release(struct drm_minor *minor)
|
|
|
* historical baggage. Hence use the reference counting provided by
|
|
|
* drm_dev_ref() and drm_dev_unref() only carefully.
|
|
|
*
|
|
|
- * Also note that embedding of &drm_device is currently not (yet) supported (but
|
|
|
- * it would be easy to add). Drivers can store driver-private data in the
|
|
|
- * dev_priv field of &drm_device.
|
|
|
+ * It is recommended that drivers embed struct &drm_device into their own device
|
|
|
+ * structure, which is supported through drm_dev_init().
|
|
|
*/
|
|
|
|
|
|
/**
|
|
@@ -462,7 +461,11 @@ static void drm_fs_inode_free(struct inode *inode)
|
|
|
* Note that for purely virtual devices @parent can be NULL.
|
|
|
*
|
|
|
* Drivers that do not want to allocate their own device struct
|
|
|
- * embedding struct &drm_device can call drm_dev_alloc() instead.
|
|
|
+ * embedding struct &drm_device can call drm_dev_alloc() instead. For drivers
|
|
|
+ * that do embed struct &drm_device it must be placed first in the overall
|
|
|
+ * structure, and the overall structure must be allocated using kmalloc(): The
|
|
|
+ * drm core's release function unconditionally calls kfree() on the @dev pointer
|
|
|
+ * when the final reference is released.
|
|
|
*
|
|
|
* RETURNS:
|
|
|
* 0 on success, or error code on failure.
|