Add support for List-Directed IPL (LD-IPL) type pointers.
We check for a boot record indicating LD-IPL and use it if it is valid,
otherwise we use the CCW CDL or LDL format as usual. When a block is accessed
during IPL the block number is first calculated based on the cylinder, head,
and record numbers included in the block pointer; if LD-IPL has been initiated
then each pointer will be interpreted using the new format.
For simplicity, there is no choice presented to forcibly use CCW-IPL if LD-IPL
is available. Because both sets of pointers ultimately go to the same
kernel/initrd, using CCW- or LD-IPL is transparent to the user.
One aspect of the user experience that does change is the availability of the
interactive boot menu when a loadparm is not specified. For the existing
CCW-IPL, when the user does not specify a loadparm they are presented with a
list of boot options; however, this list is only written in the old style
pointers. Therefore, if no loadparm is specified, and LD-IPL is supported, the
default boot option will be used automatically.
Jared Rossi (1):
pc-bios: Add support for List-Directed IPL from ECKD DASD
pc-bios/s390-ccw/bootmap.c | 157 ++++++++++++++++++++++++++++---------
pc-bios/s390-ccw/bootmap.h | 30 ++++++-
2 files changed, 148 insertions(+), 39 deletions(-)