Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.
RHEL Engineering is moving the tracking of its product development work on RHEL 6 through RHEL 9 to Red Hat Jira (issues.redhat.com). If you're a Red Hat customer, please continue to file support cases via the Red Hat customer portal. If you're not, please head to the "RHEL project" in Red Hat Jira and file new tickets here. Individual Bugzilla bugs in the statuses "NEW", "ASSIGNED", and "POST" are being migrated throughout September 2023. Bugs of Red Hat partners with an assigned Engineering Partner Manager (EPM) are migrated in late September as per pre-agreed dates. Bugs against components "kernel", "kernel-rt", and "kpatch" are only migrated if still in "NEW" or "ASSIGNED". If you cannot log in to RH Jira, please consult article #7032570. That failing, please send an e-mail to the RH Jira admins at rh-issues@redhat.com to troubleshoot your issue as a user management inquiry. The email creates a ServiceNow ticket with Red Hat. Individual Bugzilla bugs that are migrated will be moved to status "CLOSED", resolution "MIGRATED", and set with "MigratedToJIRA" in "Keywords". The link to the successor Jira issue will be found under "Links", have a little "two-footprint" icon next to it, and direct you to the "RHEL project" in Red Hat Jira (issue links are of type "https://issues.redhat.com/browse/RHEL-XXXX", where "X" is a digit). This same link will be available in a blue banner at the top of the page informing you that that bug has been migrated.

Bug 1740827

Summary: Regression from commit 6324227dcaa8: IPXE no longer works for HPE 557SFP+ Network adapter
Product: Red Hat Enterprise Linux 8 Reporter: Elf Lewis <elewis>
Component: ipxeAssignee: Jarod Wilson <jarod>
ipxe sub component: ipxe-bootimgs QA Contact: Erico Nunes <ernunes>
Status: CLOSED ERRATA Docs Contact:
Severity: high    
Priority: medium CC: aavraham, areis, bhu, cswanson, ddepaula, ernunes, fdelorey, jarod, jen, kmehta, knoel, kthakre, ktordeur, linville, mrezanin, nchandek, rvr, virt-maint, vkoul
Version: 8.2Keywords: Regression, Reopened, Triaged, ZStream
Target Milestone: rcFlags: pm-rhel: mirror+
Target Release: 8.3   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: No Doc Update
Doc Text:
Story Points: ---
Clone Of:
: 1907969 (view as bug list) Environment:
Last Closed: 2020-11-04 04:15:28 UTC Type: Bug
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: 1823810, 1907969    
Attachments:
Description Flags
vaguely hopeful iPXE patch, based on upstream iPXE b76052335788 none

Description Elf Lewis 2019-08-13 17:01:21 UTC
Description of problem:
After upgrade to RHEL7.7, introspection of Openstack compute hosts no longer works. PXE loads the ipxe image, but then fails with the error:

