aboutsummaryrefslogtreecommitdiff
path: root/src/parisc/parisc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/parisc/parisc.c')
-rw-r--r--src/parisc/parisc.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/parisc/parisc.c b/src/parisc/parisc.c
index fe8ff36..6c8899d 100644
--- a/src/parisc/parisc.c
+++ b/src/parisc/parisc.c
@@ -2942,7 +2942,7 @@ static void find_scsi_pci_card(void)
/* Prepare boot paths in PAGE0 and stable memory */
-static void prepare_boot_path(volatile struct pz_device *dest,
+static int prepare_boot_path(volatile struct pz_device *dest,
const struct pz_device *source,
unsigned int stable_offset)
{
@@ -2952,7 +2952,8 @@ static void prepare_boot_path(volatile struct pz_device *dest,
hpa = source->hpa;
dev = find_hpa_device(hpa);
- BUG_ON(!dev);
+ if (!dev)
+ return 1;
if (0 && DEV_is_storage_device(dev))
mod_path = &mod_path_emulated_drives;
@@ -2971,6 +2972,7 @@ static void prepare_boot_path(volatile struct pz_device *dest,
BUG_ON(sizeof(*mod_path) != 0x20);
BUG_ON(sizeof(struct pdc_module_path) != 0x20);
+ return 0;
}
unsigned long _atoul(char *str)
@@ -3324,7 +3326,8 @@ void __VISIBLE start_parisc_firmware(void)
mod_path_emulated_drives.layers[1] = parisc_boot_harddisc->lun;
}
- prepare_boot_path(&(PAGE0->mem_boot), &mem_boot_boot, 0x0);
+ if (prepare_boot_path(&(PAGE0->mem_boot), &mem_boot_boot, 0x0))
+ printf("Note: No supported SCSI controller or SCSI boot device found.\n");
// copy primary boot path to alt boot path
memcpy(&stable_storage[0x80], &stable_storage[0], 0x20);