diff mbox

s390x: Switch to s390-ccw machine as default

Message ID 1434488919-7615-1-git-send-email-agraf@suse.de
State New
Headers show

Commit Message

Alexander Graf June 16, 2015, 9:08 p.m. UTC
We now finally have TCG support for the basic set of instructions necessary
to run the s390-ccw machine. That means in any aspect possible that machine
type is now superior to the legacy s390-virtio machine.

Switch over to the ccw machine as default. That way people don't get a halfway
broken machine with the s390x target.

Signed-off-by: Alexander Graf <agraf@suse.de>
---
 blockdev.c                 | 2 +-
 hw/s390x/s390-virtio-ccw.c | 1 +
 hw/s390x/s390-virtio.c     | 1 -
 qdev-monitor.c             | 6 +++---
 4 files changed, 5 insertions(+), 5 deletions(-)

Comments

Aurelien Jarno June 16, 2015, 9:23 p.m. UTC | #1
On 2015-06-16 23:08, Alexander Graf wrote:
> We now finally have TCG support for the basic set of instructions necessary
> to run the s390-ccw machine. That means in any aspect possible that machine
> type is now superior to the legacy s390-virtio machine.
> 
> Switch over to the ccw machine as default. That way people don't get a halfway
> broken machine with the s390x target.
> 
> Signed-off-by: Alexander Graf <agraf@suse.de>

\o/ Very good idea!

Reviewed-by: Aurelien Jarno <aurelien@aurel32.net>

That said in the future it would be even better if we can automagically
pass bootindex=1 to the first created drive when not declaring the
device and the drive separately. That would allow to run an image with
just:

  qemu-system-s390x -nographic -drive file=image.qcow2

Aurelien
Christian Borntraeger June 16, 2015, 9:27 p.m. UTC | #2
Am 16.06.2015 um 23:08 schrieb Alexander Graf:
> We now finally have TCG support for the basic set of instructions necessary
> to run the s390-ccw machine. That means in any aspect possible that machine
> type is now superior to the legacy s390-virtio machine.
> 
> Switch over to the ccw machine as default. That way people don't get a halfway
> broken machine with the s390x target.
> 
> Signed-off-by: Alexander Graf <agraf@suse.de>

It will certainly make life easier for kvm on s390.

Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>

