[PATCH v3 0/5] video: Improve syncing performance with cyclic
Simon Glass
sjg at chromium.org
Sat Jul 13 17:13:53 CEST 2024
Hi Caleb,
On Thu, 4 Jul 2024 at 16:17, Caleb Connolly <caleb.connolly at linaro.org> wrote:
>
> Hi Simon,
>
> On 04/07/2024 09:48, Simon Glass wrote:
> > Now that U-Boot has a background-processing feature, it is possible to
> > reduce the amount of 'foreground' syncing of the display. At present
> > this happens quite often.
> >
> > Foreground syncing blocks all other processing, sometimes for 10ms or
> > more. When pasting commands into U-Boot over the UART, this typically
> > result in characters being dropped. For example, on rpi_4 it isn't
> > possible to paste in more than 35 characters before things fail. This
> > makes updating the environment or entering long commands very painful
> > over the console, since text must be pasted in chunks, or the
> > vidconsole device must be dropped from stdout.
>
> I'm not intimately familiar with U-Boots event loop, but to me this
> sounds more like a bug in the console code. I can confirm this issue
> appears on Qualcomm platforms with the GENI serial driver, I tried
> enabling CONFIG_SERIAL_RX_BUFFER and it seemed to help significantly
> (though there were still a few dropped characters when pasting).
Thanks for digging into this. Yes I agree.
The fix I have been contemplating is to adjust video_sync() to only
flush the cache if 'force' is given, then have vidconsole_putc() pass
force=true if a newline is written.
>
> Of note, the USB ACM serial driver doesn't seem to have any issues here,
> presumably since it isn't restricted by the baud rate.
Or it might just have a large serial buffer?
>
> If there is an abort, does this approach still ensure that it gets
> printed properly on the video console?
What sort of abort?
>
> Kind regards,
> >
> > This series introduces background syncing, enabled by default for
> > boards which use video. The sync rates for foreground and background
> > are configurable.
> >
> > With this series it is possible to paste in any amount of text to the
> > command line. Some sandbox-specific workarounds can now be removed and
> > sandbox video (./u-boot -Dl) is significantly more responsive.
> >
> > This obviously increases code size, since it enables a subsystem not
> > normally used by default. However it only applies to boards which have
> > VIDEO enabled, which are presumably less worried about memory space
> > since the video code is fairly large.
> >
> > Also it is possible to disable CMD_CYCLIC and reduce the growth to:
> >
> > aarch64: (for 1/1 boards) all +1081.0 rodata +65.0 text +1016.0
> > arm: (for 1/1 boards) all +945.0 rodata +65.0 text +880.0
> >
> > Without that, the increase doubles.
> >
> > It is of course possible to disable CYCLIC and still use VIDEO but this
> > reverts to the current behaviour
> >
> > Changes in v3:
> > - Drop inclusion of kconfig.h in cyclic.h
> > - Adapt to new cyclic API
> >
> > Changes in v2:
> > - Add an SPL_CYCLIC symbol
> > - Add a lot more explanation about the header files
> > - Expand help for CONFIG_VIDEO
> > - Fix 'groth' and 'work-around' typos in cover letter
> >
> > Simon Glass (5):
> > cyclic: Add a symbol for SPL
> > video: Move last_sync to private data
> > video: Use cyclic to handle video sync
> > sandbox: Increase cyclic CPU-time limit
> > sandbox: Drop video-sync in serial driver
> >
> > common/Kconfig | 9 ++++++
> > common/Makefile | 2 +-
> > drivers/serial/sandbox.c | 2 --
> > drivers/video/Kconfig | 35 +++++++++++++++++++++
> > drivers/video/video-uclass.c | 52 +++++++++++++++++++++++++------
> > drivers/watchdog/Kconfig | 1 +
> > include/asm-generic/global_data.h | 2 +-
> > include/cyclic.h | 5 +--
> > include/video.h | 2 ++
> > 9 files changed, 95 insertions(+), 15 deletions(-)
> >
>
> --
> // Caleb (they/them)
Regards,
Simon
More information about the U-Boot
mailing list