* [Qemu-devel] [PATCH 1/4] s390x: fix s390 virtio aliases
2012-06-18 13:36 [Qemu-devel] [PULL 0/4] s390 patch queue 2012-06-18 Alexander Graf
@ 2012-06-18 13:36 ` Alexander Graf
2012-06-18 13:36 ` [Qemu-devel] [PATCH 2/4] kvm: Update kernel headers Alexander Graf
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Alexander Graf @ 2012-06-18 13:36 UTC (permalink / raw)
To: qemu-devel qemu-devel; +Cc: Blue Swirl, Anthony Liguori, Aurelien Jarno
Some of the virtio devices have the same frontend name, but actually
implement different devices behind the scenes through aliases.
The indicator which device type to use is the architecture. On s390, we
want s390 virtio devices. On everything else, we want PCI devices.
Reflect this in the alias selection code. This way we fix commands like
-device virtio-blk on s390x which with this patch applied select the
correct virtio-blk-s390 device rather than virtio-blk-pci.
Reported-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
hw/qdev-monitor.c | 27 ++++++++++++++++++++-------
1 files changed, 20 insertions(+), 7 deletions(-)
diff --git a/hw/qdev-monitor.c b/hw/qdev-monitor.c
index b01ef06..f83b3ad 100644
--- a/hw/qdev-monitor.c
+++ b/hw/qdev-monitor.c
@@ -20,6 +20,7 @@
#include "qdev.h"
#include "monitor.h"
#include "qmp-commands.h"
+#include "arch_init.h"
/*
* Aliases were a bad idea from the start. Let's keep them
@@ -29,16 +30,18 @@ typedef struct QDevAlias
{
const char *typename;
const char *alias;
+ uint32_t arch_mask;
} QDevAlias;
static const QDevAlias qdev_alias_table[] = {
- { "virtio-blk-pci", "virtio-blk" },
- { "virtio-net-pci", "virtio-net" },
- { "virtio-serial-pci", "virtio-serial" },
- { "virtio-balloon-pci", "virtio-balloon" },
- { "virtio-blk-s390", "virtio-blk" },
- { "virtio-net-s390", "virtio-net" },
- { "virtio-serial-s390", "virtio-serial" },
+ { "virtio-blk-pci", "virtio-blk", QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
+ { "virtio-net-pci", "virtio-net", QEMU_ARCH_ALL & ~QEMU_ARCH_S390X },
+ { "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 },
{ "lsi53c895a", "lsi" },
{ "ich9-ahci", "ahci" },
{ }
@@ -50,6 +53,11 @@ static const char *qdev_class_get_alias(DeviceClass *dc)
int i;
for (i = 0; qdev_alias_table[i].typename; i++) {
+ if (qdev_alias_table[i].arch_mask &&
+ !(qdev_alias_table[i].arch_mask & arch_type)) {
+ continue;
+ }
+
if (strcmp(qdev_alias_table[i].typename, typename) == 0) {
return qdev_alias_table[i].alias;
}
@@ -110,6 +118,11 @@ static const char *find_typename_by_alias(const char *alias)
int i;
for (i = 0; qdev_alias_table[i].alias; i++) {
+ if (qdev_alias_table[i].arch_mask &&
+ !(qdev_alias_table[i].arch_mask & arch_type)) {
+ continue;
+ }
+
if (strcmp(qdev_alias_table[i].alias, alias) == 0) {
return qdev_alias_table[i].typename;
}
--
1.6.0.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH 2/4] kvm: Update kernel headers
2012-06-18 13:36 [Qemu-devel] [PULL 0/4] s390 patch queue 2012-06-18 Alexander Graf
2012-06-18 13:36 ` [Qemu-devel] [PATCH 1/4] s390x: fix s390 virtio aliases Alexander Graf
@ 2012-06-18 13:36 ` Alexander Graf
2012-06-18 13:36 ` [Qemu-devel] [PATCH 3/4] s390: make kvm_stat work on s390 Alexander Graf
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Alexander Graf @ 2012-06-18 13:36 UTC (permalink / raw)
To: qemu-devel qemu-devel; +Cc: Blue Swirl, Aurelien Jarno
Corresponding kvm.git hash: 4e3c8a1b1c
Signed-off-by: Alexander Graf <agraf@suse.de>
---
| 5 +++++
| 1 +
2 files changed, 6 insertions(+), 0 deletions(-)
--git a/linux-headers/asm-s390/kvm.h b/linux-headers/asm-s390/kvm.h
index 9607667..bdcbe0f 100644
--- a/linux-headers/asm-s390/kvm.h
+++ b/linux-headers/asm-s390/kvm.h
@@ -52,4 +52,9 @@ struct kvm_sync_regs {
__u32 acrs[16]; /* access registers */
__u64 crs[16]; /* control registers */
};
+
+#define KVM_REG_S390_TODPR (KVM_REG_S390 | KVM_REG_SIZE_U32 | 0x1)
+#define KVM_REG_S390_EPOCHDIFF (KVM_REG_S390 | KVM_REG_SIZE_U64 | 0x2)
+#define KVM_REG_S390_CPU_TIMER (KVM_REG_S390 | KVM_REG_SIZE_U64 | 0x3)
+#define KVM_REG_S390_CLOCK_COMP (KVM_REG_S390 | KVM_REG_SIZE_U64 | 0x4)
#endif
--git a/linux-headers/linux/kvm.h b/linux-headers/linux/kvm.h
index c4426ec..5a9d4e3 100644
--- a/linux-headers/linux/kvm.h
+++ b/linux-headers/linux/kvm.h
@@ -616,6 +616,7 @@ struct kvm_ppc_smmu_info {
#define KVM_CAP_KVMCLOCK_CTRL 76
#define KVM_CAP_SIGNAL_MSI 77
#define KVM_CAP_PPC_GET_SMMU_INFO 78
+#define KVM_CAP_S390_COW 79
#ifdef KVM_CAP_IRQ_ROUTING
--
1.6.0.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH 3/4] s390: make kvm_stat work on s390
2012-06-18 13:36 [Qemu-devel] [PULL 0/4] s390 patch queue 2012-06-18 Alexander Graf
2012-06-18 13:36 ` [Qemu-devel] [PATCH 1/4] s390x: fix s390 virtio aliases Alexander Graf
2012-06-18 13:36 ` [Qemu-devel] [PATCH 2/4] kvm: Update kernel headers Alexander Graf
@ 2012-06-18 13:36 ` Alexander Graf
2012-06-18 13:36 ` [Qemu-devel] [PATCH 4/4] s390: stop target cpu on sigp initial reset Alexander Graf
2012-06-24 12:26 ` [Qemu-devel] [PULL 0/4] s390 patch queue 2012-06-18 Blue Swirl
4 siblings, 0 replies; 6+ messages in thread
From: Alexander Graf @ 2012-06-18 13:36 UTC (permalink / raw)
To: qemu-devel qemu-devel; +Cc: Blue Swirl, Jens Freimann, Aurelien Jarno
From: Jens Freimann <jfrei@linux.vnet.ibm.com>
Add s390_exit_reasons so kvm_stat doesn't crash when called on s390.
Look for 'vendor_id' in /proc/cpuinfo as well, instead of just for
'flags', so we can determine if we run on S390.
Signed-off-by: Jens Freimann <jfrei@linux.vnet.ibm.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
scripts/kvm/kvm_stat | 26 +++++++++++++++++++++++++-
1 files changed, 25 insertions(+), 1 deletions(-)
diff --git a/scripts/kvm/kvm_stat b/scripts/kvm/kvm_stat
index 56d2bd7..e8d68f0 100755
--- a/scripts/kvm/kvm_stat
+++ b/scripts/kvm/kvm_stat
@@ -141,15 +141,39 @@ svm_exit_reasons = {
0x400: 'NPF',
}
+s390_exit_reasons = {
+ 0x000: 'UNKNOWN',
+ 0x001: 'EXCEPTION',
+ 0x002: 'IO',
+ 0x003: 'HYPERCALL',
+ 0x004: 'DEBUG',
+ 0x005: 'HLT',
+ 0x006: 'MMIO',
+ 0x007: 'IRQ_WINDOW_OPEN',
+ 0x008: 'SHUTDOWN',
+ 0x009: 'FAIL_ENTRY',
+ 0x010: 'INTR',
+ 0x011: 'SET_TPR',
+ 0x012: 'TPR_ACCESS',
+ 0x013: 'S390_SIEIC',
+ 0x014: 'S390_RESET',
+ 0x015: 'DCR',
+ 0x016: 'NMI',
+ 0x017: 'INTERNAL_ERROR',
+ 0x018: 'OSI',
+ 0x019: 'PAPR_HCALL',
+}
+
vendor_exit_reasons = {
'vmx': vmx_exit_reasons,
'svm': svm_exit_reasons,
+ 'IBM/S390': s390_exit_reasons,
}
exit_reasons = None
for line in file('/proc/cpuinfo').readlines():
- if line.startswith('flags'):
+ if line.startswith('flags') or line.startswith('vendor_id'):
for flag in line.split():
if flag in vendor_exit_reasons:
exit_reasons = vendor_exit_reasons[flag]
--
1.6.0.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH 4/4] s390: stop target cpu on sigp initial reset
2012-06-18 13:36 [Qemu-devel] [PULL 0/4] s390 patch queue 2012-06-18 Alexander Graf
` (2 preceding siblings ...)
2012-06-18 13:36 ` [Qemu-devel] [PATCH 3/4] s390: make kvm_stat work on s390 Alexander Graf
@ 2012-06-18 13:36 ` Alexander Graf
2012-06-24 12:26 ` [Qemu-devel] [PULL 0/4] s390 patch queue 2012-06-18 Blue Swirl
4 siblings, 0 replies; 6+ messages in thread
From: Alexander Graf @ 2012-06-18 13:36 UTC (permalink / raw)
To: qemu-devel qemu-devel; +Cc: Blue Swirl, Christian Borntraeger, Aurelien Jarno
From: Christian Borntraeger <borntraeger@de.ibm.com>
We must not run the target cpu after an initial reset. This makes
system_reset more reliable for smp guests.
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-s390x/kvm.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/target-s390x/kvm.c b/target-s390x/kvm.c
index 5800fd6..ec08dd0 100644
--- a/target-s390x/kvm.c
+++ b/target-s390x/kvm.c
@@ -314,6 +314,7 @@ static int s390_cpu_initial_reset(CPUS390XState *env)
{
int i;
+ s390_del_running_cpu(env);
if (kvm_vcpu_ioctl(env, KVM_S390_INITIAL_RESET, NULL) < 0) {
perror("cannot init reset vcpu");
}
--
1.6.0.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PULL 0/4] s390 patch queue 2012-06-18
2012-06-18 13:36 [Qemu-devel] [PULL 0/4] s390 patch queue 2012-06-18 Alexander Graf
` (3 preceding siblings ...)
2012-06-18 13:36 ` [Qemu-devel] [PATCH 4/4] s390: stop target cpu on sigp initial reset Alexander Graf
@ 2012-06-24 12:26 ` Blue Swirl
4 siblings, 0 replies; 6+ messages in thread
From: Blue Swirl @ 2012-06-24 12:26 UTC (permalink / raw)
To: Alexander Graf; +Cc: qemu-devel qemu-devel, Aurelien Jarno
On Mon, Jun 18, 2012 at 1:36 PM, Alexander Graf <agraf@suse.de> wrote:
> Hi Blue / Aurelien,
>
> This is my current patch queue for s390. Please pull.
Thanks, pulled.
>
> Alex
>
>
> The following changes since commit eb2aeacf983a2a88a2b31e8fee067c38bd10abd3:
> malc (1):
> audio/winwave: Fix typo
>
> are available in the git repository at:
>
> git://repo.or.cz/qemu/agraf.git s390-for-upstream
>
> Alexander Graf (2):
> s390x: fix s390 virtio aliases
> kvm: Update kernel headers
>
> Christian Borntraeger (1):
> s390: stop target cpu on sigp initial reset
>
> Jens Freimann (1):
> s390: make kvm_stat work on s390
>
> hw/qdev-monitor.c | 27 ++++++++++++++++++++-------
> linux-headers/asm-s390/kvm.h | 5 +++++
> linux-headers/linux/kvm.h | 1 +
> scripts/kvm/kvm_stat | 26 +++++++++++++++++++++++++-
> target-s390x/kvm.c | 1 +
> 5 files changed, 52 insertions(+), 8 deletions(-)
^ permalink raw reply [flat|nested] 6+ messages in thread