*
         * Allow full modeset. This is used by the ATOMIC IOCTL handler to
         * implement the DRM_MODE_ATOMIC_ALLOW_MODESET flag. Drivers should
-        * never consult this flag, instead looking at the output of
-        * drm_atomic_crtc_needs_modeset().
+        * generally not consult this flag, but instead look at the output of
+        * drm_atomic_crtc_needs_modeset(). The detailed rules are:
+        *
+        * - Drivers must not consult @allow_modeset in the atomic commit path.
+        *   Use drm_atomic_crtc_needs_modeset() instead.
+        *
+        * - Drivers must consult @allow_modeset before adding unrelated struct
+        *   drm_crtc_state to this commit by calling
+        *   drm_atomic_get_crtc_state(). See also the warning in the
+        *   documentation for that function.
+        *
+        * - Drivers must never change this flag, it is under the exclusive
+        *   control of userspace.
+        *
+        * - Drivers may consult @allow_modeset in the atomic check path, if
+        *   they have the choice between an optimal hardware configuration
+        *   which requires a modeset, and a less optimal configuration which
+        *   can be committed without a modeset. An example would be suboptimal
+        *   scanout FIFO allocation resulting in increased idle power
+        *   consumption. This allows userspace to avoid flickering and delays
+        *   for the normal composition loop at reasonable cost.
         */
        bool allow_modeset : 1;
        /**