summaryrefslogtreecommitdiffstats
path: root/isys
diff options
context:
space:
mode:
authorjakub <jakub>1999-10-12 13:11:42 +0000
committerjakub <jakub>1999-10-12 13:11:42 +0000
commit2133a9964040934e0aaaaf5b294a8a83e1a5a35d (patch)
tree7267ea1a80032262217195db550a5e2cd103e128 /isys
parent1c5e4865148312383973d61b815eed693a672f2d (diff)
downloadanaconda-2133a9964040934e0aaaaf5b294a8a83e1a5a35d.tar.gz
anaconda-2133a9964040934e0aaaaf5b294a8a83e1a5a35d.tar.xz
anaconda-2133a9964040934e0aaaaf5b294a8a83e1a5a35d.zip
I was told v0 units really go through the sd-targets translation table.
Can anyone test this to make sure? It just means trying to install on old sun4c with v0 PROM to disk with SCSI id 3.
Diffstat (limited to 'isys')
-rw-r--r--isys/silo.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/isys/silo.c b/isys/silo.c
index c6cc99d8e..14d1a8fb3 100644
--- a/isys/silo.c
+++ b/isys/silo.c
@@ -33,6 +33,7 @@
static int hasaliases;
static char *promdev = "/dev/openprom";
static int promfd;
+static char sd_targets[10] = "31204567";
static int p1275 = 0;
static int prom_root_node, prom_current_node;
static int promvers;
@@ -290,8 +291,15 @@ scan_walk_callback(int node) {
if (!prop)
prop = ((struct openpromio *)buf)->oprom_array;
sprintf (prop, "/%s@%x,%x", name, hd[disk].mid, hd[disk].lo);
- } else
- sprintf (prop, "sd(%d,%d,", v0ctrl, hd[disk].mid);
+ } else {
+ int i;
+ for (i = 0; sd_targets[i]; i++)
+ if (sd_targets[i] == '0' + hd[disk].mid)
+ break;
+ if (!sd_targets[i])
+ i = hd[disk].mid;
+ sprintf (prop, "sd(%d,%d,", v0ctrl, i);
+ }
break;
case SDSK_TYPE_PLN:
prop = ((struct openpromio *)buf)->oprom_array;
@@ -552,6 +560,12 @@ static int get_prom_ver(void)
}
fclose(f);
}
+ if (!ver) {
+ int len;
+ p = prom_getopt("sd-targets", &len);
+ if (p && len > 0 && len <= 8)
+ strcpy(sd_targets, p);
+ }
return ver;
}