Message ID | 20210104101128.8217-1-cjhuang@codeaurora.org |
---|---|
State | Accepted |
Commit | 6ffcc18d9c0b4522c95aab71ff3ff5a56e699945 |
Headers | show |
Series | [v3] mhi: use irq_flags if controller driver configures it | expand |
Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> writes: > On Mon, Jan 04, 2021 at 06:11:28PM +0800, Carl Huang wrote: >> If controller driver has specified the irq_flags, mhi uses this specified >> irq_flags. Otherwise, mhi uses default irq_flags. >> >> The purpose of this change is to support one MSI vector for QCA6390. >> MHI will use one same MSI vector too in this scenario. >> >> In case of one MSI vector, IRQ_NO_BALANCING is needed when irq handler >> is requested. The reason is if irq migration happens, the msi_data may >> change too. However, the msi_data is already programmed to QCA6390 >> hardware during initialization phase. This msi_data inconsistence will >> result in crash in kernel. >> >> Another issue is in case of one MSI vector, IRQF_NO_SUSPEND will trigger >> WARNINGS because QCA6390 wants to disable the IRQ during the suspend. >> >> To avoid above two issues, QCA6390 driver specifies the irq_flags in case >> of one MSI vector when mhi_register_controller is called. >> >> Signed-off-by: Carl Huang <cjhuang@codeaurora.org> >> Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> > > Applied to mhi-next! Would it be possible again to have an immutable branch for this commit? We need it for implementing one MHI support to ath11k[1] required by Dell XPS 13 9310 laptops, which a lot of people are waiting. Otherwise I can only apply the feature for v5.13, which will be released on July. [1] https://patchwork.kernel.org/project/linux-wireless/list/?series=405591&state=* -- https://patchwork.kernel.org/project/linux-wireless/list/ https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
On Wed, Jan 13, 2021 at 09:40:19AM +0200, Kalle Valo wrote: > Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> writes: > > > On Mon, Jan 04, 2021 at 06:11:28PM +0800, Carl Huang wrote: > >> If controller driver has specified the irq_flags, mhi uses this specified > >> irq_flags. Otherwise, mhi uses default irq_flags. > >> > >> The purpose of this change is to support one MSI vector for QCA6390. > >> MHI will use one same MSI vector too in this scenario. > >> > >> In case of one MSI vector, IRQ_NO_BALANCING is needed when irq handler > >> is requested. The reason is if irq migration happens, the msi_data may > >> change too. However, the msi_data is already programmed to QCA6390 > >> hardware during initialization phase. This msi_data inconsistence will > >> result in crash in kernel. > >> > >> Another issue is in case of one MSI vector, IRQF_NO_SUSPEND will trigger > >> WARNINGS because QCA6390 wants to disable the IRQ during the suspend. > >> > >> To avoid above two issues, QCA6390 driver specifies the irq_flags in case > >> of one MSI vector when mhi_register_controller is called. > >> > >> Signed-off-by: Carl Huang <cjhuang@codeaurora.org> > >> Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> > > > > Applied to mhi-next! > > Would it be possible again to have an immutable branch for this commit? > We need it for implementing one MHI support to ath11k[1] required by > Dell XPS 13 9310 laptops, which a lot of people are waiting. Otherwise I > can only apply the feature for v5.13, which will be released on July. > Dropped this patch from mhi-next and applied to mhi-ath11k-immutable branch: https://git.kernel.org/pub/scm/linux/kernel/git/mani/mhi.git/log/?h=mhi-ath11k-immutable This branch will also be merged into mhi-next. Thanks, Mani
Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> writes: > On Wed, Jan 13, 2021 at 09:40:19AM +0200, Kalle Valo wrote: >> Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> writes: >> >> > On Mon, Jan 04, 2021 at 06:11:28PM +0800, Carl Huang wrote: >> >> If controller driver has specified the irq_flags, mhi uses this specified >> >> irq_flags. Otherwise, mhi uses default irq_flags. >> >> >> >> The purpose of this change is to support one MSI vector for QCA6390. >> >> MHI will use one same MSI vector too in this scenario. >> >> >> >> In case of one MSI vector, IRQ_NO_BALANCING is needed when irq handler >> >> is requested. The reason is if irq migration happens, the msi_data may >> >> change too. However, the msi_data is already programmed to QCA6390 >> >> hardware during initialization phase. This msi_data inconsistence will >> >> result in crash in kernel. >> >> >> >> Another issue is in case of one MSI vector, IRQF_NO_SUSPEND will trigger >> >> WARNINGS because QCA6390 wants to disable the IRQ during the suspend. >> >> >> >> To avoid above two issues, QCA6390 driver specifies the irq_flags in case >> >> of one MSI vector when mhi_register_controller is called. >> >> >> >> Signed-off-by: Carl Huang <cjhuang@codeaurora.org> >> >> Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> >> > >> > Applied to mhi-next! >> >> Would it be possible again to have an immutable branch for this commit? >> We need it for implementing one MHI support to ath11k[1] required by >> Dell XPS 13 9310 laptops, which a lot of people are waiting. Otherwise I >> can only apply the feature for v5.13, which will be released on July. >> > > Dropped this patch from mhi-next and applied to mhi-ath11k-immutable branch: > https://git.kernel.org/pub/scm/linux/kernel/git/mani/mhi.git/log/?h=mhi-ath11k-immutable > > This branch will also be merged into mhi-next. Thanks a lot! And Greg will also pull this directly so that commit ids won't change? Just trying to avoid conflicts between ath and mhi trees as much as possible. -- https://patchwork.kernel.org/project/linux-wireless/list/ https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
On Tue, Jan 26, 2021 at 12:14:04PM +0200, Kalle Valo wrote: > Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> writes: > > > On Wed, Jan 13, 2021 at 09:40:19AM +0200, Kalle Valo wrote: > >> Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> writes: > >> [...] > >> > Applied to mhi-next! > >> > >> Would it be possible again to have an immutable branch for this commit? > >> We need it for implementing one MHI support to ath11k[1] required by > >> Dell XPS 13 9310 laptops, which a lot of people are waiting. Otherwise I > >> can only apply the feature for v5.13, which will be released on July. > >> > > > > Dropped this patch from mhi-next and applied to mhi-ath11k-immutable branch: > > https://git.kernel.org/pub/scm/linux/kernel/git/mani/mhi.git/log/?h=mhi-ath11k-immutable > > > > This branch will also be merged into mhi-next. > > Thanks a lot! > > And Greg will also pull this directly so that commit ids won't change? > Just trying to avoid conflicts between ath and mhi trees as much as > possible. > Yes, I'm gonna send a PR to Greg this time also! Thanks, Mani > -- > https://patchwork.kernel.org/project/linux-wireless/list/ > > https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
Hello: This patch was applied to qcom/linux.git (refs/heads/for-next): On Mon, 4 Jan 2021 18:11:28 +0800 you wrote: > If controller driver has specified the irq_flags, mhi uses this specified > irq_flags. Otherwise, mhi uses default irq_flags. > > The purpose of this change is to support one MSI vector for QCA6390. > MHI will use one same MSI vector too in this scenario. > > In case of one MSI vector, IRQ_NO_BALANCING is needed when irq handler > is requested. The reason is if irq migration happens, the msi_data may > change too. However, the msi_data is already programmed to QCA6390 > hardware during initialization phase. This msi_data inconsistence will > result in crash in kernel. > > [...] Here is the summary with links: - [v3] mhi: use irq_flags if controller driver configures it https://git.kernel.org/qcom/c/cdce2663ffb8 You are awesome, thank you! -- Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/patchwork/pwbot.html
diff --git a/drivers/bus/mhi/core/init.c b/drivers/bus/mhi/core/init.c index 381fdea..37903a8 100644 --- a/drivers/bus/mhi/core/init.c +++ b/drivers/bus/mhi/core/init.c @@ -148,12 +148,17 @@ int mhi_init_irq_setup(struct mhi_controller *mhi_cntrl) { struct mhi_event *mhi_event = mhi_cntrl->mhi_event; struct device *dev = &mhi_cntrl->mhi_dev->dev; + unsigned long irq_flags = IRQF_SHARED | IRQF_NO_SUSPEND; int i, ret; + /* if controller driver has set irq_flags, use it */ + if (mhi_cntrl->irq_flags) + irq_flags = mhi_cntrl->irq_flags; + /* Setup BHI_INTVEC IRQ */ ret = request_threaded_irq(mhi_cntrl->irq[0], mhi_intvec_handler, mhi_intvec_threaded_handler, - IRQF_SHARED | IRQF_NO_SUSPEND, + irq_flags, "bhi", mhi_cntrl); if (ret) return ret; @@ -171,7 +176,7 @@ int mhi_init_irq_setup(struct mhi_controller *mhi_cntrl) ret = request_irq(mhi_cntrl->irq[mhi_event->irq], mhi_irq_handler, - IRQF_SHARED | IRQF_NO_SUSPEND, + irq_flags, "mhi", mhi_event); if (ret) { dev_err(dev, "Error requesting irq:%d for ev:%d\n", diff --git a/include/linux/mhi.h b/include/linux/mhi.h index cb7cd54..77f1e3f 100644 --- a/include/linux/mhi.h +++ b/include/linux/mhi.h @@ -351,6 +351,7 @@ struct mhi_controller_config { * @fbc_download: MHI host needs to do complete image transfer (optional) * @pre_init: MHI host needs to do pre-initialization before power up * @wake_set: Device wakeup set flag + * @irq_flags: irq flags passed to request_irq (optional) * * Fields marked as (required) need to be populated by the controller driver * before calling mhi_register_controller(). For the fields marked as (optional) @@ -440,6 +441,7 @@ struct mhi_controller { bool fbc_download; bool pre_init; bool wake_set; + unsigned long irq_flags; }; /**