Skip to content

Conversation

alimirjamali
Copy link

@alimirjamali alimirjamali commented Sep 3, 2025

@alimirjamali alimirjamali marked this pull request as ready for review September 3, 2025 22:28
@alimirjamali
Copy link
Author

PipelineRetryFailed

Copy link

codecov bot commented Sep 3, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 93.02%. Comparing base (1789756) to head (09bb5ab).
⚠️ Report is 2 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #275      +/-   ##
==========================================
- Coverage   93.09%   93.02%   -0.08%     
==========================================
  Files          64       64              
  Lines       13269    13269              
==========================================
- Hits        12353    12343      -10     
- Misses        916      926      +10     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@alimirjamali alimirjamali force-pushed the issue-10202-10131-sys-usb branch 2 times, most recently from eccb827 to 0029bdd Compare September 5, 2025 14:52
@neowutran
Copy link

I started to try it today, seems to solve the issue

@qubesos-bot
Copy link

qubesos-bot commented Sep 9, 2025

OpenQA test summary

Complete test suite and dependencies: https://openqa.qubes-os.org/tests/overview?distri=qubesos&version=4.3&build=2025091804-4.3&flavor=pull-requests

Test run included the following:

New failures, excluding unstable

Compared to: https://openqa.qubes-os.org/tests/overview?distri=qubesos&version=4.3&build=2025081011-4.3&flavor=update

  • system_tests_network

    • system_tests: Fail (unknown)
      Tests qubes.tests.integ.network failed (exit code 1), details repor...

    • system_tests: Failed (test died)
      # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...

    • VmNetworking_fedora-42-xfce: test_001_simple_networking_paused (failure)
      AssertionError: 1 != 0 : Ping by IP on netvm=something -> netvm=som...

  • system_tests_backup

    • system_tests: Fail (unknown)
      Tests qubes.tests.integ.backup failed (exit code 1), details report...

    • system_tests: Failed (test died)
      # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...

    • TC_00_Backup: test_100_backup_dom0_no_restore (failure)
      AssertionError: QubesException during backup_prepare: Can not backu...

    • TC_00_Backup: test_101_backup_dom0_to_homedir (failure)
      AssertionError: QubesException during backup_prepare: Can not backu...

  • system_tests_pvgrub_salt_storage

    • system_tests: Fail (unknown)
      Tests qubes.tests.integ.storage failed (exit code 1), details repor...

    • system_tests: Failed (test died)
      # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...

    • StorageReflinkOnBtrfs: test_003_snapshot (error + timeout + cleanup)
      qubes.exc.QubesVMShutdownTimeoutError: Domain shutdown timed out: '...

  • system_tests_usbproxy

    • system_tests: Fail (unknown)
      Tests qubes.tests.extra failed (exit code 1), details reported sepa...

    • system_tests: Failed (test died)
      # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...

    • TC_20_USBProxy_core3_debian-13-xfce: test_060_auto_detach_on_remove (failure)
      AssertionError: 0 == 0 : Device disconnection failed

  • system_tests_network_ipv6

    • system_tests: Fail (unknown)
      Tests qubes.tests.integ.network_ipv6 failed (exit code 1), details ...

    • system_tests: Failed (test died)
      # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...

    • VmIPv6Networking_debian-13-xfce: test_001_simple_networking_paused (failure)
      AssertionError: 1 != 0 : Ping by IP on netvm=something -> netvm=som...

  • system_tests_qwt_win10_seamless@hw13

    • windows_clipboard_and_filecopy: unnamed test (unknown)
    • windows_clipboard_and_filecopy: Failed (test died)
      # Test died: no candidate needle with tag(s) 'windows-Edge-address-...
  • system_tests_qwt_win11@hw13

    • windows_install: wait_serial (wait serial expected)
      # wait_serial expected: qr/qDqV_-\d+-/...

    • windows_install: Failed (test died + timed out)
      # Test died: command 'script -e -c 'bash -x /usr/bin/qvm-create-win...

  • system_tests_extra

    • TC_00_QVCTest_whonix-gateway-17: test_010_screenshare (failure)
      ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^... AssertionError: 0 == 0
  • system_tests_guivm_vnc_gui_interactive

    • guivm_manager: unnamed test (unknown)
    • guivm_manager: Failed (test died)
      # Test died: no candidate needle with tag(s) 'qubes-qube-manager' m...

Failed tests

29 failures
  • system_tests_network

    • system_tests: Fail (unknown)
      Tests qubes.tests.integ.network failed (exit code 1), details repor...

    • system_tests: Failed (test died)
      # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...

    • VmNetworking_fedora-42-xfce: test_001_simple_networking_paused (failure)
      AssertionError: 1 != 0 : Ping by IP on netvm=something -> netvm=som...

  • system_tests_backup

    • system_tests: Fail (unknown)
      Tests qubes.tests.integ.backup failed (exit code 1), details report...

    • system_tests: Failed (test died)
      # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...

    • TC_00_Backup: test_100_backup_dom0_no_restore (failure)
      AssertionError: QubesException during backup_prepare: Can not backu...

    • TC_00_Backup: test_101_backup_dom0_to_homedir (failure)
      AssertionError: QubesException during backup_prepare: Can not backu...

  • system_tests_pvgrub_salt_storage

    • system_tests: Fail (unknown)
      Tests qubes.tests.integ.storage failed (exit code 1), details repor...

    • system_tests: Failed (test died)
      # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...

    • StorageReflinkOnBtrfs: test_003_snapshot (error + timeout + cleanup)
      qubes.exc.QubesVMShutdownTimeoutError: Domain shutdown timed out: '...

  • system_tests_usbproxy

    • system_tests: Fail (unknown)
      Tests qubes.tests.extra failed (exit code 1), details reported sepa...

    • system_tests: Failed (test died)
      # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...

    • TC_20_USBProxy_core3_debian-13-xfce: test_060_auto_detach_on_remove (failure)
      AssertionError: 0 == 0 : Device disconnection failed

  • system_tests_network_ipv6

    • system_tests: Fail (unknown)
      Tests qubes.tests.integ.network_ipv6 failed (exit code 1), details ...

    • system_tests: Failed (test died)
      # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...

    • VmIPv6Networking_debian-13-xfce: test_001_simple_networking_paused (failure)
      AssertionError: 1 != 0 : Ping by IP on netvm=something -> netvm=som...

  • system_tests_qwt_win10_seamless@hw13

    • windows_clipboard_and_filecopy: unnamed test (unknown)
    • windows_clipboard_and_filecopy: Failed (test died)
      # Test died: no candidate needle with tag(s) 'windows-Edge-address-...
  • system_tests_qwt_win11@hw13

    • windows_install: wait_serial (wait serial expected)
      # wait_serial expected: qr/qDqV_-\d+-/...

    • windows_install: Failed (test died + timed out)
      # Test died: command 'script -e -c 'bash -x /usr/bin/qvm-create-win...

  • system_tests_dispvm_perf@hw7

    • system_tests: Fail (unknown)
      Tests qubes.tests.integ.dispvm_perf failed (exit code 1), details r...

    • system_tests: Failed (test died)
      # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...

    • TC_00_DispVMPerf_whonix-workstation-17: test_027_dispvm_from_dom0_preload_gui (failure)
      AssertionError: '/usr/lib/qubes/tests/dispvm_perf.py --dvm=test-ins...

  • system_tests_extra

    • system_tests: Fail (unknown)
      Tests qubes.tests.extra failed (exit code 1), details reported sepa...

    • system_tests: Failed (test died)
      # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...

    • TC_00_QVCTest_whonix-gateway-17: test_010_screenshare (failure)
      ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^... AssertionError: 0 == 0

    • TC_00_QVCTest_whonix-workstation-17: test_010_screenshare (failure)
      AssertionError: 1 != 0 : Timeout waiting for /dev/video0 in test-in...

  • system_tests_guivm_vnc_gui_interactive

    • guivm_manager: unnamed test (unknown)
    • guivm_manager: Failed (test died)
      # Test died: no candidate needle with tag(s) 'qubes-qube-manager' m...

Fixed failures

Compared to: https://openqa.qubes-os.org/tests/149225#dependencies

