devices: usb: use anyhow to provide better errors

Previously, if any event handler in the event loop failed, it would
print a generic "event loop stopping due to handle event error" message
and stop working. This is not particularly useful for determining which
event handler actually failed. Instead of returning an empty Err, use
anyhow::Context to associate each potential failure with a
human-readable error string.

chromium:1278424
TEST=Cause USB event loop failure, observe more useful message

Change-Id: I438a96bf757946efbd03a99ef0e17dfbf0d4e1c8
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3339793
Reviewed-by: Dmitry Torokhov <dtor@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Chirantan Ekbote <chirantan@chromium.org>
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
7 files changed
tree: 57a3ff199cb72ef6d1803b647adbbeb3d41805ac
  1. .cargo/
  2. .devcontainer/
  3. .github/
  4. aarch64/
  5. acpi_tables/
  6. arch/
  7. bin/
  8. bit_field/
  9. ci/
  10. common/
  11. crosvm-fuzz/
  12. crosvm_control/
  13. crosvm_plugin/
  14. devices/
  15. disk/
  16. docs/
  17. fuse/
  18. gpu_display/
  19. hypervisor/
  20. integration_tests/
  21. kernel_cmdline/
  22. kernel_loader/
  23. kvm/
  24. kvm_sys/
  25. libcras_stub/
  26. libvda/
  27. linux_input_sys/
  28. logo/
  29. net_sys/
  30. net_util/
  31. power_monitor/
  32. protos/
  33. qcow_utils/
  34. resources/
  35. rutabaga_gfx/
  36. seccomp/
  37. src/
  38. system_api_stub/
  39. tests/
  40. third_party/
  41. tools/
  42. tpm2/
  43. tpm2-sys/
  44. usb_sys/
  45. usb_util/
  46. vfio_sys/
  47. vhost/
  48. virtio_sys/
  49. vm_control/
  50. vm_memory/
  51. x86_64/
  52. .dockerignore
  53. .gitignore
  54. .gitmodules
  55. .rustfmt.toml
  56. ARCHITECTURE.md
  57. Cargo.toml
  58. CONTRIBUTING.md
  59. LICENSE
  60. navbar.md
  61. OWNERS
  62. README.chromeos
  63. README.md
  64. run_tests
  65. rust-toolchain
  66. setup_cros_cargo.sh
  67. test_all
  68. unblocked_terms.txt
README.md

crosvm - The Chrome OS Virtual Machine Monitor

crosvm is a virtual machine monitor (VMM) based on Linux’s KVM hypervisor, with a focus on simplicity, security, and speed. crosvm is intended to run Linux guests, originally as a security boundary for running native applications on the Chrome OS platform. Compared to QEMU, crosvm doesn’t emulate architectures or real hardware, instead concentrating on paravirtualized devices, such as the virtio standard.

crosvm is currently used to run Linux/Android guests on Chrome OS devices.

Logo