Skip to content

DRM: example fails to page flip with EBUSY #271

Open
@esposm03

Description

@esposm03

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions