| \ ***************************************************************************** |
| \ * 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 |
| ; |
| |