qcacld-3.0: Change spin lock APIs to use spin lock IRQ

The spin lock APIs are accessed from wake MSI hard irq handler as well,
causing deadlock. To solve this, change spin lock APIs to use spin lock
IRQ.
CRs-Fixed: 2519986

Change-Id: I4d05abd294a71a26915210ae7e2be9be6aa7a996
This commit is contained in:
Alan Chen 2019-09-03 12:07:30 -07:00 committed by nshrivas
parent 39e2e21a83
commit 74e4dd0fd6

View File

@ -494,9 +494,12 @@ static inline
void pmo_core_update_wow_initial_wake_up(struct pmo_psoc_priv_obj *psoc_ctx,
bool value)
{
qdf_spin_lock_bh(&psoc_ctx->lock);
/* Intentionally using irq save since initial wake flag is updated
* from wake msi hard irq handler
*/
qdf_spin_lock_irqsave(&psoc_ctx->lock);
psoc_ctx->wow.wow_initial_wake_up = value;
qdf_spin_unlock_bh(&psoc_ctx->lock);
qdf_spin_unlock_irqrestore(&psoc_ctx->lock);
}
/**
@ -510,9 +513,12 @@ bool pmo_core_get_wow_initial_wake_up(struct pmo_psoc_priv_obj *psoc_ctx)
{
bool value;
qdf_spin_lock_bh(&psoc_ctx->lock);
/* Intentionally using irq save since initial wake flag is updated
* from wake msi hard irq handler
*/
qdf_spin_lock_irqsave(&psoc_ctx->lock);
value = psoc_ctx->wow.wow_initial_wake_up;
qdf_spin_unlock_bh(&psoc_ctx->lock);
qdf_spin_unlock_irqrestore(&psoc_ctx->lock);
return value;
}