utmapp / utmapp/UTM

SCSI drives on aarch64 use lsi53c895a instead of virtio-scsi-pci, breaking CD-ROM detection

Open
#7,712 0 comments 1 reaction 0 assignees View on GitHub
Dominant language
Swift
Stars
35.5k
Forks
1.8k
Avg merge
5d 5h
Merged PRs (30d)
7

Description

### Describe the issue

When adding a SCSI drive (removable, CD/DVD) to an aarch64 VM via the UTM UI, UTM emits `-device lsi53c895a,id=scsi0` as the SCSI controller. Most ARM Linux kernels (including Rocky Linux, Fedora, Ubuntu cloud images) do not ship the `lsi53c895a` driver for aarch64, so the drive silently fails to appear in the guest.

This breaks cloud-init workflows where a `cidata`-labeled seed ISO needs to present as a CD-ROM device. The ISO is never detected by the guest kernel, so `ds-identify` finds no datasource and disables cloud-init.

### Expected behavior

On aarch64, UTM should emit `-device virtio-scsi-pci,id=scsi0` instead of `-device lsi53c895a,id=scsi0`, consistent with how other VirtIO devices are handled on ARM.

### Workaround

Manually adding QEMU arguments works:

```
-device virtio-scsi-pci,id=scsi1
-drive file=/path/to/seed.iso,if=none,id=cd0,media=cdrom,readonly=on
-device scsi-cd,drive=cd0,bus=scsi1.0
```

### Steps to reproduce

1. Create a new aarch64 VM (Virtualize → Other → skip ISO boot)
2. Import an aarch64 cloud image qcow2 as VirtIO drive
3. Add a new drive: Removable, SCSI interface
4. Mount a cloud-init seed ISO into the removable slot
5. Boot the VM
6. Observe: no `/dev/sr0`, no CD-ROM detected in `dmesg`
7. Run `ps aux | grep qemu` on the host — confirms `-device lsi53c895a,id=scsi0`

### Evidence from QEMU command line

UTM generates:
```
-device lsi53c895a,id=scsi0
-device scsi-cd,bus=scsi0.0,channel=0,scsi-id=0,drive=drive274AE1F0-...,bootindex=0
-drive if=none,media=cdrom,id=drive274AE1F0-...,file.filename=/path/to/seed.iso,file.locking=off,readonly=on
```

Guest kernel dmesg shows only:
```
SCSI subsystem initialized
scsi host0: Virtio SCSI HBA
```

The `lsi53c895a` controller is not detected. No `sr0` device is created.

### Environment

- UTM 4.7.4
- macOS on Apple Silicon (M3 Max)
- Guest: Rocky Linux 9.7 aarch64 (Rocky GenericCloud image, kernel 5.14.0-611.5.1.el9_7.aarch64)
- Same issue expected on any aarch64 guest without lsi53c895a driver

### Related issues

- #7008 — Same root cause (wrong SCSI controller type) was fixed for m68k in v4.7.1 but not generalized to aarch64
- #6201 — cloud-init seed.iso discussion, where users resort to raw QEMU args as workaround

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.