Hi,

On 27/11/2023 13:56, Maxim Uvarov wrote:
Hello,

Please find updated version of lwip patches. Changes are in the
changelog bellow.

I've ran it on the libretech-cc board, and tried to load grub over tftp,
and I got this strange EFI boot error:
========================================================================================
U-Boot 2024.01-rc3-00056-g10d85cb3e3 (Nov 28 2023 - 11:17:24 +0100) libretech-cc

Model: Libre Computer AML-S905X-CC
SoC:   Amlogic Meson GXL (S905X) Revision 21:d (84:2)
DRAM:  2 GiB

<snip>

Net:   eth0: ethernet@c9410000
Hit any key to stop autoboot:  0
=> setenv autoload no
=> dhcp
ethernet@c9410000 LPA corruption - aneg restart
ethernet@c9410000 Waiting for PHY auto negotiation to complete.... done
Speed: 100, full duplex
eth0: ethernet@c9410000 3e:a6:23:c0:39:4b active
dhcp_tmo 20/20
dhcp_tmo 19/20
DHCP client bound to address 10.34.56.105
=> tftpboot 8080000 grubaa64.efi
init already done for ethernet@c9410000
Speed: 100, full duplex
TFTP from server 10.34.56.1; our IP address is 10.34.56.105
Filename 'grubaa64.efi'.
Load address: 0x8080000
Loading:############
done
Bytes transferred = 4288512 (0x417000 hex)
=> crc32 8080000 0x417000
crc32 for 08080000 ... 08496fff ==> c79bc066
========================================================================================

- DHCP OK,
- transfer OK
- CRC32 value OK

but then trying to run the EFI binary:
========================================================================================
=> bootefi 8080000
No EFI system partition
No EFI system partition
Failed to persist EFI variables
No UEFI binary known at 8080000
========================================================================================

This is what I get on the current master without this patchset:
========================================================================================
U-Boot 2024.01-rc3-00013-gacae7eb5fe (Nov 28 2023 - 11:29:38 +0100) libretech-cc

Model: Libre Computer AML-S905X-CC
SoC:   Amlogic Meson GXL (S905X) Revision 21:d (84:2)
DRAM:  2 GiB

<snip>

Net:   eth0: ethernet@c9410000
Hit any key to stop autoboot:  0
=> setenv autoload no
=> dhcp
ethernet@c9410000 LPA corruption - aneg restart
ethernet@c9410000 Waiting for PHY auto negotiation to complete.... done
Speed: 100, full duplex
BOOTP broadcast 1
BOOTP broadcast 2
BOOTP broadcast 3
DHCP client bound to address 10.34.56.105 (1008 ms)
=> tftpboot 8080000 grubaa64.efi
Speed: 100, full duplex
Using ethernet@c9410000 device
TFTP from server 10.34.56.1; our IP address is 10.34.56.105
Filename 'grubaa64.efi'.
Load address: 0x8080000
Loading: ##T #T T ##############################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         ##########################################################
         199.2 KiB/s
done
Bytes transferred = 4288512 (417000 hex)
=> crc32 8080000 0x417000
crc32 for 08080000 ... 08496fff ==> c79bc066
=> bootefi 8080000
No EFI system partition
No EFI system partition
Failed to persist EFI variables
Booting /grubaa64.efi
Welcome to GRUB!

<snip>

grub> net_ls_addr
efinet0 3e:a6:23:c0:39:4b 10.34.56.105
========================================================================================

I don't see what's wrong, crc32 is good and env variables are the same:
fileaddr=8080000
filesize=417000

Neil



Thank you,
Maxim.

changelog:
        v11: - v11 is mosly respin of v10 patches with CI error fixes.
                 Gitlab CI:
                 
https://source.denx.de/u-boot/custodians/u-boot-tpm/-/pipelines/18368
                 Azure CI:
                 
https://dev.azure.com/u-boot/u-boot/_build/results?buildId=7366&view=results
                 (Azure CI, which is connected to github. Sometime I can see
                  tftp timeout after some part of download there, but that can 
not be
                  reproduced locally. While Gitblab CI is stable. Because of 
num tries in
                  CI I suspect this CI was not always reliable.)
                 Azure and Gitlab also have different toolchains and I
                 would say Gitlab generates bigger code then Azure CI.
                Also many boards have a binary limit size of 800k (even
                 qemu has limits). And increased limits to fit all the code. 
Specially did it
                 patch by board config to show which boards are failing to 
build. There I have
                 a question if we really want to support new functionality for 
old boards (mips,
                 arm32 and etc...). I hope board owners can help me if
                 it's valid to increase these limits.

                In this version I used git submodules and friend CI with
                submodules. But I don't mind if you decide to maintain it in a 
