mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-31 05:54:26 -04:00 
			
		
		
		
	Add patches for linux-5.4. The patches are from NXP LSDK-20.04 release which was tagged LSDK-20.04-V5.4. https://source.codeaurora.org/external/qoriq/qoriq-components/linux/ For boards LS1021A-IOT, and Traverse-LS1043 which are not involved in LSDK, port the dts patches from 4.14. The patches are sorted into the following categories: 301-arch-xxxx 302-dts-xxxx 303-core-xxxx 701-net-xxxx 801-audio-xxxx 802-can-xxxx 803-clock-xxxx 804-crypto-xxxx 805-display-xxxx 806-dma-xxxx 807-gpio-xxxx 808-i2c-xxxx 809-jailhouse-xxxx 810-keys-xxxx 811-kvm-xxxx 812-pcie-xxxx 813-pm-xxxx 814-qe-xxxx 815-sata-xxxx 816-sdhc-xxxx 817-spi-xxxx 818-thermal-xxxx 819-uart-xxxx 820-usb-xxxx 821-vfio-xxxx Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
		
			
				
	
	
		
			260 lines
		
	
	
		
			9.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			260 lines
		
	
	
		
			9.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 512bb2bd0555a8e78713dfdc109d87723a9da5c1 Mon Sep 17 00:00:00 2001
 | |
| From: Camelia Groza <camelia.groza@nxp.com>
 | |
| Date: Fri, 13 Dec 2019 14:49:16 +0200
 | |
| Subject: [PATCH] sdk_dpaa: sdk_fman: ls1034a errata: update number to A050385
 | |
| 
 | |
| The A050385 erratum extends the A010022 erratum by defining additional
 | |
| FMan lock-up conditions and suggests new w/a restrictions.
 | |
| 
 | |
| Signed-off-by: Camelia Groza <camelia.groza@nxp.com>
 | |
| ---
 | |
|  drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth.h | 14 +++----
 | |
|  .../net/ethernet/freescale/sdk_dpaa/dpaa_eth_sg.c  | 44 +++++++++++-----------
 | |
|  .../inc/integrations/LS1043/dpaa_integration_ext.h |  2 +-
 | |
|  .../sdk_fman/src/inc/wrapper/lnxwrp_fsl_fman.h     |  8 ++--
 | |
|  .../freescale/sdk_fman/src/wrapper/lnxwrp_fm.c     | 16 ++++----
 | |
|  5 files changed, 42 insertions(+), 42 deletions(-)
 | |
| 
 | |
| --- a/drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth.h
 | |
| +++ b/drivers/net/ethernet/freescale/sdk_dpaa/dpaa_eth.h
 | |
| @@ -99,15 +99,15 @@ struct dpa_buffer_layout_s {
 | |
|   * space to account for further alignments.
 | |
|   */
 | |
|  #define DPA_MAX_FRM_SIZE	9600
 | |
| -#ifndef FM_ERRATUM_A010022
 | |
| +#ifndef FM_ERRATUM_A050385
 | |
|  #define DPA_BP_RAW_SIZE \
 | |
|  	((DPA_MAX_FRM_SIZE + DPA_MAX_FD_OFFSET + \
 | |
|  	  sizeof(struct skb_shared_info) + 128) & ~(SMP_CACHE_BYTES - 1))
 | |
| -#else /* FM_ERRATUM_A010022 */
 | |
| -#define DPA_BP_RAW_SIZE ((unlikely(fm_has_errata_a010022())) ? 2048 : \
 | |
| +#else /* FM_ERRATUM_A050385 */
 | |
| +#define DPA_BP_RAW_SIZE ((unlikely(fm_has_errata_a050385())) ? 2048 : \
 | |
|  	((DPA_MAX_FRM_SIZE + DPA_MAX_FD_OFFSET + \
 | |
|  	  sizeof(struct skb_shared_info) + 128) & ~(SMP_CACHE_BYTES - 1)))
 | |
| -#endif /* FM_ERRATUM_A010022 */
 | |
| +#endif /* FM_ERRATUM_A050385 */
 | |
|  #endif /* CONFIG_FSL_DPAA_ETH_JUMBO_FRAME */
 | |
|  
 | |
|  /* This is what FMan is ever allowed to use.
 | |
| @@ -660,14 +660,14 @@ static inline void _dpa_bp_free_pf(void
 | |
|   * on egress.
 | |
|   */
 | |
|  
 | |
| -#ifdef FM_ERRATUM_A010022
 | |
| +#ifdef FM_ERRATUM_A050385
 | |
|  #define CROSS_4K(start, size) \
 | |
|  	(((uintptr_t)(start) + (size)) > \
 | |
|  	 (((uintptr_t)(start) + 0x1000) & ~0xFFF))
 | |
|  /* The headroom needs to accommodate our private data (64 bytes) but
 | |
|   * we reserve 256 bytes instead to guarantee 256 data alignment.
 | |
|   */
 | |
| -#define DPAA_A010022_HEADROOM	256
 | |
| -#endif  /* FM_ERRATUM_A010022 */
 | |
| +#define DPAA_A050385_HEADROOM	256
 | |
| +#endif  /* FM_ERRATUM_A050385 */
 | |
|  
 | |
|  #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
 | |
| @@ -101,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.
 | |
|  		 */
 | |
| -#ifdef FM_ERRATUM_A010022
 | |
| -		if (unlikely(fm_has_errata_a010022())) {
 | |
| +#ifdef FM_ERRATUM_A050385
 | |
| +		if (unlikely(fm_has_errata_a050385())) {
 | |
|  			struct page *new_page = alloc_page(GFP_ATOMIC);
 | |
|  			if (unlikely(!new_page))
 | |
|  				goto netdev_alloc_failed;
 | |
| @@ -765,15 +765,15 @@ int __hot skb_to_contig_fd(struct dpa_pr
 | |
|  }
 | |
|  EXPORT_SYMBOL(skb_to_contig_fd);
 | |
|  
 | |
| -#ifdef FM_ERRATUM_A010022
 | |
| -/* Verify the conditions that trigger the A010022 errata:
 | |
| +#ifdef FM_ERRATUM_A050385
 | |
| +/* Verify the conditions that trigger the A050385 errata:
 | |
|   * - 4K memory address boundary crossings when the data/SG fragments aren't
 | |
|   *   aligned to 256 bytes
 | |
|   * - data and SG fragments that aren't aligned to 16 bytes
 | |
|   * - SG fragments that aren't mod 16 bytes in size (except for the last
 | |
|   *   fragment)
 | |
|   */
 | |
| -static bool a010022_check_skb(struct sk_buff *skb, struct dpa_priv_s *priv)
 | |
| +static bool a050385_check_skb(struct sk_buff *skb, struct dpa_priv_s *priv)
 | |
|  {
 | |
|  	skb_frag_t *frag;
 | |
|  	int i, nr_frags;
 | |
| @@ -840,7 +840,7 @@ static bool a010022_check_skb(struct sk_
 | |
|   * page. Build a new skb around the new buffer and release the old one.
 | |
|   * A performance drop should be expected.
 | |
|   */
 | |
| -static struct sk_buff *a010022_realign_skb(struct sk_buff *skb,
 | |
| +static struct sk_buff *a050385_realign_skb(struct sk_buff *skb,
 | |
|  					   struct dpa_priv_s *priv)
 | |
|  {
 | |
|  	int trans_offset = skb_transport_offset(skb);
 | |
| @@ -850,7 +850,7 @@ static struct sk_buff *a010022_realign_s
 | |
|  	struct page *npage;
 | |
|  	void *npage_addr;
 | |
|  
 | |
| -	headroom = DPAA_A010022_HEADROOM;
 | |
| +	headroom = DPAA_A050385_HEADROOM;
 | |
|  
 | |
|  	/* For the new skb we only need the old one's data (both non-paged and
 | |
|  	 * paged). We can skip the old tailroom.
 | |
| @@ -941,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.
 | |
|  	 */
 | |
| -#ifdef FM_ERRATUM_A010022
 | |
| -	if (unlikely(fm_has_errata_a010022())) {
 | |
| +#ifdef FM_ERRATUM_A050385
 | |
| +	if (unlikely(fm_has_errata_a050385())) {
 | |
|  		struct page *new_page = alloc_page(GFP_ATOMIC);
 | |
|  
 | |
|  		if (unlikely(!new_page))
 | |
| @@ -1099,9 +1099,9 @@ int __hot dpa_tx_extended(struct sk_buff
 | |
|  	int *countptr, offset = 0;
 | |
|  	struct sk_buff *nskb;
 | |
|  
 | |
| -	/* Flags to help optimize the A010022 errata restriction checks.
 | |
| +	/* Flags to help optimize the A050385 errata restriction checks.
 | |
|  	 *
 | |
| -	 * First flag marks if the skb changed between the first A010022 check
 | |
| +	 * First flag marks if the skb changed between the first A050385 check
 | |
|  	 * and the moment it's converted to an FD.
 | |
|  	 *
 | |
|  	 * The second flag marks if the skb needs to be realigned in order to
 | |
| @@ -1121,8 +1121,8 @@ int __hot dpa_tx_extended(struct sk_buff
 | |
|  
 | |
|  	clear_fd(&fd);
 | |
|  
 | |
| -#ifdef FM_ERRATUM_A010022
 | |
| -	if (unlikely(fm_has_errata_a010022()) && a010022_check_skb(skb, priv))
 | |
| +#ifdef FM_ERRATUM_A050385
 | |
| +	if (unlikely(fm_has_errata_a050385()) && a050385_check_skb(skb, priv))
 | |
|  		skb_need_wa = true;
 | |
|  #endif
 | |
|  
 | |
| @@ -1176,7 +1176,7 @@ int __hot dpa_tx_extended(struct sk_buff
 | |
|  		/* We're going to store the skb backpointer at the beginning
 | |
|  		 * of the data buffer, so we need a privately owned skb
 | |
|  		 *
 | |
| -		 * Under the A010022 errata, we are going to have a privately
 | |
| +		 * Under the A050385 errata, we are going to have a privately
 | |
|  		 * owned skb after realigning the current one, so no point in
 | |
|  		 * copying it here in that case.
 | |
|  		 */
 | |
| @@ -1194,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.
 | |
|  			 */
 | |
| -#ifdef FM_ERRATUM_A010022
 | |
| +#ifdef FM_ERRATUM_A050385
 | |
|  			/* No point in linearizing the skb now if we are going
 | |
|  			 * to realign and linearize it again further down due
 | |
| -			 * to the A010022 errata
 | |
| +			 * to the A050385 errata
 | |
|  			 */
 | |
| -			if (unlikely(fm_has_errata_a010022()))
 | |
| +			if (unlikely(fm_has_errata_a050385()))
 | |
|  				skb_need_wa = true;
 | |
|  			else
 | |
|  #endif
 | |
| @@ -1209,16 +1209,16 @@ int __hot dpa_tx_extended(struct sk_buff
 | |
|  			/* Common out-of-memory error path */
 | |
|  			goto enomem;
 | |
|  
 | |
| -#ifdef FM_ERRATUM_A010022
 | |
| +#ifdef FM_ERRATUM_A050385
 | |
|  		/* Verify the skb a second time if it has been updated since
 | |
|  		 * the previous check
 | |
|  		 */
 | |
| -		if (unlikely(fm_has_errata_a010022()) && skb_changed &&
 | |
| -		    a010022_check_skb(skb, priv))
 | |
| +		if (unlikely(fm_has_errata_a050385()) && skb_changed &&
 | |
| +		    a050385_check_skb(skb, priv))
 | |
|  			skb_need_wa = true;
 | |
|  
 | |
| -		if (unlikely(fm_has_errata_a010022()) && skb_need_wa) {
 | |
| -			nskb = a010022_realign_skb(skb, priv);
 | |
| +		if (unlikely(fm_has_errata_a050385()) && skb_need_wa) {
 | |
| +			nskb = a050385_realign_skb(skb, priv);
 | |
|  			if (!nskb)
 | |
|  				goto skb_to_fd_failed;
 | |
|  			dev_kfree_skb(skb);
 | |
| --- 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
 | |
| @@ -271,7 +271,7 @@ 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
 | |
| +#define FM_ERRATUM_A050385
 | |
|  
 | |
|  /*****************************************************************************
 | |
|   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
 | |
| @@ -490,12 +490,12 @@ int fm_get_max_frm(void);
 | |
|  int fm_get_rx_extra_headroom(void);
 | |
|  
 | |
|  /**************************************************************************//**
 | |
| - @Function	fm_has_errata_a010022
 | |
| + @Function	fm_has_errata_a050385
 | |
|  
 | |
| - @Description   Detect if the SoC is vulnerable to the A010022 errata
 | |
| + @Description   Detect if the SoC is vulnerable to the A050385 errata
 | |
|  *//***************************************************************************/
 | |
| -#ifdef FM_ERRATUM_A010022
 | |
| -bool fm_has_errata_a010022(void);
 | |
| +#ifdef FM_ERRATUM_A050385
 | |
| +bool fm_has_errata_a050385(void);
 | |
|  #endif
 | |
|  
 | |
|  /**************************************************************************//**
 | |
| --- a/drivers/net/ethernet/freescale/sdk_fman/src/wrapper/lnxwrp_fm.c
 | |
| +++ b/drivers/net/ethernet/freescale/sdk_fman/src/wrapper/lnxwrp_fm.c
 | |
| @@ -156,8 +156,8 @@ static int fsl_fm_pfc_quanta[] = {
 | |
|  
 | |
|  static t_LnxWrpFm   lnxWrpFm;
 | |
|  
 | |
| -#ifdef FM_ERRATUM_A010022
 | |
| -static bool fm_has_err_a010022;
 | |
| +#ifdef FM_ERRATUM_A050385
 | |
| +static bool fm_has_err_a050385;
 | |
|  #endif
 | |
|  
 | |
|  int fm_get_max_frm()
 | |
| @@ -172,12 +172,12 @@ int fm_get_rx_extra_headroom()
 | |
|  }
 | |
|  EXPORT_SYMBOL(fm_get_rx_extra_headroom);
 | |
|  
 | |
| -#ifdef FM_ERRATUM_A010022
 | |
| -bool fm_has_errata_a010022(void)
 | |
| +#ifdef FM_ERRATUM_A050385
 | |
| +bool fm_has_errata_a050385(void)
 | |
|  {
 | |
| -	return fm_has_err_a010022;
 | |
| +	return fm_has_err_a050385;
 | |
|  }
 | |
| -EXPORT_SYMBOL(fm_has_errata_a010022);
 | |
| +EXPORT_SYMBOL(fm_has_errata_a050385);
 | |
|  #endif
 | |
|  
 | |
|  static int __init fm_set_max_frm(char *str)
 | |
| @@ -762,8 +762,8 @@ 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");
 | |
| +#ifdef FM_ERRATUM_A050385
 | |
| +    fm_has_err_a050385 = of_property_read_bool(fm_node, "fsl,erratum-a050385");
 | |
|  #endif
 | |
|  
 | |
|      of_node_put(fm_node);
 |