No description
Find a file
Peter Collingbourne 8635c016db fastboot: Use asynchronous operations to send data
The fastboot command currently uses USBDEVFS_BULK to transfer data
(including image data) to the target. On the kernel side it looks
like this:

1. Allocate a contiguous memory region and copy the user data into
   the memory region (which may involve accessing storage).
2. Instruct the driver to start a DMA operation.
3. Wait for the DMA to finish.

This is suboptimal because it misses out on a pipelining
opportunity. We could be doing 3 for the current operation in parallel
with 1 for the next operation, so that the next DMA is ready to go
as soon as the current DMA finishes.

The kernel supports asynchronous operations on usbdevfs file
descriptors (USBDEVFS_SUBMITURB and USBDEVFS_REAPURB), so we can
implement this like so:

1. Submit URB 0
2. Submit URB 1
3. Wait for URB 0
4. Submit URB 2
5. Wait for URB 1
and so on.

That is what this CL implements. On my machine it increases transfer
speed from 125 MB/s to 160 MB/s using a USB 3.0 connection to the
target (Pixel 8).

Bug: 324107907
Change-Id: I20db7ea14af85db48f6494091c8279ef7a21033d
2024-02-06 13:10:27 -08:00
bootstat bootstat: add more bootreasons 2023-10-20 05:56:34 +00:00
cli-test
code_coverage
debuggerd Merge "Make apex availability of libpropertyinfoparser and libpropertyinfoparser explicit" into main 2024-01-04 17:46:17 +00:00
diagnose_usb
fastboot fastboot: Use asynchronous operations to send data 2024-02-06 13:10:27 -08:00
fs_mgr Merge "TEST_MAPPING: don't run vts_libsnapshot_test in kernel-presubmit" into main 2024-01-08 18:00:04 +00:00
gatekeeperd Check AServiceManager_isDeclared before AServiceManager_getService 2023-06-14 02:43:54 +00:00
healthd healthd: Add handling for "Calibration required" battery health. 2023-12-11 15:25:13 -08:00
include
init Merge "init: remove session keyring workaround for old kernels" into main 2024-01-04 18:21:23 +00:00
janitors Hang up narayan's janitor overalls. 2023-12-14 17:47:24 +00:00
libappfuse
libasyncio
libcrypto_utils
libcutils Add an include 2023-10-06 18:46:17 +00:00
libgrallocusage
libkeyutils
libmodprobe Merge "libmodprobe: LPM: Cleanup of redundant check" 2023-06-29 17:21:18 +00:00
libnetutils add 'nodad' support to ifc_add_address() 2023-06-30 16:36:21 +00:00
libpackagelistparser
libprocessgroup libprocessgroup: Use cgroup.kill 2023-12-14 21:52:13 +00:00
libsparse Make simg2img host-only 2023-08-28 09:53:30 -07:00
libstats Add monicamwang and rayhdez to system/core/libstats/OWNERS 2023-10-11 17:52:25 -07:00
libsuspend
libsync
libsystem
libsysutils NetlinkEvent: trivial simplification. 2023-07-10 22:46:12 +00:00
libusbhost
libutils Introduce libutils_binder_sdk 2023-12-07 14:04:16 -08:00
libvendorsupport Provide a new LLNDK for the vendor api level handling 2024-01-05 22:56:09 +09:00
libvndksupport try llndk-deprecate 2023-12-21 02:09:14 +00:00
llkd
mini_keyctl
mkbootfs
property_service Make apex availability of libpropertyinfoparser and libpropertyinfoparser explicit 2024-01-04 01:34:40 +00:00
reboot
rootdir Mount /tmp as tmpfs. 2023-12-15 16:46:46 -08:00
run-as run-as: remove a special case. 2023-11-10 22:02:00 +00:00
sdcard
shell_and_utilities Update shell_and_utilities docs for U. 2023-03-01 22:05:37 +00:00
storaged Update storaged to use Health AIDL HAL V3. 2023-12-11 11:59:23 -08:00
toolbox Remove stray newline from err() call. 2023-09-07 19:30:31 +00:00
trusty trusty: storageproxyd: fix logging of freed path pointer 2023-12-18 11:03:36 +00:00
usbd
watchdogd
.clang-format
.clang-format-2
.clang-format-4
.gitignore
CleanSpec.mk
METADATA
MODULE_LICENSE_APACHE2
OWNERS Add bug component to system/core 2023-07-26 07:57:58 -07:00
PREUPLOAD.cfg
rustfmt.toml