OpenSolaris

Printable Version Enter a New Search
Bug ID 6647327
Synopsis SUNWukspfw upgrade issues, usbs49_fw after upgrade from s10u4 to snv_80.
State 10-Fix Delivered (Fix available in build)
Category:Subcategory driver:usbsksp
Keywords sst-osp
Responsible Engineer Lin Guo
Reported Against snv_31 , snv_80 , snv_82 , s10u4_01 , s10u5_10
Duplicate Of
Introduced In solaris_nevada
Commit to Fix snv_85
Fixed In snv_85
Release Fixed solaris_nevada(snv_85) , solaris_10u6(s10u6_01) (Bug ID:2159394)
Related Bugs 6367872 , 6461653 , 6714785
Submit Date 4-January-2008
Last Update Date 6-November-2008
Description
During SST testing of upgrades in snv_80 we found that SUNWukspfw has
consistency issues after upgrades from s10u4 on sun4u hardware (but
looking at the i386 package, they have the same issue):

  # pkgchk -n SUNWukspfw
  ERROR: /kernel/misc/sparcv9/usbs49_fw
      file size <7840> expected <0> actual
      file cksum <6566> expected <42900> actual

The file size is actually not 0 but 7680 bytes (a bug in pkgchk):
  -rwxr-xr-x   1 root     sys         7680 Dec 11 22:05 
/kernel/misc/sparcv9/usbs49_fw

The file "/kernel/misc/sparcv9/usbs49_fw" is marked as type "f",
"preserve" in SUNWukspfw/pkgmap:

  1 f preserve kernel/misc/sparcv9/usbs49_fw 0755 root sys 7840 6566 
1197410724

Since this is an upgrade and the file is marked as "preserve", it's
effectively an object delivered with s10u4, which is confirmed by
checking SUNWukspfw/pkgmap from s10u4:

  1 e preserve kernel/misc/sparcv9/usbs49_fw 0755 root sys 7680 42900 
1184352436

The file size and checksum match the file on our file system.

Tracking back the story of the change from type "e" to "f" in the
following CRs:

  6367872 usbs49_fw module should not be replaced when upgrading system
  6461653 elfsign errors found in SUNWukspfw

I understood that what happened was:

1) the firmware file (usbs49_fw) was first maked as "e" (user editable),
    because its intent is to be replaced by the real firmware by the
    end-user later,

2) this was causing elfsign issues, since editable files aren't signed
    by default (CR 6461653),

3) the attempted fix was to change file type to "f" in snv_80 and flag
    it as "preserve" so if the end-user replaces the placeholder binary
    with the real firmware, it won't be lost on system upgrade (CR
    6367872). Changing it to type "f" will automatically make it be
    elfsigned.

This led to the upgrade issue we discovered and would also happen if
there was user provided firmware file.
I had also seen this when I did live upgrade testing from snv_70b to snv_82 on x86, pkgchk -n reports the following errors:

# pkgchk -n SUNWukspfw
ERROR: /kernel/misc/amd64/usbs49_fw
    file size <8168> expected <8144> actual
    file cksum <15114> expected <4546> actual
ERROR: /kernel/misc/usbs49_fw
    file size <6888> expected <6848> actual
    file cksum <62702> expected <50465> actual
#


The pkgmap had the following entries:

# more pkgmap
: 1 164
1 i copyright 93 8258 1201080055
1 i depend 1922 31916 1201074910
1 i i.preserve 1006 18462 1201080055
1 d none kernel 0755 root sys
1 d none kernel/misc 0755 root sys
1 d none kernel/misc/amd64 0755 root sys
1 f preserve kernel/misc/amd64/usbs49_fw 0755 root sys 8168 15114 1201409027
1 f preserve kernel/misc/usbs49_fw 0755 root sys 6888 62702 1201409027
1 i pkginfo 492 39159 1201409028
# 

It should be:

1 e renameold kernel/misc/amd64/usbs49_fw 0755 root sys 8168 15114 1201409027
1 e renameold kernel/misc/usbs49_fw 0755 root sys 6888 62702 1201409027
Work Around
N/A
Comments
N/A