[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 09/17] s390x: virtio machine storage keys
From: |
Aurelien Jarno |
Subject: |
Re: [Qemu-devel] [PATCH 09/17] s390x: virtio machine storage keys |
Date: |
Mon, 18 Apr 2011 21:02:21 +0200 |
User-agent: |
Mutt/1.5.20 (2009-06-14) |
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 <address@hidden>
> ---
> 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
address@hidden http://www.aurel32.net
- [Qemu-devel] [PATCH 00/17] s390x emulation support v4, Alexander Graf, 2011/04/15
- [Qemu-devel] [PATCH 16/17] s390x: remove compatibility cc field, Alexander Graf, 2011/04/15
- [Qemu-devel] [PATCH 04/17] linux-user: add s390x to llseek list, Alexander Graf, 2011/04/15
- [Qemu-devel] [PATCH 09/17] s390x: virtio machine storage keys, Alexander Graf, 2011/04/15
- Re: [Qemu-devel] [PATCH 09/17] s390x: virtio machine storage keys,
Aurelien Jarno <=
- [Qemu-devel] [PATCH 03/17] linux-user: define a couple of syscalls for non-uid16 targets, Alexander Graf, 2011/04/15
- [Qemu-devel] [PATCH 05/17] kvm: add kvm stub for arch specific stuff, Alexander Graf, 2011/04/15
- [Qemu-devel] [PATCH 08/17] s390x: Dispatch interrupts to KVM or the real CPU, Alexander Graf, 2011/04/15
- [Qemu-devel] [PATCH 13/17] s390x: Adjust internal kvm code, Alexander Graf, 2011/04/15
- [Qemu-devel] [PATCH 01/17] tcg: extend max tcg opcodes on 32bit, Alexander Graf, 2011/04/15