All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alex Kiernan <alex.kiernan@gmail.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v4 00/14] Add fastboot UDP support
Date: Tue, 15 May 2018 19:33:25 +0100	[thread overview]
Message-ID: <CAO5Uq5SipjWpr4m-kZv_dzpQqiVEBH9Mo-Sd5uZUfz6vATb75g@mail.gmail.com> (raw)
In-Reply-To: <CAKaJLVv93qRs9K7OxH-ZCqp_6-Khv33iw2CHrX7h4=765Kb+qw@mail.gmail.com>

Hi Sam
On Tue, May 15, 2018 at 5:52 PM Sam Protsenko <semen.protsenko@linaro.org>
wrote:

> On 15 May 2018 at 17:48, Alex Kiernan <alex.kiernan@gmail.com> wrote:
> >
> > This series merges the fastboot UDP support from AOSP into mainline
> > U-Boot.
> >

> Hi Alex,

> Can you tell me which platforms you verified these patches on?

Sure... it's an internal board, but derived from a BeagleBone Black (just
with many of the components missing). I think I've also managed to track
down a BBB internally, so hopefully should be able to test on that in a day
or so.

> From
> what I see, it shouldn't affect regular fastboot operation,

That's what I was aiming for, there's a separate final RFC patch to migrate
the USB path across which I left out of this series as I doubt I've got it
completely right.

> but just
> in case: do you have some public Git tree with these patches, so that
> I can verify them on TI boards?

That'd be awesome, thanks!

Repo is here:

https://github.com/akiernan/u-boot/tree/us-fastboot-udp-v4

If you're trying to test this series, you'll want to pop the final commit
off it, as that's the USB migration patch.

> I can also verify UDP functionality as
> well, if you want me to. In that case, please provide instructions (or
> link to documentation) which I can use for testing.


It's pretty much the same as driving the USB side... start the fastboot
server:

setenv autoload no; dhcp; fastboot udp

And then from the client use something like:

fastboot -s udp:<target-ip-address> getvar serialno

If you're trying it on a board using the CPSW driver, if you send the
continue command, you'll see the server exit and the client hang doing
resends for a minute, which is this problem:

http://patchwork.ozlabs.org/patch/912382/

Whether that fix is correct is a different question, but it solved the
problem for me.

> Thanks.

> > Changes in UDP behaviour from the AOSP code, so it follows the existing
USB
> > behaviour:
> >
> > - 'boot' now follows the USB code and does 'bootm
CONFIG_FASTBOOT_BUF_ADDR'.
> >   I've added 'fastboot_bootcmd' which if set overrides the boot command
and
> >   allows the existing UDP behaviour to be preserved.
> > - 'continue' in UDP now exits the fastboot server rather than executing
> >   'run bootcmd'
> > - 'reboot-bootloader' no longer writes 'reboot-bootloader' to
> >   CONFIG_FASTBOOT_BUF_ADDR as its marker for the subsequent boot. The
code
> >   which is in AOSP common/android_bootloader.c expects this marker, but
> >   we have prior art in the USB code using the weak function
> >   fastboot_set_reboot_flag
> > - 'getvar' in the UDP path now supports fetching 'fastboot.' prefixed
> >   variables (inherited from the USB path), these override the defaults
> >
> > I'll post the USB migration as a separate patch.
> >
> > Changes in v4:
> > - add docbook comments
> > - leave strcmp_l1() in USB fastboot as we don't need it in UDP path
> > - add docbook comments
> > - new
> > - guard fb_getvar/fb_command with UDP_FUNCTION_FASTBOOT in Makefile
> > - add docbook comments
> > - remove parameter from fastboot_boot() since we always want
> >   fastboot_buf_addr (and if we're using fastboot_bootcmd then it's
> >   ignored)
> >
> > Changes in v3:
> > - move imply ANDROID_BOOT_IMAGE, CMD_FASTBOOT to FASTBOOT from
> >   USB_FUNCTION_FASTBOOT
> > - add depend on USB_FUNCTION_FASTBOOT to FASTBOOT_USB_DEV
> > - leave images-sparse.c in common to acommodate 2f83f21
> > - move Kconfig changes to previous patch
> > - refactor for changes in master
> > - Merge subsequent patch for formatting response strings into this one
> > - allow NULL to fastboot_okay() when there's no message to send
> > - guard FASTBOOT_GPT_NAME/FASTBOOT_MBR_NAME with EFI/DOS_PARTITION
> > - use FASTBOOT as our guard in Kconfig not a list of USB || UDP
> > - correct mis-translation from AOSP introduced when cleaning up for
> >   checkpatch - we should write when buffer is not NULL, rather than
> >   erasing, and erase when buffer is NULL
> > - use CMD_RET_USAGE from do_fastboot
> > - remove do_fastboot_udp from cmd/net.c and rewrite using net_loop()
> > - rename timed_send_info to fastboot_send_info, rename
fastboot_send_info to
> >   fastboot_udp_send_info
> > - replace FASTBOOT_HEADER_SIZE with sizeof(struct fastboot_header)
> > - move start time into timed_send_info() rather than passing it in
> > - make calls to fastboot_udp_send_info a runtime dependency, not a
compile
> >   time one
> > - set ${filesize} to size of downloaded image
> > - add progress meter from USB path during download
> > - add support for 'oem format' command from the USB path
> > - rename 'fastbootcmd' to 'fastboot_bootcmd' to make clear that this is
the
> >   fastboot boot command
> > - make getvar implementation table driven
> > - add fastboot_buf_addr, fastboot_buf_size to override buffer address
and
> >   size
> > - return correct filesystem type in getvar partition-type on MMC
> > - process "fastboot." prefixed env variables in getvar first so you
> >   can override the normal values (this also lets you set a fs type for
> >   NAND devices)
> > - make global variables static and add accessors for the things which
> >   the transport layers need
> > - squash subsequent patches which change this code into this one:
> >   - If the fastboot flash/erase commands are disabled, remove that
support
> >     so we still build correctly.
> >   - Add NAND support to fastboot UDP flash/erase commands
> >   - If we don't have a partition name passed, report it as not found.
> >   - Change the behaviour of the fastboot net code such that
> >     "reboot-bootloader" is no longer written to
CONFIG_FASTBOOT_BUF_ADDR for
> >     use as a marker on reboot (the AOSP code in
common/android-bootloader.c
> >     uses this marker - this code could be reinstated there if that gets
> >     merged).
> >   - Merge USB and UDP boot code. The USB implementation stays the same,
but
> >     UDP no longer passes an fdt. We introduce a new environment variable
> >     'fastboot_bootcmd' which if set overrides the hardcoded boot
command,
> >     setting this then allows the UDP implementation to remain the same.
If
> >     after running 'fastboot_bootcmd' the board has not booted, control
is
> >     returned to U-Boot and the fastboot process ends.
> >   - Separate the fastboot protocol handling from the fastboot UDP code
in
> >     preparation for reusing it in the USB code.
> >
> > Changes in v2:
> > - ensure fastboot syntax is backward compatible - 'fastboot 0' means
> >   'fastboot usb 0'
> >
> > Alex Kiernan (14):
> >   fastboot: Move fastboot to drivers/fastboot
> >   fastboot: Switch dependencies on FASTBOOT to USB_FUNCTION_FASTBOOT
> >   fastboot: Refactor fastboot_okay/fail to take response
> >   fastboot: Extract fastboot_okay/fail to fb_common.c
> >   fastboot: Correct dependencies in FASTBOOT_FLASH
> >   fastboot: Add missing newlines
> >   fastboot: Remove FIXME for CONFIG_FASTBOOT_...NAME
> >   fastboot: Fix parameter types in _fb_nand_write
> >   fastboot: Rename fb_set_reboot_flag to fastboot_set_reboot_flag
> >   fastboot: Extract common definitions from USB fastboot
> >   ti: fastboot: Move weak overrides to board files
> >   fs: Add fs_get_type_name to return current filesystem name
> >   mmc: Separate "mmc swrite" from fastboot
> >   net: fastboot: Merge AOSP UDP fastboot
> >
> >  arch/arm/Kconfig                                 |   2 -
> >  arch/arm/mach-omap2/boot-common.c                |  10 -
> >  arch/arm/mach-omap2/utils.c                      |   4 +-
> >  arch/arm/mach-rockchip/rk3128-board.c            |   4 +-
> >  arch/arm/mach-rockchip/rk322x-board.c            |   4 +-
> >  board/amazon/kc1/kc1.c                           |   2 +-
> >  board/lg/sniper/sniper.c                         |   2 +-
> >  board/ti/am57xx/board.c                          |  10 +
> >  board/ti/common/Kconfig                          |   1 -
> >  board/ti/dra7xx/evm.c                            |  10 +
> >  cmd/Kconfig                                      |  22 +-
> >  cmd/fastboot.c                                   |  91 ++++++-
> >  cmd/mmc.c                                        |  14 +-
> >  common/Makefile                                  |  14 -
> >  configs/am335x_boneblack_defconfig               |   2 +-
> >  configs/am335x_boneblack_vboot_defconfig         |   2 +-
> >  configs/am335x_evm_defconfig                     |   2 +-
> >  configs/am335x_evm_nor_defconfig                 |   2 +-
> >  configs/am335x_evm_norboot_defconfig             |   2 +-
> >  configs/am335x_evm_spiboot_defconfig             |   2 +-
> >  configs/am335x_evm_usbspl_defconfig              |   2 +-
> >  configs/am57xx_evm_defconfig                     |   2 +-
> >  configs/am57xx_hs_evm_defconfig                  |   2 +-
> >  configs/bcm23550_w1d_defconfig                   |   2 +-
> >  configs/bcm28155_ap_defconfig                    |   2 +-
> >  configs/birdland_bav335a_defconfig               |   2 +-
> >  configs/birdland_bav335b_defconfig               |   2 +-
> >  configs/cgtqmx6eval_defconfig                    |   2 +-
> >  configs/dra7xx_evm_defconfig                     |   2 +-
> >  configs/dra7xx_hs_evm_defconfig                  |   2 +-
> >  configs/kc1_defconfig                            |   2 +-
> >  configs/mx6qsabrelite_defconfig                  |   2 +-
> >  configs/mx6sabresd_defconfig                     |   2 +-
> >  configs/nitrogen6dl2g_defconfig                  |   2 +-
> >  configs/nitrogen6dl_defconfig                    |   2 +-
> >  configs/nitrogen6q2g_defconfig                   |   2 +-
> >  configs/nitrogen6q_defconfig                     |   2 +-
> >  configs/nitrogen6s1g_defconfig                   |   2 +-
> >  configs/nitrogen6s_defconfig                     |   2 +-
> >  configs/omap3_beagle_defconfig                   |   2 +-
> >  configs/omap3_evm_defconfig                      |   2 +-
> >  configs/omap3_logic_defconfig                    |   2 +-
> >  configs/sniper_defconfig                         |   2 +-
> >  configs/stih410-b2260_defconfig                  |   2 +-
> >  configs/xilinx_zynqmp_zc1751_xm015_dc1_defconfig |   2 +-
> >  configs/xilinx_zynqmp_zc1751_xm016_dc2_defconfig |   2 +-
> >  configs/xilinx_zynqmp_zcu102_rev1_0_defconfig    |   2 +-
> >  configs/xilinx_zynqmp_zcu102_revA_defconfig      |   2 +-
> >  configs/xilinx_zynqmp_zcu102_revB_defconfig      |   2 +-
> >  configs/xilinx_zynqmp_zcu106_revA_defconfig      |   2 +-
> >  drivers/Kconfig                                  |   2 +
> >  drivers/Makefile                                 |   1 +
> >  {cmd => drivers}/fastboot/Kconfig                |  53 ++--
> >  drivers/fastboot/Makefile                        |   7 +
> >  drivers/fastboot/fb_command.c                    | 327
+++++++++++++++++++++++
> >  drivers/fastboot/fb_common.c                     | 190 +++++++++++++
> >  drivers/fastboot/fb_getvar.c                     | 229 ++++++++++++++++
> >  {common => drivers/fastboot}/fb_mmc.c            | 192 ++++++++-----
> >  {common => drivers/fastboot}/fb_nand.c           |  46 ++--
> >  drivers/usb/gadget/f_fastboot.c                  |  59 ++--
> >  fs/fs.c                                          |  13 +
> >  include/fastboot.h                               | 167 +++++++++++-
> >  include/fb_mmc.h                                 |  10 +-
> >  include/fb_nand.h                                |  12 +-
> >  include/fs.h                                     |  10 +
> >  include/image-sparse.h                           |   4 +-
> >  include/net.h                                    |   2 +-
> >  include/net/fastboot.h                           |  21 ++
> >  lib/Kconfig                                      |   3 +
> >  lib/Makefile                                     |   1 +
> >  {common => lib}/image-sparse.c                   |  32 ++-
> >  net/Makefile                                     |   1 +
> >  net/fastboot.c                                   | 312
+++++++++++++++++++++
> >  net/net.c                                        |   7 +
> >  74 files changed, 1704 insertions(+), 259 deletions(-)
> >  rename {cmd => drivers}/fastboot/Kconfig (83%)
> >  create mode 100644 drivers/fastboot/Makefile
> >  create mode 100644 drivers/fastboot/fb_command.c
> >  create mode 100644 drivers/fastboot/fb_common.c
> >  create mode 100644 drivers/fastboot/fb_getvar.c
> >  rename {common => drivers/fastboot}/fb_mmc.c (66%)
> >  rename {common => drivers/fastboot}/fb_nand.c (81%)
> >  create mode 100644 include/net/fastboot.h
> >  rename {common => lib}/image-sparse.c (89%)
> >  create mode 100644 net/fastboot.c
> >
> > --
> > 2.7.4
> >