Could not open net4: Input/output error (http://ipxe.org/1d6a4a98)
No more network devices.

Booting worked fine in rhel 7.6, and a package downgrade to version ipxe-bootimgs-20170123-1.git4e85b27.el7_4.1.noarch resolves the problem.  It seems the problem is the package: ipxe-bootimgs-20180825-2.git133f4c.el7.noarch


Version-Release number of selected component (if applicable):
ipxe-bootimgs-20180825-2.git133f4c.el7.noarch

How reproducible:
every time

Steps to Reproduce:
1. apply ipxe-bootimgs-20180825-2.git133f4c.el7.noarch update to undercloud
2. introspect a server with a HPE 557SFP+ Network adapter in Openstack

Actual results:
booting fails with the above error

Expected results:
ipxe should boot an get an IP address, continuing with the introspection

Comment 3 Neil Horman 2019-08-17 18:22:48 UTC
Can you elaborate on what you mean by 'intropecting'  Are you just trying to chain load a kernel image, or are you doing something else?  If you have the ipxe script you are using that would be helpful

Comment 5 Neil Horman 2019-09-04 12:34:15 UTC
the problems have the same symptom, but different causes.  This bug seems to be dealing with a io error in a driver, whereas bz 1744638 seems to be result of a failure to exec the downloaded image from pxe (suggesting an error in the downloaded image).

As for this bug, I'm still waiting on a response to comment 3

Comment 7 Neil Horman 2019-09-06 12:57:20 UTC
ok, so I presume that its the chain load command thats failing?

Comment 14 Neil Horman 2019-10-23 11:01:03 UTC
Sorry, you never cleared the needinfo flag on this so I didn't see it.  That said, we are dealing with separate problems here, and we should generally not be attaching to bugs where separate drivers are involved.  Though in the most recent case, I believe the customer is out of luck.  The QLogic FastLinQ Ql41000 with pci Vendor ids:
8070
8080
8084
8090

arent supported by ipxe with any specific rom.  Im guessing that this NIC also doesn't support snp, meaning it likely won't work.  The customer should check with hp to see if their EFI firmware implements an SNP interface for this NIC, as that will be the only way it works.

As for the other devices, I assume that SNP was being used in the working case on the OpenConnect NIC?

Comment 15 Neil Horman 2019-10-26 13:39:32 UTC
Why are you clearing needinfo?  I asked you a question in comment 14

Comment 19 Neil Horman 2019-11-29 12:18:17 UTC
No, and you never cleared the needinfo flag when you updated this at the end of october, so I never saw your last update, please be more consistent there.

In response to comment #17, I don't know what you mean by 'both' cards.  As far as I read, you are only dealing with a single card.

In response  to comment #18, you can open a new bug sure, but as noted, I see no support for your card in ipxe, so unless they were using snp, and that broke, I'm not sure what we can do for you.

Comment 20 Neil Horman 2020-04-05 14:39:24 UTC
closing for lack of activity.

Comment 22 Neil Horman 2020-06-29 16:35:08 UTC
Ok, if they are hitting this problem again, lets reset, as this bug has been touched by multiple users with multiple bits of hardware.  Can you confirm for me what the pci ids (vendor/device/subvendor/subdevice) are?  If you provide me those for your customer, I can give you a support statement on the hardware in both RHEL7 and RHEL8

Comment 23 Elf Lewis 2020-06-30 12:06:29 UTC
Hi Neil,

Thanks - here is the information requested:

0000:05:00.0]# cat subsystem_vendor
0x103c

0000:05:00.0]# cat vendor
0x10df

0000:05:00.0]# cat device
0x0720

0000:05:00.0]# cat subsystem_device
0x803f

Elf

Comment 24 Neil Horman 2020-06-30 14:04:38 UTC
so, I can confirm that there has never been a specific driver for this device, its always used the undi interface in both RHEL7 and RHEL8.

What that means is, assuming you are still seeing the error in the initial description (repeated here for reference):
Could not open net4: Input/output error (http://ipxe.org/1d6a4a98)
No more network devices.

its the hardware returning this error.

So its likely that this is a firmware bug of some sort that the new version of ipxe is likely triggering

There is one commit in the nii interface that was included with the latest ipxe, that may be involved here (upstream commit  6324227dcaa820436da4acd88ee174d3e26f0d54), which attempts to work around multiple firmware bugs, but may be failing in this case.  We can try a test build to determine if this is related, but I'm not sure what to do about it if this is the problem.  We may be able to introduce a device specific workaround here, but I'm very hesitant to do so, as if this works, it would really point to the firmware on the NIC needing to be corrected.

https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=29778816
Thats a scratch build of ipxe with a change to enforce cable detection on the driver (which is what the above referenced commit eliminated for nics in which media was not yet detected).  Please have the customer give it a try.  If it works, we will have to have a discussion about how to go about actually fixing this bug, which may result in engaging with HP directly

Comment 25 Elf Lewis 2020-07-01 17:30:56 UTC
Hi,

Customer has tested your brew build, and it works as expected - hopefully this confirms that this commit caused (indirectly if its a bug in the firmware!) the issue.

For now, I'll ask the custoemr to continue usign your build, but it would be good if I could have an update on the way forward - at your convenience.

Thanks again for your help on this,
Elf

Comment 26 Neil Horman 2020-07-01 19:09:22 UTC
well, as noted, this build just confirms that its the emulex firmware that has an issue.  If I had to guess, I would surmise that the error we are hitting is here:

static int nii_initialise_flags ( struct nii_nic *nii, unsigned int flags ) {
...
/* Issue command */
        op = NII_OP ( PXE_OPCODE_INITIALIZE, flags );
        if ( ( stat = nii_issue_cpb_db ( nii, op, &cpb, sizeof ( cpb ),
                                         &db, sizeof ( db ) ) ) < 0 ) {
                rc = -EIO_STAT ( stat );
                DBGC ( nii, "NII %s could not initialise: %s\n",
                       nii->dev.name, strerror ( rc ) );
                goto err_initialize;


I would guess that the system in question is running an older version of EFI firmware and doesn't recognize the PXE_OPFLAGS_INITIALIZE_DO_NOT_DETECT_CABLE flag, as defined in the UEFI spec here:
https://uefi.org/sites/default/files/resources/UEFI_Spec_2_8_final.pdf
in section E.4.7.2

Its likely returning PXE_STATCODE_INVALID_CDB, which we translate into  EIO.

We could hack something in place, like we did here as a test, but the right solution would be to get an EFI firmware update from HP that implemented support for the specified flags.  

What kind of system is this, its possible that an updated EFI firmware already exists

Comment 27 Elf Lewis 2020-07-08 09:23:17 UTC
Hi neil,

The servers are HPE ProLiant DL360 Gen9 servers.  Is there any more info you require?

Thanks,
Elf

Comment 28 Neil Horman 2020-07-08 10:44:19 UTC
No, that should be enough.

Searching the HP website indicates that there is both a bios update:
https://support.hpe.com/hpsc/swd/public/detail?swItemId=MTX_f78e4e6c13a0492bb18246efe1#tab4

And possibly a firmware update for the emulex card (hard to say as they don't list specific pci ids):
https://support.hpe.com/hpsc/swd/public/detail?swItemId=MTX_1decee97677848a982da78fd28#tab4

The revision history up to the latest version indicates a few pxe fixes in both packages (but are somewhat unclear on their relation to this issue).  I suggest that we upgrade to the latest version of each, and if the issue isn't resolved, we can look at hacking in a workaround to ipxe while the customer brings the issue up with HP (I can provide documentation as to the details of the problem)

Comment 30 Neil Horman 2020-07-08 16:31:13 UTC
Copy that, let me know what the response is once you have it.

Comment 32 Neil Horman 2020-07-13 16:56:12 UTC
This is tough case then.  

I can dev-ack this bz for 7.9, but its very late in the development cycle, and so will need blocker/exception justification.  I'm not sure it will be granted, since RHEL7 is about to enter maintenance mode as well.

If you want to try, please set the exception flag to ? and we will see what happens.

If however, the customer is planning on migrating to RHEL8, we could move this bz to target 8.4 and fix it fairly easily there

Let me know what you want to do

Comment 34 Neil Horman 2020-07-14 11:06:04 UTC
I can't promise it will get in, but yes, if you want to move this to RHEL8, you can retarget this for 8.4 and set the z-stream flag

Comment 35 Elf Lewis 2020-07-14 11:12:26 UTC
Ok have set it to 8.2 and set zstream flag - thanks

Comment 36 John Ferlan 2020-07-22 21:02:37 UTC
Neil - was this intended to be reassigned to the sst_virt or stay elsewhere?

Comment 37 Neil Horman 2020-07-22 21:07:21 UTC
I think so, virt is the default component for ipxe

Comment 38 John Ferlan 2020-07-23 18:28:13 UTC
Assigned to Ademar for initial triage per bz process and age of bug created or assigned to virt-maint without triage

Comment 41 Laszlo Ersek 2020-07-24 18:44:35 UTC
Created attachment 1702378 [details]
vaguely hopeful iPXE patch, based on upstream iPXE b76052335788

commit 2de005e9ac399f7064968a2611f266dc86a96700
Author: Laszlo Ersek <lersek>
Date:   Fri Jul 24 19:15:28 2020 +0200

    [efi] perform cable detection at NII initialization on HPE 557SFP+
    
    Commit c0b61bad99ba ("[efi] Work around bugs in Emulex NII driver",
    2015-08-17) added PXE_OPFLAGS_INITIALIZE_DETECT_CABLE to nii_open() for
    working around Emulex NII driver bugs.
    
    That broke some Mellanox drivers, so commit 6324227dcaa8 ("[efi] Skip
    cable detection at initialisation where possible", 2017-03-19) predicated
    PXE_OPFLAGS_INITIALIZE_DETECT_CABLE on the NII driver's *inability* to
    report link status.
    
    This in turn breaks the NII driver on (some?) HPE 557SFP+ cards, as those
    drivers are capable of reporting link status, but they still need cable
    detection.
    
    So check for this card (through PCI vendor / device / subsys vendor /
    subsys device identifiers), and opt for cable detection regardless of link
    status reporting.
    
    Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1740827
    Signed-off-by: Laszlo Ersek <lersek>

Comment 42 Neil Horman 2020-07-27 10:59:47 UTC
Laszlo, yes, I can take this back over

Comment 43 Neil Horman 2020-07-27 18:59:14 UTC
https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=30351331

Test build I have queued up to check in (using Laszlos patch).  Elf, can you please give it a try and confirm that it solves your problem?  Thanks!

Comment 44 Neil Horman 2020-07-29 11:48:24 UTC
ping, Elf, please test this out ASAP so I can check it in.

Comment 46 Neil Horman 2020-07-29 12:48:49 UTC
ELF had access to a system that exhibited the bug described here (the i/o error described in the initial comment).  I need you to take my scratch build, and run it on the system in question to ensure that error no longer occurs.

Comment 49 Neil Horman 2020-07-29 15:21:32 UTC
I'm honestly not sure, You would have to ask Elf how he provided it t the customer

Comment 52 Neil Horman 2020-08-04 11:19:43 UTC
In response

The benefit of making this change is that a large customer openstack deployment will continue to function without the need for a massive hardware upgrade

The risk to the release is minimal, as the patch is implmented as a hardware quirk, so it won't affect functionality for any hardware not listed in the quirk (currently on this single card)

Comment 58 Laszlo Ersek 2020-08-19 15:32:34 UTC
Update: the same issue seems to have been addressed, independently, with a spanking new upstream iPXE commit:

ef2c844d01e7 ("[efi] Attempt NII initialisation both with and without cable detection", 2020-08-17)

It might make sense to brew a test RPM for the customer with upstream ef2c844d01e7 backported, replacing my quirk patch from comment 41 / comment 43.

Comment 79 Karen Noel 2020-10-02 14:33:42 UTC
(In reply to Elf Lewis from comment #35)
> Ok have set it to 8.2 and set zstream flag - thanks

I see zstream? but no ZTR set. Do you want this fixed for RHEL 8.2.z? If so, please set ZTR to 8.2.0. 

There is no assignee on this BZ, so I'm not sure who will do the z-stream backport. Erico, Do you know who could take this from the kernel team? Thanks!

Comment 84 errata-xmlrpc 2020-11-04 04:15:28 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (ipxe bug fix and enhancement update), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2020:4836