From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:46383) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QBtiK-0004QZ-Q2 for qemu-devel@nongnu.org; Mon, 18 Apr 2011 15:02:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QBtiJ-0002df-KK for qemu-devel@nongnu.org; Mon, 18 Apr 2011 15:02:24 -0400 Received: from hall.aurel32.net ([88.191.126.93]:42669) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QBtiJ-0002db-Ea for qemu-devel@nongnu.org; Mon, 18 Apr 2011 15:02:23 -0400 Date: Mon, 18 Apr 2011 21:02:21 +0200 From: Aurelien Jarno Message-ID: <20110418190221.GJ16178@volta.aurel32.net> References: <1302881578-5357-1-git-send-email-agraf@suse.de> <1302881578-5357-10-git-send-email-agraf@suse.de> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15 Content-Disposition: inline In-Reply-To: <1302881578-5357-10-git-send-email-agraf@suse.de> Subject: Re: [Qemu-devel] [PATCH 09/17] s390x: virtio machine storage keys List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Alexander Graf Cc: peter.maydell@linaro.org, QEMU-devel Developers , Richard Henderson On Fri, Apr 15, 2011 at 05:32:50PM +0200, Alexander Graf wrote: > For emulation (and migration) we need to know about the guest's storage keys. > These are separate from actual RAM contents, so we need to allocate them in > parallel to RAM. > > While touching the file, this patch also adjusts the hypercall function > to a new syntax that aligns better with tcg emulated code. > > Signed-off-by: Alexander Graf > --- > hw/s390-virtio.c | 21 +++++++++------------ > 1 files changed, 9 insertions(+), 12 deletions(-) Thanks, applied. > diff --git a/hw/s390-virtio.c b/hw/s390-virtio.c > index 48fb0d0..698ff6f 100644 > --- a/hw/s390-virtio.c > +++ b/hw/s390-virtio.c > @@ -82,13 +82,12 @@ CPUState *s390_cpu_addr2state(uint16_t cpu_addr) > return ipi_states[cpu_addr]; > } > > -int s390_virtio_hypercall(CPUState *env, uint64_t mem_, uint64_t hypercall) > +int s390_virtio_hypercall(CPUState *env, uint64_t mem, uint64_t hypercall) > { > int r = 0, i; > - target_ulong mem = env->regs[2]; > > - dprintf("KVM hypercall: %ld\n", env->regs[1]); > - switch (env->regs[1]) { > + dprintf("KVM hypercall: %ld\n", hypercall); > + switch (hypercall) { > case KVM_S390_VIRTIO_NOTIFY: > if (mem > ram_size) { > VirtIOS390Device *dev = s390_virtio_bus_find_vring(s390_bus, > @@ -128,8 +127,7 @@ int s390_virtio_hypercall(CPUState *env, uint64_t mem_, uint64_t hypercall) > break; > } > > - env->regs[2] = r; > - return 0; > + return r; > } > > /* PC hardware initialisation */ > @@ -145,14 +143,9 @@ static void s390_init(ram_addr_t ram_size, > ram_addr_t kernel_size = 0; > ram_addr_t initrd_offset; > ram_addr_t initrd_size = 0; > + uint8_t *storage_keys; > int i; > > - /* XXX we only work on KVM for now */ > - > - if (!kvm_enabled()) { > - fprintf(stderr, "The S390 target only works with KVM enabled\n"); > - exit(1); > - } > > /* get a BUS */ > s390_bus = s390_virtio_bus_init(&ram_size); > @@ -161,6 +154,9 @@ static void s390_init(ram_addr_t ram_size, > ram_addr = qemu_ram_alloc(NULL, "s390.ram", ram_size); > cpu_register_physical_memory(0, ram_size, ram_addr); > > + /* allocate storage keys */ > + storage_keys = qemu_mallocz(ram_size / TARGET_PAGE_SIZE); > + > /* init CPUs */ > if (cpu_model == NULL) { > cpu_model = "host"; > @@ -178,6 +174,7 @@ static void s390_init(ram_addr_t ram_size, > ipi_states[i] = tmp_env; > tmp_env->halted = 1; > tmp_env->exception_index = EXCP_HLT; > + tmp_env->storage_keys = storage_keys; > } > > env->halted = 0; > -- > 1.6.0.2 > > > -- Aurelien Jarno GPG: 1024D/F1BCDB73 aurelien@aurel32.net http://www.aurel32.net