Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

DRM: example fails to page flip with EBUSY

Ouverte
#271 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

@esposm03 y travaille déjà.

Depuis le 20/6/2025.

  • #272 par @esposm03 — ouverte

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
30/100
Type d'issue
Bug
Clarté
À clarifier
Activité
À l'abandon
Stack technique
linux, rust

Piste de recherche

Commencez par l’exemple drm du dépôt et reproduisez l’échec du premier page flip sur la configuration Linux DRM signalée. Comparez son comportement avec celui de l’exemple fonctionnel legacy_modeset dans le drm-rs de Smithay, puis suivez les erreurs de page flip et de fallback jusqu’à ce que l’exemple termine son premier flip sans EBUSY.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

bug DS - DRM/KMS

The drm example fails for me while trying the first page filp (of course, no other software is using the DRM). I have tried the legacy_modeset example of https://github.com/Smithay/drm-rs and it works, so I'm probably missing something, but I'm at a loss about what. Anyway, the output is:

Drawing tick 1
Error: PlatformError(Some("failed to page flip"), Some(Os { code: 16, kind: ResourceBusy, message: "Device or resource busy" }))

and, when run through strace, the output is:

$ strace -e ioctl ./drm
ioctl(3, DRM_IOCTL_MODE_GETRESOURCES, 0xbeff5840) = 0
ioctl(3, DRM_IOCTL_MODE_GETRESOURCES, 0xbeff5898) = 0
ioctl(3, DRM_IOCTL_MODE_GETCONNECTOR, 0xbeff5580) = 0
ioctl(3, DRM_IOCTL_MODE_GETCONNECTOR, 0xbeff5690) = 0
ioctl(3, DRM_IOCTL_MODE_GETRESOURCES, 0xbeff5960) = 0
ioctl(3, DRM_IOCTL_MODE_GETRESOURCES, 0xbeff59b8) = 0
ioctl(3, DRM_IOCTL_MODE_GETCONNECTOR, 0xbeff5330) = 0
ioctl(3, DRM_IOCTL_MODE_GETCONNECTOR, 0xbeff5440) = 0
ioctl(3, DRM_IOCTL_MODE_GETCRTC, 0xbeff5200) = 0
ioctl(3, DRM_IOCTL_MODE_GETPLANERESOURCES, 0xbeff5c00) = 0
ioctl(3, DRM_IOCTL_MODE_GETPLANERESOURCES, 0xbeff5c28) = 0
ioctl(3, DRM_IOCTL_MODE_GETPLANE, 0xbeff5940) = 0
ioctl(3, DRM_IOCTL_MODE_GETPLANE, 0xbeff59b8) = 0
ioctl(3, DRM_IOCTL_MODE_OBJ_GETPROPERTIES, 0xbeff58b0) = 0
ioctl(3, DRM_IOCTL_MODE_OBJ_GETPROPERTIES, 0xbeff5908) = 0
ioctl(3, DRM_IOCTL_MODE_GETPROPERTY, 0xbeff56c0) = 0
ioctl(3, DRM_IOCTL_MODE_GETPROPERTY, 0xbeff56c0) = 0
ioctl(3, DRM_IOCTL_MODE_GETPLANE, 0xbeff43e8) = 0
ioctl(3, DRM_IOCTL_MODE_GETPLANE, 0xbeff4460) = 0
ioctl(3, DRM_IOCTL_MODE_GETRESOURCES, 0xbeff4260) = 0
ioctl(3, DRM_IOCTL_MODE_GETRESOURCES, 0xbeff42b8) = 0
ioctl(3, DRM_IOCTL_MODE_GETCRTC, 0xbeff41e8) = 0
ioctl(3, DRM_IOCTL_MODE_GETENCODER, 0xbeff3fc0) = 0
ioctl(3, DRM_IOCTL_MODE_GETCONNECTOR, 0xbeff3ae8) = 0
ioctl(3, DRM_IOCTL_MODE_GETCONNECTOR, 0xbeff3bf8) = 0
ioctl(3, DRM_IOCTL_MODE_CREATE_DUMB, 0xbeff57e0) = 0
ioctl(3, DRM_IOCTL_MODE_ADDFB, 0xbeff580c) = 0
ioctl(3, DRM_IOCTL_MODE_CREATE_DUMB, 0xbeff57e0) = 0
ioctl(3, DRM_IOCTL_MODE_ADDFB, 0xbeff580c) = 0
Drawing tick 1
ioctl(3, DRM_IOCTL_MODE_MAP_DUMB, 0xbeff57e0) = 0
ioctl(3, DRM_IOCTL_MODE_DIRTYFB, 0xbeff5968) = -1 ENOSYS (Function not implemented)
ioctl(3, DRM_IOCTL_MODE_PAGE_FLIP, 0xbeff59e0) = -1 EBUSY (Device or resource busy)
ioctl(3, DRM_IOCTL_MODE_SETCRTC, 0xbeff57a8) = -1 ENOENT (No such file or directory)
Error: PlatformError(Some("failed to page flip"), Some(Os { code: 16, kind: ResourceBusy, message: "Device or resource busy" }))
+++ exited with 1 +++

