/******************************************************************************
- * arch/xen/drivers/netif/backend/main.c
+ * drivers/xen/netback/netback.c
*
- * Back-end of the driver for virtual block devices. This portion of the
- * driver exports a 'unified' block-device interface that can be accessed
+ * Back-end of the driver for virtual network devices. This portion of the
+ * driver exports a 'unified' network-device interface that can be accessed
* by any operating system that implements a compatible front end. A
* reference front-end implementation can be found in:
- * arch/xen/drivers/netif/frontend
+ * drivers/xen/netfront/netfront.c
*
* Copyright (c) 2002-2004, K A Fraser
*/
/* Drop the in-use reference to the page-table base. */
if ( pagetable_val(d->mm.pagetable) != 0 )
+ {
put_page_and_type(&frame_table[pagetable_val(d->mm.pagetable) >>
PAGE_SHIFT]);
+ d->mm.pagetable = mk_pagetable(0);
+ }
/*
* Relinquish GDT mappings. No need for explicit unmapping of the LDT as
/* PHASE 1 */
-
- adjust(&frame_table[pagetable_val(d->mm.pagetable)>>PAGE_SHIFT], -1, 1);
+ if( pagetable_val(d->mm.pagetable) )
+ adjust(&frame_table[pagetable_val(d->mm.pagetable)>>PAGE_SHIFT], -1, 1);
list_ent = d->page_list.next;
for ( i = 0; (list_ent != &d->page_list); i++ )
spin_unlock(&d->page_alloc_lock);
- adjust(&frame_table[pagetable_val(d->mm.pagetable)>>PAGE_SHIFT], 1, 1);
+ if( pagetable_val(d->mm.pagetable) )
+ adjust(&frame_table[pagetable_val(d->mm.pagetable)>>PAGE_SHIFT], 1, 1);
- printk("Audit %d: Done. ctot=%d ttot=%d\n", d->id, ctot, ttot );
+ printk("Audit %d: Done. pages=%d ctot=%d ttot=%d\n", i, d->id, ctot, ttot );
if ( d != current )
domain_unpause(d);