|
From: <sv...@va...> - 2015-06-12 10:54:21
|
Author: cborntra
Date: Fri Jun 12 11:54:12 2015
New Revision: 15334
Log:
add KVM_S390_MEMOP ioctl handling
Modified:
trunk/coregrind/m_syswrap/syswrap-linux.c
trunk/include/vki/vki-linux.h
Modified: trunk/coregrind/m_syswrap/syswrap-linux.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-linux.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-linux.c Fri Jun 12 11:54:12 2015
@@ -7220,6 +7220,21 @@
case VKI_KVM_RUN:
break;
+ case VKI_KVM_S390_MEM_OP: {
+ struct vki_kvm_s390_mem_op *args =
+ (struct vki_kvm_s390_mem_op *)(ARG3);
+ PRE_MEM_READ("ioctl(KVM_S390_MEM_OP)", ARG3,
+ sizeof(struct vki_kvm_s390_mem_op));
+ if (args->flags & VKI_KVM_S390_MEMOP_F_CHECK_ONLY)
+ break;
+ if (args->op == VKI_KVM_S390_MEMOP_LOGICAL_READ)
+ PRE_MEM_WRITE("ioctl(KVM_S390_MEM_OP).buf", (Addr)args->buf, args->size);
+ if (args->op == VKI_KVM_S390_MEMOP_LOGICAL_WRITE)
+ PRE_MEM_READ("ioctl(KVM_S390_MEM_OP).buf", (Addr)args->buf, args->size);
+ }
+ break;
+
+
#ifdef ENABLE_XEN
case VKI_XEN_IOCTL_PRIVCMD_HYPERCALL: {
SyscallArgs harrghs;
@@ -9614,6 +9629,16 @@
case VKI_KVM_KVMCLOCK_CTRL:
break;
+ case VKI_KVM_S390_MEM_OP: {
+ struct vki_kvm_s390_mem_op *args =
+ (struct vki_kvm_s390_mem_op *)(ARG3);
+ if (args->flags & VKI_KVM_S390_MEMOP_F_CHECK_ONLY)
+ break;
+ if (args->op == VKI_KVM_S390_MEMOP_LOGICAL_READ)
+ POST_MEM_WRITE((Addr)args->buf, args->size);
+ }
+ break;
+
#ifdef ENABLE_XEN
case VKI_XEN_IOCTL_PRIVCMD_HYPERCALL: {
SyscallArgs harrghs;
Modified: trunk/include/vki/vki-linux.h
==============================================================================
--- trunk/include/vki/vki-linux.h (original)
+++ trunk/include/vki/vki-linux.h Fri Jun 12 11:54:12 2015
@@ -3167,6 +3167,24 @@
#define VKI_KVM_NMI _VKI_IO(KVMIO, 0x9a)
#define VKI_KVM_KVMCLOCK_CTRL _VKI_IO(KVMIO, 0xad)
+struct vki_kvm_s390_mem_op {
+ /* in */
+ __vki_u64 gaddr; /* the guest address */
+ __vki_u64 flags; /* flags */
+ __vki_u32 size; /* amount of bytes */
+ __vki_u32 op; /* type of operation */
+ __vki_u64 buf; /* buffer in userspace */
+ __vki_u8 ar; /* the access register number */
+ __vki_u8 reserved[31]; /* should be set to 0 */
+};
+
+#define VKI_KVM_S390_MEMOP_LOGICAL_READ 0
+#define VKI_KVM_S390_MEMOP_LOGICAL_WRITE 1
+#define VKI_KVM_S390_MEMOP_F_CHECK_ONLY (1ULL << 0)
+#define VKI_KVM_S390_MEMOP_F_INJECT_EXCEPTION (1ULL << 1)
+
+#define VKI_KVM_S390_MEM_OP _VKI_IOW(KVMIO, 0xb1, struct vki_kvm_s390_mem_op)
+
//----------------------------------------------------------------------
// From linux-2.6/include/linux/net_stamp.h
//----------------------------------------------------------------------
|
|
From: Florian K. <fl...@ei...> - 2015-06-12 11:20:27
|
On 12.06.2015 12:54, sv...@va... wrote: > Author: cborntra > Date: Fri Jun 12 11:54:12 2015 > New Revision: 15334 > > Log: > add KVM_S390_MEMOP ioctl handling > > Modified: > trunk/coregrind/m_syswrap/syswrap-linux.c > trunk/include/vki/vki-linux.h I'd say s390 specific stuff should go to syswrap-s390-linux.c and vki-s390-linux.h, respectively. Florian |