]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
drop queue-5.15/bpf-arm64-use-emit_addr_mov_i64-for-bpf_pseudo_func.patch and queue...
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 7 Mar 2022 16:17:20 +0000 (17:17 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 7 Mar 2022 16:17:20 +0000 (17:17 +0100)
queue-5.15/bpf-arm64-use-emit_addr_mov_i64-for-bpf_pseudo_func.patch [deleted file]
queue-5.15/drm-mediatek-mtk_dsi-avoid-eprobe_defer-loop-with-ex.patch [deleted file]
queue-5.15/series

diff --git a/queue-5.15/bpf-arm64-use-emit_addr_mov_i64-for-bpf_pseudo_func.patch b/queue-5.15/bpf-arm64-use-emit_addr_mov_i64-for-bpf_pseudo_func.patch
deleted file mode 100644 (file)
index bf00298..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-From 53a9337e96db2364cceb9f409f78256373b83800 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Fri, 31 Dec 2021 23:10:18 +0800
-Subject: bpf, arm64: Use emit_addr_mov_i64() for BPF_PSEUDO_FUNC
-
-From: Hou Tao <houtao1@huawei.com>
-
-[ Upstream commit e4a41c2c1fa916547e63440c73a51a5eb06247af ]
-
-The following error is reported when running "./test_progs -t for_each"
-under arm64:
-
-  bpf_jit: multi-func JIT bug 58 != 56
-  [...]
-  JIT doesn't support bpf-to-bpf calls
-
-The root cause is the size of BPF_PSEUDO_FUNC instruction increases
-from 2 to 3 after the address of called bpf-function is settled and
-there are two bpf-to-bpf calls in test_pkt_access. The generated
-instructions are shown below:
-
-  0x48:  21 00 C0 D2    movz x1, #0x1, lsl #32
-  0x4c:  21 00 80 F2    movk x1, #0x1
-
-  0x48:  E1 3F C0 92    movn x1, #0x1ff, lsl #32
-  0x4c:  41 FE A2 F2    movk x1, #0x17f2, lsl #16
-  0x50:  81 70 9F F2    movk x1, #0xfb84
-
-Fixing it by using emit_addr_mov_i64() for BPF_PSEUDO_FUNC, so
-the size of jited image will not change.
-
-Fixes: 69c087ba6225 ("bpf: Add bpf_for_each_map_elem() helper")
-Signed-off-by: Hou Tao <houtao1@huawei.com>
-Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
-Link: https://lore.kernel.org/bpf/20211231151018.3781550-1-houtao1@huawei.com
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- arch/arm64/net/bpf_jit_comp.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/arch/arm64/net/bpf_jit_comp.c b/arch/arm64/net/bpf_jit_comp.c
-index 465c44d0c72fc..3d7381ffc1712 100644
---- a/arch/arm64/net/bpf_jit_comp.c
-+++ b/arch/arm64/net/bpf_jit_comp.c
-@@ -788,7 +788,10 @@ static int build_insn(const struct bpf_insn *insn, struct jit_ctx *ctx,
-               u64 imm64;
-               imm64 = (u64)insn1.imm << 32 | (u32)imm;
--              emit_a64_mov_i64(dst, imm64, ctx);
-+              if (bpf_pseudo_func(insn))
-+                      emit_addr_mov_i64(dst, imm64, ctx);
-+              else
-+                      emit_a64_mov_i64(dst, imm64, ctx);
-               return 1;
-       }
--- 
-2.34.1
-
diff --git a/queue-5.15/drm-mediatek-mtk_dsi-avoid-eprobe_defer-loop-with-ex.patch b/queue-5.15/drm-mediatek-mtk_dsi-avoid-eprobe_defer-loop-with-ex.patch
deleted file mode 100644 (file)
index 32489df..0000000
+++ /dev/null
@@ -1,268 +0,0 @@
-From 460c08e7fbc77dbfe90b71ecd174041ef795413f Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Mon, 31 Jan 2022 09:55:20 +0100
-Subject: drm/mediatek: mtk_dsi: Avoid EPROBE_DEFER loop with external bridge
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-From: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
-
-[ Upstream commit 647474b8d980256b26b1cd112d7333a4dbd4260a ]
-
-DRM bridge drivers are now attaching their DSI device at probe time,
-which requires us to register our DSI host in order to let the bridge
-to probe: this recently started producing an endless -EPROBE_DEFER
-loop on some machines that are using external bridges, like the
-parade-ps8640, found on the ACER Chromebook R13.
-
-Now that the DSI hosts/devices probe sequence is documented, we can
-do adjustments to the mtk_dsi driver as to both fix now and make sure
-to avoid this situation in the future: for this, following what is
-documented in drm_bridge.c, move the mtk_dsi component_add() to the
-mtk_dsi_ops.attach callback and delete it in the detach callback;
-keeping in mind that we are registering a drm_bridge for our DSI,
-which is only used/attached if the DSI Host is bound, it wouldn't
-make sense to keep adding our bridge at probe time (as it would
-be useless to have it if mtk_dsi_ops.attach() fails!), so also move
-that one to the dsi host attach function (and remove it in detach).
-
-Cc: <stable@vger.kernel.org> # 5.15.x
-Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
-Reviewed-by: Andrzej Hajda <andrzej.hajda@intel.com>
-Reviewed-by: Jagan Teki <jagan@amarulasolutions.com>
-Tested-by: NĂ­colas F. R. A. Prado <nfraprado@collabora.com>
-Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/gpu/drm/mediatek/mtk_dsi.c | 167 +++++++++++++++--------------
- 1 file changed, 84 insertions(+), 83 deletions(-)
-
-diff --git a/drivers/gpu/drm/mediatek/mtk_dsi.c b/drivers/gpu/drm/mediatek/mtk_dsi.c
-index 5d90d2eb00193..bced4c7d668e3 100644
---- a/drivers/gpu/drm/mediatek/mtk_dsi.c
-+++ b/drivers/gpu/drm/mediatek/mtk_dsi.c
-@@ -786,18 +786,101 @@ void mtk_dsi_ddp_stop(struct device *dev)
-       mtk_dsi_poweroff(dsi);
- }
-+static int mtk_dsi_encoder_init(struct drm_device *drm, struct mtk_dsi *dsi)
-+{
-+      int ret;
-+
-+      ret = drm_simple_encoder_init(drm, &dsi->encoder,
-+                                    DRM_MODE_ENCODER_DSI);
-+      if (ret) {
-+              DRM_ERROR("Failed to encoder init to drm\n");
-+              return ret;
-+      }
-+
-+      dsi->encoder.possible_crtcs = mtk_drm_find_possible_crtc_by_comp(drm, dsi->host.dev);
-+
-+      ret = drm_bridge_attach(&dsi->encoder, &dsi->bridge, NULL,
-+                              DRM_BRIDGE_ATTACH_NO_CONNECTOR);
-+      if (ret)
-+              goto err_cleanup_encoder;
-+
-+      dsi->connector = drm_bridge_connector_init(drm, &dsi->encoder);
-+      if (IS_ERR(dsi->connector)) {
-+              DRM_ERROR("Unable to create bridge connector\n");
-+              ret = PTR_ERR(dsi->connector);
-+              goto err_cleanup_encoder;
-+      }
-+      drm_connector_attach_encoder(dsi->connector, &dsi->encoder);
-+
-+      return 0;
-+
-+err_cleanup_encoder:
-+      drm_encoder_cleanup(&dsi->encoder);
-+      return ret;
-+}
-+
-+static int mtk_dsi_bind(struct device *dev, struct device *master, void *data)
-+{
-+      int ret;
-+      struct drm_device *drm = data;
-+      struct mtk_dsi *dsi = dev_get_drvdata(dev);
-+
-+      ret = mtk_dsi_encoder_init(drm, dsi);
-+      if (ret)
-+              return ret;
-+
-+      return device_reset_optional(dev);
-+}
-+
-+static void mtk_dsi_unbind(struct device *dev, struct device *master,
-+                         void *data)
-+{
-+      struct mtk_dsi *dsi = dev_get_drvdata(dev);
-+
-+      drm_encoder_cleanup(&dsi->encoder);
-+}
-+
-+static const struct component_ops mtk_dsi_component_ops = {
-+      .bind = mtk_dsi_bind,
-+      .unbind = mtk_dsi_unbind,
-+};
-+
- static int mtk_dsi_host_attach(struct mipi_dsi_host *host,
-                              struct mipi_dsi_device *device)
- {
-       struct mtk_dsi *dsi = host_to_dsi(host);
-+      struct device *dev = host->dev;
-+      int ret;
-       dsi->lanes = device->lanes;
-       dsi->format = device->format;
-       dsi->mode_flags = device->mode_flags;
-+      dsi->next_bridge = devm_drm_of_get_bridge(dev, dev->of_node, 0, 0);
-+      if (IS_ERR(dsi->next_bridge))
-+              return PTR_ERR(dsi->next_bridge);
-+
-+      drm_bridge_add(&dsi->bridge);
-+
-+      ret = component_add(host->dev, &mtk_dsi_component_ops);
-+      if (ret) {
-+              DRM_ERROR("failed to add dsi_host component: %d\n", ret);
-+              drm_bridge_remove(&dsi->bridge);
-+              return ret;
-+      }
-       return 0;
- }
-+static int mtk_dsi_host_detach(struct mipi_dsi_host *host,
-+                             struct mipi_dsi_device *device)
-+{
-+      struct mtk_dsi *dsi = host_to_dsi(host);
-+
-+      component_del(host->dev, &mtk_dsi_component_ops);
-+      drm_bridge_remove(&dsi->bridge);
-+      return 0;
-+}
-+
- static void mtk_dsi_wait_for_idle(struct mtk_dsi *dsi)
- {
-       int ret;
-@@ -938,73 +1021,14 @@ static ssize_t mtk_dsi_host_transfer(struct mipi_dsi_host *host,
- static const struct mipi_dsi_host_ops mtk_dsi_ops = {
-       .attach = mtk_dsi_host_attach,
-+      .detach = mtk_dsi_host_detach,
-       .transfer = mtk_dsi_host_transfer,
- };
--static int mtk_dsi_encoder_init(struct drm_device *drm, struct mtk_dsi *dsi)
--{
--      int ret;
--
--      ret = drm_simple_encoder_init(drm, &dsi->encoder,
--                                    DRM_MODE_ENCODER_DSI);
--      if (ret) {
--              DRM_ERROR("Failed to encoder init to drm\n");
--              return ret;
--      }
--
--      dsi->encoder.possible_crtcs = mtk_drm_find_possible_crtc_by_comp(drm, dsi->host.dev);
--
--      ret = drm_bridge_attach(&dsi->encoder, &dsi->bridge, NULL,
--                              DRM_BRIDGE_ATTACH_NO_CONNECTOR);
--      if (ret)
--              goto err_cleanup_encoder;
--
--      dsi->connector = drm_bridge_connector_init(drm, &dsi->encoder);
--      if (IS_ERR(dsi->connector)) {
--              DRM_ERROR("Unable to create bridge connector\n");
--              ret = PTR_ERR(dsi->connector);
--              goto err_cleanup_encoder;
--      }
--      drm_connector_attach_encoder(dsi->connector, &dsi->encoder);
--
--      return 0;
--
--err_cleanup_encoder:
--      drm_encoder_cleanup(&dsi->encoder);
--      return ret;
--}
--
--static int mtk_dsi_bind(struct device *dev, struct device *master, void *data)
--{
--      int ret;
--      struct drm_device *drm = data;
--      struct mtk_dsi *dsi = dev_get_drvdata(dev);
--
--      ret = mtk_dsi_encoder_init(drm, dsi);
--      if (ret)
--              return ret;
--
--      return device_reset_optional(dev);
--}
--
--static void mtk_dsi_unbind(struct device *dev, struct device *master,
--                         void *data)
--{
--      struct mtk_dsi *dsi = dev_get_drvdata(dev);
--
--      drm_encoder_cleanup(&dsi->encoder);
--}
--
--static const struct component_ops mtk_dsi_component_ops = {
--      .bind = mtk_dsi_bind,
--      .unbind = mtk_dsi_unbind,
--};
--
- static int mtk_dsi_probe(struct platform_device *pdev)
- {
-       struct mtk_dsi *dsi;
-       struct device *dev = &pdev->dev;
--      struct drm_panel *panel;
-       struct resource *regs;
-       int irq_num;
-       int ret;
-@@ -1021,19 +1045,6 @@ static int mtk_dsi_probe(struct platform_device *pdev)
-               return ret;
-       }
--      ret = drm_of_find_panel_or_bridge(dev->of_node, 0, 0,
--                                        &panel, &dsi->next_bridge);
--      if (ret)
--              goto err_unregister_host;
--
--      if (panel) {
--              dsi->next_bridge = devm_drm_panel_bridge_add(dev, panel);
--              if (IS_ERR(dsi->next_bridge)) {
--                      ret = PTR_ERR(dsi->next_bridge);
--                      goto err_unregister_host;
--              }
--      }
--
-       dsi->driver_data = of_device_get_match_data(dev);
-       dsi->engine_clk = devm_clk_get(dev, "engine");
-@@ -1098,14 +1109,6 @@ static int mtk_dsi_probe(struct platform_device *pdev)
-       dsi->bridge.of_node = dev->of_node;
-       dsi->bridge.type = DRM_MODE_CONNECTOR_DSI;
--      drm_bridge_add(&dsi->bridge);
--
--      ret = component_add(&pdev->dev, &mtk_dsi_component_ops);
--      if (ret) {
--              dev_err(&pdev->dev, "failed to add component: %d\n", ret);
--              goto err_unregister_host;
--      }
--
-       return 0;
- err_unregister_host:
-@@ -1118,8 +1121,6 @@ static int mtk_dsi_remove(struct platform_device *pdev)
-       struct mtk_dsi *dsi = platform_get_drvdata(pdev);
-       mtk_output_dsi_disable(dsi);
--      drm_bridge_remove(&dsi->bridge);
--      component_del(&pdev->dev, &mtk_dsi_component_ops);
-       mipi_dsi_host_unregister(&dsi->host);
-       return 0;
--- 
-2.34.1
-
index 4f4adcc315706cc554b754db721d3ef0334a37b7..3e8fa2ccc0f8e150646b966777d80d77b1b98ca1 100644 (file)
@@ -45,7 +45,6 @@ nfsd-fix-zero-length-nfsv3-writes.patch
 io_uring-fix-no-lock-protection-for-ctx-cq_extra.patch
 tools-resolve_btf_ids-close-elf-file-on-error.patch
 mtd-spi-nor-fix-mtd-size-for-s3an-flashes.patch
-bpf-arm64-use-emit_addr_mov_i64-for-bpf_pseudo_func.patch
 mips-fix-local_-add-sub-_return-on-mips64.patch
 signal-in-get_signal-test-for-signal_group_exit-ever.patch
 pci-mediatek-gen3-disable-dvfsrc-voltage-request.patch
@@ -123,7 +122,6 @@ ibmvnic-don-t-release-napi-in-__ibmvnic_open.patch
 of-net-move-of_net-under-net.patch
 net-ethernet-litex-add-the-dependency-on-has_iomem.patch
 drm-mediatek-mtk_dsi-reset-the-dsi0-hardware.patch
-drm-mediatek-mtk_dsi-avoid-eprobe_defer-loop-with-ex.patch
 cifs-protect-session-channel-fields-with-chan_lock.patch
 cifs-fix-confusing-unneeded-warning-message-on-smb2..patch
 drm-amd-display-fix-stream-link_enc-unassigned-durin.patch