History

Merge tag 'kvm-s390-next-20150318' of git://git.kernel.org/pub/scm/linux/kernel/git/kvms390/linux into queue

KVM: s390: Features and fixes for 4.1 (kvm/next) 1. Fixes 2. Implement access register mode in KVM 3. Provide a userspace post handler for the STSI instruction 4. Provide an interface for compliant memory accesses 5. Provide an interface for getting/setting the guest storage key 6. Fixup for the vector facility patches: do not announce the vector facility in the guest for old QEMUs. 1-5 were initially shown as RFC in http://www.spinics.net/lists/kvm/msg114720.html some small review changes - added some ACKs - have the AR mode patches first - get rid of unnecessary AR_INVAL define - typos and language 6. two new patches The two new patches fixup the vector support patches that were introduced in the last pull request for QEMU versions that dont know about vector support and guests that do. (We announce the facility bit, but dont enable the facility so vector aware guests will crash on vector instructions).

Marcelo Tosatti committed 11 years ago

Commit bbf4aef2 parents 0a4e6be 18280d811 files · +752 −124Browse files

Showing the changes to include/uapi (1 of 11 files). Show all

Unified · Split

include/uapi/linux/kvm.h+46−0
@@ -147,6 +147,16 @@ struct kvm_pit_config { · 146 unmodified lines
147147
148148 #define KVM_PIT_SPEAKER_DUMMY 1
149149
150+struct kvm_s390_skeys {
151+ __u64 start_gfn;
152+ __u64 count;
153+ __u64 skeydata_addr;
154+ __u32 flags;
155+ __u32 reserved[9];
156+};
157+#define KVM_S390_GET_SKEYS_NONE 1
158+#define KVM_S390_SKEYS_MAX 1048576
159+
150160 #define KVM_EXIT_UNKNOWN 0
151161 #define KVM_EXIT_EXCEPTION 1
152162 #define KVM_EXIT_IO 2
@@ -172,6 +182,7 @@ struct kvm_pit_config { · 19 unmodified lines
172182 #define KVM_EXIT_S390_TSCH 22
173183 #define KVM_EXIT_EPR 23
174184 #define KVM_EXIT_SYSTEM_EVENT 24
185+#define KVM_EXIT_S390_STSI 25
175186
176187 /* For KVM_EXIT_INTERNAL_ERROR */
177188 /* Emulate instruction failed. */
@@ -309,6 +320,15 @@ struct kvm_run { · 131 unmodified lines
309320 __u32 type;
310321 __u64 flags;
311322 } system_event;
323+ /* KVM_EXIT_S390_STSI */
324+ struct {
325+ __u64 addr;
326+ __u8 ar;
327+ __u8 reserved;
328+ __u8 fc;
329+ __u8 sel1;
330+ __u16 sel2;
331+ } s390_stsi;
312332 /* Fix the size of the union. */
313333 char padding[256];
314334 };
@@ -365,6 +385,24 @@ struct kvm_translation { · 50 unmodified lines
365385 __u8 pad[5];
366386 };
367387
388+/* for KVM_S390_MEM_OP */
389+struct kvm_s390_mem_op {
390+ /* in */
391+ __u64 gaddr; /* the guest address */
392+ __u64 flags; /* flags */
393+ __u32 size; /* amount of bytes */
394+ __u32 op; /* type of operation */
395+ __u64 buf; /* buffer in userspace */
396+ __u8 ar; /* the access register number */
397+ __u8 reserved[31]; /* should be set to 0 */
398+};
399+/* types for kvm_s390_mem_op->op */
400+#define KVM_S390_MEMOP_LOGICAL_READ 0
401+#define KVM_S390_MEMOP_LOGICAL_WRITE 1
402+/* flags for kvm_s390_mem_op->flags */
403+#define KVM_S390_MEMOP_F_CHECK_ONLY (1ULL << 0)
404+#define KVM_S390_MEMOP_F_INJECT_EXCEPTION (1ULL << 1)
405+
368406 /* for KVM_INTERRUPT */
369407 struct kvm_interrupt {
370408 /* in */
@@ -761,6 +799,9 @@ struct kvm_ppc_smmu_info { · 390 unmodified lines
761799 #define KVM_CAP_CHECK_EXTENSION_VM 105
762800 #define KVM_CAP_S390_USER_SIGP 106
763801 #define KVM_CAP_S390_VECTOR_REGISTERS 107
802+#define KVM_CAP_S390_MEM_OP 108
803+#define KVM_CAP_S390_USER_STSI 109
804+#define KVM_CAP_S390_SKEYS 110
764805
765806 #ifdef KVM_CAP_IRQ_ROUTING
766807
@@ -1136,6 +1177,11 @@ struct kvm_s390_ucas_mapping { · 369 unmodified lines
11361177 #define KVM_ARM_VCPU_INIT _IOW(KVMIO, 0xae, struct kvm_vcpu_init)
11371178 #define KVM_ARM_PREFERRED_TARGET _IOR(KVMIO, 0xaf, struct kvm_vcpu_init)
11381179 #define KVM_GET_REG_LIST _IOWR(KVMIO, 0xb0, struct kvm_reg_list)
1180+/* Available with KVM_CAP_S390_MEM_OP */
1181+#define KVM_S390_MEM_OP _IOW(KVMIO, 0xb1, struct kvm_s390_mem_op)
1182+/* Available with KVM_CAP_S390_SKEYS */
1183+#define KVM_S390_GET_SKEYS _IOW(KVMIO, 0xb2, struct kvm_s390_skeys)
1184+#define KVM_S390_SET_SKEYS _IOW(KVMIO, 0xb3, struct kvm_s390_skeys)
11391185
11401186 #define KVM_DEV_ASSIGN_ENABLE_IOMMU (1 << 0)
11411187 #define KVM_DEV_ASSIGN_PCI_2_3 (1 << 1)

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t