mirror of
https://github.com/qemu/qemu.git
synced 2024-11-29 14:53:35 +08:00
432d268c05
On IA32 host or IA32 PAE host, at present, generally, we can't create an HVM guest with more than 2G memory, because generally it's almost impossible for Qemu to find a large enough and consecutive virtual address space to map an HVM guest's whole physical address space. The attached patch fixes this issue using dynamic mapping based on little blocks of memory. Each call to qemu_get_ram_ptr makes a call to qemu_map_cache with the lock option, so mapcache will not unmap these ram_ptr. Blocks that do not belong to the RAM, but usually to a device ROM or to a framebuffer, are handled in a separate function. So the whole RAMBlock can be map. Signed-off-by: Jun Nakajima <jun.nakajima@intel.com> Signed-off-by: Anthony PERARD <anthony.perard@citrix.com> Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Signed-off-by: Alexander Graf <agraf@suse.de>
45 lines
773 B
C
45 lines
773 B
C
/*
|
|
* Copyright (C) 2011 Citrix Ltd.
|
|
*
|
|
* This work is licensed under the terms of the GNU GPL, version 2. See
|
|
* the COPYING file in the top-level directory.
|
|
*
|
|
*/
|
|
|
|
#include "config.h"
|
|
|
|
#include "exec-all.h"
|
|
#include "qemu-common.h"
|
|
#include "cpu-common.h"
|
|
#include "xen-mapcache.h"
|
|
|
|
void qemu_map_cache_init(void)
|
|
{
|
|
}
|
|
|
|
uint8_t *qemu_map_cache(target_phys_addr_t phys_addr, target_phys_addr_t size, uint8_t lock)
|
|
{
|
|
return qemu_get_ram_ptr(phys_addr);
|
|
}
|
|
|
|
void qemu_map_cache_unlock(void *buffer)
|
|
{
|
|
}
|
|
|
|
ram_addr_t qemu_ram_addr_from_mapcache(void *ptr)
|
|
{
|
|
return -1;
|
|
}
|
|
|
|
void qemu_invalidate_map_cache(void)
|
|
{
|
|
}
|
|
|
|
void qemu_invalidate_entry(uint8_t *buffer)
|
|
{
|
|
}
|
|
uint8_t *xen_map_block(target_phys_addr_t phys_addr, target_phys_addr_t size)
|
|
{
|
|
return NULL;
|
|
}
|