From: Sasha Levin Date: Tue, 2 Mar 2021 19:57:39 +0000 (-0500) Subject: Drop i2c-i2c-qcom-geni-add-shutdown-callback-for-i2c.patch X-Git-Tag: v4.4.259~2 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=6d4b5432a959d3ffcc032db14a99f8fedddc5903;p=thirdparty%2Fkernel%2Fstable-queue.git Drop i2c-i2c-qcom-geni-add-shutdown-callback-for-i2c.patch Signed-off-by: Sasha Levin --- diff --git a/queue-5.10/i2c-i2c-qcom-geni-add-shutdown-callback-for-i2c.patch b/queue-5.10/i2c-i2c-qcom-geni-add-shutdown-callback-for-i2c.patch deleted file mode 100644 index e8126d36a13..00000000000 --- a/queue-5.10/i2c-i2c-qcom-geni-add-shutdown-callback-for-i2c.patch +++ /dev/null @@ -1,89 +0,0 @@ -From 90d5de8cca908bdf3ad2ecdacaf3c24753ebf786 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Fri, 8 Jan 2021 20:35:45 +0530 -Subject: i2c: i2c-qcom-geni: Add shutdown callback for i2c - -From: Roja Rani Yarubandi - -[ Upstream commit e0371298ddc51761be257698554ea507ac8bf831 ] - -If the hardware is still accessing memory after SMMU translation -is disabled (as part of smmu shutdown callback), then the -IOVAs (I/O virtual address) which it was using will go on the bus -as the physical addresses which will result in unknown crashes -like NoC/interconnect errors. - -So, implement shutdown callback to i2c driver to stop on-going transfer -and unmap DMA mappings during system "reboot" or "shutdown". - -Fixes: 37692de5d523 ("i2c: i2c-qcom-geni: Add bus driver for the Qualcomm GENI I2C controller") -Signed-off-by: Roja Rani Yarubandi -Reviewed-by: Akash Asthana -Signed-off-by: Wolfram Sang -Signed-off-by: Sasha Levin ---- - drivers/i2c/busses/i2c-qcom-geni.c | 34 ++++++++++++++++++++++++++++++ - 1 file changed, 34 insertions(+) - -diff --git a/drivers/i2c/busses/i2c-qcom-geni.c b/drivers/i2c/busses/i2c-qcom-geni.c -index 4a6dd05d6dbf9..221cba687fe02 100644 ---- a/drivers/i2c/busses/i2c-qcom-geni.c -+++ b/drivers/i2c/busses/i2c-qcom-geni.c -@@ -375,6 +375,32 @@ static void geni_i2c_tx_msg_cleanup(struct geni_i2c_dev *gi2c, - } - } - -+static void geni_i2c_stop_xfer(struct geni_i2c_dev *gi2c) -+{ -+ int ret; -+ u32 geni_status; -+ struct i2c_msg *cur; -+ -+ /* Resume device, as runtime suspend can happen anytime during transfer */ -+ ret = pm_runtime_get_sync(gi2c->se.dev); -+ if (ret < 0) { -+ dev_err(gi2c->se.dev, "Failed to resume device: %d\n", ret); -+ return; -+ } -+ -+ geni_status = readl_relaxed(gi2c->se.base + SE_GENI_STATUS); -+ if (geni_status & M_GENI_CMD_ACTIVE) { -+ cur = gi2c->cur; -+ geni_i2c_abort_xfer(gi2c); -+ if (cur->flags & I2C_M_RD) -+ geni_i2c_rx_msg_cleanup(gi2c, cur); -+ else -+ geni_i2c_tx_msg_cleanup(gi2c, cur); -+ } -+ -+ pm_runtime_put_sync_suspend(gi2c->se.dev); -+} -+ - static int geni_i2c_rx_one_msg(struct geni_i2c_dev *gi2c, struct i2c_msg *msg, - u32 m_param) - { -@@ -654,6 +680,13 @@ static int geni_i2c_remove(struct platform_device *pdev) - return 0; - } - -+static void geni_i2c_shutdown(struct platform_device *pdev) -+{ -+ struct geni_i2c_dev *gi2c = platform_get_drvdata(pdev); -+ -+ geni_i2c_stop_xfer(gi2c); -+} -+ - static int __maybe_unused geni_i2c_runtime_suspend(struct device *dev) - { - int ret; -@@ -718,6 +751,7 @@ MODULE_DEVICE_TABLE(of, geni_i2c_dt_match); - static struct platform_driver geni_i2c_driver = { - .probe = geni_i2c_probe, - .remove = geni_i2c_remove, -+ .shutdown = geni_i2c_shutdown, - .driver = { - .name = "geni_i2c", - .pm = &geni_i2c_pm_ops, --- -2.27.0 - diff --git a/queue-5.10/series b/queue-5.10/series index 80f1fe3ab91..721637779d3 100644 --- a/queue-5.10/series +++ b/queue-5.10/series @@ -329,7 +329,6 @@ mmc-usdhi6rol0-fix-a-resource-leak-in-the-error-hand.patch mmc-renesas_sdhi_internal_dmac-fix-dma-buffer-alignm.patch arm-9046-1-decompressor-do-not-clear-sctlr.ntlsmd-fo.patch i2c-qcom-geni-store-dma-mapping-data-in-geni_i2c_dev.patch -i2c-i2c-qcom-geni-add-shutdown-callback-for-i2c.patch amba-fix-resource-leak-for-drivers-without-.remove.patch iommu-move-iotlb_sync_map-out-from-__iommu_map.patch iommu-properly-pass-gfp_t-in-_iommu_map-to-avoid-ato.patch diff --git a/queue-5.11/i2c-i2c-qcom-geni-add-shutdown-callback-for-i2c.patch b/queue-5.11/i2c-i2c-qcom-geni-add-shutdown-callback-for-i2c.patch deleted file mode 100644 index 6d990e1049b..00000000000 --- a/queue-5.11/i2c-i2c-qcom-geni-add-shutdown-callback-for-i2c.patch +++ /dev/null @@ -1,89 +0,0 @@ -From 0bf33f7664dba5df567a84e883e58f9f024d102e Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Fri, 8 Jan 2021 20:35:45 +0530 -Subject: i2c: i2c-qcom-geni: Add shutdown callback for i2c - -From: Roja Rani Yarubandi - -[ Upstream commit e0371298ddc51761be257698554ea507ac8bf831 ] - -If the hardware is still accessing memory after SMMU translation -is disabled (as part of smmu shutdown callback), then the -IOVAs (I/O virtual address) which it was using will go on the bus -as the physical addresses which will result in unknown crashes -like NoC/interconnect errors. - -So, implement shutdown callback to i2c driver to stop on-going transfer -and unmap DMA mappings during system "reboot" or "shutdown". - -Fixes: 37692de5d523 ("i2c: i2c-qcom-geni: Add bus driver for the Qualcomm GENI I2C controller") -Signed-off-by: Roja Rani Yarubandi -Reviewed-by: Akash Asthana -Signed-off-by: Wolfram Sang -Signed-off-by: Sasha Levin ---- - drivers/i2c/busses/i2c-qcom-geni.c | 34 ++++++++++++++++++++++++++++++ - 1 file changed, 34 insertions(+) - -diff --git a/drivers/i2c/busses/i2c-qcom-geni.c b/drivers/i2c/busses/i2c-qcom-geni.c -index 214b4c913a139..c3f5847959116 100644 ---- a/drivers/i2c/busses/i2c-qcom-geni.c -+++ b/drivers/i2c/busses/i2c-qcom-geni.c -@@ -375,6 +375,32 @@ static void geni_i2c_tx_msg_cleanup(struct geni_i2c_dev *gi2c, - } - } - -+static void geni_i2c_stop_xfer(struct geni_i2c_dev *gi2c) -+{ -+ int ret; -+ u32 geni_status; -+ struct i2c_msg *cur; -+ -+ /* Resume device, as runtime suspend can happen anytime during transfer */ -+ ret = pm_runtime_get_sync(gi2c->se.dev); -+ if (ret < 0) { -+ dev_err(gi2c->se.dev, "Failed to resume device: %d\n", ret); -+ return; -+ } -+ -+ geni_status = readl_relaxed(gi2c->se.base + SE_GENI_STATUS); -+ if (geni_status & M_GENI_CMD_ACTIVE) { -+ cur = gi2c->cur; -+ geni_i2c_abort_xfer(gi2c); -+ if (cur->flags & I2C_M_RD) -+ geni_i2c_rx_msg_cleanup(gi2c, cur); -+ else -+ geni_i2c_tx_msg_cleanup(gi2c, cur); -+ } -+ -+ pm_runtime_put_sync_suspend(gi2c->se.dev); -+} -+ - static int geni_i2c_rx_one_msg(struct geni_i2c_dev *gi2c, struct i2c_msg *msg, - u32 m_param) - { -@@ -650,6 +676,13 @@ static int geni_i2c_remove(struct platform_device *pdev) - return 0; - } - -+static void geni_i2c_shutdown(struct platform_device *pdev) -+{ -+ struct geni_i2c_dev *gi2c = platform_get_drvdata(pdev); -+ -+ geni_i2c_stop_xfer(gi2c); -+} -+ - static int __maybe_unused geni_i2c_runtime_suspend(struct device *dev) - { - int ret; -@@ -714,6 +747,7 @@ MODULE_DEVICE_TABLE(of, geni_i2c_dt_match); - static struct platform_driver geni_i2c_driver = { - .probe = geni_i2c_probe, - .remove = geni_i2c_remove, -+ .shutdown = geni_i2c_shutdown, - .driver = { - .name = "geni_i2c", - .pm = &geni_i2c_pm_ops, --- -2.27.0 - diff --git a/queue-5.11/series b/queue-5.11/series index e52a0e01aee..a742f2eb5f9 100644 --- a/queue-5.11/series +++ b/queue-5.11/series @@ -397,7 +397,6 @@ mmc-usdhi6rol0-fix-a-resource-leak-in-the-error-hand.patch mmc-renesas_sdhi_internal_dmac-fix-dma-buffer-alignm.patch arm-9046-1-decompressor-do-not-clear-sctlr.ntlsmd-fo.patch i2c-qcom-geni-store-dma-mapping-data-in-geni_i2c_dev.patch -i2c-i2c-qcom-geni-add-shutdown-callback-for-i2c.patch i3c-master-mipi-i3c-hci-specify-has_iomem-dependency.patch amba-fix-resource-leak-for-drivers-without-.remove.patch iommu-move-iotlb_sync_map-out-from-__iommu_map.patch diff --git a/queue-5.4/i2c-i2c-qcom-geni-add-shutdown-callback-for-i2c.patch b/queue-5.4/i2c-i2c-qcom-geni-add-shutdown-callback-for-i2c.patch deleted file mode 100644 index b036e6fdba6..00000000000 --- a/queue-5.4/i2c-i2c-qcom-geni-add-shutdown-callback-for-i2c.patch +++ /dev/null @@ -1,89 +0,0 @@ -From 3a6c3838d6d778c6d7f7e044611859e0e6c747c3 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Fri, 8 Jan 2021 20:35:45 +0530 -Subject: i2c: i2c-qcom-geni: Add shutdown callback for i2c - -From: Roja Rani Yarubandi - -[ Upstream commit e0371298ddc51761be257698554ea507ac8bf831 ] - -If the hardware is still accessing memory after SMMU translation -is disabled (as part of smmu shutdown callback), then the -IOVAs (I/O virtual address) which it was using will go on the bus -as the physical addresses which will result in unknown crashes -like NoC/interconnect errors. - -So, implement shutdown callback to i2c driver to stop on-going transfer -and unmap DMA mappings during system "reboot" or "shutdown". - -Fixes: 37692de5d523 ("i2c: i2c-qcom-geni: Add bus driver for the Qualcomm GENI I2C controller") -Signed-off-by: Roja Rani Yarubandi -Reviewed-by: Akash Asthana -Signed-off-by: Wolfram Sang -Signed-off-by: Sasha Levin ---- - drivers/i2c/busses/i2c-qcom-geni.c | 34 ++++++++++++++++++++++++++++++ - 1 file changed, 34 insertions(+) - -diff --git a/drivers/i2c/busses/i2c-qcom-geni.c b/drivers/i2c/busses/i2c-qcom-geni.c -index b56a427fb928f..2262bf295286c 100644 ---- a/drivers/i2c/busses/i2c-qcom-geni.c -+++ b/drivers/i2c/busses/i2c-qcom-geni.c -@@ -377,6 +377,32 @@ static void geni_i2c_tx_msg_cleanup(struct geni_i2c_dev *gi2c, - } - } - -+static void geni_i2c_stop_xfer(struct geni_i2c_dev *gi2c) -+{ -+ int ret; -+ u32 geni_status; -+ struct i2c_msg *cur; -+ -+ /* Resume device, as runtime suspend can happen anytime during transfer */ -+ ret = pm_runtime_get_sync(gi2c->se.dev); -+ if (ret < 0) { -+ dev_err(gi2c->se.dev, "Failed to resume device: %d\n", ret); -+ return; -+ } -+ -+ geni_status = readl_relaxed(gi2c->se.base + SE_GENI_STATUS); -+ if (geni_status & M_GENI_CMD_ACTIVE) { -+ cur = gi2c->cur; -+ geni_i2c_abort_xfer(gi2c); -+ if (cur->flags & I2C_M_RD) -+ geni_i2c_rx_msg_cleanup(gi2c, cur); -+ else -+ geni_i2c_tx_msg_cleanup(gi2c, cur); -+ } -+ -+ pm_runtime_put_sync_suspend(gi2c->se.dev); -+} -+ - static int geni_i2c_rx_one_msg(struct geni_i2c_dev *gi2c, struct i2c_msg *msg, - u32 m_param) - { -@@ -641,6 +667,13 @@ static int geni_i2c_remove(struct platform_device *pdev) - return 0; - } - -+static void geni_i2c_shutdown(struct platform_device *pdev) -+{ -+ struct geni_i2c_dev *gi2c = platform_get_drvdata(pdev); -+ -+ geni_i2c_stop_xfer(gi2c); -+} -+ - static int __maybe_unused geni_i2c_runtime_suspend(struct device *dev) - { - int ret; -@@ -701,6 +734,7 @@ MODULE_DEVICE_TABLE(of, geni_i2c_dt_match); - static struct platform_driver geni_i2c_driver = { - .probe = geni_i2c_probe, - .remove = geni_i2c_remove, -+ .shutdown = geni_i2c_shutdown, - .driver = { - .name = "geni_i2c", - .pm = &geni_i2c_pm_ops, --- -2.27.0 - diff --git a/queue-5.4/series b/queue-5.4/series index 0714350e850..7c3fd5b45f6 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -168,7 +168,6 @@ mmc-usdhi6rol0-fix-a-resource-leak-in-the-error-hand.patch mmc-renesas_sdhi_internal_dmac-fix-dma-buffer-alignm.patch arm-9046-1-decompressor-do-not-clear-sctlr.ntlsmd-fo.patch i2c-qcom-geni-store-dma-mapping-data-in-geni_i2c_dev.patch -i2c-i2c-qcom-geni-add-shutdown-callback-for-i2c.patch amba-fix-resource-leak-for-drivers-without-.remove.patch ib-mlx5-return-appropriate-error-code-instead-of-eno.patch ib-cm-avoid-a-loop-when-device-has-255-ports.patch