-- 
Alex Kiernan

      reply	other threads:[~2018-05-15 18:33 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-15 14:48 [U-Boot] [PATCH v4 00/14] Add fastboot UDP support Alex Kiernan
2018-05-15 14:48 ` [U-Boot] [PATCH v4 01/14] fastboot: Move fastboot to drivers/fastboot Alex Kiernan
2018-05-15 23:07   ` Joe Hershberger
2018-05-15 14:48 ` [U-Boot] [PATCH v4 02/14] fastboot: Switch dependencies on FASTBOOT to USB_FUNCTION_FASTBOOT Alex Kiernan
2018-05-15 23:08   ` Joe Hershberger
2018-05-15 14:48 ` [U-Boot] [PATCH v4 03/14] fastboot: Refactor fastboot_okay/fail to take response Alex Kiernan
2018-05-15 14:48 ` [U-Boot] [PATCH v4 04/14] fastboot: Extract fastboot_okay/fail to fb_common.c Alex Kiernan
2018-05-15 14:48 ` [U-Boot] [PATCH v4 05/14] fastboot: Correct dependencies in FASTBOOT_FLASH Alex Kiernan
2018-05-15 14:48 ` [U-Boot] [PATCH v4 06/14] fastboot: Add missing newlines Alex Kiernan
2018-05-15 14:48 ` [U-Boot] [PATCH v4 07/14] fastboot: Remove FIXME for CONFIG_FASTBOOT_...NAME Alex Kiernan
2018-05-15 23:10   ` Joe Hershberger
2018-05-15 14:48 ` [U-Boot] [PATCH v4 08/14] fastboot: Fix parameter types in _fb_nand_write Alex Kiernan
2018-05-15 23:11   ` Joe Hershberger
2018-05-15 14:48 ` [U-Boot] [PATCH v4 09/14] fastboot: Rename fb_set_reboot_flag to fastboot_set_reboot_flag Alex Kiernan
2018-05-15 23:13   ` Joe Hershberger
2018-05-15 14:48 ` [U-Boot] [PATCH v4 10/14] fastboot: Extract common definitions from USB fastboot Alex Kiernan
2018-05-15 16:05   ` Simon Glass
2018-05-15 23:14   ` Joe Hershberger
2018-05-15 14:48 ` [U-Boot] [PATCH v4 11/14] ti: fastboot: Move weak overrides to board files Alex Kiernan
2018-05-15 14:48 ` [U-Boot] [PATCH v4 12/14] fs: Add fs_get_type_name to return current filesystem name Alex Kiernan
2018-05-15 23:16   ` Joe Hershberger
2018-05-15 14:48 ` [U-Boot] [PATCH v4 13/14] mmc: Separate "mmc swrite" from fastboot Alex Kiernan
2018-05-15 23:19   ` Joe Hershberger
2018-05-16  5:00     ` Alex Kiernan
2018-05-16 16:17       ` Joe Hershberger
2018-05-16 16:58         ` Alex Kiernan
2018-05-16 18:41   ` Joe Hershberger
2018-05-15 14:48 ` [U-Boot] [PATCH v4 14/14] net: fastboot: Merge AOSP UDP fastboot Alex Kiernan
2018-05-16 19:15   ` Joe Hershberger
2018-05-16 20:10     ` Alex Kiernan
2018-05-15 16:52 ` [U-Boot] [PATCH v4 00/14] Add fastboot UDP support Sam Protsenko
2018-05-15 18:33   ` Alex Kiernan [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAO5Uq5SipjWpr4m-kZv_dzpQqiVEBH9Mo-Sd5uZUfz6vATb75g@mail.gmail.com \
    --to=alex.kiernan@gmail.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.