]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
templates: Add support for pci-arbiter and rumpdisk on Hurd
authorSamuel Thibault <samuel.thibault@ens-lyon.org>
Sun, 20 Feb 2022 19:23:03 +0000 (20:23 +0100)
committerDaniel Kiper <daniel.kiper@oracle.com>
Mon, 7 Mar 2022 14:32:18 +0000 (15:32 +0100)
This adds pci-arbiter and rumpdisk as bootstrap modules whenever they are
available. This opens the path for fully-userland disk support.

Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
util/grub.d/10_hurd.in

index 3663d360eb10c095b4c5fec55d1c0371b6d7db40..2ab3a97e63d400bc0a23623951bc4b1477231e18 100644 (file)
@@ -68,6 +68,18 @@ for i in /hurd/${hurd_fs}.static /hurd/exec ; do
   fi
 done
 
+if test -e '/hurd/pci-arbiter.static' ; then
+  pci_arbiter=true
+else
+  pci_arbiter=false
+fi
+
+if test -e '/hurd/rumpdisk.static' ; then
+  rumpdisk=true
+else
+  rumpdisk=false
+fi
+
 if ${at_least_one} ; then : ; else
   # no hurd here, aborting silently
   exit 0
@@ -132,14 +144,46 @@ EOF
       opts="--readonly"
   fi
 
+  host_ports="--host-priv-port='\${host-port}' --device-master-port='\${device-port}'"
+  resume_task="'\$(task-resume)'"
+
   sed "s/^/$submenu_indentation/" << EOF
        echo            '$(echo "$message" | grub_quote)'
+EOF
+
+  if [ "$pci_arbiter" = true ] ; then
+    if [ "$rumpdisk" = true ] ; then
+      next_task='${disk-task}'
+    else
+      next_task='${fs-task}'
+    fi
+    sed "s/^/$submenu_indentation/" << EOF
+       module          /hurd/pci-arbiter.static pci-arbiter \\
+                       $host_ports \\
+                       --next-task='$next_task' \\
+                       '\$(pci-task=task-create)' $resume_task
+EOF
+    host_ports=""
+    resume_task=""
+  fi
+
+  if [ "$rumpdisk" = true ] ; then
+    sed "s/^/$submenu_indentation/" << EOF
+       module          /hurd/rumpdisk.static rumpdisk \\
+                       $host_ports \\
+                       --next-task='\${fs-task}' \\
+                       '\$(disk-task=task-create)' $resume_task
+EOF
+    host_ports=""
+    resume_task=""
+  fi
+
+  sed "s/^/$submenu_indentation/" << EOF
        module          /hurd/${hurd_fs}.static ${hurd_fs} $opts \\
                        --multiboot-command-line='\${kernel-command-line}' \\
-                       --host-priv-port='\${host-port}' \\
-                       --device-master-port='\${device-port}' \\
+                       $host_ports \\
                        --exec-server-task='\${exec-task}' -T typed '\${root}' \\
-                       '\$(task-create)' '\$(task-resume)'
+                       '\$(fs-task=task-create)' $resume_task
        module          /lib/ld.so.1 exec /hurd/exec '\$(exec-task=task-create)'
 }
 EOF