mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 10:40:03 +01:00
libxc: Fix ia64 build for interface change
This patch fixes ia64 by the following method: - rename xc_handle xch - rename guest_xc xch - add xc_interface *xch to arguments of some functions - replace xc_dom_printf with macros - Add *xch argument to corresponding x86 functions [iwj] Signed-off-by: KUWAMURA Shin'ya <kuwa@jp.fujitsu.com> Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
This commit is contained in:
1 parent
a2fab4fce5
commit
ddf97d4db8
15 files changed
+231
-196
No files matched your search
@@ -28,7 +28,7 @@
|
||||
uint32_t
|
||||
xen_ia64_version(struct xc_dom_image *dom)
|
||||
{
|
||||
return xc_version(dom->guest_xc, XENVER_version, NULL);
|
||||
return xc_version(dom->xch, XENVER_version, NULL);
|
||||
}
|
||||
|
||||
int
|
||||
@@ -41,11 +41,12 @@ xen_ia64_fpswa_revision(struct xc_dom_image *dom, unsigned int *revision)
|
||||
hypercall.arg[1] = (unsigned long)revision;
|
||||
|
||||
if (lock_pages(revision, sizeof(*revision)) != 0) {
|
||||
xc_interface *xch = dom->xch;
|
||||
PERROR("Could not lock memory for xen fpswa hypercall");
|
||||
return -1;
|
||||
}
|
||||
|
||||
ret = do_xen_hypercall(dom->guest_xc, &hypercall);
|
||||
ret = do_xen_hypercall(dom->xch, &hypercall);
|
||||
|
||||
unlock_pages(revision, sizeof(*revision));
|
||||
|
||||
@@ -75,7 +76,7 @@ xen_ia64_dom_fw_map(struct xc_dom_image *dom, unsigned long mpaddr)
|
||||
unsigned long page_size = XC_DOM_PAGE_SIZE(dom);
|
||||
void* ret;
|
||||
|
||||
ret = xc_map_foreign_range(dom->guest_xc, dom->guest_domid,
|
||||
ret = xc_map_foreign_range(dom->xch, dom->guest_domid,
|
||||
page_size, PROT_READ | PROT_WRITE,
|
||||
mpaddr / page_size);
|
||||
if (ret != NULL)
|
||||
@@ -98,8 +99,9 @@ xen_ia64_is_vcpu_allocated(struct xc_dom_image *dom, uint32_t vcpu)
|
||||
|
||||
int rc;
|
||||
xc_vcpuinfo_t info;
|
||||
xc_interface *xch = dom->xch;
|
||||
|
||||
rc = xc_vcpu_getinfo(dom->guest_xc, dom->guest_domid,
|
||||
rc = xc_vcpu_getinfo(xch, dom->guest_domid,
|
||||
vcpu, &info);
|
||||
if (rc == 0)
|
||||
return 1;
|
||||
|
||||
@@ -72,7 +72,7 @@ static int vcpu_ia64(struct xc_dom_image *dom, void *ptr)
|
||||
{
|
||||
vcpu_guest_context_ia64_t *ctxt = ptr;
|
||||
|
||||
xc_dom_printf("%s: called\n", __FUNCTION__);
|
||||
DOMPRINTF_CALLED(dom->xch);
|
||||
|
||||
/* clear everything */
|
||||
memset(ctxt, 0, sizeof(*ctxt));
|
||||
|
||||
@@ -13,14 +13,14 @@
|
||||
#include <xen/hvm/params.h>
|
||||
|
||||
static int
|
||||
xc_ia64_copy_to_domain_pages(xc_interface *xc_handle, uint32_t domid, void* src_page,
|
||||
xc_ia64_copy_to_domain_pages(xc_interface *xch, uint32_t domid, void* src_page,
|
||||
unsigned long dst_pfn, int nr_pages)
|
||||
{
|
||||
// N.B. gva should be page aligned
|
||||
int i;
|
||||
|
||||
for (i = 0; i < nr_pages; i++) {
|
||||
if (xc_copy_to_domain_page(xc_handle, domid, dst_pfn + i,
|
||||
if (xc_copy_to_domain_page(xch, domid, dst_pfn + i,
|
||||
src_page + (i << PAGE_SHIFT)))
|
||||
return -1;
|
||||
}
|
||||
@@ -87,13 +87,14 @@ static int add_pal_hob(void* hob_buf);
|
||||
static int add_mem_hob(void* hob_buf, unsigned long dom_mem_size);
|
||||
static int add_vcpus_hob(void* hob_buf, unsigned long nr_vcpu);
|
||||
static int add_nvram_hob(void* hob_buf, unsigned long nvram_addr);
|
||||
static int build_hob(void* hob_buf, unsigned long hob_buf_size,
|
||||
static int build_hob(xc_interface *xch,
|
||||
void* hob_buf, unsigned long hob_buf_size,
|
||||
unsigned long dom_mem_size, unsigned long vcpus,
|
||||
unsigned long nvram_addr);
|
||||
static int load_hob(xc_interface *xc_handle,uint32_t dom, void *hob_buf);
|
||||
static int load_hob(xc_interface *xch,uint32_t dom, void *hob_buf);
|
||||
|
||||
static int
|
||||
xc_ia64_build_hob(xc_interface *xc_handle, uint32_t dom,
|
||||
xc_ia64_build_hob(xc_interface *xch, uint32_t dom,
|
||||
unsigned long memsize, unsigned long vcpus,
|
||||
unsigned long nvram_addr)
|
||||
{
|
||||
@@ -105,13 +106,13 @@ xc_ia64_build_hob(xc_interface *xc_handle, uint32_t dom,
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (build_hob(hob_buf, GFW_HOB_SIZE, memsize, vcpus, nvram_addr) < 0) {
|
||||
if (build_hob(xch, hob_buf, GFW_HOB_SIZE, memsize, vcpus, nvram_addr) < 0) {
|
||||
free(hob_buf);
|
||||
PERROR("Could not build hob");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (load_hob(xc_handle, dom, hob_buf) < 0) {
|
||||
if (load_hob(xch, dom, hob_buf) < 0) {
|
||||
free(hob_buf);
|
||||
PERROR("Could not load hob");
|
||||
return -1;
|
||||
@@ -190,7 +191,7 @@ hob_add(void* hob_start, int type, void* data, int data_size)
|
||||
}
|
||||
|
||||
static int
|
||||
get_hob_size(void* hob_buf)
|
||||
get_hob_size(xc_interface *xch, void* hob_buf)
|
||||
{
|
||||
HOB_INFO *phit = (HOB_INFO*)hob_buf;
|
||||
|
||||
@@ -202,7 +203,7 @@ get_hob_size(void* hob_buf)
|
||||
}
|
||||
|
||||
static int
|
||||
build_hob(void* hob_buf, unsigned long hob_buf_size,
|
||||
build_hob(xc_interface *xch, void* hob_buf, unsigned long hob_buf_size,
|
||||
unsigned long dom_mem_size, unsigned long vcpus,
|
||||
unsigned long nvram_addr)
|
||||
{
|
||||
@@ -239,13 +240,13 @@ err_out:
|
||||
}
|
||||
|
||||
static int
|
||||
load_hob(xc_interface *xc_handle, uint32_t dom, void *hob_buf)
|
||||
load_hob(xc_interface *xch, uint32_t dom, void *hob_buf)
|
||||
{
|
||||
// hob_buf should be page aligned
|
||||
int hob_size;
|
||||
int nr_pages;
|
||||
|
||||
hob_size = get_hob_size(hob_buf);
|
||||
hob_size = get_hob_size(xch, hob_buf);
|
||||
if (hob_size < 0) {
|
||||
PERROR("Invalid hob data");
|
||||
return -1;
|
||||
@@ -258,7 +259,7 @@ load_hob(xc_interface *xc_handle, uint32_t dom, void *hob_buf)
|
||||
|
||||
nr_pages = (hob_size + PAGE_SIZE -1) >> PAGE_SHIFT;
|
||||
|
||||
return xc_ia64_copy_to_domain_pages(xc_handle, dom, hob_buf,
|
||||
return xc_ia64_copy_to_domain_pages(xch, dom, hob_buf,
|
||||
GFW_HOB_START >> PAGE_SHIFT, nr_pages);
|
||||
}
|
||||
|
||||
@@ -529,7 +530,7 @@ add_pal_hob(void* hob_buf)
|
||||
#define VALIDATE_NVRAM_FD(x) ((1UL<<(sizeof(x)*8 - 1)) | x)
|
||||
#define IS_VALID_NVRAM_FD(x) ((uint64_t)x >> (sizeof(x)*8 - 1))
|
||||
static uint64_t
|
||||
nvram_init(const char *nvram_path)
|
||||
nvram_init(xc_interface *xch, const char *nvram_path)
|
||||
{
|
||||
uint64_t fd = 0;
|
||||
fd = open(nvram_path, O_CREAT|O_RDWR, 0644);
|
||||
@@ -545,7 +546,7 @@ nvram_init(const char *nvram_path)
|
||||
}
|
||||
|
||||
static int
|
||||
copy_from_nvram_to_GFW(xc_interface *xc_handle, uint32_t dom, int nvram_fd)
|
||||
copy_from_nvram_to_GFW(xc_interface *xch, uint32_t dom, int nvram_fd)
|
||||
{
|
||||
unsigned int nr_pages = NVRAM_SIZE >> PAGE_SHIFT;
|
||||
struct stat file_stat;
|
||||
@@ -571,7 +572,7 @@ copy_from_nvram_to_GFW(xc_interface *xc_handle, uint32_t dom, int nvram_fd)
|
||||
return -1;
|
||||
}
|
||||
|
||||
return xc_ia64_copy_to_domain_pages(xc_handle, dom, buf,
|
||||
return xc_ia64_copy_to_domain_pages(xch, dom, buf,
|
||||
NVRAM_START >> PAGE_SHIFT, nr_pages);
|
||||
}
|
||||
|
||||
@@ -579,7 +580,7 @@ copy_from_nvram_to_GFW(xc_interface *xc_handle, uint32_t dom, int nvram_fd)
|
||||
/*
|
||||
*Check is the address where NVRAM data located valid
|
||||
*/
|
||||
static int is_valid_address(void *addr)
|
||||
static int is_valid_address(xc_interface *xch, void *addr)
|
||||
{
|
||||
struct nvram_save_addr *p = (struct nvram_save_addr *)addr;
|
||||
|
||||
@@ -597,7 +598,7 @@ static int is_valid_address(void *addr)
|
||||
* can be got.
|
||||
*/
|
||||
static int
|
||||
copy_from_GFW_to_nvram(xc_interface *xc_handle, uint32_t dom, int nvram_fd)
|
||||
copy_from_GFW_to_nvram(xc_interface *xch, uint32_t dom, int nvram_fd)
|
||||
{
|
||||
xen_pfn_t *pfn_list = NULL;
|
||||
char *tmp_ptr = NULL;
|
||||
@@ -625,7 +626,7 @@ copy_from_GFW_to_nvram(xc_interface *xc_handle, uint32_t dom, int nvram_fd)
|
||||
* memory address first.
|
||||
*/
|
||||
pfn_list[0] = NVRAM_START >> PAGE_SHIFT;
|
||||
tmp_ptr = (char *)xc_map_foreign_range(xc_handle, dom, PAGE_SIZE,
|
||||
tmp_ptr = (char *)xc_map_foreign_range(xch, dom, PAGE_SIZE,
|
||||
PROT_READ | PROT_WRITE, pfn_list[0]);
|
||||
|
||||
if ( NULL == tmp_ptr )
|
||||
@@ -637,7 +638,7 @@ copy_from_GFW_to_nvram(xc_interface *xc_handle, uint32_t dom, int nvram_fd)
|
||||
}
|
||||
|
||||
/* Check is NVRAM data vaild */
|
||||
if ( !is_valid_address(tmp_ptr) )
|
||||
if ( !is_valid_address(xch, tmp_ptr) )
|
||||
{
|
||||
free(pfn_list);
|
||||
munmap(tmp_ptr, PAGE_SIZE);
|
||||
@@ -654,7 +655,7 @@ copy_from_GFW_to_nvram(xc_interface *xc_handle, uint32_t dom, int nvram_fd)
|
||||
for ( i=0; i<nr_pages; i++ )
|
||||
pfn_list[i] = (addr_from_GFW_4k_align >> PAGE_SHIFT) + i;
|
||||
|
||||
tmp_ptr = (char *)xc_map_foreign_pages(xc_handle, dom,
|
||||
tmp_ptr = (char *)xc_map_foreign_pages(xch, dom,
|
||||
PROT_READ | PROT_WRITE,
|
||||
pfn_list, nr_pages);
|
||||
if ( NULL == tmp_ptr )
|
||||
@@ -686,12 +687,12 @@ copy_from_GFW_to_nvram(xc_interface *xc_handle, uint32_t dom, int nvram_fd)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int xc_ia64_save_to_nvram(xc_interface *xc_handle, uint32_t dom)
|
||||
int xc_ia64_save_to_nvram(xc_interface *xch, uint32_t dom)
|
||||
{
|
||||
xc_dominfo_t info;
|
||||
uint64_t nvram_fd = 0;
|
||||
|
||||
if ( xc_domain_getinfo(xc_handle, dom, 1, &info) != 1 )
|
||||
if ( xc_domain_getinfo(xch, dom, 1, &info) != 1 )
|
||||
{
|
||||
PERROR("Could not get info for domain");
|
||||
return -1;
|
||||
@@ -700,12 +701,12 @@ int xc_ia64_save_to_nvram(xc_interface *xc_handle, uint32_t dom)
|
||||
if ( !info.hvm )
|
||||
return 0;
|
||||
|
||||
xc_get_hvm_param(xc_handle, dom, HVM_PARAM_NVRAM_FD, &nvram_fd);
|
||||
xc_get_hvm_param(xch, dom, HVM_PARAM_NVRAM_FD, &nvram_fd);
|
||||
|
||||
if ( !IS_VALID_NVRAM_FD(nvram_fd) )
|
||||
PERROR("Nvram not initialized. Nvram save failed!");
|
||||
else
|
||||
copy_from_GFW_to_nvram(xc_handle, dom, (int)nvram_fd);
|
||||
copy_from_GFW_to_nvram(xch, dom, (int)nvram_fd);
|
||||
|
||||
// although save to nvram maybe fail, we don't return any error number
|
||||
// to Xend. This is quite logical because damage of NVRAM on native would
|
||||
@@ -717,7 +718,7 @@ int xc_ia64_save_to_nvram(xc_interface *xc_handle, uint32_t dom)
|
||||
#define NVRAM_DIR "/var/lib/xen/nvram/"
|
||||
#define NVRAM_FILE_PREFIX "nvram_"
|
||||
|
||||
int xc_ia64_nvram_init(xc_interface *xc_handle, char *dom_name, uint32_t dom)
|
||||
int xc_ia64_nvram_init(xc_interface *xch, char *dom_name, uint32_t dom)
|
||||
{
|
||||
uint64_t nvram_fd;
|
||||
char nvram_path[PATH_MAX] = NVRAM_DIR;
|
||||
@@ -750,14 +751,14 @@ int xc_ia64_nvram_init(xc_interface *xc_handle, char *dom_name, uint32_t dom)
|
||||
strcat(nvram_path, NVRAM_FILE_PREFIX);
|
||||
strcat(nvram_path, dom_name);
|
||||
|
||||
nvram_fd = nvram_init(nvram_path);
|
||||
nvram_fd = nvram_init(xch, nvram_path);
|
||||
if ( nvram_fd == (uint64_t)(-1) )
|
||||
{
|
||||
xc_set_hvm_param(xc_handle, dom, HVM_PARAM_NVRAM_FD, 0);
|
||||
xc_set_hvm_param(xch, dom, HVM_PARAM_NVRAM_FD, 0);
|
||||
return -1;
|
||||
}
|
||||
|
||||
xc_set_hvm_param(xc_handle, dom, HVM_PARAM_NVRAM_FD, nvram_fd);
|
||||
xc_set_hvm_param(xch, dom, HVM_PARAM_NVRAM_FD, nvram_fd);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -784,7 +785,7 @@ min(unsigned long lhs, unsigned long rhs)
|
||||
}
|
||||
|
||||
static int
|
||||
xc_ia64_setup_memmap_info(xc_interface *xc_handle, uint32_t dom,
|
||||
xc_ia64_setup_memmap_info(xc_interface *xch, uint32_t dom,
|
||||
unsigned long dom_memsize, /* in bytes */
|
||||
unsigned long *pfns_special_pages,
|
||||
unsigned long nr_special_pages,
|
||||
@@ -795,7 +796,7 @@ xc_ia64_setup_memmap_info(xc_interface *xc_handle, uint32_t dom,
|
||||
efi_memory_desc_t *md;
|
||||
uint64_t nr_mds;
|
||||
|
||||
memmap_info = xc_map_foreign_range(xc_handle, dom,
|
||||
memmap_info = xc_map_foreign_range(xch, dom,
|
||||
PAGE_SIZE * memmap_info_num_pages,
|
||||
PROT_READ | PROT_WRITE,
|
||||
memmap_info_pfn);
|
||||
@@ -861,14 +862,14 @@ xc_ia64_setup_memmap_info(xc_interface *xc_handle, uint32_t dom,
|
||||
|
||||
/* setup shared_info page */
|
||||
static int
|
||||
xc_ia64_setup_shared_info(xc_interface *xc_handle, uint32_t dom,
|
||||
xc_ia64_setup_shared_info(xc_interface *xch, uint32_t dom,
|
||||
unsigned long shared_info_pfn,
|
||||
unsigned long memmap_info_pfn,
|
||||
unsigned long memmap_info_num_pages)
|
||||
{
|
||||
shared_info_t *shared_info;
|
||||
|
||||
shared_info = xc_map_foreign_range(xc_handle, dom, PAGE_SIZE,
|
||||
shared_info = xc_map_foreign_range(xch, dom, PAGE_SIZE,
|
||||
PROT_READ | PROT_WRITE,
|
||||
shared_info_pfn);
|
||||
if (shared_info == NULL) {
|
||||
@@ -891,7 +892,7 @@ xc_ia64_setup_shared_info(xc_interface *xc_handle, uint32_t dom,
|
||||
* convenient to allocate discontiguous memory with different size.
|
||||
*/
|
||||
static int
|
||||
setup_guest(xc_interface *xc_handle, uint32_t dom, unsigned long memsize,
|
||||
setup_guest(xc_interface *xch, uint32_t dom, unsigned long memsize,
|
||||
char *image, unsigned long image_size)
|
||||
{
|
||||
xen_pfn_t *pfn_list;
|
||||
@@ -949,7 +950,7 @@ setup_guest(xc_interface *xc_handle, uint32_t dom, unsigned long memsize,
|
||||
pfn++)
|
||||
pfn_list[i++] = pfn;
|
||||
|
||||
rc = xc_domain_memory_populate_physmap(xc_handle, dom, nr_pages, 0, 0,
|
||||
rc = xc_domain_memory_populate_physmap(xch, dom, nr_pages, 0, 0,
|
||||
&pfn_list[0]);
|
||||
if (rc != 0) {
|
||||
PERROR("Could not allocate normal memory for Vti guest.");
|
||||
@@ -962,7 +963,7 @@ setup_guest(xc_interface *xc_handle, uint32_t dom, unsigned long memsize,
|
||||
for (i = 0; i < GFW_PAGES; i++)
|
||||
pfn_list[i] = (GFW_START >> PAGE_SHIFT) + i;
|
||||
|
||||
rc = xc_domain_memory_populate_physmap(xc_handle, dom, GFW_PAGES,
|
||||
rc = xc_domain_memory_populate_physmap(xch, dom, GFW_PAGES,
|
||||
0, 0, &pfn_list[0]);
|
||||
if (rc != 0) {
|
||||
PERROR("Could not allocate GFW memory for Vti guest.");
|
||||
@@ -978,7 +979,7 @@ setup_guest(xc_interface *xc_handle, uint32_t dom, unsigned long memsize,
|
||||
pfn_list[nr_special_pages] = memmap_info_pfn;
|
||||
nr_special_pages++;
|
||||
|
||||
rc = xc_domain_memory_populate_physmap(xc_handle, dom, nr_special_pages,
|
||||
rc = xc_domain_memory_populate_physmap(xch, dom, nr_special_pages,
|
||||
0, 0, &pfn_list[0]);
|
||||
if (rc != 0) {
|
||||
PERROR("Could not allocate IO page or store page or buffer io page.");
|
||||
@@ -992,11 +993,11 @@ setup_guest(xc_interface *xc_handle, uint32_t dom, unsigned long memsize,
|
||||
domctl.u.arch_setup.maxmem = dom_memsize + VGA_IO_SIZE + 1 * MEM_G;
|
||||
domctl.cmd = XEN_DOMCTL_arch_setup;
|
||||
domctl.domain = (domid_t)dom;
|
||||
if (xc_domctl(xc_handle, &domctl))
|
||||
if (xc_domctl(xch, &domctl))
|
||||
goto error_out;
|
||||
|
||||
// Load guest firmware
|
||||
if (xc_ia64_copy_to_domain_pages(xc_handle, dom, image,
|
||||
if (xc_ia64_copy_to_domain_pages(xch, dom, image,
|
||||
(GFW_START + GFW_SIZE - image_size) >> PAGE_SHIFT,
|
||||
image_size >> PAGE_SHIFT)) {
|
||||
PERROR("Could not load guest firmware into domain");
|
||||
@@ -1005,28 +1006,28 @@ setup_guest(xc_interface *xc_handle, uint32_t dom, unsigned long memsize,
|
||||
|
||||
domctl.cmd = XEN_DOMCTL_getdomaininfo;
|
||||
domctl.domain = (domid_t)dom;
|
||||
if (xc_domctl(xc_handle, &domctl) < 0) {
|
||||
if (xc_domctl(xch, &domctl) < 0) {
|
||||
PERROR("Could not get info on domain");
|
||||
goto error_out;
|
||||
}
|
||||
|
||||
if (xc_ia64_setup_memmap_info(xc_handle, dom, dom_memsize,
|
||||
if (xc_ia64_setup_memmap_info(xch, dom, dom_memsize,
|
||||
pfn_list, nr_special_pages,
|
||||
memmap_info_pfn, memmap_info_num_pages)) {
|
||||
PERROR("Could not build memmap info");
|
||||
goto error_out;
|
||||
}
|
||||
if (xc_ia64_setup_shared_info(xc_handle, dom,
|
||||
if (xc_ia64_setup_shared_info(xch, dom,
|
||||
domctl.u.getdomaininfo.shared_info_frame,
|
||||
memmap_info_pfn, memmap_info_num_pages)) {
|
||||
PERROR("Could not setup shared_info");
|
||||
goto error_out;
|
||||
}
|
||||
|
||||
xc_get_hvm_param(xc_handle, dom, HVM_PARAM_NVRAM_FD, &nvram_fd);
|
||||
xc_get_hvm_param(xch, dom, HVM_PARAM_NVRAM_FD, &nvram_fd);
|
||||
if ( !IS_VALID_NVRAM_FD(nvram_fd) )
|
||||
nvram_start = 0;
|
||||
else if ( copy_from_nvram_to_GFW(xc_handle, dom, (int)nvram_fd ) == -1 ) {
|
||||
else if ( copy_from_nvram_to_GFW(xch, dom, (int)nvram_fd ) == -1 ) {
|
||||
nvram_start = 0;
|
||||
close(nvram_fd);
|
||||
}
|
||||
@@ -1034,16 +1035,16 @@ setup_guest(xc_interface *xc_handle, uint32_t dom, unsigned long memsize,
|
||||
vcpus = domctl.u.getdomaininfo.max_vcpu_id + 1;
|
||||
|
||||
// Hand-off state passed to guest firmware
|
||||
if (xc_ia64_build_hob(xc_handle, dom, dom_memsize, vcpus, nvram_start) < 0) {
|
||||
if (xc_ia64_build_hob(xch, dom, dom_memsize, vcpus, nvram_start) < 0) {
|
||||
PERROR("Could not build hob");
|
||||
goto error_out;
|
||||
}
|
||||
|
||||
// zero clear all special pages
|
||||
for (i = 0; i < sizeof(special_pages) / sizeof(special_pages[0]); i++) {
|
||||
xc_set_hvm_param(xc_handle, dom,
|
||||
xc_set_hvm_param(xch, dom,
|
||||
special_pages[i].param, special_pages[i].pfn);
|
||||
if (xc_clear_domain_page(xc_handle, dom, special_pages[i].pfn))
|
||||
if (xc_clear_domain_page(xch, dom, special_pages[i].pfn))
|
||||
goto error_out;
|
||||
}
|
||||
|
||||
@@ -1055,7 +1056,7 @@ error_out:
|
||||
}
|
||||
|
||||
int
|
||||
xc_hvm_build(xc_interface *xc_handle, uint32_t domid, int memsize, const char *image_name)
|
||||
xc_hvm_build(xc_interface *xch, uint32_t domid, int memsize, const char *image_name)
|
||||
{
|
||||
vcpu_guest_context_any_t st_ctxt_any;
|
||||
vcpu_guest_context_t *ctxt = &st_ctxt_any.c;
|
||||
@@ -1063,13 +1064,13 @@ xc_hvm_build(xc_interface *xc_handle, uint32_t domid, int memsize, const char *i
|
||||
unsigned long image_size;
|
||||
unsigned long nr_pages;
|
||||
|
||||
nr_pages = xc_get_max_pages(xc_handle, domid);
|
||||
nr_pages = xc_get_max_pages(xch, domid);
|
||||
if (nr_pages < 0) {
|
||||
PERROR("Could not find total pages for domain");
|
||||
goto error_out;
|
||||
}
|
||||
|
||||
image = xc_read_image(image_name, &image_size);
|
||||
image = xc_read_image(xch, image_name, &image_size);
|
||||
if (image == NULL) {
|
||||
PERROR("Could not read guest firmware image %s", image_name);
|
||||
goto error_out;
|
||||
@@ -1077,7 +1078,7 @@ xc_hvm_build(xc_interface *xc_handle, uint32_t domid, int memsize, const char *i
|
||||
|
||||
image_size = (image_size + PAGE_SIZE - 1) & PAGE_MASK;
|
||||
|
||||
if (setup_guest(xc_handle, domid, (unsigned long)memsize, image,
|
||||
if (setup_guest(xch, domid, (unsigned long)memsize, image,
|
||||
image_size) < 0) {
|
||||
ERROR("Error constructing guest OS");
|
||||
goto error_out;
|
||||
@@ -1092,7 +1093,7 @@ xc_hvm_build(xc_interface *xc_handle, uint32_t domid, int memsize, const char *i
|
||||
ctxt->regs.psr = IA64_PSR_AC | IA64_PSR_BN;
|
||||
ctxt->regs.cr.dcr = 0;
|
||||
ctxt->regs.cr.pta = 15 << 2;
|
||||
return xc_vcpu_setcontext(xc_handle, domid, 0, &st_ctxt_any);
|
||||
return xc_vcpu_setcontext(xch, domid, 0, &st_ctxt_any);
|
||||
|
||||
error_out:
|
||||
free(image);
|
||||
@@ -1105,14 +1106,14 @@ error_out:
|
||||
* memsize pages marked populate-on-demand, and with a PoD cache size
|
||||
* of target. If target == memsize, pages are populated normally.
|
||||
*/
|
||||
int xc_hvm_build_target_mem(xc_interface *xc_handle,
|
||||
int xc_hvm_build_target_mem(xc_interface *xch,
|
||||
uint32_t domid,
|
||||
int memsize,
|
||||
int target,
|
||||
const char *image_name)
|
||||
{
|
||||
/* XXX:PoD isn't supported yet */
|
||||
return xc_hvm_build(xc_handle, domid, target, image_name);
|
||||
return xc_hvm_build(xch, domid, target, image_name);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1131,7 +1132,7 @@ int xc_hvm_build_target_mem(xc_interface *xc_handle,
|
||||
#define _PAGE_AR_RW (2 << 9) /* read & write */
|
||||
|
||||
int
|
||||
xc_ia64_set_os_type(xc_interface *xc_handle, char *guest_os_type, uint32_t dom)
|
||||
xc_ia64_set_os_type(xc_interface *xch, char *guest_os_type, uint32_t dom)
|
||||
{
|
||||
DECLARE_DOMCTL;
|
||||
|
||||
@@ -1153,7 +1154,7 @@ xc_ia64_set_os_type(xc_interface *xc_handle, char *guest_os_type, uint32_t dom)
|
||||
domctl.u.set_opt_feature.optf.pgprot = (_PAGE_P | _PAGE_A | _PAGE_D |
|
||||
_PAGE_MA_WB | _PAGE_AR_RW);
|
||||
domctl.u.set_opt_feature.optf.key = 0;
|
||||
if (xc_domctl(xc_handle, &domctl))
|
||||
if (xc_domctl(xch, &domctl))
|
||||
PERROR("Failed to set region 4 identity mapping for Windows "
|
||||
"guest OS type.\n");
|
||||
|
||||
@@ -1162,7 +1163,7 @@ xc_ia64_set_os_type(xc_interface *xc_handle, char *guest_os_type, uint32_t dom)
|
||||
domctl.u.set_opt_feature.optf.pgprot = (_PAGE_P | _PAGE_A | _PAGE_D |
|
||||
_PAGE_MA_UC | _PAGE_AR_RW);
|
||||
domctl.u.set_opt_feature.optf.key = 0;
|
||||
if (xc_domctl(xc_handle, &domctl))
|
||||
if (xc_domctl(xch, &domctl))
|
||||
PERROR("Failed to set region 5 identity mapping for Windows "
|
||||
"guest OS type.\n");
|
||||
return 0;
|
||||
@@ -1176,7 +1177,7 @@ xc_ia64_set_os_type(xc_interface *xc_handle, char *guest_os_type, uint32_t dom)
|
||||
domctl.u.set_opt_feature.optf.pgprot = (_PAGE_P | _PAGE_A | _PAGE_D |
|
||||
_PAGE_MA_WB | _PAGE_AR_RW);
|
||||
domctl.u.set_opt_feature.optf.key = 0;
|
||||
if (xc_domctl(xc_handle, &domctl))
|
||||
if (xc_domctl(xch, &domctl))
|
||||
PERROR("Failed to set region 7 identity mapping for Linux "
|
||||
"guest OS type.\n");
|
||||
return 0;
|
||||
|
||||
@@ -29,21 +29,21 @@ static unsigned long p2m_size;
|
||||
static unsigned long nr_pfns;
|
||||
|
||||
static int
|
||||
populate_page_if_necessary(xc_interface *xc_handle, uint32_t dom, unsigned long gmfn,
|
||||
populate_page_if_necessary(xc_interface *xch, uint32_t dom, unsigned long gmfn,
|
||||
struct xen_ia64_p2m_table *p2m_table)
|
||||
{
|
||||
if (xc_ia64_p2m_present(p2m_table, gmfn))
|
||||
return 0;
|
||||
|
||||
return xc_domain_memory_populate_physmap(xc_handle, dom, 1, 0, 0, &gmfn);
|
||||
return xc_domain_memory_populate_physmap(xch, dom, 1, 0, 0, &gmfn);
|
||||
}
|
||||
|
||||
static int
|
||||
read_page(xc_interface *xc_handle, int io_fd, uint32_t dom, unsigned long pfn)
|
||||
read_page(xc_interface *xch, int io_fd, uint32_t dom, unsigned long pfn)
|
||||
{
|
||||
void *mem;
|
||||
|
||||
mem = xc_map_foreign_range(xc_handle, dom, PAGE_SIZE,
|
||||
mem = xc_map_foreign_range(xch, dom, PAGE_SIZE,
|
||||
PROT_READ|PROT_WRITE, pfn);
|
||||
if (mem == NULL) {
|
||||
ERROR("cannot map page");
|
||||
@@ -65,7 +65,7 @@ read_page(xc_interface *xc_handle, int io_fd, uint32_t dom, unsigned long pfn)
|
||||
* pages here.
|
||||
*/
|
||||
static int
|
||||
xc_ia64_recv_unallocated_list(xc_interface *xc_handle, int io_fd, uint32_t dom,
|
||||
xc_ia64_recv_unallocated_list(xc_interface *xch, int io_fd, uint32_t dom,
|
||||
struct xen_ia64_p2m_table *p2m_table)
|
||||
{
|
||||
int rc = -1;
|
||||
@@ -98,7 +98,7 @@ xc_ia64_recv_unallocated_list(xc_interface *xc_handle, int io_fd, uint32_t dom,
|
||||
}
|
||||
}
|
||||
if (nr_frees > 0) {
|
||||
if (xc_domain_memory_decrease_reservation(xc_handle, dom, nr_frees,
|
||||
if (xc_domain_memory_decrease_reservation(xch, dom, nr_frees,
|
||||
0, pfntab) < 0) {
|
||||
PERROR("Could not decrease reservation");
|
||||
goto out;
|
||||
@@ -116,7 +116,7 @@ xc_ia64_recv_unallocated_list(xc_interface *xc_handle, int io_fd, uint32_t dom,
|
||||
}
|
||||
|
||||
static int
|
||||
xc_ia64_recv_vcpu_context(xc_interface *xc_handle, int io_fd, uint32_t dom,
|
||||
xc_ia64_recv_vcpu_context(xc_interface *xch, int io_fd, uint32_t dom,
|
||||
uint32_t vcpu, vcpu_guest_context_any_t *ctxt_any)
|
||||
{
|
||||
vcpu_guest_context_t *ctxt = &ctxt_any->c;
|
||||
@@ -130,14 +130,14 @@ xc_ia64_recv_vcpu_context(xc_interface *xc_handle, int io_fd, uint32_t dom,
|
||||
/* Initialize and set registers. */
|
||||
ctxt->flags = VGCF_EXTRA_REGS | VGCF_SET_CR_IRR | VGCF_online |
|
||||
VGCF_SET_AR_ITC;
|
||||
if (xc_vcpu_setcontext(xc_handle, dom, vcpu, ctxt_any) != 0) {
|
||||
if (xc_vcpu_setcontext(xch, dom, vcpu, ctxt_any) != 0) {
|
||||
ERROR("Couldn't set vcpu context");
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Just a check. */
|
||||
ctxt->flags = 0;
|
||||
if (xc_vcpu_getcontext(xc_handle, dom, vcpu, ctxt_any)) {
|
||||
if (xc_vcpu_getcontext(xch, dom, vcpu, ctxt_any)) {
|
||||
ERROR("Could not get vcpu context");
|
||||
return -1;
|
||||
}
|
||||
@@ -147,7 +147,7 @@ xc_ia64_recv_vcpu_context(xc_interface *xc_handle, int io_fd, uint32_t dom,
|
||||
|
||||
/* Read shared info. */
|
||||
static int
|
||||
xc_ia64_recv_shared_info(xc_interface *xc_handle, int io_fd, uint32_t dom,
|
||||
xc_ia64_recv_shared_info(xc_interface *xch, int io_fd, uint32_t dom,
|
||||
unsigned long shared_info_frame,
|
||||
unsigned long *start_info_pfn)
|
||||
{
|
||||
@@ -157,7 +157,7 @@ xc_ia64_recv_shared_info(xc_interface *xc_handle, int io_fd, uint32_t dom,
|
||||
shared_info_t *shared_info;
|
||||
|
||||
/* Read shared info. */
|
||||
shared_info = xc_map_foreign_range(xc_handle, dom, PAGE_SIZE,
|
||||
shared_info = xc_map_foreign_range(xch, dom, PAGE_SIZE,
|
||||
PROT_READ|PROT_WRITE,
|
||||
shared_info_frame);
|
||||
if (shared_info == NULL) {
|
||||
@@ -186,7 +186,8 @@ xc_ia64_recv_shared_info(xc_interface *xc_handle, int io_fd, uint32_t dom,
|
||||
}
|
||||
|
||||
static int
|
||||
xc_ia64_recv_vcpumap(const xc_dominfo_t *info, int io_fd, uint64_t **vcpumapp)
|
||||
xc_ia64_recv_vcpumap(xc_interface *xch,
|
||||
const xc_dominfo_t *info, int io_fd, uint64_t **vcpumapp)
|
||||
{
|
||||
uint64_t max_virt_cpus;
|
||||
unsigned long vcpumap_size;
|
||||
@@ -222,7 +223,7 @@ xc_ia64_recv_vcpumap(const xc_dominfo_t *info, int io_fd, uint64_t **vcpumapp)
|
||||
}
|
||||
|
||||
static int
|
||||
xc_ia64_pv_recv_vcpu_context(xc_interface *xc_handle, int io_fd, int32_t dom,
|
||||
xc_ia64_pv_recv_vcpu_context(xc_interface *xch, int io_fd, int32_t dom,
|
||||
uint32_t vcpu)
|
||||
{
|
||||
int rc = -1;
|
||||
@@ -237,11 +238,11 @@ xc_ia64_pv_recv_vcpu_context(xc_interface *xc_handle, int io_fd, int32_t dom,
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (xc_ia64_recv_vcpu_context(xc_handle, io_fd, dom, vcpu, &ctxt_any))
|
||||
if (xc_ia64_recv_vcpu_context(xch, io_fd, dom, vcpu, &ctxt_any))
|
||||
goto out;
|
||||
|
||||
/* Then get privreg page. */
|
||||
if (read_page(xc_handle, io_fd, dom, ctxt->privregs_pfn) < 0) {
|
||||
if (read_page(xch, io_fd, dom, ctxt->privregs_pfn) < 0) {
|
||||
ERROR("Could not read vcpu privregs");
|
||||
goto out;
|
||||
}
|
||||
@@ -254,7 +255,7 @@ xc_ia64_pv_recv_vcpu_context(xc_interface *xc_handle, int io_fd, int32_t dom,
|
||||
}
|
||||
|
||||
static int
|
||||
xc_ia64_pv_recv_shared_info(xc_interface *xc_handle, int io_fd, int32_t dom,
|
||||
xc_ia64_pv_recv_shared_info(xc_interface *xch, int io_fd, int32_t dom,
|
||||
unsigned long shared_info_frame,
|
||||
struct xen_ia64_p2m_table *p2m_table,
|
||||
unsigned int store_evtchn,
|
||||
@@ -268,16 +269,16 @@ xc_ia64_pv_recv_shared_info(xc_interface *xc_handle, int io_fd, int32_t dom,
|
||||
start_info_t *start_info;
|
||||
|
||||
/* Read shared info. */
|
||||
if (xc_ia64_recv_shared_info(xc_handle, io_fd, dom,
|
||||
if (xc_ia64_recv_shared_info(xch, io_fd, dom,
|
||||
shared_info_frame, &gmfn))
|
||||
return -1;
|
||||
|
||||
/* Uncanonicalise the suspend-record frame number and poke resume rec. */
|
||||
if (populate_page_if_necessary(xc_handle, dom, gmfn, p2m_table)) {
|
||||
if (populate_page_if_necessary(xch, dom, gmfn, p2m_table)) {
|
||||
ERROR("cannot populate page 0x%lx", gmfn);
|
||||
return -1;
|
||||
}
|
||||
start_info = xc_map_foreign_range(xc_handle, dom, PAGE_SIZE,
|
||||
start_info = xc_map_foreign_range(xch, dom, PAGE_SIZE,
|
||||
PROT_READ | PROT_WRITE, gmfn);
|
||||
if (start_info == NULL) {
|
||||
ERROR("cannot map start_info page");
|
||||
@@ -296,7 +297,7 @@ xc_ia64_pv_recv_shared_info(xc_interface *xc_handle, int io_fd, int32_t dom,
|
||||
}
|
||||
|
||||
static int
|
||||
xc_ia64_pv_recv_context_ver_one_or_two(xc_interface *xc_handle, int io_fd, uint32_t dom,
|
||||
xc_ia64_pv_recv_context_ver_one_or_two(xc_interface *xch, int io_fd, uint32_t dom,
|
||||
unsigned long shared_info_frame,
|
||||
struct xen_ia64_p2m_table *p2m_table,
|
||||
unsigned int store_evtchn,
|
||||
@@ -307,20 +308,20 @@ xc_ia64_pv_recv_context_ver_one_or_two(xc_interface *xc_handle, int io_fd, uint3
|
||||
int rc;
|
||||
|
||||
/* vcpu 0 context */
|
||||
rc = xc_ia64_pv_recv_vcpu_context(xc_handle, io_fd, dom, 0);
|
||||
rc = xc_ia64_pv_recv_vcpu_context(xch, io_fd, dom, 0);
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
|
||||
/* shared_info */
|
||||
rc = xc_ia64_pv_recv_shared_info(xc_handle, io_fd, dom, shared_info_frame,
|
||||
rc = xc_ia64_pv_recv_shared_info(xch, io_fd, dom, shared_info_frame,
|
||||
p2m_table, store_evtchn, store_mfn,
|
||||
console_evtchn, console_mfn);
|
||||
return rc;
|
||||
}
|
||||
|
||||
static int
|
||||
xc_ia64_pv_recv_context_ver_three(xc_interface *xc_handle, int io_fd, uint32_t dom,
|
||||
xc_ia64_pv_recv_context_ver_three(xc_interface *xch, int io_fd, uint32_t dom,
|
||||
unsigned long shared_info_frame,
|
||||
struct xen_ia64_p2m_table *p2m_table,
|
||||
unsigned int store_evtchn,
|
||||
@@ -335,11 +336,11 @@ xc_ia64_pv_recv_context_ver_three(xc_interface *xc_handle, int io_fd, uint32_t d
|
||||
/* vcpu map */
|
||||
uint64_t *vcpumap = NULL;
|
||||
|
||||
if (xc_domain_getinfo(xc_handle, dom, 1, &info) != 1) {
|
||||
if (xc_domain_getinfo(xch, dom, 1, &info) != 1) {
|
||||
ERROR("Could not get domain info");
|
||||
return -1;
|
||||
}
|
||||
rc = xc_ia64_recv_vcpumap(&info, io_fd, &vcpumap);
|
||||
rc = xc_ia64_recv_vcpumap(xch, &info, io_fd, &vcpumap);
|
||||
if (rc != 0)
|
||||
goto out;
|
||||
|
||||
@@ -348,13 +349,13 @@ xc_ia64_pv_recv_context_ver_three(xc_interface *xc_handle, int io_fd, uint32_t d
|
||||
if (!__test_bit(i, vcpumap))
|
||||
continue;
|
||||
|
||||
rc = xc_ia64_pv_recv_vcpu_context(xc_handle, io_fd, dom, i);
|
||||
rc = xc_ia64_pv_recv_vcpu_context(xch, io_fd, dom, i);
|
||||
if (rc != 0)
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* shared_info */
|
||||
rc = xc_ia64_pv_recv_shared_info(xc_handle, io_fd, dom, shared_info_frame,
|
||||
rc = xc_ia64_pv_recv_shared_info(xch, io_fd, dom, shared_info_frame,
|
||||
p2m_table, store_evtchn, store_mfn,
|
||||
console_evtchn, console_mfn);
|
||||
out:
|
||||
@@ -365,7 +366,7 @@ xc_ia64_pv_recv_context_ver_three(xc_interface *xc_handle, int io_fd, uint32_t d
|
||||
|
||||
static int
|
||||
xc_ia64_pv_recv_context(unsigned long format_version,
|
||||
xc_interface *xc_handle, int io_fd, uint32_t dom,
|
||||
xc_interface *xch, int io_fd, uint32_t dom,
|
||||
unsigned long shared_info_frame,
|
||||
struct xen_ia64_p2m_table *p2m_table,
|
||||
unsigned int store_evtchn,
|
||||
@@ -377,14 +378,14 @@ xc_ia64_pv_recv_context(unsigned long format_version,
|
||||
switch (format_version) {
|
||||
case XC_IA64_SR_FORMAT_VER_ONE:
|
||||
case XC_IA64_SR_FORMAT_VER_TWO:
|
||||
rc = xc_ia64_pv_recv_context_ver_one_or_two(xc_handle, io_fd, dom,
|
||||
rc = xc_ia64_pv_recv_context_ver_one_or_two(xch, io_fd, dom,
|
||||
shared_info_frame,
|
||||
p2m_table, store_evtchn,
|
||||
store_mfn, console_evtchn,
|
||||
console_mfn);
|
||||
break;
|
||||
case XC_IA64_SR_FORMAT_VER_THREE:
|
||||
rc = xc_ia64_pv_recv_context_ver_three(xc_handle, io_fd, dom,
|
||||
rc = xc_ia64_pv_recv_context_ver_three(xch, io_fd, dom,
|
||||
shared_info_frame,
|
||||
p2m_table, store_evtchn,
|
||||
store_mfn, console_evtchn,
|
||||
@@ -399,7 +400,7 @@ xc_ia64_pv_recv_context(unsigned long format_version,
|
||||
}
|
||||
|
||||
static int
|
||||
xc_ia64_hvm_recv_context(xc_interface *xc_handle, int io_fd, uint32_t dom,
|
||||
xc_ia64_hvm_recv_context(xc_interface *xch, int io_fd, uint32_t dom,
|
||||
unsigned long shared_info_frame,
|
||||
struct xen_ia64_p2m_table *p2m_table,
|
||||
unsigned int store_evtchn, unsigned long *store_mfn,
|
||||
@@ -429,16 +430,16 @@ xc_ia64_hvm_recv_context(xc_interface *xc_handle, int io_fd, uint32_t dom,
|
||||
uint8_t *hvm_buf = NULL;
|
||||
|
||||
/* Read shared info. */
|
||||
if (xc_ia64_recv_shared_info(xc_handle, io_fd, dom, shared_info_frame,
|
||||
if (xc_ia64_recv_shared_info(xch, io_fd, dom, shared_info_frame,
|
||||
NULL))
|
||||
goto out;
|
||||
|
||||
/* vcpu map */
|
||||
if (xc_domain_getinfo(xc_handle, dom, 1, &info) != 1) {
|
||||
if (xc_domain_getinfo(xch, dom, 1, &info) != 1) {
|
||||
ERROR("Could not get domain info");
|
||||
goto out;
|
||||
}
|
||||
if (xc_ia64_recv_vcpumap(&info, io_fd, &vcpumap))
|
||||
if (xc_ia64_recv_vcpumap(xch, &info, io_fd, &vcpumap))
|
||||
goto out;
|
||||
|
||||
/* vcpu context */
|
||||
@@ -449,7 +450,7 @@ xc_ia64_hvm_recv_context(xc_interface *xc_handle, int io_fd, uint32_t dom,
|
||||
if (!__test_bit(i, vcpumap))
|
||||
continue;
|
||||
|
||||
if (xc_ia64_recv_vcpu_context(xc_handle, io_fd, dom, i, &ctxt_any))
|
||||
if (xc_ia64_recv_vcpu_context(xch, io_fd, dom, i, &ctxt_any))
|
||||
goto out;
|
||||
|
||||
/* system context of vcpu is recieved as hvm context. */
|
||||
@@ -463,18 +464,18 @@ xc_ia64_hvm_recv_context(xc_interface *xc_handle, int io_fd, uint32_t dom,
|
||||
|
||||
/* These comms pages need to be zeroed at the start of day */
|
||||
for (i = 0; i < NR_PARAMS; i++) {
|
||||
rc = xc_clear_domain_page(xc_handle, dom, magic_pfns[i]);
|
||||
rc = xc_clear_domain_page(xch, dom, magic_pfns[i]);
|
||||
if (rc != 0) {
|
||||
ERROR("error zeroing magic pages: %i", rc);
|
||||
goto out;
|
||||
}
|
||||
rc = xc_set_hvm_param(xc_handle, dom, hvm_params[i], magic_pfns[i]);
|
||||
rc = xc_set_hvm_param(xch, dom, hvm_params[i], magic_pfns[i]);
|
||||
if (rc != 0) {
|
||||
ERROR("error setting HVM params: %i", rc);
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
rc = xc_set_hvm_param(xc_handle, dom,
|
||||
rc = xc_set_hvm_param(xch, dom,
|
||||
HVM_PARAM_STORE_EVTCHN, store_evtchn);
|
||||
if (rc != 0) {
|
||||
ERROR("error setting HVM params: %i", rc);
|
||||
@@ -501,7 +502,7 @@ xc_ia64_hvm_recv_context(xc_interface *xc_handle, int io_fd, uint32_t dom,
|
||||
goto out;
|
||||
}
|
||||
|
||||
rc = xc_domain_hvm_setcontext(xc_handle, dom, hvm_buf, rec_size);
|
||||
rc = xc_domain_hvm_setcontext(xch, dom, hvm_buf, rec_size);
|
||||
if (rc != 0) {
|
||||
ERROR("error setting the HVM context");
|
||||
goto out;
|
||||
@@ -521,7 +522,7 @@ out:
|
||||
* hvm domain requires IO pages allocated when XEN_DOMCTL_arch_setup
|
||||
*/
|
||||
static int
|
||||
xc_ia64_hvm_domain_setup(xc_interface *xc_handle, uint32_t dom)
|
||||
xc_ia64_hvm_domain_setup(xc_interface *xch, uint32_t dom)
|
||||
{
|
||||
int rc;
|
||||
xen_pfn_t pfn_list[] = {
|
||||
@@ -531,7 +532,7 @@ xc_ia64_hvm_domain_setup(xc_interface *xc_handle, uint32_t dom)
|
||||
};
|
||||
unsigned long nr_pages = sizeof(pfn_list) / sizeof(pfn_list[0]);
|
||||
|
||||
rc = xc_domain_memory_populate_physmap(xc_handle, dom, nr_pages,
|
||||
rc = xc_domain_memory_populate_physmap(xch, dom, nr_pages,
|
||||
0, 0, &pfn_list[0]);
|
||||
if (rc != 0)
|
||||
PERROR("Could not allocate IO page or buffer io page.");
|
||||
@@ -539,7 +540,7 @@ xc_ia64_hvm_domain_setup(xc_interface *xc_handle, uint32_t dom)
|
||||
}
|
||||
|
||||
int
|
||||
xc_domain_restore(xc_interface *xc_handle, int io_fd, uint32_t dom,
|
||||
xc_domain_restore(xc_interface *xch, int io_fd, uint32_t dom,
|
||||
unsigned int store_evtchn, unsigned long *store_mfn,
|
||||
unsigned int console_evtchn, unsigned long *console_mfn,
|
||||
unsigned int hvm, unsigned int pae, int superpages)
|
||||
@@ -580,7 +581,7 @@ xc_domain_restore(xc_interface *xc_handle, int io_fd, uint32_t dom,
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (hvm && xc_ia64_hvm_domain_setup(xc_handle, dom) != 0)
|
||||
if (hvm && xc_ia64_hvm_domain_setup(xch, dom) != 0)
|
||||
goto out;
|
||||
|
||||
/* Build firmware (will be overwritten). */
|
||||
@@ -589,13 +590,13 @@ xc_domain_restore(xc_interface *xc_handle, int io_fd, uint32_t dom,
|
||||
domctl.u.arch_setup.bp = 0; /* indicate domain restore */
|
||||
|
||||
domctl.cmd = XEN_DOMCTL_arch_setup;
|
||||
if (xc_domctl(xc_handle, &domctl))
|
||||
if (xc_domctl(xch, &domctl))
|
||||
goto out;
|
||||
|
||||
/* Get the domain's shared-info frame. */
|
||||
domctl.cmd = XEN_DOMCTL_getdomaininfo;
|
||||
domctl.domain = (domid_t)dom;
|
||||
if (xc_domctl(xc_handle, &domctl) < 0) {
|
||||
if (xc_domctl(xch, &domctl) < 0) {
|
||||
ERROR("Could not get information on new domain");
|
||||
goto out;
|
||||
}
|
||||
@@ -622,7 +623,7 @@ xc_domain_restore(xc_interface *xc_handle, int io_fd, uint32_t dom,
|
||||
ERROR("read: memmap_info");
|
||||
goto out;
|
||||
}
|
||||
if (xc_ia64_p2m_map(&p2m_table, xc_handle,
|
||||
if (xc_ia64_p2m_map(&p2m_table, xch,
|
||||
dom, memmap_info, IA64_DOM0VP_EFP_ALLOC_PTE)) {
|
||||
ERROR("p2m mapping");
|
||||
goto out;
|
||||
@@ -647,7 +648,7 @@ xc_domain_restore(xc_interface *xc_handle, int io_fd, uint32_t dom,
|
||||
memdesc->num_pages = nr_pfns << (PAGE_SHIFT - EFI_PAGE_SHIFT);
|
||||
memdesc->attribute = EFI_MEMORY_WB;
|
||||
|
||||
if (xc_ia64_p2m_map(&p2m_table, xc_handle,
|
||||
if (xc_ia64_p2m_map(&p2m_table, xch,
|
||||
dom, memmap_info, IA64_DOM0VP_EFP_ALLOC_PTE)) {
|
||||
ERROR("p2m mapping");
|
||||
goto out;
|
||||
@@ -668,26 +669,26 @@ xc_domain_restore(xc_interface *xc_handle, int io_fd, uint32_t dom,
|
||||
if (gmfn == INVALID_MFN)
|
||||
break;
|
||||
|
||||
if (populate_page_if_necessary(xc_handle, dom, gmfn, &p2m_table) < 0) {
|
||||
if (populate_page_if_necessary(xch, dom, gmfn, &p2m_table) < 0) {
|
||||
ERROR("can not populate page 0x%lx", gmfn);
|
||||
goto out;
|
||||
}
|
||||
if (read_page(xc_handle, io_fd, dom, gmfn) < 0)
|
||||
if (read_page(xch, io_fd, dom, gmfn) < 0)
|
||||
goto out;
|
||||
}
|
||||
|
||||
DPRINTF("Received all pages\n");
|
||||
|
||||
if (xc_ia64_recv_unallocated_list(xc_handle, io_fd, dom, &p2m_table))
|
||||
if (xc_ia64_recv_unallocated_list(xch, io_fd, dom, &p2m_table))
|
||||
goto out;
|
||||
|
||||
if (!hvm)
|
||||
rc = xc_ia64_pv_recv_context(ver,
|
||||
xc_handle, io_fd, dom, shared_info_frame,
|
||||
xch, io_fd, dom, shared_info_frame,
|
||||
&p2m_table, store_evtchn, store_mfn,
|
||||
console_evtchn, console_mfn);
|
||||
else
|
||||
rc = xc_ia64_hvm_recv_context(xc_handle, io_fd, dom, shared_info_frame,
|
||||
rc = xc_ia64_hvm_recv_context(xch, io_fd, dom, shared_info_frame,
|
||||
&p2m_table, store_evtchn, store_mfn,
|
||||
console_evtchn, console_mfn);
|
||||
if (rc)
|
||||
@@ -713,7 +714,7 @@ xc_domain_restore(xc_interface *xc_handle, int io_fd, uint32_t dom,
|
||||
xc_ia64_p2m_unmap(&p2m_table);
|
||||
|
||||
if ((rc != 0) && (dom != 0))
|
||||
xc_domain_destroy(xc_handle, dom);
|
||||
xc_domain_destroy(xch, dom);
|
||||
|
||||
DPRINTF("Restore exit with rc=%d\n", rc);
|
||||
|
||||
|
||||
@@ -54,7 +54,7 @@ static inline void set_bit(int nr, volatile void * addr)
|
||||
|
||||
static int
|
||||
suspend_and_state(int (*suspend)(void*), void* data,
|
||||
xc_interface *xc_handle, int io_fd,
|
||||
xc_interface *xch, int io_fd,
|
||||
int dom, xc_dominfo_t *info)
|
||||
{
|
||||
if ( !(*suspend)(data) ) {
|
||||
@@ -62,7 +62,7 @@ suspend_and_state(int (*suspend)(void*), void* data,
|
||||
return -1;
|
||||
}
|
||||
|
||||
if ( (xc_domain_getinfo(xc_handle, dom, 1, info) != 1) ||
|
||||
if ( (xc_domain_getinfo(xch, dom, 1, info) != 1) ||
|
||||
!info->shutdown || (info->shutdown_reason != SHUTDOWN_suspend) ) {
|
||||
ERROR("Could not get domain info");
|
||||
return -1;
|
||||
@@ -86,7 +86,7 @@ md_is_not_ram(const efi_memory_desc_t *md)
|
||||
* page after pausing the domain.
|
||||
*/
|
||||
static int
|
||||
xc_ia64_send_unallocated_list(xc_interface *xc_handle, int io_fd,
|
||||
xc_ia64_send_unallocated_list(xc_interface *xch, int io_fd,
|
||||
struct xen_ia64_p2m_table *p2m_table,
|
||||
xen_ia64_memmap_info_t *memmap_info,
|
||||
void *memmap_desc_start, void *memmap_desc_end)
|
||||
@@ -155,11 +155,11 @@ xc_ia64_send_unallocated_list(xc_interface *xc_handle, int io_fd,
|
||||
}
|
||||
|
||||
static int
|
||||
xc_ia64_send_vcpu_context(xc_interface *xc_handle, int io_fd, uint32_t dom,
|
||||
xc_ia64_send_vcpu_context(xc_interface *xch, int io_fd, uint32_t dom,
|
||||
uint32_t vcpu, vcpu_guest_context_any_t *ctxt_any)
|
||||
{
|
||||
vcpu_guest_context_t *ctxt = &ctxt_any->c;
|
||||
if (xc_vcpu_getcontext(xc_handle, dom, vcpu, ctxt_any)) {
|
||||
if (xc_vcpu_getcontext(xch, dom, vcpu, ctxt_any)) {
|
||||
ERROR("Could not get vcpu context");
|
||||
return -1;
|
||||
}
|
||||
@@ -174,7 +174,7 @@ xc_ia64_send_vcpu_context(xc_interface *xc_handle, int io_fd, uint32_t dom,
|
||||
}
|
||||
|
||||
static int
|
||||
xc_ia64_send_shared_info(xc_interface *xc_handle, int io_fd, shared_info_t *live_shinfo)
|
||||
xc_ia64_send_shared_info(xc_interface *xch, int io_fd, shared_info_t *live_shinfo)
|
||||
{
|
||||
if (write_exact(io_fd, live_shinfo, PAGE_SIZE)) {
|
||||
ERROR("Error when writing to state file (1)");
|
||||
@@ -184,7 +184,7 @@ xc_ia64_send_shared_info(xc_interface *xc_handle, int io_fd, shared_info_t *live
|
||||
}
|
||||
|
||||
static int
|
||||
xc_ia64_send_vcpumap(xc_interface *xc_handle, int io_fd, uint32_t dom,
|
||||
xc_ia64_send_vcpumap(xc_interface *xch, int io_fd, uint32_t dom,
|
||||
const xc_dominfo_t *info, uint64_t max_virt_cpus,
|
||||
uint64_t **vcpumapp)
|
||||
{
|
||||
@@ -204,7 +204,7 @@ xc_ia64_send_vcpumap(xc_interface *xc_handle, int io_fd, uint32_t dom,
|
||||
|
||||
for (i = 0; i <= info->max_vcpu_id; i++) {
|
||||
xc_vcpuinfo_t vinfo;
|
||||
if ((xc_vcpu_getinfo(xc_handle, dom, i, &vinfo) == 0) && vinfo.online)
|
||||
if ((xc_vcpu_getinfo(xch, dom, i, &vinfo) == 0) && vinfo.online)
|
||||
__set_bit(i, vcpumap);
|
||||
}
|
||||
|
||||
@@ -231,7 +231,7 @@ xc_ia64_send_vcpumap(xc_interface *xc_handle, int io_fd, uint32_t dom,
|
||||
|
||||
|
||||
static int
|
||||
xc_ia64_pv_send_context(xc_interface *xc_handle, int io_fd, uint32_t dom,
|
||||
xc_ia64_pv_send_context(xc_interface *xch, int io_fd, uint32_t dom,
|
||||
const xc_dominfo_t *info, shared_info_t *live_shinfo)
|
||||
{
|
||||
int rc = -1;
|
||||
@@ -239,7 +239,7 @@ xc_ia64_pv_send_context(xc_interface *xc_handle, int io_fd, uint32_t dom,
|
||||
|
||||
/* vcpu map */
|
||||
uint64_t *vcpumap = NULL;
|
||||
if (xc_ia64_send_vcpumap(xc_handle, io_fd, dom, info, XEN_LEGACY_MAX_VCPUS,
|
||||
if (xc_ia64_send_vcpumap(xch, io_fd, dom, info, XEN_LEGACY_MAX_VCPUS,
|
||||
&vcpumap))
|
||||
goto out;
|
||||
|
||||
@@ -254,10 +254,10 @@ xc_ia64_pv_send_context(xc_interface *xc_handle, int io_fd, uint32_t dom,
|
||||
if (!__test_bit(i, vcpumap))
|
||||
continue;
|
||||
|
||||
if (xc_ia64_send_vcpu_context(xc_handle, io_fd, dom, i, &ctxt_any))
|
||||
if (xc_ia64_send_vcpu_context(xch, io_fd, dom, i, &ctxt_any))
|
||||
goto out;
|
||||
|
||||
mem = xc_map_foreign_range(xc_handle, dom, PAGE_SIZE,
|
||||
mem = xc_map_foreign_range(xch, dom, PAGE_SIZE,
|
||||
PROT_READ|PROT_WRITE, ctxt->privregs_pfn);
|
||||
if (mem == NULL) {
|
||||
ERROR("cannot map privreg page");
|
||||
@@ -271,7 +271,7 @@ xc_ia64_pv_send_context(xc_interface *xc_handle, int io_fd, uint32_t dom,
|
||||
munmap(mem, PAGE_SIZE);
|
||||
}
|
||||
|
||||
rc = xc_ia64_send_shared_info(xc_handle, io_fd, live_shinfo);
|
||||
rc = xc_ia64_send_shared_info(xch, io_fd, live_shinfo);
|
||||
|
||||
out:
|
||||
if (vcpumap != NULL)
|
||||
@@ -280,7 +280,7 @@ xc_ia64_pv_send_context(xc_interface *xc_handle, int io_fd, uint32_t dom,
|
||||
}
|
||||
|
||||
static int
|
||||
xc_ia64_hvm_send_context(xc_interface *xc_handle, int io_fd, uint32_t dom,
|
||||
xc_ia64_hvm_send_context(xc_interface *xch, int io_fd, uint32_t dom,
|
||||
const xc_dominfo_t *info, shared_info_t *live_shinfo)
|
||||
{
|
||||
int rc = -1;
|
||||
@@ -305,11 +305,11 @@ xc_ia64_hvm_send_context(xc_interface *xc_handle, int io_fd, uint32_t dom,
|
||||
uint64_t hvm_buf_size = 0;
|
||||
uint8_t *hvm_buf = NULL;
|
||||
|
||||
if (xc_ia64_send_shared_info(xc_handle, io_fd, live_shinfo))
|
||||
if (xc_ia64_send_shared_info(xch, io_fd, live_shinfo))
|
||||
return -1;
|
||||
|
||||
/* vcpu map */
|
||||
if (xc_ia64_send_vcpumap(xc_handle, io_fd, dom, info, XEN_LEGACY_MAX_VCPUS,
|
||||
if (xc_ia64_send_vcpumap(xch, io_fd, dom, info, XEN_LEGACY_MAX_VCPUS,
|
||||
&vcpumap))
|
||||
goto out;
|
||||
|
||||
@@ -321,7 +321,7 @@ xc_ia64_hvm_send_context(xc_interface *xc_handle, int io_fd, uint32_t dom,
|
||||
if (!__test_bit(i, vcpumap))
|
||||
continue;
|
||||
|
||||
if (xc_ia64_send_vcpu_context(xc_handle, io_fd, dom, i, &ctxt_any))
|
||||
if (xc_ia64_send_vcpu_context(xch, io_fd, dom, i, &ctxt_any))
|
||||
goto out;
|
||||
|
||||
/* system context of vcpu is sent as hvm context. */
|
||||
@@ -330,7 +330,7 @@ xc_ia64_hvm_send_context(xc_interface *xc_handle, int io_fd, uint32_t dom,
|
||||
/* Save magic-page locations. */
|
||||
memset(magic_pfns, 0, sizeof(magic_pfns));
|
||||
for (i = 0; i < NR_PARAMS; i++) {
|
||||
if (xc_get_hvm_param(xc_handle, dom, hvm_params[i], &magic_pfns[i])) {
|
||||
if (xc_get_hvm_param(xch, dom, hvm_params[i], &magic_pfns[i])) {
|
||||
PERROR("Error when xc_get_hvm_param");
|
||||
goto out;
|
||||
}
|
||||
@@ -342,7 +342,7 @@ xc_ia64_hvm_send_context(xc_interface *xc_handle, int io_fd, uint32_t dom,
|
||||
}
|
||||
|
||||
/* Need another buffer for HVM context */
|
||||
hvm_buf_size = xc_domain_hvm_getcontext(xc_handle, dom, 0, 0);
|
||||
hvm_buf_size = xc_domain_hvm_getcontext(xch, dom, 0, 0);
|
||||
if (hvm_buf_size == -1) {
|
||||
ERROR("Couldn't get HVM context size from Xen");
|
||||
goto out;
|
||||
@@ -355,7 +355,7 @@ xc_ia64_hvm_send_context(xc_interface *xc_handle, int io_fd, uint32_t dom,
|
||||
}
|
||||
|
||||
/* Get HVM context from Xen and save it too */
|
||||
rec_size = xc_domain_hvm_getcontext(xc_handle, dom, hvm_buf, hvm_buf_size);
|
||||
rec_size = xc_domain_hvm_getcontext(xch, dom, hvm_buf, hvm_buf_size);
|
||||
if (rec_size == -1) {
|
||||
ERROR("HVM:Could not get hvm buffer");
|
||||
goto out;
|
||||
@@ -381,7 +381,7 @@ out:
|
||||
}
|
||||
|
||||
int
|
||||
xc_domain_save(xc_interface *xc_handle, int io_fd, uint32_t dom, uint32_t max_iters,
|
||||
xc_domain_save(xc_interface *xch, int io_fd, uint32_t dom, uint32_t max_iters,
|
||||
uint32_t max_factor, uint32_t flags,
|
||||
struct save_callbacks* callbacks,
|
||||
int hvm, void (*switch_qemu_logdirty)(int, unsigned))
|
||||
@@ -449,7 +449,7 @@ xc_domain_save(xc_interface *xc_handle, int io_fd, uint32_t dom, uint32_t max_it
|
||||
|
||||
//initialize_mbit_rate();
|
||||
|
||||
if (xc_domain_getinfo(xc_handle, dom, 1, &info) != 1) {
|
||||
if (xc_domain_getinfo(xch, dom, 1, &info) != 1) {
|
||||
ERROR("Could not get domain info");
|
||||
return 1;
|
||||
}
|
||||
@@ -466,14 +466,14 @@ xc_domain_save(xc_interface *xc_handle, int io_fd, uint32_t dom, uint32_t max_it
|
||||
#endif
|
||||
|
||||
/* Map the shared info frame */
|
||||
live_shinfo = xc_map_foreign_range(xc_handle, dom, PAGE_SIZE,
|
||||
live_shinfo = xc_map_foreign_range(xch, dom, PAGE_SIZE,
|
||||
PROT_READ, shared_info_frame);
|
||||
if (!live_shinfo) {
|
||||
ERROR("Couldn't map live_shinfo");
|
||||
goto out;
|
||||
}
|
||||
|
||||
p2m_size = xc_memory_op(xc_handle, XENMEM_maximum_gpfn, &dom) + 1;
|
||||
p2m_size = xc_memory_op(xch, XENMEM_maximum_gpfn, &dom) + 1;
|
||||
|
||||
/* This is expected by xm restore. */
|
||||
if (write_exact(io_fd, &p2m_size, sizeof(unsigned long))) {
|
||||
@@ -498,7 +498,7 @@ xc_domain_save(xc_interface *xc_handle, int io_fd, uint32_t dom, uint32_t max_it
|
||||
domctl.cmd = XEN_DOMCTL_arch_setup;
|
||||
domctl.domain = (domid_t)dom;
|
||||
domctl.u.arch_setup.flags = XEN_DOMAINSETUP_query;
|
||||
if (xc_domctl(xc_handle, &domctl) < 0) {
|
||||
if (xc_domctl(xch, &domctl) < 0) {
|
||||
ERROR("Could not get domain setup");
|
||||
goto out;
|
||||
}
|
||||
@@ -511,7 +511,7 @@ xc_domain_save(xc_interface *xc_handle, int io_fd, uint32_t dom, uint32_t max_it
|
||||
/* Domain is still running at this point */
|
||||
if (live) {
|
||||
|
||||
if (xc_shadow_control(xc_handle, dom,
|
||||
if (xc_shadow_control(xch, dom,
|
||||
XEN_DOMCTL_SHADOW_OP_ENABLE_LOGDIRTY,
|
||||
NULL, 0, NULL, 0, NULL ) < 0) {
|
||||
ERROR("Couldn't enable shadow mode");
|
||||
@@ -551,7 +551,7 @@ xc_domain_save(xc_interface *xc_handle, int io_fd, uint32_t dom, uint32_t max_it
|
||||
|
||||
last_iter = 1;
|
||||
|
||||
if (suspend_and_state(callbacks->suspend, callbacks->data, xc_handle,
|
||||
if (suspend_and_state(callbacks->suspend, callbacks->data, xch,
|
||||
io_fd, dom, &info)) {
|
||||
ERROR("Domain appears not to have suspended");
|
||||
goto out;
|
||||
@@ -560,14 +560,14 @@ xc_domain_save(xc_interface *xc_handle, int io_fd, uint32_t dom, uint32_t max_it
|
||||
}
|
||||
|
||||
/* copy before use in case someone updating them */
|
||||
if (xc_ia64_copy_memmap(xc_handle, info.domid, live_shinfo,
|
||||
if (xc_ia64_copy_memmap(xch, info.domid, live_shinfo,
|
||||
&memmap_info, &memmap_info_num_pages) != 0) {
|
||||
PERROR("Could not copy memmap");
|
||||
goto out;
|
||||
}
|
||||
memmap_size = memmap_info_num_pages << PAGE_SHIFT;
|
||||
|
||||
if (xc_ia64_p2m_map(&p2m_table, xc_handle, dom, memmap_info, 0) < 0) {
|
||||
if (xc_ia64_p2m_map(&p2m_table, xch, dom, memmap_info, 0) < 0) {
|
||||
PERROR("xc_ia64_p2m_map");
|
||||
goto out;
|
||||
}
|
||||
@@ -596,7 +596,7 @@ xc_domain_save(xc_interface *xc_handle, int io_fd, uint32_t dom, uint32_t max_it
|
||||
slightly wasteful to peek the whole array evey time,
|
||||
but this is fast enough for the moment. */
|
||||
if (!last_iter) {
|
||||
if (xc_shadow_control(xc_handle, dom,
|
||||
if (xc_shadow_control(xch, dom,
|
||||
XEN_DOMCTL_SHADOW_OP_PEEK,
|
||||
to_skip, p2m_size,
|
||||
NULL, 0, NULL) != p2m_size) {
|
||||
@@ -638,7 +638,7 @@ xc_domain_save(xc_interface *xc_handle, int io_fd, uint32_t dom, uint32_t max_it
|
||||
xc_ia64_p2m_mfn(&p2m_table, N),
|
||||
N, p2m_size);
|
||||
|
||||
mem = xc_map_foreign_range(xc_handle, dom, PAGE_SIZE,
|
||||
mem = xc_map_foreign_range(xch, dom, PAGE_SIZE,
|
||||
PROT_READ|PROT_WRITE, N);
|
||||
if (mem == NULL) {
|
||||
/* The page may have move.
|
||||
@@ -681,14 +681,14 @@ xc_domain_save(xc_interface *xc_handle, int io_fd, uint32_t dom, uint32_t max_it
|
||||
last_iter = 1;
|
||||
|
||||
if (suspend_and_state(callbacks->suspend, callbacks->data,
|
||||
xc_handle, io_fd, dom, &info)) {
|
||||
xch, io_fd, dom, &info)) {
|
||||
ERROR("Domain appears not to have suspended");
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
||||
/* Pages to be sent are pages which were dirty. */
|
||||
if (xc_shadow_control(xc_handle, dom,
|
||||
if (xc_shadow_control(xch, dom,
|
||||
XEN_DOMCTL_SHADOW_OP_CLEAN,
|
||||
to_send, p2m_size,
|
||||
NULL, 0, NULL ) != p2m_size) {
|
||||
@@ -698,7 +698,7 @@ xc_domain_save(xc_interface *xc_handle, int io_fd, uint32_t dom, uint32_t max_it
|
||||
|
||||
sent_last_iter = sent_this_iter;
|
||||
|
||||
//print_stats(xc_handle, dom, sent_this_iter, &stats, 1);
|
||||
//print_stats(xch, dom, sent_this_iter, &stats, 1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -713,16 +713,16 @@ xc_domain_save(xc_interface *xc_handle, int io_fd, uint32_t dom, uint32_t max_it
|
||||
}
|
||||
}
|
||||
|
||||
if (xc_ia64_send_unallocated_list(xc_handle, io_fd, &p2m_table,
|
||||
if (xc_ia64_send_unallocated_list(xch, io_fd, &p2m_table,
|
||||
memmap_info,
|
||||
memmap_desc_start, memmap_desc_end))
|
||||
goto out;
|
||||
|
||||
if (!hvm)
|
||||
rc = xc_ia64_pv_send_context(xc_handle, io_fd,
|
||||
rc = xc_ia64_pv_send_context(xch, io_fd,
|
||||
dom, &info, live_shinfo);
|
||||
else
|
||||
rc = xc_ia64_hvm_send_context(xc_handle, io_fd,
|
||||
rc = xc_ia64_hvm_send_context(xch, io_fd,
|
||||
dom, &info, live_shinfo);
|
||||
if (rc)
|
||||
goto out;
|
||||
@@ -735,27 +735,27 @@ xc_domain_save(xc_interface *xc_handle, int io_fd, uint32_t dom, uint32_t max_it
|
||||
callbacks->postcopy(callbacks->data);
|
||||
|
||||
/* Flush last write and discard cache for file. */
|
||||
discard_file_cache(io_fd, 1 /* flush */);
|
||||
discard_file_cache(xch, io_fd, 1 /* flush */);
|
||||
|
||||
/* checkpoint_cb can spend arbitrarily long in between rounds */
|
||||
if (!rc && callbacks->checkpoint &&
|
||||
callbacks->checkpoint(callbacks->data) > 0)
|
||||
{
|
||||
/* reset stats timer */
|
||||
//print_stats(xc_handle, dom, 0, &stats, 0);
|
||||
//print_stats(xch, dom, 0, &stats, 0);
|
||||
|
||||
rc = 1;
|
||||
/* last_iter = 1; */
|
||||
if ( suspend_and_state(callbacks->suspend, callbacks->data, xc_handle,
|
||||
if ( suspend_and_state(callbacks->suspend, callbacks->data, xch,
|
||||
io_fd, dom, &info) )
|
||||
{
|
||||
ERROR("Domain appears not to have suspended");
|
||||
goto out;
|
||||
}
|
||||
DPRINTF("SUSPEND shinfo %08lx\n", info.shared_info_frame);
|
||||
//print_stats(xc_handle, dom, 0, &stats, 1);
|
||||
//print_stats(xch, dom, 0, &stats, 1);
|
||||
|
||||
if ( xc_shadow_control(xc_handle, dom,
|
||||
if ( xc_shadow_control(xch, dom,
|
||||
XEN_DOMCTL_SHADOW_OP_CLEAN, to_send,
|
||||
p2m_size, NULL, 0, NULL) != p2m_size )
|
||||
{
|
||||
@@ -766,7 +766,7 @@ xc_domain_save(xc_interface *xc_handle, int io_fd, uint32_t dom, uint32_t max_it
|
||||
}
|
||||
|
||||
if (live) {
|
||||
if (xc_shadow_control(xc_handle, dom,
|
||||
if (xc_shadow_control(xch, dom,
|
||||
XEN_DOMCTL_SHADOW_OP_OFF,
|
||||
NULL, 0, NULL, 0, NULL ) < 0) {
|
||||
DPRINTF("Warning - couldn't disable shadow mode");
|
||||
|
||||
@@ -19,7 +19,7 @@ xc_ia64_fpsr_default(void)
|
||||
}
|
||||
|
||||
static int
|
||||
xc_ia64_get_pfn_list(xc_interface *xc_handle, uint32_t domid, xen_pfn_t *pfn_buf,
|
||||
xc_ia64_get_pfn_list(xc_interface *xch, uint32_t domid, xen_pfn_t *pfn_buf,
|
||||
unsigned int start_page, unsigned int nr_pages)
|
||||
{
|
||||
DECLARE_DOMCTL;
|
||||
@@ -36,34 +36,34 @@ xc_ia64_get_pfn_list(xc_interface *xc_handle, uint32_t domid, xen_pfn_t *pfn_buf
|
||||
PERROR("Could not lock pfn list buffer");
|
||||
return -1;
|
||||
}
|
||||
ret = do_domctl(xc_handle, &domctl);
|
||||
ret = do_domctl(xch, &domctl);
|
||||
unlock_pages(pfn_buf, nr_pages * sizeof(xen_pfn_t));
|
||||
|
||||
return ret < 0 ? -1 : nr_pages;
|
||||
}
|
||||
|
||||
int
|
||||
xc_get_pfn_list(xc_interface *xc_handle, uint32_t domid, uint64_t *pfn_buf,
|
||||
xc_get_pfn_list(xc_interface *xch, uint32_t domid, uint64_t *pfn_buf,
|
||||
unsigned long max_pfns)
|
||||
{
|
||||
return xc_ia64_get_pfn_list(xc_handle, domid, (xen_pfn_t *)pfn_buf,
|
||||
return xc_ia64_get_pfn_list(xch, domid, (xen_pfn_t *)pfn_buf,
|
||||
0, max_pfns);
|
||||
}
|
||||
|
||||
long
|
||||
xc_get_max_pages(xc_interface *xc_handle, uint32_t domid)
|
||||
xc_get_max_pages(xc_interface *xch, uint32_t domid)
|
||||
{
|
||||
struct xen_domctl domctl;
|
||||
domctl.cmd = XEN_DOMCTL_getdomaininfo;
|
||||
domctl.domain = (domid_t)domid;
|
||||
return ((do_domctl(xc_handle, &domctl) < 0)
|
||||
return ((do_domctl(xch, &domctl) < 0)
|
||||
? -1 : domctl.u.getdomaininfo.max_pages);
|
||||
}
|
||||
|
||||
/* It is possible to get memmap_info and memmap by
|
||||
foreign domain page mapping. But it's racy. Use hypercall to avoid race. */
|
||||
static int
|
||||
xc_ia64_get_memmap(xc_interface *xc_handle,
|
||||
xc_ia64_get_memmap(xc_interface *xch,
|
||||
uint32_t domid, char *buf, unsigned long bufsize)
|
||||
{
|
||||
privcmd_hypercall_t hypercall;
|
||||
@@ -78,13 +78,13 @@ xc_ia64_get_memmap(xc_interface *xc_handle,
|
||||
|
||||
if (lock_pages(buf, bufsize) != 0)
|
||||
return -1;
|
||||
ret = do_xen_hypercall(xc_handle, &hypercall);
|
||||
ret = do_xen_hypercall(xch, &hypercall);
|
||||
unlock_pages(buf, bufsize);
|
||||
return ret;
|
||||
}
|
||||
|
||||
int
|
||||
xc_ia64_copy_memmap(xc_interface *xc_handle, uint32_t domid, shared_info_t *live_shinfo,
|
||||
xc_ia64_copy_memmap(xc_interface *xch, uint32_t domid, shared_info_t *live_shinfo,
|
||||
xen_ia64_memmap_info_t **memmap_info_p,
|
||||
unsigned long *memmap_info_num_pages_p)
|
||||
{
|
||||
@@ -98,7 +98,7 @@ xc_ia64_copy_memmap(xc_interface *xc_handle, uint32_t domid, shared_info_t *live
|
||||
|
||||
int ret;
|
||||
|
||||
gpfn_max_prev = xc_memory_op(xc_handle, XENMEM_maximum_gpfn, &domid);
|
||||
gpfn_max_prev = xc_memory_op(xch, XENMEM_maximum_gpfn, &domid);
|
||||
if (gpfn_max_prev < 0)
|
||||
return -1;
|
||||
|
||||
@@ -113,7 +113,7 @@ xc_ia64_copy_memmap(xc_interface *xc_handle, uint32_t domid, shared_info_t *live
|
||||
memmap_info = malloc(memmap_size);
|
||||
if (memmap_info == NULL)
|
||||
return -1;
|
||||
ret = xc_ia64_get_memmap(xc_handle,
|
||||
ret = xc_ia64_get_memmap(xch,
|
||||
domid, (char*)memmap_info, memmap_size);
|
||||
if (ret != 0) {
|
||||
free(memmap_info);
|
||||
@@ -127,7 +127,7 @@ xc_ia64_copy_memmap(xc_interface *xc_handle, uint32_t domid, shared_info_t *live
|
||||
goto again;
|
||||
}
|
||||
|
||||
gpfn_max_post = xc_memory_op(xc_handle, XENMEM_maximum_gpfn, &domid);
|
||||
gpfn_max_post = xc_memory_op(xch, XENMEM_maximum_gpfn, &domid);
|
||||
if (gpfn_max_prev < 0) {
|
||||
free(memmap_info);
|
||||
return -1;
|
||||
@@ -163,7 +163,7 @@ xc_ia64_copy_memmap(xc_interface *xc_handle, uint32_t domid, shared_info_t *live
|
||||
#define PTRS_PER_PTE (1UL << (PAGE_SHIFT - 3))
|
||||
|
||||
static void*
|
||||
xc_ia64_map_foreign_p2m(xc_interface *xc_handle, uint32_t dom,
|
||||
xc_ia64_map_foreign_p2m(xc_interface *xch, uint32_t dom,
|
||||
struct xen_ia64_memmap_info *memmap_info,
|
||||
unsigned long flags, unsigned long *p2m_size_p)
|
||||
{
|
||||
@@ -174,12 +174,12 @@ xc_ia64_map_foreign_p2m(xc_interface *xc_handle, uint32_t dom,
|
||||
int ret;
|
||||
int saved_errno;
|
||||
|
||||
gpfn_max = xc_memory_op(xc_handle, XENMEM_maximum_gpfn, &dom);
|
||||
gpfn_max = xc_memory_op(xch, XENMEM_maximum_gpfn, &dom);
|
||||
if (gpfn_max < 0)
|
||||
return NULL;
|
||||
p2m_size =
|
||||
(((gpfn_max + 1) + PTRS_PER_PTE - 1) / PTRS_PER_PTE) << PAGE_SHIFT;
|
||||
addr = mmap(NULL, p2m_size, PROT_READ, MAP_SHARED, xc_handle, 0);
|
||||
addr = mmap(NULL, p2m_size, PROT_READ, MAP_SHARED, xch->fd, 0);
|
||||
if (addr == MAP_FAILED)
|
||||
return NULL;
|
||||
|
||||
@@ -197,7 +197,7 @@ xc_ia64_map_foreign_p2m(xc_interface *xc_handle, uint32_t dom,
|
||||
errno = saved_errno;
|
||||
return NULL;
|
||||
}
|
||||
ret = do_xen_hypercall(xc_handle, &hypercall);
|
||||
ret = do_xen_hypercall(xch, &hypercall);
|
||||
saved_errno = errno;
|
||||
unlock_pages(memmap_info,
|
||||
sizeof(*memmap_info) + memmap_info->efi_memmap_size);
|
||||
@@ -219,11 +219,11 @@ xc_ia64_p2m_init(struct xen_ia64_p2m_table *p2m_table)
|
||||
}
|
||||
|
||||
int
|
||||
xc_ia64_p2m_map(struct xen_ia64_p2m_table *p2m_table, xc_interface *xc_handle,
|
||||
xc_ia64_p2m_map(struct xen_ia64_p2m_table *p2m_table, xc_interface *xch,
|
||||
uint32_t domid, struct xen_ia64_memmap_info *memmap_info,
|
||||
unsigned long flag)
|
||||
{
|
||||
p2m_table->p2m = xc_ia64_map_foreign_p2m(xc_handle, domid, memmap_info,
|
||||
p2m_table->p2m = xc_ia64_map_foreign_p2m(xch, domid, memmap_info,
|
||||
flag, &p2m_table->size);
|
||||
if (p2m_table->p2m == NULL) {
|
||||
PERROR("Could not map foreign p2m. falling back to old method");
|
||||
|
||||
@@ -642,7 +642,7 @@ xc_domain_dumpcore_via_callback(xc_interface *xch,
|
||||
offset += filesz;
|
||||
|
||||
/* arch context */
|
||||
sts = xc_core_arch_context_get_shdr(&arch_ctxt, sheaders, strtab,
|
||||
sts = xc_core_arch_context_get_shdr(xch, &arch_ctxt, sheaders, strtab,
|
||||
&filesz, offset);
|
||||
if ( sts != 0 )
|
||||
goto out;
|
||||
@@ -773,7 +773,7 @@ xc_domain_dumpcore_via_callback(xc_interface *xch,
|
||||
}
|
||||
|
||||
/* arch specific context */
|
||||
sts = xc_core_arch_context_dump(&arch_ctxt, args, dump_rtn);
|
||||
sts = xc_core_arch_context_dump(xch, &arch_ctxt, args, dump_rtn);
|
||||
if ( sts != 0 )
|
||||
goto out;
|
||||
|
||||
|
||||
@@ -48,10 +48,12 @@ xc_memory_map_cmp(const void *lhs__, const void *rhs__)
|
||||
return 1;
|
||||
|
||||
/* memory map overlap isn't allowed. complain */
|
||||
DPRINTF("duplicated addresses are detected "
|
||||
#ifdef DEBUG
|
||||
fprintf(stderr, "duplicated addresses are detected "
|
||||
"(0x%" PRIx64 ", 0x%" PRIx64 "), "
|
||||
"(0x%" PRIx64 ", 0x%" PRIx64 ")\n",
|
||||
lhs->addr, lhs->size, rhs->addr, rhs->size);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -316,7 +318,8 @@ xc_core_arch_context_get(struct xc_core_arch_context* arch_ctxt,
|
||||
}
|
||||
|
||||
int
|
||||
xc_core_arch_context_get_shdr(struct xc_core_arch_context *arch_ctxt,
|
||||
xc_core_arch_context_get_shdr(xc_interface *xch,
|
||||
struct xc_core_arch_context *arch_ctxt,
|
||||
struct xc_core_section_headers *sheaders,
|
||||
struct xc_core_strtab *strtab,
|
||||
uint64_t *filesz, uint64_t offset)
|
||||
@@ -332,14 +335,15 @@ xc_core_arch_context_get_shdr(struct xc_core_arch_context *arch_ctxt,
|
||||
}
|
||||
|
||||
/* mmapped priv regs */
|
||||
shdr = xc_core_shdr_get(sheaders);
|
||||
shdr = xc_core_shdr_get(xch, sheaders);
|
||||
if ( shdr == NULL )
|
||||
{
|
||||
PERROR("Could not get section header for .xen_ia64_mapped_regs");
|
||||
return sts;
|
||||
}
|
||||
*filesz = arch_ctxt->mapped_regs_size * arch_ctxt->nr_vcpus;
|
||||
sts = xc_core_shdr_set(shdr, strtab, XEN_DUMPCORE_SEC_IA64_MAPPED_REGS,
|
||||
sts = xc_core_shdr_set(xch, shdr, strtab,
|
||||
XEN_DUMPCORE_SEC_IA64_MAPPED_REGS,
|
||||
SHT_PROGBITS, offset, *filesz,
|
||||
__alignof__(*arch_ctxt->mapped_regs[0]),
|
||||
arch_ctxt->mapped_regs_size);
|
||||
@@ -347,7 +351,8 @@ xc_core_arch_context_get_shdr(struct xc_core_arch_context *arch_ctxt,
|
||||
}
|
||||
|
||||
int
|
||||
xc_core_arch_context_dump(struct xc_core_arch_context* arch_ctxt,
|
||||
xc_core_arch_context_dump(xc_interface *xch,
|
||||
struct xc_core_arch_context* arch_ctxt,
|
||||
void* args, dumpcore_rtn_t dump_rtn)
|
||||
{
|
||||
int sts = 0;
|
||||
@@ -356,7 +361,7 @@ xc_core_arch_context_dump(struct xc_core_arch_context* arch_ctxt,
|
||||
/* ia64 mapped_regs: .xen_ia64_mapped_regs */
|
||||
for ( i = 0; i < arch_ctxt->nr_vcpus; i++ )
|
||||
{
|
||||
sts = dump_rtn(args, (char*)arch_ctxt->mapped_regs[i],
|
||||
sts = dump_rtn(xch, args, (char*)arch_ctxt->mapped_regs[i],
|
||||
arch_ctxt->mapped_regs_size);
|
||||
if ( sts != 0 )
|
||||
break;
|
||||
|
||||
@@ -43,12 +43,14 @@ xc_core_arch_context_get(struct xc_core_arch_context* arch_ctxt,
|
||||
vcpu_guest_context_any_t* ctxt,
|
||||
xc_interface *xch, uint32_t domid);
|
||||
int
|
||||
xc_core_arch_context_get_shdr(struct xc_core_arch_context* arch_ctxt,
|
||||
xc_core_arch_context_get_shdr(xc_interface *xch,
|
||||
struct xc_core_arch_context* arch_ctxt,
|
||||
struct xc_core_section_headers *sheaders,
|
||||
struct xc_core_strtab *strtab,
|
||||
uint64_t *filesz, uint64_t offset);
|
||||
int
|
||||
xc_core_arch_context_dump(struct xc_core_arch_context* arch_ctxt,
|
||||
xc_core_arch_context_dump(xc_interface *xch,
|
||||
struct xc_core_arch_context* arch_ctxt,
|
||||
void* args, dumpcore_rtn_t dump_rtn);
|
||||
|
||||
int
|
||||
|
||||
@@ -32,13 +32,14 @@ struct xc_core_arch_context {
|
||||
#define xc_core_arch_context_free(arch_ctxt) do {} while (0)
|
||||
#define xc_core_arch_context_get(arch_ctxt, ctxt, xch, domid) \
|
||||
(0)
|
||||
#define xc_core_arch_context_dump(arch_ctxt, args, dump_rtn) (0)
|
||||
#define xc_core_arch_context_dump(xch, arch_ctxt, args, dump_rtn) (0)
|
||||
|
||||
int
|
||||
xc_core_arch_gpfn_may_present(struct xc_core_arch_context *arch_ctxt,
|
||||
unsigned long pfn);
|
||||
static inline int
|
||||
xc_core_arch_context_get_shdr(struct xc_core_arch_context *arch_ctxt,
|
||||
xc_core_arch_context_get_shdr(xc_interface *xch,
|
||||
struct xc_core_arch_context *arch_ctxt,
|
||||
struct xc_core_section_headers *sheaders,
|
||||
struct xc_core_strtab *strtab,
|
||||
uint64_t *filesz, uint64_t offset)
|
||||
|
||||
@@ -172,7 +172,7 @@ int arch_setup_meminit(struct xc_dom_image *dom)
|
||||
dom->p2m_host[pfn] = start + pfn;
|
||||
|
||||
/* allocate guest memory */
|
||||
rc = xc_domain_memory_populate_physmap(dom->guest_xc, dom->guest_domid,
|
||||
rc = xc_domain_memory_populate_physmap(dom->xch, dom->guest_domid,
|
||||
nbr, 0, 0,
|
||||
dom->p2m_host);
|
||||
return rc;
|
||||
@@ -195,7 +195,7 @@ static int ia64_setup_memmap(struct xc_dom_image *dom)
|
||||
memmap_info_pfn = dom->start_info_pfn - 1;
|
||||
DOMPRINTF("%s: memmap: mfn 0x%" PRIpfn " pages 0x%lx",
|
||||
__FUNCTION__, memmap_info_pfn, memmap_info_num_pages);
|
||||
memmap_info = xc_map_foreign_range(dom->guest_xc, dom->guest_domid,
|
||||
memmap_info = xc_map_foreign_range(dom->xch, dom->guest_domid,
|
||||
page_size * memmap_info_num_pages,
|
||||
PROT_READ | PROT_WRITE,
|
||||
memmap_info_pfn);
|
||||
@@ -225,7 +225,7 @@ static int ia64_setup_memmap(struct xc_dom_image *dom)
|
||||
* we use xen_ia64_boot_param::efi_memmap::{efi_memmap, efi_memmap_size}
|
||||
* for this purpose
|
||||
*/
|
||||
start_info = xc_map_foreign_range(dom->guest_xc, dom->guest_domid,
|
||||
start_info = xc_map_foreign_range(dom->xch, dom->guest_domid,
|
||||
page_size,
|
||||
PROT_READ | PROT_WRITE,
|
||||
dom->start_info_pfn);
|
||||
@@ -254,7 +254,7 @@ int arch_setup_bootearly(struct xc_dom_image *dom)
|
||||
domctl.u.arch_setup.maxmem = 0;
|
||||
domctl.cmd = XEN_DOMCTL_arch_setup;
|
||||
domctl.domain = dom->guest_domid;
|
||||
rc = xc_domctl(dom->guest_xc, &domctl);
|
||||
rc = xc_domctl(dom->xch, &domctl);
|
||||
DOMPRINTF("%s: hvm-3.0-ia64-sioemu: %d", __FUNCTION__, rc);
|
||||
return rc;
|
||||
}
|
||||
@@ -267,7 +267,7 @@ int arch_setup_bootearly(struct xc_dom_image *dom)
|
||||
domctl.cmd = XEN_DOMCTL_arch_setup;
|
||||
domctl.domain = dom->guest_domid;
|
||||
domctl.u.arch_setup.flags = XEN_DOMAINSETUP_query;
|
||||
rc = do_domctl(dom->guest_xc, &domctl);
|
||||
rc = do_domctl(dom->xch, &domctl);
|
||||
if (rc)
|
||||
return rc;
|
||||
rc = xen_ia64_dom_fw_setup(dom, domctl.u.arch_setup.hypercall_imm,
|
||||
@@ -286,7 +286,7 @@ int arch_setup_bootearly(struct xc_dom_image *dom)
|
||||
+ sizeof(start_info_t);
|
||||
domctl.u.arch_setup.maxmem = dom->total_pages << PAGE_SHIFT;
|
||||
domctl.u.arch_setup.vhpt_size_log2 = dom->vhpt_size_log2;
|
||||
rc = do_domctl(dom->guest_xc, &domctl);
|
||||
rc = do_domctl(dom->xch, &domctl);
|
||||
return rc;
|
||||
}
|
||||
|
||||
@@ -298,7 +298,7 @@ int arch_setup_bootlate(struct xc_dom_image *dom)
|
||||
/* setup shared_info page */
|
||||
DOMPRINTF("%s: shared_info: mfn 0x%" PRIpfn "",
|
||||
__FUNCTION__, dom->shared_info_mfn);
|
||||
shared_info = xc_map_foreign_range(dom->guest_xc, dom->guest_domid,
|
||||
shared_info = xc_map_foreign_range(dom->xch, dom->guest_domid,
|
||||
page_size,
|
||||
PROT_READ | PROT_WRITE,
|
||||
dom->shared_info_mfn);
|
||||
|
||||
@@ -318,7 +318,11 @@ dom_fw_pal_hypercall_patch(uint64_t brkimm, unsigned long paddr, unsigned long i
|
||||
}
|
||||
|
||||
static inline void
|
||||
#ifdef __XEN__
|
||||
print_md(efi_memory_desc_t *md)
|
||||
#else
|
||||
print_md(xc_interface *xch, efi_memory_desc_t *md)
|
||||
#endif
|
||||
{
|
||||
uint64_t size;
|
||||
|
||||
@@ -581,7 +585,11 @@ dom_fw_init(domain_t *d,
|
||||
if (xen_ia64_is_dom0(d)) {
|
||||
efi_systable_init_dom0(tables);
|
||||
} else {
|
||||
#ifdef __XEN__
|
||||
efi_systable_init_domu(tables);
|
||||
#else
|
||||
efi_systable_init_domu(d->xch, tables);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* fill in the SAL system table: */
|
||||
@@ -675,7 +683,11 @@ dom_fw_init(domain_t *d,
|
||||
|
||||
/* Display memmap. */
|
||||
for (i = 0 ; i < tables->num_mds; i++)
|
||||
#ifdef __XEN__
|
||||
print_md(&tables->efi_memmap[i]);
|
||||
#else
|
||||
print_md(d->xch, &tables->efi_memmap[i]);
|
||||
#endif
|
||||
|
||||
/* Fill boot_param */
|
||||
bp->efi_systab = FW_FIELD_MPA(efi_systab);
|
||||
|
||||
@@ -47,7 +47,11 @@
|
||||
#include <asm/dom_fw.h>
|
||||
#include <asm/dom_fw_domu.h>
|
||||
|
||||
#ifdef __XEN__
|
||||
void efi_systable_init_domu(struct fw_tables *tables)
|
||||
#else
|
||||
void efi_systable_init_domu(xc_interface *xch, struct fw_tables *tables)
|
||||
#endif
|
||||
{
|
||||
int i = 1;
|
||||
|
||||
@@ -77,6 +81,9 @@ complete_domu_memmap(domain_t * d,
|
||||
void *p;
|
||||
void *memmap_start;
|
||||
void *memmap_end;
|
||||
#ifndef __XEN__
|
||||
xc_interface *xch = d->xch;
|
||||
#endif
|
||||
|
||||
if (memmap_info_pfn == 0 || memmap_info_num_pages == 0) {
|
||||
/* old domain builder which doesn't setup
|
||||
|
||||
@@ -35,7 +35,7 @@ typedef struct xc_dom_image domain_t;
|
||||
#define XENLOG_INFO "info:"
|
||||
#define XENLOG_WARNING "Warning:"
|
||||
#define XENLOG_GUEST ""
|
||||
#define printk(fmt, args ...) xc_dom_printf(fmt, ## args)
|
||||
#define printk(fmt, args ...) IPRINTF(fmt, ## args)
|
||||
|
||||
#define BUG_ON(p) assert(!(p))
|
||||
#define BUILD_BUG_ON(condition) ((void)sizeof(struct { int:-!!(condition); }))
|
||||
|
||||
@@ -23,7 +23,11 @@
|
||||
|
||||
#include <asm/dom_fw_common.h>
|
||||
|
||||
#ifdef __XEN__
|
||||
void efi_systable_init_domu(struct fw_tables *tables);
|
||||
#else
|
||||
void efi_systable_init_domu(xc_interface *xch, struct fw_tables *tables);
|
||||
#endif
|
||||
|
||||
int
|
||||
complete_domu_memmap(domain_t *d,
|
||||
|
||||