s390 patch queue 2013-01-07
Hi Blue / Aurelien,
This is my current patch queue for s390. Please pull.
Alex
The following changes since commit 8e4a424b305e29dc0e454f52df3b35577f342975:
Blue Swirl (1):
Revert "virtio-pci: replace byte swap hack"
are available in the git repository at:
git://repo.or.cz/qemu/agraf.git s390-for-upstream
Christian Borntraeger (2):
s390: new contributions GPLv2 or later
s390: Move IPL code into a separate device
Jens Freimann (1):
s390: Add CPU reset handler
Stefan Weil (1):
s390x: Remove inline function ebcdic_put and related data from cpu.h
Viktor Mihajlovski (1):
S390: Enable -cpu help and QMP query-cpu-definitions
hw/s390-virtio.c | 104 ++++---------------------- hw/s390x/Makefile.objs | 1 + hw/s390x/ipl.c | 174 ++++++++++++++++++++++++++++++++++++++++++++ target-s390x/cpu.c | 59 ++++++++++++++- target-s390x/cpu.h | 89 ++--------------------- target-s390x/kvm.c | 15 +++- target-s390x/misc_helper.c | 81 ++++++++++++++++++++ 7 files changed, 348 insertions(+), 175 deletions(-) create mode 100644 hw/s390x/ipl.c
PATCH 1/5 s390: new contributions GPLv2 or later
From: Christian Borntraeger <[email protected]>
IBMs s390 contributions were meant to to be gplv2 or later (since we were contributing to qemu). Several of the s390 specific files link to gpl code anyway, so lets clarify the licence statement for new contributions for those files that we have touched multiple times or will likely touch again.
This patch does not touch files that mostly deal with tcg.
--- target-s390x/cpu.h | 5 ++++- target-s390x/kvm.c | 6 +++++- 2 files changed, 9 insertions(+), 2 deletions(-)
target-s390x/cpu.h +4 -1
@@ -13,7 +13,10 @@* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * -* You should have received a copy of the GNU Lesser General Public +* Contributions after 2012-10-29 are licensed under the terms of the +* GNU GPL, version 2 or (at your option) any later version. +* +* You should have received a copy of the GNU (Lesser) General Public * License along with this library; if not, see <http://www.gnu.org/licenses/>. */ #ifndef CPU_S390X_H
target-s390x/kvm.c +5 -1
@@ -2,6 +2,7 @@* QEMU S390x KVM implementation * * Copyright (c) 2009 Alexander Graf <[email protected]> +* Copyright IBM Corp. 2012 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public
@@ -13,7 +14,10 @@* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * -* You should have received a copy of the GNU Lesser General Public +* Contributions after 2012-10-29 are licensed under the terms of the +* GNU GPL, version 2 or (at your option) any later version. +* +* You should have received a copy of the GNU (Lesser) General Public * License along with this library; if not, see <http://www.gnu.org/licenses/>. */
Signature · 1 line
1.6.0.2
PATCH 2/5 s390: Move IPL code into a separate device
In reply to Alexander GrafFrom: Christian Borntraeger <[email protected]>
Lets move the code to setup IPL for external kernel or via the zipl rom into a separate file. This allows to
- define a reboot handler, setting up the PSW appropriately
- enhance the boot code to IPL disks that contain a bootmap that was created with zipl under LPAR or z/VM (future patch)
- reuse that code for several machines (e.g. virtio-ccw and virtio-s390)
- allow different machines to provide different defaults
--- hw/s390-virtio.c | 98 +++------------------------ hw/s390x/Makefile.objs | 1 + hw/s390x/ipl.c | 174 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 185 insertions(+), 88 deletions(-) create mode 100644 hw/s390x/ipl.c
hw/s390-virtio.c +10 -88
@@ -25,7 +25,6 @@#include "boards.h" #include "monitor/monitor.h" #include "loader.h" -#include "elf.h" #include "hw/virtio.h" #include "hw/sysbus.h" #include "sysemu/kvm.h"
@@ -48,17 +47,6 @@#define KVM_S390_VIRTIO_RESET 1#define KVM_S390_VIRTIO_SET_STATUS 2 -#define KERN_IMAGE_START 0x010000UL -#define KERN_PARM_AREA 0x010480UL -#define INITRD_START 0x800000UL -#define INITRD_PARM_START 0x010408UL -#define INITRD_PARM_SIZE 0x010410UL -#define PARMFILE_START 0x001000UL - -#define ZIPL_START 0x009000UL -#define ZIPL_LOAD_ADDR 0x009000UL -#define ZIPL_FILENAME "s390-zipl.rom" -#define MAX_BLK_DEVS 10static VirtIOS390Bus *s390_bus;
@@ -156,15 +144,10 @@ static void s390_init(QEMUMachineInitArgs *args) {ram_addr_t my_ram_size = args->ram_size;const char *cpu_model = args->cpu_model; -const char *kernel_filename = args->kernel_filename; -const char *kernel_cmdline = args->kernel_cmdline; -const char *initrd_filename = args->initrd_filename;CPUS390XState *env =NULL ; +DeviceState *dev;MemoryRegion *sysmem =get_system_memory ();MemoryRegion *ram =g_new (MemoryRegion,1 ); -ram_addr_t kernel_size =0 ; -ram_addr_t initrd_offset; -ram_addr_t initrd_size =0 ;int shift =0 ;uint8_t *storage_keys;void *virtio_region;
@@ -185,6 +168,15 @@ static void s390_init(QEMUMachineInitArgs *args)/* get a BUS */ s390_bus =s390_virtio_bus_init (&my_ram_size);s390_sclp_init (); + dev =qdev_create (NULL ,"s390-ipl" ); +if (args->kernel_filename) { +qdev_prop_set_string (dev,"kernel" , args->kernel_filename); + } +if (args->initrd_filename) { +qdev_prop_set_string (dev,"initrd" , args->initrd_filename); + } +qdev_prop_set_string (dev,"cmdline" , args->kernel_cmdline); +qdev_init_nofail (dev);/* allocate RAM */ memory_region_init_ram (ram,"s390.ram" , my_ram_size);
@@ -225,76 +217,6 @@ static void s390_init(QEMUMachineInitArgs *args) tmp_env->storage_keys = storage_keys; } -/* One CPU has to run */ -s390_add_running_cpu (env); - -if (kernel_filename) { - - kernel_size =load_elf (kernel_filename,NULL ,NULL ,NULL ,NULL , -NULL ,1 ,ELF_MACHINE ,0 ); -if (kernel_size ==-1UL ) { - kernel_size =load_image_targphys (kernel_filename,0 , ram_size); - } -if (kernel_size ==-1UL ) { -fprintf (stderr,"qemu: could not load kernel '%s'\n" , - kernel_filename); -exit (1 ); - } -/* -* we can not rely on the ELF entry point, since up to 3.2 this -* value was 0x800 (the SALIPL loader) and it wont work. For -* all (Linux) cases 0x10000 (KERN_IMAGE_START) should be fine. -*/ - env->psw.addr =KERN_IMAGE_START ; - env->psw.mask =0x0000000180000000ULL ; - }else { -ram_addr_t bios_size =0 ; -char *bios_filename; - -/* Load zipl bootloader */ -if (bios_name ==NULL ) { - bios_name =ZIPL_FILENAME ; - } - - bios_filename =qemu_find_file (QEMU_FILE_TYPE_BIOS , bios_name); - bios_size =load_image_targphys (bios_filename,ZIPL_LOAD_ADDR ,4096 ); -g_free (bios_filename); - -if ((long )bios_size <0 ) { -hw_error ("could not load bootloader '%s'\n" , bios_name); - } - -if (bios_size >4096 ) { -hw_error ("stage1 bootloader is > 4k\n" ); - } - - env->psw.addr =ZIPL_START ; - env->psw.mask =0x0000000180000000ULL ; - } - -if (initrd_filename) { - initrd_offset =INITRD_START ; -while (kernel_size +0x100000 > initrd_offset) { - initrd_offset +=0x100000 ; - } - initrd_size =load_image_targphys (initrd_filename, initrd_offset, - ram_size - initrd_offset); -if (initrd_size ==-1UL ) { -fprintf (stderr,"qemu: could not load initrd '%s'\n" , - initrd_filename); -exit (1 ); - } - -/* we have to overwrite values in the kernel image, which are "rom" */ -stq_p (rom_ptr (INITRD_PARM_START ), initrd_offset); -stq_p (rom_ptr (INITRD_PARM_SIZE ), initrd_size); - } - -if (rom_ptr (KERN_PARM_AREA )) { -/* we have to overwrite values in the kernel image, which are "rom" */ -memcpy (rom_ptr (KERN_PARM_AREA ), kernel_cmdline, -strlen (kernel_cmdline) +1 ); - }/* Create VirtIO network adapters */ for (i =0 ; i < nb_nics; i++) {
hw/s390x/Makefile.objs +1 -0
@@ -4,3 +4,4 @@ obj-y := $(addprefix ../,$(obj-y)) obj-y += sclp.o obj-y += event-facility.o obj-y += sclpquiesce.o sclpconsole.o +obj-y += ipl.o
hw/s390x/ipl.c new file +174 -0
174 lines not on this page · raw message
Signature · 1 line
1.6.0.2
PATCH 3/5 S390: Enable -cpu help and QMP query-cpu-definitions
In reply to Alexander GrafFrom: Viktor Mihajlovski <[email protected]>
This enables qemu -cpu help to return a list of supported CPU models on s390 and also to query for cpu definitions in the monitor. Initially only cpu model = host is returned. This needs to be reworked into a full-fledged CPU model handling later on.
This change is needed to allow libvirt exploiters (like OpenStack) to specify a CPU model.
--- hw/s390-virtio.c | 6 +++++- target-s390x/cpu.c | 23 +++++++++++++++++++++++ target-s390x/cpu.h | 3 +++ 3 files changed, 31 insertions(+), 1 deletions(-)
hw/s390-virtio.c +5 -1
@@ -2,6 +2,7 @@* QEMU S390 virtio target * * Copyright (c) 2009 Alexander Graf <[email protected]> +* Copyright IBM Corp 2012 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public
@@ -13,7 +14,10 @@* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * -* You should have received a copy of the GNU Lesser General Public +* Contributions after 2012-10-29 are licensed under the terms of the +* GNU GPL, version 2 or (at your option) any later version. +* +* You should have received a copy of the GNU (Lesser) General Public * License along with this library; if not, see <http://www.gnu.org/licenses/>. */
target-s390x/cpu.c +23 -0
@@ -23,8 +23,31 @@#include "cpu.h" #include "qemu-common.h" #include "qemu/timer.h" +#include "arch_init.h" +/* generate CPU information for cpu -? */ +void s390_cpu_list (FILE *f,fprintf_function cpu_fprintf) +{ +#ifdef CONFIG_KVM + (*cpu_fprintf)(f,"s390 %16s\n" ,"host" ); +#endif +} + +CpuDefinitionInfoList *arch_query_cpu_definitions (Error **errp) +{ +CpuDefinitionInfoList *entry; +CpuDefinitionInfo *info; + + info =g_malloc0 (sizeof (*info)); + info->name =g_strdup ("host" ); + + entry =g_malloc0 (sizeof (*entry)); + entry->value = info; + +return entry; +} +/* CPUClass::reset() */ static void s390_cpu_reset (CPUState *s) {
target-s390x/cpu.h +3 -0
@@ -353,6 +353,9 @@ static inline void cpu_set_tls(CPUS390XState *env, target_ulong newtls)#define cpu_gen_code cpu_s390x_gen_code#define cpu_signal_handler cpu_s390x_signal_handler +void s390_cpu_list (FILE *f,fprintf_function cpu_fprintf); +#define cpu_list s390_cpu_list +#include "exec/exec-all.h" #ifdef CONFIG_USER_ONLY
Signature · 1 line
1.6.0.2
PATCH 4/5 s390x: Remove inline function ebcdic_put and related data from cpu.h
In reply to Alexander GrafFrom: Stefan Weil <[email protected]>
The function is only used in misc_helper.c, so move it to that file.
This reduces the size of debug executables (compiled without optimization) because they get unused code and data for each compilation which includes cpu.h.
Executables with optimization don't change their size.
ebcdic2ascii is currently unused and could be removed (not done here).
The array ascii2ebcdic must be accessed with an unsigned index, therefore (int)ascii[i] was replaced by (uint8_t)ascii[i]. The old code would have failed for a signed char less than 0. The current code only converts "QEMU" and spaces to EBCDIC, so there is no problem today.
--- target-s390x/cpu.h | 81 -------------------------------------------- target-s390x/misc_helper.c | 81 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+), 81 deletions(-)
target-s390x/cpu.h +0 -81
@@ -841,87 +841,6 @@ struct sysib_322 {#define SK_F (0x1 << 3)#define SK_ACC_MASK (0xf << 4) - -/* EBCDIC handling */ -static const uint8_t ebcdic2ascii[] = { -0x00 ,0x01 ,0x02 ,0x03 ,0x07 ,0x09 ,0x07 ,0x7F , -0x07 ,0x07 ,0x07 ,0x0B ,0x0C ,0x0D ,0x0E ,0x0F , -0x10 ,0x11 ,0x12 ,0x13 ,0x07 ,0x0A ,0x08 ,0x07 , -0x18 ,0x19 ,0x07 ,0x07 ,0x07 ,0x07 ,0x07 ,0x07 , -0x07 ,0x07 ,0x1C ,0x07 ,0x07 ,0x0A ,0x17 ,0x1B , -0x07 ,0x07 ,0x07 ,0x07 ,0x07 ,0x05 ,0x06 ,0x07 , -0x07 ,0x07 ,0x16 ,0x07 ,0x07 ,0x07 ,0x07 ,0x04 , -0x07 ,0x07 ,0x07 ,0x07 ,0x14 ,0x15 ,0x07 ,0x1A , -0x20 ,0xFF ,0x83 ,0x84 ,0x85 ,0xA0 ,0x07 ,0x86 , -0x87 ,0xA4 ,0x5B ,0x2E ,0x3C ,0x28 ,0x2B ,0x21 , -0x26 ,0x82 ,0x88 ,0x89 ,0x8A ,0xA1 ,0x8C ,0x07 , -0x8D ,0xE1 ,0x5D ,0x24 ,0x2A ,0x29 ,0x3B ,0x5E , -0x2D ,0x2F ,0x07 ,0x8E ,0x07 ,0x07 ,0x07 ,0x8F , -0x80 ,0xA5 ,0x07 ,0x2C ,0x25 ,0x5F ,0x3E ,0x3F , -0x07 ,0x90 ,0x07 ,0x07 ,0x07 ,0x07 ,0x07 ,0x07 , -0x70 ,0x60 ,0x3A ,0x23 ,0x40 ,0x27 ,0x3D ,0x22 , -0x07 ,0x61 ,0x62 ,0x63 ,0x64 ,0x65 ,0x66 ,0x67 , -0x68 ,0x69 ,0xAE ,0xAF ,0x07 ,0x07 ,0x07 ,0xF1 , -0xF8 ,0x6A ,0x6B ,0x6C ,0x6D ,0x6E ,0x6F ,0x70 , -0x71 ,0x72 ,0xA6 ,0xA7 ,0x91 ,0x07 ,0x92 ,0x07 , -0xE6 ,0x7E ,0x73 ,0x74 ,0x75 ,0x76 ,0x77 ,0x78 , -0x79 ,0x7A ,0xAD ,0xAB ,0x07 ,0x07 ,0x07 ,0x07 , -0x9B ,0x9C ,0x9D ,0xFA ,0x07 ,0x07 ,0x07 ,0xAC , -0xAB ,0x07 ,0xAA ,0x7C ,0x07 ,0x07 ,0x07 ,0x07 , -0x7B ,0x41 ,0x42 ,0x43 ,0x44 ,0x45 ,0x46 ,0x47 , -0x48 ,0x49 ,0x07 ,0x93 ,0x94 ,0x95 ,0xA2 ,0x07 , -0x7D ,0x4A ,0x4B ,0x4C ,0x4D ,0x4E ,0x4F ,0x50 , -0x51 ,0x52 ,0x07 ,0x96 ,0x81 ,0x97 ,0xA3 ,0x98 , -0x5C ,0xF6 ,0x53 ,0x54 ,0x55 ,0x56 ,0x57 ,0x58 , -0x59 ,0x5A ,0xFD ,0x07 ,0x99 ,0x07 ,0x07 ,0x07 , -0x30 ,0x31 ,0x32 ,0x33 ,0x34 ,0x35 ,0x36 ,0x37 , -0x38 ,0x39 ,0x07 ,0x07 ,0x9A ,0x07 ,0x07 ,0x07 , -}; - -static const uint8_t ascii2ebcdic [] = { -0x00 ,0x01 ,0x02 ,0x03 ,0x37 ,0x2D ,0x2E ,0x2F , -0x16 ,0x05 ,0x15 ,0x0B ,0x0C ,0x0D ,0x0E ,0x0F , -0x10 ,0x11 ,0x12 ,0x13 ,0x3C ,0x3D ,0x32 ,0x26 , -0x18 ,0x19 ,0x3F ,0x27 ,0x22 ,0x1D ,0x1E ,0x1F , -0x40 ,0x5A ,0x7F ,0x7B ,0x5B ,0x6C ,0x50 ,0x7D , -0x4D ,0x5D ,0x5C ,0x4E ,0x6B ,0x60 ,0x4B ,0x61 , -0xF0 ,0xF1 ,0xF2 ,0xF3 ,0xF4 ,0xF5 ,0xF6 ,0xF7 , -0xF8 ,0xF9 ,0x7A ,0x5E ,0x4C ,0x7E ,0x6E ,0x6F , -0x7C ,0xC1 ,0xC2 ,0xC3 ,0xC4 ,0xC5 ,0xC6 ,0xC7 , -0xC8 ,0xC9 ,0xD1 ,0xD2 ,0xD3 ,0xD4 ,0xD5 ,0xD6 , -0xD7 ,0xD8 ,0xD9 ,0xE2 ,0xE3 ,0xE4 ,0xE5 ,0xE6 , -0xE7 ,0xE8 ,0xE9 ,0xBA ,0xE0 ,0xBB ,0xB0 ,0x6D , -0x79 ,0x81 ,0x82 ,0x83 ,0x84 ,0x85 ,0x86 ,0x87 , -0x88 ,0x89 ,0x91 ,0x92 ,0x93 ,0x94 ,0x95 ,0x96 , -0x97 ,0x98 ,0x99 ,0xA2 ,0xA3 ,0xA4 ,0xA5 ,0xA6 , -0xA7 ,0xA8 ,0xA9 ,0xC0 ,0x4F ,0xD0 ,0xA1 ,0x07 , -0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F , -0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F , -0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F , -0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F , -0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F , -0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F , -0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F , -0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F , -0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F , -0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F , -0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F , -0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F , -0x3F ,0x59 ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F , -0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F , -0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F ,0x3F , -0x90 ,0x3F ,0x3F ,0x3F ,0x3F ,0xEA ,0x3F ,0xFF -}; - -static inline void ebcdic_put (uint8_t *p,const char *ascii,int len) -{ -int i; - -for (i =0 ; i < len; i++) { - p[i] = ascii2ebcdic[(int )ascii[i]]; - } -} -#define SIGP_SENSE 0x01#define SIGP_EXTERNAL_CALL 0x02#define SIGP_EMERGENCY 0x03
target-s390x/misc_helper.c +81 -0
87 lines not on this page · raw message
Signature · 1 line
1.6.0.2
PATCH 5/5 s390: Add CPU reset handler
In reply to Alexander GrafFrom: Jens Freimann <[email protected]>
Add a CPU reset handler to have all CPUs in a PoP compliant state.
--- target-s390x/cpu.c | 36 ++++++++++++++++++++++++++++++++++-- target-s390x/kvm.c | 9 ++++++++- 2 files changed, 42 insertions(+), 3 deletions(-)
target-s390x/cpu.c +34 -2
@@ -4,6 +4,7 @@* Copyright (c) 2009 Ulrich Hecht * Copyright (c) 2011 Alexander Graf * Copyright (c) 2012 SUSE LINUX Products GmbH +* Copyright (c) 2012 IBM Corp. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public
@@ -18,13 +19,20 @@* You should have received a copy of the GNU Lesser General Public * License along with this library; if not, see * <http://www.gnu.org/licenses/lgpl-2.1.html> +* Contributions after 2012-12-11 are licensed under the terms of the +* GNU GPL, version 2 or (at your option) any later version. */ #include "cpu.h" +#ifndef CONFIG_USER_ONLY +#include "hw/hw.h" +#endif #include "qemu-common.h" #include "qemu/timer.h" #include "arch_init.h" +#define CR0_RESET 0xE0UL +#define CR14_RESET 0xC2000000UL;/* generate CPU information for cpu -? */ void s390_cpu_list (FILE *f,fprintf_function cpu_fprintf)
@@ -60,14 +68,33 @@ static void s390_cpu_reset(CPUState *s)log_cpu_state (env,0 ); } +s390_del_running_cpu (env); + scc->parent_reset (s);memset (env,0 , offsetof(CPUS390XState , breakpoints)); -/* FIXME: reset vector? */ + +/* architectured initial values for CR 0 and 14 */ + env->cregs[0 ] =CR0_RESET ; + env->cregs[14 ] =CR14_RESET ; +/* set halted to 1 to make sure we can add the cpu in +* s390_ipl_cpu code, where env->halted is set back to 0 +* after incrementing the cpu counter */ +#if !defined(CONFIG_USER_ONLY ) + env->halted =1 ; +#endif tlb_flush (env,1 ); -s390_add_running_cpu (env); } +#if !defined(CONFIG_USER_ONLY ) +static void s390_cpu_machine_reset_cb (void *opaque) +{ +S390CPU *cpu = opaque; + +cpu_reset (CPU (cpu)); +} +#endif +static void s390_cpu_initfn (Object *obj) {S390CPU *cpu =S390_CPU (obj);
@@ -79,12 +106,17 @@ static void s390_cpu_initfn(Object *obj)cpu_exec_init (env);#if !defined(CONFIG_USER_ONLY ) +qemu_register_reset (s390_cpu_machine_reset_cb, cpu);qemu_get_timedate (&tm,0 ); env->tod_offset =TOD_UNIX_EPOCH + (time2tod (mktimegm (&tm)) *1000000000ULL ); env->tod_basetime =0 ; env->tod_timer =qemu_new_timer_ns (vm_clock, s390x_tod_timer, cpu); env->cpu_timer =qemu_new_timer_ns (vm_clock, s390x_cpu_timer, cpu); +/* set env->halted state to 1 to avoid decrementing the running +* cpu counter in s390_cpu_reset to a negative number at +* initial ipl */ + env->halted =1 ;#endif env->cpu_num = cpu_num++; env->ext_index =-1 ;
target-s390x/kvm.c +8 -1
@@ -89,7 +89,14 @@ int kvm_arch_init_vcpu(CPUState *cpu)void kvm_arch_reset_vcpu (CPUState *cpu) { -/* FIXME: add code to reset vcpu. */ +/* The initial reset call is needed here to reset in-kernel +* vcpu data that we can't access directly from QEMU +* (i.e. with older kernels which don't support sync_regs/ONE_REG). +* Before this ioctl cpu_synchronize_state() is called in common kvm +* code (kvm-all) */ +if (kvm_vcpu_ioctl (cpu,KVM_S390_INITIAL_RESET ,NULL )) { +perror ("Can't reset vcpu\n" ); + } }int kvm_arch_put_registers (CPUState *cs,int level)
Signature · 1 line
1.6.0.2
Quoted 3 lines · Alexander Graf
Hi Blue / Aurelien,
This is my current patch queue for s390. Please pull.
Please ignore this pull request.
Alex