aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/drivers/soc/ti/ti_sci_inta_msi.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/soc/ti/ti_sci_inta_msi.c')
-rw-r--r--drivers/soc/ti/ti_sci_inta_msi.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/soc/ti/ti_sci_inta_msi.c b/drivers/soc/ti/ti_sci_inta_msi.c
index 193266f5e3f9..c36364522157 100644
--- a/drivers/soc/ti/ti_sci_inta_msi.c
+++ b/drivers/soc/ti/ti_sci_inta_msi.c
@@ -103,15 +103,19 @@ int ti_sci_inta_msi_domain_alloc_irqs(struct device *dev,
if (ret)
return ret;
- guard(msi_descs_lock)(dev);
+ msi_lock_descs(dev);
nvec = ti_sci_inta_msi_alloc_descs(dev, res);
- if (nvec <= 0)
- return nvec;
+ if (nvec <= 0) {
+ ret = nvec;
+ goto unlock;
+ }
/* Use alloc ALL as it's unclear whether there are gaps in the indices */
ret = msi_domain_alloc_irqs_all_locked(dev, MSI_DEFAULT_DOMAIN, nvec);
if (ret)
dev_err(dev, "Failed to allocate IRQs %d\n", ret);
+unlock:
+ msi_unlock_descs(dev);
return ret;
}
EXPORT_SYMBOL_GPL(ti_sci_inta_msi_domain_alloc_irqs);