Output of dmesg after running echo 0x1FF > /sys/module/drm/parameters/debug (if it helps, I don't see anything that stands out):

[ 1562.723216] [drm:drm_stub_open]
[ 1562.725739] [drm:drm_open] comm="drm", pid=1596, minor=0
[ 1562.736148] [drm:drm_legacy_setup]
[ 1562.741258] [drm:drm_ioctl] comm="drm" pid=1596, dev=0xe200, auth=1, DRM_IOCTL_MODE_GETRESOURCES
[ 1562.751288] [drm:drm_ioctl] comm="drm" pid=1596, dev=0xe200, auth=1, DRM_IOCTL_MODE_GETRESOURCES
[ 1562.761361] [drm:drm_ioctl] comm="drm" pid=1596, dev=0xe200, auth=1, DRM_IOCTL_MODE_GETCONNECTOR
[ 1562.771022] [drm:drm_mode_object_put.part.0] OBJ ID: 32 (3)
[ 1562.776034] [drm:drm_ioctl] comm="drm" pid=1596, dev=0xe200, auth=1, DRM_IOCTL_MODE_GETCONNECTOR
[ 1562.788027] [drm:drm_mode_object_put.part.0] OBJ ID: 32 (3)
[ 1562.793368] [drm:drm_ioctl] comm="drm" pid=1596, dev=0xe200, auth=1, DRM_IOCTL_MODE_GETRESOURCES
[ 1562.805019] [drm:drm_ioctl] comm="drm" pid=1596, dev=0xe200, auth=1, DRM_IOCTL_MODE_GETRESOURCES
[ 1562.815105] [drm:drm_ioctl] comm="drm" pid=1596, dev=0xe200, auth=1, DRM_IOCTL_MODE_GETCONNECTOR
[ 1562.824827] [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:32:DPI-1]
[ 1562.833157] [drm:ltdc_crtc_mode_valid] clk rate target 30000000, available 30000000
[ 1562.842140] [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:32:DPI-1] probed modes :
[ 1562.851654] [drm:drm_mode_debug_printmodeline] Modeline "800x480": 53 30000 800 1010 1020 1066 480 502 507 530 0x48 0xa
[ 1562.863491] [drm:drm_mode_object_put.part.0] OBJ ID: 32 (3)
[ 1562.870007] [drm:drm_ioctl] comm="drm" pid=1596, dev=0xe200, auth=1, DRM_IOCTL_MODE_GETCONNECTOR
[ 1562.879699] [drm:drm_mode_object_put.part.0] OBJ ID: 32 (3)
[ 1562.886458] [drm:drm_ioctl] comm="drm" pid=1596, dev=0xe200, auth=1, DRM_IOCTL_MODE_GETCRTC
[ 1562.895872] [drm:drm_ioctl] comm="drm" pid=1596, dev=0xe200, auth=1, DRM_IOCTL_MODE_GETPLANERESOURCES
[ 1562.906373] [drm:drm_ioctl] comm="drm" pid=1596, dev=0xe200, auth=1, DRM_IOCTL_MODE_GETPLANERESOURCES
[ 1562.916615] [drm:drm_ioctl] comm="drm" pid=1596, dev=0xe200, auth=1, DRM_IOCTL_MODE_GETPLANE
[ 1562.926311] [drm:drm_ioctl] comm="drm" pid=1596, dev=0xe200, auth=1, DRM_IOCTL_MODE_GETPLANE
[ 1562.935795] [drm:drm_ioctl] comm="drm" pid=1596, dev=0xe200, auth=1, DRM_IOCTL_MODE_OBJ_GETPROPERTIES
[ 1562.946094] [drm:drm_ioctl] comm="drm" pid=1596, dev=0xe200, auth=1, DRM_IOCTL_MODE_OBJ_GETPROPERTIES
[ 1562.956634] [drm:drm_ioctl] comm="drm" pid=1596, dev=0xe200, auth=1, DRM_IOCTL_MODE_GETPROPERTY
[ 1562.966432] [drm:drm_ioctl] comm="drm" pid=1596, dev=0xe200, auth=1, DRM_IOCTL_MODE_GETPROPERTY
[ 1562.976401] [drm:drm_ioctl] comm="drm" pid=1596, dev=0xe200, auth=1, DRM_IOCTL_MODE_GETPLANE
[ 1562.985868] [drm:drm_ioctl] comm="drm" pid=1596, dev=0xe200, auth=1, DRM_IOCTL_MODE_GETPLANE
[ 1562.995237] [drm:drm_ioctl] comm="drm" pid=1596, dev=0xe200, auth=1, DRM_IOCTL_MODE_GETRESOURCES
[ 1563.005251] [drm:drm_ioctl] comm="drm" pid=1596, dev=0xe200, auth=1, DRM_IOCTL_MODE_GETRESOURCES
[ 1563.015296] [drm:drm_ioctl] comm="drm" pid=1596, dev=0xe200, auth=1, DRM_IOCTL_MODE_GETCRTC
[ 1563.024833] [drm:drm_ioctl] comm="drm" pid=1596, dev=0xe200, auth=1, DRM_IOCTL_MODE_GETENCODER
[ 1563.034890] [drm:drm_ioctl] comm="drm" pid=1596, dev=0xe200, auth=1, DRM_IOCTL_MODE_GETCONNECTOR
[ 1563.046099] [drm:drm_mode_object_put.part.0] OBJ ID: 32 (3)
[ 1563.052678] [drm:drm_ioctl] comm="drm" pid=1596, dev=0xe200, auth=1, DRM_IOCTL_MODE_GETCONNECTOR
[ 1563.062548] [drm:drm_mode_object_put.part.0] OBJ ID: 32 (3)
[ 1563.069357] [drm:drm_ioctl] comm="drm" pid=1596, dev=0xe200, auth=1, DRM_IOCTL_MODE_CREATE_DUMB
[ 1563.096140] [drm:drm_ioctl] comm="drm" pid=1596, dev=0xe200, auth=1, DRM_IOCTL_MODE_ADDFB
[ 1563.103837] stm32-display 5a001000.display-controller: [drm:drm_mode_addfb2] [FB:49]
[ 1563.119119] [drm:drm_ioctl] comm="drm" pid=1596, dev=0xe200, auth=1, DRM_IOCTL_MODE_CREATE_DUMB
[ 1563.131434] [drm:drm_ioctl] comm="drm" pid=1596, dev=0xe200, auth=1, DRM_IOCTL_MODE_ADDFB
[ 1563.139501] stm32-display 5a001000.display-controller: [drm:drm_mode_addfb2] [FB:50]
[ 1563.156885] [drm:drm_ioctl] comm="drm" pid=1596, dev=0xe200, auth=1, DRM_IOCTL_MODE_MAP_DUMB
[ 1563.200312] [drm:drm_ioctl] comm="drm" pid=1596, dev=0xe200, auth=1, DRM_IOCTL_MODE_DIRTYFB
[ 1563.208385] [drm:drm_mode_object_put.part.0] OBJ ID: 49 (2)
[ 1563.214221] [drm:drm_ioctl] comm="drm", pid=1596, ret=-38
[ 1563.227757] [drm:drm_ioctl] comm="drm" pid=1596, dev=0xe200, auth=1, DRM_IOCTL_MODE_PAGE_FLIP
[ 1563.236096] [drm:drm_ioctl] comm="drm", pid=1596, ret=-16
[ 1563.244643] [drm:drm_ioctl] comm="drm" pid=1596, dev=0xe200, auth=1, DRM_IOCTL_MODE_SETCRTC
[ 1563.254226] [drm:drm_mode_setcrtc] [CRTC:41:crtc-0]
[ 1563.260153] [drm:drm_mode_setcrtc] Unknown FB ID0
[ 1563.264187] [drm:drm_ioctl] comm="drm", pid=1596, ret=-2
[ 1563.272659] [drm:drm_release] open_count = 1
[ 1563.276289] [drm:drm_file_free.part.0] comm="drm", pid=1596, dev=0xe200, open_count=1
[ 1563.288789] [drm:drm_mode_object_put.part.0] OBJ ID: 50 (1)
[ 1563.293750] [drm:drm_mode_object_put.part.0] OBJ ID: 49 (1)
[ 1563.303107] [drm:_drm_lease_revoke] revoke leases for 4560017b 0
[ 1563.310178] [drm:drm_lease_destroy] drm_lease_destroy 0
[ 1563.314713] [drm:drm_master_destroy] drm_lease_destroy done 0
[ 1563.323514] [drm:drm_lastclose]
[ 1563.326033] [drm:drm_lastclose] driver lastclose completed
Langage dominant
Rust
Étoiles
507
Forks
85
Métriques de merge des PR
Aucune PR mergée en 30 j

Préparer son environnement

  • Aucun Dockerfile ni fichier Docker Compose
  • Propose un modèle de pull request
  • Aucun guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de rust-windowing/softbuffer

Toutes les issues de rust-windowing/softbuffer

Issues similaires

Plus d'issues Rust

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.