82 fixed
  • system_tests_dispvm

    • system_tests: Fail (unknown)
      Tests qubes.tests.integ.dispvm failed (exit code 1), details report...

    • system_tests: Failed (test died)
      # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...

    • TC_20_DispVM_debian-13-xfce: test_012_preload_low_mem (failure)
      ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^... AssertionError: 1 != 0

    • TC_20_DispVM_debian-13-xfce: test_013_preload_gui (error)
      raise KeyError(key)... KeyError: 'disp3723'

    • TC_20_DispVM_debian-13-xfce: test_014_preload_nogui (error + cleanup)
      raise TimeoutError from exc_val... TimeoutError

    • TC_20_DispVM_debian-13-xfce: test_015_preload_race_more (error + cleanup)
      raise KeyError(key)... KeyError: 'disp1187'

    • TC_20_DispVM_debian-13-xfce: test_016_preload_race_less (failure + cleanup)
      ^^^^^^^^^^^^^^^^^^^^^^... AssertionError

    • TC_20_DispVM_debian-13-xfce: test_017_preload_autostart (error)
      raise KeyError(key)... KeyError: 'disp7317'

    • TC_20_DispVM_debian-13-xfce: test_018_preload_global (error)
      raise KeyError(key)... KeyError: 'disp8572'

    • TC_20_DispVM_debian-13-xfce: test_019_preload_refresh (error)
      raise KeyError(key)... KeyError: 'disp6425'

    • TC_20_DispVM_fedora-42-xfce: test_012_preload_low_mem (failure)
      ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^... AssertionError: 1 != 0

    • TC_20_DispVM_whonix-workstation-17: test_012_preload_low_mem (failure)
      ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^... AssertionError: 1 != 0

  • system_tests_kde_gui_interactive

    • gui_keyboard_layout: wait_serial (wait serial expected)
      # wait_serial expected: "echo -e '[Layout]\nLayoutList=us,de' | sud...

    • gui_keyboard_layout: Failed (test died)
      # Test died: command 'test "$(cd ~user;ls e1*)" = "$(qvm-run -p wor...

  • system_tests_audio

    • system_tests: Fail (unknown)
      Tests qubes.tests.integ.audio failed (exit code 1), details reporte...

    • system_tests: Failed (test died)
      # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...

    • TC_20_AudioVM_Pulse_whonix-workstation-17: test_223_audio_play_hvm (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...

    • TC_20_AudioVM_Pulse_whonix-workstation-17: test_224_audio_rec_muted_hvm (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...

    • TC_20_AudioVM_Pulse_whonix-workstation-17: test_225_audio_rec_unmuted_hvm (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...

    • TC_20_AudioVM_Pulse_whonix-workstation-17: test_252_audio_playback_audiovm_switch_hvm (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...

  • system_tests_audio@hw1

    • system_tests: Fail (unknown)
      Tests qubes.tests.integ.audio failed (exit code 1), details reporte...

    • system_tests: Failed (test died)
      # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...

    • TC_20_AudioVM_Pulse_whonix-workstation-17: test_223_audio_play_hvm (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 60 secon...

    • TC_20_AudioVM_Pulse_whonix-workstation-17: test_224_audio_rec_muted_hvm (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 60 secon...

    • TC_20_AudioVM_Pulse_whonix-workstation-17: test_252_audio_playback_audiovm_switch_hvm (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 60 secon...

  • system_tests_dispvm_perf@hw7

  • system_tests_guivm_gpu_gui_interactive@hw13

    • guivm_startup: wait_serial (wait serial expected)
      # wait_serial expected: qr/lEcbc-\d+-/...

    • guivm_startup: Failed (test died + timed out)
      # Test died: command '! qvm-check sys-whonix || time qvm-start sys-...

  • system_tests_basic_vm_qrexec_gui_ext4

    • system_tests: Fail (unknown)
      Tests qubes.tests.integ.vm_qrexec_gui failed (exit code 1), details...

    • system_tests: Failed (test died)
      # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...

    • TC_20_NonAudio_whonix-gateway-17-pool: test_012_qubes_desktop_run (error + cleanup)
      raise TimeoutError from exc_val... TimeoutError

Unstable tests

Performance Tests

Performance degradation:

12 performance degradations
  • fedora-42-xfce_exec-data-duplex-root: 110.99 🔻 ( previous job: 96.36, degradation: 115.18%)
  • whonix-gateway-17_exec-data-duplex: 75.30 🔻 ( previous job: 68.38, degradation: 110.12%)
  • dom0_root_seq1m_q8t1_read 3:read_bandwidth_kb: 399914.00 🔻 ( previous job: 497426.00, degradation: 80.40%)
  • dom0_root_seq1m_q8t1_write 3:write_bandwidth_kb: 112024.00 🔻 ( previous job: 265260.00, degradation: 42.23%)
  • dom0_root_seq1m_q1t1_read 3:read_bandwidth_kb: 199236.00 🔻 ( previous job: 431512.00, degradation: 46.17%)
  • dom0_root_seq1m_q1t1_write 3:write_bandwidth_kb: 44503.00 🔻 ( previous job: 196254.00, degradation: 22.68%)
  • dom0_root_rnd4k_q32t1_read 3:read_bandwidth_kb: 20303.00 🔻 ( previous job: 23940.00, degradation: 84.81%)
  • fedora-42-xfce_root_rnd4k_q1t1_write 3:write_bandwidth_kb: 1220.00 🔻 ( previous job: 1368.00, degradation: 89.18%)
  • fedora-42-xfce_private_rnd4k_q1t1_read 3:read_bandwidth_kb: 7996.00 🔻 ( previous job: 8992.00, degradation: 88.92%)
  • fedora-42-xfce_private_rnd4k_q1t1_write 3:write_bandwidth_kb: 424.00 🔻 ( previous job: 1251.00, degradation: 33.89%)
  • fedora-42-xfce_volatile_seq1m_q1t1_write 3:write_bandwidth_kb: 41580.00 🔻 ( previous job: 64217.00, degradation: 64.75%)
  • fedora-42-xfce_volatile_rnd4k_q1t1_write 3:write_bandwidth_kb: 1022.00 🔻 ( previous job: 2384.00, degradation: 42.87%)

Remaining performance tests:

161 tests
  • debian-13-xfce_exec: 7.47 🟢 ( previous job: 8.36, improvement: 89.35%)
  • debian-13-xfce_exec-root: 26.78 🟢 ( previous job: 27.36, improvement: 97.89%)
  • debian-13-xfce_socket: 8.25 🟢 ( previous job: 8.57, improvement: 96.29%)
  • debian-13-xfce_socket-root: 8.21 🟢 ( previous job: 8.26, improvement: 99.46%)
  • debian-13-xfce_exec-data-simplex: 62.35 🟢 ( previous job: 72.43, improvement: 86.08%)
  • debian-13-xfce_exec-data-duplex: 71.04 🟢 ( previous job: 76.65, improvement: 92.68%)
  • debian-13-xfce_exec-data-duplex-root: 89.89 🟢 ( previous job: 91.79, improvement: 97.93%)
  • debian-13-xfce_socket-data-duplex: 136.04 🔻 ( previous job: 133.45, degradation: 101.95%)
  • fedora-42-xfce_exec: 9.15 🔻 ( previous job: 9.06, degradation: 101.01%)
  • fedora-42-xfce_exec-root: 58.50 🔻 ( previous job: 58.19, degradation: 100.53%)
  • fedora-42-xfce_socket: 8.02 🟢 ( previous job: 8.48, improvement: 94.54%)
  • fedora-42-xfce_socket-root: 8.63 🔻 ( previous job: 8.18, degradation: 105.47%)
  • fedora-42-xfce_exec-data-simplex: 72.57 🟢 ( previous job: 78.48, improvement: 92.46%)
  • fedora-42-xfce_exec-data-duplex: 68.29 🔻 ( previous job: 67.92, degradation: 100.55%)
  • fedora-42-xfce_socket-data-duplex: 155.24 🔻 ( previous job: 142.58, degradation: 108.88%)
  • whonix-gateway-17_exec: 6.97 🟢 ( previous job: 8.12, improvement: 85.85%)
  • whonix-gateway-17_exec-root: 38.04 🟢 ( previous job: 41.05, improvement: 92.65%)
  • whonix-gateway-17_socket: 6.79 🟢 ( previous job: 8.52, improvement: 79.61%)
  • whonix-gateway-17_socket-root: 7.10 🟢 ( previous job: 8.12, improvement: 87.45%)
  • whonix-gateway-17_exec-data-simplex: 75.69 🟢 ( previous job: 83.60, improvement: 90.54%)
  • whonix-gateway-17_exec-data-duplex-root: 92.01 🟢 ( previous job: 99.37, improvement: 92.59%)
  • whonix-gateway-17_socket-data-duplex: 173.41 🔻 ( previous job: 167.12, degradation: 103.77%)
  • whonix-workstation-17_exec: 8.07 🔻 ( previous job: 7.57, degradation: 106.66%)
  • whonix-workstation-17_exec-root: 56.64 🟢 ( previous job: 56.76, improvement: 99.79%)
  • whonix-workstation-17_socket: 8.19 🟢 ( previous job: 8.59, improvement: 95.37%)
  • whonix-workstation-17_socket-root: 9.34 🔻 ( previous job: 8.89, degradation: 105.10%)
  • whonix-workstation-17_exec-data-simplex: 72.46 🔻 ( previous job: 66.80, degradation: 108.47%)
  • whonix-workstation-17_exec-data-duplex: 76.97 🔻 ( previous job: 74.50, degradation: 103.31%)
  • whonix-workstation-17_exec-data-duplex-root: 97.64 🟢 ( previous job: 102.34, improvement: 95.41%)
  • whonix-workstation-17_socket-data-duplex: 157.30 🔻 ( previous job: 147.97, degradation: 106.30%)
  • dom0_root_rnd4k_q32t1_write 3:write_bandwidth_kb: 4316.00 🟢 ( previous job: 2446.00, improvement: 176.45%)
  • dom0_root_rnd4k_q1t1_read 3:read_bandwidth_kb: 10183.00 🟢 ( previous job: 5874.00, improvement: 173.36%)
  • dom0_root_rnd4k_q1t1_write 3:write_bandwidth_kb: 4515.00 🟢 ( previous job: 29.00, improvement: 15568.97%)
  • dom0_varlibqubes_seq1m_q8t1_read 3:read_bandwidth_kb: 310137.00 🟢 ( previous job: 292489.00, improvement: 106.03%)
  • dom0_varlibqubes_seq1m_q8t1_write 3:write_bandwidth_kb: 148002.00 🟢 ( previous job: 110817.00, improvement: 133.56%)
  • dom0_varlibqubes_seq1m_q1t1_read 3:read_bandwidth_kb: 440023.00 🟢 ( previous job: 137802.00, improvement: 319.32%)
  • dom0_varlibqubes_seq1m_q1t1_write 3:write_bandwidth_kb: 162049.00 🟢 ( previous job: 121719.00, improvement: 133.13%)
  • dom0_varlibqubes_rnd4k_q32t1_read 3:read_bandwidth_kb: 109810.00 🟢 ( previous job: 103932.00, improvement: 105.66%)
  • dom0_varlibqubes_rnd4k_q32t1_write 3:write_bandwidth_kb: 6619.00 🟢 ( previous job: 6356.00, improvement: 104.14%)
  • dom0_varlibqubes_rnd4k_q1t1_read 3:read_bandwidth_kb: 8340.00 🟢 ( previous job: 7695.00, improvement: 108.38%)
  • dom0_varlibqubes_rnd4k_q1t1_write 3:write_bandwidth_kb: 3902.00 🔻 ( previous job: 3925.00, degradation: 99.41%)
  • fedora-42-xfce_root_seq1m_q8t1_read 3:read_bandwidth_kb: 376238.00 🟢 ( previous job: 366891.00, improvement: 102.55%)
  • fedora-42-xfce_root_seq1m_q8t1_write 3:write_bandwidth_kb: 181289.00 🟢 ( previous job: 140215.00, improvement: 129.29%)
  • fedora-42-xfce_root_seq1m_q1t1_read 3:read_bandwidth_kb: 298909.00 🔻 ( previous job: 299764.00, degradation: 99.71%)
  • fedora-42-xfce_root_seq1m_q1t1_write 3:write_bandwidth_kb: 48674.00 🟢 ( previous job: 47575.00, improvement: 102.31%)
  • fedora-42-xfce_root_rnd4k_q32t1_read 3:read_bandwidth_kb: 85772.00 🔻 ( previous job: 86001.00, degradation: 99.73%)
  • fedora-42-xfce_root_rnd4k_q32t1_write 3:write_bandwidth_kb: 2843.00 🔻 ( previous job: 3020.00, degradation: 94.14%)
  • fedora-42-xfce_root_rnd4k_q1t1_read 3:read_bandwidth_kb: 8256.00 🔻 ( previous job: 9042.00, degradation: 91.31%)
  • fedora-42-xfce_private_seq1m_q8t1_read 3:read_bandwidth_kb: 387930.00 🟢 ( previous job: 387500.00, improvement: 100.11%)
  • fedora-42-xfce_private_seq1m_q8t1_write 3:write_bandwidth_kb: 165441.00 🟢 ( previous job: 136640.00, improvement: 121.08%)
  • fedora-42-xfce_private_seq1m_q1t1_read 3:read_bandwidth_kb: 312821.00 🔻 ( previous job: 325139.00, degradation: 96.21%)
  • fedora-42-xfce_private_seq1m_q1t1_write 3:write_bandwidth_kb: 89158.00 🟢 ( previous job: 79539.00, improvement: 112.09%)
  • fedora-42-xfce_private_rnd4k_q32t1_read 3:read_bandwidth_kb: 91074.00 🟢 ( previous job: 87396.00, improvement: 104.21%)
  • fedora-42-xfce_private_rnd4k_q32t1_write 3:write_bandwidth_kb: 4629.00 🟢 ( previous job: 3765.00, improvement: 122.95%)
  • fedora-42-xfce_volatile_seq1m_q8t1_read 3:read_bandwidth_kb: 348017.00 🔻 ( previous job: 383531.00, degradation: 90.74%)
  • fedora-42-xfce_volatile_seq1m_q8t1_write 3:write_bandwidth_kb: 175624.00 🟢 ( previous job: 157382.00, improvement: 111.59%)
  • fedora-42-xfce_volatile_seq1m_q1t1_read 3:read_bandwidth_kb: 342336.00 🟢 ( previous job: 293225.00, improvement: 116.75%)
  • fedora-42-xfce_volatile_rnd4k_q32t1_read 3:read_bandwidth_kb: 79254.00 🔻 ( previous job: 87141.00, degradation: 90.95%)
  • fedora-42-xfce_volatile_rnd4k_q32t1_write 3:write_bandwidth_kb: 5403.00 🟢 ( previous job: 4098.00, improvement: 131.84%)
  • fedora-42-xfce_volatile_rnd4k_q1t1_read 3:read_bandwidth_kb: 8227.00 🔻 ( previous job: 8804.00, degradation: 93.45%)
  • debian-13-xfce_dispvm (mean:6.6): 79.20
  • debian-13-xfce_dispvm-gui (mean:7.243): 86.92 🟢 ( previous job: 119.40, improvement: 72.79%)
  • debian-13-xfce_dispvm-concurrent (mean:3.391): 40.69
  • debian-13-xfce_dispvm-gui-concurrent (mean:3.864): 46.37 🟢 ( previous job: 64.59, improvement: 71.78%)
  • debian-13-xfce_dispvm-dom0 (mean:6.904): 82.85
  • debian-13-xfce_dispvm-dom0-gui (mean:8.308): 99.70 🟢 ( previous job: 127.44, improvement: 78.23%)
  • debian-13-xfce_dispvm-dom0-concurrent (mean:3.472): 41.66
  • debian-13-xfce_dispvm-dom0-gui-concurrent (mean:4.029): 48.35 🟢 ( previous job: 65.60, improvement: 73.71%)
  • debian-13-xfce_dispvm-preload (mean:3.716): 44.59
  • debian-13-xfce_dispvm-preload-gui (mean:4.27): 51.24
  • debian-13-xfce_dispvm-preload-concurrent (mean:2.623): 31.48
  • debian-13-xfce_dispvm-preload-gui-concurrent (mean:3.689): 44.27
  • debian-13-xfce_dispvm-preload-dom0 (mean:3.855): 46.26
  • debian-13-xfce_dispvm-preload-dom0-gui (mean:5.372): 64.46
  • debian-13-xfce_dispvm-preload-dom0-concurrent (mean:3.333): 40.00
  • debian-13-xfce_dispvm-preload-dom0-gui-concurrent (mean:3.984): 47.81
  • debian-13-xfce_dispvm-api (mean:7.044): 84.52
  • debian-13-xfce_dispvm-gui-api (mean:8.041): 96.50 🟢 ( previous job: 127.48, improvement: 75.69%)
  • debian-13-xfce_dispvm-concurrent-api (mean:3.51): 42.12
  • debian-13-xfce_dispvm-gui-concurrent-api (mean:4.139): 49.67 🟢 ( previous job: 65.39, improvement: 75.96%)
  • debian-13-xfce_dispvm-preload-api (mean:3.974): 47.69
  • debian-13-xfce_dispvm-preload-less-api (mean:6.502): 78.03
  • debian-13-xfce_dispvm-preload-more-api (mean:4.048): 48.58
  • debian-13-xfce_dispvm-preload-gui-api (mean:5.199): 62.38
  • debian-13-xfce_dispvm-preload-concurrent-api (mean:3.231): 38.77
  • debian-13-xfce_dispvm-preload-gui-concurrent-api (mean:3.941): 47.29
  • debian-13-xfce_vm (mean:0.043): 0.52
  • debian-13-xfce_vm-gui (mean:0.06): 0.73 🟢 ( previous job: 7.40, improvement: 9.81%)
  • debian-13-xfce_vm-concurrent (mean:0.024): 0.29
  • debian-13-xfce_vm-gui-concurrent (mean:0.027): 0.33 🟢 ( previous job: 7.33, improvement: 4.43%)
  • debian-13-xfce_vm-api (mean:0.04): 0.48
  • debian-13-xfce_vm-gui-api (mean:0.044): 0.53 🟢 ( previous job: 2.17, improvement: 24.18%)
  • debian-13-xfce_vm-concurrent-api (mean:0.032): 0.38
  • debian-13-xfce_vm-gui-concurrent-api (mean:0.034): 0.41 🟢 ( previous job: 1.82, improvement: 22.64%)
  • fedora-42-xfce_dispvm (mean:7.122): 85.46 🟢 ( previous job: 111.99, improvement: 76.31%)
  • fedora-42-xfce_dispvm-gui (mean:8.362): 100.35 🟢 ( previous job: 131.63, improvement: 76.24%)
  • fedora-42-xfce_dispvm-concurrent (mean:3.707): 44.48 🟢 ( previous job: 57.25, improvement: 77.69%)
  • fedora-42-xfce_dispvm-gui-concurrent (mean:4.479): 53.75 🟢 ( previous job: 74.72, improvement: 71.93%)
  • fedora-42-xfce_dispvm-dom0 (mean:7.701): 92.41 🟢 ( previous job: 124.92, improvement: 73.97%)
  • fedora-42-xfce_dispvm-dom0-gui (mean:8.993): 107.92 🟢 ( previous job: 147.17, improvement: 73.33%)
  • fedora-42-xfce_dispvm-dom0-concurrent (mean:3.893): 46.71 🟢 ( previous job: 64.09, improvement: 72.88%)
  • fedora-42-xfce_dispvm-dom0-gui-concurrent (mean:4.588): 55.05 🟢 ( previous job: 75.59, improvement: 72.83%)
  • fedora-42-xfce_dispvm-preload (mean:4.114): 49.37 🟢 ( previous job: 69.72, improvement: 70.81%)
  • fedora-42-xfce_dispvm-preload-gui (mean:4.866): 58.40 🟢 ( previous job: 79.21, improvement: 73.73%)
  • fedora-42-xfce_dispvm-preload-concurrent (mean:3.028): 36.34 🟢 ( previous job: 49.89, improvement: 72.83%)
  • fedora-42-xfce_dispvm-preload-gui-concurrent (mean:3.793): 45.52 🟢 ( previous job: 69.08, improvement: 65.90%)
  • fedora-42-xfce_dispvm-preload-dom0 (mean:4.362): 52.34 🟢 ( previous job: 72.35, improvement: 72.35%)
  • fedora-42-xfce_dispvm-preload-dom0-gui (mean:5.483): 65.80 🟢 ( previous job: 91.39, improvement: 72.00%)
  • fedora-42-xfce_dispvm-preload-dom0-concurrent (mean:3.57): 42.83 🟢 ( previous job: 57.13, improvement: 74.98%)
  • fedora-42-xfce_dispvm-preload-dom0-gui-concurrent (mean:4.262): 51.15 🟢 ( previous job: 67.89, improvement: 75.34%)
  • fedora-42-xfce_dispvm-api (mean:7.847): 94.17 🟢 ( previous job: 128.15, improvement: 73.48%)
  • fedora-42-xfce_dispvm-gui-api (mean:9.175): 110.10 🟢 ( previous job: 149.03, improvement: 73.87%)
  • fedora-42-xfce_dispvm-concurrent-api (mean:3.86): 46.32 🟢 ( previous job: 66.32, improvement: 69.84%)
  • fedora-42-xfce_dispvm-gui-concurrent-api (mean:4.771): 57.26 🟢 ( previous job: 77.33, improvement: 74.04%)
  • fedora-42-xfce_dispvm-preload-api (mean:4.371): 52.45 🟢 ( previous job: 73.95, improvement: 70.93%)
  • fedora-42-xfce_dispvm-preload-less-api (mean:7.139): 85.67 🟢 ( previous job: 116.39, improvement: 73.60%)
  • fedora-42-xfce_dispvm-preload-more-api (mean:4.423): 53.08 🟢 ( previous job: 71.33, improvement: 74.41%)
  • fedora-42-xfce_dispvm-preload-gui-api (mean:5.452): 65.42 🟢 ( previous job: 92.06, improvement: 71.06%)
  • fedora-42-xfce_dispvm-preload-concurrent-api (mean:3.615): 43.38 🟢 ( previous job: 61.60, improvement: 70.42%)
  • fedora-42-xfce_dispvm-preload-gui-concurrent-api (mean:4.284): 51.41 🟢 ( previous job: 77.66, improvement: 66.20%)
  • fedora-42-xfce_vm (mean:0.032): 0.38 🟢 ( previous job: 9.19, improvement: 4.18%)
  • fedora-42-xfce_vm-gui (mean:0.029): 0.35 🟢 ( previous job: 9.01, improvement: 3.93%)
  • fedora-42-xfce_vm-concurrent (mean:0.017): 0.21 🟢 ( previous job: 8.88, improvement: 2.36%)
  • fedora-42-xfce_vm-gui-concurrent (mean:0.023): 0.28 🟢 ( previous job: 9.15, improvement: 3.04%)
  • fedora-42-xfce_vm-api (mean:0.033): 0.40 🟢 ( previous job: 2.24, improvement: 17.65%)
  • fedora-42-xfce_vm-gui-api (mean:0.042): 0.50 🟢 ( previous job: 2.33, improvement: 21.43%)
  • fedora-42-xfce_vm-concurrent-api (mean:0.028): 0.34 🟢 ( previous job: 1.62, improvement: 20.96%)
  • fedora-42-xfce_vm-gui-concurrent-api (mean:0.029): 0.35 🟢 ( previous job: 2.20, improvement: 15.80%)
  • whonix-workstation-17_dispvm (mean:7.506): 90.07 🟢 ( previous job: 123.87, improvement: 72.71%)
  • whonix-workstation-17_dispvm-gui (mean:8.456): 101.47 🟢 ( previous job: 148.68, improvement: 68.25%)
  • whonix-workstation-17_dispvm-concurrent (mean:4.081): 48.97 🟢 ( previous job: 77.00, improvement: 63.60%)
  • whonix-workstation-17_dispvm-gui-concurrent (mean:5.023): 60.27 🟢 ( previous job: 89.18, improvement: 67.58%)
  • whonix-workstation-17_dispvm-dom0 (mean:8.473): 101.67 🟢 ( previous job: 135.24, improvement: 75.18%)
  • whonix-workstation-17_dispvm-dom0-gui (mean:9.551): 114.61 🟢 ( previous job: 159.23, improvement: 71.98%)
  • whonix-workstation-17_dispvm-dom0-concurrent (mean:4.61): 55.33 🟢 ( previous job: 76.91, improvement: 71.94%)
  • whonix-workstation-17_dispvm-dom0-gui-concurrent (mean:5.025): 60.30 🟢 ( previous job: 87.45, improvement: 68.95%)
  • whonix-workstation-17_dispvm-preload (mean:7.775): 93.30 🟢 ( previous job: 124.31, improvement: 75.05%)
  • whonix-workstation-17_dispvm-preload-gui (mean:8.444): 101.33 🟢 ( previous job: 138.71, improvement: 73.05%)
  • whonix-workstation-17_dispvm-preload-concurrent (mean:4.059): 48.71 🟢 ( previous job: 66.00, improvement: 73.80%)
  • whonix-workstation-17_dispvm-preload-gui-concurrent (mean:4.585): 55.02 🟢 ( previous job: 77.46, improvement: 71.04%)
  • whonix-workstation-17_dispvm-preload-dom0 (mean:4.747): 56.96 🟢 ( previous job: 81.24, improvement: 70.11%)
  • whonix-workstation-17_dispvm-preload-dom0-concurrent (mean:4.051): 48.61 🟢 ( previous job: 72.84, improvement: 66.74%)
  • whonix-workstation-17_dispvm-preload-dom0-gui-concurrent (mean:4.846): 58.15 🟢 ( previous job: 87.14, improvement: 66.73%)
  • whonix-workstation-17_dispvm-api (mean:8.65): 103.80 🟢 ( previous job: 140.50, improvement: 73.88%)
  • whonix-workstation-17_dispvm-gui-api (mean:9.495): 113.94 🟢 ( previous job: 157.40, improvement: 72.39%)
  • whonix-workstation-17_dispvm-concurrent-api (mean:4.385): 52.62 🟢 ( previous job: 76.06, improvement: 69.18%)
  • whonix-workstation-17_dispvm-gui-concurrent-api (mean:4.786): 57.43 🟢 ( previous job: 87.18, improvement: 65.88%)
  • whonix-workstation-17_dispvm-preload-api (mean:4.781): 57.38 🟢 ( previous job: 84.09, improvement: 68.23%)
  • whonix-workstation-17_dispvm-preload-less-api (mean:7.574): 90.89 🟢 ( previous job: 126.04, improvement: 72.12%)
  • whonix-workstation-17_dispvm-preload-more-api (mean:5.401): 64.81 🟢 ( previous job: 89.12, improvement: 72.73%)
  • whonix-workstation-17_dispvm-preload-gui-api (mean:6.467): 77.60 🟢 ( previous job: 101.72, improvement: 76.29%)
  • whonix-workstation-17_dispvm-preload-concurrent-api (mean:4.045): 48.54 🟢 ( previous job: 71.58, improvement: 67.82%)
  • whonix-workstation-17_dispvm-preload-gui-concurrent-api (mean:5.064): 60.76 🟢 ( previous job: 88.24, improvement: 68.86%)
  • whonix-workstation-17_vm (mean:0.046): 0.55 🟢 ( previous job: 9.27, improvement: 5.94%)
  • whonix-workstation-17_vm-gui (mean:0.047): 0.57 🟢 ( previous job: 9.82, improvement: 5.76%)
  • whonix-workstation-17_vm-concurrent (mean:0.027): 0.33 🟢 ( previous job: 8.93, improvement: 3.66%)
  • whonix-workstation-17_vm-gui-concurrent (mean:0.031): 0.37 🟢 ( previous job: 9.38, improvement: 3.97%)
  • whonix-workstation-17_vm-api (mean:0.043): 0.52 🟢 ( previous job: 2.56, improvement: 20.20%)
  • whonix-workstation-17_vm-gui-api (mean:0.069): 0.82 🟢 ( previous job: 2.53, improvement: 32.62%)
  • whonix-workstation-17_vm-concurrent-api (mean:0.029): 0.35 🟢 ( previous job: 1.81, improvement: 19.22%)
  • whonix-workstation-17_vm-gui-concurrent-api (mean:0.033): 0.40 🟢 ( previous job: 2.57, improvement: 15.35%)

wrapped_vm = backend.VM(vm)
if wrapped_vm == self.sysusb:
self.sysusb.is_running = False
if _is_usbvm(vm):
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if it wouldn't be faster if we cached the result of this function in the wrapped_vm object. Mostly because iterating over devices can sometimes be very slow. There's a couple of places where you run this, and I think it might work for all of them to turn this into a property on the wrapped_vm object?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if it wouldn't be faster if we cached the result of this function in the wrapped_vm object. Mostly because iterating over devices can sometimes be very slow. There's a couple of places where you run this, and I think it might work for all of them to turn this into a property on the wrapped_vm object?

This helper function is used mainly in 4 places:

  1. At the Qui Widget initialization. It is necessary to check all (non-running) qubes anyways.
  2. When PCI device is assigned to qube (and only if the qube is not already a dorman USBVM). Caching will not help here.
  3. When PCI device is unassigned from a qube. Again, caching will not help here since it is necessary to assure if the qube has still a USB PCI controller attached to it.
  4. At qube shutdown. This is the only place which would benefit from caching. I will look to see how to implement it. Maybe it would be better to do it as a property for wrapped_vm object. Or maybe another active_usbvms set would be better.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is ready. I resolved this by having two sets of active and dormant usbvms.

# assigned. Cheers!
return

def pci_action(self, vm, _event, _device, **_kwargs):
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The device arg is a keyword argument, so it cannot have a different name. But since you are not using it, you can simply omit it (**_kwargs will get it).

The way it's now fails with:

Sep 16 21:00:21 dom0 widget-wrapper[19607]: Failed to handle event: sys-usb-clone, device-assign:pci, {'device': dom0+00_0d.0:0x8086:0x9a13::p0c0330, 'options': "{'no-strict-reset': 'True'}"}
Sep 16 21:00:21 dom0 widget-wrapper[19607]: Traceback (most recent call last):
Sep 16 21:00:21 dom0 widget-wrapper[19607]:   File "/usr/lib/python3.13/site-packages/qubesadmin/events/__init__.py", line 278, in handle
Sep 16 21:00:21 dom0 widget-wrapper[19607]:     handler(subject, event, **kwargs)
Sep 16 21:00:21 dom0 widget-wrapper[19607]:     ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
Sep 16 21:00:21 dom0 widget-wrapper[19607]: TypeError: DevicesTray.pci_action() missing 1 required positional argument: '_device'
Sep 16 21:00:21 dom0 widget-wrapper[19607]: Failed to handle event: sys-usb-clone, device-assign:pci, {'device': dom0+00_0d.2:0x8086:0x9a1b::p0c0340, 'options': "{'no-strict-reset': 'True'}"}
Sep 16 21:00:21 dom0 widget-wrapper[19607]: Traceback (most recent call last):
Sep 16 21:00:21 dom0 widget-wrapper[19607]:   File "/usr/lib/python3.13/site-packages/qubesadmin/events/__init__.py", line 278, in handle
Sep 16 21:00:21 dom0 widget-wrapper[19607]:     handler(subject, event, **kwargs)
Sep 16 21:00:21 dom0 widget-wrapper[19607]:     ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
Sep 16 21:00:21 dom0 widget-wrapper[19607]: TypeError: DevicesTray.pci_action() missing 1 required positional argument: '_device'
Sep 16 21:00:21 dom0 widget-wrapper[19607]: Failed to handle event: sys-usb-clone, device-assign:pci, {'device': dom0+00_0d.3:0x8086:0x9a1d::p0c0340, 'options': "{'no-strict-reset': 'True'}"}
Sep 16 21:00:21 dom0 widget-wrapper[19607]: Traceback (most recent call last):
Sep 16 21:00:21 dom0 widget-wrapper[19607]:   File "/usr/lib/python3.13/site-packages/qubesadmin/events/__init__.py", line 278, in handle
Sep 16 21:00:21 dom0 widget-wrapper[19607]:     handler(subject, event, **kwargs)
Sep 16 21:00:21 dom0 widget-wrapper[19607]:     ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
Sep 16 21:00:21 dom0 widget-wrapper[19607]: TypeError: DevicesTray.pci_action() missing 1 required positional argument: '_device'
Sep 16 21:00:21 dom0 widget-wrapper[19607]: Failed to handle event: sys-usb-clone, device-assign:pci, {'device': dom0+00_14.0:0x8086:0xa0ed::p0c0330, 'options': "{'no-strict-reset': 'True'}"}
Sep 16 21:00:21 dom0 widget-wrapper[19607]: Traceback (most recent call last):
Sep 16 21:00:21 dom0 widget-wrapper[19607]:   File "/usr/lib/python3.13/site-packages/qubesadmin/events/__init__.py", line 278, in handle
Sep 16 21:00:21 dom0 widget-wrapper[19607]:     handler(subject, event, **kwargs)
Sep 16 21:00:21 dom0 widget-wrapper[19607]:     ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
Sep 16 21:00:21 dom0 widget-wrapper[19607]: TypeError: DevicesTray.pci_action() missing 1 required positional argument: '_device'

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

@marmarek
Copy link
Member

black complains (this repo is an exception that has lines of 88 chars - see README)

@marmarek
Copy link
Member

other than black, it's okay now

Also show individual menu items if user has more than one usbvm

resolves: QubesOS/qubes-issues#10131
resolves: QubesOS/qubes-issues#10202
resolves: QubesOS/qubes-issues#10216
@alimirjamali alimirjamali force-pushed the issue-10202-10131-sys-usb branch from fb275e9 to 09bb5ab Compare September 18, 2025 06:16
@alimirjamali
Copy link
Author

black complains (this repo is an exception that has lines of 88 chars - see README)

This is also done. I wonder why the CI check for black is allowed to fail. If it is important, it should not be allowed to fail IMHO.

@marmarek marmarek merged commit 09bb5ab into QubesOS:main Sep 18, 2025
3 of 5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
5 participants