Skip to content

Conversation

@RealityAnomaly
Copy link
Contributor

@RealityAnomaly RealityAnomaly commented Aug 28, 2025

This patch ensures USB devices are reattached on resume, which is necessary for S0ix since we don't detach the USB controller drivers and hence the udev rules aren't retriggered automatically. I've relocated the attachment logic into _auto_attach_devices, which is now shared between the domain-start and domain-resumed handlers.

I've also added a new event, domain-resumed, in core-admin to support this since domain-unpaused isn't sufficient for our needs. That PR can be found here and is a dependency for this change: QubesOS/qubes-core-admin#725

@RealityAnomaly RealityAnomaly force-pushed the fix/usb-resume branch 2 times, most recently from 5e0bc9b to 9890f83 Compare August 29, 2025 00:15
@RealityAnomaly
Copy link
Contributor Author

Ignore my original change, I'd incorrectly written this to use domain-unpaused. I've now added a domain-resumed event which did not previously exist in order to accurately capture the suspend-from-resume event.

@marmarek
Copy link
Member

Shouldn't this take some lock or something to avoid parallel double-attach in the non-S0ix case? IIUC there you'll see re-enumeration of devices too, which will trigger attaching them too - and that might happen concurrently with _auto_attach_devices().

@RealityAnomaly
Copy link
Contributor Author

Shouldn't this take some lock or something to avoid parallel double-attach in the non-S0ix case? IIUC there you'll see re-enumeration of devices too, which will trigger attaching them too - and that might happen concurrently with _auto_attach_devices().

Yeah, you're right. I've added a dict of per-VM async locks that are taken on entry to the _auto_attach_devices() method.

@RealityAnomaly RealityAnomaly force-pushed the fix/usb-resume branch 2 times, most recently from 35981c4 to c643e60 Compare August 29, 2025 00:42
@RealityAnomaly
Copy link
Contributor Author

@marmarek anything blocking this from being merged?

@marmarek
Copy link
Member

marmarek commented Nov 5, 2025

Test need an update: https://openqa.qubes-os.org/tests/158669#step/TC_30_USBProxy_core3/1

@qubesos-bot
Copy link

qubesos-bot commented Nov 5, 2025

OpenQA test summary

Complete test suite and dependencies: https://openqa.qubes-os.org/tests/overview?distri=qubesos&version=4.3&build=2026021104-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=2026020304-devel&flavor=update

  • system_tests_audio

    • TC_20_AudioVM_Pulse_whonix-workstation-18: test_225_audio_rec_unmuted_hvm (failure)
      AssertionError: too short audio, expected 10s, got 7.92344671201814...
  • system_tests_audio@hw1

  • system_tests_qwt_win10_seamless@hw13

  • system_tests_dispvm_perf@hw7

    • TC_00_DispVMPerf_whonix-workstation-18: test_800_dom0_vm_api (failure + timed out)
      AssertionError: Timeout while waiting for VM test-inst-dvm shutdown
  • system_tests_gpu_passthrough@hw13

    • gpu_passthrough: Failed (test died)
      # Test died: command 'qvm-template install debian-12-xfce' failed a...
  • system_tests_qwt_win10@hw13

    • windows_install: Failed (test died)
      # Test died: Install failed with code 1 at qubesos/tests/windows_in...

Failed tests

8 failures
  • system_tests_network_updates

    • TC_00_Dom0Upgrade_whonix-gateway-18: test_000_update_salt (error)
      subprocess.CalledProcessError: Command 'timeout=120; while ! tor-ci...
  • system_tests_audio

    • TC_20_AudioVM_Pulse_whonix-workstation-18: test_225_audio_rec_unmuted_hvm (failure)
      AssertionError: too short audio, expected 10s, got 7.92344671201814...
  • system_tests_audio@hw1

  • 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-complete...
  • system_tests_dispvm_perf@hw7

    • TC_00_DispVMPerf_whonix-workstation-18: test_800_dom0_vm_api (failure + timed out)
      AssertionError: Timeout while waiting for VM test-inst-dvm shutdown
  • system_tests_gpu_passthrough@hw13

    • gpu_passthrough: Failed (test died)
      # Test died: command 'qvm-template install debian-12-xfce' failed a...
  • system_tests_qwt_win10@hw13

    • windows_install: Failed (test died)
      # Test died: Install failed with code 1 at qubesos/tests/windows_in...

Fixed failures

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

33 fixed
  • system_tests_whonix

    • whonixcheck: fail (unknown)
      Whonixcheck for anon-whonix failed...

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

    • whonixcheck: Failed (test died + timed out)
      # Test died: command 'qvm-run -ap whonix-gateway-18 'LC_ALL=C whon...

  • system_tests_network

  • system_tests_gui_interactive

    • collect_logs: wait_serial (wait serial expected)
      # wait_serial expected: qr/m~uU4-\d+-/...

    • collect_logs: Failed (test died + timed out)
      # Test died: command 'curl --form [email protected] --form upn...

  • system_tests_network_ipv6

  • 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_whonix-workstation-18: test_015_preload_race_more (error)
      raise TimeoutError from exc_val... TimeoutError

  • system_tests_audio

  • system_tests_qwt_win10_seamless@hw13

  • system_tests_qwt_win11@hw13

    • windows_clipboard_and_filecopy: unnamed test (unknown)
    • windows_clipboard_and_filecopy: Failed (test died)
      # Test died: no candidate needle with tag(s) 'personal-text-editor'...
  • system_tests_guivm_vnc_gui_interactive

    • guivm_manager: unnamed test (unknown)

    • guivm_manager: Failed (test died)
      # Test died: no candidate needle with tag(s) 'menu-qubes-tools' mat...

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

  • system_tests_pvgrub_salt_storage

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

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

    • TC_41_HVMGrub_fedora-42-xfce: test_000_standalone_vm (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...

    • TC_41_HVMGrub_fedora-42-xfce: test_010_template_based_vm (error)
      qubes.exc.QubesVMError: Cannot connect to qrexec agent for 120 seco...

  • system_tests_qwt_win10@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-setup-no...

Unstable tests

Details

Performance Tests

Performance degradation:

12 performance degradations
  • fedora-42-xfce_exec-data-duplex-root: 104.75 🔻 ( previous job: 93.21, degradation: 112.38%)
  • dom0_root_seq1m_q8t1_read 3:read_bandwidth_kb: 257445.00 🔻 ( previous job: 415606.00, degradation: 61.94%)
  • dom0_root_seq1m_q1t1_read 3:read_bandwidth_kb: 79257.00 🔻 ( previous job: 93351.00, degradation: 84.90%)
  • dom0_root_rnd4k_q32t1_read 3:read_bandwidth_kb: 10876.00 🔻 ( previous job: 18745.00, degradation: 58.02%)
  • dom0_root_rnd4k_q1t1_write 3:write_bandwidth_kb: 612.00 🔻 ( previous job: 2205.00, degradation: 27.76%)
  • dom0_varlibqubes_rnd4k_q32t1_write 3:write_bandwidth_kb: 7434.00 🔻 ( previous job: 10453.00, degradation: 71.12%)
  • dom0_varlibqubes_rnd4k_q1t1_read 3:read_bandwidth_kb: 7725.00 🔻 ( previous job: 8763.00, degradation: 88.15%)
  • fedora-42-xfce_root_seq1m_q8t1_write 3:write_bandwidth_kb: 98389.00 🔻 ( previous job: 118833.00, degradation: 82.80%)
  • fedora-42-xfce_root_seq1m_q1t1_read 3:read_bandwidth_kb: 313101.00 🔻 ( previous job: 349641.00, degradation: 89.55%)
  • fedora-42-xfce_root_rnd4k_q1t1_write 3:write_bandwidth_kb: 796.00 🔻 ( previous job: 905.00, degradation: 87.96%)
  • fedora-42-xfce_private_seq1m_q8t1_write 3:write_bandwidth_kb: 105770.00 🔻 ( previous job: 136438.00, degradation: 77.52%)
  • debian-13-xfce_dom0-vm-api (mean:0.045): 0.54 🔻 ( previous job: 0.41, degradation: 130.75%)

Remaining performance tests:

98 tests
  • debian-13-xfce_exec: 5.46 🟢 ( previous job: 6.30, improvement: 86.70%)
  • debian-13-xfce_exec-root: 27.65 🔻 ( previous job: 27.04, degradation: 102.24%)
  • debian-13-xfce_socket: 8.32 🟢 ( previous job: 8.42, improvement: 98.73%)
  • debian-13-xfce_socket-root: 8.49 🔻 ( previous job: 8.42, degradation: 100.81%)
  • debian-13-xfce_exec-data-simplex: 68.16 🔻 ( previous job: 67.13, degradation: 101.53%)
  • debian-13-xfce_exec-data-duplex: 68.09 🟢 ( previous job: 70.17, improvement: 97.04%)
  • debian-13-xfce_exec-data-duplex-root: 82.86 🔻 ( previous job: 80.31, degradation: 103.18%)
  • debian-13-xfce_socket-data-duplex: 134.87 🔻 ( previous job: 134.11, degradation: 100.57%)
  • fedora-42-xfce_exec: 9.06 🟢 ( previous job: 9.13, improvement: 99.23%)
  • fedora-42-xfce_exec-root: 58.83 🟢 ( previous job: 60.02, improvement: 98.01%)
  • fedora-42-xfce_socket: 8.23 🔻 ( previous job: 8.19, degradation: 100.48%)
  • fedora-42-xfce_socket-root: 8.53 🟢 ( previous job: 8.70, improvement: 98.06%)
  • fedora-42-xfce_exec-data-simplex: 65.77 🟢 ( previous job: 68.14, improvement: 96.52%)
  • fedora-42-xfce_exec-data-duplex: 69.93 🔻 ( previous job: 68.13, degradation: 102.65%)
  • fedora-42-xfce_socket-data-duplex: 133.64 🟢 ( previous job: 138.56, improvement: 96.45%)
  • whonix-gateway-18_exec: 7.63 🔻 ( previous job: 7.35, degradation: 103.82%)
  • whonix-gateway-18_exec-root: 129.16 🟢 ( previous job: 131.64, improvement: 98.12%)
  • whonix-gateway-18_socket: 7.82 🔻 ( previous job: 7.40, degradation: 105.78%)
  • whonix-gateway-18_socket-root: 7.50 🟢 ( previous job: 7.65, improvement: 98.05%)
  • whonix-gateway-18_exec-data-simplex: 58.48 🟢 ( previous job: 72.83, improvement: 80.30%)
  • whonix-gateway-18_exec-data-duplex: 70.02 🟢 ( previous job: 75.39, improvement: 92.87%)
  • whonix-gateway-18_exec-data-duplex-root: 137.97 🟢 ( previous job: 152.93, improvement: 90.21%)
  • whonix-gateway-18_socket-data-duplex: 141.27 🟢 ( previous job: 146.64, improvement: 96.34%)
  • whonix-workstation-18_exec: 7.44 🟢 ( previous job: 8.13, improvement: 91.56%)
  • whonix-workstation-18_exec-root: 132.90 🟢 ( previous job: 139.53, improvement: 95.25%)
  • whonix-workstation-18_socket: 8.09 🟢 ( previous job: 8.51, improvement: 95.02%)
  • whonix-workstation-18_socket-root: 8.01 🔻 ( previous job: 8.00, degradation: 100.12%)
  • whonix-workstation-18_exec-data-simplex: 71.30 🔻 ( previous job: 67.80, degradation: 105.16%)
  • whonix-workstation-18_exec-data-duplex: 72.83 🟢 ( previous job: 73.26, improvement: 99.41%)
  • whonix-workstation-18_exec-data-duplex-root: 146.66 🟢 ( previous job: 146.76, improvement: 99.93%)
  • whonix-workstation-18_socket-data-duplex: 140.26 🔻 ( previous job: 138.51, degradation: 101.26%)
  • dom0_root_seq1m_q8t1_write 3:write_bandwidth_kb: 179627.00 🟢 ( previous job: 71899.00, improvement: 249.83%)
  • dom0_root_seq1m_q1t1_write 3:write_bandwidth_kb: 24011.00 🟢 ( previous job: 22755.00, improvement: 105.52%)
  • dom0_root_rnd4k_q32t1_write 3:write_bandwidth_kb: 1249.00 🟢 ( previous job: 258.00, improvement: 484.11%)
  • dom0_root_rnd4k_q1t1_read 3:read_bandwidth_kb: 12051.00 🟢 ( previous job: 9986.00, improvement: 120.68%)
  • dom0_varlibqubes_seq1m_q8t1_read 3:read_bandwidth_kb: 412176.00 🟢 ( previous job: 81191.00, improvement: 507.66%)
  • dom0_varlibqubes_seq1m_q8t1_write 3:write_bandwidth_kb: 148582.00 🟢 ( previous job: 66870.00, improvement: 222.20%)
  • dom0_varlibqubes_seq1m_q1t1_read 3:read_bandwidth_kb: 443372.00 🟢 ( previous job: 425213.00, improvement: 104.27%)
  • dom0_varlibqubes_seq1m_q1t1_write 3:write_bandwidth_kb: 169545.00 🟢 ( previous job: 167196.00, improvement: 101.40%)
  • dom0_varlibqubes_rnd4k_q32t1_read 3:read_bandwidth_kb: 105465.00 🟢 ( previous job: 104460.00, improvement: 100.96%)
  • dom0_varlibqubes_rnd4k_q1t1_write 3:write_bandwidth_kb: 4438.00 🟢 ( previous job: 3931.00, improvement: 112.90%)
  • fedora-42-xfce_root_seq1m_q8t1_read 3:read_bandwidth_kb: 398849.00 🟢 ( previous job: 282711.00, improvement: 141.08%)
  • fedora-42-xfce_root_seq1m_q1t1_write 3:write_bandwidth_kb: 63335.00 🔻 ( previous job: 69093.00, degradation: 91.67%)
  • fedora-42-xfce_root_rnd4k_q32t1_read 3:read_bandwidth_kb: 78384.00 🔻 ( previous job: 80558.00, degradation: 97.30%)
  • fedora-42-xfce_root_rnd4k_q32t1_write 3:write_bandwidth_kb: 1912.00 🟢 ( previous job: 1680.00, improvement: 113.81%)
  • fedora-42-xfce_root_rnd4k_q1t1_read 3:read_bandwidth_kb: 8851.00 🔻 ( previous job: 9096.00, degradation: 97.31%)
  • fedora-42-xfce_private_seq1m_q8t1_read 3:read_bandwidth_kb: 344133.00 🟢 ( previous job: 273565.00, improvement: 125.80%)
  • fedora-42-xfce_private_seq1m_q1t1_read 3:read_bandwidth_kb: 339015.00 🔻 ( previous job: 357875.00, degradation: 94.73%)
  • fedora-42-xfce_private_seq1m_q1t1_write 3:write_bandwidth_kb: 59454.00 🟢 ( previous job: 51291.00, improvement: 115.92%)
  • fedora-42-xfce_private_rnd4k_q32t1_read 3:read_bandwidth_kb: 90782.00 🟢 ( previous job: 23101.00, improvement: 392.98%)
  • fedora-42-xfce_private_rnd4k_q32t1_write 3:write_bandwidth_kb: 3529.00 🟢 ( previous job: 2605.00, improvement: 135.47%)
  • fedora-42-xfce_private_rnd4k_q1t1_read 3:read_bandwidth_kb: 8907.00 🟢 ( previous job: 8753.00, improvement: 101.76%)
  • fedora-42-xfce_private_rnd4k_q1t1_write 3:write_bandwidth_kb: 1058.00 🟢 ( previous job: 719.00, improvement: 147.15%)
  • fedora-42-xfce_volatile_seq1m_q8t1_read 3:read_bandwidth_kb: 379643.00 🟢 ( previous job: 338906.00, improvement: 112.02%)
  • fedora-42-xfce_volatile_seq1m_q8t1_write 3:write_bandwidth_kb: 203453.00 🟢 ( previous job: 114705.00, improvement: 177.37%)
  • fedora-42-xfce_volatile_seq1m_q1t1_read 3:read_bandwidth_kb: 285949.00 🔻 ( previous job: 315931.00, degradation: 90.51%)
  • fedora-42-xfce_volatile_seq1m_q1t1_write 3:write_bandwidth_kb: 71361.00 🟢 ( previous job: 60295.00, improvement: 118.35%)
  • fedora-42-xfce_volatile_rnd4k_q32t1_read 3:read_bandwidth_kb: 83848.00 🔻 ( previous job: 89810.00, degradation: 93.36%)
  • fedora-42-xfce_volatile_rnd4k_q32t1_write 3:write_bandwidth_kb: 2885.00 🟢 ( previous job: 2192.00, improvement: 131.61%)
  • fedora-42-xfce_volatile_rnd4k_q1t1_read 3:read_bandwidth_kb: 7805.00 🔻 ( previous job: 8251.00, degradation: 94.59%)
  • fedora-42-xfce_volatile_rnd4k_q1t1_write 3:write_bandwidth_kb: 1619.00 🟢 ( previous job: 1339.00, improvement: 120.91%)
  • debian-13-xfce_dom0-dispvm-api (mean:6.177): 74.12 🟢 ( previous job: 79.83, improvement: 92.85%)
  • debian-13-xfce_dom0-dispvm-gui-api (mean:7.607): 91.29 🟢 ( previous job: 92.49, improvement: 98.70%)
  • debian-13-xfce_dom0-dispvm-preload-2-api (mean:3.15): 37.81 🟢 ( previous job: 44.94, improvement: 84.12%)
  • debian-13-xfce_dom0-dispvm-preload-2-delay-0-api (mean:2.882): 34.58 🟢 ( previous job: 41.46, improvement: 83.40%)
  • debian-13-xfce_dom0-dispvm-preload-2-delay-minus-1d2-api (mean:3.316): 39.79 🟢 ( previous job: 47.01, improvement: 84.64%)
  • debian-13-xfce_dom0-dispvm-preload-4-api (mean:2.402): 28.82 🟢 ( previous job: 37.67, improvement: 76.51%)
  • debian-13-xfce_dom0-dispvm-preload-4-delay-0-api (mean:2.526): 30.31 🟢 ( previous job: 36.76, improvement: 82.45%)
  • debian-13-xfce_dom0-dispvm-preload-4-delay-minus-1d2-api (mean:2.529): 30.35 🟢 ( previous job: 37.87, improvement: 80.15%)
  • debian-13-xfce_dom0-dispvm-preload-2-gui-api (mean:4.428): 53.14 🟢 ( previous job: 55.58, improvement: 95.60%)
  • debian-13-xfce_dom0-dispvm-preload-4-gui-api (mean:3.729): 44.74 🟢 ( previous job: 47.73, improvement: 93.76%)
  • debian-13-xfce_dom0-dispvm-preload-6-gui-api (mean:3.554): 42.65 🟢 ( previous job: 47.11, improvement: 90.53%)
  • debian-13-xfce_dom0-vm-gui-api (mean:0.038): 0.45 🟢 ( previous job: 0.48, improvement: 93.76%)
  • fedora-42-xfce_dom0-dispvm-api (mean:6.562): 78.75 🟢 ( previous job: 84.64, improvement: 93.03%)
  • fedora-42-xfce_dom0-dispvm-gui-api (mean:8.544): 102.53 🔻 ( previous job: 99.96, degradation: 102.56%)
  • fedora-42-xfce_dom0-dispvm-preload-2-api (mean:3.359): 40.30 🟢 ( previous job: 47.97, improvement: 84.02%)
  • fedora-42-xfce_dom0-dispvm-preload-2-delay-0-api (mean:3.189): 38.26 🟢 ( previous job: 48.54, improvement: 78.83%)
  • fedora-42-xfce_dom0-dispvm-preload-2-delay-minus-1d2-api (mean:3.563): 42.76 🟢 ( previous job: 50.22, improvement: 85.14%)
  • fedora-42-xfce_dom0-dispvm-preload-4-api (mean:2.608): 31.30 🟢 ( previous job: 39.46, improvement: 79.32%)
  • fedora-42-xfce_dom0-dispvm-preload-4-delay-0-api (mean:2.81): 33.72 🟢 ( previous job: 40.12, improvement: 84.06%)
  • fedora-42-xfce_dom0-dispvm-preload-4-delay-minus-1d2-api (mean:2.772): 33.26 🟢 ( previous job: 42.41, improvement: 78.42%)
  • fedora-42-xfce_dom0-dispvm-preload-2-gui-api (mean:4.85): 58.20 🟢 ( previous job: 62.27, improvement: 93.46%)
  • fedora-42-xfce_dom0-dispvm-preload-4-gui-api (mean:4.146): 49.75 🟢 ( previous job: 54.33, improvement: 91.57%)
  • fedora-42-xfce_dom0-dispvm-preload-6-gui-api (mean:3.384): 40.61 🟢 ( previous job: 54.25, improvement: 74.86%)
  • fedora-42-xfce_dom0-vm-api (mean:0.041): 0.49 🟢 ( previous job: 0.50, improvement: 96.83%)
  • fedora-42-xfce_dom0-vm-gui-api (mean:0.039): 0.47 🟢 ( previous job: 0.49, improvement: 94.72%)
  • whonix-workstation-18_dom0-dispvm-api (mean:7.975): 95.69 🟢 ( previous job: 110.52, improvement: 86.59%)
  • whonix-workstation-18_dom0-dispvm-gui-api (mean:10.429): 125.15 🔻 ( previous job: 121.96, degradation: 102.62%)
  • whonix-workstation-18_dom0-dispvm-preload-2-api (mean:4.756): 57.07 🟢 ( previous job: 64.20, improvement: 88.90%)
  • whonix-workstation-18_dom0-dispvm-preload-2-delay-0-api (mean:4.037): 48.45 🟢 ( previous job: 61.89, improvement: 78.28%)
  • whonix-workstation-18_dom0-dispvm-preload-2-delay-minus-1d2-api (mean:5.072): 60.87 🟢 ( previous job: 69.42, improvement: 87.68%)
  • whonix-workstation-18_dom0-dispvm-preload-4-api (mean:3.537): 42.44 🟢 ( previous job: 56.66, improvement: 74.90%)
  • whonix-workstation-18_dom0-dispvm-preload-4-delay-0-api (mean:4.008): 48.09 🟢 ( previous job: 60.57, improvement: 79.40%)
  • whonix-workstation-18_dom0-dispvm-preload-4-delay-minus-1d2-api (mean:3.676): 44.12 🟢 ( previous job: 59.37, improvement: 74.30%)
  • whonix-workstation-18_dom0-dispvm-preload-2-gui-api (mean:6.353): 76.23 🟢 ( previous job: 77.58, improvement: 98.25%)
  • whonix-workstation-18_dom0-dispvm-preload-4-gui-api (mean:5.161): 61.93 🟢 ( previous job: 69.81, improvement: 88.71%)
  • whonix-workstation-18_dom0-dispvm-preload-6-gui-api (mean:4.583): 54.99 🟢 ( previous job: 68.61, improvement: 80.15%)
  • whonix-workstation-18_dom0-vm-gui-api (mean:0.053): 0.64 🟢 ( previous job: 0.65, improvement: 98.30%)

This was referenced Nov 5, 2025
This patch ensures USB devices are reattached on resume, which is
necessary for S0ix since we don't detach the USB controller drivers and
hence the udev rules aren't retriggered automatically.
@RealityAnomaly
Copy link
Contributor Author

Hey, apologies for the delay on this @marmarek. I've added the missing uuid property to the TestVM instance, hopefully it should pass OK now.

@marmarek marmarek merged commit 60d62ac into QubesOS:main Feb 11, 2026
2 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants