grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] hurd: Add support for pci-arbiter and rumpdisk


From: Samuel Thibault
Subject: [PATCH] hurd: Add support for pci-arbiter and rumpdisk
Date: Sun, 20 Feb 2022 20:23:03 +0100
User-agent: NeoMutt/20170609 (1.8.3)

This adds pci-arbiter and rumpdisk as bootstrap modules whenever they are
available.  This opens the path for fully-userland disk support.

diff --git a/util/grub.d/10_hurd.in b/util/grub.d/10_hurd.in
index 3663d360e..2ab3a97e6 100644
--- a/util/grub.d/10_hurd.in
+++ b/util/grub.d/10_hurd.in
@@ -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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]