* [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.