From cfe9f97862b7c6eceb25932a6fec32ed0887171b Mon Sep 17 00:00:00 2001 From: "Luis R. Rodriguez" Date: Tue, 26 Mar 2013 16:14:42 -0700 Subject: [PATCH] compat-drivers: fix collateral-evolutions/network/09-threaded-irq.patch Manual edits required due to some context changes. The change in question that caused this is commit 97236a0656034ef8512ded648cfaa3d7282534e8 Author: Luciano Coelho Date: Fri Mar 8 09:41:53 2013 +0200 wlcore: move handling from hardirq to the irq thread function Spin locks and completions are expensive in hard IRQ context and cause problems with RT kernels. In RT kernels, both spin locks and completions can schedule(), so we can't use them in hard irq context. Move handling code into the irq thread function to avoid that. Reported-by: Gregoire Gentil Signed-off-by: Luciano Coelho Signed-off-by: Luis R. Rodriguez --- .../network/09-threaded-irq.patch | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/patches/collateral-evolutions/network/09-threaded-irq.patch b/patches/collateral-evolutions/network/09-threaded-irq.patch index 8bc51978ad7b..1c02cedc0c17 100644 --- a/patches/collateral-evolutions/network/09-threaded-irq.patch +++ b/patches/collateral-evolutions/network/09-threaded-irq.patch @@ -116,7 +116,7 @@ thread in process context as well. } --- a/drivers/net/wireless/ti/wlcore/main.c +++ b/drivers/net/wireless/ti/wlcore/main.c -@@ -5995,14 +5995,25 @@ static void wlcore_nvs_cb(const struct f +@@ -6054,11 +6054,22 @@ static void wlcore_nvs_cb(const struct f wl->platform_quirks = pdata->platform_quirks; wl->if_ops = pdev_data->if_ops; @@ -135,14 +135,11 @@ thread in process context as well. + irqflags, + pdev->name, wl); +#else - ret = request_threaded_irq(wl->irq, wl12xx_hardirq, wlcore_irq, - irqflags, - pdev->name, wl); + ret = request_threaded_irq(wl->irq, NULL, wlcore_irq, + irqflags, pdev->name, wl); +#endif if (ret < 0) { - wl1271_error("request_irq() failed: %d", ret); - goto out_free_nvs; -@@ -6077,7 +6088,11 @@ out_unreg: +@@ -6135,7 +6145,11 @@ out_unreg: wl1271_unregister_hw(wl); out_irq: @@ -154,7 +151,7 @@ thread in process context as well. out_free_nvs: kfree(wl->nvs); -@@ -6123,7 +6138,12 @@ int wlcore_remove(struct platform_device +@@ -6181,7 +6195,12 @@ int wlcore_remove(struct platform_device disable_irq_wake(wl->irq); } wl1271_unregister_hw(wl); -- 2.30.2