> ---
>  blockdev.c                 | 2 +-
>  hw/s390x/s390-virtio-ccw.c | 1 +
>  hw/s390x/s390-virtio.c     | 1 -
>  qdev-monitor.c             | 6 +++---
>  4 files changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/blockdev.c b/blockdev.c
> index 3aa1ae6..41d7e0f 100644
> --- a/blockdev.c
> +++ b/blockdev.c
> @@ -942,7 +942,7 @@ DriveInfo *drive_new(QemuOpts *all_opts, BlockInterfaceType block_default_type)
>          devopts = qemu_opts_create(qemu_find_opts("device"), NULL, 0,
>                                     &error_abort);
>          if (arch_type == QEMU_ARCH_S390X) {
> -            qemu_opt_set(devopts, "driver", "virtio-blk-s390", &error_abort);
> +            qemu_opt_set(devopts, "driver", "virtio-blk-ccw", &error_abort);
>          } else {
>              qemu_opt_set(devopts, "driver", "virtio-blk-pci", &error_abort);
>          }
> diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c
> index 8a565f6..c574988 100644
> --- a/hw/s390x/s390-virtio-ccw.c
> +++ b/hw/s390x/s390-virtio-ccw.c
> @@ -216,6 +216,7 @@ static void ccw_machine_class_init(ObjectClass *oc, void *data)
>      mc->no_sdcard = 1;
>      mc->use_sclp = 1;
>      mc->max_cpus = 255;
> +    mc->is_default = 1;
>      nc->nmi_monitor_handler = s390_nmi;
>  }
> 
> diff --git a/hw/s390x/s390-virtio.c b/hw/s390x/s390-virtio.c
> index 59750db..00ea793 100644
> --- a/hw/s390x/s390-virtio.c
> +++ b/hw/s390x/s390-virtio.c
> @@ -345,7 +345,6 @@ static void s390_machine_class_init(ObjectClass *oc, void *data)
>      mc->no_floppy = 1;
>      mc->no_cdrom = 1;
>      mc->no_sdcard = 1;
> -    mc->is_default = 1;
>      nc->nmi_monitor_handler = s390_nmi;
>  }
> 
> diff --git a/qdev-monitor.c b/qdev-monitor.c
> index 7dd62dd..d71d1ee 100644
> --- a/qdev-monitor.c
> +++ b/qdev-monitor.c
> @@ -42,9 +42,9 @@ static const QDevAlias qdev_alias_table[] = {
>      { "virtio-serial-pci", "virtio-serial", QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
>      { "virtio-balloon-pci", "virtio-balloon",
>              QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
> -    { "virtio-blk-s390", "virtio-blk", QEMU_ARCH_S390X },
> -    { "virtio-net-s390", "virtio-net", QEMU_ARCH_S390X },
> -    { "virtio-serial-s390", "virtio-serial", QEMU_ARCH_S390X },
> +    { "virtio-blk-ccw", "virtio-blk", QEMU_ARCH_S390X },
> +    { "virtio-net-ccw", "virtio-net", QEMU_ARCH_S390X },
> +    { "virtio-serial-ccw", "virtio-serial", QEMU_ARCH_S390X },
>      { "lsi53c895a", "lsi" },
>      { "ich9-ahci", "ahci" },
>      { "kvm-pci-assign", "pci-assign" },
>
Aurelien Jarno June 17, 2015, 1:46 p.m. UTC | #3
On 2015-06-16 23:08, Alexander Graf wrote:
> We now finally have TCG support for the basic set of instructions necessary
> to run the s390-ccw machine. That means in any aspect possible that machine
> type is now superior to the legacy s390-virtio machine.
> 
> Switch over to the ccw machine as default. That way people don't get a halfway
> broken machine with the s390x target.

It seems the current s390x-ccw firmware doesn't allow to boot on a
virtio-scsi-ccw disk (but this is not a regression compared to the
s390-virtio machine). virtio-scsi has some advantages over virtio-blk,
like the possibility to do thin-provisioning. Of course one can use a
small virtio-blk for the /boot partition, and virtio-scsi for the
remaining disks.

Do you think it would possible to add it? Given a virtio-scsi device can
provide multiple disks, how can we pass the disk to boot on to the
firmware? Currently it seems we pass the ccw device in GR7, but not more
details.

Aurelien
Christian Borntraeger June 17, 2015, 2 p.m. UTC | #4
Am 17.06.2015 um 15:46 schrieb Aurelien Jarno:
> On 2015-06-16 23:08, Alexander Graf wrote:
>> We now finally have TCG support for the basic set of instructions necessary
>> to run the s390-ccw machine. That means in any aspect possible that machine
>> type is now superior to the legacy s390-virtio machine.
>>
>> Switch over to the ccw machine as default. That way people don't get a halfway
>> broken machine with the s390x target.
> 
> It seems the current s390x-ccw firmware doesn't allow to boot on a
> virtio-scsi-ccw disk (but this is not a regression compared to the
> s390-virtio machine). virtio-scsi has some advantages over virtio-blk,
> like the possibility to do thin-provisioning. Of course one can use a
> small virtio-blk for the /boot partition, and virtio-scsi for the
> remaining disks.
> 
> Do you think it would possible to add it? Given a virtio-scsi device can
> provide multiple disks, how can we pass the disk to boot on to the
> firmware? Currently it seems we pass the ccw device in GR7, but not more
> details.

Yes, we look into that, Integrating this into s390 specifics without adding
hacks that have to last forever will take most of the time. We have to 
consider aspects like loadparm, the existing interfaces for the zfcp
connectivity in the diag308 handler and so on (so that /sys/firmware/ipl/
reflects the disks) - so give us some time to do it properly to see
how this can be integrated.

Christian
Aurelien Jarno June 17, 2015, 2:32 p.m. UTC | #5
On 2015-06-17 16:00, Christian Borntraeger wrote:
> Am 17.06.2015 um 15:46 schrieb Aurelien Jarno:
> > On 2015-06-16 23:08, Alexander Graf wrote:
> >> We now finally have TCG support for the basic set of instructions necessary
> >> to run the s390-ccw machine. That means in any aspect possible that machine
> >> type is now superior to the legacy s390-virtio machine.
> >>
> >> Switch over to the ccw machine as default. That way people don't get a halfway
> >> broken machine with the s390x target.
> > 
> > It seems the current s390x-ccw firmware doesn't allow to boot on a
> > virtio-scsi-ccw disk (but this is not a regression compared to the
> > s390-virtio machine). virtio-scsi has some advantages over virtio-blk,
> > like the possibility to do thin-provisioning. Of course one can use a
> > small virtio-blk for the /boot partition, and virtio-scsi for the
> > remaining disks.
> > 
> > Do you think it would possible to add it? Given a virtio-scsi device can
> > provide multiple disks, how can we pass the disk to boot on to the
> > firmware? Currently it seems we pass the ccw device in GR7, but not more
> > details.
> 
> Yes, we look into that, Integrating this into s390 specifics without adding
> hacks that have to last forever will take most of the time. We have to 
> consider aspects like loadparm, the existing interfaces for the zfcp
> connectivity in the diag308 handler and so on (so that /sys/firmware/ipl/
> reflects the disks) - so give us some time to do it properly to see
> how this can be integrated.

Great, thanks for working on that.
Christian Borntraeger June 18, 2015, 2:57 p.m. UTC | #6
Am 16.06.2015 um 23:23 schrieb Aurelien Jarno:
> On 2015-06-16 23:08, Alexander Graf wrote:
>> We now finally have TCG support for the basic set of instructions necessary
>> to run the s390-ccw machine. That means in any aspect possible that machine
>> type is now superior to the legacy s390-virtio machine.
>>
>> Switch over to the ccw machine as default. That way people don't get a halfway
>> broken machine with the s390x target.
>>
>> Signed-off-by: Alexander Graf <agraf@suse.de>
> 
> \o/ Very good idea!
> 
> Reviewed-by: Aurelien Jarno <aurelien@aurel32.net>
> 
> That said in the future it would be even better if we can automagically
> pass bootindex=1 to the first created drive when not declaring the
> device and the drive separately. That would allow to run an image with
> just:

This is actually a bug that was introduced with 
commit fa92e218df1d ("s390x/ipl: avoid sign extension")
Will prepare a fix.

Christian
diff mbox

Patch

diff --git a/blockdev.c b/blockdev.c
index 3aa1ae6..41d7e0f 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -942,7 +942,7 @@  DriveInfo *drive_new(QemuOpts *all_opts, BlockInterfaceType block_default_type)
         devopts = qemu_opts_create(qemu_find_opts("device"), NULL, 0,
                                    &error_abort);
         if (arch_type == QEMU_ARCH_S390X) {
-            qemu_opt_set(devopts, "driver", "virtio-blk-s390", &error_abort);
+            qemu_opt_set(devopts, "driver", "virtio-blk-ccw", &error_abort);
         } else {
             qemu_opt_set(devopts, "driver", "virtio-blk-pci", &error_abort);
         }
diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c
index 8a565f6..c574988 100644
--- a/hw/s390x/s390-virtio-ccw.c
+++ b/hw/s390x/s390-virtio-ccw.c
@@ -216,6 +216,7 @@  static void ccw_machine_class_init(ObjectClass *oc, void *data)
     mc->no_sdcard = 1;
     mc->use_sclp = 1;
     mc->max_cpus = 255;
+    mc->is_default = 1;
     nc->nmi_monitor_handler = s390_nmi;
 }
 
diff --git a/hw/s390x/s390-virtio.c b/hw/s390x/s390-virtio.c
index 59750db..00ea793 100644
--- a/hw/s390x/s390-virtio.c
+++ b/hw/s390x/s390-virtio.c
@@ -345,7 +345,6 @@  static void s390_machine_class_init(ObjectClass *oc, void *data)
     mc->no_floppy = 1;
     mc->no_cdrom = 1;
     mc->no_sdcard = 1;
-    mc->is_default = 1;
     nc->nmi_monitor_handler = s390_nmi;
 }
 
diff --git a/qdev-monitor.c b/qdev-monitor.c
index 7dd62dd..d71d1ee 100644
--- a/qdev-monitor.c
+++ b/qdev-monitor.c
@@ -42,9 +42,9 @@  static const QDevAlias qdev_alias_table[] = {
     { "virtio-serial-pci", "virtio-serial", QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
     { "virtio-balloon-pci", "virtio-balloon",
             QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
-    { "virtio-blk-s390", "virtio-blk", QEMU_ARCH_S390X },
-    { "virtio-net-s390", "virtio-net", QEMU_ARCH_S390X },
-    { "virtio-serial-s390", "virtio-serial", QEMU_ARCH_S390X },
+    { "virtio-blk-ccw", "virtio-blk", QEMU_ARCH_S390X },
+    { "virtio-net-ccw", "virtio-net", QEMU_ARCH_S390X },
+    { "virtio-serial-ccw", "virtio-serial", QEMU_ARCH_S390X },
     { "lsi53c895a", "lsi" },
     { "ich9-ahci", "ahci" },
     { "kvm-pci-assign", "pci-assign" },