1. 27 4月, 2008 2 次提交
    • C
      s390: KVM guest: virtio device support, and kvm hypercalls · e976a2b9
      Christian Borntraeger 提交于
      This patch implements kvm guest kernel support for paravirtualized devices
      and contains two parts:
      o a basic virtio stub using virtio_ring and external interrupts and hypercalls
      o full hypercall implementation in kvm_para.h
      
      Currently we dont have PCI on s390. Making virtio_pci usable for s390 seems
      more complicated that providing an own stub. This virtio stub is similar to
      the lguest one, the memory for the descriptors and the device detection is made
      via additional mapped memory on top of the guest storage. We use an external
      interrupt with extint code 0x2603 for host->guest notification.
      
      The hypercall definition uses the diag instruction for issuing a hypercall. The
      parameters are written in R2-R7, the hypercall number is written in R1. This is
      similar to the system call ABI (svc) which can use R1 for the number and R2-R6
      for the parameters.
      Signed-off-by: NChristian Borntraeger <borntraeger@de.ibm.com>
      Acked-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      Signed-off-by: NCarsten Otte <cotte@de.ibm.com>
      Signed-off-by: NAvi Kivity <avi@qumranet.com>
      e976a2b9
    • H
      KVM: s390: arch backend for the kvm kernel module · b0c632db
      Heiko Carstens 提交于
      This patch contains the port of Qumranet's kvm kernel module to IBM zSeries
       (aka s390x, mainframe) architecture. It uses the mainframe's virtualization
      instruction SIE to run virtual machines with up to 64 virtual CPUs each.
      This port is only usable on 64bit host kernels, and can only run 64bit guest
      kernels. However, running 31bit applications in guest userspace is possible.
      
      The following source files are introduced by this patch
      arch/s390/kvm/kvm-s390.c    similar to arch/x86/kvm/x86.c, this implements all
                                  arch callbacks for kvm. __vcpu_run calls back into
                                  sie64a to enter the guest machine context
      arch/s390/kvm/sie64a.S      assembler function sie64a, which enters guest
                                  context via SIE, and switches world before and after                            that
      include/asm-s390/kvm_host.h contains all vital data structures needed to run
                                  virtual machines on the mainframe
      include/asm-s390/kvm.h      defines kvm_regs and friends for user access to
                                  guest register content
      arch/s390/kvm/gaccess.h     functions similar to uaccess to access guest memory
      arch/s390/kvm/kvm-s390.h    header file for kvm-s390 internals, extended by
                                  later patches
      Acked-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      Signed-off-by: NChristian Borntraeger <borntraeger@de.ibm.com>
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NCarsten Otte <cotte@de.ibm.com>
      Signed-off-by: NAvi Kivity <avi@qumranet.com>
      b0c632db