-----Original Message----- From: Linus Torvalds torvalds@linux-foundation.org Sent: Thursday, March 10, 2022 12:55 AM To: Manish Chopra manishc@marvell.com Cc: Paul Menzel pmenzel@molgen.mpg.de; kuba@kernel.org; netdev@vger.kernel.org; Ariel Elior aelior@marvell.com; Alok Prasad palok@marvell.com; Prabhakar Kushwaha pkushwaha@marvell.com; David S. Miller davem@davemloft.net; Greg KH gregkh@linuxfoundation.org; stable@vger.kernel.org; it+netdev@molgen.mpg.de; regressions@lists.linux.dev Subject: Re: [EXT] Re: [PATCH v2 net-next 1/2] bnx2x: Utilize firmware 7.13.21.0
On Wed, Mar 9, 2022 at 11:22 AM Manish Chopra manishc@marvell.com wrote:
This move was intentional, as follow up driver flow [bnx2x_compare_fw_ver()] needs to know which exact FW version (newer or older fw version which will be decided at run time now) the function is
supposed to be run with in order to compare against already loaded FW on the adapter to decide on function probe/init failure (as opposed to earlier where driver was always stick to the one specific/fixed firmware version). So for that reason I chose the right place to invoke the bnx2x_init_firmware() during the probe early instead of later stage.
.. but since that fundamentally DOES NOT WORK, we'll clearly have to revert that change.
Firmware loading cannot happen early in boot. End of story. You need to delay firmware loading until the device is actually opened.
Linus
Hello Linus,
This has not changed anything functionally from driver/device perspective, FW is still being loaded only when device is opened. bnx2x_init_firmware() [I guess, perhaps the name is misleading] just request_firmware() to prepare the metadata to be used when device will be opened.
Thanks, Manish