Commit b91c3b30 authored by Loic Poulain's avatar Loic Poulain Committed by Manivannan Sadhasivam

mhi: pci_generic: Fix shared MSI vector support

When a shared MSI vector must be used (e.g. when VTd is disabled on
x86_64), each event MSI vector must be set to the shared vector idx.
Signed-off-by: default avatarLoic Poulain <loic.poulain@linaro.org>
Reviewed-by: default avatarManivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Reviewed-by: Hemant Kumar<hemantk@codeaurora.org>
Signed-off-by: default avatarManivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
parent fcba4b20
...@@ -154,7 +154,7 @@ static const struct mhi_channel_config modem_qcom_v1_mhi_channels[] = { ...@@ -154,7 +154,7 @@ static const struct mhi_channel_config modem_qcom_v1_mhi_channels[] = {
MHI_CHANNEL_CONFIG_HW_DL(101, "IP_HW0", 128, 3), MHI_CHANNEL_CONFIG_HW_DL(101, "IP_HW0", 128, 3),
}; };
static const struct mhi_event_config modem_qcom_v1_mhi_events[] = { static struct mhi_event_config modem_qcom_v1_mhi_events[] = {
/* first ring is control+data ring */ /* first ring is control+data ring */
MHI_EVENT_CONFIG_CTRL(0), MHI_EVENT_CONFIG_CTRL(0),
/* DIAG dedicated event ring */ /* DIAG dedicated event ring */
...@@ -164,7 +164,7 @@ static const struct mhi_event_config modem_qcom_v1_mhi_events[] = { ...@@ -164,7 +164,7 @@ static const struct mhi_event_config modem_qcom_v1_mhi_events[] = {
MHI_EVENT_CONFIG_HW_DATA(3, 101) MHI_EVENT_CONFIG_HW_DATA(3, 101)
}; };
static const struct mhi_controller_config modem_qcom_v1_mhiv_config = { static struct mhi_controller_config modem_qcom_v1_mhiv_config = {
.max_channels = 128, .max_channels = 128,
.timeout_ms = 8000, .timeout_ms = 8000,
.num_channels = ARRAY_SIZE(modem_qcom_v1_mhi_channels), .num_channels = ARRAY_SIZE(modem_qcom_v1_mhi_channels),
...@@ -295,8 +295,12 @@ static int mhi_pci_get_irqs(struct mhi_controller *mhi_cntrl, ...@@ -295,8 +295,12 @@ static int mhi_pci_get_irqs(struct mhi_controller *mhi_cntrl,
} }
if (nr_vectors < mhi_cntrl->nr_irqs) { if (nr_vectors < mhi_cntrl->nr_irqs) {
dev_warn(&pdev->dev, "Not enough MSI vectors (%d/%d), use shared MSI\n", dev_warn(&pdev->dev, "using shared MSI\n");
nr_vectors, mhi_cntrl_config->num_events);
/* Patch msi vectors, use only one (shared) */
for (i = 0; i < mhi_cntrl_config->num_events; i++)
mhi_cntrl_config->event_cfg[i].irq = 0;
mhi_cntrl->nr_irqs = 1;
} }
irq = devm_kcalloc(&pdev->dev, mhi_cntrl->nr_irqs, sizeof(int), GFP_KERNEL); irq = devm_kcalloc(&pdev->dev, mhi_cntrl->nr_irqs, sizeof(int), GFP_KERNEL);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment