nixosTests.systemd-initrd-luks-fido2: fix test on aarch64-linux

This is the error message on fail:

> qemu-system-aarch64: -device canokey,file=/tmp/canokey-file: Warning:
>   speed mismatch trying to attach usb device "CanoKey QEMU" (full
>   speed) to bus "usb0.0", port "3" (high speed)

My Understanding of the Issue is: The test failed because
qemu-system-aarch64 apparently has different USB controllers enabled by
default, resulting in a "speed mismatch" between the USB controller and
CanoKey that only occurred on aarch64.
I could reproduce the issue on x86_64 by enabling the EHCI controller
and then fix the issue by specifying which USB bus to use for the
CanoKey.
This didn't fully fix the issue on my first attempt, because the UCHI
controller enabled by -usb doesn't have the same bus name on aarch64
and x86_64.
While bus=usb-bus.0 worked on x86_64, on aarch64 i get this message:

> qemu-system-aarch64: -device canokey,bus=usb-bus.0,file=
>   /tmp/canokey-file: Bus 'usb-bus.0' not found

The final solution now manually enables the OHCI controller (which may
be similar to UHCI, but i really have no idea other than it works) and
assigns it the id aka bus name "usb-bus", so it works the same under
both architectures.
This commit is contained in:
Quantenzitrone 2024-03-19 23:01:04 +01:00 committed by Zitrone
parent c7b821ba2e
commit 2521bebbf2
No known key found for this signature in database
GPG Key ID: 54767E8E66ABED22

View File

@ -9,7 +9,7 @@ import ./make-test-python.nix ({ lib, pkgs, ... }: {
# Booting off the encrypted disk requires having a Nix store available for the init script
mountHostNixStore = true;
useEFIBoot = true;
qemu.options = [ "-device canokey,file=/tmp/canokey-file" ];
qemu.options = [ "-device pci-ohci,id=usb-bus" "-device canokey,bus=usb-bus.0,file=/tmp/canokey-file" ];
};
boot.loader.systemd-boot.enable = true;