[PATCH] ls1012a: net: pfe: remove pfe stop from bootcmd

Ramon Fried rfried.dev at gmail.com
Thu Apr 15 03:38:18 CEST 2021


On Wed, Apr 14, 2021 at 1:34 PM Mian Yousaf Kaukab <ykaukab at suse.de> wrote:
>
> When using bootefi to boot a EFI binary, u-boot is supposed to
> provide networking service for EFI application. Currently, 'pfe stop'
> command is called from bootcmd before running bootefi. As a result
> network stops working for EFI applications and console is flooded with
> "Rx pkt not on expected port" messages.
>
> Implement board_quiesce_devices() for ls1012a boards and call
> pfe_command_stop() from it instead of calling 'pfe stop' from
> *_bootcmd and bootcmd.
>
> Tested-by: Anji Jagarlmudi <anji.jagarlmudi at nxp.com>
> Signed-off-by: Mian Yousaf Kaukab <ykaukab at suse.de>
> ---
>  board/freescale/ls1012afrdm/ls1012afrdm.c | 8 ++++++++
>  board/freescale/ls1012aqds/ls1012aqds.c   | 8 ++++++++
>  board/freescale/ls1012ardb/ls1012ardb.c   | 8 ++++++++
>  drivers/net/pfe_eth/pfe_cmd.c             | 2 +-
>  include/configs/ls1012a2g5rdb.h           | 6 +++---
>  include/configs/ls1012a_common.h          | 4 ++--
>  include/configs/ls1012afrdm.h             | 6 +++---
>  include/configs/ls1012afrwy.h             | 6 +++---
>  include/configs/ls1012aqds.h              | 6 +++---
>  include/configs/ls1012ardb.h              | 6 +++---
>  include/net/pfe_eth/pfe/pfe_hw.h          | 6 ++++++
>  11 files changed, 48 insertions(+), 18 deletions(-)
>
> diff --git a/board/freescale/ls1012afrdm/ls1012afrdm.c b/board/freescale/ls1012afrdm/ls1012afrdm.c
> index 2cd651b943fb..7e87e5a9846f 100644
> --- a/board/freescale/ls1012afrdm/ls1012afrdm.c
> +++ b/board/freescale/ls1012afrdm/ls1012afrdm.c
> @@ -23,6 +23,7 @@
>  #include <fsl_mmdc.h>
>  #include <netdev.h>
>  #include <fsl_sec.h>
> +#include <net/pfe_eth/pfe/pfe_hw.h>
>
>  DECLARE_GLOBAL_DATA_PTR;
>
> @@ -185,6 +186,13 @@ int board_init(void)
>         return 0;
>  }
>
> +#ifdef CONFIG_FSL_PFE
> +void board_quiesce_devices(void)
> +{
> +        pfe_command_stop(0, NULL);
> +}
> +#endif
> +
>  int ft_board_setup(void *blob, struct bd_info *bd)
>  {
>         arch_fixup_fdt(blob);
> diff --git a/board/freescale/ls1012aqds/ls1012aqds.c b/board/freescale/ls1012aqds/ls1012aqds.c
> index cfe3f3360cd9..4f98a8652f21 100644
> --- a/board/freescale/ls1012aqds/ls1012aqds.c
> +++ b/board/freescale/ls1012aqds/ls1012aqds.c
> @@ -32,6 +32,7 @@
>  #include "../common/qixis.h"
>  #include "ls1012aqds_qixis.h"
>  #include "ls1012aqds_pfe.h"
> +#include <net/pfe_eth/pfe/pfe_hw.h>
>
>  DECLARE_GLOBAL_DATA_PTR;
>
> @@ -163,6 +164,13 @@ int board_init(void)
>         return 0;
>  }
>
> +#ifdef CONFIG_FSL_PFE
> +void board_quiesce_devices(void)
> +{
> +        pfe_command_stop(0, NULL);
> +}
> +#endif
> +
>  int esdhc_status_fixup(void *blob, const char *compat)
>  {
>         char esdhc0_path[] = "/soc/esdhc at 1560000";
> diff --git a/board/freescale/ls1012ardb/ls1012ardb.c b/board/freescale/ls1012ardb/ls1012ardb.c
> index 41bcf6f935e9..62e8af48cf14 100644
> --- a/board/freescale/ls1012ardb/ls1012ardb.c
> +++ b/board/freescale/ls1012ardb/ls1012ardb.c
> @@ -28,6 +28,7 @@
>  #include <fsl_mmdc.h>
>  #include <netdev.h>
>  #include <fsl_sec.h>
> +#include <net/pfe_eth/pfe/pfe_hw.h>
>
>  DECLARE_GLOBAL_DATA_PTR;
>
> @@ -186,6 +187,13 @@ int board_init(void)
>         return 0;
>  }
>
> +#ifdef CONFIG_FSL_PFE
> +void board_quiesce_devices(void)
> +{
> +       pfe_command_stop(0, NULL);
> +}
> +#endif
> +
>  #ifdef CONFIG_TARGET_LS1012ARDB
>  int esdhc_status_fixup(void *blob, const char *compat)
>  {
> diff --git a/drivers/net/pfe_eth/pfe_cmd.c b/drivers/net/pfe_eth/pfe_cmd.c
> index 1e69525cb71f..364750f65c75 100644
> --- a/drivers/net/pfe_eth/pfe_cmd.c
> +++ b/drivers/net/pfe_eth/pfe_cmd.c
> @@ -418,7 +418,7 @@ static void send_dummy_pkt_to_hif(void)
>         writel(buf, TMU_PHY_INQ_PKTINFO);
>  }
>
> -static void pfe_command_stop(int argc, char *const argv[])
> +void pfe_command_stop(int argc, char *const argv[])
>  {
>         int pfe_pe_id, hif_stop_loop = 10;
>         u32 rx_status;
> diff --git a/include/configs/ls1012a2g5rdb.h b/include/configs/ls1012a2g5rdb.h
> index bbc3ffd7f0d3..c55fc6487756 100644
> --- a/include/configs/ls1012a2g5rdb.h
> +++ b/include/configs/ls1012a2g5rdb.h
> @@ -79,7 +79,7 @@
>         "installer=load mmc 0:2 $load_addr "    \
>                    "/flex_installer_arm64.itb; "        \
>                    "bootm $load_addr#$board\0"  \
> -       "qspi_bootcmd=pfe stop; echo Trying load from qspi..;"  \
> +       "qspi_bootcmd=echo Trying load from qspi..;"    \
>                 "sf probe && sf read $load_addr "       \
>                 "$kernel_addr $kernel_size; env exists secureboot "     \
>                 "&& sf read $kernelheader_addr_r $kernelheader_addr "   \
> @@ -89,11 +89,11 @@
>  #undef CONFIG_BOOTCOMMAND
>  #ifdef CONFIG_TFABOOT
>  #undef QSPI_NOR_BOOTCOMMAND
> -#define QSPI_NOR_BOOTCOMMAND "pfe stop;run distro_bootcmd; run qspi_bootcmd; " \
> +#define QSPI_NOR_BOOTCOMMAND "run distro_bootcmd; run qspi_bootcmd; " \
>                              "env exists secureboot && esbc_halt;"
>  #else
>  #if defined(CONFIG_QSPI_BOOT) || defined(CONFIG_SD_BOOT_QSPI)
> -#define CONFIG_BOOTCOMMAND "pfe stop;run distro_bootcmd; run qspi_bootcmd; " \
> +#define CONFIG_BOOTCOMMAND "run distro_bootcmd; run qspi_bootcmd; " \
>                            "env exists secureboot && esbc_halt;"
>  #endif
>  #endif
> diff --git a/include/configs/ls1012a_common.h b/include/configs/ls1012a_common.h
> index a908b0acb098..6f55acc7db11 100644
> --- a/include/configs/ls1012a_common.h
> +++ b/include/configs/ls1012a_common.h
> @@ -102,11 +102,11 @@
>
>  #undef CONFIG_BOOTCOMMAND
>  #ifdef CONFIG_TFABOOT
> -#define QSPI_NOR_BOOTCOMMAND   "pfe stop; sf probe 0:0; sf read $kernel_load "\
> +#define QSPI_NOR_BOOTCOMMAND   "sf probe 0:0; sf read $kernel_load "\
>                                 "$kernel_start $kernel_size && "\
>                                 "bootm $kernel_load"
>  #else
> -#define CONFIG_BOOTCOMMAND     "pfe stop; sf probe 0:0; sf read $kernel_load "\
> +#define CONFIG_BOOTCOMMAND     "sf probe 0:0; sf read $kernel_load "\
>                                 "$kernel_start $kernel_size && "\
>                                 "bootm $kernel_load"
>  #endif
> diff --git a/include/configs/ls1012afrdm.h b/include/configs/ls1012afrdm.h
> index 8de20e3ff450..8b47a0c181a6 100644
> --- a/include/configs/ls1012afrdm.h
> +++ b/include/configs/ls1012afrdm.h
> @@ -57,16 +57,16 @@
>         "installer=load usb 0:2 $load_addr "    \
>                    "/flex_installer_arm64.itb; "        \
>                    "bootm $load_addr#$board\0"  \
> -       "qspi_bootcmd=pfe stop; echo Trying load from qspi..;"  \
> +       "qspi_bootcmd=echo Trying load from qspi..;"    \
>                 "sf probe && sf read $load_addr "       \
>                 "$kernel_addr $kernel_size && bootm $load_addr#$board\0"
>
>  #undef CONFIG_BOOTCOMMAND
>  #ifdef CONFIG_TFABOOT
>  #undef QSPI_NOR_BOOTCOMMAND
> -#define QSPI_NOR_BOOTCOMMAND "pfe stop;run distro_bootcmd;run qspi_bootcmd"
> +#define QSPI_NOR_BOOTCOMMAND "run distro_bootcmd;run qspi_bootcmd"
>  #else
> -#define CONFIG_BOOTCOMMAND "pfe stop;run distro_bootcmd;run qspi_bootcmd"
> +#define CONFIG_BOOTCOMMAND "run distro_bootcmd;run qspi_bootcmd"
>  #endif
>
>  #endif /* __LS1012ARDB_H__ */
> diff --git a/include/configs/ls1012afrwy.h b/include/configs/ls1012afrwy.h
> index 29c344c63a95..c4c14e8ebfd9 100644
> --- a/include/configs/ls1012afrwy.h
> +++ b/include/configs/ls1012afrwy.h
> @@ -96,7 +96,7 @@
>                         "env exists secureboot "        \
>                         "&& esbc_validate ${scripthdraddr};"    \
>                 "source ${scriptaddr}\0"          \
> -       "sd_bootcmd=pfe stop; echo Trying load from sd card..;"         \
> +       "sd_bootcmd=echo Trying load from sd card..;"           \
>                 "mmcinfo; mmc read $load_addr "                 \
>                 "$kernel_addr_sd $kernel_size_sd ;"             \
>                 "env exists secureboot && mmc read $kernelheader_addr_r "\
> @@ -107,10 +107,10 @@
>  #undef CONFIG_BOOTCOMMAND
>  #ifdef CONFIG_TFABOOT
>  #undef QSPI_NOR_BOOTCOMMAND
> -#define QSPI_NOR_BOOTCOMMAND "pfe stop; run distro_bootcmd; run sd_bootcmd; "\
> +#define QSPI_NOR_BOOTCOMMAND "run distro_bootcmd; run sd_bootcmd; "\
>                              "env exists secureboot && esbc_halt;"
>  #else
> -#define CONFIG_BOOTCOMMAND "pfe stop; run distro_bootcmd; run sd_bootcmd; "\
> +#define CONFIG_BOOTCOMMAND "run distro_bootcmd; run sd_bootcmd; "\
>                            "env exists secureboot && esbc_halt;"
>  #endif
>
> diff --git a/include/configs/ls1012aqds.h b/include/configs/ls1012aqds.h
> index c4c9b7f5019f..e92970a1c954 100644
> --- a/include/configs/ls1012aqds.h
> +++ b/include/configs/ls1012aqds.h
> @@ -147,7 +147,7 @@
>                         "env exists secureboot "        \
>                         "&& esbc_validate ${scripthdraddr};"    \
>                 "source ${scriptaddr}\0"          \
> -       "qspi_bootcmd=pfe stop; echo Trying load from qspi..;"  \
> +       "qspi_bootcmd=echo Trying load from qspi..;"    \
>                 "sf probe 0:0 && sf read $load_addr "   \
>                 "$kernel_addr $kernel_size; env exists secureboot "     \
>                 "&& sf read $kernelheader_addr_r $kernelheader_addr "   \
> @@ -157,10 +157,10 @@
>  #undef CONFIG_BOOTCOMMAND
>  #ifdef CONFIG_TFABOOT
>  #undef QSPI_NOR_BOOTCOMMAND
> -#define QSPI_NOR_BOOTCOMMAND "pfe stop; run distro_bootcmd; run qspi_bootcmd; "\
> +#define QSPI_NOR_BOOTCOMMAND "run distro_bootcmd; run qspi_bootcmd; "\
>                              "env exists secureboot && esbc_halt;"
>  #else
> -#define CONFIG_BOOTCOMMAND "pfe stop; run distro_bootcmd; run qspi_bootcmd; "\
> +#define CONFIG_BOOTCOMMAND "run distro_bootcmd; run qspi_bootcmd; "\
>                            "env exists secureboot && esbc_halt;"
>  #endif
>
> diff --git a/include/configs/ls1012ardb.h b/include/configs/ls1012ardb.h
> index 94e742ee8446..d6b161446fe7 100644
> --- a/include/configs/ls1012ardb.h
> +++ b/include/configs/ls1012ardb.h
> @@ -98,7 +98,7 @@
>         "installer=load mmc 0:2 $load_addr "    \
>                    "/flex_installer_arm64.itb; "        \
>                    "bootm $load_addr#$board\0"  \
> -       "qspi_bootcmd=pfe stop; echo Trying load from qspi..;"  \
> +       "qspi_bootcmd=echo Trying load from qspi..;"    \
>                 "sf probe && sf read $load_addr "       \
>                 "$kernel_addr $kernel_size; env exists secureboot "     \
>                 "&& sf read $kernelheader_addr_r $kernelheader_addr "   \
> @@ -108,10 +108,10 @@
>  #undef CONFIG_BOOTCOMMAND
>  #ifdef CONFIG_TFABOOT
>  #undef QSPI_NOR_BOOTCOMMAND
> -#define QSPI_NOR_BOOTCOMMAND "pfe stop; run distro_bootcmd; run qspi_bootcmd; "\
> +#define QSPI_NOR_BOOTCOMMAND "run distro_bootcmd; run qspi_bootcmd; "\
>                              "env exists secureboot && esbc_halt;"
>  #else
> -#define CONFIG_BOOTCOMMAND "pfe stop; run distro_bootcmd; run qspi_bootcmd; "\
> +#define CONFIG_BOOTCOMMAND "run distro_bootcmd; run qspi_bootcmd; "\
>                            "env exists secureboot && esbc_halt;"
>  #endif
>
> diff --git a/include/net/pfe_eth/pfe/pfe_hw.h b/include/net/pfe_eth/pfe/pfe_hw.h
> index c69fc69130cc..71e4115afa0c 100644
> --- a/include/net/pfe_eth/pfe/pfe_hw.h
> +++ b/include/net/pfe_eth/pfe/pfe_hw.h
> @@ -160,4 +160,10 @@ void hif_rx_enable(void);
>  void hif_rx_disable(void);
>  void hif_rx_desc_disable(void);
>
> +#ifdef PFE_RESET_WA
> +void pfe_command_stop(int argc, char *const argv[]);
> +#else
> +static void pfe_command_stop(int argc, char *const argv[]) {}
> +#endif
> +
>  #endif /* _PFE_H_ */
> --
> 2.26.2
>
Reviewed-by: Ramon Fried <rfried.dev at gmail.com>


More information about the U-Boot mailing list