different
                way.


        v10: - fix ping with following tftp command issue with incorrect
                ping timeout clear.
             - Makefile on make will init submodules and if needed will
               do git clone.
             - wget - some minor code style changes.
        v9: - added first patch describing git submodule for lwip. So
              the build procedure is:
                git submodule init
                git submodule update
                make
            - reworked a little bit dhcp cmd state polling
            - fixed review comments for v8
        v8: - comments for previous review
            - removed lwip timeout callback pointer
            - made lwip timeouts works, that also allowed to remove
              static vars.
            - setenv for filesize tftp and wget has to be in hex.
            - Makefile changes always compile it tftp,dns,wget,ping due
              to it can be used not only by CONFIG_CMD_.
            - Kconfig changes - simplify lwIP settings and support only
              one configuration.
            - tested with mini debian.iso load over http or tftp, mount
              and boot it (qemu, arm64).
        v7: - more review fixes.
            - support of multiply eth devices, were "ethact" selects the
              active device.
        v6: - fixed review comments for v5 (thanks Ilias and Simon).
        v5: - fixed Iliases comments and split big patch on the small
                ones.
        v4: - tested with tests/py/ did some minor fixes (out of tree
                build, variables set after downloads).
            - accounted review comments for documentation.
            - implemented dns command
             - corrected wget command to not use serverip variable and use just
                url string.
        v3: - use lwip commands for ping,tftp,wget,dhcp if this patch
              applied. Drop CONFIG_LIB_LWIP_REPLACE_<COMMAND> option.
            - docs: use rst variant and drop references to RFC.

Maxim Uvarov (43):
   submodule: add lwIP as git submodule
   net/lwip: add doc/develop/net_lwip.rst
   net/lwip: integrate lwIP library
   net/lwip: implement dns cmd
   net/lwip: implement dhcp cmd
   net/lwip: implement tftp cmd
   net/lwip: implement wget cmd
   net/lwip: implement ping cmd
   net/lwip: add lwIP configuration
   net/lwip: implement lwIP port to U-Boot
   net/lwip: update .gitignore with lwIP
   net/lwip: connection between cmd and lwip apps
   net/lwip: replace original net commands with lwip
   net/lwip: split net.h to net.h, arp.h and eth.h
   test_efi_loader.py: use $filesize var
   test_net: print out net list
   net: sandbox: fix NULL pointer derefences
   net/smc911x: fix return from smc911x_send
   sandbox: eth-raw-os: successful return code is 0
   driver/net/rtl8139: remove debug print
   mach-socfpga: do not overlap defines with lwip
   bcm_ns3: fix overlap define with lwip
   rcar3_salvator-x_defconfig: increase binary size limit
   lwip: omap3: rename mem_init
   configs/turris_omnia_defconfig set limit to 0xf6000
   configs/tbs2910_defconfig inc limit
   configs/socfpga_secu1_defconfig: enable LTO
   configs/turris_omnia_defconfig: enable LTO
   configs/am335x_boneblack_vboot_defconfig: enable LTO and increase SPL
     size
   configs/sheevaplug_defconfig: enable LTO and inc size
   configs/lschlv2_defconfig: enable LTO and inc size
   configs/lsxhl_defconfig: LTO + size
   configs/am335x_evm_defconfig: inc SPL size
   configs/bk4r1_defconfig: inc size
   configs/linkit-smart-7688_defconfig: increse size
   configs/gardena-smart-gateway-mt7688_defconfig: increase size
   configs/rcar3_ulcb_defconfig: increase size
   configs/qemu-x86_64_defconfig: increase ROM size
   Makefile: add dtbs to clean
   .azure-pipelines: init submodules
   mach-mtmips: inc SPL size limit
   configs/linkit-smart-7688_defconfig: increase board limit
   .gitlab-ci.yml: change ownership of the git files

  .azure-pipelines.yml                          |  10 +-
  .gitlab-ci.yml                                |  15 +-
  .gitmodules                                   |   4 +
  Makefile                                      |  12 +-
  arch/arm/include/asm/arch-omap3/mem.h         |   2 +-
  arch/arm/mach-omap2/omap3/board.c             |   2 +-
  arch/arm/mach-omap2/omap3/emif4.c             |   4 +-
  arch/arm/mach-omap2/omap3/sdrc.c              |   6 +-
  .../mach-socfpga/include/mach/handoff_soc64.h |   6 -
  arch/arm/mach-socfpga/wrap_handoff_soc64.c    |   9 +
  arch/mips/mach-mtmips/Kconfig                 |   2 +-
  arch/sandbox/cpu/eth-raw-os.c                 |   2 +-
  boot/bootmeth_efi.c                           |  18 +-
  boot/bootmeth_pxe.c                           |  21 +-
  cmd/Makefile                                  |   1 +
  cmd/net-lwip.c                                | 307 ++++++++++++++++
  cmd/net.c                                     |  86 +----
  cmd/pxe.c                                     |  19 +-
  configs/am335x_boneblack_vboot_defconfig      |   3 +
  configs/am335x_evm_defconfig                  |   1 +
  configs/bk4r1_defconfig                       |   2 +-
  .../gardena-smart-gateway-mt7688_defconfig    |   2 +-
  configs/linkit-smart-7688_defconfig           |   2 +-
  configs/lschlv2_defconfig                     |   3 +-
  configs/lsxhl_defconfig                       |   3 +-
  configs/qemu-x86_64_defconfig                 |   5 +-
  configs/rcar3_salvator-x_defconfig            |   3 +-
  configs/rcar3_ulcb_defconfig                  |   1 +
  configs/sheevaplug_defconfig                  |   3 +-
  configs/socfpga_secu1_defconfig               |   1 +
  configs/tbs2910_defconfig                     |   2 +-
  configs/turris_omnia_defconfig                |   3 +-
  doc/develop/index.rst                         |   1 +
  doc/develop/net_lwip.rst                      |  75 ++++
  drivers/net/rtl8139.c                         |   1 -
  drivers/net/sandbox.c                         |   5 +
  drivers/net/smc911x.c                         |   2 +-
  include/configs/bcm_ns3.h                     |   6 +-
  include/net.h                                 | 197 +----------
  include/net/arp.h                             |   9 +
  include/net/eth.h                             | 194 +++++++++++
  include/net/lwip.h                            |  73 ++++
  include/net/ulwip.h                           |  67 ++++
  lib/Kconfig                                   |   2 +-
  net/Kconfig                                   |   3 +
  net/Makefile                                  |   1 +
  net/eth-uclass.c                              |  37 +-
  net/lwip/.gitignore                           |   8 +
  net/lwip/Kconfig                              |  34 ++
  net/lwip/Makefile                             |  70 ++++
  net/lwip/apps/dhcp/lwip-dhcp.c                |  86 +++++
  net/lwip/apps/dns/lwip-dns.c                  |  63 ++++
  net/lwip/apps/http/Makefile                   |   6 +
  net/lwip/apps/http/lwip-wget.c                | 105 ++++++
  net/lwip/apps/ping/Makefile                   |  12 +
  net/lwip/apps/ping/lwip_ping.c                |  39 +++
  net/lwip/apps/ping/lwip_ping.h                |  15 +
  net/lwip/apps/ping/ping.h                     |  28 ++
  net/lwip/apps/tftp/Makefile                   |   7 +
  net/lwip/apps/tftp/lwip-tftp.c                | 132 +++++++
  net/lwip/lwip-external                        |   1 +
  net/lwip/lwipopts.h                           | 178 ++++++++++
  net/lwip/port/if.c                            | 327 ++++++++++++++++++
  net/lwip/port/include/arch/cc.h               |  44 +++
  net/lwip/port/include/arch/sys_arch.h         |  10 +
  net/lwip/port/include/limits.h                |   0
  net/lwip/port/sys-arch.c                      |  13 +
  net/net.c                                     |  44 ++-
  test/py/tests/test_efi_loader.py              |   4 +-
  test/py/tests/test_net.py                     |   2 +
  70 files changed, 2113 insertions(+), 348 deletions(-)
  create mode 100644 .gitmodules
  create mode 100644 cmd/net-lwip.c
  create mode 100644 doc/develop/net_lwip.rst
  create mode 100644 include/net/arp.h
  create mode 100644 include/net/eth.h
  create mode 100644 include/net/lwip.h
  create mode 100644 include/net/ulwip.h
  create mode 100644 net/lwip/.gitignore
  create mode 100644 net/lwip/Kconfig
  create mode 100644 net/lwip/Makefile
  create mode 100644 net/lwip/apps/dhcp/lwip-dhcp.c
  create mode 100644 net/lwip/apps/dns/lwip-dns.c
  create mode 100644 net/lwip/apps/http/Makefile
  create mode 100644 net/lwip/apps/http/lwip-wget.c
  create mode 100644 net/lwip/apps/ping/Makefile
  create mode 100644 net/lwip/apps/ping/lwip_ping.c
  create mode 100644 net/lwip/apps/ping/lwip_ping.h
  create mode 100644 net/lwip/apps/ping/ping.h
  create mode 100644 net/lwip/apps/tftp/Makefile
  create mode 100644 net/lwip/apps/tftp/lwip-tftp.c
  create mode 160000 net/lwip/lwip-external
  create mode 100644 net/lwip/lwipopts.h
  create mode 100644 net/lwip/port/if.c
  create mode 100644 net/lwip/port/include/arch/cc.h
  create mode 100644 net/lwip/port/include/arch/sys_arch.h
  create mode 100644 net/lwip/port/include/limits.h
  create mode 100644 net/lwip/port/sys-arch.c


Reply via email to