diff options
Diffstat (limited to 'target/linux/layerscape/patches-5.4/701-net-0360-sdk_dpaa-sdk_fman-ls1043a-errata-detect-based-on-DTB.patch')
-rw-r--r-- | target/linux/layerscape/patches-5.4/701-net-0360-sdk_dpaa-sdk_fman-ls1043a-errata-detect-based-on-DTB.patch | 297 |
1 files changed, 0 insertions, 297 deletions
diff --git a/target/linux/layerscape/patches-5.4/701-net-0360-sdk_dpaa-sdk_fman-ls1043a-errata-detect-based-on-DTB.patch b/target/linux/layerscape/patches-5.4/701-net-0360-sdk_dpaa-sdk_fman-ls1043a-errata-detect-based-on-DTB.patch deleted file mode 100644 index e9e5ae03dd..0000000000 --- a/target/linux/layerscape/patches-5.4/701-net-0360-sdk_dpaa-sdk_fman-ls1043a-errata-detect-based-on-DTB.patch +++ /dev/null @@ -1,297 +0,0 @@ -From 6dbf409f09fd85d738652c7867a5822f682d5682 Mon Sep 17 00:00:00 2001 -From: Camelia Groza <camelia.groza@nxp.com> -Date: Thu, 12 Dec 2019 14:15:05 +0200 -Subject: [PATCH] sdk_dpaa: sdk_fman: ls1043a errata: detect based on DTB - property - -Detect if the platform is vulnerable to the A010022 erratum based on device -tree properties instead of the SoC family. - -Signed-off-by: Camelia Groza <camelia.groza@nxp.com> ---- - drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth.c | 31 +--------------------- - drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth.h | 14 +++++----- - .../net/ethernet/freescale/sdk_dpaa/dpaa_eth_sg.c | 25 ++++++++--------- - .../inc/integrations/LS1043/dpaa_integration_ext.h | 3 +++ - .../sdk_fman/src/inc/wrapper/lnxwrp_fsl_fman.h | 10 +++++++ - .../freescale/sdk_fman/src/wrapper/lnxwrp_fm.c | 17 ++++++++++++ - 6 files changed, 51 insertions(+), 49 deletions(-) - ---- a/drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth.c -+++ b/drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth.c -@@ -1,4 +1,5 @@ - /* Copyright 2008-2013 Freescale Semiconductor Inc. -+ * Copyright 2019 NXP - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: -@@ -105,11 +106,6 @@ static const char rtx[][3] = { - [TX] = "TX" - }; - --#ifndef CONFIG_PPC --bool dpaa_errata_a010022; --EXPORT_SYMBOL(dpaa_errata_a010022); --#endif -- - /* BM */ - - #define DPAA_ETH_MAX_PAD (L1_CACHE_BYTES * 8) -@@ -1133,26 +1129,6 @@ static struct platform_driver dpa_driver - .remove = dpa_remove - }; - --#ifndef CONFIG_PPC --static bool __init __cold soc_has_errata_a010022(void) --{ --#ifdef CONFIG_SOC_BUS -- const struct soc_device_attribute soc_msi_matches[] = { -- { .family = "QorIQ LS1043A", -- .data = NULL }, -- { }, -- }; -- -- if (soc_device_match(soc_msi_matches)) -- return true; -- -- return false; --#else -- return true; /* cannot identify SoC */ --#endif --} --#endif -- - static int __init __cold dpa_load(void) - { - int _errno; -@@ -1168,11 +1144,6 @@ static int __init __cold dpa_load(void) - dpa_max_frm = fm_get_max_frm(); - dpa_num_cpus = num_possible_cpus(); - --#ifndef CONFIG_PPC -- /* Detect if the current SoC requires the 4K alignment workaround */ -- dpaa_errata_a010022 = soc_has_errata_a010022(); --#endif -- - #ifdef CONFIG_FSL_DPAA_DBG_LOOP - memset(dpa_loop_netdevs, 0, sizeof(dpa_loop_netdevs)); - #endif ---- a/drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth.h -+++ b/drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth.h -@@ -1,4 +1,5 @@ - /* Copyright 2008-2012 Freescale Semiconductor Inc. -+ * Copyright 2019 NXP - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: -@@ -98,15 +99,15 @@ struct dpa_buffer_layout_s { - * space to account for further alignments. - */ - #define DPA_MAX_FRM_SIZE 9600 --#ifdef CONFIG_PPC -+#ifndef FM_ERRATUM_A010022 - #define DPA_BP_RAW_SIZE \ - ((DPA_MAX_FRM_SIZE + DPA_MAX_FD_OFFSET + \ - sizeof(struct skb_shared_info) + 128) & ~(SMP_CACHE_BYTES - 1)) --#else /* CONFIG_PPC */ --#define DPA_BP_RAW_SIZE ((unlikely(dpaa_errata_a010022)) ? 2048 : \ -+#else /* FM_ERRATUM_A010022 */ -+#define DPA_BP_RAW_SIZE ((unlikely(fm_has_errata_a010022())) ? 2048 : \ - ((DPA_MAX_FRM_SIZE + DPA_MAX_FD_OFFSET + \ - sizeof(struct skb_shared_info) + 128) & ~(SMP_CACHE_BYTES - 1))) --#endif /* CONFIG_PPC */ -+#endif /* FM_ERRATUM_A010022 */ - #endif /* CONFIG_FSL_DPAA_ETH_JUMBO_FRAME */ - - /* This is what FMan is ever allowed to use. -@@ -659,8 +660,7 @@ static inline void _dpa_bp_free_pf(void - * on egress. - */ - --#ifndef CONFIG_PPC --extern bool dpaa_errata_a010022; /* SoC affected by A010022 errata */ -+#ifdef FM_ERRATUM_A010022 - #define CROSS_4K(start, size) \ - (((uintptr_t)(start) + (size)) > \ - (((uintptr_t)(start) + 0x1000) & ~0xFFF)) -@@ -668,6 +668,6 @@ extern bool dpaa_errata_a010022; /* SoC - * we reserve 256 bytes instead to guarantee 256 data alignment. - */ - #define DPAA_A010022_HEADROOM 256 --#endif /* !CONFIG_PPC */ -+#endif /* FM_ERRATUM_A010022 */ - - #endif /* __DPA_H */ ---- a/drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth_sg.c -+++ b/drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth_sg.c -@@ -1,4 +1,5 @@ - /* Copyright 2012 Freescale Semiconductor Inc. -+ * Copyright 2019 NXP - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: -@@ -100,8 +101,8 @@ static int _dpa_bp_add_8_bufs(const stru - * We only need enough space to store a pointer, but allocate - * an entire cacheline for performance reasons. - */ --#ifndef CONFIG_PPC -- if (unlikely(dpaa_errata_a010022)) { -+#ifdef FM_ERRATUM_A010022 -+ if (unlikely(fm_has_errata_a010022())) { - struct page *new_page = alloc_page(GFP_ATOMIC); - if (unlikely(!new_page)) - goto netdev_alloc_failed; -@@ -764,7 +765,7 @@ int __hot skb_to_contig_fd(struct dpa_pr - } - EXPORT_SYMBOL(skb_to_contig_fd); - --#ifndef CONFIG_PPC -+#ifdef FM_ERRATUM_A010022 - /* Verify the conditions that trigger the A010022 errata: - * - 4K memory address boundary crossings when the data/SG fragments aren't - * aligned to 256 bytes -@@ -940,8 +941,8 @@ int __hot skb_to_sg_fd(struct dpa_priv_s - /* Get a page frag to store the SGTable, or a full page if the errata - * is in place and we need to avoid crossing a 4k boundary. - */ --#ifndef CONFIG_PPC -- if (unlikely(dpaa_errata_a010022)) { -+#ifdef FM_ERRATUM_A010022 -+ if (unlikely(fm_has_errata_a010022())) { - struct page *new_page = alloc_page(GFP_ATOMIC); - - if (unlikely(!new_page)) -@@ -1120,8 +1121,8 @@ int __hot dpa_tx_extended(struct sk_buff - - clear_fd(&fd); - --#ifndef CONFIG_PPC -- if (unlikely(dpaa_errata_a010022) && a010022_check_skb(skb, priv)) -+#ifdef FM_ERRATUM_A010022 -+ if (unlikely(fm_has_errata_a010022()) && a010022_check_skb(skb, priv)) - skb_need_wa = true; - #endif - -@@ -1193,12 +1194,12 @@ int __hot dpa_tx_extended(struct sk_buff - * more fragments than we support. In this case, - * we have no choice but to linearize it ourselves. - */ --#ifndef CONFIG_PPC -+#ifdef FM_ERRATUM_A010022 - /* No point in linearizing the skb now if we are going - * to realign and linearize it again further down due - * to the A010022 errata - */ -- if (unlikely(dpaa_errata_a010022)) -+ if (unlikely(fm_has_errata_a010022())) - skb_need_wa = true; - else - #endif -@@ -1208,15 +1209,15 @@ int __hot dpa_tx_extended(struct sk_buff - /* Common out-of-memory error path */ - goto enomem; - --#ifndef CONFIG_PPC -+#ifdef FM_ERRATUM_A010022 - /* Verify the skb a second time if it has been updated since - * the previous check - */ -- if (unlikely(dpaa_errata_a010022) && skb_changed && -+ if (unlikely(fm_has_errata_a010022()) && skb_changed && - a010022_check_skb(skb, priv)) - skb_need_wa = true; - -- if (unlikely(dpaa_errata_a010022) && skb_need_wa) { -+ if (unlikely(fm_has_errata_a010022()) && skb_need_wa) { - nskb = a010022_realign_skb(skb, priv); - if (!nskb) - goto skb_to_fd_failed; ---- a/drivers/net/ethernet/freescale/sdk_fman/inc/integrations/LS1043/dpaa_integration_ext.h -+++ b/drivers/net/ethernet/freescale/sdk_fman/inc/integrations/LS1043/dpaa_integration_ext.h -@@ -1,5 +1,6 @@ - /* - * Copyright 2012 Freescale Semiconductor Inc. -+ * Copyright 2019 NXP - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: -@@ -270,6 +271,8 @@ typedef enum - #define FM_AID_MODE_NO_TNUM_SW005 /* refer to pdm TKT068794 - only support of port_id on aid */ - #define FM_ERROR_VSP_NO_MATCH_SW006 /* refer to pdm TKT174304 - no match between errorQ and VSP */ - -+#define FM_ERRATUM_A010022 -+ - /***************************************************************************** - RMan INTEGRATION-SPECIFIC DEFINITIONS - ******************************************************************************/ ---- a/drivers/net/ethernet/freescale/sdk_fman/src/inc/wrapper/lnxwrp_fsl_fman.h -+++ b/drivers/net/ethernet/freescale/sdk_fman/src/inc/wrapper/lnxwrp_fsl_fman.h -@@ -1,5 +1,6 @@ - /* - * Copyright 2008-2012 Freescale Semiconductor Inc. -+ * Copyright 2019 NXP - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: -@@ -489,6 +490,15 @@ int fm_get_max_frm(void); - int fm_get_rx_extra_headroom(void); - - /**************************************************************************//** -+ @Function fm_has_errata_a010022 -+ -+ @Description Detect if the SoC is vulnerable to the A010022 errata -+*//***************************************************************************/ -+#ifdef FM_ERRATUM_A010022 -+bool fm_has_errata_a010022(void); -+#endif -+ -+/**************************************************************************//** - @Function fm_port_set_rate_limit - - @Description Configure Shaper parameter on FM-port device (Tx port). ---- a/drivers/net/ethernet/freescale/sdk_fman/src/wrapper/lnxwrp_fm.c -+++ b/drivers/net/ethernet/freescale/sdk_fman/src/wrapper/lnxwrp_fm.c -@@ -1,5 +1,6 @@ - /* - * Copyright 2008-2012 Freescale Semiconductor Inc. -+ * Copyright 2019 NXP - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: -@@ -155,6 +156,10 @@ static int fsl_fm_pfc_quanta[] = { - - static t_LnxWrpFm lnxWrpFm; - -+#ifdef FM_ERRATUM_A010022 -+static bool fm_has_err_a010022; -+#endif -+ - int fm_get_max_frm() - { - return fsl_fm_max_frm; -@@ -167,6 +172,14 @@ int fm_get_rx_extra_headroom() - } - EXPORT_SYMBOL(fm_get_rx_extra_headroom); - -+#ifdef FM_ERRATUM_A010022 -+bool fm_has_errata_a010022(void) -+{ -+ return fm_has_err_a010022; -+} -+EXPORT_SYMBOL(fm_has_errata_a010022); -+#endif -+ - static int __init fm_set_max_frm(char *str) - { - int ret = 0; -@@ -749,6 +762,10 @@ static t_LnxWrpFmDev * ReadFmDevTreeNode - p_LnxWrpFmDev->defPcd = e_NO_PCD; - } - -+#ifdef FM_ERRATUM_A010022 -+ fm_has_err_a010022 = of_property_read_bool(fm_node, "fsl,erratum-a010022"); -+#endif -+ - of_node_put(fm_node); - - p_LnxWrpFmDev->hcCh = |