[OpenWrt-Devel] [PATCH] octeontx: fix thunderx BGX underflow irq name

Hauke Mehrtens hauke at hauke-m.de
Sun Oct 27 09:32:48 EDT 2019


On 10/25/19 11:27 PM, Tim Harvey wrote:
> request_irq requires irq names to be static/allocated and not on the stack

It would be nice if this patch could also go to the mainline Linux
kernel, so we do not have to maintain it any more.

John already applied it to OpenWrt.

> 
> Signed-off-by: Tim Harvey <tharvey at gateworks.com>
> ---
>  ...1-net-thunderx-workaround-BGX-TX-Underflow-issue.patch | 15 +++++++++++----
>  1 file changed, 11 insertions(+), 4 deletions(-)
> 
> diff --git a/target/linux/octeontx/patches-4.14/0001-net-thunderx-workaround-BGX-TX-Underflow-issue.patch b/target/linux/octeontx/patches-4.14/0001-net-thunderx-workaround-BGX-TX-Underflow-issue.patch
> index ef7aef3..5743745 100644
> --- a/target/linux/octeontx/patches-4.14/0001-net-thunderx-workaround-BGX-TX-Underflow-issue.patch
> +++ b/target/linux/octeontx/patches-4.14/0001-net-thunderx-workaround-BGX-TX-Underflow-issue.patch
> @@ -15,7 +15,15 @@ Signed-off-by: Tim Harvey <tharvey at gateworks.com>
>  
>  --- a/drivers/net/ethernet/cavium/thunder/thunder_bgx.c
>  +++ b/drivers/net/ethernet/cavium/thunder/thunder_bgx.c
> -@@ -1344,6 +1344,54 @@ static int bgx_init_phy(struct bgx *bgx)
> +@@ -56,6 +56,7 @@ struct bgx {
> + 	bool                    is_dlm;
> + 	bool                    is_rgx;
> + 	int			phy_mode;
> ++	char			irq_name[7];
> + };
> + 
> + static struct bgx *bgx_vnic[MAX_BGX_THUNDER];
> +@@ -1344,6 +1345,53 @@ static int bgx_init_phy(struct bgx *bgx)
>   	return bgx_init_of_phy(bgx);
>   }
>   
> @@ -49,7 +57,6 @@ Signed-off-by: Tim Harvey <tharvey at gateworks.com>
>  +	struct bgx *bgx = pci_get_drvdata(pdev);
>  +	struct device *dev = &pdev->dev;
>  +	int num_vec, ret;
> -+	char irq_name[32];
>  +
>  +	/* Enable MSI-X */
>  +	num_vec = pci_msix_vec_count(pdev);
> @@ -58,9 +65,9 @@ Signed-off-by: Tim Harvey <tharvey at gateworks.com>
>  +		dev_err(dev, "Req for #%d msix vectors failed\n", num_vec);
>  +		return 1;
>  +	}
> -+	sprintf(irq_name, "BGX%d", bgx->bgx_id);
> ++	sprintf(bgx->irq_name, "BGX%d", bgx->bgx_id);

I would prefer a snprintf here, it should not overflow as long as gx_id
is less than 1000, but just to be safe.

>  +	ret = request_irq(pci_irq_vector(pdev, GMPX_GMI_TX_INT),
> -+		bgx_intr_handler, 0, irq_name, bgx);
> ++		bgx_intr_handler, 0, bgx->irq_name, bgx);
>  +	if (ret)
>  +		return 1;
>  +
> 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20191027/a1dc7402/attachment.sig>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


More information about the openwrt-devel mailing list