OSDN Git Service

Merge tag 'nmiforkvm' of git://git.kernel.org/pub/scm/linux/kernel/git/kvms390/linux...
authorChristian Borntraeger <borntraeger@de.ibm.com>
Wed, 28 Jun 2017 10:42:02 +0000 (12:42 +0200)
committerChristian Borntraeger <borntraeger@de.ibm.com>
Wed, 28 Jun 2017 10:42:02 +0000 (12:42 +0200)
s390,kvm: provide plumbing for machines checks when running guests

This provides the basic plumbing for handling machine checks when
running guests

1  2 
arch/s390/include/asm/kvm_host.h
arch/s390/kernel/entry.S
arch/s390/kvm/kvm-s390.c

@@@ -107,8 -105,22 +107,22 @@@ struct esca_block 
        __u64   mcn[4];
        __u64   reserved2[20];
        struct esca_entry cpu[KVM_S390_ESCA_CPU_SLOTS];
 -} __packed;
 +};
  
+ /*
+  * This struct is used to store some machine check info from lowcore
+  * for machine checks that happen while the guest is running.
+  * This info in host's lowcore might be overwritten by a second machine
+  * check from host when host is in the machine check's high-level handling.
+  * The size is 24 bytes.
+  */
+ struct mcck_volatile_info {
+       __u64 mcic;
+       __u64 failing_storage_address;
+       __u32 ext_damage_code;
+       __u32 reserved;
+ };
  #define CPUSTAT_STOPPED    0x80000000
  #define CPUSTAT_WAIT       0x10000000
  #define CPUSTAT_ECALL_PEND 0x08000000
@@@ -266,10 -278,11 +280,11 @@@ struct kvm_s390_itdb 
  
  struct sie_page {
        struct kvm_s390_sie_block sie_block;
-       __u8 reserved200[1024];         /* 0x0200 */
+       struct mcck_volatile_info mcck_info;    /* 0x0200 */
+       __u8 reserved218[1000];         /* 0x0218 */
        struct kvm_s390_itdb itdb;      /* 0x0600 */
        __u8 reserved700[2304];         /* 0x0700 */
 -} __packed;
 +};
  
  struct kvm_vcpu_stat {
        u64 exit_userspace;
Simple merge
Simple merge