]> git.pld-linux.org Git - projects/geninitrd.git/blobdiff - mod-sata.sh
Load configured font and do it early.
[projects/geninitrd.git] / mod-sata.sh
index 61bae5dce197550b64aa386d274e3f6a65092657..cf8af5f4af4fc46f9457b1252bf9c3b9b99fcaf2 100644 (file)
@@ -1,24 +1,29 @@
 #!/bin/sh
-#
 # geninitrd mod: sata
 
-find_modules_sata()
-{
-       debug "Finding SATA modules"
-
-       if [ ! -x /sbin/lspci ]; then
-                warn "Failed to execute /sbin/lspci. Is pciutils package installed?"
-                return
-        fi
+find_modules_sata() {
+       verbose "Finding SATA modules (class=0x0106)"
 
        # Classes (we want only 0106)
+       # http://pci-ids.ucw.cz/read/PD/01
+       # 0100 - SCSI
        # 0101 - IDE/PATA
        # 0106 - SATA/AHCI
        # 0107 - SAS
-       # 0100 - SCSI
-       local module
-       local vendordev
-       vendordev=$(lspci -n |awk '/0106/{ gsub(/:/," "); print "0x0000"$4 " " "0x0000"$5}')
-       module=$(grep "$vendordev" /lib/modules/$kernel/modules.pcimap |awk '{print $1}')
-       find_module "$module"
+       local m modules=$(find_modules_by_class 0106)
+
+       # sort modules that ones who depend on libata are first
+       # this is best we could think of now :)
+       local left right
+       for m in $modules; do
+               if NEW_MODINFO=1 modinfo -k $kernel -F depends $m | grep -q libata; then
+                       left="$left $m"
+               else
+                       right="$right $m"
+               fi
+       done
+
+       for m in $left $right; do
+               find_module $m
+       done
 }
This page took 0.113368 seconds and 4 git commands to generate.