From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NCzD6-0004PB-1N for qemu-devel@nongnu.org; Tue, 24 Nov 2009 12:29:52 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1NCzD0-0004JL-1d for qemu-devel@nongnu.org; Tue, 24 Nov 2009 12:29:50 -0500 Received: from [199.232.76.173] (port=46413 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NCzCz-0004Ir-Oi for qemu-devel@nongnu.org; Tue, 24 Nov 2009 12:29:45 -0500 Received: from cantor2.suse.de ([195.135.220.15]:48940 helo=mx2.suse.de) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NCzCy-00021C-Nn for qemu-devel@nongnu.org; Tue, 24 Nov 2009 12:29:45 -0500 From: Alexander Graf Date: Tue, 24 Nov 2009 18:29:28 +0100 Message-Id: <1259083781-14642-1-git-send-email-agraf@suse.de> Subject: [Qemu-devel] [PATCH 00/13] S390x KVM support v4 List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Carsten Otte , Aurelien Jarno While S390x was one of the first targets that were supported by KVM it always lacked qemu system emulation support. In order to change that sad fact, I figured I'd just take on the task myself, taking kuli (http://www.ibm.com/developerworks/linux/linux390/kuli.html), Documentation/s390/kvm.txt and lguest as starting points to write a clean, qemu'ish S390x Virtio machine emulation. So now you can run Linux VMs on Linux on z/VM on LPAR on zSeries! This is the resulting code. Please comment on things you like and also on the ones you don't :-). The patchset is based on Uli's S390x userspace emulation patches. There's not really that much shared functionality, but I didn't want to reimplement the configure wheels. So make sure to have his patches applied first. Please only run S390x system virtualization using io threads. S390x has very few intercepts and even less that actually reach userspace. So you'll end up with a non-responsive VM without a dedicated IO thread. Use: $ ./configure --target-list=s390x-softmmu --enable-io-thread Currently only -kernel, -initrd and friends work. Booting from a real dasd device is not supported. Also to actually run this code you need a patch for an ugly bug in the kernel module that Carsten sent a patch to on the ML. I verified that the userspace actually works on a 2.6.27 (SLES11) kernel, so if it doesn't work on current git, please tell me! I'm too afraid that I might end up in a 3270 terminal to update the kernel on my z/VM instance :-). ##### WARNING ##### Apparently the qemu review process has scared off yet another developer for now. So I'm sending this patchset without relying on Uli's set but rather implemented small stubs for TCG host and TCG guest support, so we can run on KVM. He promised me to send it again "soon" - whenever that is. These stubs don't serve any purpose but to get KVM running, so you get no x86 on S390X or S390X on x86 for now! ################## v1 -> v2: - use new kvm_run variables - use DO_UPCAST - add bridge device for "info qtree" v2 -> v3: - move memory allocation logic to qemu_ram_alloc v3 -> v4: - minor bugfixes - adjust to more recent qdev nic code - zipl loader - include fake emulation series Alexander Graf (13): S/390 CPU fake emulation S/390 host/target build system support S/390 fake TCG implementation Add KVM support for S390x Allocate physical memory in low virtual address space Add support for S390x system emulation Add S390x virtio machine bus Add S390x virtio machine description S390 GDB stub Implement early printk in virtio-console Set default console to virtio on S390x Add zipl bootloader interpreter Add S390 maintainer information MAINTAINERS | 3 + Makefile.target | 2 + configure | 24 ++- cpu-exec.c | 2 + dyngen-exec.h | 2 +- exec.c | 6 + gdbstub.c | 52 ++++ hw/s390-virtio-bus.c | 385 ++++++++++++++++++++++++++++++ hw/s390-virtio-bus.h | 65 +++++ hw/s390-virtio.c | 248 ++++++++++++++++++++ hw/s390-zipl.c | 233 +++++++++++++++++++ hw/virtio-console.c | 7 + hw/virtio-console.h | 2 + target-s390x/cpu.h | 269 +++++++++++++++++++++ target-s390x/exec.h | 56 +++++ target-s390x/helper.c | 84 +++++++ target-s390x/kvm.c | 463 +++++++++++++++++++++++++++++++++++++ target-s390x/machine.c | 30 +++ target-s390x/op_helper.c | 74 ++++++ target-s390x/translate.c | 57 +++++ tcg/s390/tcg-target.c | 103 ++++++++ tcg/s390/tcg-target.h | 48 ++++ vl.c | 26 ++ 23 files changed, 2233 insertions(+), 8 deletions(-) create mode 100644 default-configs/s390x-softmmu.mak create mode 100644 hw/s390-virtio-bus.c create mode 100644 hw/s390-virtio-bus.h create mode 100644 hw/s390-virtio.c create mode 100644 hw/s390-zipl.c create mode 100644 target-s390x/cpu.h create mode 100644 target-s390x/exec.h create mode 100644 target-s390x/helper.c create mode 100644 target-s390x/kvm.c create mode 100644 target-s390x/machine.c create mode 100644 target-s390x/op_helper.c create mode 100644 target-s390x/translate.c create mode 100644 tcg/s390/tcg-target.c create mode 100644 tcg/s390/tcg-target.h