Bug 723466 - Unable to install driver rpms from driver update disk iso at boot time
Summary: Unable to install driver rpms from driver update disk iso at boot time
Keywords:
Status: CLOSED NOTABUG
Alias: None
Product: Red Hat Enterprise Linux 5
Classification: Red Hat
Component: Driver Update Disk
Version: 5.6
Hardware: All
OS: Linux
unspecified
high
Target Milestone: rc
: ---
Assignee: Jiri Benc
QA Contact: Cui Chun
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2011-07-20 09:55 UTC by Dave Wagner
Modified: 2012-10-22 13:55 UTC (History)
6 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2012-10-22 13:55:54 UTC
Target Upstream Version:


Attachments (Terms of Use)
qla2xxx spec file used to generate dd.iso (2.68 KB, application/octet-stream)
2011-07-20 09:55 UTC, Dave Wagner
no flags Details
Driver update disk iso for RHEL5.6 kernel version 2.6.18-238.el5 (5.19 MB, application/x-cd-image)
2011-07-21 13:04 UTC, Dave Wagner
no flags Details
New qla2xxx driver update iso (16.47 MB, application/x-bzip2)
2011-11-11 12:51 UTC, Dave Wagner
no flags Details
DDiskit build package (1.47 MB, application/octet-stream)
2012-06-19 11:44 UTC, Dave Wagner
no flags Details
qla2xxx dd.iso (4.35 MB, application/gzip)
2012-10-15 12:32 UTC, Nilesh Javali
no flags Details
anaconda log file (38.60 KB, text/plain)
2012-10-15 12:35 UTC, Nilesh Javali
no flags Details
Patch for testing (1.90 KB, patch)
2012-10-15 18:06 UTC, Jiri Benc
no flags Details | Diff

Description Dave Wagner 2011-07-20 09:55:05 UTC
Created attachment 513962 [details]
qla2xxx spec file used to generate dd.iso

Description of problem:
I'm using ddiskit-1.0.tar.gz package to prepare dd.iso for qla2xxx module for
RHEL5.6 (2.6.18-238.el5) on a 32-bit system.

While using the dd.iso it is seen that the qla2xxx.ko is loaded from modules.cgz
and the driver rpms are copied to some /tmp location. These driver rpms are never seen installed by the Redhat installer.
The driver rpms should be installed from the dd.iso during OS
installation/boot time.


Version-Release number of selected component (if applicable):
DDiskit v1.0 (ddiskit-1.0.tar.gz)


How reproducible:


Steps to Reproduce:
1. Prepare dd.iso with help of ddiskit-1.0.tar.gz for qla2xxx driver v8.03.03.15.05.06-k 
2. The driver source can be obtained from QLogic website at,
http://driverdownloads.qlogic.com/QLogicDriverDownloads_UI/SearchByProduct.aspx?ProductCategory=322&Product=1157&Os=65
3. The qla2xxx spec file to be used is attached with this Bug report
  
Actual results:
While using the dd.iso it is seen that the qla2xxx.ko is loaded from modules.cgz
and the driver rpms are copied to some /tmp location

Expected results:
The qla2xxx driver rpms from dd.iso should be installed during OS installation/boot time.

Additional info:

Comment 1 Qian Cai 2011-07-21 01:35:20 UTC
What kernel version do you build the ISO against? Do you have a pointer for dd.iso and rpms that we can have a try?

Comment 2 Dave Wagner 2011-07-21 13:04:13 UTC
Created attachment 514198 [details]
Driver update disk iso for RHEL5.6 kernel version 2.6.18-238.el5

Comment 3 Jiri Olsa 2011-07-25 15:32:13 UTC
it's good to try to install the rpm manually to see if it goes through:

[root@deb mnt]# rpm -ivh ./rpms/2.6.18-238.el5/x86_64/kmod-qla2xxx-8.03.03.15.05.06-1.1.x86_64.rpm
error: Failed dependencies:
        ksym(kobject_uevent_env) = 7199b58c is needed by kmod-qla2xxx-8.03.03.15.05.06-1.1.x86_64
        ksym(pci_get_domain_bus_and_slot) = 8459944e is needed by kmod-qla2xxx-8.03.03.15.05.06-1.1.x86_64


You need to use the greylist feature of the ddiskit to omit those
2 symbols to become rpm dependency.

Basically the issue happens when the module needs a symbol,
which is not white listed:

- when making the rpm for the driver, each extern symbol, that the
  driver uses is put to the "Requires" section
- later, when you install the rpm, the requires section is run against
  the white list to check all the extern symbols match what the kernel
  provides
- so if the needed extern symbol is not in white list, the installation
  fails on the above check


We bypass this during the rpm assembly time by filtering out unwanted
symbols -> symbols that should have been in white list, but are not
-> grey symbols ;)

As for ddiskit implementation, it's enough to provide file called
symbols.greylist, that have one grey symbol per line.

jirka

Comment 4 Jiri Olsa 2011-11-01 08:53:47 UTC
please let me know if you need more info, I'll close this within a week
if I dont hear from you

Comment 5 Lalit Chandivade 2011-11-09 16:30:38 UTC
Jiri,

I will update by 11/11 if the symbols.greylist would work for us or not.

Thanks,
Lalit.

Comment 6 Dave Wagner 2011-11-11 11:55:33 UTC
Jiri,

I built the driver update iso on a fresh installed RHEL5.6 system.
Then installed the rpm from the iso manually to check if goes through as mentioned in #comment3. It installed fine without any kernel symbol dependency failure. Hence I proceeded further to use the iso during BFS installation and see the original issue reported i.e the qla2xxx.ko is installed from modules.cgz in the iso vs the rpm installation. I am expecting the kmod-qla2xxx rpm from the iso to get installed after using the driver update iso. Let me know if this is correct.

Thanks,
Nilesh

Comment 7 Dave Wagner 2011-11-11 12:51:37 UTC
Created attachment 533053 [details]
New qla2xxx driver update iso

Attaching the driver update iso with which the kmod-qla2xxx rpm is installed manually without any ksym dependency failure.

Comment 8 Jiri Olsa 2012-04-16 14:34:02 UTC
(In reply to comment #6)
> Jiri,
> 
> I built the driver update iso on a fresh installed RHEL5.6 system.
> Then installed the rpm from the iso manually to check if goes through as
> mentioned in #comment3. It installed fine without any kernel symbol dependency
> failure. Hence I proceeded further to use the iso during BFS installation and
> see the original issue reported i.e the qla2xxx.ko is installed from
> modules.cgz in the iso vs the rpm installation. I am expecting the kmod-qla2xxx
> rpm from the iso to get installed after using the driver update iso. Let me
> know if this is correct.

oops, missed t his comment.. but it looks like it works for you
the rpm from the ISO should be installed after you used the ISO

I'll close this as NOTABUG if  I dont hear from you,
please put NEEDINFO state if you make a comment,
so there's better chance I dont miss it next time ;)

thanks

Comment 9 Dave Wagner 2012-05-04 07:47:37 UTC
(In reply to comment #8)
> (In reply to comment #6)
> > Jiri,
> > 
> > I built the driver update iso on a fresh installed RHEL5.6 system.
> > Then installed the rpm from the iso manually to check if goes through as
> > mentioned in #comment3. It installed fine without any kernel symbol dependency
> > failure. Hence I proceeded further to use the iso during BFS installation and
> > see the original issue reported i.e the qla2xxx.ko is installed from
> > modules.cgz in the iso vs the rpm installation. I am expecting the kmod-qla2xxx
> > rpm from the iso to get installed after using the driver update iso. Let me
> > know if this is correct.
> 
> oops, missed t his comment.. but it looks like it works for you
> the rpm from the ISO should be installed after you used the ISO

That's what is not working. The rpm from the ISO does not install.

Comment 10 Jiri Olsa 2012-05-04 11:12:17 UTC
> That's what is not working. The rpm from the ISO does not install.

Your rpms do not contain dud-qla2xxx... provides, which makes anaconda
fail to find the rpm.

The reason is probably that your ddiskit qla2xxx directory does not contain
updated kmotool from tmpl/new/rpm/SOURCES/kmodtool, could you please check?

If thats not the case, please attach your whole ddiskit tarball you use, thanks

Comment 11 Jiri Olsa 2012-06-18 16:35:24 UTC
closing as NOTABUG for no feedback, please reopen with data requested
if needed

Comment 12 Dave Wagner 2012-06-19 11:41:00 UTC
(In reply to comment #11)
> closing as NOTABUG for no feedback, please reopen with data requested
> if needed
Jiri,

Sorry for the delayed response. I tried using the correct Provides field within the kmodtool and still see the issue. Please suggest how to re-open the bug so that I can attach the complete package that is being used to build the iso.

Thanks,
Nilesh

Comment 13 Dave Wagner 2012-06-19 11:44:30 UTC
Created attachment 592919 [details]
DDiskit build package

Comment 14 Dave Wagner 2012-06-19 11:52:08 UTC
The attached DDiskit package is used to build the iso on RHEL5.8 i686 system.
And it contains qla2xxx.spec which uses kmodtool_qla2xxx and qla2xxx-8.03.07.14.5.6.tar.bz2 sources. The kmodtool_qla2xxx uses the Provides field to include dud-${kmod_name}. I verified this using the rpm --provides command on the generated rpm. Let me know if this is the field that you are expecting to have in the built rpm. The qla2xxx module still gets loaded from modules.cgz instead of the rpm.

Thanks,
Nilesh

Comment 15 Jiri Benc 2012-06-27 14:51:36 UTC
I've just tried to build ISO image from the ddiskit sources from comment 13 (with added -V OEMDRV parameter to mkisofs as the only change) and the result works perfectly for me.

What do you mean by "[t]he qla2xxx module still gets loaded from modules.cgz instead of the rpm"? Do you mean "from modules.cgz from the installation media instead of modules.cgz from the driver disk"? If so, could you please attach the built ISO image and anaconda.log? (Accessible as /tmp/anaconda.log during the installation; you don't have to perform the whole installation, grabbing the file after you specified the driver disk etc. is enough.)

Comment 16 Jiri Benc 2012-09-27 11:44:17 UTC
Is this still an issue? If so, could you please provide the data according to comment 15? Thanks!

Comment 17 Dave Wagner 2012-10-01 10:52:51 UTC
Can you please specify where to use -V OEMDRV parameter to mkisofs.

I checked adding the parameter in Build.rules as below,

123 diskiso: disk images cleandiskiso
124         @echo -e "\nBuilding ISO image..."
125         @mkisofs -R -o -V OEMDRV images/dd.iso disk >/dev/null 2>&1

Are you suggesting the same change.
If yes, then this gives iso build errors,

Building ISO image...
make: *** [diskiso] Error 2

Let me know if I'm missing anything.

Thanks,
Nilesh

Comment 18 Jiri Benc 2012-10-01 17:53:48 UTC
(In reply to comment #17)
> 125         @mkisofs -R -o -V OEMDRV images/dd.iso disk >/dev/null 2>&1

Please do not put the parameter in the middle of "-o images/dd.iso". The correct command line is:
	@mkisofs -R -V OEMDRV -o images/dd.iso disk >/dev/null 2>&1

In any case, this is just for convenience (see RHEL 5 Installation Guide, section 7.3.1), it is not needed and probably won't solve the problem.

Please explain what you mean by "[t]he qla2xxx module still gets loaded from modules.cgz instead of the rpm". Do you mean "from modules.cgz from the installation media instead of modules.cgz from the driver disk"? If so, could you please attach the built ISO image and anaconda.log? (Accessible as /tmp/anaconda.log during the installation; you don't have to perform the whole installation, grabbing the file after you specified the driver disk etc. is enough.)

Comment 19 Nilesh Javali 2012-10-03 12:31:25 UTC
The discussion here is in context of driver disk and not installation media.

Here is the snapshot of driver disk after it is mounted in /mnt,
[root@Accord-RHEL5-x86 mnt]# ls -R -1
.:
modinfo
modules.alias
modules.cgz   <=== qla2xxx module gets loaded from here
modules.dep
pcitable
rhdd
rpms

./rpms:
2.6.18-308.el5
repodata

./rpms/2.6.18-308.el5:
i686

./rpms/2.6.18-308.el5/i686: 
kmod-qla2xxx-8.03.07.14.5.6-1.1.i686.rpm  <== This rpm is not seen installed after  installation of OS.
kmod-qla2xxx-xen-8.03.07.14.5.6-1.1.i686.rpm

./rpms/repodata:
filelists.xml.gz
other.xml.gz
primary.xml.gz
repomd.xml


The expected behavior is that the rpms should get installed and the qla2xxx module should get loaded from rpm.

Comment 20 Jiri Benc 2012-10-04 06:58:47 UTC
Thank you for explaining where you see the problem, this was not clear. However, I also need the second part of my questions answered to be able to help you. Please attach the anaconda.log and the built ISO image.

Comment 21 Nilesh Javali 2012-10-15 12:32:24 UTC
Created attachment 627393 [details]
qla2xxx dd.iso

Please find attached the qla2xxx dd.iso and anaconda.log.

Thanks,
Nilesh

Comment 22 Nilesh Javali 2012-10-15 12:35:12 UTC
Created attachment 627405 [details]
anaconda log file

Anaconda log file

Comment 23 Jiri Benc 2012-10-15 18:06:38 UTC
Created attachment 627605 [details]
Patch for testing

Thanks. I think I found the problem. You're using two symbols that are not on kABI whitelist: pci_get_domain_bus_and_slot and kobject_uevent_env.

I'm attaching a patch to ddiskit to verify this. You'll need to run "make distclean" before you build an image with this patch, or the patch will not have the intended effect.

Please test whether the image built with this patch applied works for you. Please note the patch is for testing purposes only, it circumvents part of kABI checks and as such it could cause problems with kernel security updates and/or with RHEL upgrading, and images built by ddiskit with this patch applied are not intended to be shipped.

Comment 24 Nilesh Javali 2012-10-22 13:42:01 UTC
The attached patch in comment 23 installed the qla2xxx driver rpm on OS installation.

Comment 25 Jiri Benc 2012-10-22 13:55:54 UTC
Please get the two symbols submitted for inclusion on the kABI whitelist. RHEL5 driver updates do not support non-whitelisted symbols.


Note You need to log in before you can comment on or make changes to this bug.