Skip to content

vc4-drm: asynchronous atomic pageflipping still not working? #40

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
vanfanel opened this issue Jun 19, 2016 · 2 comments
Closed

vc4-drm: asynchronous atomic pageflipping still not working? #40

vanfanel opened this issue Jun 19, 2016 · 2 comments

Comments

@vanfanel
Copy link

vanfanel commented Jun 19, 2016

Hi,

Trying to do:
drmModeAtomicCommit(drm.fd, req, DRM_MODE_PAGE_FLIP_EVENT|DRM_MODE_PAGE_FLIP_ASYNC, &pipe);

results on synchronous drmModeAtomicCommit() call: it returns when pageflip is done, instead of returning immediately as it is supposed to do.
So I was wondering if asynchronous atomic pageflipping is supposed to be working already with this KMS/DRM driver or not.
If it's not, I could implement my own thread, but having this block in the main thread is not desired at all for CPU-intensive emulation: we don't have CPU time to waste waiting for vsync.
But I would like to know if it's supposed to be working already.

Thanks!

@anholt
Copy link
Owner

anholt commented Jul 3, 2016

Async pageflips should be working, and given the performance boosts I've seen, it seemed like they were. You probably want to instrument vc4_atomic_commit() to see where you might be blocking.

@anholt
Copy link
Owner

anholt commented Sep 6, 2016

My best guess would be that you were running into a lack of commit e7c31f6 in the kernel, and the userspace was submitting the next flip before it should try to. Closing due to previous lack of feedback, feel free to reopen if you have more debug.

@anholt anholt closed this as completed Sep 6, 2016
anholt pushed a commit that referenced this issue Nov 13, 2017
commit f581a0d upstream.

wl1251: add a missing spin_lock_init()

This fixes the following kernel warning:

 [ 5668.771453] BUG: spinlock bad magic on CPU#0, kworker/u2:3/9745
 [ 5668.771850]  lock: 0xce63ef20, .magic: 00000000, .owner: <none>/-1,
 .owner_cpu: 0
 [ 5668.772277] CPU: 0 PID: 9745 Comm: kworker/u2:3 Tainted: G        W
 4.12.0-03002-gec979a4-dirty #40
 [ 5668.772796] Hardware name: Nokia RX-51 board
 [ 5668.773071] Workqueue: phy1 wl1251_irq_work
 [ 5668.773345] [<c010c9e4>] (unwind_backtrace) from [<c010a274>]
 (show_stack+0x10/0x14)
 [ 5668.773803] [<c010a274>] (show_stack) from [<c01545a4>]
 (do_raw_spin_lock+0x6c/0xa0)
 [ 5668.774230] [<c01545a4>] (do_raw_spin_lock) from [<c06ca578>]
 (_raw_spin_lock_irqsave+0x10/0x18)
 [ 5668.774658] [<c06ca578>] (_raw_spin_lock_irqsave) from [<c048c010>]
 (wl1251_op_tx+0x38/0x5c)
 [ 5668.775115] [<c048c010>] (wl1251_op_tx) from [<c06a12e8>]
 (ieee80211_tx_frags+0x188/0x1c0)
 [ 5668.775543] [<c06a12e8>] (ieee80211_tx_frags) from [<c06a138c>]
 (__ieee80211_tx+0x6c/0x130)
 [ 5668.775970] [<c06a138c>] (__ieee80211_tx) from [<c06a3dbc>]
 (ieee80211_tx+0xdc/0x104)
 [ 5668.776367] [<c06a3dbc>] (ieee80211_tx) from [<c06a4af0>]
 (__ieee80211_subif_start_xmit+0x454/0x8c8)
 [ 5668.776824] [<c06a4af0>] (__ieee80211_subif_start_xmit) from
 [<c06a4f94>] (ieee80211_subif_start_xmit+0x30/0x2fc)
 [ 5668.777343] [<c06a4f94>] (ieee80211_subif_start_xmit) from
 [<c0578848>] (dev_hard_start_xmit+0x80/0x118)
...

    by adding the missing spin_lock_init().

Reported-by: Pavel Machek <pavel@ucw.cz>
Cc: Kalle Valo <kvalo@codeaurora.org>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Acked-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Signed-off-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants