Problem with bnx2 module

Started by mchiavac, October 15, 2009, 10:02:36 AM

Previous topic - Next topic

mchiavac

Hello,
i start using plop from 4.0 but with all of my servers with bnx2 module, it goes in kernel panic (dell 1950, dell 2950, dell r610, ibm x3550, ibm x3650).
With all other machine with other network cards there seems no problems (tg3 or e1000 module).
It's possibile to update bnx2 module or give me some hints to integrate it in initrd?
From broadcom site the latest drivers are version 1.9.20b_1.50.13  that works great in production with centos 5.3.
Thank you.

P.S. there some way to have plop source to manipulate and recreate customized squashfs file?

Elmar

hi,

Quote from: mchiavac on October 15, 2009, 10:02:36 AM
It's possibile to update bnx2 module or give me some hints to integrate it in initrd?
P.S. there some way to have plop source to manipulate and recreate customized squashfs file?

yes its possible to update. the bnx2 is compiled into the kernel. you can get the kernel config from /proc/config.gz and create a new kernel.
to add the module, you dont have to edit initrd. you have to unsquashfs lib.sqfs, add it there and then create a new lib.sqfs with mksquashfs.

do you need any help, or should i create a test version with the rc of the kernel 2.26.32?

regards
elmar

lvitya

Hi,

I try to boot my server with Plop Linux 4.2.2, but network doesn't work and server prints out error messages:
bnx2: Can't load firmware file "bnx2/bnx2-mips-06-6.2.3.fw

Please, help me. How can I fix this problem? I'm a linux rookie.

Thanks,
Viktor

Elmar

hello,

either you create a new lib.sqfs with bnx2/bnx2-mips-06-6.2.3.fw

or you wait. i spend this month for a new plop linux version build from scratch with the latest version of the programs.

regards
elmar

lvitya

i successfully built a whole new lib.sqfs with bnx2 module, but the result is same.
where is the destination directory in lib.sqfs? I tried /firmware/bnx2 or /bnx2, but doesn't work.

Elmar

i forgot to say that you also have to recompile the kernel that the driver is a module.

The_Raven

I "hijack" this thread because i have a similar problem.
Loading of bnx2 is not possible because the firmware is missing. I think this is a bug of Plop 4.3.4.
Firmware is located in:
/lib/firmware/bnx2/bnx2/
But should be in:
/lib/firmware/bnx2/
After fixing this in lib.sqfs it works!

But my problem is more complex:
I boot from PXE. And then it is not possible to fetch lib.sqfs because the LAN-Card is not coming up.
So 2 things:
1. Maybe you like to fix this bnx2 bug (so all plop-users have the fix)
2. How can i (or we) fix pxe booting?

Elmar

Thanks for the report. It will be fixed in the next Plop Linux release.


PXE:

You have to create a custom initramfs.gz with the firmware in /lib.

Replace your new one with the "syslinux/kernel/initramfs.gz" file.

You can create the initramfs.gz with the files/scripts of the "release tools" of Plop Linux. Tell me if you need help.

Best regards
Elmar

The_Raven

Thx for fast response!

This was the first thing i tested, but it has NOT worked.
I think the problem is that in kernel config the bnx2 is loaded as module and not direct in the kernel (bnx2=m but should be bnx2=y).
Can this be?
BTW: During PXE-Boot i don't see a message telling me that firmware is missing.

Elmar

You are right, bnx2 has to be compiled into the kernel which is not done at the moment. Noted, for the next release.

Summarize requirements:
bnx2 builtin the kernel
firmware in initramfs.gz

Do you need a prepared kernel/initramfs.gz?


Best regards
Elmar

The_Raven

If it's possible, then yes please a kernel and initramfs. :)
Then i can test it.

Elmar


The_Raven

Tested an it works! 8)
Thank you very much for the helping hand.
When do you plan to release the new plop version?

Elmar

Great :)

Release will be in the next days.

But you will still need a custom initramfs.gz, because the firmware folder is not in this file of the official release.

The_Raven


Elmar

I want to keep the initramfs.gz as small as possible.

The_Raven

Tested 4.3.5 and it works (with my spezial lib.sqfs including the firmware).
Thank you for the great support!  8)

Elmar

Quote from: The_Raven on June 04, 2018, 10:19:53 AM
Tested 4.3.5 and it works (with my spezial lib.sqfs including the firmware).

You mean special initramfs.gz, or? The lib.sqfs should work out of the box.

The_Raven

Palmface...
Yes of course, special initramfs.gz, not lib.sqfs.
I need also a special usr.sqfs because of missing language, this confused me  ::)

The_Raven

I tried to add firmware to plop 19.4 (initramfs.gz).
But after boot i have no folder /lib/firmware and firmware loading fails.
Has something changed in plop 19.4?

Elmar

Now, you have to use lib.sqfs for firmware updates.

The_Raven

Thx for fast response!
But does this work with PXE booting?
Correct me if i am wrong, but first it loads kernel and initramfs. Then it connects the network and load the other files (usr.sqfs, lib.sqfs etc.).
But if the firmware is not present, it can't load the other files. ;)

Elmar

When your network card needs a firmware file, then you can still add that file to initramfs.gz. You have to create the firmware directory. If not, then you are using the wrong initramfs tree. Are you creating initramfs.gz with the files from ploplinux-release-19.4.tar.gz?

The_Raven

I took the file (initramfs.gz) from plop 19.4, extract it, add /lib/firmware and repack it. After that, my "self made" initramfs.gz has about 23MB.
When i boot with this file, the folder /lib/firmware/ is not there. I think the folder /lib is overwritten by lib.sqfs.
Are i am wrong?

Edit: I have done this with older plop versions and it has worked.

Elmar

Correct, the /lib/firmware is not available after lib.sqfs has been mounted. /lib/firmware is then the firmware directory from lib.sqfs. When there is no /lib/firmware directory, then you are using the wrong lib.sqfs.

The_Raven

Then i have to add the firmware in initramfs.gz and lib.sqfs?
This way it can boot from PXE and has network access when the server is running, right?

Elmar

When your network card does not work without the firmware file, then you have to add it to initramfs.gz when you boot from PXE. Adding to lib.sqfs is not needed, because the firmware file has been already loaded when lib.sqfs became available.

The_Raven

Ok, if i boot from PXE i have to add it to initramfs.gz otherwise (boot from USB) i have to add it in lib.sqfs?
Because it seems not to work in initramfs.gz if i boot from USB.
I add it to lib.sqfs and test it.

Elmar

When it does not work when you boot from USB, then it boots faster from USB than PXE. In this case, put the firmware into initramfs.gz and lib.sqfs.

The_Raven

#29
Ok, i think i found the problem...

Edit: Have to test it more. I tell you when i have tested it. Many thanks for your support!

The_Raven

ATM i am short in time, but i think it's this way:
For USB: Add the firmware files to lib.sqfs
For PXE: Add the firmware files to initramfs.gz

Elmar