[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] Restructure GNTTABOP_map_grant_ref.
# HG changeset patch # User kaf24@xxxxxxxxxxxxxxxxxxxx # Node ID 7ff651a39cfcfc5237a7dcb49fd148198d48fd9d # Parent 352151393395cd8c2890cf3266bdff32967101c4 Restructure GNTTABOP_map_grant_ref. Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx> diff -r 352151393395 -r 7ff651a39cfc xen/arch/x86/mm.c --- a/xen/arch/x86/mm.c Fri Sep 23 13:43:52 2005 +++ b/xen/arch/x86/mm.c Fri Sep 23 15:28:17 2005 @@ -2273,8 +2273,7 @@ int update_grant_pte_mapping( - unsigned long pte_addr, l1_pgentry_t _nl1e, - struct domain *d, struct vcpu *v) + unsigned long pte_addr, l1_pgentry_t _nl1e, struct vcpu *v) { int rc = GNTST_okay; void *va; @@ -2282,6 +2281,7 @@ struct pfn_info *page; u32 type_info; l1_pgentry_t ol1e; + struct domain *d = v->domain; ASSERT(spin_is_locked(&d->big_lock)); ASSERT(!shadow_mode_refcounts(d)); @@ -2318,8 +2318,6 @@ } put_page_from_l1e(ol1e, d); - - rc = (l1e_get_flags(ol1e) & _PAGE_PRESENT) ? GNTST_flush_all : GNTST_okay; if ( unlikely(shadow_mode_enabled(d)) ) { @@ -2415,10 +2413,10 @@ int update_grant_va_mapping( - unsigned long va, l1_pgentry_t _nl1e, struct domain *d, struct vcpu *v) -{ - int rc = GNTST_okay; + unsigned long va, l1_pgentry_t _nl1e, struct vcpu *v) +{ l1_pgentry_t *pl1e, ol1e; + struct domain *d = v->domain; ASSERT(spin_is_locked(&d->big_lock)); ASSERT(!shadow_mode_refcounts(d)); @@ -2439,12 +2437,10 @@ put_page_from_l1e(ol1e, d); - rc = (l1e_get_flags(ol1e) & _PAGE_PRESENT) ? GNTST_flush_one : GNTST_okay; - if ( unlikely(shadow_mode_enabled(d)) ) shadow_do_update_va_mapping(va, _nl1e, v); - return rc; + return GNTST_okay; } int clear_grant_va_mapping(unsigned long addr, unsigned long frame) diff -r 352151393395 -r 7ff651a39cfc xen/common/grant_table.c --- a/xen/common/grant_table.c Fri Sep 23 13:43:52 2005 +++ b/xen/common/grant_table.c Fri Sep 23 15:28:17 2005 @@ -24,10 +24,6 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#define GRANT_DEBUG 0 -#define GRANT_DEBUG_VERBOSE 0 - -#include <xen/config.h> #include <xen/lib.h> #include <xen/sched.h> #include <xen/shadow.h> @@ -68,39 +64,32 @@ t->map_count--; } +/* + * Returns 0 if TLB flush / invalidate required by caller. + * va will indicate the address to be invalidated. + * + * addr is _either_ a host virtual address, or the address of the pte to + * update, as indicated by the GNTMAP_contains_pte flag. + */ static int -__gnttab_activate_grant_ref( - struct domain *mapping_d, /* IN */ - struct vcpu *mapping_ed, - struct domain *granting_d, - grant_ref_t ref, - u16 dev_hst_ro_flags, - u64 addr, - unsigned long *pframe ) /* OUT */ -{ - domid_t sdom; - u16 sflags; +__gnttab_map_grant_ref( + gnttab_map_grant_ref_t *uop) +{ + domid_t dom; + grant_ref_t ref; + struct domain *ld, *rd; + struct vcpu *led; + u16 dev_hst_ro_flags; + int handle; + u64 addr; + unsigned long frame = 0; + int rc; active_grant_entry_t *act; - grant_entry_t *sha; - s16 rc = 1; - unsigned long frame = 0; - int retries = 0; - - /* - * Objectives of this function: - * . Make the record ( granting_d, ref ) active, if not already. - * . Update shared grant entry of owner, indicating frame is mapped. - * . Increment the owner act->pin reference counts. - * . get_page on shared frame if new mapping. - * . get_page_type if this is first RW mapping of frame. - * . Add PTE to virtual address space of mapping_d, if necessary. - * Returns: - * . -ve: error - * . 1: ok - * . 0: ok and TLB invalidate of host_addr needed. - * - * On success, *pframe contains mfn. - */ + + /* Entry details from @rd's shared grant table. */ + grant_entry_t *sha; + domid_t sdom; + u16 sflags; /* * We bound the number of times we retry CMPXCHG on memory locations that @@ -110,11 +99,88 @@ * the guest to race our updates (e.g., to change the GTF_readonly flag), * so we allow a few retries before failing. */ - - act = &granting_d->grant_table->active[ref]; - sha = &granting_d->grant_table->shared[ref]; - - spin_lock(&granting_d->grant_table->lock); + int retries = 0; + + led = current; + ld = led->domain; + + /* Bitwise-OR avoids short-circuiting which screws control flow. */ + if ( unlikely(__get_user(dom, &uop->dom) | + __get_user(ref, &uop->ref) | + __get_user(addr, &uop->host_addr) | + __get_user(dev_hst_ro_flags, &uop->flags)) ) + { + DPRINTK("Fault while reading gnttab_map_grant_ref_t.\n"); + return -EFAULT; /* don't set status */ + } + + if ( unlikely(ref >= NR_GRANT_ENTRIES) || + unlikely((dev_hst_ro_flags & + (GNTMAP_device_map|GNTMAP_host_map)) == 0) ) + { + DPRINTK("Bad ref (%d) or flags (%x).\n", ref, dev_hst_ro_flags); + (void)__put_user(GNTST_bad_gntref, &uop->handle); + return GNTST_bad_gntref; + } + + if ( acm_pre_grant_map_ref(dom) ) + { + (void)__put_user(GNTST_permission_denied, &uop->handle); + return GNTST_permission_denied; + } + + if ( unlikely((rd = find_domain_by_id(dom)) == NULL) || + unlikely(ld == rd) ) + { + if ( rd != NULL ) + put_domain(rd); + DPRINTK("Could not find domain %d\n", dom); + (void)__put_user(GNTST_bad_domain, &uop->handle); + return GNTST_bad_domain; + } + + /* Get a maptrack handle. */ + if ( unlikely((handle = get_maptrack_handle(ld->grant_table)) == -1) ) + { + int i; + grant_mapping_t *new_mt; + grant_table_t *lgt = ld->grant_table; + + if ( (lgt->maptrack_limit << 1) > MAPTRACK_MAX_ENTRIES ) + { + put_domain(rd); + DPRINTK("Maptrack table is at maximum size.\n"); + (void)__put_user(GNTST_no_device_space, &uop->handle); + return GNTST_no_device_space; + } + + /* Grow the maptrack table. */ + new_mt = alloc_xenheap_pages(lgt->maptrack_order + 1); + if ( new_mt == NULL ) + { + put_domain(rd); + DPRINTK("No more map handles available.\n"); + (void)__put_user(GNTST_no_device_space, &uop->handle); + return GNTST_no_device_space; + } + + memcpy(new_mt, lgt->maptrack, PAGE_SIZE << lgt->maptrack_order); + for ( i = lgt->maptrack_limit; i < (lgt->maptrack_limit << 1); i++ ) + new_mt[i].ref_and_flags = (i+1) << MAPTRACK_REF_SHIFT; + + free_xenheap_pages(lgt->maptrack, lgt->maptrack_order); + lgt->maptrack = new_mt; + lgt->maptrack_order += 1; + lgt->maptrack_limit <<= 1; + + DPRINTK("Doubled maptrack size\n"); + handle = get_maptrack_handle(ld->grant_table); + } + + act = &rd->grant_table->active[ref]; + sha = &rd->grant_table->shared[ref]; + + spin_lock(&rd->grant_table->lock); if ( act->pin == 0 ) { @@ -132,10 +198,10 @@ u32 scombo, prev_scombo, new_scombo; if ( unlikely((sflags & GTF_type_mask) != GTF_permit_access) || - unlikely(sdom != mapping_d->domain_id) ) + unlikely(sdom != led->domain->domain_id) ) PIN_FAIL(unlock_out, GNTST_general_error, "Bad flags (%x) or dom (%d). (NB. expected dom %d)\n", - sflags, sdom, mapping_d->domain_id); + sflags, sdom, led->domain->domain_id); /* Merge two 16-bit values into a 32-bit combined update. */ /* NB. Endianness! */ @@ -173,12 +239,12 @@ /* rmb(); */ /* not on x86 */ - frame = __gpfn_to_mfn_foreign(granting_d, sha->frame); + frame = __gpfn_to_mfn_foreign(rd, sha->frame); if ( unlikely(!pfn_valid(frame)) || unlikely(!((dev_hst_ro_flags & GNTMAP_readonly) ? - get_page(&frame_table[frame], granting_d) : - get_page_and_type(&frame_table[frame], granting_d, + get_page(&frame_table[frame], rd) : + get_page_and_type(&frame_table[frame], rd, PGT_writable_page))) ) { clear_bit(_GTF_writing, &sha->flags); @@ -208,10 +274,11 @@ PIN_FAIL(unlock_out, ENOSPC, "Risk of counter overflow %08x\n", act->pin); - frame = act->frame; - - if ( !(dev_hst_ro_flags & GNTMAP_readonly) && - !((sflags = sha->flags) & GTF_writing) ) + sflags = sha->flags; + frame = act->frame; + + if ( !(dev_hst_ro_flags & GNTMAP_readonly) && + !(act->pin & (GNTPIN_hstw_mask|GNTPIN_devw_mask)) ) { for ( ; ; ) { @@ -264,9 +331,9 @@ * frame contains the mfn. */ - spin_unlock(&granting_d->grant_table->lock); - - if ( (addr != 0) && (dev_hst_ro_flags & GNTMAP_host_map) ) + spin_unlock(&rd->grant_table->lock); + + if ( dev_hst_ro_flags & GNTMAP_host_map ) { /* Write update into the pagetable. */ l1_pgentry_t pte; @@ -278,18 +345,15 @@ l1e_add_flags(pte,_PAGE_RW); if ( dev_hst_ro_flags & GNTMAP_contains_pte ) - rc = update_grant_pte_mapping(addr, pte, mapping_d, mapping_ed); + rc = update_grant_pte_mapping(addr, pte, led); else - rc = update_grant_va_mapping(addr, pte, mapping_d, mapping_ed); - - /* IMPORTANT: rc indicates the degree of TLB flush that is required. - * GNTST_flush_one (1) or GNTST_flush_all (2). This is done in the - * outer gnttab_map_grant_ref. */ + rc = update_grant_va_mapping(addr, pte, led); + if ( rc < 0 ) { /* Failure: undo and abort. */ - spin_lock(&granting_d->grant_table->lock); + spin_lock(&rd->grant_table->lock); if ( dev_hst_ro_flags & GNTMAP_readonly ) { @@ -311,160 +375,27 @@ put_page(&frame_table[frame]); } - spin_unlock(&granting_d->grant_table->lock); - } - - } - - *pframe = frame; + spin_unlock(&rd->grant_table->lock); + } + + } + + ld->grant_table->maptrack[handle].domid = dom; + ld->grant_table->maptrack[handle].ref_and_flags = + (ref << MAPTRACK_REF_SHIFT) | + (dev_hst_ro_flags & MAPTRACK_GNTMAP_MASK); + + (void)__put_user((u64)frame << PAGE_SHIFT, &uop->dev_bus_addr); + (void)__put_user(handle, &uop->handle); + + put_domain(rd); return rc; + unlock_out: - spin_unlock(&granting_d->grant_table->lock); - return rc; -} - -/* - * Returns 0 if TLB flush / invalidate required by caller. - * va will indicate the address to be invalidated. - * - * addr is _either_ a host virtual address, or the address of the pte to - * update, as indicated by the GNTMAP_contains_pte flag. - */ -static int -__gnttab_map_grant_ref( - gnttab_map_grant_ref_t *uop, - unsigned long *va) -{ - domid_t dom; - grant_ref_t ref; - struct domain *ld, *rd; - struct vcpu *led; - u16 dev_hst_ro_flags; - int handle; - u64 addr; - unsigned long frame = 0; - int rc; - - led = current; - ld = led->domain; - - /* Bitwise-OR avoids short-circuiting which screws control flow. */ - if ( unlikely(__get_user(dom, &uop->dom) | - __get_user(ref, &uop->ref) | - __get_user(addr, &uop->host_addr) | - __get_user(dev_hst_ro_flags, &uop->flags)) ) - { - DPRINTK("Fault while reading gnttab_map_grant_ref_t.\n"); - return -EFAULT; /* don't set status */ - } - - if ( (dev_hst_ro_flags & GNTMAP_host_map) && - ( (addr == 0) || - (!(dev_hst_ro_flags & GNTMAP_contains_pte) && - unlikely(!__addr_ok(addr))) ) ) - { - DPRINTK("Bad virtual address (%"PRIx64") or flags (%"PRIx16").\n", - addr, dev_hst_ro_flags); - (void)__put_user(GNTST_bad_virt_addr, &uop->handle); - return GNTST_bad_gntref; - } - - if ( unlikely(ref >= NR_GRANT_ENTRIES) || - unlikely((dev_hst_ro_flags & - (GNTMAP_device_map|GNTMAP_host_map)) == 0) ) - { - DPRINTK("Bad ref (%d) or flags (%x).\n", ref, dev_hst_ro_flags); - (void)__put_user(GNTST_bad_gntref, &uop->handle); - return GNTST_bad_gntref; - } - - if (acm_pre_grant_map_ref(dom)) { - (void)__put_user(GNTST_permission_denied, &uop->handle); - return GNTST_permission_denied; - } - - if ( unlikely((rd = find_domain_by_id(dom)) == NULL) || - unlikely(ld == rd) ) - { - if ( rd != NULL ) - put_domain(rd); - DPRINTK("Could not find domain %d\n", dom); - (void)__put_user(GNTST_bad_domain, &uop->handle); - return GNTST_bad_domain; - } - - /* Get a maptrack handle. */ - if ( unlikely((handle = get_maptrack_handle(ld->grant_table)) == -1) ) - { - int i; - grant_mapping_t *new_mt; - grant_table_t *lgt = ld->grant_table; - - if ( (lgt->maptrack_limit << 1) > MAPTRACK_MAX_ENTRIES ) - { - put_domain(rd); - DPRINTK("Maptrack table is at maximum size.\n"); - (void)__put_user(GNTST_no_device_space, &uop->handle); - return GNTST_no_device_space; - } - - /* Grow the maptrack table. */ - new_mt = alloc_xenheap_pages(lgt->maptrack_order + 1); - if ( new_mt == NULL ) - { - put_domain(rd); - DPRINTK("No more map handles available.\n"); - (void)__put_user(GNTST_no_device_space, &uop->handle); - return GNTST_no_device_space; - } - - memcpy(new_mt, lgt->maptrack, PAGE_SIZE << lgt->maptrack_order); - for ( i = lgt->maptrack_limit; i < (lgt->maptrack_limit << 1); i++ ) - new_mt[i].ref_and_flags = (i+1) << MAPTRACK_REF_SHIFT; - - free_xenheap_pages(lgt->maptrack, lgt->maptrack_order); - lgt->maptrack = new_mt; - lgt->maptrack_order += 1; - lgt->maptrack_limit <<= 1; - - DPRINTK("Doubled maptrack size\n"); - handle = get_maptrack_handle(ld->grant_table); - } - -#if GRANT_DEBUG_VERBOSE - DPRINTK("Mapping grant ref (%hu) for domain (%hu) with flags (%x)\n", - ref, dom, dev_hst_ro_flags); -#endif - - if ( (rc = __gnttab_activate_grant_ref(ld, led, rd, ref, dev_hst_ro_flags, - addr, &frame)) >= 0 ) - { - /* - * Only make the maptrack live _after_ writing the pte, in case we - * overwrite the same frame number, causing a maptrack walk to find it - */ - ld->grant_table->maptrack[handle].domid = dom; - - ld->grant_table->maptrack[handle].ref_and_flags - = (ref << MAPTRACK_REF_SHIFT) | - (dev_hst_ro_flags & MAPTRACK_GNTMAP_MASK); - - (void)__put_user((u64)frame << PAGE_SHIFT, &uop->dev_bus_addr); - - if ( ( dev_hst_ro_flags & GNTMAP_host_map ) && - !( dev_hst_ro_flags & GNTMAP_contains_pte) ) - *va = addr; - - (void)__put_user(handle, &uop->handle); - } - else - { - (void)__put_user(rc, &uop->handle); - put_maptrack_handle(ld->grant_table, handle); - } - - put_domain(rd); + spin_unlock(&rd->grant_table->lock); + (void)__put_user(rc, &uop->handle); + put_maptrack_handle(ld->grant_table, handle); return rc; } @@ -472,25 +403,17 @@ gnttab_map_grant_ref( gnttab_map_grant_ref_t *uop, unsigned int count) { - int i, rc, flush = 0; - unsigned long va = 0; + int i; for ( i = 0; i < count; i++ ) - if ( (rc =__gnttab_map_grant_ref(&uop[i], &va)) >= 0 ) - flush += rc; - - if ( flush == 1 ) - flush_tlb_one_mask(current->domain->cpumask, va); - else if ( flush != 0 ) - flush_tlb_mask(current->domain->cpumask); + (void)__gnttab_map_grant_ref(&uop[i]); return 0; } static int __gnttab_unmap_grant_ref( - gnttab_unmap_grant_ref_t *uop, - unsigned long *va) + gnttab_unmap_grant_ref_t *uop) { domid_t dom; grant_ref_t ref; @@ -500,7 +423,7 @@ grant_entry_t *sha; grant_mapping_t *map; u16 flags; - s16 rc = 1; + s16 rc = 0; u64 addr, dev_bus_addr; unsigned long frame; @@ -540,11 +463,6 @@ (void)__put_user(GNTST_bad_domain, &uop->status); return GNTST_bad_domain; } - -#if GRANT_DEBUG_VERBOSE - DPRINTK("Unmapping grant ref (%hu) for domain (%hu) with handle (%hu)\n", - ref, dom, handle); -#endif act = &rd->grant_table->active[ref]; sha = &rd->grant_table->shared[ref]; @@ -566,8 +484,6 @@ map->ref_and_flags &= ~GNTMAP_device_map; (void)__put_user(0, &uop->dev_bus_addr); - - /* Frame is now unmapped for device access. */ } if ( (addr != 0) && @@ -589,10 +505,6 @@ act->pin -= (flags & GNTMAP_readonly) ? GNTPIN_hstr_inc : GNTPIN_hstw_inc; - - rc = 0; - if ( !( flags & GNTMAP_contains_pte) ) - *va = addr; } if ( (map->ref_and_flags & (GNTMAP_device_map|GNTMAP_host_map)) == 0) @@ -632,17 +544,12 @@ gnttab_unmap_grant_ref( gnttab_unmap_grant_ref_t *uop, unsigned int count) { - int i, flush = 0; - unsigned long va = 0; + int i; for ( i = 0; i < count; i++ ) - if ( __gnttab_unmap_grant_ref(&uop[i], &va) == 0 ) - flush++; - - if ( flush == 1 ) - flush_tlb_one_mask(current->domain->cpumask, va); - else if ( flush != 0 ) - flush_tlb_mask(current->domain->cpumask); + (void)__gnttab_unmap_grant_ref(&uop[i]); + + flush_tlb_mask(current->domain->cpumask); return 0; } @@ -703,9 +610,9 @@ return 0; } -#if GRANT_DEBUG static int -gnttab_dump_table(gnttab_dump_table_t *uop) +gnttab_dump_table( + gnttab_dump_table_t *uop) { grant_table_t *gt; gnttab_dump_table_t op; @@ -716,6 +623,8 @@ grant_mapping_t *maptrack; int i; + if ( !IS_PRIV(current->domain) ) + return -EPERM; if ( unlikely(copy_from_user(&op, uop, sizeof(op)) != 0) ) { @@ -724,9 +633,7 @@ } if ( op.dom == DOMID_SELF ) - { op.dom = current->domain->domain_id; - } if ( unlikely((d = find_domain_by_id(op.dom)) == NULL) ) { @@ -750,14 +657,11 @@ for ( i = 0; i < NR_GRANT_ENTRIES; i++ ) { - sha_copy = gt->shared[i]; - + sha_copy = gt->shared[i]; if ( sha_copy.flags ) - { DPRINTK("Grant: dom (%hu) SHARED (%d) flags:(%hx) " "dom:(%hu) frame:(%x)\n", op.dom, i, sha_copy.flags, sha_copy.domid, sha_copy.frame); - } } spin_lock(>->lock); @@ -765,28 +669,22 @@ for ( i = 0; i < NR_GRANT_ENTRIES; i++ ) { act = >->active[i]; - if ( act->pin ) - { DPRINTK("Grant: dom (%hu) ACTIVE (%d) pin:(%x) " "dom:(%hu) frame:(%lx)\n", op.dom, i, act->pin, act->domid, act->frame); - } } for ( i = 0; i < gt->maptrack_limit; i++ ) { maptrack = >->maptrack[i]; - if ( maptrack->ref_and_flags & MAPTRACK_GNTMAP_MASK ) - { DPRINTK("Grant: dom (%hu) MAP (%d) ref:(%hu) flags:(%x) " "dom:(%hu)\n", op.dom, i, maptrack->ref_and_flags >> MAPTRACK_REF_SHIFT, maptrack->ref_and_flags & MAPTRACK_GNTMAP_MASK, maptrack->domid); - } } spin_unlock(>->lock); @@ -794,10 +692,10 @@ put_domain(d); return 0; } -#endif static long -gnttab_transfer(gnttab_transfer_t *uop, unsigned int count) +gnttab_transfer( + gnttab_transfer_t *uop, unsigned int count) { struct domain *d = current->domain; struct domain *e; @@ -810,10 +708,7 @@ for ( i = 0; i < count; i++ ) { gnttab_transfer_t *gop = &uop[i]; -#if GRANT_DEBUG - printk("gnttab_transfer: i=%d mfn=%lx domid=%d gref=%08x\n", - i, gop->mfn, gop->domid, gop->handle); -#endif + page = &frame_table[gop->mfn]; if ( unlikely(IS_XEN_HEAP_FRAME(page))) @@ -956,11 +851,9 @@ case GNTTABOP_setup_table: rc = gnttab_setup_table((gnttab_setup_table_t *)uop, count); break; -#if GRANT_DEBUG case GNTTABOP_dump_table: rc = gnttab_dump_table((gnttab_dump_table_t *)uop); break; -#endif case GNTTABOP_transfer: if (unlikely(!array_access_ok( uop, count, sizeof(gnttab_transfer_t)))) @@ -1001,12 +894,6 @@ int found = 0; lgt = ld->grant_table; - -#if GRANT_DEBUG_VERBOSE - if ( ld->domain_id != 0 ) - DPRINTK("Foreign unref rd(%d) ld(%d) frm(%lx) flgs(%x).\n", - rd->domain_id, ld->domain_id, frame, readonly); -#endif /* Fast exit if we're not mapping anything using grant tables */ if ( lgt->map_count == 0 ) @@ -1098,11 +985,6 @@ int retries = 0; unsigned long target_pfn; -#if GRANT_DEBUG_VERBOSE - DPRINTK("gnttab_prepare_for_transfer rd(%hu) ld(%hu) ref(%hu).\n", - rd->domain_id, ld->domain_id, ref); -#endif - if ( unlikely((rgt = rd->grant_table) == NULL) || unlikely(ref >= NR_GRANT_ENTRIES) ) { diff -r 352151393395 -r 7ff651a39cfc xen/include/asm-x86/mm.h --- a/xen/include/asm-x86/mm.h Fri Sep 23 13:43:52 2005 +++ b/xen/include/asm-x86/mm.h Fri Sep 23 15:28:17 2005 @@ -380,11 +380,9 @@ * hold a reference to the page. */ int update_grant_va_mapping( - unsigned long va, l1_pgentry_t _nl1e, - struct domain *d, struct vcpu *v); + unsigned long va, l1_pgentry_t _nl1e, struct vcpu *v); int update_grant_pte_mapping( - unsigned long pte_addr, l1_pgentry_t _nl1e, - struct domain *d, struct vcpu *v); + unsigned long pte_addr, l1_pgentry_t _nl1e, struct vcpu *v); int clear_grant_va_mapping(unsigned long addr, unsigned long frame); int clear_grant_pte_mapping( unsigned long addr, unsigned long frame, struct domain *d); diff -r 352151393395 -r 7ff651a39cfc xen/include/xen/grant_table.h --- a/xen/include/xen/grant_table.h Fri Sep 23 13:43:52 2005 +++ b/xen/include/xen/grant_table.h Fri Sep 23 15:28:17 2005 @@ -110,8 +110,4 @@ void gnttab_release_dev_mappings(grant_table_t *gt); -/* Extra GNTST_ values, for internal use only. */ -#define GNTST_flush_all (2) /* Success, need to flush entire TLB. */ -#define GNTST_flush_one (1) /* Success, need to flush a vaddr. */ - #endif /* __XEN_GRANT_H__ */ _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |