mirror of https://gitee.com/openkylin/linux.git
drm: require a non_NULL drm_crtc.primary
If a CRTC is missing a legacy primary plane pointer, a lot of things will be broken for user-space: fbdev stops working and the entire legacy uAPI stops working. Require all drivers to populate drm_crtc.primary to prevent these issues. Warn if it's NULL. Signed-off-by: Simon Ser <contact@emersion.fr> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Acked-by: Pekka Paalanen <pekka.paalanen@collabora.com> Link: https://patchwork.freedesktop.org/patch/msgid/20201211184634.74534-3-contact@emersion.fr
This commit is contained in:
parent
6d84576fb2
commit
2200736a0c
|
@ -639,6 +639,9 @@ void drm_mode_config_validate(struct drm_device *dev)
|
|||
}
|
||||
|
||||
drm_for_each_crtc(crtc, dev) {
|
||||
WARN(!crtc->primary, "Missing primary plane on [CRTC:%d:%s]\n",
|
||||
crtc->base.id, crtc->name);
|
||||
|
||||
if (crtc->primary) {
|
||||
WARN(!(crtc->primary->possible_crtcs & drm_crtc_mask(crtc)),
|
||||
"Bogus primary plane possible_crtcs: [PLANE:%d:%s] must be compatible with [CRTC:%d:%s]\n",
|
||||
|
|
|
@ -57,7 +57,7 @@
|
|||
* Legacy uAPI doesn't expose the primary and cursor planes directly. DRM core
|
||||
* relies on the driver to set the primary and optionally the cursor plane used
|
||||
* for legacy IOCTLs. This is done by calling drm_crtc_init_with_planes(). All
|
||||
* drivers should provide one primary plane per CRTC to avoid surprising legacy
|
||||
* drivers must provide one primary plane per CRTC to avoid surprising legacy
|
||||
* userspace too much.
|
||||
*/
|
||||
|
||||
|
|
Loading…
Reference in New Issue