[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 08/15] s390x: virtio machine storage keys
From: |
Aurelien Jarno |
Subject: |
Re: [Qemu-devel] [PATCH 08/15] s390x: virtio machine storage keys |
Date: |
Sun, 10 Apr 2011 22:41:10 +0200 |
User-agent: |
Mutt/1.5.20 (2009-06-14) |
On Mon, Apr 04, 2011 at 04:32:17PM +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(-)
>
> diff --git a/hw/s390-virtio.c b/hw/s390-virtio.c
> index 850422f..be2c80c 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)
> +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)
> 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;
Reviewed-by: Aurelien Jarno <address@hidden>
--
Aurelien Jarno GPG: 1024D/F1BCDB73
address@hidden http://www.aurel32.net
- Re: [Qemu-devel] [PATCH 15/15] tcg: use ext op for deposit, (continued)
[Qemu-devel] [PATCH 07/15] s390x: Adjust GDB stub, Alexander Graf, 2011/04/04
[Qemu-devel] [PATCH 02/15] s390x: set alignment for long to 8, Alexander Graf, 2011/04/04
[Qemu-devel] [PATCH 04/15] linux-user: define a couple of syscalls for non-uid16 targets, Alexander Graf, 2011/04/04
[Qemu-devel] [PATCH 14/15] s390x: build s390x by default, Alexander Graf, 2011/04/04
[Qemu-devel] [PATCH 08/15] s390x: virtio machine storage keys, Alexander Graf, 2011/04/04
- Re: [Qemu-devel] [PATCH 08/15] s390x: virtio machine storage keys,
Aurelien Jarno <=
[Qemu-devel] [PATCH 12/15] s390x: Adjust internal kvm code, Alexander Graf, 2011/04/04
[Qemu-devel] [PATCH 10/15] s390x: helper functions for system emulation, Alexander Graf, 2011/04/04
[Qemu-devel] [PATCH 03/15] s390x: s390x-linux-user support, Alexander Graf, 2011/04/04
[Qemu-devel] [PATCH 11/15] s390x: Implement opcode helpers, Alexander Graf, 2011/04/04
[Qemu-devel] [PATCH 09/15] s390x: Prepare cpu.h for emulation, Alexander Graf, 2011/04/04