Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

KVM: s390: move s390-specific structs to uapi/asm/kvm.h

While this in principle breaks the appearance of KVM_S390_* ioctls on architectures
other than s390, this seems unlikely to be a problem considering that there are
already many "struct kvm_s390_*" definitions in arch/s390/include/uapi.

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

+314 -312
+314
arch/s390/include/uapi/asm/kvm.h
··· 14 14 #define __KVM_S390 15 15 #define __KVM_HAVE_GUEST_DEBUG 16 16 17 + struct kvm_s390_skeys { 18 + __u64 start_gfn; 19 + __u64 count; 20 + __u64 skeydata_addr; 21 + __u32 flags; 22 + __u32 reserved[9]; 23 + }; 24 + 25 + #define KVM_S390_CMMA_PEEK (1 << 0) 26 + 27 + /** 28 + * kvm_s390_cmma_log - Used for CMMA migration. 29 + * 30 + * Used both for input and output. 31 + * 32 + * @start_gfn: Guest page number to start from. 33 + * @count: Size of the result buffer. 34 + * @flags: Control operation mode via KVM_S390_CMMA_* flags 35 + * @remaining: Used with KVM_S390_GET_CMMA_BITS. Indicates how many dirty 36 + * pages are still remaining. 37 + * @mask: Used with KVM_S390_SET_CMMA_BITS. Bitmap of bits to actually set 38 + * in the PGSTE. 39 + * @values: Pointer to the values buffer. 40 + * 41 + * Used in KVM_S390_{G,S}ET_CMMA_BITS ioctls. 42 + */ 43 + struct kvm_s390_cmma_log { 44 + __u64 start_gfn; 45 + __u32 count; 46 + __u32 flags; 47 + union { 48 + __u64 remaining; 49 + __u64 mask; 50 + }; 51 + __u64 values; 52 + }; 53 + 54 + #define KVM_S390_RESET_POR 1 55 + #define KVM_S390_RESET_CLEAR 2 56 + #define KVM_S390_RESET_SUBSYSTEM 4 57 + #define KVM_S390_RESET_CPU_INIT 8 58 + #define KVM_S390_RESET_IPL 16 59 + 60 + /* for KVM_S390_MEM_OP */ 61 + struct kvm_s390_mem_op { 62 + /* in */ 63 + __u64 gaddr; /* the guest address */ 64 + __u64 flags; /* flags */ 65 + __u32 size; /* amount of bytes */ 66 + __u32 op; /* type of operation */ 67 + __u64 buf; /* buffer in userspace */ 68 + union { 69 + struct { 70 + __u8 ar; /* the access register number */ 71 + __u8 key; /* access key, ignored if flag unset */ 72 + __u8 pad1[6]; /* ignored */ 73 + __u64 old_addr; /* ignored if cmpxchg flag unset */ 74 + }; 75 + __u32 sida_offset; /* offset into the sida */ 76 + __u8 reserved[32]; /* ignored */ 77 + }; 78 + }; 79 + /* types for kvm_s390_mem_op->op */ 80 + #define KVM_S390_MEMOP_LOGICAL_READ 0 81 + #define KVM_S390_MEMOP_LOGICAL_WRITE 1 82 + #define KVM_S390_MEMOP_SIDA_READ 2 83 + #define KVM_S390_MEMOP_SIDA_WRITE 3 84 + #define KVM_S390_MEMOP_ABSOLUTE_READ 4 85 + #define KVM_S390_MEMOP_ABSOLUTE_WRITE 5 86 + #define KVM_S390_MEMOP_ABSOLUTE_CMPXCHG 6 87 + 88 + /* flags for kvm_s390_mem_op->flags */ 89 + #define KVM_S390_MEMOP_F_CHECK_ONLY (1ULL << 0) 90 + #define KVM_S390_MEMOP_F_INJECT_EXCEPTION (1ULL << 1) 91 + #define KVM_S390_MEMOP_F_SKEY_PROTECTION (1ULL << 2) 92 + 93 + /* flags specifying extension support via KVM_CAP_S390_MEM_OP_EXTENSION */ 94 + #define KVM_S390_MEMOP_EXTENSION_CAP_BASE (1 << 0) 95 + #define KVM_S390_MEMOP_EXTENSION_CAP_CMPXCHG (1 << 1) 96 + 97 + struct kvm_s390_psw { 98 + __u64 mask; 99 + __u64 addr; 100 + }; 101 + 102 + /* valid values for type in kvm_s390_interrupt */ 103 + #define KVM_S390_SIGP_STOP 0xfffe0000u 104 + #define KVM_S390_PROGRAM_INT 0xfffe0001u 105 + #define KVM_S390_SIGP_SET_PREFIX 0xfffe0002u 106 + #define KVM_S390_RESTART 0xfffe0003u 107 + #define KVM_S390_INT_PFAULT_INIT 0xfffe0004u 108 + #define KVM_S390_INT_PFAULT_DONE 0xfffe0005u 109 + #define KVM_S390_MCHK 0xfffe1000u 110 + #define KVM_S390_INT_CLOCK_COMP 0xffff1004u 111 + #define KVM_S390_INT_CPU_TIMER 0xffff1005u 112 + #define KVM_S390_INT_VIRTIO 0xffff2603u 113 + #define KVM_S390_INT_SERVICE 0xffff2401u 114 + #define KVM_S390_INT_EMERGENCY 0xffff1201u 115 + #define KVM_S390_INT_EXTERNAL_CALL 0xffff1202u 116 + /* Anything below 0xfffe0000u is taken by INT_IO */ 117 + #define KVM_S390_INT_IO(ai,cssid,ssid,schid) \ 118 + (((schid)) | \ 119 + ((ssid) << 16) | \ 120 + ((cssid) << 18) | \ 121 + ((ai) << 26)) 122 + #define KVM_S390_INT_IO_MIN 0x00000000u 123 + #define KVM_S390_INT_IO_MAX 0xfffdffffu 124 + #define KVM_S390_INT_IO_AI_MASK 0x04000000u 125 + 126 + 127 + struct kvm_s390_interrupt { 128 + __u32 type; 129 + __u32 parm; 130 + __u64 parm64; 131 + }; 132 + 133 + struct kvm_s390_io_info { 134 + __u16 subchannel_id; 135 + __u16 subchannel_nr; 136 + __u32 io_int_parm; 137 + __u32 io_int_word; 138 + }; 139 + 140 + struct kvm_s390_ext_info { 141 + __u32 ext_params; 142 + __u32 pad; 143 + __u64 ext_params2; 144 + }; 145 + 146 + struct kvm_s390_pgm_info { 147 + __u64 trans_exc_code; 148 + __u64 mon_code; 149 + __u64 per_address; 150 + __u32 data_exc_code; 151 + __u16 code; 152 + __u16 mon_class_nr; 153 + __u8 per_code; 154 + __u8 per_atmid; 155 + __u8 exc_access_id; 156 + __u8 per_access_id; 157 + __u8 op_access_id; 158 + #define KVM_S390_PGM_FLAGS_ILC_VALID 0x01 159 + #define KVM_S390_PGM_FLAGS_ILC_0 0x02 160 + #define KVM_S390_PGM_FLAGS_ILC_1 0x04 161 + #define KVM_S390_PGM_FLAGS_ILC_MASK 0x06 162 + #define KVM_S390_PGM_FLAGS_NO_REWIND 0x08 163 + __u8 flags; 164 + __u8 pad[2]; 165 + }; 166 + 167 + struct kvm_s390_prefix_info { 168 + __u32 address; 169 + }; 170 + 171 + struct kvm_s390_extcall_info { 172 + __u16 code; 173 + }; 174 + 175 + struct kvm_s390_emerg_info { 176 + __u16 code; 177 + }; 178 + 179 + #define KVM_S390_STOP_FLAG_STORE_STATUS 0x01 180 + struct kvm_s390_stop_info { 181 + __u32 flags; 182 + }; 183 + 184 + struct kvm_s390_mchk_info { 185 + __u64 cr14; 186 + __u64 mcic; 187 + __u64 failing_storage_address; 188 + __u32 ext_damage_code; 189 + __u32 pad; 190 + __u8 fixed_logout[16]; 191 + }; 192 + 193 + struct kvm_s390_irq { 194 + __u64 type; 195 + union { 196 + struct kvm_s390_io_info io; 197 + struct kvm_s390_ext_info ext; 198 + struct kvm_s390_pgm_info pgm; 199 + struct kvm_s390_emerg_info emerg; 200 + struct kvm_s390_extcall_info extcall; 201 + struct kvm_s390_prefix_info prefix; 202 + struct kvm_s390_stop_info stop; 203 + struct kvm_s390_mchk_info mchk; 204 + char reserved[64]; 205 + } u; 206 + }; 207 + 208 + struct kvm_s390_irq_state { 209 + __u64 buf; 210 + __u32 flags; /* will stay unused for compatibility reasons */ 211 + __u32 len; 212 + __u32 reserved[4]; /* will stay unused for compatibility reasons */ 213 + }; 214 + 215 + struct kvm_s390_ucas_mapping { 216 + __u64 user_addr; 217 + __u64 vcpu_addr; 218 + __u64 length; 219 + }; 220 + 221 + struct kvm_s390_pv_sec_parm { 222 + __u64 origin; 223 + __u64 length; 224 + }; 225 + 226 + struct kvm_s390_pv_unp { 227 + __u64 addr; 228 + __u64 size; 229 + __u64 tweak; 230 + }; 231 + 232 + enum pv_cmd_dmp_id { 233 + KVM_PV_DUMP_INIT, 234 + KVM_PV_DUMP_CONFIG_STOR_STATE, 235 + KVM_PV_DUMP_COMPLETE, 236 + KVM_PV_DUMP_CPU, 237 + }; 238 + 239 + struct kvm_s390_pv_dmp { 240 + __u64 subcmd; 241 + __u64 buff_addr; 242 + __u64 buff_len; 243 + __u64 gaddr; /* For dump storage state */ 244 + __u64 reserved[4]; 245 + }; 246 + 247 + enum pv_cmd_info_id { 248 + KVM_PV_INFO_VM, 249 + KVM_PV_INFO_DUMP, 250 + }; 251 + 252 + struct kvm_s390_pv_info_dump { 253 + __u64 dump_cpu_buffer_len; 254 + __u64 dump_config_mem_buffer_per_1m; 255 + __u64 dump_config_finalize_len; 256 + }; 257 + 258 + struct kvm_s390_pv_info_vm { 259 + __u64 inst_calls_list[4]; 260 + __u64 max_cpus; 261 + __u64 max_guests; 262 + __u64 max_guest_addr; 263 + __u64 feature_indication; 264 + }; 265 + 266 + struct kvm_s390_pv_info_header { 267 + __u32 id; 268 + __u32 len_max; 269 + __u32 len_written; 270 + __u32 reserved; 271 + }; 272 + 273 + struct kvm_s390_pv_info { 274 + struct kvm_s390_pv_info_header header; 275 + union { 276 + struct kvm_s390_pv_info_dump dump; 277 + struct kvm_s390_pv_info_vm vm; 278 + }; 279 + }; 280 + 281 + enum pv_cmd_id { 282 + KVM_PV_ENABLE, 283 + KVM_PV_DISABLE, 284 + KVM_PV_SET_SEC_PARMS, 285 + KVM_PV_UNPACK, 286 + KVM_PV_VERIFY, 287 + KVM_PV_PREP_RESET, 288 + KVM_PV_UNSHARE_ALL, 289 + KVM_PV_INFO, 290 + KVM_PV_DUMP, 291 + KVM_PV_ASYNC_CLEANUP_PREPARE, 292 + KVM_PV_ASYNC_CLEANUP_PERFORM, 293 + }; 294 + 295 + struct kvm_pv_cmd { 296 + __u32 cmd; /* Command to be executed */ 297 + __u16 rc; /* Ultravisor return code */ 298 + __u16 rrc; /* Ultravisor return reason code */ 299 + __u64 data; /* Data or address */ 300 + __u32 flags; /* flags for future extensions. Must be 0 for now */ 301 + __u32 reserved[3]; 302 + }; 303 + 304 + struct kvm_s390_zpci_op { 305 + /* in */ 306 + __u32 fh; /* target device */ 307 + __u8 op; /* operation to perform */ 308 + __u8 pad[3]; 309 + union { 310 + /* for KVM_S390_ZPCIOP_REG_AEN */ 311 + struct { 312 + __u64 ibv; /* Guest addr of interrupt bit vector */ 313 + __u64 sb; /* Guest addr of summary bit */ 314 + __u32 flags; 315 + __u32 noi; /* Number of interrupts */ 316 + __u8 isc; /* Guest interrupt subclass */ 317 + __u8 sbo; /* Offset of guest summary bit vector */ 318 + __u16 pad; 319 + } reg_aen; 320 + __u64 reserved[8]; 321 + } u; 322 + }; 323 + 324 + /* types for kvm_s390_zpci_op->op */ 325 + #define KVM_S390_ZPCIOP_REG_AEN 0 326 + #define KVM_S390_ZPCIOP_DEREG_AEN 1 327 + 328 + /* flags for kvm_s390_zpci_op->u.reg_aen.flags */ 329 + #define KVM_S390_ZPCIOP_REGAEN_HOST (1 << 0) 330 + 17 331 /* Device control API: s390-specific devices */ 18 332 #define KVM_DEV_FLIC_GET_ALL_IRQS 1 19 333 #define KVM_DEV_FLIC_ENQUEUE 2
-312
include/uapi/linux/kvm.h
··· 85 85 86 86 #define KVM_PIT_SPEAKER_DUMMY 1 87 87 88 - struct kvm_s390_skeys { 89 - __u64 start_gfn; 90 - __u64 count; 91 - __u64 skeydata_addr; 92 - __u32 flags; 93 - __u32 reserved[9]; 94 - }; 95 - 96 - #define KVM_S390_CMMA_PEEK (1 << 0) 97 - 98 - /** 99 - * kvm_s390_cmma_log - Used for CMMA migration. 100 - * 101 - * Used both for input and output. 102 - * 103 - * @start_gfn: Guest page number to start from. 104 - * @count: Size of the result buffer. 105 - * @flags: Control operation mode via KVM_S390_CMMA_* flags 106 - * @remaining: Used with KVM_S390_GET_CMMA_BITS. Indicates how many dirty 107 - * pages are still remaining. 108 - * @mask: Used with KVM_S390_SET_CMMA_BITS. Bitmap of bits to actually set 109 - * in the PGSTE. 110 - * @values: Pointer to the values buffer. 111 - * 112 - * Used in KVM_S390_{G,S}ET_CMMA_BITS ioctls. 113 - */ 114 - struct kvm_s390_cmma_log { 115 - __u64 start_gfn; 116 - __u32 count; 117 - __u32 flags; 118 - union { 119 - __u64 remaining; 120 - __u64 mask; 121 - }; 122 - __u64 values; 123 - }; 124 - 125 88 struct kvm_hyperv_exit { 126 89 #define KVM_EXIT_HYPERV_SYNIC 1 127 90 #define KVM_EXIT_HYPERV_HCALL 2 ··· 278 315 __u32 ipb; 279 316 } s390_sieic; 280 317 /* KVM_EXIT_S390_RESET */ 281 - #define KVM_S390_RESET_POR 1 282 - #define KVM_S390_RESET_CLEAR 2 283 - #define KVM_S390_RESET_SUBSYSTEM 4 284 - #define KVM_S390_RESET_CPU_INIT 8 285 - #define KVM_S390_RESET_IPL 16 286 318 __u64 s390_reset_flags; 287 319 /* KVM_EXIT_S390_UCONTROL */ 288 320 struct { ··· 494 536 __u8 pad[5]; 495 537 }; 496 538 497 - /* for KVM_S390_MEM_OP */ 498 - struct kvm_s390_mem_op { 499 - /* in */ 500 - __u64 gaddr; /* the guest address */ 501 - __u64 flags; /* flags */ 502 - __u32 size; /* amount of bytes */ 503 - __u32 op; /* type of operation */ 504 - __u64 buf; /* buffer in userspace */ 505 - union { 506 - struct { 507 - __u8 ar; /* the access register number */ 508 - __u8 key; /* access key, ignored if flag unset */ 509 - __u8 pad1[6]; /* ignored */ 510 - __u64 old_addr; /* ignored if cmpxchg flag unset */ 511 - }; 512 - __u32 sida_offset; /* offset into the sida */ 513 - __u8 reserved[32]; /* ignored */ 514 - }; 515 - }; 516 - /* types for kvm_s390_mem_op->op */ 517 - #define KVM_S390_MEMOP_LOGICAL_READ 0 518 - #define KVM_S390_MEMOP_LOGICAL_WRITE 1 519 - #define KVM_S390_MEMOP_SIDA_READ 2 520 - #define KVM_S390_MEMOP_SIDA_WRITE 3 521 - #define KVM_S390_MEMOP_ABSOLUTE_READ 4 522 - #define KVM_S390_MEMOP_ABSOLUTE_WRITE 5 523 - #define KVM_S390_MEMOP_ABSOLUTE_CMPXCHG 6 524 - 525 - /* flags for kvm_s390_mem_op->flags */ 526 - #define KVM_S390_MEMOP_F_CHECK_ONLY (1ULL << 0) 527 - #define KVM_S390_MEMOP_F_INJECT_EXCEPTION (1ULL << 1) 528 - #define KVM_S390_MEMOP_F_SKEY_PROTECTION (1ULL << 2) 529 - 530 - /* flags specifying extension support via KVM_CAP_S390_MEM_OP_EXTENSION */ 531 - #define KVM_S390_MEMOP_EXTENSION_CAP_BASE (1 << 0) 532 - #define KVM_S390_MEMOP_EXTENSION_CAP_CMPXCHG (1 << 1) 533 - 534 539 /* for KVM_INTERRUPT */ 535 540 struct kvm_interrupt { 536 541 /* in */ ··· 556 635 557 636 struct kvm_mp_state { 558 637 __u32 mp_state; 559 - }; 560 - 561 - struct kvm_s390_psw { 562 - __u64 mask; 563 - __u64 addr; 564 - }; 565 - 566 - /* valid values for type in kvm_s390_interrupt */ 567 - #define KVM_S390_SIGP_STOP 0xfffe0000u 568 - #define KVM_S390_PROGRAM_INT 0xfffe0001u 569 - #define KVM_S390_SIGP_SET_PREFIX 0xfffe0002u 570 - #define KVM_S390_RESTART 0xfffe0003u 571 - #define KVM_S390_INT_PFAULT_INIT 0xfffe0004u 572 - #define KVM_S390_INT_PFAULT_DONE 0xfffe0005u 573 - #define KVM_S390_MCHK 0xfffe1000u 574 - #define KVM_S390_INT_CLOCK_COMP 0xffff1004u 575 - #define KVM_S390_INT_CPU_TIMER 0xffff1005u 576 - #define KVM_S390_INT_VIRTIO 0xffff2603u 577 - #define KVM_S390_INT_SERVICE 0xffff2401u 578 - #define KVM_S390_INT_EMERGENCY 0xffff1201u 579 - #define KVM_S390_INT_EXTERNAL_CALL 0xffff1202u 580 - /* Anything below 0xfffe0000u is taken by INT_IO */ 581 - #define KVM_S390_INT_IO(ai,cssid,ssid,schid) \ 582 - (((schid)) | \ 583 - ((ssid) << 16) | \ 584 - ((cssid) << 18) | \ 585 - ((ai) << 26)) 586 - #define KVM_S390_INT_IO_MIN 0x00000000u 587 - #define KVM_S390_INT_IO_MAX 0xfffdffffu 588 - #define KVM_S390_INT_IO_AI_MASK 0x04000000u 589 - 590 - 591 - struct kvm_s390_interrupt { 592 - __u32 type; 593 - __u32 parm; 594 - __u64 parm64; 595 - }; 596 - 597 - struct kvm_s390_io_info { 598 - __u16 subchannel_id; 599 - __u16 subchannel_nr; 600 - __u32 io_int_parm; 601 - __u32 io_int_word; 602 - }; 603 - 604 - struct kvm_s390_ext_info { 605 - __u32 ext_params; 606 - __u32 pad; 607 - __u64 ext_params2; 608 - }; 609 - 610 - struct kvm_s390_pgm_info { 611 - __u64 trans_exc_code; 612 - __u64 mon_code; 613 - __u64 per_address; 614 - __u32 data_exc_code; 615 - __u16 code; 616 - __u16 mon_class_nr; 617 - __u8 per_code; 618 - __u8 per_atmid; 619 - __u8 exc_access_id; 620 - __u8 per_access_id; 621 - __u8 op_access_id; 622 - #define KVM_S390_PGM_FLAGS_ILC_VALID 0x01 623 - #define KVM_S390_PGM_FLAGS_ILC_0 0x02 624 - #define KVM_S390_PGM_FLAGS_ILC_1 0x04 625 - #define KVM_S390_PGM_FLAGS_ILC_MASK 0x06 626 - #define KVM_S390_PGM_FLAGS_NO_REWIND 0x08 627 - __u8 flags; 628 - __u8 pad[2]; 629 - }; 630 - 631 - struct kvm_s390_prefix_info { 632 - __u32 address; 633 - }; 634 - 635 - struct kvm_s390_extcall_info { 636 - __u16 code; 637 - }; 638 - 639 - struct kvm_s390_emerg_info { 640 - __u16 code; 641 - }; 642 - 643 - #define KVM_S390_STOP_FLAG_STORE_STATUS 0x01 644 - struct kvm_s390_stop_info { 645 - __u32 flags; 646 - }; 647 - 648 - struct kvm_s390_mchk_info { 649 - __u64 cr14; 650 - __u64 mcic; 651 - __u64 failing_storage_address; 652 - __u32 ext_damage_code; 653 - __u32 pad; 654 - __u8 fixed_logout[16]; 655 - }; 656 - 657 - struct kvm_s390_irq { 658 - __u64 type; 659 - union { 660 - struct kvm_s390_io_info io; 661 - struct kvm_s390_ext_info ext; 662 - struct kvm_s390_pgm_info pgm; 663 - struct kvm_s390_emerg_info emerg; 664 - struct kvm_s390_extcall_info extcall; 665 - struct kvm_s390_prefix_info prefix; 666 - struct kvm_s390_stop_info stop; 667 - struct kvm_s390_mchk_info mchk; 668 - char reserved[64]; 669 - } u; 670 - }; 671 - 672 - struct kvm_s390_irq_state { 673 - __u64 buf; 674 - __u32 flags; /* will stay unused for compatibility reasons */ 675 - __u32 len; 676 - __u32 reserved[4]; /* will stay unused for compatibility reasons */ 677 638 }; 678 639 679 640 /* for KVM_SET_GUEST_DEBUG */ ··· 1167 1364 struct kvm_userspace_memory_region2) 1168 1365 1169 1366 /* enable ucontrol for s390 */ 1170 - struct kvm_s390_ucas_mapping { 1171 - __u64 user_addr; 1172 - __u64 vcpu_addr; 1173 - __u64 length; 1174 - }; 1175 1367 #define KVM_S390_UCAS_MAP _IOW(KVMIO, 0x50, struct kvm_s390_ucas_mapping) 1176 1368 #define KVM_S390_UCAS_UNMAP _IOW(KVMIO, 0x51, struct kvm_s390_ucas_mapping) 1177 1369 #define KVM_S390_VCPU_FAULT _IOW(KVMIO, 0x52, unsigned long) ··· 1361 1563 #define KVM_S390_NORMAL_RESET _IO(KVMIO, 0xc3) 1362 1564 #define KVM_S390_CLEAR_RESET _IO(KVMIO, 0xc4) 1363 1565 1364 - struct kvm_s390_pv_sec_parm { 1365 - __u64 origin; 1366 - __u64 length; 1367 - }; 1368 - 1369 - struct kvm_s390_pv_unp { 1370 - __u64 addr; 1371 - __u64 size; 1372 - __u64 tweak; 1373 - }; 1374 - 1375 - enum pv_cmd_dmp_id { 1376 - KVM_PV_DUMP_INIT, 1377 - KVM_PV_DUMP_CONFIG_STOR_STATE, 1378 - KVM_PV_DUMP_COMPLETE, 1379 - KVM_PV_DUMP_CPU, 1380 - }; 1381 - 1382 - struct kvm_s390_pv_dmp { 1383 - __u64 subcmd; 1384 - __u64 buff_addr; 1385 - __u64 buff_len; 1386 - __u64 gaddr; /* For dump storage state */ 1387 - __u64 reserved[4]; 1388 - }; 1389 - 1390 - enum pv_cmd_info_id { 1391 - KVM_PV_INFO_VM, 1392 - KVM_PV_INFO_DUMP, 1393 - }; 1394 - 1395 - struct kvm_s390_pv_info_dump { 1396 - __u64 dump_cpu_buffer_len; 1397 - __u64 dump_config_mem_buffer_per_1m; 1398 - __u64 dump_config_finalize_len; 1399 - }; 1400 - 1401 - struct kvm_s390_pv_info_vm { 1402 - __u64 inst_calls_list[4]; 1403 - __u64 max_cpus; 1404 - __u64 max_guests; 1405 - __u64 max_guest_addr; 1406 - __u64 feature_indication; 1407 - }; 1408 - 1409 - struct kvm_s390_pv_info_header { 1410 - __u32 id; 1411 - __u32 len_max; 1412 - __u32 len_written; 1413 - __u32 reserved; 1414 - }; 1415 - 1416 - struct kvm_s390_pv_info { 1417 - struct kvm_s390_pv_info_header header; 1418 - union { 1419 - struct kvm_s390_pv_info_dump dump; 1420 - struct kvm_s390_pv_info_vm vm; 1421 - }; 1422 - }; 1423 - 1424 - enum pv_cmd_id { 1425 - KVM_PV_ENABLE, 1426 - KVM_PV_DISABLE, 1427 - KVM_PV_SET_SEC_PARMS, 1428 - KVM_PV_UNPACK, 1429 - KVM_PV_VERIFY, 1430 - KVM_PV_PREP_RESET, 1431 - KVM_PV_UNSHARE_ALL, 1432 - KVM_PV_INFO, 1433 - KVM_PV_DUMP, 1434 - KVM_PV_ASYNC_CLEANUP_PREPARE, 1435 - KVM_PV_ASYNC_CLEANUP_PERFORM, 1436 - }; 1437 - 1438 - struct kvm_pv_cmd { 1439 - __u32 cmd; /* Command to be executed */ 1440 - __u16 rc; /* Ultravisor return code */ 1441 - __u16 rrc; /* Ultravisor return reason code */ 1442 - __u64 data; /* Data or address */ 1443 - __u32 flags; /* flags for future extensions. Must be 0 for now */ 1444 - __u32 reserved[3]; 1445 - }; 1446 - 1447 1566 /* Available with KVM_CAP_S390_PROTECTED */ 1448 1567 #define KVM_S390_PV_COMMAND _IOWR(KVMIO, 0xc5, struct kvm_pv_cmd) 1449 1568 ··· 1535 1820 1536 1821 /* Available with KVM_CAP_S390_ZPCI_OP */ 1537 1822 #define KVM_S390_ZPCI_OP _IOW(KVMIO, 0xd1, struct kvm_s390_zpci_op) 1538 - 1539 - struct kvm_s390_zpci_op { 1540 - /* in */ 1541 - __u32 fh; /* target device */ 1542 - __u8 op; /* operation to perform */ 1543 - __u8 pad[3]; 1544 - union { 1545 - /* for KVM_S390_ZPCIOP_REG_AEN */ 1546 - struct { 1547 - __u64 ibv; /* Guest addr of interrupt bit vector */ 1548 - __u64 sb; /* Guest addr of summary bit */ 1549 - __u32 flags; 1550 - __u32 noi; /* Number of interrupts */ 1551 - __u8 isc; /* Guest interrupt subclass */ 1552 - __u8 sbo; /* Offset of guest summary bit vector */ 1553 - __u16 pad; 1554 - } reg_aen; 1555 - __u64 reserved[8]; 1556 - } u; 1557 - }; 1558 - 1559 - /* types for kvm_s390_zpci_op->op */ 1560 - #define KVM_S390_ZPCIOP_REG_AEN 0 1561 - #define KVM_S390_ZPCIOP_DEREG_AEN 1 1562 - 1563 - /* flags for kvm_s390_zpci_op->u.reg_aen.flags */ 1564 - #define KVM_S390_ZPCIOP_REGAEN_HOST (1 << 0) 1565 1823 1566 1824 /* Available with KVM_CAP_MEMORY_ATTRIBUTES */ 1567 1825 #define KVM_SET_MEMORY_ATTRIBUTES _IOW(KVMIO, 0xd2, struct kvm_memory_attributes)