Project

General

Profile

Bug #12875

igb I211 doesn't have an nvm version which leads to ufm panic

Added by Robert Mustacchi 6 months ago. Updated 5 months ago.

Status:
Closed
Priority:
High
Category:
driver - device drivers
Start date:
Due date:
% Done:

100%

Estimated time:
Difficulty:
Medium
Tags:
Gerrit CR:

Description

A user with an Intel I211 ended up with a panic with the following stack:

> $C
fffffe003dbc3270 vpanic()
fffffe003dbc3300 0xfffffffffbdee961()
fffffe003dbc3330 fnvlist_add_string+0x42(fffffe2d107daba0, fffffffffbedd451, 0)
fffffe003dbc33b0 ufm_cache_fill+0x2f0(fffffe2cfe3b8b80)
fffffe003dbc3c20 ufm_do_getcaps+0xe4(8045c24, 100001)
fffffe003dbc3c80 ufm_ioctl+0xd3(13d00000000, 75666d01, 8045c24, 100001, fffffe2d02a770c8, fffffe003dbc3dd8)
fffffe003dbc3cc0 cdev_ioctl+0x2b(13d00000000, 75666d01, 8045c24, 100001, fffffe2d02a770c8, fffffe003dbc3dd8)
fffffe003dbc3d10 spec_ioctl+0x45(fffffe2d10782a40, 75666d01, 8045c24, 100001, fffffe2d02a770c8, fffffe003dbc3dd8, 0)
fffffe003dbc3da0 fop_ioctl+0x5b(fffffe2d10782a40, 75666d01, 8045c24, 100001, fffffe2d02a770c8, fffffe003dbc3dd8, 0)
fffffe003dbc3ec0 ioctl+0x153(b, 75666d01, 8045c24)
fffffe003dbc3f10 sys_syscall32+0x105()
> fffffe2cfe3b8b80::print ddi_ufm_handle_t
{
    ufmh_lock = {
        _opaque = [ 0xfffffe2d021307e0 ]
    }
    ufmh_devpath = [ "/pci@0,0/pci1022,1453@1,3/pci1022,43c6@0,2/pci1022,43c7@0/pci1458,e000@0" ]
    ufmh_ops = igb_ufm_ops
    ufmh_arg = 0xfffffe2d01908000
    ufmh_state = 0x3
    ufmh_version = 0x1
    ufmh_images = 0xfffffe2d1a2ea900
    ufmh_nimages = 0x1
    ufmh_caps = 0x3 (DDI_UFM_CAP_RE{PORT|ADIMG})
    ufmh_report = 0
    ufmh_link = {
        avl_child = [ 0, 0 ]
        avl_pcb = 0x1
    }
}
> fffffe2d107daba0::nvlist
ufm-slot-attributes=00000007
ufm-slot-imgsize=0000000000001000
> fffffffffbedd451/s
0xfffffffffbedd451:             ufm-slot-version

Here we specifically were trying to fill in the ufm-slot-version value, but that was NULL. That led to the ufm sub-system blowing up due to the use of fnvlist. The problem here is that the I211 actually doesn't have a standard NVM and instead simulates certain parts of the traditional NVM in the Intel common code. This means that this device doesn't actually have a firmware version section, which is why we didn't actually add one. While we should come back and make sure a driver doesn't lead to such a problem in the future, in the iterim we should explicitly set an unknown version like in ixgbe when this occurs.


Related issues

Related to illumos gate - Feature #12760: igb ufm supportClosedRobert Mustacchi

Actions
#1

Updated by Robert Mustacchi 6 months ago

  • Gerrit CR set to 735
#2

Updated by Robert Mustacchi 5 months ago

This was tested in two ways:

1. The impacted user was able to verify that the fix helped them out and their system no longer panics on a system with an I211.
2. I also verified that the ufm information still worked on an I350.

#3

Updated by Electric Monk 5 months ago

  • Status changed from New to Closed
  • % Done changed from 90 to 100

git commit 6682e4c38cf4cf5fd5fc490fac27f3d7af9bab4c

commit  6682e4c38cf4cf5fd5fc490fac27f3d7af9bab4c
Author: Robert Mustacchi <rm@fingolfin.org>
Date:   2020-06-18T02:49:44.000Z

    12875 igb I211 doesn't have an nvm version which leads to ufm panic
    Reviewed by: Igor Kozhukhov <igor@dilos.org>
    Reviewed by: Patrick Mooney <pmooney@pfmooney.com>
    Approved by: Richard Lowe <richlowe@richlowe.net>

#4

Updated by Robert Mustacchi 5 months ago

Also available in: Atom PDF