135 lines
3.9 KiB
Forth
135 lines
3.9 KiB
Forth
\ *****************************************************************************
|
|
\ * Copyright (c) 2004, 2008 IBM Corporation
|
|
\ * All rights reserved.
|
|
\ * This program and the accompanying materials
|
|
\ * are made available under the terms of the BSD License
|
|
\ * which accompanies this distribution, and is available at
|
|
\ * http://www.opensource.org/licenses/bsd-license.php
|
|
\ *
|
|
\ * Contributors:
|
|
\ * IBM Corporation - initial implementation
|
|
\ ****************************************************************************/
|
|
|
|
4 CONSTANT vpd-bootlist-size
|
|
|
|
\ Bootable devices
|
|
00 CONSTANT FLOPPY
|
|
01 CONSTANT USB
|
|
02 CONSTANT SAS
|
|
03 CONSTANT SATA
|
|
04 CONSTANT ISCSI
|
|
05 CONSTANT ISCSICRITICAL
|
|
06 CONSTANT NET
|
|
07 CONSTANT NOTSPECIFIED
|
|
08 CONSTANT HDD0
|
|
09 CONSTANT HDD1
|
|
0a CONSTANT HDD2
|
|
0b CONSTANT HDD3
|
|
0c CONSTANT CDROM
|
|
0e CONSTANT HDD4
|
|
10 CONSTANT SCSI
|
|
|
|
: check-bootlist ( -- true | false )
|
|
vpd-bootlist l@
|
|
dup 0= IF
|
|
( bootlist == 0 means that probably nothing from vpd has been received )
|
|
s" Boot list could not be read from VPD" log-string cr
|
|
s" Boot watchdog has been rearmed" log-string cr
|
|
2 set-watchdog
|
|
EXIT
|
|
THEN
|
|
|
|
FFFFFFFF = IF
|
|
( bootlist all FFs means that the vpd has no useful information )
|
|
.banner
|
|
-6b boot-exception-handler
|
|
\ The next message is duplicate, but sent w. log-string
|
|
s" Boot list successfully read from VPD but no useful information received" log-string cr
|
|
s" Please specify the boot device in the management module" log-string cr
|
|
s" Specified Boot Sequence not valid" mm-log-warning
|
|
false
|
|
EXIT
|
|
THEN
|
|
|
|
true
|
|
;
|
|
|
|
\ the following words are necessary for vpd-boot-import
|
|
defer set-boot-device
|
|
defer add-boot-device
|
|
|
|
\ select-install? is a flag which is used in the SMS panel #20
|
|
\ "Select/Install Boot Devices".
|
|
\ This panel can be used to temporarily override the boot device.
|
|
false VALUE select-install?
|
|
|
|
\ select/install-path stores string address and string length of the
|
|
\ device node chosen in the SMS panel #20 "Select/Install Boot Devices"
|
|
\ This device node is prepended to the boot path if select-install? is
|
|
\ true.
|
|
CREATE select/install-path 2 cells allot
|
|
|
|
\ Import boot device list from VPD
|
|
\ If none, keep the existing list in NVRAM
|
|
\ This word can be used to overwrite read-bootlist if wanted
|
|
|
|
: vpd-boot-import ( -- )
|
|
0 0 set-boot-device
|
|
|
|
select-install? IF
|
|
select/install-path 2@ add-boot-device
|
|
THEN
|
|
|
|
vpd-read-bootlist
|
|
check-bootlist IF
|
|
4 0 DO vpd-bootlist i + c@
|
|
CASE
|
|
6 OF \ cr s" 2B Booting from Network" log-string cr
|
|
furnish-boot-file strdup add-boot-device
|
|
ENDOF
|
|
|
|
HDD0 OF \ cr s" 2B Booting from hdd0" log-string cr
|
|
s" disk hdd0" add-boot-device ENDOF
|
|
|
|
HDD1 OF \ cr s" 2B Booting from hdd1" log-string cr
|
|
s" hdd1" add-boot-device ENDOF
|
|
|
|
HDD2 OF \ cr s" 2B Booting from hdd2" log-string cr
|
|
s" hdd2" add-boot-device ENDOF
|
|
|
|
HDD3 OF \ cr s" 2B Booting from hdd3" log-string cr
|
|
s" hdd3" add-boot-device ENDOF
|
|
|
|
CDROM OF \ cr s" 2B Booting from CDROM" log-string cr
|
|
s" cdrom" add-boot-device ENDOF
|
|
|
|
HDD4 OF \ cr s" 2B Booting from hdd4" log-string cr
|
|
s" hdd4" add-boot-device ENDOF
|
|
|
|
F OF \ cr s" 2B Booting from SAS - w. Timeout" log-string cr
|
|
s" sas" add-boot-device ENDOF
|
|
|
|
SCSI OF \ cr s" 2B Booting from SAS - Continuous Retry" log-string cr
|
|
s" sas" add-boot-device ENDOF
|
|
|
|
ENDCASE
|
|
LOOP
|
|
bootdevice 2@ nip
|
|
IF 0
|
|
ELSE
|
|
\ Check for all no device -> use boot-device
|
|
vpd-bootlist l@ 07070707 = IF 0 ELSE -6b THEN
|
|
THEN
|
|
ELSE -6a THEN
|
|
boot-exception-handler
|
|
;
|
|
|
|
: vpd-bootlist-restore-default ( -- )
|
|
NOTSPECIFIED vpd-bootlist 0 + c!
|
|
NOTSPECIFIED vpd-bootlist 1 + c!
|
|
NOTSPECIFIED vpd-bootlist 2 + c!
|
|
HDD0 vpd-bootlist 3 + c!
|
|
vpd-write-bootlist
|
|
;
|
|
|