diff options
| author | John Thomson | 2024-06-29 22:45:47 +0000 |
|---|---|---|
| committer | Robert Marko | 2024-06-30 09:07:02 +0000 |
| commit | 515ad3ce8a8fbb062d366a08b6d4e8ce04f7f8bb (patch) | |
| tree | 7618ce56393c78e7304555fbec37244d988b5912 | |
| parent | 69d0ff58039fe865902d7fb8708c90a847a4a626 (diff) | |
| download | openwrt-515ad3ce8a8fbb062d366a08b6d4e8ce04f7f8bb.tar.gz | |
ipq40xx: ipqess: do not free ipqess_init
If this function is marked as __init, kernel will splat when driver is
(re)bind
echo "c080000.ethernet">/sys/bus/platform/drivers/ipqess-edma/unbind
echo "c080000.ethernet">/sys/bus/platform/drivers/ipqess-edma/bind
Example with additional print messages, functions at boot:
[ 2.039468] ipqess-edma c080000.ethernet: ipqess_axi_probe pre register_netdev
[ 2.039530] ipqess-edma c080000.ethernet: *netdev: c27d2000
[ 2.045609] ipqess-edma c080000.ethernet: &ipqess_init: c0d1e28c
[ 2.051122] ipqess_init
[ 2.057338] netdev: c27d2000
[ 2.059492] ess = netdev_priv: c27d2500
[ 2.062615] ess->pdev: c2138c00
[ 2.066174] ess->pdev->dev: c2138c10
[ 2.069314] ess->pdev->dev.of_node: ef6f6368
[ 2.073120] ess->pdev->dev.of_node: /soc/ethernet@c080000
fails (bind) after unbind:
[ 34.987948] ipqess-edma c080000.ethernet: ipqess_axi_probe pre register_netdev
[ 34.988012] ipqess-edma c080000.ethernet: *netdev: c27d6000
[ 34.994088] ipqess-edma c080000.ethernet: &ipqess_init: c0d1e28c
[ 34.999652] 8<--- cut here ---
[ 35.005802] Unable to handle kernel paging request at virtual address c0d1e28c when execute
[ 35.008676] [c0d1e28c] *pgd=80c1941e(bad)
[ 35.016918] Internal error: Oops: 8000000d [#1] SMP ARM
Signed-off-by: John Thomson <git@johnthomson.fastmail.com.au>
Link: https://github.com/openwrt/openwrt/pull/15831
Signed-off-by: Robert Marko <robimarko@gmail.com>
| -rw-r--r-- | target/linux/ipq40xx/patches-6.6/700-net-ipqess-introduce-the-Qualcomm-IPQESS-driver.patch | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/target/linux/ipq40xx/patches-6.6/700-net-ipqess-introduce-the-Qualcomm-IPQESS-driver.patch b/target/linux/ipq40xx/patches-6.6/700-net-ipqess-introduce-the-Qualcomm-IPQESS-driver.patch index d8805ae70f..4910307c88 100644 --- a/target/linux/ipq40xx/patches-6.6/700-net-ipqess-introduce-the-Qualcomm-IPQESS-driver.patch +++ b/target/linux/ipq40xx/patches-6.6/700-net-ipqess-introduce-the-Qualcomm-IPQESS-driver.patch @@ -655,7 +655,7 @@ Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com> + } +} + -+static int __init ipqess_init(struct net_device *netdev) ++static int ipqess_init(struct net_device *netdev) +{ + struct ipqess *ess = netdev_priv(netdev); + struct device_node *of_node = ess->pdev->dev.of_node; |