This looks like a command line / configuration issue which results in a name collision as Dave predicted above.
I had to piece this together out of bits of information since documentation is a bit sparse but the following works. Note the explicit ID and LUN values on the -device declarations:
sudo qemu-system-aarch64 -enable-kvm -machine virt -cpu host -machine type=virt -nographic -smp 1 -m 2048 -kernel aarch64-linux-3.15rc2-buildroot.img --append "console=ttyAMA0" \
-device virtio-scsi-device,id=scsi0 \
-device virtio-scsi-device,id=scsi1 \
-drive file=scsi_1.img,format=raw,if=none,id=d0 \
-device scsi-hd,bus=scsi0.0,scsi-id=0,lun=0,drive=d0 \
-drive file=scsi_2.img,format=raw,if=none,id=d1 \
-device scsi-hd,bus=scsi1.0,scsi-id=0,lun=1,drive=d1
Added debug shows the following (Note the LUN value of 1 for the second drive):
calculate_compat_instance_id: For [scsi-disk], Init instance_id to [0]
calculate_new_instance_id: For [0:0:0/scsi-disk], Init instance_id to [0]
calculate_compat_instance_id: For [scsi-disk], Init instance_id to [0]
calculate_compat_instance_id: Found match for [scsi-disk], incrementing instance_id is now [1]
calculate_new_instance_id: For [0:0:1/scsi-disk], Init instance_id to [0]
Note: even though it's on a different bus, specifying the same id & lun will cause a collision.
If desired, the above can be simplified to use a single bus:
sudo qemu-system-aarch64 -enable-kvm -machine virt -cpu host -machine type=virt -nographic -smp 1 -m 2048 -kernel aarch64-linux-3.15rc2-buildroot.img --append "console=ttyAMA0" \
-device virtio-scsi-device,id=scsi0 \
-drive file=scsi_1.img,format=raw,if=none,id=d0 \
-device scsi-hd,bus=scsi0.0,scsi-id=0,lun=0,drive=d0 \
-drive file=scsi_2.img,format=raw,if=none,id=d1 \
-device scsi-hd,bus=scsi0.0,scsi-id=0,lun=1,drive=d1
Searching the web, I saw this more commonly done with virtio-scsi-pci instead of virtio-scsi-device (but I can't tell you why):
sudo qemu-system-aarch64 -enable-kvm -machine virt -cpu host -machine type=virt -nographic -smp 1 -m 2048 -kernel aarch64-linux-3.15rc2-buildroot.img --append "console=ttyAMA0" \
-device virtio-scsi-pci,id=scsi0 \
-device virtio-scsi-pci,id=scsi1 \
-drive file=scsi_1.img,format=raw,if=none,id=d0 \
-device scsi-hd,bus=scsi0.0,scsi-id=0,lun=0,drive=d0 \
-drive file=scsi_2.img,format=raw,if=none,id=d1 \
-device scsi-hd,bus=scsi1.0,scsi-id=0,lun=1,drive=d1
Note that the name used internally now includes the bus id:
calculate_compat_instance_id: For [scsi-disk], Init instance_id to [0]
calculate_new_instance_id: For [0000:00:02.0/0:0:0/scsi-disk], Init instance_id to [0]
calculate_compat_instance_id: For [scsi-disk], Init instance_id to [0]
calculate_compat_instance_id: Found match for [scsi-disk], incrementing instance_id is now [1]
calculate_new_instance_id: For [0000:00:03.0/0:0:1/scsi-disk], Init instance_id to [0]
This means that it is now possible to use the same LUN for the drives on the 2 different buses:
sudo qemu-system-aarch64 -enable-kvm -machine virt -cpu host -machine type=virt -nographic -smp 1 -m 2048 -kernel aarch64-linux-3.15rc2-buildroot.img --append "console=ttyAMA0" \
-device virtio-scsi-pci,id=scsi0 \
-device virtio-scsi-pci,id=scsi1 \
-drive file=scsi_1.img,format=raw,if=none,id=d0 \
-device scsi-hd,bus=scsi0.0,scsi-id=0,lun=0,drive=d0 \
-drive file=scsi_2.img,format=raw,if=none,id=d1 \
-device scsi-hd,bus=scsi1.0,scsi-id=0,lun=0,drive=d1
Internally:
calculate_compat_instance_id: For [scsi-disk], Init instance_id to [0]
calculate_new_instance_id: For [0000:00:02.0/0:0:0/scsi-disk], Init instance_id to [0]
calculate_compat_instance_id: For [scsi-disk], Init instance_id to [0]
calculate_compat_instance_id: Found match for [scsi-disk], incrementing instance_id is now [1]
calculate_new_instance_id: For [0000:00:03.0/0:0:0/scsi-disk], Init instance_id to [0]
Here also, a single bus works fine as long as ID + LUN is unique:
sudo qemu-system-aarch64 -enable-kvm -machine virt -cpu host -machine type=virt -nographic -smp 1 -m 2048 -kernel aarch64-linux-3.15rc2-buildroot.img --append "console=ttyAMA0" \
-device virtio-scsi-pci,id=scsi0 \
-drive file=scsi_1.img,format=raw,if=none,id=d0 \
-device scsi-hd,bus=scsi0.0,scsi-id=0,lun=1,drive=d0 \
-drive file=scsi_2.img,format=raw,if=none,id=d1 \
-device scsi-hd,bus=scsi0.0,scsi-id=0,lun=5,drive=d1
Internally:
calculate_new_instance_id: For [0000:00:02.0/virtio-scsi], Init instance_id to [0]
calculate_compat_instance_id: For [scsi-disk], Init instance_id to [0]
calculate_new_instance_id: For [0000:00:02.0/0:0:1/scsi-disk], Init instance_id to [0]
calculate_compat_instance_id: For [scsi-disk], Init instance_id to [0]
calculate_compat_instance_id: Found match for [scsi-disk], incrementing instance_id is now [1]
calculate_new_instance_id: For [0000:00:02.0/0:0:5/scsi-disk], Init instance_id to [0]
This looks like a command line / configuration issue which results in a name collision as Dave predicted above.
I had to piece this together out of bits of information since documentation is a bit sparse but the following works. Note the explicit ID and LUN values on the -device declarations: linux-3. 15rc2-buildroot .img --append "console=ttyAMA0" \ scsi-device, id=scsi0 \ scsi-device, id=scsi1 \ 1.img,format= raw,if= none,id= d0 \ bus=scsi0. 0,scsi- id=0,lun= 0,drive= d0 \ 2.img,format= raw,if= none,id= d1 \ bus=scsi1. 0,scsi- id=0,lun= 1,drive= d1
sudo qemu-system-aarch64 -enable-kvm -machine virt -cpu host -machine type=virt -nographic -smp 1 -m 2048 -kernel aarch64-
-device virtio-
-device virtio-
-drive file=scsi_
-device scsi-hd,
-drive file=scsi_
-device scsi-hd,
Added debug shows the following (Note the LUN value of 1 for the second drive): compat_ instance_ id: For [scsi-disk], Init instance_id to [0] new_instance_ id: For [0:0:0/scsi-disk], Init instance_id to [0] compat_ instance_ id: For [scsi-disk], Init instance_id to [0] compat_ instance_ id: Found match for [scsi-disk], incrementing instance_id is now [1] new_instance_ id: For [0:0:1/scsi-disk], Init instance_id to [0]
calculate_
calculate_
calculate_
calculate_
calculate_
Note: even though it's on a different bus, specifying the same id & lun will cause a collision.
If desired, the above can be simplified to use a single bus: linux-3. 15rc2-buildroot .img --append "console=ttyAMA0" \ scsi-device, id=scsi0 \ 1.img,format= raw,if= none,id= d0 \ bus=scsi0. 0,scsi- id=0,lun= 0,drive= d0 \ 2.img,format= raw,if= none,id= d1 \ bus=scsi0. 0,scsi- id=0,lun= 1,drive= d1
sudo qemu-system-aarch64 -enable-kvm -machine virt -cpu host -machine type=virt -nographic -smp 1 -m 2048 -kernel aarch64-
-device virtio-
-drive file=scsi_
-device scsi-hd,
-drive file=scsi_
-device scsi-hd,
Searching the web, I saw this more commonly done with virtio-scsi-pci instead of virtio-scsi-device (but I can't tell you why): linux-3. 15rc2-buildroot .img --append "console=ttyAMA0" \ scsi-pci, id=scsi0 \ scsi-pci, id=scsi1 \ 1.img,format= raw,if= none,id= d0 \ bus=scsi0. 0,scsi- id=0,lun= 0,drive= d0 \ 2.img,format= raw,if= none,id= d1 \ bus=scsi1. 0,scsi- id=0,lun= 1,drive= d1
sudo qemu-system-aarch64 -enable-kvm -machine virt -cpu host -machine type=virt -nographic -smp 1 -m 2048 -kernel aarch64-
-device virtio-
-device virtio-
-drive file=scsi_
-device scsi-hd,
-drive file=scsi_
-device scsi-hd,
Note that the name used internally now includes the bus id: compat_ instance_ id: For [scsi-disk], Init instance_id to [0] new_instance_ id: For [0000:00: 02.0/0: 0:0/scsi- disk], Init instance_id to [0] compat_ instance_ id: For [scsi-disk], Init instance_id to [0] compat_ instance_ id: Found match for [scsi-disk], incrementing instance_id is now [1] new_instance_ id: For [0000:00: 03.0/0: 0:1/scsi- disk], Init instance_id to [0]
calculate_
calculate_
calculate_
calculate_
calculate_
This means that it is now possible to use the same LUN for the drives on the 2 different buses: linux-3. 15rc2-buildroot .img --append "console=ttyAMA0" \ scsi-pci, id=scsi0 \ scsi-pci, id=scsi1 \ 1.img,format= raw,if= none,id= d0 \ bus=scsi0. 0,scsi- id=0,lun= 0,drive= d0 \ 2.img,format= raw,if= none,id= d1 \ bus=scsi1. 0,scsi- id=0,lun= 0,drive= d1
sudo qemu-system-aarch64 -enable-kvm -machine virt -cpu host -machine type=virt -nographic -smp 1 -m 2048 -kernel aarch64-
-device virtio-
-device virtio-
-drive file=scsi_
-device scsi-hd,
-drive file=scsi_
-device scsi-hd,
Internally: compat_ instance_ id: For [scsi-disk], Init instance_id to [0] new_instance_ id: For [0000:00: 02.0/0: 0:0/scsi- disk], Init instance_id to [0] compat_ instance_ id: For [scsi-disk], Init instance_id to [0] compat_ instance_ id: Found match for [scsi-disk], incrementing instance_id is now [1] new_instance_ id: For [0000:00: 03.0/0: 0:0/scsi- disk], Init instance_id to [0]
calculate_
calculate_
calculate_
calculate_
calculate_
Here also, a single bus works fine as long as ID + LUN is unique: linux-3. 15rc2-buildroot .img --append "console=ttyAMA0" \ scsi-pci, id=scsi0 \ 1.img,format= raw,if= none,id= d0 \ bus=scsi0. 0,scsi- id=0,lun= 1,drive= d0 \ 2.img,format= raw,if= none,id= d1 \ bus=scsi0. 0,scsi- id=0,lun= 5,drive= d1
sudo qemu-system-aarch64 -enable-kvm -machine virt -cpu host -machine type=virt -nographic -smp 1 -m 2048 -kernel aarch64-
-device virtio-
-drive file=scsi_
-device scsi-hd,
-drive file=scsi_
-device scsi-hd,
Internally: new_instance_ id: For [0000:00: 02.0/virtio- scsi], Init instance_id to [0] compat_ instance_ id: For [scsi-disk], Init instance_id to [0] new_instance_ id: For [0000:00: 02.0/0: 0:1/scsi- disk], Init instance_id to [0] compat_ instance_ id: For [scsi-disk], Init instance_id to [0] compat_ instance_ id: Found match for [scsi-disk], incrementing instance_id is now [1] new_instance_ id: For [0000:00: 02.0/0: 0:5/scsi- disk], Init instance_id to [0]
calculate_
calculate_
calculate_
calculate_
calculate_
calculate_