[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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.