Skip to content
GitLab
  • Menu
Projects Groups Snippets
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
  • Sign in / Register
  • L linux
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 129
    • Issues 129
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 23
    • Merge requests 23
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Container Registry
    • Infrastructure Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Librem5
  • linux
  • Issues
  • #384
Closed
Open
Created Dec 20, 2021 by Martin Kepplinger@martin.kepplingerOwner

redpine: locking bug after system resume

after resuming from suspend I often see

    [  846.920253] INFO: task kworker/u8:19:1715 blocked for more than 120 seconds.
    [  846.927351]       Tainted: G         C        5.15.3-librem5-00348-g1c083b116187 #680
    [  846.935224] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
    [  846.943084] task:kworker/u8:19   state:D stack:    0 pid: 1715 ppid:     2 flags:0x00000008
    [  846.943105] Workqueue: phy0 ieee80211_iface_work [mac80211]
    [  846.943384] Call trace:
    [  846.943388]  __switch_to+0x138/0x190
    [  846.943406]  __schedule+0x288/0x6ec
    [  846.943420]  schedule+0x7c/0x110
    [  846.943435]  schedule_preempt_disabled+0x30/0x4c
    [  846.943450]  __mutex_lock.constprop.0+0x194/0x570
    [  846.943463]  __mutex_lock_slowpath+0x1c/0x30
    [  846.943474]  mutex_lock+0x54/0x60
    [  846.943483]  rsi_mac80211_ampdu_action+0x84/0x31c [redpine_91x]
    [  846.943531]  drv_ampdu_action+0x6c/0x270 [mac80211]
    [  846.943729]  ___ieee80211_start_rx_ba_session+0x3ec/0x630 [mac80211]
    [  846.943922]  ieee80211_process_addba_request+0xf4/0x1a0 [mac80211]
    [  846.944140]  ieee80211_iface_work+0x3ac/0x3dc [mac80211]
    [  846.944335]  process_one_work+0x208/0x4bc
    [  846.944349]  worker_thread+0x148/0x47c
    [  846.944359]  kthread+0x15c/0x170
    [  846.944369]  ret_from_fork+0x10/0x20

and my workaround is

--- a/drivers/net/wireless/redpine/rsi_91x_mac80211.c
+++ b/drivers/net/wireless/redpine/rsi_91x_mac80211.c
@@ -1768,8 +1768,6 @@ static int rsi_mac80211_ampdu_action(struct ieee80211_hw *hw,
                        break;
        }
 
-       mutex_lock(&common->mutex);
-
 #if (((LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 69)) && \
       (LINUX_VERSION_CODE < KERNEL_VERSION(4, 5, 0))) || \
      (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0)))
@@ -1869,7 +1867,6 @@ static int rsi_mac80211_ampdu_action(struct ieee80211_hw *hw,
                break;
        }
 
-       mutex_unlock(&common->mutex);
        return status;
 }

fix it properly.

Assignee
Assign to
Time tracking