# HG changeset patch
# User kaf24@xxxxxxxxxxxxxxxxxxxx
# Node ID a4de51a2629f10bb12b2cea7dc4d2d5747e6ca78
# Parent b3edbeea3e797b7e56d13ab7ae126fbcd1fb6a70
Remove obsolete MMUEXT_REASSIGN_PAGE. It's not used by
anyone and is superceded by grant transfers.
Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
diff -r b3edbeea3e79 -r a4de51a2629f xen/arch/x86/mm.c
--- a/xen/arch/x86/mm.c Wed Dec 21 17:45:43 2005
+++ b/xen/arch/x86/mm.c Wed Dec 21 18:10:53 2005
@@ -1930,105 +1930,6 @@
}
break;
}
-
- case MMUEXT_REASSIGN_PAGE:
- if ( unlikely(!IS_PRIV(d)) )
- {
- MEM_LOG("Dom %u has no reassignment priv", d->domain_id);
- okay = 0;
- break;
- }
-
- e = percpu_info[cpu].foreign;
- if ( unlikely(e == NULL) )
- {
- MEM_LOG("No FOREIGNDOM to reassign mfn %lx to", mfn);
- okay = 0;
- break;
- }
-
- /*
- * Grab both page_list locks, in order. This prevents the page from
- * disappearing elsewhere while we modify the owner, and we'll need
- * both locks if we're successful so that we can change lists.
- */
- if ( d < e )
- {
- spin_lock(&d->page_alloc_lock);
- spin_lock(&e->page_alloc_lock);
- }
- else
- {
- spin_lock(&e->page_alloc_lock);
- spin_lock(&d->page_alloc_lock);
- }
-
- /*
- * Check that 'e' will accept the page and has reservation
- * headroom. Also, a domain mustn't have PGC_allocated pages when
- * it is dying.
- */
- ASSERT(e->tot_pages <= e->max_pages);
- if ( unlikely(test_bit(_DOMF_dying, &e->domain_flags)) ||
- unlikely(e->tot_pages == e->max_pages) ||
- unlikely(IS_XEN_HEAP_FRAME(page)) )
- {
- MEM_LOG("Transferee has no reservation headroom (%d,%d), or "
- "page is in Xen heap (%lx), or dom is dying (%ld).",
- e->tot_pages, e->max_pages, mfn, e->domain_flags);
- okay = 0;
- goto reassign_fail;
- }
-
- /*
- * The tricky bit: atomically change owner while there is just one
- * benign reference to the page (PGC_allocated). If that reference
- * disappears then the deallocation routine will safely spin.
- */
- _d = pickle_domptr(d);
- _nd = page->u.inuse._domain;
- y = page->count_info;
- do {
- x = y;
- if ( unlikely((x & (PGC_count_mask|PGC_allocated)) !=
- (1|PGC_allocated)) ||
- unlikely(_nd != _d) )
- {
- MEM_LOG("Bad page values %lx: ed=%p(%u), sd=%p,"
- " caf=%08x, taf=%" PRtype_info,
- page_to_pfn(page), d, d->domain_id,
- unpickle_domptr(_nd), x, page->u.inuse.type_info);
- okay = 0;
- goto reassign_fail;
- }
- __asm__ __volatile__(
- LOCK_PREFIX "cmpxchg8b %3"
- : "=d" (_nd), "=a" (y), "=c" (e),
- "=m" (*(volatile u64 *)(&page->count_info))
- : "0" (_d), "1" (x), "c" (e), "b" (x) );
- }
- while ( unlikely(_nd != _d) || unlikely(y != x) );
-
- /*
- * Unlink from 'd'. We transferred at least one reference to 'e',
- * so noone else is spinning to try to delete this page from 'd'.
- */
- d->tot_pages--;
- list_del(&page->list);
-
- /*
- * Add the page to 'e'. Someone may already have removed the last
- * reference and want to remove the page from 'e'. However, we have
- * the lock so they'll spin waiting for us.
- */
- if ( unlikely(e->tot_pages++ == 0) )
- get_knownalive_domain(e);
- list_add_tail(&page->list, &e->page_list);
-
- reassign_fail:
- spin_unlock(&d->page_alloc_lock);
- spin_unlock(&e->page_alloc_lock);
- break;
default:
MEM_LOG("Invalid extended pt command 0x%x", op.cmd);
diff -r b3edbeea3e79 -r a4de51a2629f xen/include/public/xen.h
--- a/xen/include/public/xen.h Wed Dec 21 17:45:43 2005
+++ b/xen/include/public/xen.h Wed Dec 21 18:10:53 2005
@@ -145,10 +145,6 @@
* cmd: MMUEXT_SET_LDT
* linear_addr: Linear address of LDT base (NB. must be page-aligned).
* nr_ents: Number of entries in LDT.
- *
- * cmd: MMUEXT_REASSIGN_PAGE
- * mfn: Machine frame number to be reassigned to the FD.
- * (NB. page must currently belong to the calling domain).
*/
#define MMUEXT_PIN_L1_TABLE 0
#define MMUEXT_PIN_L2_TABLE 1
@@ -164,14 +160,13 @@
#define MMUEXT_INVLPG_ALL 11
#define MMUEXT_FLUSH_CACHE 12
#define MMUEXT_SET_LDT 13
-#define MMUEXT_REASSIGN_PAGE 14
#define MMUEXT_NEW_USER_BASEPTR 15
#ifndef __ASSEMBLY__
struct mmuext_op {
unsigned int cmd;
union {
- /* [UN]PIN_TABLE, NEW_BASEPTR, NEW_USER_BASEPTR, REASSIGN_PAGE */
+ /* [UN]PIN_TABLE, NEW_BASEPTR, NEW_USER_BASEPTR */
unsigned long mfn;
/* INVLPG_LOCAL, INVLPG_ALL, SET_LDT */
unsigned long linear_addr;
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|