All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 0/6] [PREVIEW] s390x/kvm: fixes and features
@ 2015-03-12 12:53 Jens Freimann
  2015-03-12 12:53 ` [Qemu-devel] [PATCH 1/6] kvm: encapsulate HAS_DEVICE for vm attrs Jens Freimann
                   ` (7 more replies)
  0 siblings, 8 replies; 10+ messages in thread
From: Jens Freimann @ 2015-03-12 12:53 UTC (permalink / raw)
  To: Christian Borntraeger, Alexander Graf, Cornelia Huck
  Cc: Jens Freimann, qemu-devel

Conny, Alex, Christian,

a few more s390 patches:

Patch 1: encapsulates the HAS_DEVICE check into a generic function
Patch 2: use the function introduced in Patch 1
Patch 3: introduces two new machine options for indicating the state of
         AES/DEA key wrapping functions
Patch 4 and 5: remove dead code
Patch 6: fill in length for sei_nt2 event

regards
Jens

Dominik Dingel (3):
  kvm: encapsulate HAS_DEVICE for vm attrs
  s390x/kvm: make use of generic vm attribute check
  s390x/ipl: remove dead code

Frank Blaschka (1):
  s390x/pci: fix length in sei_nt2 event

Thomas Huth (1):
  s390x/virtio-bus: Remove unused function s390_virtio_bus_console()

Tony Krowiak (1):
  s390x: CPACF: Handle key wrap machine options

 hw/s390x/ipl.c             |  3 --
 hw/s390x/s390-pci-bus.c    |  1 +
 hw/s390x/s390-virtio-bus.c |  5 ---
 hw/s390x/s390-virtio-bus.h |  1 -
 hw/s390x/s390-virtio-ccw.c | 63 +++++++++++++++++++++++++++++++
 include/sysemu/kvm.h       | 12 ++++++
 kvm-all.c                  | 21 +++++++++++
 qemu-options.hx            | 12 +++++-
 target-s390x/kvm.c         | 93 +++++++++++++++++++++++++++++-----------------
 9 files changed, 166 insertions(+), 45 deletions(-)

-- 
2.1.4

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Qemu-devel] [PATCH 1/6] kvm: encapsulate HAS_DEVICE for vm attrs
  2015-03-12 12:53 [Qemu-devel] [PATCH 0/6] [PREVIEW] s390x/kvm: fixes and features Jens Freimann
@ 2015-03-12 12:53 ` Jens Freimann
  2015-03-12 16:47   ` Paolo Bonzini
  2015-03-12 12:53 ` [Qemu-devel] [PATCH 2/6] s390x/kvm: make use of generic vm attribute check Jens Freimann
                   ` (6 subsequent siblings)
  7 siblings, 1 reply; 10+ messages in thread
From: Jens Freimann @ 2015-03-12 12:53 UTC (permalink / raw)
  To: Christian Borntraeger, Alexander Graf, Cornelia Huck
  Cc: Paolo Bonzini, Jens Freimann, qemu-devel, Dominik Dingel

From: Dominik Dingel <dingel@linux.vnet.ibm.com>

More and more virtual machine specifics between kvm and qemu will be
transferred with vm attributes.
So we encapsulate the common logic in a generic function.

Additionally we need only to check during initialization if kvm supports
virtual machine attributes.

Cc: Paolo Bonzini <pbonzini@redhat.com>
Suggested-by: Thomas Huth <thuth@linux.vnet.ibm.com>
Reviewed-by: Thomas Huth <thuth@linux.vnet.ibm.com>
Signed-off-by: Dominik Dingel <dingel@linux.vnet.ibm.com>
Signed-off-by: Jens Freimann <jfrei@linux.vnet.ibm.com>
---
 include/sysemu/kvm.h | 12 ++++++++++++
 kvm-all.c            | 21 +++++++++++++++++++++
 2 files changed, 33 insertions(+)

