public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Lukasz Majewski <l.majewski@samsung.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v4 4/5] usb/gadget: add the fastboot gadget
Date: Fri, 25 Apr 2014 07:26:43 +0200	[thread overview]
Message-ID: <20140425072643.19f5fb3d@amdc2363> (raw)
In-Reply-To: <CAL_JsqL7RhQpWspeiBdsnXE2MZ7fP8cjng1O_6VtBv9BzZQ3YA@mail.gmail.com>

Hi Rob,

> On Wed, Apr 23, 2014 at 6:02 AM, Lukasz Majewski
> <l.majewski@samsung.com> wrote:
> > Hi Rob,
> >
> >> From: Sebastian Siewior <bigeasy@linutronix.de>
> >>
> >> This patch contains an implementation of the fastboot protocol on
> >> the device side and documentation. This is based on USB download
> >> gadget infrastructure. The fastboot function implements the
> >> getvar, reboot, download and reboot commands. What is missing is
> >> the flash handling i.e. writting the image to media.
> >>
> 
> [...]
> 
> >> +     f_fb->out_ep = usb_ep_autoconfig(gadget, &fs_ep_out);
> >> +     if (!f_fb->out_ep)
> >> +             goto err;
> >> +     f_fb->out_ep->driver_data = c->cdev;
> >> +
> >> +     hs_ep_out.bEndpointAddress = fs_ep_out.bEndpointAddress;
> >> +
> >> +     return 0;
> >> +err:
> >> +     return -1;
> >
> >                 Maybe -ENODEV or -EINVAL?
> 
> Okay. Actually, we can remove the goto and just return the original
> error codes.
> 
> 
> >> +     if (buffer_size < transfer_size)
> >> +             transfer_size = buffer_size;
> >> +
> >> +     memcpy((void *)CONFIG_USB_FASTBOOT_BUF_ADDR + download_bytes,
> >
> >         Please consider using dfu_get_buf() from dfu.c to provide
> >         dynamically allocated and controlled buffer instead of the
> >         CONFIG_USB_FASTBOOT_BUF_ADDR and _SIZE.
> >
> >         Another advantage of this code is the ability to set
> >         "dfu_bufsiz" env variable with size of the buffer.
> 
> I considered this already. I certainly don't like reinventing things
> which was why I originally used loadaddr and added loadsize to provide
> a defined load buffer size.
> 
> The problem is fastboot needs enough RAM to download an entire sparse
> filesystem. I have no idea what size exactly is typical or required,
> but it seems that we want to be able to use nearly all free RAM. We
> can talk all we want about how this is a crappy design, but it is what
> it is. This is how the protocol works.

I understand you :-). The same situation was with DFU on the beginning.
Large buffer with starting address defined per board.

Then, after some discussion, we come to conclusion that it would be
better to increase malloc pool and dynamically allocate buffer. 

Am I correct, that you don't know beforehand what would be the size of
downloaded file - maybe 5 MiB or maybe 512 MiB? Also from your
descriptor it seems like fastboot protocol don't want to impose any
restrictions about the size. Is it user's responsibility to send data
smaller than RAM size?

In the DFU/THOR we store data in buffer size packets (32 MiB). It also
has some drawbacks - with large raw data images we cannot download the
whole (e.g. rootfs) image and beforehand flashing check integrity.

One question - when your board has e.g. 768 MiB of "available" RAM, then
is the size of large rootfs restricted to this size?


> 
> The problem with the DFU buffer is it is allocated from the malloc
> region. If we just increase the malloc region to be close to total RAM
> size then we will start to break other commands like tftp and fsload
> which typically just use the RAM u-boot is not using (i.e. all but the
> end of memory). The only platforms which have more than a few MB for
> malloc are the ones that enable DFU.

Correct. On the other hand when we want to allocate too large buffer
we receive error from malloc and flashing is aborted. No harm is done.

> 
> Rob


-- 
Best regards,

Lukasz Majewski

Samsung R&D Institute Poland (SRPOL) | Linux Platform Group

  reply	other threads:[~2014-04-25  5:26 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-10 19:18 [U-Boot] [PATCH v3 0/5] Android Fastboot support Rob Herring
2014-04-10 19:18 ` [U-Boot] [PATCH v3 1/5] common: introduce maximum load size Rob Herring
2014-04-11 14:46   ` Tom Rini
2014-04-15 12:55   ` Lukasz Majewski
2014-04-15 21:59   ` Wolfgang Denk
2014-04-15 23:54     ` Rob Herring
2014-04-16  7:27       ` Wolfgang Denk
2014-04-10 19:18 ` [U-Boot] [PATCH v3 2/5] usb: handle NULL table in usb_gadget_get_string Rob Herring
2014-04-11 14:46   ` Tom Rini
2014-04-11 21:39   ` Marek Vasut
2014-04-15 13:00   ` Lukasz Majewski
2014-04-10 19:18 ` [U-Boot] [PATCH v3 3/5] image: add support for Android's boot image format Rob Herring
2014-04-11 14:46   ` Tom Rini
2014-04-11 21:44   ` Marek Vasut
2014-04-12 21:54     ` Rob Herring
2014-04-13 16:55       ` Marek Vasut
2014-04-15 13:59   ` Lukasz Majewski
2014-04-10 19:18 ` [U-Boot] [PATCH v3 4/5] usb/gadget: add the fastboot gadget Rob Herring
2014-04-11  7:14   ` Bo Shen
2014-04-11 12:55     ` Rob Herring
2014-04-11 22:13       ` Marek Vasut
2014-04-14  6:51         ` Lukasz Majewski
2014-04-14  2:28       ` Bo Shen
2014-04-11  7:30   ` Lukasz Majewski
2014-04-11 14:46   ` Tom Rini
2014-04-11 22:08   ` Marek Vasut
2014-04-15 15:41   ` Lukasz Majewski
2014-04-15 16:01     ` Rob Herring
2014-04-10 19:18 ` [U-Boot] [PATCH v3 5/5] arm: beagle: enable Android fastboot support Rob Herring
2014-04-11 14:46   ` Tom Rini
2014-04-10 19:18 ` [U-Boot] [PATCH 5/5] beagle: " Rob Herring
2014-04-10 19:42   ` Rob Herring
2014-04-11  7:04 ` [U-Boot] [PATCH v3 0/5] Android Fastboot support Sebastian Andrzej Siewior
2014-04-11 14:15   ` Tom Rini
2014-04-11 14:45 ` Tom Rini
2014-04-14 12:19   ` Rob Herring
2014-04-18 13:54 ` [U-Boot] [PATCH v4 " Rob Herring
2014-04-18 13:54   ` [U-Boot] [PATCH v4 1/5] usb: handle NULL table in usb_gadget_get_string Rob Herring
2014-04-18 13:54   ` [U-Boot] [PATCH v4 2/5] image: add support for Android's boot image format Rob Herring
2014-04-18 13:54   ` [U-Boot] [PATCH v4 3/5] usb: musb: fill in usb_gadget_unregister_driver Rob Herring
2014-04-23  9:46     ` Lukasz Majewski
2014-04-18 13:54   ` [U-Boot] [PATCH v4 4/5] usb/gadget: add the fastboot gadget Rob Herring
2014-04-23 11:02     ` Lukasz Majewski
2014-04-23 12:25       ` Marek Vasut
2014-04-24 15:02       ` Rob Herring
2014-04-25  5:26         ` Lukasz Majewski [this message]
2014-04-25 13:30           ` Rob Herring
2014-04-28  7:00             ` Lukasz Majewski
2014-04-18 13:54   ` [U-Boot] [PATCH v4 5/5] arm: beagle: enable Android fastboot support Rob Herring
2014-04-18 16:14   ` [U-Boot] [PATCH v4 0/5] Android Fastboot support Wolfgang Denk
2014-04-21 15:13     ` Marek Vasut
2014-04-23 14:36       ` Rob Herring
2014-04-23 16:57         ` Marek Vasut
2014-05-05 20:08   ` [U-Boot] [PATCH v5 0/3] " Rob Herring
2014-05-05 20:08     ` [U-Boot] [PATCH v5 1/3] image: add support for Android's boot image format Rob Herring
2014-05-05 20:08     ` [U-Boot] [PATCH v5 2/3] usb/gadget: add the fastboot gadget Rob Herring
2014-05-05 20:08     ` [U-Boot] [PATCH v5 3/3] arm: beagle: enable Android fastboot support Rob Herring
2014-05-05 20:21     ` [U-Boot] [PATCH v5 0/3] Android Fastboot support Marek Vasut
2014-05-07  6:35     ` Lukasz Majewski

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=20140425072643.19f5fb3d@amdc2363 \
    --to=l.majewski@samsung.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox