Hi,

Ian Campbell sent this patch, which removes specialcasing for Xen.  Please
can you confirm this fixes your problem?

Thanks

-- 
Robert Millan

<GPLv2> I know my rights; I want my phone call!
<DRM> What good is a phone call… if you are unable to speak?
(as seen on /.)
Index: trunk/debian/update-grub
===================================================================
--- trunk.orig/debian/update-grub	2008-05-05 17:30:19.000000000 +0100
+++ trunk/debian/update-grub	2008-05-05 17:30:28.000000000 +0100
@@ -777,14 +777,17 @@
        echo "none found, skipping ..." >&2
 fi
 
-
-xenKernels=""
-for ver in `grep -l CONFIG_XEN_PRIVILEGED_GUEST=y /boot/config* | sed -e s%/boot/config-%%`; do
+xen0Kernels=""
+# First old style non-CONFIG_PARAVIRT kernels with xen0 support.
+for ver in `grep -l CONFIG_XEN=y /boot/config* | sed -e s%/boot/config-%%`; do
+  if ! grep -q CONFIG_XEN_PRIVILEGED_GUEST=y /boot/config-$ver ; then
+      continue
+  fi
   # ver is a kernel version
   kern="/boot/vmlinuz-$ver"
   if [ -r $kern ] ; then
        newerKernels=""
-       for i in $xenKernels ; do
+       for i in $xen0Kernels ; do
                 res=$(CompareVersions "$kern" "$i")
                 if [ "$kern" != "" ] && [ "$res" -gt 0 ] ; then
                         newerKernels="$newerKernels $kern $i"
@@ -796,30 +799,38 @@
         if [ "$kern" != "" ] ; then
                 newerKernels="$newerKernels $kern"
         fi
-        xenKernels="$newerKernels"
+        xen0Kernels="$newerKernels"
     fi
 done
 
-in_domU=
-if [ -e /proc/xen/capabilities ] && ! grep -q "control_d" /proc/xen/capabilities; then
-	in_domU=1
-fi
+# Second new style CONFIG_PARAVIRT kernels with xen support. There is
+# no distinction between xen0 and xenU in these kernels.
+for ver in `grep -l CONFIG_PARAVIRT=y /boot/config* | sed -e s%/boot/config-%%`; do
+  if ! grep -q CONFIG_XEN=y /boot/config-$ver ; then
+      continue
+  fi
+  # ver is a kernel version
+  kern="/boot/vmlinuz-$ver"
+  if [ -r $kern ] ; then
+       newerKernels=""
+       for i in $xen0Kernels ; do
+                res=$(CompareVersions "$kern" "$i")
+                if [ "$kern" != "" ] && [ "$res" -gt 0 ] ; then
+                        newerKernels="$newerKernels $kern $i"
+                        kern=""
+                else
+                        newerKernels="$newerKernels $i"
+                fi
+        done
+        if [ "$kern" != "" ] ; then
+                newerKernels="$newerKernels $kern"
+        fi
+        xen0Kernels="$newerKernels"
+    fi
+done
 
 sortedKernels=""
 for kern in $(/bin/ls -1vr /boot | grep -v "dpkg-*" | grep "^vmlinuz-") ; do
-	if `echo "$xenKernels" | grep -q "$kern "` || `echo "$kern" | grep -q "xen"`; then
-		is_xen=1
-	else
-		is_xen=
-	fi
-
-	if [ ! "$in_domU" ] && [ "$is_xen" ]; then
-	  # skip xen kernels
-          continue
-        elif [ "$in_domU" ] && ! [ "$is_xen" ]; then
-	  # skip non-xen kernels
-	  continue
-        fi
         kern="/boot/$kern"
 	newerKernels=""
 	for i in $sortedKernels ; do
@@ -912,7 +923,7 @@
     
 
 # Xen entries first.
-for kern in $xenKernels ; do
+for kern in $xen0Kernels ; do
 	if test ! x"$howmany" = x"all" ; then
 		if [ $counter -gt $howmany ] ; then
 			break

Reply via email to