diff --git a/include/sysemu/kvm.h b/include/sysemu/kvm.h
index 30cb84d..1fcde16 100644
--- a/include/sysemu/kvm.h
+++ b/include/sysemu/kvm.h
@@ -225,6 +225,18 @@ int kvm_vcpu_ioctl(CPUState *cpu, int type, ...);
 int kvm_device_ioctl(int fd, int type, ...);
 
 /**
+ * kvm_vm_check_attr - check for existence of a specific vm attribute
+ * @s: The KVMState pointer
+ * @group: the group
+ * @attr: the attribute of that group to query for
+ *
+ * Returns: 1 if the attribute exists
+ *          0 if the attribute either does not exist or if the vm device
+ *            interface is unavailable
+ */
+int kvm_vm_check_attr(KVMState *s, uint32_t group, uint64_t attr);
+
+/**
  * kvm_create_device - create a KVM device for the device control API
  * @KVMState: The KVMState pointer
  * @type: The KVM device type (see Documentation/virtual/kvm/devices in the
diff --git a/kvm-all.c b/kvm-all.c
index 05a79c2..e1ca8e0 100644
--- a/kvm-all.c
+++ b/kvm-all.c
@@ -126,6 +126,7 @@ bool kvm_gsi_routing_allowed;
 bool kvm_gsi_direct_mapping;
 bool kvm_allowed;
 bool kvm_readonly_mem_allowed;
+bool kvm_vm_attributes_allowed;
 
 static const KVMCapabilityInfo kvm_required_capabilites[] = {
     KVM_CAP_INFO(USER_MEMORY),
@@ -1598,6 +1599,9 @@ static int kvm_init(MachineState *ms)
     kvm_resamplefds_allowed =
         (kvm_check_extension(s, KVM_CAP_IRQFD_RESAMPLE) > 0);
 
+    kvm_vm_attributes_allowed =
+        (kvm_check_extension(s, KVM_CAP_VM_ATTRIBUTES) > 0);
+
     ret = kvm_arch_init(s);
     if (ret < 0) {
         goto err;
@@ -1936,6 +1940,23 @@ int kvm_device_ioctl(int fd, int type, ...)
     return ret;
 }
 
+int kvm_vm_check_attr(KVMState *s, uint32_t group, uint64_t attr)
+{
+    int ret;
+    struct kvm_device_attr attribute = {
+        .group = group,
+        .attr = attr,
+    };
+
+    if (!kvm_vm_attributes_allowed) {
+        return 0;
+    }
+
+    ret = kvm_vm_ioctl(s, KVM_HAS_DEVICE_ATTR, &attribute);
+    /* kvm returns 0 on success for HAS_DEVICE_ATTR */
+    return ret ? 0 : 1;
+}
+
 int kvm_has_sync_mmu(void)
 {
     return kvm_check_extension(kvm_state, KVM_CAP_SYNC_MMU);
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [Qemu-devel] [PATCH 2/6] s390x/kvm: make use of generic vm attribute check
  2015-03-12 12:53 [Qemu-devel] [PATCH 0/6] [PREVIEW] s390x/kvm: fixes and features Jens Freimann
  2015-03-12 12:53 ` [Qemu-devel] [PATCH 1/6] kvm: encapsulate HAS_DEVICE for vm attrs Jens Freimann
@ 2015-03-12 12:53 ` Jens Freimann
  2015-03-12 12:53 ` [Qemu-devel] [PATCH 3/6] s390x: CPACF: Handle key wrap machine options Jens Freimann
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 10+ messages in thread
From: Jens Freimann @ 2015-03-12 12:53 UTC (permalink / raw)
  To: Christian Borntraeger, Alexander Graf, Cornelia Huck
  Cc: Jens Freimann, qemu-devel, Dominik Dingel

From: Dominik Dingel <dingel@linux.vnet.ibm.com>

By using the new introduced generic interface we
can remove redundancies and clean up.

Reviewed-by: Thomas Huth <thuth@linux.vnet.ibm.com>
Suggested-by: Thomas Huth <thuth@linux.vnet.ibm.com>
Signed-off-by: Dominik Dingel <dingel@linux.vnet.ibm.com>
Signed-off-by: Jens Freimann <jfrei@linux.vnet.ibm.com>
---
 target-s390x/kvm.c | 42 +++++++-----------------------------------
 1 file changed, 7 insertions(+), 35 deletions(-)

diff --git a/target-s390x/kvm.c b/target-s390x/kvm.c
index f4bcca1..99dd4d5 100644
--- a/target-s390x/kvm.c
+++ b/target-s390x/kvm.c
@@ -55,6 +55,9 @@
     do { } while (0)
 #endif
 
+#define kvm_vm_check_mem_attr(s, attr) \
+    kvm_vm_check_attr(s, KVM_S390_VM_MEM_CTRL, attr)
+
 #define IPA0_DIAG                       0x8300
 #define IPA0_SIGP                       0xae00
 #define IPA0_B2                         0xb200
@@ -122,16 +125,6 @@ static int cap_async_pf;
 
 static void *legacy_s390_alloc(size_t size, uint64_t *align);
 
-static int kvm_s390_supports_mem_limit(KVMState *s)
-{
-    struct kvm_device_attr attr = {
-        .group = KVM_S390_VM_MEM_CTRL,
-        .attr = KVM_S390_VM_MEM_LIMIT_SIZE,
-    };
-
-    return (kvm_vm_ioctl(s, KVM_HAS_DEVICE_ATTR, &attr) == 0);
-}
-
 static int kvm_s390_query_mem_limit(KVMState *s, uint64_t *memory_limit)
 {
     struct kvm_device_attr attr = {
@@ -153,7 +146,7 @@ int kvm_s390_set_mem_limit(KVMState *s, uint64_t new_limit, uint64_t *hw_limit)
         .addr = (uint64_t) &new_limit,
     };
 
-    if (!kvm_s390_supports_mem_limit(s)) {
+    if (!kvm_vm_check_mem_attr(s, KVM_S390_VM_MEM_LIMIT_SIZE)) {
         return 0;
     }
 
@@ -167,26 +160,6 @@ int kvm_s390_set_mem_limit(KVMState *s, uint64_t new_limit, uint64_t *hw_limit)
     return kvm_vm_ioctl(s, KVM_SET_DEVICE_ATTR, &attr);
 }
 
-static int kvm_s390_check_clear_cmma(KVMState *s)
-{
-    struct kvm_device_attr attr = {
-        .group = KVM_S390_VM_MEM_CTRL,
-        .attr = KVM_S390_VM_MEM_CLR_CMMA,
-    };
-
-    return kvm_vm_ioctl(s, KVM_HAS_DEVICE_ATTR, &attr);
-}
-
-static int kvm_s390_check_enable_cmma(KVMState *s)
-{
-    struct kvm_device_attr attr = {
-        .group = KVM_S390_VM_MEM_CTRL,
-        .attr = KVM_S390_VM_MEM_ENABLE_CMMA,
-    };
-
-    return kvm_vm_ioctl(s, KVM_HAS_DEVICE_ATTR, &attr);
-}
-
 void kvm_s390_clear_cmma_callback(void *opaque)
 {
     int rc;
@@ -208,7 +181,8 @@ static void kvm_s390_enable_cmma(KVMState *s)
         .attr = KVM_S390_VM_MEM_ENABLE_CMMA,
     };
 
-    if (kvm_s390_check_enable_cmma(s) || kvm_s390_check_clear_cmma(s)) {
+    if (!kvm_vm_check_mem_attr(s, KVM_S390_VM_MEM_ENABLE_CMMA) ||
+        !kvm_vm_check_mem_attr(s, KVM_S390_VM_MEM_CLR_CMMA)) {
         return;
     }
 
@@ -224,9 +198,7 @@ int kvm_arch_init(KVMState *s)
     cap_sync_regs = kvm_check_extension(s, KVM_CAP_SYNC_REGS);
     cap_async_pf = kvm_check_extension(s, KVM_CAP_ASYNC_PF);
 
-    if (kvm_check_extension(s, KVM_CAP_VM_ATTRIBUTES)) {
-        kvm_s390_enable_cmma(s);
-    }
+    kvm_s390_enable_cmma(s);
 
     if (!kvm_check_extension(s, KVM_CAP_S390_GMAP)
         || !kvm_check_extension(s, KVM_CAP_S390_COW)) {
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [Qemu-devel] [PATCH 3/6] s390x: CPACF: Handle key wrap machine options
  2015-03-12 12:53 [Qemu-devel] [PATCH 0/6] [PREVIEW] s390x/kvm: fixes and features Jens Freimann
  2015-03-12 12:53 ` [Qemu-devel] [PATCH 1/6] kvm: encapsulate HAS_DEVICE for vm attrs Jens Freimann
  2015-03-12 12:53 ` [Qemu-devel] [PATCH 2/6] s390x/kvm: make use of generic vm attribute check Jens Freimann
@ 2015-03-12 12:53 ` Jens Freimann
  2015-03-12 12:53 ` [Qemu-devel] [PATCH 4/6] s390x/virtio-bus: Remove unused function s390_virtio_bus_console() Jens Freimann
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 10+ messages in thread
From: Jens Freimann @ 2015-03-12 12:53 UTC (permalink / raw)
  To: Christian Borntraeger, Alexander Graf, Cornelia Huck
  Cc: Tony Krowiak, qemu-devel, Jens Freimann

From: Tony Krowiak <akrowiak@linux.vnet.ibm.com>

Check for the aes_key_wrap and dea_key_wrap machine options and set the
appropriate KVM device attribute(s) to tell the kernel to enable or disable
the AES/DEA protected key functions for the guest domain.

This patch introduces two new machine options for indicating the state of
AES/DEA key wrapping functions.  This controls whether the guest will
have access to the AES/DEA crypto functions.

aes_key_wrap="on | off" is changed to aes-key-wrap="on | off"
dea_key_wrap="on | off" is changed to dea-key-wrap="on | off"

Check for the aes-key-wrap and dea-key-wrap machine options and set the
appropriate KVM device attribute(s) to tell the kernel to enable or disable
the AES/DEA protected key functions for the guest domain.

Reviewed-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
Signed-off-by: Tony Krowiak <akrowiak@linux.vnet.ibm.com>
Signed-off-by: Jens Freimann <jfrei@linux.vnet.ibm.com>
---
 hw/s390x/s390-virtio-ccw.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++
 qemu-options.hx            | 12 ++++++++-
 target-s390x/kvm.c         | 51 +++++++++++++++++++++++++++++++++++++
 3 files changed, 125 insertions(+), 1 deletion(-)

diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c
index eea0742..afb539a 100644
--- a/hw/s390x/s390-virtio-ccw.c
+++ b/hw/s390x/s390-virtio-ccw.c
@@ -22,6 +22,18 @@
 
 #define TYPE_S390_CCW_MACHINE               "s390-ccw-machine"
 
+#define S390_CCW_MACHINE(obj) \
+    OBJECT_CHECK(S390CcwMachineState, (obj), TYPE_S390_CCW_MACHINE)
+
+typedef struct S390CcwMachineState {
+    /*< private >*/
+    MachineState parent_obj;
+
+    /*< public >*/
+    bool aes_key_wrap;
+    bool dea_key_wrap;
+} S390CcwMachineState;
+
 void io_subsystem_reset(void)
 {
     DeviceState *css, *sclp, *flic;
@@ -207,9 +219,60 @@ static void ccw_machine_class_init(ObjectClass *oc, void *data)
     nc->nmi_monitor_handler = s390_nmi;
 }
 
+static inline bool machine_get_aes_key_wrap(Object *obj, Error **errp)
+{
+    S390CcwMachineState *ms = S390_CCW_MACHINE(obj);
+
+    return ms->aes_key_wrap;
+}
+
+static inline void machine_set_aes_key_wrap(Object *obj, bool value,
+                                            Error **errp)
+{
+    S390CcwMachineState *ms = S390_CCW_MACHINE(obj);
+
+    ms->aes_key_wrap = value;
+}
+
+static inline bool machine_get_dea_key_wrap(Object *obj, Error **errp)
+{
+    S390CcwMachineState *ms = S390_CCW_MACHINE(obj);
+
+    return ms->dea_key_wrap;
+}
+
+static inline void machine_set_dea_key_wrap(Object *obj, bool value,
+                                            Error **errp)
+{
+    S390CcwMachineState *ms = S390_CCW_MACHINE(obj);
+
+    ms->dea_key_wrap = value;
+}
+
+static inline void s390_machine_initfn(Object *obj)
+{
+    object_property_add_bool(obj, "aes-key-wrap",
+                             machine_get_aes_key_wrap,
+                             machine_set_aes_key_wrap, NULL);
+    object_property_set_description(obj, "aes-key-wrap",
+            "enable/disable AES key wrapping using the CPACF wrapping key",
+            NULL);
+    object_property_set_bool(obj, true, "aes-key-wrap", NULL);
+
+    object_property_add_bool(obj, "dea-key-wrap",
+                             machine_get_dea_key_wrap,
+                             machine_set_dea_key_wrap, NULL);
+    object_property_set_description(obj, "dea-key-wrap",
+            "enable/disable DEA key wrapping using the CPACF wrapping key",
+            NULL);
+    object_property_set_bool(obj, true, "dea-key-wrap", NULL);
+}
+
 static const TypeInfo ccw_machine_info = {
     .name          = TYPE_S390_CCW_MACHINE,
     .parent        = TYPE_MACHINE,
+    .instance_size = sizeof(S390CcwMachineState),
+    .instance_init = s390_machine_initfn,
     .class_init    = ccw_machine_class_init,
     .interfaces = (InterfaceInfo[]) {
         { TYPE_NMI },
diff --git a/qemu-options.hx b/qemu-options.hx
index b0345ae..c3c2822 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -37,7 +37,9 @@ DEF("machine", HAS_ARG, QEMU_OPTION_machine, \
     "                kvm_shadow_mem=size of KVM shadow MMU\n"
     "                dump-guest-core=on|off include guest memory in a core dump (default=on)\n"
     "                mem-merge=on|off controls memory merge support (default: on)\n"
-    "                iommu=on|off controls emulated Intel IOMMU (VT-d) support (default=off)\n",
+    "                iommu=on|off controls emulated Intel IOMMU (VT-d) support (default=off)\n"
+    "                aes-key-wrap=on|off controls support for AES key wrapping (default=on)\n"
+    "                dea-key-wrap=on|off controls support for DEA key wrapping (default=on)\n",
     QEMU_ARCH_ALL)
 STEXI
 @item -machine [type=]@var{name}[,prop=@var{value}[,...]]
@@ -66,6 +68,14 @@ the host, de-duplicates identical memory pages among VMs instances
 (enabled by default).
 @item iommu=on|off
 Enables or disables emulated Intel IOMMU (VT-d) support. The default is off.
+@item aes-key-wrap=on|off
+Enables or disables AES key wrapping support on s390-ccw hosts. This feature
+controls whether AES wrapping keys will be created to allow
+execution of AES cryptographic functions.  The default is on.
+@item dea-key-wrap=on|off
+Enables or disables DEA key wrapping support on s390-ccw hosts. This feature
+controls whether DEA wrapping keys will be created to allow
+execution of DEA cryptographic functions.  The default is on.
 @end table
 ETEXI
 
diff --git a/target-s390x/kvm.c b/target-s390x/kvm.c
index 99dd4d5..c205e98 100644
--- a/target-s390x/kvm.c
+++ b/target-s390x/kvm.c
@@ -193,6 +193,55 @@ static void kvm_s390_enable_cmma(KVMState *s)
     trace_kvm_enable_cmma(rc);
 }
 
+static void kvm_s390_set_attr(uint64_t attr)
+{
+    struct kvm_device_attr attribute = {
+        .group = KVM_S390_VM_CRYPTO,
+        .attr  = attr,
+    };
+
+    int ret = kvm_vm_ioctl(kvm_state, KVM_SET_DEVICE_ATTR, &attribute);
+
+    if (ret) {
+        error_report("Failed to set crypto device attribute %lu: %s",
+                     attr, strerror(-ret));
+    }
+}
+
+static void kvm_s390_init_aes_kw(void)
+{
+    uint64_t attr = KVM_S390_VM_CRYPTO_DISABLE_AES_KW;
+
+    if (object_property_get_bool(OBJECT(qdev_get_machine()), "aes-key-wrap",
+                                 NULL)) {
+            attr = KVM_S390_VM_CRYPTO_ENABLE_AES_KW;
+    }
+
+    if (kvm_vm_check_attr(kvm_state, KVM_S390_VM_CRYPTO, attr)) {
+            kvm_s390_set_attr(attr);
+    }
+}
+
+static void kvm_s390_init_dea_kw(void)
+{
+    uint64_t attr = KVM_S390_VM_CRYPTO_DISABLE_DEA_KW;
+
+    if (object_property_get_bool(OBJECT(qdev_get_machine()), "dea-key-wrap",
+                                 NULL)) {
+            attr = KVM_S390_VM_CRYPTO_ENABLE_DEA_KW;
+    }
+
+    if (kvm_vm_check_attr(kvm_state, KVM_S390_VM_CRYPTO, attr)) {
+            kvm_s390_set_attr(attr);
+    }
+}
+
+static void kvm_s390_init_crypto(void)
+{
+    kvm_s390_init_aes_kw();
+    kvm_s390_init_dea_kw();
+}
+
 int kvm_arch_init(KVMState *s)
 {
     cap_sync_regs = kvm_check_extension(s, KVM_CAP_SYNC_REGS);
@@ -234,6 +283,8 @@ void kvm_s390_reset_vcpu(S390CPU *cpu)
     if (kvm_vcpu_ioctl(cs, KVM_S390_INITIAL_RESET, NULL)) {
         error_report("Initial CPU reset failed on CPU %i\n", cs->cpu_index);
     }
+
+    kvm_s390_init_crypto();
 }
 
 static int can_sync_regs(CPUState *cs, int regs)
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [Qemu-devel] [PATCH 4/6] s390x/virtio-bus: Remove unused function s390_virtio_bus_console()
  2015-03-12 12:53 [Qemu-devel] [PATCH 0/6] [PREVIEW] s390x/kvm: fixes and features Jens Freimann
                   ` (2 preceding siblings ...)
  2015-03-12 12:53 ` [Qemu-devel] [PATCH 3/6] s390x: CPACF: Handle key wrap machine options Jens Freimann
@ 2015-03-12 12:53 ` Jens Freimann
  2015-03-12 12:53 ` [Qemu-devel] [PATCH 5/6] s390x/ipl: remove dead code Jens Freimann
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 10+ messages in thread
From: Jens Freimann @ 2015-03-12 12:53 UTC (permalink / raw)
  To: Christian Borntraeger, Alexander Graf, Cornelia Huck
  Cc: Jens Freimann, qemu-devel, Thomas Huth

From: Thomas Huth <thuth@linux.vnet.ibm.com>

The function s390_virtio_bus_console() is completely unused and thus
can be removed safely.

Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
Reviewed-by: Jens Freimann <jfrei@linux.vnet.ibm.com>
Signed-off-by: Jens Freimann <jfrei@linux.vnet.ibm.com>
---
 hw/s390x/s390-virtio-bus.c | 5 -----
 hw/s390x/s390-virtio-bus.h | 1 -
 2 files changed, 6 deletions(-)

diff --git a/hw/s390x/s390-virtio-bus.c b/hw/s390x/s390-virtio-bus.c
index 39dc201..4ccb93c 100644
--- a/hw/s390x/s390-virtio-bus.c
+++ b/hw/s390x/s390-virtio-bus.c
@@ -422,11 +422,6 @@ void s390_virtio_device_update_status(VirtIOS390Device *dev)
     virtio_set_features(vdev, features);
 }
 
-VirtIOS390Device *s390_virtio_bus_console(VirtIOS390Bus *bus)
-{
-    return bus->console;
-}
-
 /* Find a device by vring address */
 VirtIOS390Device *s390_virtio_bus_find_vring(VirtIOS390Bus *bus,
                                              ram_addr_t mem,
diff --git a/hw/s390x/s390-virtio-bus.h b/hw/s390x/s390-virtio-bus.h
index 92aa9d0..04bf0fa 100644
--- a/hw/s390x/s390-virtio-bus.h
+++ b/hw/s390x/s390-virtio-bus.h
@@ -108,7 +108,6 @@ typedef struct VirtIOS390Bus {
 
 void s390_virtio_device_update_status(VirtIOS390Device *dev);
 
-VirtIOS390Device *s390_virtio_bus_console(VirtIOS390Bus *bus);
 VirtIOS390Bus *s390_virtio_bus_init(ram_addr_t *ram_size);
 
 VirtIOS390Device *s390_virtio_bus_find_vring(VirtIOS390Bus *bus,
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [Qemu-devel] [PATCH 5/6] s390x/ipl: remove dead code
  2015-03-12 12:53 [Qemu-devel] [PATCH 0/6] [PREVIEW] s390x/kvm: fixes and features Jens Freimann
                   ` (3 preceding siblings ...)
  2015-03-12 12:53 ` [Qemu-devel] [PATCH 4/6] s390x/virtio-bus: Remove unused function s390_virtio_bus_console() Jens Freimann
@ 2015-03-12 12:53 ` Jens Freimann
  2015-03-12 12:53 ` [Qemu-devel] [PATCH 6/6] s390x/pci: fix length in sei_nt2 event Jens Freimann
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 10+ messages in thread
From: Jens Freimann @ 2015-03-12 12:53 UTC (permalink / raw)
  To: Christian Borntraeger, Alexander Graf, Cornelia Huck
  Cc: Jens Freimann, qemu-devel, Dominik Dingel

From: Dominik Dingel <dingel@linux.vnet.ibm.com>

load_image_targphys already checks the max size and will return
an error code. So the follow-on check will never trigger.

Signed-off-by: Dominik Dingel <dingel@linux.vnet.ibm.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Reviewed-by: Thomas Huth <thuth@linux.vnet.ibm.com>
Signed-off-by: Jens Freimann <jfrei@linux.vnet.ibm.com>
---
 hw/s390x/ipl.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/hw/s390x/ipl.c b/hw/s390x/ipl.c
index b57adbd..521dd94 100644
--- a/hw/s390x/ipl.c
+++ b/hw/s390x/ipl.c
@@ -124,9 +124,6 @@ static int s390_ipl_init(SysBusDevice *dev)
             bios_size = load_image_targphys(bios_filename, ZIPL_IMAGE_START,
                                             4096);
             ipl->bios_start_addr = ZIPL_IMAGE_START;
-            if (bios_size > 4096) {
-                hw_error("stage1 bootloader is > 4k\n");
-            }
         }
         g_free(bios_filename);
 
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [Qemu-devel] [PATCH 6/6] s390x/pci: fix length in sei_nt2 event
  2015-03-12 12:53 [Qemu-devel] [PATCH 0/6] [PREVIEW] s390x/kvm: fixes and features Jens Freimann
                   ` (4 preceding siblings ...)
  2015-03-12 12:53 ` [Qemu-devel] [PATCH 5/6] s390x/ipl: remove dead code Jens Freimann
@ 2015-03-12 12:53 ` Jens Freimann
  2015-03-12 13:51 ` [Qemu-devel] [PATCH 0/6] [PREVIEW] s390x/kvm: fixes and features Jens Freimann
  2015-03-13 10:09 ` Cornelia Huck
  7 siblings, 0 replies; 10+ messages in thread
From: Jens Freimann @ 2015-03-12 12:53 UTC (permalink / raw)
  To: Christian Borntraeger, Alexander Graf, Cornelia Huck
  Cc: Jens Freimann, Frank Blaschka, qemu-devel

From: Frank Blaschka <blaschka@linux.vnet.ibm.com>

The sei_nt2 event must contain the length of the event.

Signed-off-by: Frank Blaschka <blaschka@linux.vnet.ibm.com>
Signed-off-by: Jens Freimann <jfrei@linux.vnet.ibm.com>
---
 hw/s390x/s390-pci-bus.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c
index dc455a2..3c086f6 100644
--- a/hw/s390x/s390-pci-bus.c
+++ b/hw/s390x/s390-pci-bus.c
@@ -44,6 +44,7 @@ int chsc_sei_nt2_get_event(void *res)
         QTAILQ_REMOVE(&s->pending_sei, sei_cont, link);
         nt2_res->nt = 2;
         nt2_res->cc = sei_cont->cc;
+        nt2_res->length = cpu_to_be16(sizeof(ChscSeiNt2Res));
         switch (sei_cont->cc) {
         case 1: /* error event */
             eccdf = (PciCcdfErr *)nt2_res->ccdf;
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [Qemu-devel] [PATCH 0/6] [PREVIEW] s390x/kvm: fixes and features
  2015-03-12 12:53 [Qemu-devel] [PATCH 0/6] [PREVIEW] s390x/kvm: fixes and features Jens Freimann
                   ` (5 preceding siblings ...)
  2015-03-12 12:53 ` [Qemu-devel] [PATCH 6/6] s390x/pci: fix length in sei_nt2 event Jens Freimann
@ 2015-03-12 13:51 ` Jens Freimann
  2015-03-13 10:09 ` Cornelia Huck
  7 siblings, 0 replies; 10+ messages in thread
From: Jens Freimann @ 2015-03-12 13:51 UTC (permalink / raw)
  To: Christian Borntraeger, Alexander Graf, Cornelia Huck; +Cc: qemu-devel

On Thu, Mar 12, 2015 at 01:53:48PM +0100, Jens Freimann wrote:

Sorry, please ignore the PREVIEW in the subject which I should have
removed before sending the patches.

Jens

> Conny, Alex, Christian,
> 
> a few more s390 patches:
> 
> Patch 1: encapsulates the HAS_DEVICE check into a generic function
> Patch 2: use the function introduced in Patch 1
> Patch 3: introduces two new machine options for indicating the state of
>          AES/DEA key wrapping functions
> Patch 4 and 5: remove dead code
> Patch 6: fill in length for sei_nt2 event
> 
> regards
> Jens
> 
> Dominik Dingel (3):
>   kvm: encapsulate HAS_DEVICE for vm attrs
>   s390x/kvm: make use of generic vm attribute check
>   s390x/ipl: remove dead code
> 
> Frank Blaschka (1):
>   s390x/pci: fix length in sei_nt2 event
> 
> Thomas Huth (1):
>   s390x/virtio-bus: Remove unused function s390_virtio_bus_console()
> 
> Tony Krowiak (1):
>   s390x: CPACF: Handle key wrap machine options
> 
>  hw/s390x/ipl.c             |  3 --
>  hw/s390x/s390-pci-bus.c    |  1 +
>  hw/s390x/s390-virtio-bus.c |  5 ---
>  hw/s390x/s390-virtio-bus.h |  1 -
>  hw/s390x/s390-virtio-ccw.c | 63 +++++++++++++++++++++++++++++++
>  include/sysemu/kvm.h       | 12 ++++++
>  kvm-all.c                  | 21 +++++++++++
>  qemu-options.hx            | 12 +++++-
>  target-s390x/kvm.c         | 93 +++++++++++++++++++++++++++++-----------------
>  9 files changed, 166 insertions(+), 45 deletions(-)
> 
> -- 
> 2.1.4
> 

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [Qemu-devel] [PATCH 1/6] kvm: encapsulate HAS_DEVICE for vm attrs
  2015-03-12 12:53 ` [Qemu-devel] [PATCH 1/6] kvm: encapsulate HAS_DEVICE for vm attrs Jens Freimann
@ 2015-03-12 16:47   ` Paolo Bonzini
  0 siblings, 0 replies; 10+ messages in thread
From: Paolo Bonzini @ 2015-03-12 16:47 UTC (permalink / raw)
  To: Jens Freimann, Christian Borntraeger, Alexander Graf, Cornelia Huck
  Cc: qemu-devel, Dominik Dingel



On 12/03/2015 13:53, Jens Freimann wrote:
> From: Dominik Dingel <dingel@linux.vnet.ibm.com>
> 
> More and more virtual machine specifics between kvm and qemu will be
> transferred with vm attributes.
> So we encapsulate the common logic in a generic function.
> 
> Additionally we need only to check during initialization if kvm supports
> virtual machine attributes.
> 
> Cc: Paolo Bonzini <pbonzini@redhat.com>
> Suggested-by: Thomas Huth <thuth@linux.vnet.ibm.com>
> Reviewed-by: Thomas Huth <thuth@linux.vnet.ibm.com>
> Signed-off-by: Dominik Dingel <dingel@linux.vnet.ibm.com>
> Signed-off-by: Jens Freimann <jfrei@linux.vnet.ibm.com>
> ---
>  include/sysemu/kvm.h | 12 ++++++++++++
>  kvm-all.c            | 21 +++++++++++++++++++++
>  2 files changed, 33 insertions(+)
> 
> diff --git a/include/sysemu/kvm.h b/include/sysemu/kvm.h
> index 30cb84d..1fcde16 100644
> --- a/include/sysemu/kvm.h
> +++ b/include/sysemu/kvm.h
> @@ -225,6 +225,18 @@ int kvm_vcpu_ioctl(CPUState *cpu, int type, ...);
>  int kvm_device_ioctl(int fd, int type, ...);
>  
>  /**
> + * kvm_vm_check_attr - check for existence of a specific vm attribute
> + * @s: The KVMState pointer
> + * @group: the group
> + * @attr: the attribute of that group to query for
> + *
> + * Returns: 1 if the attribute exists
> + *          0 if the attribute either does not exist or if the vm device
> + *            interface is unavailable
> + */
> +int kvm_vm_check_attr(KVMState *s, uint32_t group, uint64_t attr);
> +
> +/**
>   * kvm_create_device - create a KVM device for the device control API
>   * @KVMState: The KVMState pointer
>   * @type: The KVM device type (see Documentation/virtual/kvm/devices in the
> diff --git a/kvm-all.c b/kvm-all.c
> index 05a79c2..e1ca8e0 100644
> --- a/kvm-all.c
> +++ b/kvm-all.c
> @@ -126,6 +126,7 @@ bool kvm_gsi_routing_allowed;
>  bool kvm_gsi_direct_mapping;
>  bool kvm_allowed;
>  bool kvm_readonly_mem_allowed;
> +bool kvm_vm_attributes_allowed;
>  
>  static const KVMCapabilityInfo kvm_required_capabilites[] = {
>      KVM_CAP_INFO(USER_MEMORY),
> @@ -1598,6 +1599,9 @@ static int kvm_init(MachineState *ms)
>      kvm_resamplefds_allowed =
>          (kvm_check_extension(s, KVM_CAP_IRQFD_RESAMPLE) > 0);
>  
> +    kvm_vm_attributes_allowed =
> +        (kvm_check_extension(s, KVM_CAP_VM_ATTRIBUTES) > 0);
> +
>      ret = kvm_arch_init(s);
>      if (ret < 0) {
>          goto err;
> @@ -1936,6 +1940,23 @@ int kvm_device_ioctl(int fd, int type, ...)
>      return ret;
>  }
>  
> +int kvm_vm_check_attr(KVMState *s, uint32_t group, uint64_t attr)
> +{
> +    int ret;
> +    struct kvm_device_attr attribute = {
> +        .group = group,
> +        .attr = attr,
> +    };
> +
> +    if (!kvm_vm_attributes_allowed) {
> +        return 0;
> +    }
> +
> +    ret = kvm_vm_ioctl(s, KVM_HAS_DEVICE_ATTR, &attribute);
> +    /* kvm returns 0 on success for HAS_DEVICE_ATTR */
> +    return ret ? 0 : 1;
> +}
> +
>  int kvm_has_sync_mmu(void)
>  {
>      return kvm_check_extension(kvm_state, KVM_CAP_SYNC_MMU);
> 

Acked-by: Paolo Bonzini <pbonzini@redhat.com>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [Qemu-devel] [PATCH 0/6] [PREVIEW] s390x/kvm: fixes and features
  2015-03-12 12:53 [Qemu-devel] [PATCH 0/6] [PREVIEW] s390x/kvm: fixes and features Jens Freimann
                   ` (6 preceding siblings ...)
  2015-03-12 13:51 ` [Qemu-devel] [PATCH 0/6] [PREVIEW] s390x/kvm: fixes and features Jens Freimann
@ 2015-03-13 10:09 ` Cornelia Huck
  7 siblings, 0 replies; 10+ messages in thread
From: Cornelia Huck @ 2015-03-13 10:09 UTC (permalink / raw)
  To: Jens Freimann; +Cc: Christian Borntraeger, Alexander Graf, qemu-devel

On Thu, 12 Mar 2015 13:53:48 +0100
Jens Freimann <jfrei@linux.vnet.ibm.com> wrote:

> Conny, Alex, Christian,
> 
> a few more s390 patches:
> 
> Patch 1: encapsulates the HAS_DEVICE check into a generic function
> Patch 2: use the function introduced in Patch 1
> Patch 3: introduces two new machine options for indicating the state of
>          AES/DEA key wrapping functions
> Patch 4 and 5: remove dead code
> Patch 6: fill in length for sei_nt2 event
> 
> regards
> Jens
> 
> Dominik Dingel (3):
>   kvm: encapsulate HAS_DEVICE for vm attrs
>   s390x/kvm: make use of generic vm attribute check
>   s390x/ipl: remove dead code
> 
> Frank Blaschka (1):
>   s390x/pci: fix length in sei_nt2 event
> 
> Thomas Huth (1):
>   s390x/virtio-bus: Remove unused function s390_virtio_bus_console()
> 
> Tony Krowiak (1):
>   s390x: CPACF: Handle key wrap machine options
> 
>  hw/s390x/ipl.c             |  3 --
>  hw/s390x/s390-pci-bus.c    |  1 +
>  hw/s390x/s390-virtio-bus.c |  5 ---
>  hw/s390x/s390-virtio-bus.h |  1 -
>  hw/s390x/s390-virtio-ccw.c | 63 +++++++++++++++++++++++++++++++
>  include/sysemu/kvm.h       | 12 ++++++
>  kvm-all.c                  | 21 +++++++++++
>  qemu-options.hx            | 12 +++++-
>  target-s390x/kvm.c         | 93 +++++++++++++++++++++++++++++-----------------
>  9 files changed, 166 insertions(+), 45 deletions(-)
> 

FWIW, there were some trivial conflicts with the machine state stuff,
which I fixed up.

Applied to my s390-next branch.

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2015-03-13 10:09 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-03-12 12:53 [Qemu-devel] [PATCH 0/6] [PREVIEW] s390x/kvm: fixes and features Jens Freimann
2015-03-12 12:53 ` [Qemu-devel] [PATCH 1/6] kvm: encapsulate HAS_DEVICE for vm attrs Jens Freimann
2015-03-12 16:47   ` Paolo Bonzini
2015-03-12 12:53 ` [Qemu-devel] [PATCH 2/6] s390x/kvm: make use of generic vm attribute check Jens Freimann
2015-03-12 12:53 ` [Qemu-devel] [PATCH 3/6] s390x: CPACF: Handle key wrap machine options Jens Freimann
2015-03-12 12:53 ` [Qemu-devel] [PATCH 4/6] s390x/virtio-bus: Remove unused function s390_virtio_bus_console() Jens Freimann
2015-03-12 12:53 ` [Qemu-devel] [PATCH 5/6] s390x/ipl: remove dead code Jens Freimann
2015-03-12 12:53 ` [Qemu-devel] [PATCH 6/6] s390x/pci: fix length in sei_nt2 event Jens Freimann
2015-03-12 13:51 ` [Qemu-devel] [PATCH 0/6] [PREVIEW] s390x/kvm: fixes and features Jens Freimann
2015-03-13 10:09 ` Cornelia Huck

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.