diff mbox

[v2,for-2.4,3/3] hw/arm/virt: Make block devices default to virtio

Message ID 1435068107-12594-4-git-send-email-peter.maydell@linaro.org
State Superseded
Headers show

Commit Message

Peter Maydell June 23, 2015, 2:01 p.m. UTC
Now we have virtio-pci, we can make the virt board's default block
device type be IF_VIRTIO. This allows users to use simplified
command lines that don't have to explicitly create virtio-pci-blk
devices; the -hda &c very short options now also work.

This means we also need to set no_cdrom to avoid getting a
default cdrom device -- this is needed because the virtio-blk
device will fail if it is connected to a block backend with
no media, which is what the default cdrom device typically is.
Providing a cdrom with media via -cdrom will still work.

Note that this change means that some command lines which used
to work (by accident) will stop working. Where a drive was connected
manually to a device but without 'if=none' being specified, we
used to treat this as an IDE drive, which we would then not autoplug
because the board doesn't support IDE. Now we will treat it as a
virtio disk and autoplug it, which means the attempt to use the
drive manually will fail:
  qemu-system-arm: -drive file=img.qcow2,id=foo: Drive 'foo' is already
  in use because it has been automatically connected to another device
  (did you need 'if=none' in the drive options?)
The command line will be changed to include 'if=none', as the
error message suggests.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
 hw/arm/virt.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Peter Maydell June 25, 2015, 9:04 a.m. UTC | #1
On 25 June 2015 at 08:40, Markus Armbruster <armbru@redhat.com> wrote:
> Peter Maydell <peter.maydell@linaro.org> writes:
>
>> Now we have virtio-pci, we can make the virt board's default block
>> device type be IF_VIRTIO. This allows users to use simplified
>> command lines that don't have to explicitly create virtio-pci-blk
>> devices; the -hda &c very short options now also work.
>>
>> This means we also need to set no_cdrom to avoid getting a
>> default cdrom device -- this is needed because the virtio-blk
>> device will fail if it is connected to a block backend with
>> no media, which is what the default cdrom device typically is.
>> Providing a cdrom with media via -cdrom will still work.
>
> It'll create a virtio-blk device with non-removable medium, won't it?

Yes, I think so. Mostly I cared that -cdrom won't make qemu die with a
confusing error.

(Without no_cdrom, qemu dies even if you don't say -cdrom, because
of the default empty drive.)

>> The command line will be changed to include 'if=none', as the
>
> will have to be changed

Yes.

-- PMM
diff mbox

Patch

diff --git a/hw/arm/virt.c b/hw/arm/virt.c
index f1e85c8..7e643ba 100644
--- a/hw/arm/virt.c
+++ b/hw/arm/virt.c
@@ -966,6 +966,8 @@  static void virt_class_init(ObjectClass *oc, void *data)
     mc->init = machvirt_init;
     mc->max_cpus = 8;
     mc->has_dynamic_sysbus = true;
+    mc->block_default_type = IF_VIRTIO;
+    mc->no_cdrom = 1;
 }
 
 static const TypeInfo machvirt_info = {