[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] Make domctl/sysctl interfaces 32-/64-bit invariant.
# HG changeset patch # User kfraser@xxxxxxxxxxxxxxxxxxxxx # Date 1169656399 0 # Node ID 30af6cfdb05c6e56b3024e8be4abb3a10fc41297 # Parent a94363b85e192540bf94c4da60adcf4176ecbdd0 Make domctl/sysctl interfaces 32-/64-bit invariant. This kills off a fair amount of unpleasant CONFIG_COMPAT shimming and avoids needing to keep the compat paths in sync as these interfaces continue to develop. Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx> --- xen/arch/x86/x86_64/domctl.c | 111 ----------------------- xen/arch/x86/x86_64/sysctl.c | 33 ------ xen/common/compat/domctl.c | 137 ---------------------------- xen/common/compat/sysctl.c | 95 ------------------- tools/libxc/ia64/xc_ia64_stubs.c | 8 + tools/libxc/powerpc64/utils.c | 2 tools/libxc/xc_core.c | 8 - tools/libxc/xc_domain.c | 3 tools/libxc/xc_linux_save.c | 12 +- tools/libxc/xc_private.c | 29 +----- tools/libxc/xc_ptrace.c | 8 - tools/libxc/xc_resume.c | 2 tools/libxc/xenctrl.h | 4 xen/arch/ia64/xen/dom0_ops.c | 2 xen/arch/ia64/xen/domain.c | 30 +++--- xen/arch/powerpc/domctl.c | 2 xen/arch/x86/domctl.c | 74 +++++---------- xen/arch/x86/mm/shadow/common.c | 13 +- xen/arch/x86/sysctl.c | 8 - xen/arch/x86/x86_64/Makefile | 2 xen/arch/x86/x86_64/compat/entry.S | 7 + xen/common/compat/Makefile | 4 xen/common/domain.c | 72 -------------- xen/common/domctl.c | 149 +++++++++++++------------------ xen/common/sysctl.c | 15 +-- xen/include/Makefile | 2 xen/include/public/arch-x86/xen-x86_32.h | 19 +++ xen/include/public/arch-x86/xen.h | 12 +- xen/include/public/domctl.h | 67 ++++++------- xen/include/public/sysctl.h | 18 +-- xen/include/public/xen.h | 10 ++ xen/include/xen/domain.h | 6 - xen/include/xen/sched.h | 7 - xen/include/xlat.lst | 7 - 34 files changed, 234 insertions(+), 744 deletions(-) diff -r a94363b85e19 -r 30af6cfdb05c tools/libxc/ia64/xc_ia64_stubs.c --- a/tools/libxc/ia64/xc_ia64_stubs.c Wed Jan 24 15:59:09 2007 +0000 +++ b/tools/libxc/ia64/xc_ia64_stubs.c Wed Jan 24 16:33:19 2007 +0000 @@ -74,10 +74,11 @@ xc_ia64_get_pfn_list(int xc_handle, uint } int -xc_get_pfn_list(int xc_handle, uint32_t domid, xen_pfn_t *pfn_buf, +xc_get_pfn_list(int xc_handle, uint32_t domid, uint64_t *pfn_buf, unsigned long max_pfns) { - return xc_ia64_get_pfn_list (xc_handle, domid, pfn_buf, 0, max_pfns); + return xc_ia64_get_pfn_list(xc_handle, domid, (xen_pfn_t *)pfn_buf, + 0, max_pfns); } long @@ -86,7 +87,8 @@ xc_get_max_pages(int xc_handle, uint32_t struct xen_domctl domctl; domctl.cmd = XEN_DOMCTL_getdomaininfo; domctl.domain = (domid_t)domid; - return (do_domctl(xc_handle, &domctl) < 0) ? -1 : domctl.u.getdomaininfo.max_pages; + return ((do_domctl(xc_handle, &domctl) < 0) + ? -1 : domctl.u.getdomaininfo.max_pages); } /* diff -r a94363b85e19 -r 30af6cfdb05c tools/libxc/powerpc64/utils.c --- a/tools/libxc/powerpc64/utils.c Wed Jan 24 15:59:09 2007 +0000 +++ b/tools/libxc/powerpc64/utils.c Wed Jan 24 16:33:19 2007 +0000 @@ -76,7 +76,7 @@ int get_rma_page_array(int xc_handle, in DPRINTF("xc_get_pfn_list\n"); /* We know that the RMA is machine contiguous so lets just get the * first MFN and fill the rest in ourselves */ - rc = xc_get_pfn_list(xc_handle, domid, *page_array, 1); + rc = xc_get_pfn_list(xc_handle, domid, (uint64_t *)*page_array, 1); if (rc == -1) { perror("Could not get the page frame list"); return -1; diff -r a94363b85e19 -r 30af6cfdb05c tools/libxc/xc_core.c --- a/tools/libxc/xc_core.c Wed Jan 24 15:59:09 2007 +0000 +++ b/tools/libxc/xc_core.c Wed Jan 24 16:33:19 2007 +0000 @@ -28,7 +28,7 @@ xc_domain_dumpcore_via_callback(int xc_h dumpcore_rtn_t dump_rtn) { unsigned long nr_pages; - xen_pfn_t *page_array = NULL; + uint64_t *page_array = NULL; xc_dominfo_t info; int i, nr_vcpus = 0; char *dump_mem, *dump_mem_start = NULL; @@ -70,7 +70,7 @@ xc_domain_dumpcore_via_callback(int xc_h sizeof(vcpu_guest_context_t)*nr_vcpus; dummy_len = (sizeof(struct xc_core_header) + (sizeof(vcpu_guest_context_t) * nr_vcpus) + - (nr_pages * sizeof(xen_pfn_t))); + (nr_pages * sizeof(*page_array))); header.xch_pages_offset = round_pgup(dummy_len); sts = dump_rtn(args, (char *)&header, sizeof(struct xc_core_header)); @@ -81,7 +81,7 @@ xc_domain_dumpcore_via_callback(int xc_h if ( sts != 0 ) goto error_out; - if ( (page_array = malloc(nr_pages * sizeof(xen_pfn_t))) == NULL ) + if ( (page_array = malloc(nr_pages * sizeof(*page_array))) == NULL ) { IPRINTF("Could not allocate memory\n"); goto error_out; @@ -91,7 +91,7 @@ xc_domain_dumpcore_via_callback(int xc_h IPRINTF("Could not get the page frame list\n"); goto error_out; } - sts = dump_rtn(args, (char *)page_array, nr_pages * sizeof(xen_pfn_t)); + sts = dump_rtn(args, (char *)page_array, nr_pages * sizeof(*page_array)); if ( sts != 0 ) goto error_out; diff -r a94363b85e19 -r 30af6cfdb05c tools/libxc/xc_domain.c --- a/tools/libxc/xc_domain.c Wed Jan 24 15:59:09 2007 +0000 +++ b/tools/libxc/xc_domain.c Wed Jan 24 16:33:19 2007 +0000 @@ -323,7 +323,8 @@ int xc_shadow_control(int xc_handle, domctl.u.shadow_op.pages = pages; domctl.u.shadow_op.mb = mb ? *mb : 0; domctl.u.shadow_op.mode = mode; - set_xen_guest_handle(domctl.u.shadow_op.dirty_bitmap, dirty_bitmap); + set_xen_guest_handle(domctl.u.shadow_op.dirty_bitmap, + (uint8_t *)dirty_bitmap); rc = do_domctl(xc_handle, &domctl); diff -r a94363b85e19 -r 30af6cfdb05c tools/libxc/xc_linux_save.c --- a/tools/libxc/xc_linux_save.c Wed Jan 24 15:59:09 2007 +0000 +++ b/tools/libxc/xc_linux_save.c Wed Jan 24 16:33:19 2007 +0000 @@ -811,8 +811,8 @@ int xc_linux_save(int xc_handle, int io_ analysis_phase(xc_handle, dom, max_pfn, to_skip, 0); /* We want zeroed memory so use calloc rather than malloc. */ - pfn_type = calloc(MAX_BATCH_SIZE, sizeof(*pfn_type)); - pfn_batch = calloc(MAX_BATCH_SIZE, sizeof(*pfn_batch)); + pfn_type = calloc(MAX_BATCH_SIZE, sizeof(*pfn_type)); + pfn_batch = calloc(MAX_BATCH_SIZE, sizeof(*pfn_batch)); if ((pfn_type == NULL) || (pfn_batch == NULL)) { ERROR("failed to alloc memory for pfn_type and/or pfn_batch arrays"); @@ -976,10 +976,16 @@ int xc_linux_save(int xc_handle, int io_ goto out; } - if (xc_get_pfn_type_batch(xc_handle, dom, batch, pfn_type)) { + for ( j = 0; j < batch; j++ ) + ((uint32_t *)pfn_type)[i] = pfn_type[i]; + if ( xc_get_pfn_type_batch(xc_handle, dom, batch, + (uint32_t *)pfn_type) ) + { ERROR("get_pfn_type_batch failed"); goto out; } + for ( j = batch-1; j >= 0; j-- ) + pfn_type[i] = ((uint32_t *)pfn_type)[i]; for ( j = 0; j < batch; j++ ) { diff -r a94363b85e19 -r 30af6cfdb05c tools/libxc/xc_private.c --- a/tools/libxc/xc_private.c Wed Jan 24 15:59:09 2007 +0000 +++ b/tools/libxc/xc_private.c Wed Jan 24 16:33:19 2007 +0000 @@ -102,7 +102,7 @@ void unlock_pages(void *addr, size_t len /* NB: arr must be locked */ int xc_get_pfn_type_batch(int xc_handle, - uint32_t dom, int num, unsigned long *arr) + uint32_t dom, int num, uint32_t *arr) { DECLARE_DOMCTL; domctl.cmd = XEN_DOMCTL_getpageframeinfo2; @@ -309,7 +309,7 @@ long long xc_domain_get_cpu_usage( int x #ifndef __ia64__ int xc_get_pfn_list(int xc_handle, uint32_t domid, - xen_pfn_t *pfn_buf, + uint64_t *pfn_buf, unsigned long max_pfns) { DECLARE_DOMCTL; @@ -320,10 +320,10 @@ int xc_get_pfn_list(int xc_handle, set_xen_guest_handle(domctl.u.getmemlist.buffer, pfn_buf); #ifdef VALGRIND - memset(pfn_buf, 0, max_pfns * sizeof(xen_pfn_t)); -#endif - - if ( lock_pages(pfn_buf, max_pfns * sizeof(xen_pfn_t)) != 0 ) + memset(pfn_buf, 0, max_pfns * sizeof(*pfn_buf)); +#endif + + if ( lock_pages(pfn_buf, max_pfns * sizeof(*pfn_buf)) != 0 ) { PERROR("xc_get_pfn_list: pfn_buf lock failed"); return -1; @@ -331,22 +331,7 @@ int xc_get_pfn_list(int xc_handle, ret = do_domctl(xc_handle, &domctl); - unlock_pages(pfn_buf, max_pfns * sizeof(xen_pfn_t)); - -#if 0 -#ifdef DEBUG - DPRINTF(("Ret for xc_get_pfn_list is %d\n", ret)); - if (ret >= 0) { - int i, j; - for (i = 0; i < domctl.u.getmemlist.num_pfns; i += 16) { - DPRINTF("0x%x: ", i); - for (j = 0; j < 16; j++) - DPRINTF("0x%lx ", pfn_buf[i + j]); - DPRINTF("\n"); - } - } -#endif -#endif + unlock_pages(pfn_buf, max_pfns * sizeof(*pfn_buf)); return (ret < 0) ? -1 : domctl.u.getmemlist.num_pfns; } diff -r a94363b85e19 -r 30af6cfdb05c tools/libxc/xc_ptrace.c --- a/tools/libxc/xc_ptrace.c Wed Jan 24 15:59:09 2007 +0000 +++ b/tools/libxc/xc_ptrace.c Wed Jan 24 16:33:19 2007 +0000 @@ -153,8 +153,8 @@ online_vcpus_changed(uint64_t cpumap) /* --------------------- */ /* XXX application state */ -static long nr_pages = 0; -static unsigned long *page_array = NULL; +static long nr_pages = 0; +static uint64_t *page_array = NULL; /* @@ -170,7 +170,7 @@ to_ma(int cpu, uint64_t maddr) to_ma(int cpu, uint64_t maddr) { if ( current_is_hvm && paging_enabled(&ctxt[cpu]) ) - maddr = (uint64_t)page_array[maddr >> PAGE_SHIFT] << PAGE_SHIFT; + maddr = page_array[maddr >> PAGE_SHIFT] << PAGE_SHIFT; return maddr; } @@ -360,7 +360,7 @@ map_domain_va( if ( nr_pages > 0 ) free(page_array); nr_pages = npgs; - if ( (page_array = malloc(nr_pages * sizeof(unsigned long))) == NULL ) + if ( (page_array = malloc(nr_pages * sizeof(*page_array))) == NULL ) { IPRINTF("Could not allocate memory\n"); return NULL; diff -r a94363b85e19 -r 30af6cfdb05c tools/libxc/xc_resume.c --- a/tools/libxc/xc_resume.c Wed Jan 24 15:59:09 2007 +0000 +++ b/tools/libxc/xc_resume.c Wed Jan 24 16:33:19 2007 +0000 @@ -58,7 +58,7 @@ static int xc_domain_resume_any(int xc_h if ( xc_domain_getinfo(xc_handle, domid, 1, &info) != 1 ) { PERROR("Could not get domain info"); - goto out; + return rc; } /* diff -r a94363b85e19 -r 30af6cfdb05c tools/libxc/xenctrl.h --- a/tools/libxc/xenctrl.h Wed Jan 24 15:59:09 2007 +0000 +++ b/tools/libxc/xenctrl.h Wed Jan 24 16:33:19 2007 +0000 @@ -552,7 +552,7 @@ unsigned long xc_translate_foreign_addre unsigned long xc_translate_foreign_address(int xc_handle, uint32_t dom, int vcpu, unsigned long long virt); -int xc_get_pfn_list(int xc_handle, uint32_t domid, xen_pfn_t *pfn_buf, +int xc_get_pfn_list(int xc_handle, uint32_t domid, uint64_t *pfn_buf, unsigned long max_pfns); unsigned long xc_ia64_fpsr_default(void); @@ -575,7 +575,7 @@ int xc_memory_op(int xc_handle, int cmd, int xc_memory_op(int xc_handle, int cmd, void *arg); int xc_get_pfn_type_batch(int xc_handle, uint32_t dom, - int num, unsigned long *arr); + int num, uint32_t *arr); /* Get current total pages allocated to a domain. */ diff -r a94363b85e19 -r 30af6cfdb05c xen/arch/ia64/xen/dom0_ops.c --- a/xen/arch/ia64/xen/dom0_ops.c Wed Jan 24 15:59:09 2007 +0000 +++ b/xen/arch/ia64/xen/dom0_ops.c Wed Jan 24 16:33:19 2007 +0000 @@ -43,7 +43,7 @@ long arch_do_domctl(xen_domctl_t *op, XE struct domain *d = find_domain_by_id(op->domain); unsigned long start_page = op->u.getmemlist.start_pfn; unsigned long nr_pages = op->u.getmemlist.max_pfns; - unsigned long mfn; + uint64_t mfn; if ( d == NULL ) { ret = -EINVAL; diff -r a94363b85e19 -r 30af6cfdb05c xen/arch/ia64/xen/domain.c --- a/xen/arch/ia64/xen/domain.c Wed Jan 24 15:59:09 2007 +0000 +++ b/xen/arch/ia64/xen/domain.c Wed Jan 24 16:33:19 2007 +0000 @@ -717,7 +717,7 @@ domain_set_shared_info_va (unsigned long } /* Transfer and clear the shadow bitmap in 1kB chunks for L1 cache. */ -#define SHADOW_COPY_CHUNK (1024 / sizeof (unsigned long)) +#define SHADOW_COPY_CHUNK 1024 int shadow_mode_control(struct domain *d, xen_domctl_shadow_op_t *sc) { @@ -785,7 +785,7 @@ int shadow_mode_control(struct domain *d case XEN_DOMCTL_SHADOW_OP_CLEAN: { - int nbr_longs; + int nbr_bytes; sc->stats.fault_count = atomic64_read(&d->arch.shadow_fault_count); sc->stats.dirty_count = atomic64_read(&d->arch.shadow_dirty_count); @@ -802,21 +802,21 @@ int shadow_mode_control(struct domain *d if (sc->pages > d->arch.shadow_bitmap_size) sc->pages = d->arch.shadow_bitmap_size; - nbr_longs = (sc->pages + BITS_PER_LONG - 1) / BITS_PER_LONG; - - for (i = 0; i < nbr_longs; i += SHADOW_COPY_CHUNK) { - int size = (nbr_longs - i) > SHADOW_COPY_CHUNK ? - SHADOW_COPY_CHUNK : nbr_longs - i; + nbr_bytes = (sc->pages + 7) / 8; + + for (i = 0; i < nbr_bytes; i += SHADOW_COPY_CHUNK) { + int size = (nbr_bytes - i) > SHADOW_COPY_CHUNK ? + SHADOW_COPY_CHUNK : nbr_bytes - i; - if (copy_to_guest_offset(sc->dirty_bitmap, i, - d->arch.shadow_bitmap + i, - size)) { + if (copy_to_guest_offset( + sc->dirty_bitmap, i, + (uint8_t *)d->arch.shadow_bitmap + i, + size)) { rc = -EFAULT; break; } - memset(d->arch.shadow_bitmap + i, - 0, size * sizeof(unsigned long)); + memset((uint8_t *)d->arch.shadow_bitmap + i, 0, size); } break; @@ -838,9 +838,9 @@ int shadow_mode_control(struct domain *d if (sc->pages > d->arch.shadow_bitmap_size) sc->pages = d->arch.shadow_bitmap_size; - size = (sc->pages + BITS_PER_LONG - 1) / BITS_PER_LONG; - if (copy_to_guest(sc->dirty_bitmap, - d->arch.shadow_bitmap, size)) { + size = (sc->pages + 7) / 8; + if (copy_to_guest(sc->dirty_bitmap, + (uint8_t *)d->arch.shadow_bitmap, size)) { rc = -EFAULT; break; } diff -r a94363b85e19 -r 30af6cfdb05c xen/arch/powerpc/domctl.c --- a/xen/arch/powerpc/domctl.c Wed Jan 24 15:59:09 2007 +0000 +++ b/xen/arch/powerpc/domctl.c Wed Jan 24 16:33:19 2007 +0000 @@ -49,7 +49,7 @@ long arch_do_domctl(struct xen_domctl *d int i; struct domain *d = find_domain_by_id(domctl->domain); unsigned long max_pfns = domctl->u.getmemlist.max_pfns; - xen_pfn_t mfn; + uint64_t mfn; struct list_head *list_ent; ret = -EINVAL; diff -r a94363b85e19 -r 30af6cfdb05c xen/arch/x86/domctl.c --- a/xen/arch/x86/domctl.c Wed Jan 24 15:59:09 2007 +0000 +++ b/xen/arch/x86/domctl.c Wed Jan 24 16:33:19 2007 +0000 @@ -24,21 +24,12 @@ #include <asm/hvm/support.h> #include <asm/processor.h> #include <public/hvm/e820.h> -#ifdef CONFIG_COMPAT -#include <compat/xen.h> -#endif - -#ifndef COMPAT -#define _long long -#define copy_from_xxx_offset copy_from_guest_offset -#define copy_to_xxx_offset copy_to_guest_offset -#endif - -_long arch_do_domctl( + +long arch_do_domctl( struct xen_domctl *domctl, XEN_GUEST_HANDLE(xen_domctl_t) u_domctl) { - _long ret = 0; + long ret = 0; switch ( domctl->cmd ) { @@ -135,12 +126,11 @@ _long arch_do_domctl( case XEN_DOMCTL_getpageframeinfo2: { -#define GPF2_BATCH (PAGE_SIZE / sizeof(_long)) int n,j; int num = domctl->u.getpageframeinfo2.num; domid_t dom = domctl->domain; struct domain *d; - unsigned _long *l_arr; + uint32_t *arr32; ret = -ESRCH; if ( unlikely((d = find_domain_by_id(dom)) == NULL) ) @@ -153,16 +143,18 @@ _long arch_do_domctl( break; } - l_arr = alloc_xenheap_page(); + arr32 = alloc_xenheap_page(); ret = 0; for ( n = 0; n < num; ) { - int k = ((num-n)>GPF2_BATCH)?GPF2_BATCH:(num-n); - - if ( copy_from_xxx_offset(l_arr, - domctl->u.getpageframeinfo2.array, - n, k) ) + int k = PAGE_SIZE / 4; + if ( (num - n) < k ) + k = num - n; + + if ( copy_from_guest_offset(arr32, + domctl->u.getpageframeinfo2.array, + n, k) ) { ret = -EINVAL; break; @@ -171,13 +163,13 @@ _long arch_do_domctl( for ( j = 0; j < k; j++ ) { struct page_info *page; - unsigned _long mfn = l_arr[j]; + unsigned long mfn = arr32[j]; page = mfn_to_page(mfn); if ( likely(mfn_valid(mfn) && get_page(page, d)) ) { - unsigned _long type = 0; + unsigned long type = 0; switch( page->u.inuse.type_info & PGT_type_mask ) { @@ -197,16 +189,16 @@ _long arch_do_domctl( if ( page->u.inuse.type_info & PGT_pinned ) type |= XEN_DOMCTL_PFINFO_LPINTAB; - l_arr[j] |= type; + arr32[j] |= type; put_page(page); } else - l_arr[j] |= XEN_DOMCTL_PFINFO_XTAB; - - } - - if ( copy_to_xxx_offset(domctl->u.getpageframeinfo2.array, - n, l_arr, k) ) + arr32[j] |= XEN_DOMCTL_PFINFO_XTAB; + + } + + if ( copy_to_guest_offset(domctl->u.getpageframeinfo2.array, + n, arr32, k) ) { ret = -EINVAL; break; @@ -215,7 +207,7 @@ _long arch_do_domctl( n += k; } - free_xenheap_page(l_arr); + free_xenheap_page(arr32); put_domain(d); } @@ -226,7 +218,7 @@ _long arch_do_domctl( int i; struct domain *d = find_domain_by_id(domctl->domain); unsigned long max_pfns = domctl->u.getmemlist.max_pfns; - xen_pfn_t mfn; + uint64_t mfn; struct list_head *list_ent; ret = -EINVAL; @@ -241,8 +233,8 @@ _long arch_do_domctl( { mfn = page_to_mfn(list_entry( list_ent, struct page_info, list)); - if ( copy_to_xxx_offset(domctl->u.getmemlist.buffer, - i, &mfn, 1) ) + if ( copy_to_guest_offset(domctl->u.getmemlist.buffer, + i, &mfn, 1) ) { ret = -EFAULT; break; @@ -311,13 +303,7 @@ _long arch_do_domctl( ret = -EFAULT; -#ifndef COMPAT if ( copy_from_guest(c, domctl->u.hvmcontext.ctxt, 1) != 0 ) -#else - if ( copy_from_guest(c, - compat_handle_cast(domctl->u.hvmcontext.ctxt, void), - 1) != 0 ) -#endif goto sethvmcontext_out; ret = arch_sethvm_ctxt(v, c); @@ -354,14 +340,8 @@ _long arch_do_domctl( if (arch_gethvm_ctxt(v, c) == -1) ret = -EFAULT; -#ifndef COMPAT if ( copy_to_guest(domctl->u.hvmcontext.ctxt, c, 1) ) -#else - if ( copy_to_guest(compat_handle_cast(domctl->u.hvmcontext.ctxt, - void), - c, 1) ) ret = -EFAULT; -#endif xfree(c); @@ -382,7 +362,6 @@ _long arch_do_domctl( return ret; } -#ifndef COMPAT void arch_get_info_guest(struct vcpu *v, vcpu_guest_context_u c) { #ifdef CONFIG_COMPAT @@ -396,9 +375,7 @@ void arch_get_info_guest(struct vcpu *v, memcpy(c.nat, &v->arch.guest_context, sizeof(*c.nat)); #ifdef CONFIG_COMPAT else - { XLAT_vcpu_guest_context(c.cmp, &v->arch.guest_context); - } #endif if ( is_hvm_vcpu(v) ) @@ -446,7 +423,6 @@ void arch_get_info_guest(struct vcpu *v, c(vm_assist = v->domain->vm_assist); #undef c } -#endif /* * Local variables: diff -r a94363b85e19 -r 30af6cfdb05c xen/arch/x86/mm/shadow/common.c --- a/xen/arch/x86/mm/shadow/common.c Wed Jan 24 15:59:09 2007 +0000 +++ b/xen/arch/x86/mm/shadow/common.c Wed Jan 24 16:33:19 2007 +0000 @@ -3191,19 +3191,16 @@ static int shadow_log_dirty_op( if ( likely(peek) ) { if ( copy_to_guest_offset( - sc->dirty_bitmap, - i/(8*sizeof(unsigned long)), - d->arch.shadow.dirty_bitmap+(i/(8*sizeof(unsigned long))), - (bytes+sizeof(unsigned long)-1) / sizeof(unsigned long)) ) + sc->dirty_bitmap, i/8, + (uint8_t *)d->arch.shadow.dirty_bitmap + (i/8), bytes) ) { - rv = -EFAULT; - goto out; + rv = -EFAULT; + goto out; } } if ( clean ) - memset(d->arch.shadow.dirty_bitmap + (i/(8*sizeof(unsigned long))), - 0, bytes); + memset((uint8_t *)d->arch.shadow.dirty_bitmap + (i/8), 0, bytes); } #undef CHUNK diff -r a94363b85e19 -r 30af6cfdb05c xen/arch/x86/sysctl.c --- a/xen/arch/x86/sysctl.c Wed Jan 24 15:59:09 2007 +0000 +++ b/xen/arch/x86/sysctl.c Wed Jan 24 16:33:19 2007 +0000 @@ -25,14 +25,10 @@ #include <asm/hvm/support.h> #include <asm/processor.h> -#ifndef COMPAT -typedef long ret_t; -#endif - -ret_t arch_do_sysctl( +long arch_do_sysctl( struct xen_sysctl *sysctl, XEN_GUEST_HANDLE(xen_sysctl_t) u_sysctl) { - ret_t ret = 0; + long ret = 0; switch ( sysctl->cmd ) { diff -r a94363b85e19 -r 30af6cfdb05c xen/arch/x86/x86_64/Makefile --- a/xen/arch/x86/x86_64/Makefile Wed Jan 24 15:59:09 2007 +0000 +++ b/xen/arch/x86/x86_64/Makefile Wed Jan 24 16:33:19 2007 +0000 @@ -5,10 +5,8 @@ obj-y += traps.o obj-$(CONFIG_COMPAT) += compat.o obj-$(CONFIG_COMPAT) += domain.o -obj-$(CONFIG_COMPAT) += domctl.o obj-$(CONFIG_COMPAT) += physdev.o obj-$(CONFIG_COMPAT) += platform_hypercall.o -obj-$(CONFIG_COMPAT) += sysctl.o ifeq ($(CONFIG_COMPAT),y) # extra dependencies diff -r a94363b85e19 -r 30af6cfdb05c xen/arch/x86/x86_64/compat/entry.S --- a/xen/arch/x86/x86_64/compat/entry.S Wed Jan 24 15:59:09 2007 +0000 +++ b/xen/arch/x86/x86_64/compat/entry.S Wed Jan 24 16:33:19 2007 +0000 @@ -276,6 +276,9 @@ CFIX14: .quad CFLT14,CFIX14 .previous +compat_domctl: +compat_sysctl: + .section .rodata, "a", @progbits ENTRY(compat_hypercall_table) @@ -314,8 +317,8 @@ ENTRY(compat_hypercall_table) .quad do_event_channel_op .quad compat_physdev_op .quad do_hvm_op - .quad compat_sysctl /* 35 */ - .quad compat_domctl + .quad do_sysctl /* 35 */ + .quad do_domctl .quad compat_kexec_op .rept NR_hypercalls-((.-compat_hypercall_table)/8) .quad compat_ni_hypercall diff -r a94363b85e19 -r 30af6cfdb05c xen/arch/x86/x86_64/domctl.c --- a/xen/arch/x86/x86_64/domctl.c Wed Jan 24 15:59:09 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,111 +0,0 @@ -/****************************************************************************** - * Arch-specific compatibility domctl.c - */ - -#include <xen/config.h> -#include <compat/domctl.h> -#include <xen/guest_access.h> -#include <asm/shadow.h> - -DEFINE_XEN_GUEST_HANDLE(compat_domctl_t); -#define xen_domctl compat_domctl -#define xen_domctl_t compat_domctl_t -#define arch_do_domctl(x, h) arch_compat_domctl(x, _##h) - -static int compat_shadow_domctl(struct domain *d, - compat_domctl_shadow_op_t *csc, - XEN_GUEST_HANDLE(void) u_domctl) -{ - xen_domctl_shadow_op_t nsc; - int rc, mode; - -#define XLAT_domctl_shadow_op_HNDL_dirty_bitmap(_d_, _s_) \ - do \ - { \ - if ( (_s_)->op != XEN_DOMCTL_SHADOW_OP_CLEAN \ - && (_s_)->op != XEN_DOMCTL_SHADOW_OP_PEEK ) \ - { \ - set_xen_guest_handle((_d_)->dirty_bitmap, NULL); \ - mode = -1; \ - } \ - else if ( compat_handle_is_null((_s_)->dirty_bitmap) \ - || (((_s_)->pages - 1) \ - & (BITS_PER_LONG - COMPAT_BITS_PER_LONG)) \ - == BITS_PER_LONG - COMPAT_BITS_PER_LONG ) \ - { \ - XEN_GUEST_HANDLE(void) tmp; \ - guest_from_compat_handle(tmp, (_s_)->dirty_bitmap); \ - (_d_)->dirty_bitmap = guest_handle_cast(tmp, ulong); \ - mode = 0; \ - } \ - else if ( (_s_)->pages > COMPAT_ARG_XLAT_SIZE * 8 ) \ - { \ - printk("Cannot translate compatibility mode XEN_DOMCTL_SHADOW_OP_{CLEAN,PEEK} (0x%lX)\n", \ - (_s_)->pages); \ - return -E2BIG; \ - } \ - else \ - { \ - set_xen_guest_handle((_d_)->dirty_bitmap, \ - (void *)COMPAT_ARG_XLAT_VIRT_START(current->vcpu_id)); \ - mode = 1; \ - } \ - } while (0) - XLAT_domctl_shadow_op(&nsc, csc); -#undef XLAT_domctl_shadow_op_HNDL_dirty_bitmap - rc = shadow_domctl(d, &nsc, u_domctl); - if ( rc != __HYPERVISOR_domctl ) - { - BUG_ON(rc > 0); -#define XLAT_domctl_shadow_op_HNDL_dirty_bitmap(_d_, _s_) \ - do \ - { \ - if ( rc == 0 \ - && mode > 0 \ - && copy_to_compat((_d_)->dirty_bitmap, \ - (unsigned int *)(_s_)->dirty_bitmap.p, \ - ((_s_)->pages + COMPAT_BITS_PER_LONG - 1) / COMPAT_BITS_PER_LONG) ) \ - rc = -EFAULT; \ - } while (0) - XLAT_domctl_shadow_op(csc, &nsc); -#undef XLAT_domctl_shadow_op_HNDL_dirty_bitmap - } - return rc; -} -#define xen_domctl_shadow_op compat_domctl_shadow_op -#define xen_domctl_shadow_op_t compat_domctl_shadow_op_t -#define shadow_domctl(d, sc, u) compat_shadow_domctl(d, sc, u) - -#define xen_domctl_ioport_permission compat_domctl_ioport_permission -#define xen_domctl_ioport_permission_t compat_domctl_ioport_permission_t - -#define xen_domctl_getpageframeinfo compat_domctl_getpageframeinfo -#define xen_domctl_getpageframeinfo_t compat_domctl_getpageframeinfo_t - -#define xen_domctl_getpageframeinfo2 compat_domctl_getpageframeinfo2 -#define xen_domctl_getpageframeinfo2_t compat_domctl_getpageframeinfo2_t - -#define xen_domctl_getmemlist compat_domctl_getmemlist -#define xen_domctl_getmemlist_t compat_domctl_getmemlist_t -#define xen_pfn_t compat_pfn_t - -#define xen_domctl_hypercall_init compat_domctl_hypercall_init -#define xen_domctl_hypercall_init_t compat_domctl_hypercall_init_t - -#define COMPAT -#define _XEN_GUEST_HANDLE(t) XEN_GUEST_HANDLE(t) -#define _long int -#define copy_from_xxx_offset copy_from_compat_offset -#define copy_to_xxx_offset copy_to_compat_offset - -#include "../domctl.c" - -/* - * Local variables: - * mode: C - * c-set-style: "BSD" - * c-basic-offset: 4 - * tab-width: 4 - * indent-tabs-mode: nil - * End: - */ diff -r a94363b85e19 -r 30af6cfdb05c xen/arch/x86/x86_64/sysctl.c --- a/xen/arch/x86/x86_64/sysctl.c Wed Jan 24 15:59:09 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -/****************************************************************************** - * Arch-specific compatibility sysctl.c - */ - -#include <xen/config.h> -#include <compat/sysctl.h> - -DEFINE_XEN_GUEST_HANDLE(compat_sysctl_t); -#define xen_sysctl compat_sysctl -#define xen_sysctl_t compat_sysctl_t -#define arch_do_sysctl(x, h) arch_compat_sysctl(x, _##h) - -#define xen_sysctl_physinfo compat_sysctl_physinfo -#define xen_sysctl_physinfo_t compat_sysctl_physinfo_t - -#define xen_sysctl_ioport_emulation compat_sysctl_ioport_emulation -#define xen_sysctl_ioport_emulation_t compat_sysctl_ioport_emulation_t - -#define COMPAT -#define _XEN_GUEST_HANDLE(t) XEN_GUEST_HANDLE(t) -typedef int ret_t; - -#include "../sysctl.c" - -/* - * Local variables: - * mode: C - * c-set-style: "BSD" - * c-basic-offset: 4 - * tab-width: 4 - * indent-tabs-mode: nil - * End: - */ diff -r a94363b85e19 -r 30af6cfdb05c xen/common/compat/Makefile --- a/xen/common/compat/Makefile Wed Jan 24 15:59:09 2007 +0000 +++ b/xen/common/compat/Makefile Wed Jan 24 16:33:19 2007 +0000 @@ -1,13 +1,9 @@ obj-y += domain.o obj-y += domain.o -obj-y += domctl.o obj-y += kernel.o obj-y += memory.o obj-y += multicall.o -obj-y += sysctl.o obj-y += xlat.o # extra dependencies -domctl.o: ../domctl.c kernel.o: ../kernel.c multicall.o: ../multicall.c -sysctl.o: ../sysctl.c diff -r a94363b85e19 -r 30af6cfdb05c xen/common/compat/domctl.c --- a/xen/common/compat/domctl.c Wed Jan 24 15:59:09 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,137 +0,0 @@ -/****************************************************************************** - * compat/domctl.c - */ - -#include <xen/config.h> -#include <compat/domctl.h> -#include <xen/sched.h> -#include <xen/cpumask.h> -#include <asm/uaccess.h> - -DEFINE_XEN_GUEST_HANDLE(compat_domctl_t); -#define xen_domctl compat_domctl -#define xen_domctl_t compat_domctl_t -#define do_domctl(h) compat_domctl(_##h) -#define arch_do_domctl(x, h) arch_compat_domctl(x, _##h) - -#define xen_domain_handle_t compat_domain_handle_t - -#define xen_domctl_vcpucontext compat_domctl_vcpucontext -#define xen_domctl_vcpucontext_t compat_domctl_vcpucontext_t - -#define xen_domctl_createdomain compat_domctl_createdomain -#define xen_domctl_createdomain_t compat_domctl_createdomain_t - -#define xen_domctl_max_vcpus compat_domctl_max_vcpus -#define xen_domctl_max_vcpus_t compat_domctl_max_vcpus_t - -static void cpumask_to_compat_ctl_cpumap( - struct compat_ctl_cpumap *cmpctl_cpumap, cpumask_t *cpumask) -{ - unsigned int guest_bytes, copy_bytes, i; - /*static const*/ uint8_t zero = 0; - - if ( compat_handle_is_null(cmpctl_cpumap->bitmap) ) - return; - - guest_bytes = (cmpctl_cpumap->nr_cpus + 7) / 8; - copy_bytes = min_t(unsigned int, guest_bytes, (NR_CPUS + 7) / 8); - - copy_to_compat(cmpctl_cpumap->bitmap, - (uint8_t *)cpus_addr(*cpumask), - copy_bytes); - - for ( i = copy_bytes; i < guest_bytes; i++ ) - copy_to_compat_offset(cmpctl_cpumap->bitmap, i, &zero, 1); -} -#define cpumask_to_xenctl_cpumap cpumask_to_compat_ctl_cpumap - -void compat_ctl_cpumap_to_cpumask( - cpumask_t *cpumask, struct compat_ctl_cpumap *cmpctl_cpumap) -{ - unsigned int guest_bytes, copy_bytes; - - guest_bytes = (cmpctl_cpumap->nr_cpus + 7) / 8; - copy_bytes = min_t(unsigned int, guest_bytes, (NR_CPUS + 7) / 8); - - cpus_clear(*cpumask); - - if ( compat_handle_is_null(cmpctl_cpumap->bitmap) ) - return; - - copy_from_compat((uint8_t *)cpus_addr(*cpumask), - cmpctl_cpumap->bitmap, - copy_bytes); -} -#define xenctl_cpumap_to_cpumask compat_ctl_cpumap_to_cpumask - -#define xen_domctl_vcpuaffinity compat_domctl_vcpuaffinity -#define xen_domctl_vcpuaffinity_t compat_domctl_vcpuaffinity_t - -static int compat_sched_adjust(struct domain *d, - struct compat_domctl_scheduler_op *cop) -{ - struct xen_domctl_scheduler_op nop; - int ret; - enum XLAT_domctl_scheduler_op_u u; - - switch ( cop->sched_id ) - { - case XEN_SCHEDULER_SEDF: u = XLAT_domctl_scheduler_op_u_sedf; break; - case XEN_SCHEDULER_CREDIT: u = XLAT_domctl_scheduler_op_u_credit; break; - default: return -EINVAL; - } - XLAT_domctl_scheduler_op(&nop, cop); - ret = sched_adjust(d, &nop); - XLAT_domctl_scheduler_op(cop, &nop); - - return ret; -} -#define sched_adjust(d, op) compat_sched_adjust(d, op) -#define xen_domctl_scheduler_op compat_domctl_scheduler_op -#define xen_domctl_scheduler_op_t compat_domctl_scheduler_op_t - -#define xen_domctl_getdomaininfo compat_domctl_getdomaininfo -#define xen_domctl_getdomaininfo_t compat_domctl_getdomaininfo_t -#define getdomaininfo(d, i) compat_getdomaininfo(d, i) - -#define xen_domctl_getvcpuinfo compat_domctl_getvcpuinfo -#define xen_domctl_getvcpuinfo_t compat_domctl_getvcpuinfo_t - -#define xen_domctl_max_mem compat_domctl_max_mem -#define xen_domctl_max_mem_t compat_domctl_max_mem_t - -#define xen_domctl_setdomainhandle compat_domctl_setdomainhandle -#define xen_domctl_setdomainhandle_t compat_domctl_setdomainhandle_t - -#define xen_domctl_setdebugging compat_domctl_setdebugging -#define xen_domctl_setdebugging_t compat_domctl_setdebugging_t - -#define xen_domctl_irq_permission compat_domctl_irq_permission -#define xen_domctl_irq_permission_t compat_domctl_irq_permission_t - -#define xen_domctl_iomem_permission compat_domctl_iomem_permission -#define xen_domctl_iomem_permission_t compat_domctl_iomem_permission_t - -#define xen_domctl_settimeoffset compat_domctl_settimeoffset -#define xen_domctl_settimeoffset_t compat_domctl_settimeoffset_t - -#define COMPAT -#define _XEN_GUEST_HANDLE(t) XEN_GUEST_HANDLE(t) -#define _u_domctl u_domctl -//#undef guest_handle_cast -//#define guest_handle_cast compat_handle_cast -//#define copy_to_xxx_offset copy_to_compat_offset -typedef int ret_t; - -#include "../domctl.c" - -/* - * Local variables: - * mode: C - * c-set-style: "BSD" - * c-basic-offset: 4 - * tab-width: 4 - * indent-tabs-mode: nil - * End: - */ diff -r a94363b85e19 -r 30af6cfdb05c xen/common/compat/sysctl.c --- a/xen/common/compat/sysctl.c Wed Jan 24 15:59:09 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,95 +0,0 @@ -/****************************************************************************** - * compat/sysctl.c - */ - -#include <xen/config.h> -#include <compat/sysctl.h> -#include <xen/domain.h> -#include <xen/guest_access.h> -#include <xen/perfc.h> -#include <xen/trace.h> - -DEFINE_XEN_GUEST_HANDLE(compat_sysctl_t); -#define xen_sysctl compat_sysctl -#define xen_sysctl_t compat_sysctl_t -#define do_sysctl(h) compat_sysctl(_##h) -#define arch_do_sysctl(x, h) arch_compat_sysctl(x, _##h) - -#define xen_sysctl_readconsole compat_sysctl_readconsole -#define xen_sysctl_readconsole_t compat_sysctl_readconsole_t - -static int compat_tb_control(struct compat_sysctl_tbuf_op *cmp_tbc) -{ - struct xen_sysctl_tbuf_op nat_tbc; - int ret; - -#define XLAT_ctl_cpumap_HNDL_bitmap(_d_, _s_) \ - guest_from_compat_handle((_d_)->bitmap, (_s_)->bitmap) - XLAT_sysctl_tbuf_op(&nat_tbc, cmp_tbc); -#undef XLAT_ctl_cpumap_HNDL_bitmap - ret = tb_control(&nat_tbc); -#define XLAT_ctl_cpumap_HNDL_bitmap(_d_, _s_) ((void)0) - XLAT_sysctl_tbuf_op(cmp_tbc, &nat_tbc); -#undef XLAT_ctl_cpumap_HNDL_bitmap - return ret; -} -#define xen_sysctl_tbuf_op compat_sysctl_tbuf_op -#define xen_sysctl_tbuf_op_t compat_sysctl_tbuf_op_t -#define tb_control(p) compat_tb_control(p) - -#define xen_sysctl_sched_id compat_sysctl_sched_id -#define xen_sysctl_sched_id_t compat_sysctl_sched_id_t - -#define xen_sysctl_getdomaininfolist compat_sysctl_getdomaininfolist -#define xen_sysctl_getdomaininfolist_t compat_sysctl_getdomaininfolist_t -#define xen_domctl_getdomaininfo compat_domctl_getdomaininfo -#define xen_domctl_getdomaininfo_t compat_domctl_getdomaininfo_t -#define getdomaininfo(d, i) compat_getdomaininfo(d, i) - -#ifdef PERF_COUNTERS -static int compat_perfc_control(struct compat_sysctl_perfc_op *cmp_pc) -{ - CHECK_sysctl_perfc_desc; - CHECK_TYPE(sysctl_perfc_val); - struct xen_sysctl_perfc_op nat_pc; - int ret; - -#define XLAT_sysctl_perfc_op_HNDL_desc(_d_, _s_) \ - guest_from_compat_handle((_d_)->desc, (_s_)->desc) -#define XLAT_sysctl_perfc_op_HNDL_val(_d_, _s_) \ - guest_from_compat_handle((_d_)->val, (_s_)->val) - XLAT_sysctl_perfc_op(&nat_pc, cmp_pc); -#undef XLAT_sysctl_perfc_op_HNDL_val -#undef XLAT_sysctl_perfc_op_HNDL_desc - ret = perfc_control(&nat_pc); -#define XLAT_sysctl_perfc_op_HNDL_desc(_d_, _s_) -#define XLAT_sysctl_perfc_op_HNDL_val(_d_, _s_) - XLAT_sysctl_perfc_op(cmp_pc, &nat_pc); -#undef XLAT_sysctl_perfc_op_HNDL_val -#undef XLAT_sysctl_perfc_op_HNDL_desc - return ret; -} -#define xen_sysctl_perfc_op compat_sysctl_perfc_op -#define xen_sysctl_perfc_op_t compat_sysctl_perfc_op_t -#define perfc_control(p) compat_perfc_control(p) -#endif - -#define COMPAT -#define _XEN_GUEST_HANDLE(t) XEN_GUEST_HANDLE(t) -#define _u_sysctl u_sysctl -#undef guest_handle_cast -#define guest_handle_cast compat_handle_cast -#define copy_to_xxx_offset copy_to_compat_offset -typedef int ret_t; - -#include "../sysctl.c" - -/* - * Local variables: - * mode: C - * c-set-style: "BSD" - * c-basic-offset: 4 - * tab-width: 4 - * indent-tabs-mode: nil - * End: - */ diff -r a94363b85e19 -r 30af6cfdb05c xen/common/domain.c --- a/xen/common/domain.c Wed Jan 24 15:59:09 2007 +0000 +++ b/xen/common/domain.c Wed Jan 24 16:33:19 2007 +0000 @@ -27,9 +27,6 @@ #include <asm/debugger.h> #include <public/sched.h> #include <public/vcpu.h> -#ifdef CONFIG_COMPAT -#include <compat/domctl.h> -#endif /* Both these structures are protected by the domlist_lock. */ DEFINE_RWLOCK(domlist_lock); @@ -451,75 +448,6 @@ void domain_unpause_by_systemcontroller( } } - -/* - * set_info_guest is used for final setup, launching, and state modification - * of domains other than domain 0. ie. the domains that are being built by - * the userspace dom0 domain builder. - */ -int set_info_guest(struct domain *d, - xen_domctl_vcpucontext_u vcpucontext) -{ - int rc = 0; - vcpu_guest_context_u c; -#ifdef CONFIG_COMPAT - CHECK_FIELD(domctl_vcpucontext, vcpu); -#endif - unsigned long vcpu = vcpucontext.nat->vcpu; - struct vcpu *v; - - if ( (vcpu >= MAX_VIRT_CPUS) || ((v = d->vcpu[vcpu]) == NULL) ) - return -EINVAL; - - if ( IS_COMPAT(v->domain) - ? compat_handle_is_null(vcpucontext.cmp->ctxt) - : guest_handle_is_null(vcpucontext.nat->ctxt) ) - return vcpu_reset(v); - -#ifdef CONFIG_COMPAT - BUILD_BUG_ON(sizeof(struct vcpu_guest_context) - < sizeof(struct compat_vcpu_guest_context)); -#endif - if ( (c.nat = xmalloc(struct vcpu_guest_context)) == NULL ) - return -ENOMEM; - - domain_pause(d); - - if ( !IS_COMPAT(v->domain) ) - { - if ( !IS_COMPAT(current->domain) - ? copy_from_guest(c.nat, vcpucontext.nat->ctxt, 1) -#ifndef CONFIG_COMPAT - : 0 ) -#else - : copy_from_guest(c.nat, - compat_handle_cast(vcpucontext.cmp->ctxt, - void), - 1) ) -#endif - rc = -EFAULT; - } -#ifdef CONFIG_COMPAT - else - { - if ( !IS_COMPAT(current->domain) - ? copy_from_guest(c.cmp, - guest_handle_cast(vcpucontext.nat->ctxt, void), - 1) - : copy_from_compat(c.cmp, vcpucontext.cmp->ctxt, 1) ) - rc = -EFAULT; - } -#endif - - if ( rc == 0 ) - rc = arch_set_info_guest(v, c); - - domain_unpause(d); - - xfree(c.nat); - return rc; -} - int boot_vcpu(struct domain *d, int vcpuid, vcpu_guest_context_u ctxt) { struct vcpu *v = d->vcpu[vcpuid]; diff -r a94363b85e19 -r 30af6cfdb05c xen/common/domctl.c --- a/xen/common/domctl.c Wed Jan 24 15:59:09 2007 +0000 +++ b/xen/common/domctl.c Wed Jan 24 16:33:19 2007 +0000 @@ -19,22 +19,12 @@ #include <xen/iocap.h> #include <xen/guest_access.h> #include <xen/bitmap.h> -#ifdef CONFIG_COMPAT -#include <xen/compat.h> -#endif #include <asm/current.h> #include <public/domctl.h> #include <acm/acm_hooks.h> -#ifndef COMPAT -typedef long ret_t; -#define copy_to_xxx_offset copy_to_guest_offset -#endif - -extern ret_t arch_do_domctl( +extern long arch_do_domctl( struct xen_domctl *op, XEN_GUEST_HANDLE(xen_domctl_t) u_domctl); - -#ifndef COMPAT void cpumask_to_xenctl_cpumap( struct xenctl_cpumap *xenctl_cpumap, cpumask_t *cpumask) @@ -75,8 +65,6 @@ void xenctl_cpumap_to_cpumask( bitmap_byte_to_long(cpus_addr(*cpumask), bytemap, NR_CPUS); } - -#endif /* COMPAT */ static inline int is_free_domid(domid_t dom) { @@ -182,9 +170,9 @@ static unsigned int default_vcpu0_locati return cpu; } -ret_t do_domctl(XEN_GUEST_HANDLE(xen_domctl_t) u_domctl) +long do_domctl(XEN_GUEST_HANDLE(xen_domctl_t) u_domctl) { - ret_t ret = 0; + long ret = 0; struct xen_domctl curop, *op = &curop; void *ssid = NULL; /* save security ptr between pre and post/fail hooks */ static DEFINE_SPINLOCK(domctl_lock); @@ -209,12 +197,52 @@ ret_t do_domctl(XEN_GUEST_HANDLE(xen_dom case XEN_DOMCTL_setvcpucontext: { struct domain *d = find_domain_by_id(op->domain); - ret = -ESRCH; - if ( d != NULL ) - { - ret = set_info_guest(d, &op->u.vcpucontext); - put_domain(d); - } + vcpu_guest_context_u c = { .nat = NULL }; + unsigned int vcpu = op->u.vcpucontext.vcpu; + struct vcpu *v; + + ret = -ESRCH; + if ( d == NULL ) + break; + + ret = -EINVAL; + if ( (vcpu >= MAX_VIRT_CPUS) || ((v = d->vcpu[vcpu]) == NULL) ) + goto svc_out; + + if ( guest_handle_is_null(op->u.vcpucontext.ctxt) ) + { + ret = vcpu_reset(v); + goto svc_out; + } + +#ifdef CONFIG_COMPAT + BUILD_BUG_ON(sizeof(struct vcpu_guest_context) + < sizeof(struct compat_vcpu_guest_context)); +#endif + ret = -ENOMEM; + if ( (c.nat = xmalloc(struct vcpu_guest_context)) == NULL ) + goto svc_out; + + if ( !IS_COMPAT(v->domain) ) + ret = copy_from_guest(c.nat, op->u.vcpucontext.ctxt, 1); +#ifdef CONFIG_COMPAT + else + ret = copy_from_guest(c.cmp, + guest_handle_cast(op->u.vcpucontext.ctxt, + void), 1); +#endif + ret = ret ? -EFAULT : 0; + + if ( ret == 0 ) + { + domain_pause(d); + ret = arch_set_info_guest(v, c); + domain_unpause(d); + } + + svc_out: + xfree(c.nat); + put_domain(d); } break; @@ -313,32 +341,12 @@ ret_t do_domctl(XEN_GUEST_HANDLE(xen_dom if ( (d = domain_create(dom, domcr_flags)) == NULL ) break; +#ifdef CONFIG_COMPAT + if ( IS_COMPAT(current->domain) && ((ret = switch_compat(d)) != 0) ) + break; +#endif + ret = 0; - switch ( (op->u.createdomain.flags >> XEN_DOMCTL_CDF_WORDSIZE_SHIFT) - & XEN_DOMCTL_CDF_WORDSIZE_MASK ) - { - case 0: - if ( !IS_COMPAT(current->domain) ) - op->u.createdomain.flags |= BITS_PER_LONG - << XEN_DOMCTL_CDF_WORDSIZE_SHIFT; -#ifdef CONFIG_COMPAT - else - { - op->u.createdomain.flags |= COMPAT_BITS_PER_LONG - << XEN_DOMCTL_CDF_WORDSIZE_SHIFT; - case COMPAT_BITS_PER_LONG: - ret = switch_compat(d); - } -#endif - break; - case BITS_PER_LONG: - break; - default: - ret = -EINVAL; - break; - } - if ( ret ) - break; memcpy(d->handle, op->u.createdomain.handle, sizeof(xen_domain_handle_t)); @@ -501,9 +509,9 @@ ret_t do_domctl(XEN_GUEST_HANDLE(xen_dom case XEN_DOMCTL_getvcpucontext: { - vcpu_guest_context_u c; - struct domain *d; - struct vcpu *v; + vcpu_guest_context_u c = { .nat = NULL }; + struct domain *d; + struct vcpu *v; ret = -ESRCH; if ( (d = find_domain_by_id(op->domain)) == NULL ) @@ -539,35 +547,18 @@ ret_t do_domctl(XEN_GUEST_HANDLE(xen_dom vcpu_unpause(v); if ( !IS_COMPAT(v->domain) ) - { -#ifndef COMPAT - if ( copy_to_guest(op->u.vcpucontext.ctxt, c.nat, 1) ) -#else - if ( copy_to_guest(compat_handle_cast(op->u.vcpucontext.ctxt, - void), - c.nat, 1) ) -#endif - ret = -EFAULT; - } + ret = copy_to_guest(op->u.vcpucontext.ctxt, c.nat, 1); #ifdef CONFIG_COMPAT else - { -#ifndef COMPAT - if ( copy_to_guest(guest_handle_cast(op->u.vcpucontext.ctxt, void), - c.cmp, 1) ) -#else - if ( copy_to_compat(op->u.vcpucontext.ctxt, c.cmp, 1) ) + ret = copy_to_guest(guest_handle_cast(op->u.vcpucontext.ctxt, + void), c.cmp, 1); #endif - ret = -EFAULT; - } -#endif - + + if ( copy_to_guest(u_domctl, op, 1) || ret ) + ret = -EFAULT; + + getvcpucontext_out: xfree(c.nat); - - if ( copy_to_guest(u_domctl, op, 1) ) - ret = -EFAULT; - - getvcpucontext_out: put_domain(d); } break; @@ -725,16 +716,6 @@ ret_t do_domctl(XEN_GUEST_HANDLE(xen_dom } } break; - -#ifdef CONFIG_COMPAT - case XEN_DOMCTL_set_compat: - ret = switch_compat(find_domain_by_id(op->domain)); - break; - - case XEN_DOMCTL_set_native: - ret = switch_native(find_domain_by_id(op->domain)); - break; -#endif default: ret = arch_do_domctl(op, u_domctl); diff -r a94363b85e19 -r 30af6cfdb05c xen/common/sysctl.c --- a/xen/common/sysctl.c Wed Jan 24 15:59:09 2007 +0000 +++ b/xen/common/sysctl.c Wed Jan 24 16:33:19 2007 +0000 @@ -21,17 +21,12 @@ #include <asm/current.h> #include <public/sysctl.h> -#ifndef COMPAT -typedef long ret_t; -#define copy_to_xxx_offset copy_to_guest_offset -#endif - -extern ret_t arch_do_sysctl( +extern long arch_do_sysctl( struct xen_sysctl *op, XEN_GUEST_HANDLE(xen_sysctl_t) u_sysctl); -ret_t do_sysctl(XEN_GUEST_HANDLE(xen_sysctl_t) u_sysctl) +long do_sysctl(XEN_GUEST_HANDLE(xen_sysctl_t) u_sysctl) { - ret_t ret = 0; + long ret = 0; struct xen_sysctl curop, *op = &curop; static DEFINE_SPINLOCK(sysctl_lock); @@ -101,8 +96,8 @@ ret_t do_sysctl(XEN_GUEST_HANDLE(xen_sys put_domain(d); - if ( copy_to_xxx_offset(op->u.getdomaininfolist.buffer, - num_domains, &info, 1) ) + if ( copy_to_guest_offset(op->u.getdomaininfolist.buffer, + num_domains, &info, 1) ) { ret = -EFAULT; break; diff -r a94363b85e19 -r 30af6cfdb05c xen/include/Makefile --- a/xen/include/Makefile Wed Jan 24 15:59:09 2007 +0000 +++ b/xen/include/Makefile Wed Jan 24 16:33:19 2007 +0000 @@ -6,7 +6,6 @@ headers-y := \ compat/acm.h \ compat/acm_ops.h \ compat/callback.h \ - compat/domctl.h \ compat/elfnote.h \ compat/event_channel.h \ compat/features.h \ @@ -17,7 +16,6 @@ headers-y := \ compat/physdev.h \ compat/platform.h \ compat/sched.h \ - compat/sysctl.h \ compat/trace.h \ compat/vcpu.h \ compat/version.h \ diff -r a94363b85e19 -r 30af6cfdb05c xen/include/public/arch-x86/xen-x86_32.h --- a/xen/include/public/arch-x86/xen-x86_32.h Wed Jan 24 15:59:09 2007 +0000 +++ b/xen/include/public/arch-x86/xen-x86_32.h Wed Jan 24 16:33:19 2007 +0000 @@ -21,7 +21,7 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * - * Copyright (c) 2004-2006, K A Fraser + * Copyright (c) 2004-2007, K A Fraser */ #ifndef __XEN_PUBLIC_ARCH_X86_XEN_X86_32_H__ @@ -89,6 +89,23 @@ #define machine_to_phys_mapping ((unsigned long *)MACH2PHYS_VIRT_START) #endif +/* 32-/64-bit invariability for control interfaces (domctl/sysctl). */ +#if defined(__XEN__) || defined(__XEN_TOOLS__) +#undef __DEFINE_XEN_GUEST_HANDLE +#define __DEFINE_XEN_GUEST_HANDLE(name, type) \ + typedef struct { type *p; } \ + __guest_handle_ ## name; \ + typedef struct { union { type *p; uint64_aligned_t q; }; } \ + __guest_handle_64_ ## name +#undef set_xen_guest_handle +#define set_xen_guest_handle(hnd, val) \ + do { if ( sizeof(hnd) == 8 ) *(uint64_t *)&(hnd) = 0; \ + (hnd).p = val; \ + } while ( 0 ) +#define uint64_aligned_t uint64_t __attribute__((aligned(8))) +#define XEN_GUEST_HANDLE_64(name) __guest_handle_64_ ## name +#endif + #ifndef __ASSEMBLY__ struct cpu_user_regs { diff -r a94363b85e19 -r 30af6cfdb05c xen/include/public/arch-x86/xen.h --- a/xen/include/public/arch-x86/xen.h Wed Jan 24 15:59:09 2007 +0000 +++ b/xen/include/public/arch-x86/xen.h Wed Jan 24 16:33:19 2007 +0000 @@ -43,6 +43,12 @@ #define get_xen_guest_handle(val, hnd) do { val = (hnd).p; } while (0) #endif +#if defined(__i386__) +#include "xen-x86_32.h" +#elif defined(__x86_64__) +#include "xen-x86_64.h" +#endif + #ifndef __ASSEMBLY__ /* Guest handles for primitive C types. */ __DEFINE_XEN_GUEST_HANDLE(uchar, unsigned char); @@ -55,12 +61,6 @@ DEFINE_XEN_GUEST_HANDLE(void); typedef unsigned long xen_pfn_t; DEFINE_XEN_GUEST_HANDLE(xen_pfn_t); -#endif - -#if defined(__i386__) -#include "xen-x86_32.h" -#elif defined(__x86_64__) -#include "xen-x86_64.h" #endif /* diff -r a94363b85e19 -r 30af6cfdb05c xen/include/public/domctl.h --- a/xen/include/public/domctl.h Wed Jan 24 15:59:09 2007 +0000 +++ b/xen/include/public/domctl.h Wed Jan 24 16:33:19 2007 +0000 @@ -34,10 +34,10 @@ #include "xen.h" -#define XEN_DOMCTL_INTERFACE_VERSION 0x00000004 +#define XEN_DOMCTL_INTERFACE_VERSION 0x00000005 struct xenctl_cpumap { - XEN_GUEST_HANDLE(uint8_t) bitmap; + XEN_GUEST_HANDLE_64(uint8_t) bitmap; uint32_t nr_cpus; }; @@ -53,8 +53,6 @@ struct xen_domctl_createdomain { /* Is this an HVM guest (as opposed to a PV guest)? */ #define _XEN_DOMCTL_CDF_hvm_guest 0 #define XEN_DOMCTL_CDF_hvm_guest (1U<<_XEN_DOMCTL_CDF_hvm_guest) -#define XEN_DOMCTL_CDF_WORDSIZE_MASK 255 -#define XEN_DOMCTL_CDF_WORDSIZE_SHIFT 24 uint32_t flags; }; typedef struct xen_domctl_createdomain xen_domctl_createdomain_t; @@ -94,10 +92,10 @@ struct xen_domctl_getdomaininfo { #define XEN_DOMINF_shutdownmask 255 #define XEN_DOMINF_shutdownshift 16 uint32_t flags; /* XEN_DOMINF_* */ - uint64_t tot_pages; - uint64_t max_pages; - uint64_t shared_info_frame; /* GMFN of shared_info struct */ - uint64_t cpu_time; + uint64_aligned_t tot_pages; + uint64_aligned_t max_pages; + uint64_aligned_t shared_info_frame; /* GMFN of shared_info struct */ + uint64_aligned_t cpu_time; uint32_t nr_online_vcpus; /* Number of VCPUs currently online. */ uint32_t max_vcpu_id; /* Maximum VCPUID in use by this domain. */ uint32_t ssidref; @@ -111,12 +109,12 @@ struct xen_domctl_getmemlist { struct xen_domctl_getmemlist { /* IN variables. */ /* Max entries to write to output buffer. */ - uint64_t max_pfns; + uint64_aligned_t max_pfns; /* Start index in guest's page list. */ - uint64_t start_pfn; - XEN_GUEST_HANDLE(xen_pfn_t) buffer; + uint64_aligned_t start_pfn; + XEN_GUEST_HANDLE_64(uint64_t) buffer; /* OUT variables. */ - uint64_t num_pfns; + uint64_aligned_t num_pfns; }; typedef struct xen_domctl_getmemlist xen_domctl_getmemlist_t; DEFINE_XEN_GUEST_HANDLE(xen_domctl_getmemlist_t); @@ -137,7 +135,7 @@ DEFINE_XEN_GUEST_HANDLE(xen_domctl_getme struct xen_domctl_getpageframeinfo { /* IN variables. */ - uint64_t gmfn; /* GMFN to query */ + uint64_aligned_t gmfn; /* GMFN to query */ /* OUT variables. */ /* Is the page PINNED to a type? */ uint32_t type; /* see above type defs */ @@ -149,9 +147,9 @@ DEFINE_XEN_GUEST_HANDLE(xen_domctl_getpa #define XEN_DOMCTL_getpageframeinfo2 8 struct xen_domctl_getpageframeinfo2 { /* IN variables. */ - uint64_t num; + uint64_aligned_t num; /* IN/OUT variables. */ - XEN_GUEST_HANDLE(ulong) array; + XEN_GUEST_HANDLE_64(uint32_t) array; }; typedef struct xen_domctl_getpageframeinfo2 xen_domctl_getpageframeinfo2_t; DEFINE_XEN_GUEST_HANDLE(xen_domctl_getpageframeinfo2_t); @@ -225,8 +223,8 @@ struct xen_domctl_shadow_op { uint32_t mb; /* Shadow memory allocation in MB */ /* OP_PEEK / OP_CLEAN */ - XEN_GUEST_HANDLE(ulong) dirty_bitmap; - uint64_t pages; /* Size of buffer. Updated with actual size. */ + XEN_GUEST_HANDLE_64(uint8_t) dirty_bitmap; + uint64_aligned_t pages; /* Size of buffer. Updated with actual size. */ struct xen_domctl_shadow_op_stats stats; }; typedef struct xen_domctl_shadow_op xen_domctl_shadow_op_t; @@ -236,7 +234,7 @@ DEFINE_XEN_GUEST_HANDLE(xen_domctl_shado #define XEN_DOMCTL_max_mem 11 struct xen_domctl_max_mem { /* IN variables. */ - uint64_t max_memkb; + uint64_aligned_t max_memkb; }; typedef struct xen_domctl_max_mem xen_domctl_max_mem_t; DEFINE_XEN_GUEST_HANDLE(xen_domctl_max_mem_t); @@ -246,7 +244,7 @@ DEFINE_XEN_GUEST_HANDLE(xen_domctl_max_m #define XEN_DOMCTL_getvcpucontext 13 struct xen_domctl_vcpucontext { uint32_t vcpu; /* IN */ - XEN_GUEST_HANDLE(vcpu_guest_context_t) ctxt; /* IN/OUT */ + XEN_GUEST_HANDLE_64(vcpu_guest_context_t) ctxt; /* IN/OUT */ }; typedef struct xen_domctl_vcpucontext xen_domctl_vcpucontext_t; DEFINE_XEN_GUEST_HANDLE(xen_domctl_vcpucontext_t); @@ -260,7 +258,7 @@ struct xen_domctl_getvcpuinfo { uint8_t online; /* currently online (not hotplugged)? */ uint8_t blocked; /* blocked waiting for an event? */ uint8_t running; /* currently scheduled on its CPU? */ - uint64_t cpu_time; /* total cpu time consumed (ns) */ + uint64_aligned_t cpu_time; /* total cpu time consumed (ns) */ uint32_t cpu; /* current mapping */ }; typedef struct xen_domctl_getvcpuinfo xen_domctl_getvcpuinfo_t; @@ -298,9 +296,9 @@ struct xen_domctl_scheduler_op { uint32_t cmd; /* XEN_DOMCTL_SCHEDOP_* */ union { struct xen_domctl_sched_sedf { - uint64_t period; - uint64_t slice; - uint64_t latency; + uint64_aligned_t period; + uint64_aligned_t slice; + uint64_aligned_t latency; uint32_t extratime; uint32_t weight; } sedf; @@ -341,9 +339,9 @@ DEFINE_XEN_GUEST_HANDLE(xen_domctl_irq_p #define XEN_DOMCTL_iomem_permission 20 struct xen_domctl_iomem_permission { - uint64_t first_mfn; /* first page (physical page number) in range */ - uint64_t nr_mfns; /* number of pages in range (>0) */ - uint8_t allow_access; /* allow (!0) or deny (0) access to range? */ + uint64_aligned_t first_mfn;/* first page (physical page number) in range */ + uint64_aligned_t nr_mfns; /* number of pages in range (>0) */ + uint8_t allow_access; /* allow (!0) or deny (0) access to range? */ }; typedef struct xen_domctl_iomem_permission xen_domctl_iomem_permission_t; DEFINE_XEN_GUEST_HANDLE(xen_domctl_iomem_permission_t); @@ -360,7 +358,7 @@ DEFINE_XEN_GUEST_HANDLE(xen_domctl_iopor #define XEN_DOMCTL_hypercall_init 22 struct xen_domctl_hypercall_init { - uint64_t gmfn; /* GMFN to be initialised */ + uint64_aligned_t gmfn; /* GMFN to be initialised */ }; typedef struct xen_domctl_hypercall_init xen_domctl_hypercall_init_t; DEFINE_XEN_GUEST_HANDLE(xen_domctl_hypercall_init_t); @@ -371,12 +369,12 @@ DEFINE_XEN_GUEST_HANDLE(xen_domctl_hyper #define _XEN_DOMAINSETUP_query 1 /* Get parameters (for save) */ #define XEN_DOMAINSETUP_query (1UL<<_XEN_DOMAINSETUP_query) typedef struct xen_domctl_arch_setup { - uint64_t flags; /* XEN_DOMAINSETUP_* */ + uint64_aligned_t flags; /* XEN_DOMAINSETUP_* */ #ifdef __ia64__ - uint64_t bp; /* mpaddr of boot param area */ - uint64_t maxmem; /* Highest memory address for MDT. */ - uint64_t xsi_va; /* Xen shared_info area virtual address. */ - uint32_t hypercall_imm; /* Break imm for Xen hypercalls. */ + uint64_aligned_t bp; /* mpaddr of boot param area */ + uint64_aligned_t maxmem; /* Highest memory address for MDT. */ + uint64_aligned_t xsi_va; /* Xen shared_info area virtual address. */ + uint32_t hypercall_imm; /* Break imm for Xen hypercalls. */ #endif } xen_domctl_arch_setup_t; DEFINE_XEN_GUEST_HANDLE(xen_domctl_arch_setup_t); @@ -399,7 +397,7 @@ DEFINE_XEN_GUEST_HANDLE(hvm_domain_conte #define XEN_DOMCTL_gethvmcontext 33 #define XEN_DOMCTL_sethvmcontext 34 typedef struct xen_domctl_hvmcontext { - XEN_GUEST_HANDLE(hvm_domain_context_t) ctxt; /* IN/OUT */ + XEN_GUEST_HANDLE_64(hvm_domain_context_t) ctxt; /* IN/OUT */ } xen_domctl_hvmcontext_t; DEFINE_XEN_GUEST_HANDLE(xen_domctl_hvmcontext_t); @@ -409,9 +407,6 @@ struct xen_domctl_real_mode_area { }; typedef struct xen_domctl_real_mode_area xen_domctl_real_mode_area_t; DEFINE_XEN_GUEST_HANDLE(xen_domctl_real_mode_area_t); - -#define XEN_DOMCTL_set_compat 42 -#define XEN_DOMCTL_set_native 43 struct xen_domctl { uint32_t cmd; diff -r a94363b85e19 -r 30af6cfdb05c xen/include/public/sysctl.h --- a/xen/include/public/sysctl.h Wed Jan 24 15:59:09 2007 +0000 +++ b/xen/include/public/sysctl.h Wed Jan 24 16:33:19 2007 +0000 @@ -34,7 +34,7 @@ #include "xen.h" #include "domctl.h" -#define XEN_SYSCTL_INTERFACE_VERSION 0x00000002 +#define XEN_SYSCTL_INTERFACE_VERSION 0x00000003 /* * Read console content from Xen buffer ring. @@ -43,7 +43,7 @@ struct xen_sysctl_readconsole { struct xen_sysctl_readconsole { /* IN variables. */ uint32_t clear; /* Non-zero -> clear after reading. */ - XEN_GUEST_HANDLE(char) buffer; /* Buffer start */ + XEN_GUEST_HANDLE_64(char) buffer; /* Buffer start */ /* IN/OUT variables. */ uint32_t count; /* In: Buffer size; Out: Used buffer size */ }; @@ -65,7 +65,7 @@ struct xen_sysctl_tbuf_op { struct xenctl_cpumap cpu_mask; uint32_t evt_mask; /* OUT variables */ - uint64_t buffer_mfn; + uint64_aligned_t buffer_mfn; uint32_t size; }; typedef struct xen_sysctl_tbuf_op xen_sysctl_tbuf_op_t; @@ -81,9 +81,9 @@ struct xen_sysctl_physinfo { uint32_t sockets_per_node; uint32_t nr_nodes; uint32_t cpu_khz; - uint64_t total_pages; - uint64_t free_pages; - uint64_t scrub_pages; + uint64_aligned_t total_pages; + uint64_aligned_t free_pages; + uint64_aligned_t scrub_pages; uint32_t hw_cap[8]; }; typedef struct xen_sysctl_physinfo xen_sysctl_physinfo_t; @@ -121,9 +121,9 @@ struct xen_sysctl_perfc_op { uint32_t nr_counters; /* number of counters description */ uint32_t nr_vals; /* number of values */ /* counter information (or NULL) */ - XEN_GUEST_HANDLE(xen_sysctl_perfc_desc_t) desc; + XEN_GUEST_HANDLE_64(xen_sysctl_perfc_desc_t) desc; /* counter values (or NULL) */ - XEN_GUEST_HANDLE(xen_sysctl_perfc_val_t) val; + XEN_GUEST_HANDLE_64(xen_sysctl_perfc_val_t) val; }; typedef struct xen_sysctl_perfc_op xen_sysctl_perfc_op_t; DEFINE_XEN_GUEST_HANDLE(xen_sysctl_perfc_op_t); @@ -133,7 +133,7 @@ struct xen_sysctl_getdomaininfolist { /* IN variables. */ domid_t first_domain; uint32_t max_domains; - XEN_GUEST_HANDLE(xen_domctl_getdomaininfo_t) buffer; + XEN_GUEST_HANDLE_64(xen_domctl_getdomaininfo_t) buffer; /* OUT variables. */ uint32_t num_domains; }; diff -r a94363b85e19 -r 30af6cfdb05c xen/include/public/xen.h --- a/xen/include/public/xen.h Wed Jan 24 15:59:09 2007 +0000 +++ b/xen/include/public/xen.h Wed Jan 24 16:33:19 2007 +0000 @@ -588,6 +588,16 @@ DEFINE_XEN_GUEST_HANDLE(uint64_t); #endif /* !__ASSEMBLY__ */ +/* Default definitions for macros used by domctl/sysctl. */ +#if defined(__XEN__) || defined(__XEN_TOOLS__) +#ifndef uint64_aligned_t +#define uint64_aligned_t uint64_t +#endif +#ifndef XEN_GUEST_HANDLE_64 +#define XEN_GUEST_HANDLE_64(name) XEN_GUEST_HANDLE(name) +#endif +#endif + #endif /* __XEN_PUBLIC_XEN_H__ */ /* diff -r a94363b85e19 -r 30af6cfdb05c xen/include/xen/domain.h --- a/xen/include/xen/domain.h Wed Jan 24 15:59:09 2007 +0000 +++ b/xen/include/xen/domain.h Wed Jan 24 16:33:19 2007 +0000 @@ -18,11 +18,7 @@ void free_domain(struct domain *d); void free_domain(struct domain *d); struct xen_domctl_getdomaininfo; -void getdomaininfo( - struct domain *d, struct xen_domctl_getdomaininfo *info); -struct compat_domctl_getdomaininfo; -void compat_getdomaininfo( - struct domain *d, struct compat_domctl_getdomaininfo *info); +void getdomaininfo(struct domain *d, struct xen_domctl_getdomaininfo *info); /* * Arch-specifics. diff -r a94363b85e19 -r 30af6cfdb05c xen/include/xen/sched.h --- a/xen/include/xen/sched.h Wed Jan 24 15:59:09 2007 +0000 +++ b/xen/include/xen/sched.h Wed Jan 24 16:33:19 2007 +0000 @@ -275,13 +275,6 @@ int construct_dom0( unsigned long image_start, unsigned long image_len, unsigned long initrd_start, unsigned long initrd_len, char *cmdline); - -typedef union { - struct xen_domctl_vcpucontext *nat; - struct compat_domctl_vcpucontext *cmp; -} xen_domctl_vcpucontext_u __attribute__((__transparent_union__)); - -int set_info_guest(struct domain *d, xen_domctl_vcpucontext_u); struct domain *find_domain_by_id(domid_t dom); void domain_destroy(struct domain *d); diff -r a94363b85e19 -r 30af6cfdb05c xen/include/xlat.lst --- a/xen/include/xlat.lst Wed Jan 24 15:59:09 2007 +0000 +++ b/xen/include/xlat.lst Wed Jan 24 16:33:19 2007 +0000 @@ -10,10 +10,6 @@ ! trap_info arch-x86/xen.h ! vcpu_guest_context arch-x86/xen.h ? acm_getdecision acm_ops.h -! ctl_cpumap domctl.h -! domctl_scheduler_op domctl.h -! domctl_shadow_op domctl.h -! domctl_shadow_op_stats domctl.h ? evtchn_alloc_unbound event_channel.h ? evtchn_bind_interdomain event_channel.h ? evtchn_bind_ipi event_channel.h @@ -43,9 +39,6 @@ ! sched_poll sched.h ? sched_remote_shutdown sched.h ? sched_shutdown sched.h -? sysctl_perfc_desc sysctl.h -! sysctl_perfc_op sysctl.h -! sysctl_tbuf_op sysctl.h ? t_buf trace.h ! vcpu_runstate_info vcpu.h ? xenoprof_init xenoprof.h _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |