Bug 594031

Summary: zipl handles only 896 characters of kernel parameters in /etc/zipl.conf
Product: Red Hat Enterprise Linux 6 Reporter: Jan Stodola <jstodola>
Component: s390utilsAssignee: Dan Horák <dhorak>
Status: CLOSED CURRENTRELEASE QA Contact: qe-baseos-daemons
Severity: medium Docs Contact:
Priority: medium    
Version: 6.0CC: brueckner, ovasik, rlerch
Target Milestone: rc   
Target Release: ---   
Hardware: s390x   
OS: Linux   
Whiteboard:
Fixed In Version: s390utils-1.8.2-24.el6 Doc Type: Bug Fix
Doc Text:
There is a limitation in the maximum size of arguments passed to the kernel during boot on the s390(x) architecture to 896 bytes/characters. It comes from the design of the bootloader on that platform and as such it can't be changed. Users must be careful when preparing the kernel parameters, because the zipl utility will throw an error when the limit is exceeded.
Story Points: ---
Clone Of: Environment:
Last Closed: 2010-07-02 19:50:18 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 582286    
Attachments:
Description Flags
zipl -V and return value
none
check the lenght of the parameters line none

Description Jan Stodola 2010-05-20 11:50:14 UTC
Created attachment 415393 [details]
zipl -V and return value

Description of problem:
System has a problem to boot if user specify kernel command line longer than 896 characters in /etc/zipl.conf. For example, system with following zipl.conf doesn't boot:

[defaultboot]
default=linux
target=/boot/
[linux]
        image=/boot/vmlinuz-2.6.32-25.el6.s390x
        ramdisk=/boot/initramfs-2.6.32-25.el6.s390x.img
        parameters="root=/dev/mapper/vg_rtt4-lv_root rd_DASD=0.0.3024,use_diag=0,readonly=0,erplog=0,failfast=0 rd_DASD=0.0.3124,use_diag=0,readonly=0,erplog=0,failfast=0 rd_DASD=0.0.3224,use_diag=0,readonly=0,erplog=0,failfast=0 rd_DASD=0.0.3324,use_diag=0,readonly=0,erplog=0,failfast=0 rd_DASD=0.0.3424,use_diag=0,readonly=0,erplog=0,failfast=0 rd_DASD=0.0.3524,use_diag=0,readonly=0,erplog=0,failfast=0 rd_DASD=0.0.3624,use_diag=0,readonly=0,erplog=0,failfast=0 rd_DASD=0.0.3724,use_diag=0,readonly=0,erplog=0,failfast=0 rd_LUKS_UUID=luks-32ba8fea-d163-4a08-a9b4-9316eeaf4c9b rd_LUKS_UUID=luks-33424f70-51fb-47f4-bd29-5506e11a678a rd_LUKS_UUID=luks-38aee7a5-c0c3-400b-b5c6-583c66d33518 rd_LUKS_UUID=luks-5996c36f-7ac7-40a8-bd25-847814052979 rd_LUKS_UUID=luks-a6f89daa-848e-4c74-b041-c48db20817ea rd_LUKS_UUID=luks-a948edf2-f22b-4444-99c4-d7860795d3cf rd_LUKS_UUID=luks-ab8e2298-331d-47e2-a6f1-228eb73e2c18 rd_LUKS_UUID=luks-b13cf47e-5e4d-485b-8834-d2a7a8c9b9d2 rd_LVM_LV=vg_rtt4/lv_root rd_LVM_LV=vg_rtt4/lv_swap rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYTABLE=us cio_ignore=all,!0.0.0009 crashkernel=auto"

boot messages:
...
Kernel command line: root=/dev/mapper/vg_rtt4-lv_root rd_DASD=0.0.3024,use_diag=
0,readonly=0,erplog=0,failfast=0 rd_DASD=0.0.3124,use_diag=0,readonly=0,erplog=0
,failfast=0 rd_DASD=0.0.3224,use_diag=0,readonly=0,erplog=0,failfast=0 rd_DASD=0
.0.3324,use_diag=0,readonly=0,erplog=0,failfast=0 rd_DASD=0.0.3424,use_diag=0,re
adonly=0,erplog=0,failfast=0 rd_DASD=0.0.3524,use_diag=0,readonly=0,erplog=0,fai
lfast=0 rd_DASD=0.0.3624,use_diag=0,readonly=0,erplog=0,failfast=0 rd_DASD=0.0.3
724,use_diag=0,readonly=0,erplog=0,failfast=0 rd_LUKS_UUID=luks-32ba8fea-d163-4a
08-a9b4-9316eeaf4c9b rd_LUKS_UUID=luks-33424f70-51fb-47f4-bd29-5506e11a678a rd_L
UKS_UUID=luks-38aee7a5-c0c3-400b-b5c6-583c66d33518 rd_LUKS_UUID=luks-5996c36f-7a
c7-40a8-bd25-847814052979 rd_LUKS_UUID=luks-a6f89daa-848e-4c74-b041-c48db20817ea
 rd_LUKS_UUID=luks-a948edf2-f22b-4444-99c4-d7860795d3cf rd_LUKS_UUID=luks-ab8e22
98-331d-47e2-a6f1-228eb73e2c18 rd_LU 
...


Version-Release number of selected component (if applicable):
RHEL6.0-20100512.0
s390utils-1.8.2-22.el6

How reproducible:
always

Steps to Reproduce:
1. run graphical installation with 8 (or more) DASD disks, use encryption and use autopartitioning. 
2. reboot when installation is finished
  
Actual results:
* system doesn't boot, kernel command line (/proc/cmdline) is not complete
* when user runs zipl command, return value is 0 even when the kernel command line is longer than zipl kernel command line length limitation.

Expected results:
* zipl can write whole kernel command line specified in /etc/zipl.conf
* if the command line is longer than max limit, zipl has to return with non-zero status

Comment 1 RHEL Program Management 2010-05-20 12:06:39 UTC
This request was evaluated by Red Hat Product Management for inclusion in a Red
Hat Enterprise Linux major release.  Product Management has requested further
review of this request by Red Hat Engineering, for potential inclusion in a Red
Hat Enterprise Linux Major release.  This request is not yet committed for
inclusion.

Comment 2 Dan Horák 2010-05-20 12:57:01 UTC
The core of this issue must be discussed with IBM to clear what are the reasons for the 896B limit.
The RHEL package can implement the size check and return non-zero code if the parameters line is too long.

Comment 3 Dan Horák 2010-05-20 14:44:01 UTC
Created attachment 415439 [details]
check the lenght of the parameters line

Comment 4 Dan Horák 2010-05-20 15:02:00 UTC
patch applied to s390utils-1.8.2-24.el6

Comment 5 Hendrik Brueckner 2010-05-21 07:40:42 UTC
Hi Dan,

(In reply to comment #2)
> The core of this issue must be discussed with IBM to clear what are the reasons
> for the 896B limit.

The limit of 896 bytes is an s390(x) arch specific setting. There a fixed memory address to which the command line must be loaded (0x10480) and it must not exceed the given limit.  In general, the 0x10xxx memory is a also reserved and used by other IPL related information.

Comment 7 Jan Stodola 2010-05-28 07:13:35 UTC
retested with s390utils-1.8.2-24.el6, build RHEL6.0-20100527.2:

# /sbin/zipl 
Using config file '/etc/zipl.conf'
Error: The length of parameters line (1185 bytes) exceeds the allowed maximum (896 bytes)
# echo $?
1

In case of installation, anaconda displays warning message:

There was an error installing the bootloader.
The system may not be bootable.


Moving to VERIFIED and requesting release note to document the 896 bytes limit.

Comment 8 Dan Horák 2010-06-03 08:24:10 UTC
Technical note added. If any revisions are required, please edit the "Technical Notes" field
accordingly. All revisions will be proofread by the Engineering Content Services team.

New Contents:
There is a limitation in the maximum size of arguments passed to the kernel during boot on the s390(x) architecture to 896 bytes/characters. It comes from the design of the bootloader on that platform and as such it can't be changed. Users must be careful when preparing the kernel parameters, because the zipl utility will throw an error when the limit is exceeded.

Comment 12 releng-rhel@redhat.com 2010-07-02 19:50:18 UTC
Red Hat Enterprise Linux Beta 2 is now available and should resolve
the problem described in this bug report. This report is therefore being closed
with a resolution of CURRENTRELEASE. You may reopen this bug report if the
solution does not work for you.