[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] Merge
# HG changeset patch # User iap10@xxxxxxxxxxxxxxxxxxxxx # Node ID 00c349d5b40d269da4fec9510f1dd7c6bb3b3327 # Parent 31d86fc0a2713b3c76f79d15a2e9a4f2516ccdc5 # Parent fad187cad5bd39eedc8fef9a9ecf4a656cb4eb17 Merge diff -r 31d86fc0a271 -r 00c349d5b40d linux-2.6-xen-sparse/arch/xen/i386/kernel/swiotlb.c --- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/swiotlb.c Sat Dec 3 19:05:39 2005 +++ b/linux-2.6-xen-sparse/arch/xen/i386/kernel/swiotlb.c Sat Dec 3 19:16:04 2005 @@ -43,7 +43,7 @@ */ #define IO_TLB_SHIFT 11 -int swiotlb_force; +static int swiotlb_force; static char *iotlb_virt_start; static unsigned long iotlb_nslabs; @@ -101,10 +101,13 @@ ++str; /* * NB. 'force' enables the swiotlb, but doesn't force its use for - * every DMA like it does on native Linux. + * every DMA like it does on native Linux. 'off' forcibly disables + * use of the swiotlb. */ if (!strcmp(str, "force")) swiotlb_force = 1; + else if (!strcmp(str, "off")) + swiotlb_force = -1; return 1; } __setup("swiotlb=", setup_io_tlb_npages); @@ -179,23 +182,21 @@ swiotlb_init(void) { long ram_end; - - /* The user can forcibly enable swiotlb. */ - if (swiotlb_force) + size_t defsz = 64 * (1 << 20); /* 64MB default size */ + + if (swiotlb_force == 1) { swiotlb = 1; - - /* - * Otherwise, enable for domain 0 if the machine has 'lots of memory', - * which we take to mean more than 2GB. - */ - if (xen_start_info->flags & SIF_INITDOMAIN) { + } else if ((swiotlb_force != -1) && + (xen_start_info->flags & SIF_INITDOMAIN)) { + /* Domain 0 always has a swiotlb. */ ram_end = HYPERVISOR_memory_op(XENMEM_maximum_ram_page, NULL); - if (ram_end > 0x7ffff) - swiotlb = 1; + if (ram_end <= 0x7ffff) + defsz = 2 * (1 << 20); /* 2MB on <2GB on systems. */ + swiotlb = 1; } if (swiotlb) - swiotlb_init_with_default_size(64 * (1<<20)); + swiotlb_init_with_default_size(defsz); else printk(KERN_INFO "Software IO TLB disabled\n"); } diff -r 31d86fc0a271 -r 00c349d5b40d linux-2.6-xen-sparse/drivers/xen/blkback/interface.c --- a/linux-2.6-xen-sparse/drivers/xen/blkback/interface.c Sat Dec 3 19:05:39 2005 +++ b/linux-2.6-xen-sparse/drivers/xen/blkback/interface.c Sat Dec 3 19:16:04 2005 @@ -123,11 +123,10 @@ blkif_t *blkif = (blkif_t *)arg; /* Already disconnected? */ - if (!blkif->irq) - return; - - unbind_from_irqhandler(blkif->irq, blkif); - blkif->irq = 0; + if (blkif->irq) { + unbind_from_irqhandler(blkif->irq, blkif); + blkif->irq = 0; + } vbd_free(&blkif->vbd); diff -r 31d86fc0a271 -r 00c349d5b40d tools/examples/vif-nat --- a/tools/examples/vif-nat Sat Dec 3 19:05:39 2005 +++ b/tools/examples/vif-nat Sat Dec 3 19:16:04 2005 @@ -42,14 +42,15 @@ fi +domid=$(echo "$XENBUS_PATH" | sed -n 's#.*/\([0-9]*\)/[0-9]*$#\1#p') +vifid=$(echo "$XENBUS_PATH" | sed -n 's#.*/[0-9]*/\([0-9]*\)$#\1#p') +vifid=$(( $vifid + 1 )) + + ip_from_dom() { - local domid=$(echo "$XENBUS_PATH" | sed -n 's#.*/\([0-9]*\)/[0-9]*$#\1#p') - local vifid=$(echo "$XENBUS_PATH" | sed -n 's#.*/[0-9]*/\([0-9]*\)$#\1#p') - local domid1=$(( $domid / 256 )) local domid2=$(( $domid % 256 )) - vifid=$(( $vifid + 1 )) echo "10.$domid1.$domid2.$vifid/16" } @@ -92,10 +93,17 @@ network=$(dotted_quad $(( $vif_int & $intmask )) ) +hostname=$(xenstore_read "$XENBUS_PATH/domain" | tr -- '_.:/+' '-----') +if [ "$vifid" != "1" ] +then + hostname="$hostname-$vifid" +fi + + dhcp_remove_entry() { local tmpfile=$(mktemp) - grep -v "host Xen-${vif/./-}" "$dhcpd_conf_file" >"$tmpfile" + grep -v "host $hostname" "$dhcpd_conf_file" >"$tmpfile" if diff "$tmpfile" "$dhcpd_conf_file" >/dev/null then rm "$tmpfile" @@ -107,18 +115,21 @@ dhcp_up() { + claim_lock "vif-nat-dhcp" dhcp_remove_entry mac=$(xenstore_read "$XENBUS_PATH/mac") echo >>"$dhcpd_conf_file" \ -"host Xen-${vif/./-} { hardware ethernet $mac; fixed-address $vif_ip; option routers $router_ip; }" - - "$dhcpd_init_file" restart +"host $hostname { hardware ethernet $mac; fixed-address $vif_ip; option routers $router_ip; option host-name \"$hostname\"; }" + release_lock "vif-nat-dhcp" + "$dhcpd_init_file" restart || true } dhcp_down() { + claim_lock "vif-nat-dhcp" dhcp_remove_entry + release_lock "vif-nat-dhcp" "$dhcpd_init_file" restart || true # We need to ignore failure because # ISC dhcpd 3 borks if there is nothing # for it to do, which is the case if diff -r 31d86fc0a271 -r 00c349d5b40d tools/ioemu/sdl.c --- a/tools/ioemu/sdl.c Sat Dec 3 19:05:39 2005 +++ b/tools/ioemu/sdl.c Sat Dec 3 19:16:04 2005 @@ -358,14 +358,14 @@ static void sdl_update_caption(void) { char buf[1024]; - strcpy(buf, "VTXen"); + strcpy(buf, domain_name); if (!vm_running) { strcat(buf, " [Stopped]"); } if (gui_grab) { strcat(buf, " - Press Ctrl-Alt to exit grab"); } - SDL_WM_SetCaption(buf, "VTXen"); + SDL_WM_SetCaption(buf, domain_name); } static void sdl_grab_start(void) diff -r 31d86fc0a271 -r 00c349d5b40d tools/ioemu/vl.c --- a/tools/ioemu/vl.c Sat Dec 3 19:05:39 2005 +++ b/tools/ioemu/vl.c Sat Dec 3 19:16:04 2005 @@ -125,6 +125,7 @@ int pit_min_timer_count = 0; int nb_nics; char bridge[16]; +char domain_name[1024] = { 'V', 'T', 'X', 'E', 'N', '-'}; NetDriverState nd_table[MAX_NICS]; QEMUTimer *gui_timer; QEMUTimer *polling_timer; @@ -2238,6 +2239,7 @@ "-s wait gdb connection to port %d\n" "-p port ioreq port for xen\n" "-d domain domain that we're serving\n" + "-domain-namn domain name that we're serving\n" "-hdachs c,h,s force hard disk 0 geometry (usually qemu can guess it)\n" "-L path set the directory for the BIOS and VGA BIOS\n" #ifdef USE_CODE_COPY @@ -2335,6 +2337,7 @@ QEMU_OPTION_g, QEMU_OPTION_std_vga, QEMU_OPTION_monitor, + QEMU_OPTION_domainname, QEMU_OPTION_serial, QEMU_OPTION_loadvm, QEMU_OPTION_full_screen, @@ -2408,6 +2411,7 @@ { "isa", 0, QEMU_OPTION_isa }, { "std-vga", 0, QEMU_OPTION_std_vga }, { "monitor", 1, QEMU_OPTION_monitor }, + { "domain-name", 1, QEMU_OPTION_domainname }, { "serial", 1, QEMU_OPTION_serial }, { "loadvm", HAS_ARG, QEMU_OPTION_loadvm }, { "full-screen", 0, QEMU_OPTION_full_screen }, @@ -3024,6 +3028,10 @@ case QEMU_OPTION_full_screen: full_screen = 1; break; + case QEMU_OPTION_domainname: + strncat(domain_name, optarg, sizeof(domain_name) - 20); + break; + } } } diff -r 31d86fc0a271 -r 00c349d5b40d tools/ioemu/vl.h --- a/tools/ioemu/vl.h Sat Dec 3 19:05:39 2005 +++ b/tools/ioemu/vl.h Sat Dec 3 19:16:04 2005 @@ -796,4 +796,5 @@ void update_select_wakeup_events(void); void tun_receive_handler(); +extern char domain_name[]; #endif /* VL_H */ diff -r 31d86fc0a271 -r 00c349d5b40d tools/ioemu/vnc.c --- a/tools/ioemu/vnc.c Sat Dec 3 19:05:39 2005 +++ b/tools/ioemu/vnc.c Sat Dec 3 19:16:04 2005 @@ -526,7 +526,7 @@ } else screen->frameBuffer = malloc(640*400*2); - screen->desktopName = "QEMU/VNC"; + screen->desktopName = domain_name; screen->cursor = 0; screen->kbdAddEvent = vnc_process_key; screen->ptrAddEvent = vnc_process_mouse; diff -r 31d86fc0a271 -r 00c349d5b40d tools/python/xen/xend/image.py --- a/tools/python/xen/xend/image.py Sat Dec 3 19:05:39 2005 +++ b/tools/python/xen/xend/image.py Sat Dec 3 19:16:04 2005 @@ -238,7 +238,9 @@ # xm config file def parseDeviceModelArgs(self, imageConfig, deviceConfig): dmargs = [ 'cdrom', 'boot', 'fda', 'fdb', 'ne2000', - 'localtime', 'serial', 'stdvga', 'isa', 'vcpus' ] + 'localtime', 'serial', 'stdvga', 'isa', 'vcpus', + 'nics' + ] ret = [] for a in dmargs: v = sxp.child_value(imageConfig, a) @@ -259,6 +261,7 @@ # Handle disk/network related options mac = None + ret.append("-domain-name %s" % self.vm.info['name']) for (name, info) in deviceConfig: if name == 'vbd': uname = sxp.child_value(info, 'uname') diff -r 31d86fc0a271 -r 00c349d5b40d tools/python/xen/xm/create.py --- a/tools/python/xen/xm/create.py Sat Dec 3 19:05:39 2005 +++ b/tools/python/xen/xm/create.py Sat Dec 3 19:16:04 2005 @@ -543,7 +543,8 @@ """ args = [ 'device_model', 'vcpus', 'cdrom', 'boot', 'fda', 'fdb', 'localtime', 'serial', 'stdvga', 'isa', 'nographic', - 'vnc', 'vncviewer', 'sdl', 'display', 'ne2000', 'lapic'] + 'vnc', 'vncviewer', 'sdl', 'display', 'ne2000', 'lapic', + 'nics'] for a in args: if (vals.__dict__[a]): config_image.append([a, vals.__dict__[a]]) diff -r 31d86fc0a271 -r 00c349d5b40d xen/arch/x86/shadow.c --- a/xen/arch/x86/shadow.c Sat Dec 3 19:05:39 2005 +++ b/xen/arch/x86/shadow.c Sat Dec 3 19:16:04 2005 @@ -637,6 +637,11 @@ gpl1e = (guest_l1_pgentry_t *) map_domain_page(tmp_gmfn); /* If the PGT_l1_shadow has two continual pages */ +#if CONFIG_PAGING_LEVELS >=3 + if (d->arch.ops->guest_paging_levels == PAGING_L2) + __shadow_get_l2e(v, va & ~((1<<L2_PAGETABLE_SHIFT_32) - 1), &tmp_sl2e); + else +#endif __shadow_get_l2e(v, va, &tmp_sl2e); spl1e = (l1_pgentry_t *) map_domain_page(l2e_get_pfn(tmp_sl2e)); @@ -1809,9 +1814,12 @@ } #endif - need_flush |= resync_all(d, PGT_l2_shadow); - #if CONFIG_PAGING_LEVELS >= 3 + if (d->arch.ops->guest_paging_levels == PAGING_L2) + need_flush |= resync_all(d, PGT_l4_shadow); + else + need_flush |= resync_all(d, PGT_l2_shadow); + if (d->arch.ops->guest_paging_levels >= PAGING_L3) { need_flush |= resync_all(d, PGT_l3_shadow); @@ -2943,6 +2951,8 @@ sl2_p[sl2_idx + 1] = entry_from_pfn(sl1mfn + 1, entry_get_flags(sl2_p[sl2_idx])); } + else + sl2_p[sl2_idx + 1] = (pgentry_64_t){0}; unmap_domain_page(sl2_p); } @@ -3528,9 +3538,9 @@ __shadow_sync_va(v, va); - if ( __shadow_get_l1e(v, va, &old_sl1e) ) + if ( shadow_mode_external(d) && __shadow_get_l1e(v, va, &old_sl1e) ) if ( l1e_get_flags(old_sl1e) & _PAGE_PRESENT ) - shadow_put_page_from_l1e(old_sl1e, d); + put_page_from_l1e(old_sl1e, d); sl1e = l1e_empty(); __shadow_set_l1e(v, va, &sl1e); _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |