summaryrefslogtreecommitdiffstats
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
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.
-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;
}