From 1c9d2a1d3c63ab7cee37acdcab92aafad3d6b3fe Mon Sep 17 00:00:00 2001 From: Christian Borntraeger Date: Mon, 4 Feb 2013 22:53:25 +0000 Subject: [PATCH 1/5] s390: simplify kvm cpu init There is no special code right now and the reset ioctl is done later on in the the reset handler anyway. Lets simplify the cpu init. Signed-off-by: Christian Borntraeger Signed-off-by: Alexander Graf --- target-s390x/kvm.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/target-s390x/kvm.c b/target-s390x/kvm.c index 3929771182..8f111ae732 100644 --- a/target-s390x/kvm.c +++ b/target-s390x/kvm.c @@ -103,13 +103,8 @@ unsigned long kvm_arch_vcpu_id(CPUState *cpu) int kvm_arch_init_vcpu(CPUState *cpu) { - int ret = 0; - - if (kvm_vcpu_ioctl(cpu, KVM_S390_INITIAL_RESET, NULL) < 0) { - perror("cannot init reset vcpu"); - } - - return ret; + /* nothing todo yet */ + return 0; } void kvm_arch_reset_vcpu(CPUState *cpu) From dd4ad64ada4316d2f61af0e0489e89fe620244db Mon Sep 17 00:00:00 2001 From: Cornelia Huck Date: Tue, 5 Mar 2013 02:22:01 +0000 Subject: [PATCH 2/5] s390: virtio-ccw maintainer Add myself as maintainer for virtio-ccw and the s390-ccw-virtio machine. Signed-off-by: Cornelia Huck [agraf: add myself for virtio-ccw machine] Signed-off-by: Alexander Graf --- MAINTAINERS | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 2439614ad2..0ca7e1da8c 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -454,6 +454,14 @@ M: Alexander Graf S: Maintained F: hw/s390-*.c +S390 Virtio-ccw +M: Cornelia Huck +M: Alexander Graf +S: Supported +F: hw/s390x/s390-virtio-ccw.c +F: hw/s390x/css.[hc] +T: git git://github.com/cohuck/qemu virtio-ccw-upstr + UniCore32 Machines ------------- PKUnity-3 SoC initramfs-with-busybox @@ -565,6 +573,12 @@ M: Stefan Hajnoczi S: Supported F: hw/virtio-blk* +virtio-ccw +M: Cornelia Huck +S: Supported +F: hw/s390x/virtio-ccw.[hc] +T: git git://github.com/cohuck/qemu virtio-ccw-upstr + virtio-serial M: Amit Shah S: Supported From 35569cea79fd3f5ccb5b23ca024c7d3aa4d24e75 Mon Sep 17 00:00:00 2001 From: Christian Borntraeger Date: Thu, 7 Mar 2013 17:21:41 +0100 Subject: [PATCH 3/5] Allow virtio-net features for legacy s390 virtio bus Enable all virtio-net features for the legacy s390 virtio bus. This also fixes kernel BUG at /usr/src/packages/BUILD/kernel-default-3.0.58/linux-3.0/drivers/s390/kvm/kvm_virtio.c:121! Signed-off-by: Christian Borntraeger Cc: qemu-stable@nongnu.org Signed-off-by: Alexander Graf --- hw/s390x/s390-virtio-bus.c | 1 + 1 file changed, 1 insertion(+) diff --git a/hw/s390x/s390-virtio-bus.c b/hw/s390x/s390-virtio-bus.c index 089ed92006..d9b7f83878 100644 --- a/hw/s390x/s390-virtio-bus.c +++ b/hw/s390x/s390-virtio-bus.c @@ -402,6 +402,7 @@ static const VirtIOBindings virtio_s390_bindings = { static Property s390_virtio_net_properties[] = { DEFINE_NIC_PROPERTIES(VirtIOS390Device, nic), + DEFINE_VIRTIO_NET_FEATURES(VirtIOS390Device, host_features), DEFINE_PROP_UINT32("x-txtimer", VirtIOS390Device, net.txtimer, TX_TIMER_INTERVAL), DEFINE_PROP_INT32("x-txburst", VirtIOS390Device, From 38dd7cc776bbde7edbe60ba5d0abbd156e7e0f2f Mon Sep 17 00:00:00 2001 From: Christian Borntraeger Date: Fri, 22 Feb 2013 09:01:32 +0000 Subject: [PATCH 4/5] s390/css: Fix subchannel detection We have to consider the m bit to find the real channel subsystem when determining the last subchannel. If we fail to take this into account, removal of a subchannel in the middle of a big list of devices will stop device detection after a reboot. Signed-off-by: Christian Borntraeger Signed-off-by: Jens Freimann Reviewed-by: Cornelia Huck Signed-off-by: Alexander Graf --- hw/s390x/css.c | 11 +++++++---- target-s390x/cpu.h | 2 +- target-s390x/ioinst.c | 2 +- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/hw/s390x/css.c b/hw/s390x/css.c index 85f6f22a7f..e526a1c86c 100644 --- a/hw/s390x/css.c +++ b/hw/s390x/css.c @@ -988,15 +988,18 @@ int css_do_rchp(uint8_t cssid, uint8_t chpid) return 0; } -bool css_schid_final(uint8_t cssid, uint8_t ssid, uint16_t schid) +bool css_schid_final(int m, uint8_t cssid, uint8_t ssid, uint16_t schid) { SubchSet *set; + uint8_t real_cssid; - if (cssid > MAX_CSSID || ssid > MAX_SSID || !channel_subsys->css[cssid] || - !channel_subsys->css[cssid]->sch_set[ssid]) { + real_cssid = (!m && (cssid == 0)) ? channel_subsys->default_cssid : cssid; + if (real_cssid > MAX_CSSID || ssid > MAX_SSID || + !channel_subsys->css[real_cssid] || + !channel_subsys->css[real_cssid]->sch_set[ssid]) { return true; } - set = channel_subsys->css[cssid]->sch_set[ssid]; + set = channel_subsys->css[real_cssid]->sch_set[ssid]; return schid > find_last_bit(set->schids_used, (MAX_SCHID + 1) / sizeof(unsigned long)); } diff --git a/target-s390x/cpu.h b/target-s390x/cpu.h index e450db74a2..9cb739da1e 100644 --- a/target-s390x/cpu.h +++ b/target-s390x/cpu.h @@ -404,7 +404,7 @@ SubchDev *css_find_subch(uint8_t m, uint8_t cssid, uint8_t ssid, bool css_subch_visible(SubchDev *sch); void css_conditional_io_interrupt(SubchDev *sch); int css_do_stsch(SubchDev *sch, SCHIB *schib); -bool css_schid_final(uint8_t cssid, uint8_t ssid, uint16_t schid); +bool css_schid_final(int m, uint8_t cssid, uint8_t ssid, uint16_t schid); int css_do_msch(SubchDev *sch, SCHIB *schib); int css_do_xsch(SubchDev *sch); int css_do_csch(SubchDev *sch); diff --git a/target-s390x/ioinst.c b/target-s390x/ioinst.c index e3531f365e..28c508d541 100644 --- a/target-s390x/ioinst.c +++ b/target-s390x/ioinst.c @@ -316,7 +316,7 @@ int ioinst_handle_stsch(CPUS390XState *env, uint64_t reg1, uint32_t ipb) cc = 3; } } else { - if (css_schid_final(cssid, ssid, schid)) { + if (css_schid_final(m, cssid, ssid, schid)) { cc = 3; /* No more subchannels in this css/ss */ } else { /* Store an empty schib. */ From 8a7df84f9ff4342cae30f4e515e6ac82a0eb0bea Mon Sep 17 00:00:00 2001 From: Christian Borntraeger Date: Fri, 22 Feb 2013 09:01:33 +0000 Subject: [PATCH 5/5] s390/virtio-ccw: remove redundant call to blockdev_mark_auto_del blockdev_mark_auto_del is already called in virtio-blk-exit. Remove the redundant call. Signed-off-by: Christian Borntraeger Signed-off-by: Jens Freimann Signed-off-by: Alexander Graf --- hw/s390x/virtio-ccw.c | 1 - 1 file changed, 1 deletion(-) diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c index d92e42735c..a9cf703d53 100644 --- a/hw/s390x/virtio-ccw.c +++ b/hw/s390x/virtio-ccw.c @@ -585,7 +585,6 @@ static int virtio_ccw_blk_init(VirtioCcwDevice *dev) static int virtio_ccw_blk_exit(VirtioCcwDevice *dev) { virtio_blk_exit(dev->vdev); - blockdev_mark_auto_del(dev->blk.conf.bs); return virtio_ccw_exit(dev); }