Il 13/06/2013 03:02, Markus Armbruster ha scritto:
> -static void *legacy_s390_alloc(ram_addr_t size)
> +
> +static void *legacy_s390_mmap(void *vaddr, ram_addr_t size)
> {
> - void *mem;
> + return mmap(vaddr, size, PROT_EXEC | PROT_READ | PROT_WRITE,
> + MAP_FIXED | MAP_SHARED | MAP_ANONYMOUS, -1, 0);
> +}
>
> - mem = mmap((void *) 0x800000000ULL, size,
> - PROT_EXEC|PROT_READ|PROT_WRITE,
> - MAP_SHARED | MAP_ANONYMOUS | MAP_FIXED, -1, 0);
You can just turn kvm_arch_mem_alloc to kvm_arch_ram_mmap, and call it
from both kvm_mem_alloc and a new kvm_mem_remap. Then s390 can do
mmap(vaddr ? vaddr : (void *) 0x800000000ULL,
size, PROT_EXEC | PROT_READ | PROT_WRITE,
MAP_FIXED | MAP_SHARED | MAP_ANONYMOUS, -1, 0);
and other arches can still return NULL.
Paolo