From tl41329@sac.sfbay.sun.com Tue Feb 26 01:32:13 2008
Received: from sunmail3mpk.sfbay.sun.com (sunmail3mpk [129.146.11.52])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m1Q9WD33020301
	for <psarc-ext@sac.sfbay.sun.com>; Tue, 26 Feb 2008 01:32:13 -0800 (PST)
Received: from nwk-avmta-1.SFBay.Sun.COM (nwk-avmta-1.SFBay.Sun.COM [129.146.11.74])
	by sunmail3mpk.sfbay.sun.com (8.13.7+Sun/8.13.7/ENSMAIL,v2.2) with ESMTP id m1Q9WDDw007184;
	Tue, 26 Feb 2008 01:32:13 -0800 (PST)
Received: from pmxchannel-daemon.nwk-avmta-1.sfbay.Sun.COM by
 nwk-avmta-1.sfbay.Sun.COM
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0JWU00I13AHPB700@nwk-avmta-1.sfbay.Sun.COM>; Tue,
 26 Feb 2008 01:32:13 -0800 (PST)
Received: from dm-sfbay-02.sfbay.sun.com ([129.146.11.31])
 by nwk-avmta-1.sfbay.Sun.COM
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0JWU00MOGAHN7460@nwk-avmta-1.sfbay.Sun.COM>; Tue,
 26 Feb 2008 01:32:11 -0800 (PST)
Received: from sac.sfbay.sun.com (new-sac.SFBay.Sun.COM [129.146.175.65])
	by dm-sfbay-02.sfbay.sun.com (8.13.8+Sun/8.13.8/ENSMAIL,v2.2)
 with ESMTP id m1Q9WBX8033348; Tue, 26 Feb 2008 01:32:11 -0800 (PST)
Received: from sac.sfbay.sun.com (localhost [127.0.0.1])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m1Q9OeJA020184; Tue,
 26 Feb 2008 01:24:40 -0800 (PST)
Received: (from tl41329@localhost)
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8/Submit) id m1Q9Oeor020180; Tue,
 26 Feb 2008 01:24:40 -0800 (PST)
Date: Tue, 26 Feb 2008 01:24:40 -0800 (PST)
From: Tzongyu Paul Lee <tl41329@sac.sfbay.sun.com>
Subject: Pluggable fwflash(1M) [PSARC/2008/151 FastTrack timeout 03/04/2008]
To: PSARC-ext@sun.com
Message-id: <200802260924.m1Q9Oeor020180@sac.sfbay.sun.com>
Content-transfer-encoding: 7BIT
X-PMX-Version: 5.2.0.264296
Status: RO
Content-Length: 15545


Template Version: @(#)sac_nextcase 1.64 07/13/07 SMI
This information is Copyright 2008 Sun Microsystems
1. Introduction
    1.1. Project/Component Working Name:
	 Pluggable fwflash(1M)
    1.2. Name of Document Author/Supplier:
	 Author:  James McPherson
    1.3  Date of This Document:
	26 February, 2008
4. Technical Description


Title
-----


Pluggable fwflash(1M).





Problem
-------


PSARC/2005/126 introduced the fwflash(1M) Solaris firmware flashing
utility, and requested that fwflash(1M) become the preferred interface for
firmware flashing tools within Solaris. The initial release of fwflash(1M)
was targeted at InfiniBand (IB) adapters attached via the tavor(7D)
driver. 

Sun's Systems group has requested that fwflash(1M) be extended to provide
support for devices attached via ses(7D) - SCSI Enclosure Services. This
fasttrack addresses that request and in the process extends fwflash(1M) to
also provide a generic, pluggable interface for other devices for which a
firmware update mechanism might be required in the future.

Further, we separate out the firmware image verification process into a 
separate plugin. The reason for this is that we anticipate shipping devices
which attach to the host using the same driver, but which have different
identification and firmware verification requires. By keeping the
identifier separate from the verifier we enable a decrease in the sustaining
effort over time. 

Separation also allows us to make most of the new fwflash(1M) Open, and
leave CDA- or NDA-covered knowledge required in the closed part of the
OpenSolaris source tree. 



The existing InfiniBand functionality will be re-factored to work within
the proposed plugin framework.





Binding
-------

We request a Patch binding for this RFE (6616085) since the business
requirement is for integration into Solaris 10 Update 6.



Exposure
--------

This is an Open fasttrack.






Interfaces
----------


We propose the following changes to the command line syntax of
fwflash(1M):


1. Remove the "device number" option to specify a device to be
   flashed, instead requiring the user to specify a device path.


   The option of using a "device number" to specify a device
   implicitly assumes that the system configuration is static
   between invocations of fwflash(1M). This assumption is not
   necessarily valid in a system which supports hotplug operation.

   (This change in the command line options was suggested by 
   Garrett D'Amore during pre-submission review and is one that
   I'm more than happy to accept).


2. Add the ability to push multiple firmware images onto a single
   device. If -f is the last option specified on the command line,
   then all following arguments will be deemed to be filenames for
   separate firmware images.

   

   While it is anticipated that the primary use case for multiple
   firmware images will be in manufacturing environments on a
   pre-release basis, it is also possible that devices such as
   WiFi devices might also wish to use these flags. 





For the plugin interface, we propose the following structures.

Firstly, the verification plugin:


struct vrfyplugin {

	/*
	 * fully-qualified filename in /usr/lib/fwflash/verify,
	 * made up of [drivername]-[vendorname].so
	 *
	 * eg  /usr/lib/fwflash/verify/ses-SUN.so
	 * is the verification plugin for ses-attached devices which
	 * have a vendorname of "SUN".
	 */ 
	char *filename;

	/*
	 * The vendor name, such as "SUN" or "MELLANOX"
	 */
	char *vendor;

	/*
	 * An opaque handle for dlopen()/dlclose() to use.
	 */
	void *handle;

	/*
	 * Firmware image size in bytes, as reported by 
	 * stat().
	 */
	unsigned int imgsize;

	/*
	 * Flashable devices frequently have different buffers
	 * to use for different image types. We track the buffer
	 * required for this particular image with this variable.
	 *
	 * Once the verifier has figured out what sort of image
	 * it's been passed, it will know what value to use for
	 * this variable.
	 */
	unsigned int flashbuf;

	/*
	 * Points to the entire firmware image in memory.
	 * We do this so we can avoid multiple open()/close()
	 * operations, and to make it easier for checksum
	 * calculations.
	 */
	int *fwimage;

	/*
	 * The verification function entry point. The code
	 * in fwflash.c calls this function to verify that
	 * the nominated firmware image file is valid for
	 * the selected devicenode.
	 *
	 * Note that if the verification fails, the image
	 * does _not_ get force-flashed to the device.
	 *
	 * All verification plugins must support this operation.
	 */
	int (*vendorvrfy)(struct devicelist *devicenode);
};


Verification plugins are delivered in /usr/lib/fwflash/verify.

There is only one verification plugin loaded for any flash
update operation. The verification plugin must be written so
that it can correctly identify different levels of firmware
for a device (eg primary, secondary, tertiary) and verify
each individually. 



In the case of the user requesting a firmware update for
multiple images, these are verified serially, and then flashed
to the device.



To provide the common code with a means of both verifying and flashing
the firmware, we pass that information using


struct fwfile {
       /*
        * The fully qualified filename. No default location for
	* for the firmware image file is mandated.
	*/
	char *filename;

	/* Pointer to the identification plugin required */
	struct fw_plugin *plugin;

	/* pointer to the identification summary structure */
	struct vpr *ident;
};



The struct vpr allows us to encapsulate device information such as
the Vendor ID, Product ID and Revision ID returned from a SCSI INQUIRY(6)
command, and additional information such as might be required for a tavor-
attached (IB) device.

If any of the fields are space-padded at the end, then the common code
will do the work to strip those spaces characters off the end of the string
before making use of the data.



struct vpr {
	/* vendor ID, eg "HITACHI " */
	char *vid;

 	/* product ID, eg "DK32EJ36NSUN36G " */
	char *pid;

	/* revision, eg "PQ08" */
	char *revid;

	/*
	 * Additional, encapsulated identifying information.
	 * This pointer allows us to add details such as the
	 * IB hba sector size, which command set should be
	 * used or a part number.
	 */
	void *encap_ident;
};





For the device identification and firmware update plugin:

struct fw_plugin {

	/*
	 * An opaque handle for dlopen()/dlclose() to use.
	 */
	void *handle;

	/*
	 * fully-qualified filename in /usr/lib/fwflash/identify
	 * made up of [drivername].so
	 *
	 * eg  /usr/lib/fwflash/identify/ses.so
	 * is the identification plugin for devices attached to
	 * the host using the ses(7D) driver.
	 */
	char *filename;

	/*
	 * The driver name that this plugin will search for in
	 * the device tree snapshot using di_drv_first_node(3DEVINFO)
	 * and di_drv_next_node(3DEVINFO).
	 */
	char *drvname; /* "ses" or "tavor" or .... */

	/*
	 * Function entry point to support the command-line "-r"
	 * option - read image from device to persistent storage.
	 *
	 * Not all plugins and devices will support this operation.
	 */
	int (*fw_readfw)(struct devicelist *device, char *filename);
	
	/*
	 * Function entry point to support the command-line "-f"
	 * option - writes from persistent storage to device
	 *
	 * All identification plugins must support this operation.
	 */
	int (*fw_writefw)(struct devicelist *device, char *filename);


	/*
	 * Function entry point used to build the list of valid, flashable
	 * devices attached to the system using the loadable module drvname.
	 * (Not all devices attached using drvname will be valid for this
	 * plugin to report.
	 *
	 * start allows us to display flashable devices attached with
	 * different drivers and provide the user with a visual clue
	 * that these devices are different to others that are detected.
	 * 
	 * All identification plugins must support this operation.
	 */
	int (*fw_identify)(int start);

	/*
	 * Function entry point to support the command-line "-l"
	 * option - list/report flashable devices attached to the system.
	 *
	 * All identification plugins must support this operation.
	 */	
	int (*fw_devinfo)(struct devicelist *thisdev);
};


Device identification and firmware update plugins are delivered in 
/usr/lib/fwflash/identify.


Once the identification plugin has found an acceptable device, it
adds a record to the global list fw_devices:



struct devicelist {
	/*
	 * fully qualified pathname, with /devices/.... prefix
	 */
	char *access_devname;

	/*
	 * Which drivername did we find this device attached with
	 * in our device tree walk? Eg, ses or tavor or sgen...
	 */
	char *drvname;

	/*
	 * What class of device is this? For tavor-attached devices,
	 * we set this to "IB". For other devices, unless there is
	 * a common name to use, just make this the same as the 
	 * drvname field.
	 */	 
	char *classname;

	/* pointer to the VPR structure */
	struct vpr *ident;

	/*
	 * In the original fwflash(1M), it was possible to select a
	 * device for flashing by using an index number called a 
	 * dev_num. We retain that concept for pluggable fwflash, with
	 * the following change - whenever our identification plugin has
	 * finished and found at least one acceptable device, we bump the
	 * index number by 100. This provides the user with another key
	 * to distinguish the desired device from a potentially very large
	 * list of similar-looking devices.
	 */
	unsigned int index;

	/*
	 * Contains SAS or FC Port-WWNs, or IB GUIDS. Both SAS and FC only
	 * need one entry in this array since they really only have one
	 * address which we should track. IB devices can have 4 GUIDs
	 * (System Image, Node Image, Port 1 and Port 2).
	 */
	char *addresses[4];

	/*
	 * Pointer to the plugin needed to flash this device, and
	 * to use for printing appropriate device-specific information
	 * as required by the "-l" option to fwflash(1M).
	 */
	struct fw_plugin *plugin;

	/* Next entry in the list */
	TAILQ_ENTRY(devicelist) nextdev;
};





As a way of assisting the common code to easily find an appropriate
plugin, we also have a pluginlist structure:



struct pluginlist {
	/*
	 * fully qualified filename in /usr/lib/fwflash/identify
	 * made up of fwflash-[drivername].so
	 *
	 * eg  /usr/lib/fwflash/identify/ses.so
	 * is the identification plugin for devices attached to
	 * the host using the ses(7D) driver.
	 */
	char *filename;

	/*
	 * The driver name that this plugin will search for in
	 * the device tree snapshot using di_drv_first_node(3DEVINFO)
	 * and di_drv_next_node(3DEVINFO).
	 */
	char *drvname; 

	/*
	 * pointer to the actual plugin, so we can access its
	 * function entry points
	 */
	struct fw_plugin *plugin;

	/* pointer to the next element in the list */	 
	TAILQ_ENTRY(pluginlist) nextplugin;
};





We do not mandate a specific filesystem location for firmware images.


In order for the system to add a valid flashable device to the list of 
devices, the TAILQ family of macros from <sys/queue.h> are used. Each
device is added to the end of the global list using TAILQ_INSERT_TAIL().

Once the global list of valid devices has been built, we use the
TAILQ_FOREACH() macro to access a specific device record, check whether
the device matches our criteria (eg, device class, or /devices path), and
then invoke the desired function entry point.

We initialise the global variables pluginlist and devicelist as follows:


TAILQ_HEAD(PLUGINLIST, pluginlist);
TAILQ_HEAD(DEVICELIST, devicelist);
struct PLUGINLIST *fw_pluginlist;
struct DEVICELIST *fw_devices;


The TAILQ_HEAD() macros wrap our variable structure (pluginlist, devicelist)
and transform them into a list. See <sys/queue.h> for more details, or
the OpenBSD manpage for QUEUE(3) at 
http://www.openbsd.org/cgi-bin/man.cgi?query=queue&manpath=OpenBSD+Current&format=html
(CR 6659566 has been logged requesting a Solaris manpage be delivered).





Each function entry point should use the defined success or failure
return codes of

FWFLASH_SUCCESS
FWFLASH_FAILURE



Identification mechanisms
-------------------------


For InfiniBand devices, the identification method has not changed, it has
merely been refactored from the existing code into the new plugin
architecture.


For ses(7D)-attached devices, we walk the devinfo tree (the common code
holds the devinfo root node pointer as di_node_t rootnode) looking for
devices attached using this driver. If we find a ses(7D) device, we query
using a simple uscsi(7I) GET DIAGNOSTIC(6) command to see whether the
devices supports the Download Microcode Diagnostic Control Page (0x0e).
If the device supports that page, then we attach the device to the global
devicelist and continue our search of the device tree. If the device
does not support that control page then we resume our search through
the device tree for nodes which are acceptable.





Stability classifications
-------------------------


	/usr/lib/fwflash		Committed
	/usr/lib/fwflash/identify	Committed
	/usr/lib/fwflash/verify		Committed
	
	struct fw_plugin		Committed
	struct vrfyplugin		Committed

	struct pluginlist		Committed
	struct vpr			Committed
	struct fwflash			Committed
	struct devicelist		Committed

	FWFLASH_SUCCESS			Committed
	FWFLASH_FAILURE			Committed




Manpage changes
---------------


An updated manpage reflecting the more generic nature of fwflash(1M) will
be submitted to the case log. This will mention the as-delivered list of
supported device identification plugins (presently IB and ses only). The
manpage will also incorporate instructions on how to provide multiple
firmware images as command line arguments, as well as the device specifier
that can be passed with the -d option.


The "-l" (list) option retains the same format as PSARC/2005/126, though
naturally each identification plugin will have its own mandatory information.

The plugin for ses(7D)-attached devices will report device information in
the following fashion:

+----------------------------------------------------------+
| # /usr/sbin/fwflash -l                                   |
| List of available devices:                               |
| Device[0] /devices/pci@7c0/pci@0/pci@2/scsi@0/ses@4,0:0  |
|   Class [ses]                                            |
|         Target port WWN  : 508002000031ad7d              |
|         Vendor           : LSILOGIC                      |
|         Product          : SASX36 A.0                    |
|         Firmware revision: 2020                          |
|                                                          |
| Device[1] /devices/pci@7c0/pci@0/pci@2/scsi@0/ses@6,0:0  |
|   Class [ses]                                            |
|         Target port WWN  : 50800200006f517d              |
|         Vendor           : LSILOGIC                      |
|         Product          : SASX28 A.0                    |
|         Firmware revision: 2020                          |
+----------------------------------------------------------+

The above example will be added to the manpage examples section.

An example of multiple image flashing will also be added to the
manpage.



References
----------

PSARC/2005/126 InfiniBand Flash Update Tool (ibflash)
PSARC/2002/539 Tavor IB-HCA Driver


CR 6616085 fwflash should be generic and pluggable

6. Resources and Schedule
    6.4. Steering Committee requested information
   	6.4.1. Consolidation C-team Name:
		ON
    6.5. ARC review type: FastTrack
    6.6. ARC Exposure: open


From Tzongyu.Lee@sun.com Tue Feb 26 18:29:15 2008
Received: from sunmail4.singapore.sun.com (sunmail4.Singapore.Sun.COM [129.158.71.19])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m1R2TEx8025138
	for <psarc-ext@sac.sfbay.Sun.COM>; Tue, 26 Feb 2008 18:29:15 -0800 (PST)
Received: from brm-avmta-1.central.sun.com (brm-avmta-1.Central.Sun.COM [129.147.4.11])
	by sunmail4.singapore.sun.com (8.13.4+Sun/8.13.3/ENSMAIL,v2.2) with ESMTP id m1R2TCdU021385
	for <@sunmail2sca.sfbay.sun.com:PSARC-ext@sun.com>; Wed, 27 Feb 2008 10:29:13 +0800 (SGT)
Received: from pmxchannel-daemon.brm-avmta-1.central.sun.com by
 brm-avmta-1.central.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0JWV00N03LKN2U00@brm-avmta-1.central.sun.com> for PSARC-ext@sun.com
 (ORCPT PSARC-ext@sun.com); Tue, 26 Feb 2008 19:29:12 -0700 (MST)
Received: from sineb-mail-1.sun.com ([192.18.19.6])
 by brm-avmta-1.central.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0JWV00EPKLKMFD60@brm-avmta-1.central.sun.com> for
 PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Tue,
 26 Feb 2008 19:29:11 -0700 (MST)
Received: from fe-apac-05.sun.com
 (fe-apac-05.sun.com [192.18.19.176] (may be forged))
	by sineb-mail-1.sun.com (8.13.6+Sun/8.12.9) with ESMTP id m1R2TFXo027932	for
 <PSARC-ext@sun.com>; Wed, 27 Feb 2008 02:29:15 +0000 (GMT)
Received: from conversion-daemon.mail-apac.sun.com by mail-apac.sun.com
 (Sun Java System Messaging Server 6.2-6.01 (built Apr  3 2006))
 id <0JWV00D01LFWLK00@mail-apac.sun.com>
 (original mail from Tzongyu.Lee@Sun.COM)
 for PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Wed,
 27 Feb 2008 10:29:09 +0800 (SGT)
Received: from [129.158.218.85] by mail-apac.sun.com
 (Sun Java System Messaging Server 6.2-6.01 (built Apr  3 2006))
 with ESMTPSA id <0JWV006MSLKKKDQM@mail-apac.sun.com> for PSARC-ext@sun.com
 (ORCPT PSARC-ext@sun.com); Wed, 27 Feb 2008 10:29:09 +0800 (SGT)
Date: Wed, 27 Feb 2008 10:28:27 +0800
From: Tzongyu Paul Lee <Tzongyu.Lee@sun.com>
Subject: Re: Pluggable fwflash(1M) [PSARC/2008/151 FastTrack timeout 03/04/2008]
In-reply-to: <200802260924.m1Q9Oeor020180@sac.sfbay.sun.com>
Sender: Tzongyu.Lee@sun.com
To: PSARC-ext@sun.com
Reply-to: Tzongyu.Lee@sun.com
Message-id: <47C4CACB.7040603@Sun.COM>
MIME-version: 1.0
Content-type: text/plain; charset=GB2312
Content-transfer-encoding: 8BIT
X-PMX-Version: 5.2.0.264296
References: <200802260924.m1Q9Oeor020180@sac.sfbay.sun.com>
User-Agent: Thunderbird 2.0.0.4 (X11/20070723)
Status: RO
Content-Length: 16903

(Forgot to attach the header/intro portion for the case..)

I am sponsoring this fast-track for James C. McPherson.
Requested release binding is patch, and the timer is set to
03/04/2008.

T.Paul
-------

Tzongyu Paul Lee 写道:
> Template Version: @(#)sac_nextcase 1.64 07/13/07 SMI
> This information is Copyright 2008 Sun Microsystems
> 1. Introduction
>     1.1. Project/Component Working Name:
> 	 Pluggable fwflash(1M)
>     1.2. Name of Document Author/Supplier:
> 	 Author:  James McPherson
>     1.3  Date of This Document:
> 	26 February, 2008
> 4. Technical Description
>
>
> Title
> -----
>
>
> Pluggable fwflash(1M).
>
>
>
>
>
> Problem
> -------
>
>
> PSARC/2005/126 introduced the fwflash(1M) Solaris firmware flashing
> utility, and requested that fwflash(1M) become the preferred interface for
> firmware flashing tools within Solaris. The initial release of fwflash(1M)
> was targeted at InfiniBand (IB) adapters attached via the tavor(7D)
> driver. 
>
> Sun's Systems group has requested that fwflash(1M) be extended to provide
> support for devices attached via ses(7D) - SCSI Enclosure Services. This
> fasttrack addresses that request and in the process extends fwflash(1M) to
> also provide a generic, pluggable interface for other devices for which a
> firmware update mechanism might be required in the future.
>
> Further, we separate out the firmware image verification process into a 
> separate plugin. The reason for this is that we anticipate shipping devices
> which attach to the host using the same driver, but which have different
> identification and firmware verification requires. By keeping the
> identifier separate from the verifier we enable a decrease in the sustaining
> effort over time. 
>
> Separation also allows us to make most of the new fwflash(1M) Open, and
> leave CDA- or NDA-covered knowledge required in the closed part of the
> OpenSolaris source tree. 
>
>
>
> The existing InfiniBand functionality will be re-factored to work within
> the proposed plugin framework.
>
>
>
>
>
> Binding
> -------
>
> We request a Patch binding for this RFE (6616085) since the business
> requirement is for integration into Solaris 10 Update 6.
>
>
>
> Exposure
> --------
>
> This is an Open fasttrack.
>
>
>
>
>
>
> Interfaces
> ----------
>
>
> We propose the following changes to the command line syntax of
> fwflash(1M):
>
>
> 1. Remove the "device number" option to specify a device to be
>    flashed, instead requiring the user to specify a device path.
>
>
>    The option of using a "device number" to specify a device
>    implicitly assumes that the system configuration is static
>    between invocations of fwflash(1M). This assumption is not
>    necessarily valid in a system which supports hotplug operation.
>
>    (This change in the command line options was suggested by 
>    Garrett D'Amore during pre-submission review and is one that
>    I'm more than happy to accept).
>
>
> 2. Add the ability to push multiple firmware images onto a single
>    device. If -f is the last option specified on the command line,
>    then all following arguments will be deemed to be filenames for
>    separate firmware images.
>
>    
>
>    While it is anticipated that the primary use case for multiple
>    firmware images will be in manufacturing environments on a
>    pre-release basis, it is also possible that devices such as
>    WiFi devices might also wish to use these flags. 
>
>
>
>
>
> For the plugin interface, we propose the following structures.
>
> Firstly, the verification plugin:
>
>
> struct vrfyplugin {
>
> 	/*
> 	 * fully-qualified filename in /usr/lib/fwflash/verify,
> 	 * made up of [drivername]-[vendorname].so
> 	 *
> 	 * eg  /usr/lib/fwflash/verify/ses-SUN.so
> 	 * is the verification plugin for ses-attached devices which
> 	 * have a vendorname of "SUN".
> 	 */ 
> 	char *filename;
>
> 	/*
> 	 * The vendor name, such as "SUN" or "MELLANOX"
> 	 */
> 	char *vendor;
>
> 	/*
> 	 * An opaque handle for dlopen()/dlclose() to use.
> 	 */
> 	void *handle;
>
> 	/*
> 	 * Firmware image size in bytes, as reported by 
> 	 * stat().
> 	 */
> 	unsigned int imgsize;
>
> 	/*
> 	 * Flashable devices frequently have different buffers
> 	 * to use for different image types. We track the buffer
> 	 * required for this particular image with this variable.
> 	 *
> 	 * Once the verifier has figured out what sort of image
> 	 * it's been passed, it will know what value to use for
> 	 * this variable.
> 	 */
> 	unsigned int flashbuf;
>
> 	/*
> 	 * Points to the entire firmware image in memory.
> 	 * We do this so we can avoid multiple open()/close()
> 	 * operations, and to make it easier for checksum
> 	 * calculations.
> 	 */
> 	int *fwimage;
>
> 	/*
> 	 * The verification function entry point. The code
> 	 * in fwflash.c calls this function to verify that
> 	 * the nominated firmware image file is valid for
> 	 * the selected devicenode.
> 	 *
> 	 * Note that if the verification fails, the image
> 	 * does _not_ get force-flashed to the device.
> 	 *
> 	 * All verification plugins must support this operation.
> 	 */
> 	int (*vendorvrfy)(struct devicelist *devicenode);
> };
>
>
> Verification plugins are delivered in /usr/lib/fwflash/verify.
>
> There is only one verification plugin loaded for any flash
> update operation. The verification plugin must be written so
> that it can correctly identify different levels of firmware
> for a device (eg primary, secondary, tertiary) and verify
> each individually. 
>
>
>
> In the case of the user requesting a firmware update for
> multiple images, these are verified serially, and then flashed
> to the device.
>
>
>
> To provide the common code with a means of both verifying and flashing
> the firmware, we pass that information using
>
>
> struct fwfile {
>        /*
>         * The fully qualified filename. No default location for
> 	* for the firmware image file is mandated.
> 	*/
> 	char *filename;
>
> 	/* Pointer to the identification plugin required */
> 	struct fw_plugin *plugin;
>
> 	/* pointer to the identification summary structure */
> 	struct vpr *ident;
> };
>
>
>
> The struct vpr allows us to encapsulate device information such as
> the Vendor ID, Product ID and Revision ID returned from a SCSI INQUIRY(6)
> command, and additional information such as might be required for a tavor-
> attached (IB) device.
>
> If any of the fields are space-padded at the end, then the common code
> will do the work to strip those spaces characters off the end of the string
> before making use of the data.
>
>
>
> struct vpr {
> 	/* vendor ID, eg "HITACHI " */
> 	char *vid;
>
>  	/* product ID, eg "DK32EJ36NSUN36G " */
> 	char *pid;
>
> 	/* revision, eg "PQ08" */
> 	char *revid;
>
> 	/*
> 	 * Additional, encapsulated identifying information.
> 	 * This pointer allows us to add details such as the
> 	 * IB hba sector size, which command set should be
> 	 * used or a part number.
> 	 */
> 	void *encap_ident;
> };
>
>
>
>
>
> For the device identification and firmware update plugin:
>
> struct fw_plugin {
>
> 	/*
> 	 * An opaque handle for dlopen()/dlclose() to use.
> 	 */
> 	void *handle;
>
> 	/*
> 	 * fully-qualified filename in /usr/lib/fwflash/identify
> 	 * made up of [drivername].so
> 	 *
> 	 * eg  /usr/lib/fwflash/identify/ses.so
> 	 * is the identification plugin for devices attached to
> 	 * the host using the ses(7D) driver.
> 	 */
> 	char *filename;
>
> 	/*
> 	 * The driver name that this plugin will search for in
> 	 * the device tree snapshot using di_drv_first_node(3DEVINFO)
> 	 * and di_drv_next_node(3DEVINFO).
> 	 */
> 	char *drvname; /* "ses" or "tavor" or .... */
>
> 	/*
> 	 * Function entry point to support the command-line "-r"
> 	 * option - read image from device to persistent storage.
> 	 *
> 	 * Not all plugins and devices will support this operation.
> 	 */
> 	int (*fw_readfw)(struct devicelist *device, char *filename);
> 	
> 	/*
> 	 * Function entry point to support the command-line "-f"
> 	 * option - writes from persistent storage to device
> 	 *
> 	 * All identification plugins must support this operation.
> 	 */
> 	int (*fw_writefw)(struct devicelist *device, char *filename);
>
>
> 	/*
> 	 * Function entry point used to build the list of valid, flashable
> 	 * devices attached to the system using the loadable module drvname.
> 	 * (Not all devices attached using drvname will be valid for this
> 	 * plugin to report.
> 	 *
> 	 * start allows us to display flashable devices attached with
> 	 * different drivers and provide the user with a visual clue
> 	 * that these devices are different to others that are detected.
> 	 * 
> 	 * All identification plugins must support this operation.
> 	 */
> 	int (*fw_identify)(int start);
>
> 	/*
> 	 * Function entry point to support the command-line "-l"
> 	 * option - list/report flashable devices attached to the system.
> 	 *
> 	 * All identification plugins must support this operation.
> 	 */	
> 	int (*fw_devinfo)(struct devicelist *thisdev);
> };
>
>
> Device identification and firmware update plugins are delivered in 
> /usr/lib/fwflash/identify.
>
>
> Once the identification plugin has found an acceptable device, it
> adds a record to the global list fw_devices:
>
>
>
> struct devicelist {
> 	/*
> 	 * fully qualified pathname, with /devices/.... prefix
> 	 */
> 	char *access_devname;
>
> 	/*
> 	 * Which drivername did we find this device attached with
> 	 * in our device tree walk? Eg, ses or tavor or sgen...
> 	 */
> 	char *drvname;
>
> 	/*
> 	 * What class of device is this? For tavor-attached devices,
> 	 * we set this to "IB". For other devices, unless there is
> 	 * a common name to use, just make this the same as the 
> 	 * drvname field.
> 	 */	 
> 	char *classname;
>
> 	/* pointer to the VPR structure */
> 	struct vpr *ident;
>
> 	/*
> 	 * In the original fwflash(1M), it was possible to select a
> 	 * device for flashing by using an index number called a 
> 	 * dev_num. We retain that concept for pluggable fwflash, with
> 	 * the following change - whenever our identification plugin has
> 	 * finished and found at least one acceptable device, we bump the
> 	 * index number by 100. This provides the user with another key
> 	 * to distinguish the desired device from a potentially very large
> 	 * list of similar-looking devices.
> 	 */
> 	unsigned int index;
>
> 	/*
> 	 * Contains SAS or FC Port-WWNs, or IB GUIDS. Both SAS and FC only
> 	 * need one entry in this array since they really only have one
> 	 * address which we should track. IB devices can have 4 GUIDs
> 	 * (System Image, Node Image, Port 1 and Port 2).
> 	 */
> 	char *addresses[4];
>
> 	/*
> 	 * Pointer to the plugin needed to flash this device, and
> 	 * to use for printing appropriate device-specific information
> 	 * as required by the "-l" option to fwflash(1M).
> 	 */
> 	struct fw_plugin *plugin;
>
> 	/* Next entry in the list */
> 	TAILQ_ENTRY(devicelist) nextdev;
> };
>
>
>
>
>
> As a way of assisting the common code to easily find an appropriate
> plugin, we also have a pluginlist structure:
>
>
>
> struct pluginlist {
> 	/*
> 	 * fully qualified filename in /usr/lib/fwflash/identify
> 	 * made up of fwflash-[drivername].so
> 	 *
> 	 * eg  /usr/lib/fwflash/identify/ses.so
> 	 * is the identification plugin for devices attached to
> 	 * the host using the ses(7D) driver.
> 	 */
> 	char *filename;
>
> 	/*
> 	 * The driver name that this plugin will search for in
> 	 * the device tree snapshot using di_drv_first_node(3DEVINFO)
> 	 * and di_drv_next_node(3DEVINFO).
> 	 */
> 	char *drvname; 
>
> 	/*
> 	 * pointer to the actual plugin, so we can access its
> 	 * function entry points
> 	 */
> 	struct fw_plugin *plugin;
>
> 	/* pointer to the next element in the list */	 
> 	TAILQ_ENTRY(pluginlist) nextplugin;
> };
>
>
>
>
>
> We do not mandate a specific filesystem location for firmware images.
>
>
> In order for the system to add a valid flashable device to the list of 
> devices, the TAILQ family of macros from <sys/queue.h> are used. Each
> device is added to the end of the global list using TAILQ_INSERT_TAIL().
>
> Once the global list of valid devices has been built, we use the
> TAILQ_FOREACH() macro to access a specific device record, check whether
> the device matches our criteria (eg, device class, or /devices path), and
> then invoke the desired function entry point.
>
> We initialise the global variables pluginlist and devicelist as follows:
>
>
> TAILQ_HEAD(PLUGINLIST, pluginlist);
> TAILQ_HEAD(DEVICELIST, devicelist);
> struct PLUGINLIST *fw_pluginlist;
> struct DEVICELIST *fw_devices;
>
>
> The TAILQ_HEAD() macros wrap our variable structure (pluginlist, devicelist)
> and transform them into a list. See <sys/queue.h> for more details, or
> the OpenBSD manpage for QUEUE(3) at 
> http://www.openbsd.org/cgi-bin/man.cgi?query=queue&manpath=OpenBSD+Current&format=html
> (CR 6659566 has been logged requesting a Solaris manpage be delivered).
>
>
>
>
>
> Each function entry point should use the defined success or failure
> return codes of
>
> FWFLASH_SUCCESS
> FWFLASH_FAILURE
>
>
>
> Identification mechanisms
> -------------------------
>
>
> For InfiniBand devices, the identification method has not changed, it has
> merely been refactored from the existing code into the new plugin
> architecture.
>
>
> For ses(7D)-attached devices, we walk the devinfo tree (the common code
> holds the devinfo root node pointer as di_node_t rootnode) looking for
> devices attached using this driver. If we find a ses(7D) device, we query
> using a simple uscsi(7I) GET DIAGNOSTIC(6) command to see whether the
> devices supports the Download Microcode Diagnostic Control Page (0x0e).
> If the device supports that page, then we attach the device to the global
> devicelist and continue our search of the device tree. If the device
> does not support that control page then we resume our search through
> the device tree for nodes which are acceptable.
>
>
>
>
>
> Stability classifications
> -------------------------
>
>
> 	/usr/lib/fwflash		Committed
> 	/usr/lib/fwflash/identify	Committed
> 	/usr/lib/fwflash/verify		Committed
> 	
> 	struct fw_plugin		Committed
> 	struct vrfyplugin		Committed
>
> 	struct pluginlist		Committed
> 	struct vpr			Committed
> 	struct fwflash			Committed
> 	struct devicelist		Committed
>
> 	FWFLASH_SUCCESS			Committed
> 	FWFLASH_FAILURE			Committed
>
>
>
>
> Manpage changes
> ---------------
>
>
> An updated manpage reflecting the more generic nature of fwflash(1M) will
> be submitted to the case log. This will mention the as-delivered list of
> supported device identification plugins (presently IB and ses only). The
> manpage will also incorporate instructions on how to provide multiple
> firmware images as command line arguments, as well as the device specifier
> that can be passed with the -d option.
>
>
> The "-l" (list) option retains the same format as PSARC/2005/126, though
> naturally each identification plugin will have its own mandatory information.
>
> The plugin for ses(7D)-attached devices will report device information in
> the following fashion:
>
> +----------------------------------------------------------+
> | # /usr/sbin/fwflash -l                                   |
> | List of available devices:                               |
> | Device[0] /devices/pci@7c0/pci@0/pci@2/scsi@0/ses@4,0:0  |
> |   Class [ses]                                            |
> |         Target port WWN  : 508002000031ad7d              |
> |         Vendor           : LSILOGIC                      |
> |         Product          : SASX36 A.0                    |
> |         Firmware revision: 2020                          |
> |                                                          |
> | Device[1] /devices/pci@7c0/pci@0/pci@2/scsi@0/ses@6,0:0  |
> |   Class [ses]                                            |
> |         Target port WWN  : 50800200006f517d              |
> |         Vendor           : LSILOGIC                      |
> |         Product          : SASX28 A.0                    |
> |         Firmware revision: 2020                          |
> +----------------------------------------------------------+
>
> The above example will be added to the manpage examples section.
>
> An example of multiple image flashing will also be added to the
> manpage.
>
>
>
> References
> ----------
>
> PSARC/2005/126 InfiniBand Flash Update Tool (ibflash)
> PSARC/2002/539 Tavor IB-HCA Driver
>
>
> CR 6616085 fwflash should be generic and pluggable
>
> 6. Resources and Schedule
>     6.4. Steering Committee requested information
>    	6.4.1. Consolidation C-team Name:
> 		ON
>     6.5. ARC review type: FastTrack
>     6.6. ARC Exposure: open
>
>   


-- 
Tzongyu Paul Lee, Tzongyu.Lee@Sun.Com or Paul.Lee@Sun.COM
BJS05 7225, x84343
http://blogs.sun.com/tpaullee/  Feel the Pulses of China
http://tpaullee.blogspot.com/


From Joerg.Schilling@fokus.fraunhofer.de Wed Feb 27 02:47:12 2008
Received: from newsunmail1brm.central.sun.com (newsunmail1brm.Central.Sun.COM [129.147.62.245])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m1RAlCrL007601
	for <psarc-ext@sac.sfbay.sun.com>; Wed, 27 Feb 2008 02:47:12 -0800 (PST)
Received: from nwk-avmta-2.sfbay.sun.com (nwk-avmta-2.SFBay.Sun.COM [129.145.155.6])
	by newsunmail1brm.central.sun.com (8.13.7+Sun/8.13.7/ENSMAIL,v2.2) with ESMTP id m1RAl8r3050871;
	Wed, 27 Feb 2008 03:47:10 -0700 (MST)
Received: from pmxchannel-daemon.nwk-avmta-2.sfbay.sun.com by
 nwk-avmta-2.sfbay.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0JWW00I0F8MLWG00@nwk-avmta-2.sfbay.sun.com>; Wed,
 27 Feb 2008 02:47:09 -0800 (PST)
Received: from sca-ea-mail-4.sun.com ([192.18.43.22])
 by nwk-avmta-2.sfbay.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0JWW0072D8MLFEF0@nwk-avmta-2.sfbay.sun.com>; Wed,
 27 Feb 2008 02:47:09 -0800 (PST)
Received: from relay42i.sun.com ([192.5.209.72])
	by sca-ea-mail-4.sun.com (8.13.6+Sun/8.12.9) with ESMTP id m1RAkVUs005373;
 Wed, 27 Feb 2008 10:47:08 +0000 (GMT)
Received: from mms49es.sun.com ([160.41.221.233] [160.41.221.233])
 by relay42i.sun.com with ESMTP id BT-MMP-257554; Wed,
 27 Feb 2008 10:47:08 +0000 (Z)
Received: from relay41i.sun.com (relay41i.sun.com [192.5.209.70])
 by mms49es.sun.com with ESMTP id BT-MMP-770205; Wed,
 27 Feb 2008 10:47:08 +0000 (Z)
Received: from mailgw10.noc.fraunhofer.de ([153.96.1.28] [153.96.1.28])
 by relay4i.sun.com with ESMTP id BT-MMP-639327; Wed,
 27 Feb 2008 10:47:07 +0000 (Z)
Received: from mailgw10.noc.fraunhofer.de (localhost [127.0.0.1])
	by mailgw10.noc.fraunhofer.de (8.13.5+/8.13.4) with ESMTP id m1RAjQag026983;
 Wed, 27 Feb 2008 11:45:26 +0100 (CET)
Received: from pluto.fokus.fraunhofer.de
 (pluto.fokus.fraunhofer.de [195.37.77.164])	by mailgw10.noc.fraunhofer.de
 (8.13.5+/8.13.4) with ESMTP id m1RAjL7M026818
	(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed,
 27 Feb 2008 11:45:24 +0100 (CET)
Received: from EXCHSRV.fokus.fraunhofer.de (bohr [10.147.9.231])
	by pluto.fokus.fraunhofer.de (8.13.7/8.13.7) with SMTP id m1RAjK6P027165; Wed,
 27 Feb 2008 11:45:20 +0100 (MET)
Received: from rigel ([10.147.65.195]) by EXCHSRV.fokus.fraunhofer.de with
 Microsoft SMTPSVC(6.0.3790.3959); Wed, 27 Feb 2008 11:45:22 +0100
Date: Wed, 27 Feb 2008 11:45:20 +0100
From: Joerg.Schilling@fokus.fraunhofer.de (Joerg Schilling)
Subject: Re: Pluggable fwflash(1M) [PSARC/2008/151 FastTrack timeout 03/04/2008]
In-reply-to: <47C4CACB.7040603@Sun.COM>
To: Tzongyu.Lee@sun.com, PSARC-ext@sun.com
Message-id: <47c53f40.pkIsWV1+U/qbHClp%Joerg.Schilling@fokus.fraunhofer.de>
MIME-version: 1.0
Content-type: text/plain; charset=ISO-8859-1
Content-transfer-encoding: 8BIT
X-PMX-Version: 5.2.0.264296
X-Brightmail-Tracker: AAAAAA==
X-Fraunhofer-Email-Policy: accepted
X-Antispam: No, score=-0.7/5.0, scanned in 0.105sec at (localhost [127.0.0.1])
	by smf-spamd v1.3.1 - http://smfs.sf.net/
References: <200802260924.m1Q9Oeor020180@sac.sfbay.sun.com>
 <47C4CACB.7040603@Sun.COM>
User-Agent: nail 11.22 3/20/05
X-OriginalArrivalTime: 27 Feb 2008 10:45:22.0116 (UTC)
 FILETIME=[DA308040:01C8792D]
Status: RO
Content-Length: 1089

Tzongyu Paul Lee <Tzongyu.Lee@sun.com> wrote:

> (Forgot to attach the header/intro portion for the case..)
>
> I am sponsoring this fast-track for James C. McPherson.
> Requested release binding is patch, and the timer is set to
> 03/04/2008.
>
> T.Paul
> -------
>
> Tzongyu Paul Lee ????:
> > Template Version: @(#)sac_nextcase 1.64 07/13/07 SMI
> > This information is Copyright 2008 Sun Microsystems
> > 1. Introduction
> >     1.1. Project/Component Working Name:
> > 	 Pluggable fwflash(1M)
> >     1.2. Name of Document Author/Supplier:
> > 	 Author:  James McPherson
> >     1.3  Date of This Document:
> > 	26 February, 2008
> > 4. Technical Description
> >

That is the reason for trying to use a generic name for a utility that
only works with a limited subset of SCSI devices?

J鰎g

-- 
 EMail:joerg@schily.isdn.cs.tu-berlin.de (home) J鰎g Schilling D-13353 Berlin
       js@cs.tu-berlin.de                (uni)  
       schilling@fokus.fraunhofer.de     (work) Blog: http://schily.blogspot.com/
 URL:  http://cdrecord.berlios.de/old/private/ ftp://ftp.berlios.de/pub/schily

From James.McPherson@sun.com Wed Feb 27 03:24:35 2008
Received: from sunmail4.singapore.sun.com (sunmail4.Singapore.Sun.COM [129.158.71.19])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m1RBOYZe008058
	for <psarc-ext@sac.sfbay.Sun.COM>; Wed, 27 Feb 2008 03:24:34 -0800 (PST)
Received: from brm-avmta-1.central.sun.com (brm-avmta-1.Central.Sun.COM [129.147.4.11])
	by sunmail4.singapore.sun.com (8.13.4+Sun/8.13.3/ENSMAIL,v2.2) with ESMTP id m1RBONmn012307
	for <@sunmail2sca.sfbay.sun.com:PSARC-ext@sun.com>; Wed, 27 Feb 2008 19:24:33 +0800 (SGT)
Received: from pmxchannel-daemon.brm-avmta-1.central.sun.com by
 brm-avmta-1.central.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0JWW00L05ACX9W00@brm-avmta-1.central.sun.com> for PSARC-ext@sun.com
 (ORCPT PSARC-ext@sun.com); Wed, 27 Feb 2008 04:24:33 -0700 (MST)
Received: from sineb-mail-2.sun.com ([192.18.19.7])
 by brm-avmta-1.central.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0JWW00HGDACT3C20@brm-avmta-1.central.sun.com> for
 PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Wed,
 27 Feb 2008 04:24:32 -0700 (MST)
Received: from fe-apac-06.sun.com
 (fe-apac-06.sun.com [192.18.19.177] (may be forged))
	by sineb-mail-2.sun.com (8.13.6+Sun/8.12.9) with ESMTP id m1RBOhC3007068	for
 <PSARC-ext@sun.com>; Wed, 27 Feb 2008 11:24:43 +0000 (GMT)
Received: from conversion-daemon.mail-apac.sun.com by mail-apac.sun.com
 (Sun Java System Messaging Server 6.2-6.01 (built Apr  3 2006))
 id <0JWW00G01A7TCB00@mail-apac.sun.com>
 (original mail from James.McPherson@Sun.COM)
 for PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Wed,
 27 Feb 2008 19:24:29 +0800 (SGT)
Received: from knockout ([10.7.251.162])
 by mail-apac.sun.com (Sun Java System Messaging Server 6.2-6.01 (built Apr  3
 2006)) with ESMTPSA id <0JWW00B04ACKMF24@mail-apac.sun.com> for
 PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Wed,
 27 Feb 2008 19:24:29 +0800 (SGT)
Date: Wed, 27 Feb 2008 21:24:16 +1000
From: "James C. McPherson" <James.McPherson@sun.com>
Subject: Re: Pluggable fwflash(1M) [PSARC/2008/151 FastTrack timeout 03/04/2008]
In-reply-to: <47c53f40.pkIsWV1+U/qbHClp%Joerg.Schilling@fokus.fraunhofer.de>
Sender: James.McPherson@sun.com
To: Joerg.Schilling@fokus.fraunhofer.de (Joerg Schilling)
Cc: Tzongyu.Lee@sun.com, PSARC-ext@sun.com
Message-id: <20080227212416.000066fe@knockout>
Organization: Sun Microsystems
MIME-version: 1.0
X-Mailer: Claws Mail 3.3.0-csw (GTK+ 2.12.3; i386-pc-solaris2.8)
Content-type: text/plain; charset=US-ASCII
Content-transfer-encoding: 7BIT
X-PMX-Version: 5.2.0.264296
References: <200802260924.m1Q9Oeor020180@sac.sfbay.sun.com>
 <47C4CACB.7040603@Sun.COM>
 <47c53f40.pkIsWV1+U/qbHClp%Joerg.Schilling@fokus.fraunhofer.de>
Status: RO
Content-Length: 1128

On Wed, 27 Feb 2008 11:45:20 +0100
Joerg.Schilling@fokus.fraunhofer.de (Joerg Schilling) wrote:

> Tzongyu Paul Lee <Tzongyu.Lee@sun.com> wrote:
> 
> > (Forgot to attach the header/intro portion for the case..)
> >
> > I am sponsoring this fast-track for James C. McPherson.
> > Requested release binding is patch, and the timer is set to
> > 03/04/2008.
> >
> > T.Paul
> > -------
> >
> > Tzongyu Paul Lee ????:
> > > Template Version: @(#)sac_nextcase 1.64 07/13/07 SMI
> > > This information is Copyright 2008 Sun Microsystems
> > > 1. Introduction
> > >     1.1. Project/Component Working Name:
> > > 	 Pluggable fwflash(1M)
> > >     1.2. Name of Document Author/Supplier:
> > > 	 Author:  James McPherson
> > >     1.3  Date of This Document:
> > > 	26 February, 2008
> > > 4. Technical Description
> > >
> 
> That is the reason for trying to use a generic name for a utility that
> only works with a limited subset of SCSI devices?


Hi Joerg,
I don't understand your question.

 
James C. McPherson
--
Senior Kernel Software Engineer, Solaris
Sun Microsystems
http://blogs.sun.com/jmcp	http://www.jmcp.homeunix.com/blog

From Joerg.Schilling@fokus.fraunhofer.de Wed Feb 27 03:39:21 2008
Received: from sunmail5.uk.sun.com (sunmail5.UK.Sun.COM [129.156.85.165])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m1RBdKT1008139
	for <psarc-ext@sac.sfbay.sun.com>; Wed, 27 Feb 2008 03:39:20 -0800 (PST)
Received: from nwk-avmta-2.sfbay.sun.com (nwk-avmta-2.SFBay.Sun.COM [129.145.155.6])
	by sunmail5.uk.sun.com (8.13.8+Sun/8.13.8/ENSMAIL,v2.2) with ESMTP id m1RBdAkD022542;
	Wed, 27 Feb 2008 11:39:15 GMT
Received: from pmxchannel-daemon.nwk-avmta-2.sfbay.sun.com by
 nwk-avmta-2.sfbay.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0JWW00L0VB1C1N00@nwk-avmta-2.sfbay.sun.com>; Wed,
 27 Feb 2008 03:39:12 -0800 (PST)
Received: from sca-ea-mail-1.sun.com ([192.18.43.24])
 by nwk-avmta-2.sfbay.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0JWW00K6EB1B3X10@nwk-avmta-2.sfbay.sun.com>; Wed,
 27 Feb 2008 03:39:11 -0800 (PST)
Received: from relay42i.sun.com ([192.5.209.72])
	by sca-ea-mail-1.sun.com (8.13.7+Sun/8.12.9) with ESMTP id m1RBdAZa023834;
 Wed, 27 Feb 2008 11:39:10 +0000 (GMT)
Received: from mms49es.sun.com ([160.41.221.233] [160.41.221.233])
 by relay42i.sun.com with ESMTP id BT-MMP-263931; Wed,
 27 Feb 2008 11:39:10 +0000 (Z)
Received: from relay42i.sun.com (relay42i.sun.com [192.5.209.72])
 by mms49es.sun.com with ESMTP id BT-MMP-1003323; Wed,
 27 Feb 2008 11:39:10 +0000 (Z)
Received: from mailgw2-out.fraunhofer.de ([153.96.1.28] [153.96.1.28])
 by relay4i.sun.com with ESMTP id BT-MMP-5853123; Wed,
 27 Feb 2008 11:39:09 +0000 (Z)
Received: from mailgw23.noc.fraunhofer.de (localhost [127.0.0.1])
	by mailgw2-out.fraunhofer.de[host mailgw23] (8.14.2+/8.14.2)
 with ESMTP id m1RBcIb9018242; Wed, 27 Feb 2008 12:38:18 +0100 (CET)
Received: from pluto.fokus.fraunhofer.de
 (pluto.fokus.fraunhofer.de [195.37.77.164])	by mailgw23.noc.fraunhofer.de
 (8.14.2+/8.14.2) with ESMTP id m1RBcHK7018204
	(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed,
 27 Feb 2008 12:38:17 +0100 (CET)
Received: from EXCHSRV.fokus.fraunhofer.de (bohr [10.147.9.231])
	by pluto.fokus.fraunhofer.de (8.13.7/8.13.7) with SMTP id m1RBcHJ9001028; Wed,
 27 Feb 2008 12:38:17 +0100 (MET)
Received: from rigel ([10.147.65.195]) by EXCHSRV.fokus.fraunhofer.de with
 Microsoft SMTPSVC(6.0.3790.3959); Wed, 27 Feb 2008 12:38:18 +0100
Date: Wed, 27 Feb 2008 12:38:16 +0100
From: Joerg.Schilling@fokus.fraunhofer.de (Joerg Schilling)
Subject: Re: Pluggable fwflash(1M) [PSARC/2008/151 FastTrack timeout 03/04/2008]
In-reply-to: <20080227212416.000066fe@knockout>
To: James.McPherson@sun.com
Cc: Tzongyu.Lee@sun.com, PSARC-ext@sun.com
Message-id: <47c54ba8.48Kl0Iu3n6APM+tg%Joerg.Schilling@fokus.fraunhofer.de>
MIME-version: 1.0
Content-type: text/plain; charset=ISO-8859-1
Content-transfer-encoding: 8BIT
X-PMX-Version: 5.2.0.264296
X-Brightmail-Tracker: AAAAAA==
X-Fraunhofer-Email-Policy: accepted
X-Antispam: No, score=0.0/5.0, scanned in 0.068sec at (localhost [127.0.0.1])
	by smf-spamd v1.3.1 - http://smfs.sf.net/
References: <200802260924.m1Q9Oeor020180@sac.sfbay.sun.com>
 <47C4CACB.7040603@Sun.COM>
 <47c53f40.pkIsWV1+U/qbHClp%Joerg.Schilling@fokus.fraunhofer.de>
 <20080227212416.000066fe@knockout>
X-Authentication-warning: mailgw23.noc.fraunhofer.de: Host localhost
 [127.0.0.1] claimed to be mailgw23.noc.fraunhofer.de
User-Agent: nail 11.22 3/20/05
X-OriginalArrivalTime: 27 Feb 2008 11:38:18.0905 (UTC)
 FILETIME=[3FB40890:01C87935]
Status: RO
Content-Length: 709

"James C. McPherson" <James.McPherson@Sun.COM> wrote:

> > That is the reason for trying to use a generic name for a utility that
> > only works with a limited subset of SCSI devices?
>
>
> Hi Joerg,
> I don't understand your question.

If you would be able to do a firmware upgrade with various CD/DVD writers, 
I would see no problem with using a generic name. Otherwise, please a more 
descriptive name.

J鰎g

-- 
 EMail:joerg@schily.isdn.cs.tu-berlin.de (home) J鰎g Schilling D-13353 Berlin
       js@cs.tu-berlin.de                (uni)  
       schilling@fokus.fraunhofer.de     (work) Blog: http://schily.blogspot.com/
 URL:  http://cdrecord.berlios.de/old/private/ ftp://ftp.berlios.de/pub/schily
.,

From James.McPherson@sun.com Wed Feb 27 03:47:06 2008
Received: from newsunmail1brm.central.sun.com (newsunmail1brm.Central.Sun.COM [129.147.62.245])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m1RBl6Wp008239
	for <psarc-ext@sac.sfbay.sun.com>; Wed, 27 Feb 2008 03:47:06 -0800 (PST)
Received: from nwk-avmta-1.SFBay.Sun.COM (nwk-avmta-1.SFBay.Sun.COM [129.146.11.74])
	by newsunmail1brm.central.sun.com (8.13.7+Sun/8.13.7/ENSMAIL,v2.2) with ESMTP id m1RBl5s5065047
	for <@sunmail2sca.sfbay.sun.com:psarc-ext@sun.com>; Wed, 27 Feb 2008 04:47:06 -0700 (MST)
Received: from pmxchannel-daemon.nwk-avmta-1.sfbay.Sun.COM by
 nwk-avmta-1.sfbay.Sun.COM
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0JWW00K1BBEF2O00@nwk-avmta-1.sfbay.Sun.COM> for psarc-ext@sun.com
 (ORCPT psarc-ext@sun.com); Wed, 27 Feb 2008 03:47:03 -0800 (PST)
Received: from sineb-mail-1.sun.com ([192.18.19.6])
 by nwk-avmta-1.sfbay.Sun.COM
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0JWW000R4BED2YA0@nwk-avmta-1.sfbay.Sun.COM> for
 psarc-ext@sun.com (ORCPT psarc-ext@sun.com); Wed,
 27 Feb 2008 03:47:02 -0800 (PST)
Received: from fe-apac-05.sun.com
 (fe-apac-05.sun.com [192.18.19.176] (may be forged))
	by sineb-mail-1.sun.com (8.13.6+Sun/8.12.9) with ESMTP id m1RBl6Wb006394	for
 <psarc-ext@sun.com>; Wed, 27 Feb 2008 11:47:06 +0000 (GMT)
Received: from conversion-daemon.mail-apac.sun.com by mail-apac.sun.com
 (Sun Java System Messaging Server 6.2-6.01 (built Apr  3 2006))
 id <0JWW00H01BAS0S00@mail-apac.sun.com>
 (original mail from James.McPherson@Sun.COM)
 for psarc-ext@sun.com (ORCPT psarc-ext@sun.com); Wed,
 27 Feb 2008 19:47:00 +0800 (SGT)
Received: from knockout ([10.7.251.162])
 by mail-apac.sun.com (Sun Java System Messaging Server 6.2-6.01 (built Apr  3
 2006)) with ESMTPSA id <0JWW006K0BE8KK43@mail-apac.sun.com> for
 psarc-ext@sun.com (ORCPT psarc-ext@sun.com); Wed,
 27 Feb 2008 19:47:00 +0800 (SGT)
Date: Wed, 27 Feb 2008 21:46:57 +1000
From: "James C. McPherson" <James.McPherson@sun.com>
Subject: Re: Pluggable fwflash(1M) [PSARC/2008/151 FastTrack timeout 03/04/2008]
In-reply-to: <47c54ba8.48Kl0Iu3n6APM+tg%Joerg.Schilling@fokus.fraunhofer.de>
Sender: James.McPherson@sun.com
To: Joerg.Schilling@fokus.fraunhofer.de (Joerg Schilling)
Cc: Tzongyu.Lee@sun.com, PSARC-ext@sun.com
Message-id: <20080227214657.000036c6@knockout>
Organization: Sun Microsystems
MIME-version: 1.0
X-Mailer: Claws Mail 3.3.0-csw (GTK+ 2.12.3; i386-pc-solaris2.8)
Content-type: text/plain; charset=US-ASCII
Content-transfer-encoding: 7BIT
X-PMX-Version: 5.2.0.264296
References: <200802260924.m1Q9Oeor020180@sac.sfbay.sun.com>
 <47C4CACB.7040603@Sun.COM>
 <47c53f40.pkIsWV1+U/qbHClp%Joerg.Schilling@fokus.fraunhofer.de>
 <20080227212416.000066fe@knockout>
 <47c54ba8.48Kl0Iu3n6APM+tg%Joerg.Schilling@fokus.fraunhofer.de>
Status: RO
Content-Length: 1134

On Wed, 27 Feb 2008 12:38:16 +0100
Joerg.Schilling@fokus.fraunhofer.de (Joerg Schilling) wrote:

> "James C. McPherson" <James.McPherson@Sun.COM> wrote:
> 
> > > That is the reason for trying to use a generic name for a utility
> > > that only works with a limited subset of SCSI devices?
> >
> >
> > Hi Joerg,
> > I don't understand your question.
> 
> If you would be able to do a firmware upgrade with various CD/DVD
> writers, I would see no problem with using a generic name. Otherwise,
> please a more descriptive name.

Part of the point in being pluggable is genericity.

The architecture which I am proposing is generic enough
to support flashing HBA firmware as well as direct-attach
devices such as disks, CD/DVD-ROM and tape drives. 

The name "fwflash" was suggested by PSARC in an earlier
case and agreed to by that particular project team. 

In your opinion, which aspect of the name "fwflash" is
not descriptive enough, and what do you suggest we call
this utility instead?


 
James C. McPherson
--
Senior Kernel Software Engineer, Solaris
Sun Microsystems
http://blogs.sun.com/jmcp	http://www.jmcp.homeunix.com/blog

From Darren.Moffat@sun.com Wed Feb 27 03:54:06 2008
Received: from sunmail4.singapore.sun.com (sunmail4.Singapore.Sun.COM [129.158.71.19])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m1RBs53P008434
	for <psarc-ext@sac.sfbay.Sun.COM>; Wed, 27 Feb 2008 03:54:06 -0800 (PST)
Received: from nwk-avmta-2.sfbay.sun.com (nwk-avmta-2.SFBay.Sun.COM [129.145.155.6])
	by sunmail4.singapore.sun.com (8.13.4+Sun/8.13.3/ENSMAIL,v2.2) with ESMTP id m1RBrtca024080
	for <@sunmail2sca.sfbay.sun.com:psarc-ext@sun.com>; Wed, 27 Feb 2008 19:54:05 +0800 (SGT)
Received: from pmxchannel-daemon.nwk-avmta-2.sfbay.sun.com by
 nwk-avmta-2.sfbay.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0JWW00M0RBQ41300@nwk-avmta-2.sfbay.sun.com> for psarc-ext@sun.com
 (ORCPT psarc-ext@sun.com); Wed, 27 Feb 2008 03:54:04 -0800 (PST)
Received: from gmp-eb-mail-2.sun.com ([192.18.6.24])
 by nwk-avmta-2.sfbay.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0JWW00KWTBQ34610@nwk-avmta-2.sfbay.sun.com> for
 psarc-ext@sun.com (ORCPT psarc-ext@sun.com); Wed,
 27 Feb 2008 03:54:04 -0800 (PST)
Received: from fe-emea-10.sun.com (gmp-eb-lb-2-fe2.eu.sun.com [192.18.6.11])
	by gmp-eb-mail-2.sun.com (8.13.7+Sun/8.12.9) with ESMTP id m1RBs3tw011690	for
 <psarc-ext@sun.com>; Wed, 27 Feb 2008 11:54:03 +0000 (GMT)
Received: from conversion-daemon.fe-emea-10.sun.com by fe-emea-10.sun.com
 (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007))
 id <0JWW00B01B8RPG00@fe-emea-10.sun.com>
 (original mail from Darren.Moffat@Sun.COM)
 for psarc-ext@sun.com (ORCPT psarc-ext@sun.com); Wed,
 27 Feb 2008 11:54:02 +0000 (GMT)
Received: from [129.156.173.199] by fe-emea-10.sun.com
 (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007))
 with ESMTPSA id <0JWW009BFBPQ2410@fe-emea-10.sun.com> for psarc-ext@sun.com
 (ORCPT psarc-ext@sun.com); Wed, 27 Feb 2008 11:53:51 +0000 (GMT)
Date: Wed, 27 Feb 2008 11:53:50 +0000
From: Darren J Moffat <Darren.Moffat@sun.com>
Subject: Re: Pluggable fwflash(1M) [PSARC/2008/151 FastTrack timeout 03/04/2008]
In-reply-to: <47c53f40.pkIsWV1+U/qbHClp%Joerg.Schilling@fokus.fraunhofer.de>
Sender: Darren.Moffat@sun.com
To: Joerg Schilling <Joerg.Schilling@fokus.fraunhofer.de>
Cc: Tzongyu.Lee@sun.com, psarc-ext@sun.com
Message-id: <47C54F4E.3030508@Sun.COM>
MIME-version: 1.0
Content-type: text/plain; format=flowed; charset=ISO-8859-1
Content-transfer-encoding: 7BIT
X-PMX-Version: 5.2.0.264296
References: <200802260924.m1Q9Oeor020180@sac.sfbay.sun.com>
 <47C4CACB.7040603@Sun.COM>
 <47c53f40.pkIsWV1+U/qbHClp%Joerg.Schilling@fokus.fraunhofer.de>
User-Agent: Thunderbird 2.0.0.9 (X11/20080116)
Status: RO
Content-Length: 1580

Joerg Schilling wrote:
> That is the reason for trying to use a generic name for a utility that
> only works with a limited subset of SCSI devices?

The goal of the project is to allow this to be used by things other than 
SCSI.

Quoting from the case material:

"This fasttrack addresses that request and in the process extends 
fwflash(1M) to also provide a generic, pluggable interface for other 
devices for which a firmware update mechanism might be required in the 
future."

The keywords here are "generic" and "other devices".

Then later on in the material:

"The existing InfiniBand functionality will be re-factored to work 
within the proposed plugin framework."

So not only does the case provide a framework for use by things other 
than SCSI it actually mentions an non SCSI consumer.

What is it about the above that isn't clear and makes you think that 
fwflash(1M) applies only to a subset of SCSI ?

I should also point out that the case material also says that 
/usr/sbin/fwflash already exits and was approved and introduced by 
PSARC/2005/126.

So if anything I believe this case is actually the one that addresses 
your concern that fwflash is a generic name and your issue would have 
been relevant to PSARC/2005/126.  2005/126 was originally proposed as 
ibflash(1M) because it was to be relevant only for InfiniBand, however 
the then PSARC committee asked the project to to prepare for having a 
generic interface for firmware flashing and rename it to fwflash(1M), 
*this* case (2008/151) is that future one that makes it generic.

-- 
Darren J Moffat

From Darren.Moffat@sun.com Wed Feb 27 03:58:12 2008
Received: from newsunmail1brm.central.sun.com (newsunmail1brm.Central.Sun.COM [129.147.62.245])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m1RBwBrZ008572
	for <psarc-ext@sac.sfbay.sun.com>; Wed, 27 Feb 2008 03:58:12 -0800 (PST)
Received: from nwk-avmta-2.sfbay.sun.com (nwk-avmta-2.SFBay.Sun.COM [129.145.155.6])
	by newsunmail1brm.central.sun.com (8.13.7+Sun/8.13.7/ENSMAIL,v2.2) with ESMTP id m1RBw9UF001846
	for <@sunmail2sca.sfbay.sun.com:PSARC-ext@sun.com>; Wed, 27 Feb 2008 04:58:11 -0700 (MST)
Received: from pmxchannel-daemon.nwk-avmta-2.sfbay.sun.com by
 nwk-avmta-2.sfbay.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0JWW00M0FBWZ7400@nwk-avmta-2.sfbay.sun.com> for PSARC-ext@sun.com
 (ORCPT PSARC-ext@sun.com); Wed, 27 Feb 2008 03:58:11 -0800 (PST)
Received: from gmp-eb-inf-1.sun.com ([192.18.6.21])
 by nwk-avmta-2.sfbay.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0JWW00KI3BWX3S20@nwk-avmta-2.sfbay.sun.com> for
 PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Wed,
 27 Feb 2008 03:58:10 -0800 (PST)
Received: from fe-emea-10.sun.com (gmp-eb-lb-2-fe1.eu.sun.com [192.18.6.10])
	by gmp-eb-inf-1.sun.com (8.13.7+Sun/8.12.9) with ESMTP id m1RBw9ch008735	for
 <PSARC-ext@sun.com>; Wed, 27 Feb 2008 11:58:09 +0000 (GMT)
Received: from conversion-daemon.fe-emea-10.sun.com by fe-emea-10.sun.com
 (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007))
 id <0JWW00301BPMIQ00@fe-emea-10.sun.com>
 (original mail from Darren.Moffat@Sun.COM)
 for PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Wed,
 27 Feb 2008 11:58:09 +0000 (GMT)
Received: from [129.156.173.199] by fe-emea-10.sun.com
 (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007))
 with ESMTPSA id <0JWW009BQBWR2410@fe-emea-10.sun.com> for PSARC-ext@sun.com
 (ORCPT PSARC-ext@sun.com); Wed, 27 Feb 2008 11:58:04 +0000 (GMT)
Date: Wed, 27 Feb 2008 11:58:03 +0000
From: Darren J Moffat <Darren.Moffat@sun.com>
Subject: Re: Pluggable fwflash(1M) [PSARC/2008/151 FastTrack timeout	03/04/2008]
In-reply-to: <47c54ba8.48Kl0Iu3n6APM+tg%Joerg.Schilling@fokus.fraunhofer.de>
Sender: Darren.Moffat@sun.com
To: Joerg Schilling <Joerg.Schilling@fokus.fraunhofer.de>
Cc: James.McPherson@sun.com, PSARC-ext@sun.com, Tzongyu.Lee@sun.com
Message-id: <47C5504B.5060705@Sun.COM>
MIME-version: 1.0
Content-type: text/plain; format=flowed; charset=ISO-8859-1
Content-transfer-encoding: 7BIT
X-PMX-Version: 5.2.0.264296
References: <200802260924.m1Q9Oeor020180@sac.sfbay.sun.com>
 <47C4CACB.7040603@Sun.COM>
 <47c53f40.pkIsWV1+U/qbHClp%Joerg.Schilling@fokus.fraunhofer.de>
 <20080227212416.000066fe@knockout>
 <47c54ba8.48Kl0Iu3n6APM+tg%Joerg.Schilling@fokus.fraunhofer.de>
User-Agent: Thunderbird 2.0.0.9 (X11/20080116)
Status: RO
Content-Length: 883

Joerg Schilling wrote:
> "James C. McPherson" <James.McPherson@Sun.COM> wrote:
> 
>>> That is the reason for trying to use a generic name for a utility that
>>> only works with a limited subset of SCSI devices?
>>
>> Hi Joerg,
>> I don't understand your question.
> 
> If you would be able to do a firmware upgrade with various CD/DVD writers, 
> I would see no problem with using a generic name. Otherwise, please a more 
> descriptive name.

The whole point of this case is that it provides "Pluggable" framework 
to allow that to be done.  Hence the project name "Pluggable fwflash".

This case doesn't have to provide that functionality.  If you or someone 
else wishes to use the functionality that this case provides to do 
firmware flashing for CD/DVD writers then please submit a followon case 
that uses the plugin interfaces that this case provides.



-- 
Darren J Moffat

From Darren.Moffat@sun.com Wed Feb 27 04:01:06 2008
Received: from sunmail5.uk.sun.com (sunmail5.UK.Sun.COM [129.156.85.165])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m1RC156W008704
	for <psarc-ext@sac.sfbay.sun.com>; Wed, 27 Feb 2008 04:01:06 -0800 (PST)
Received: from brm-avmta-1.central.sun.com (brm-avmta-1.Central.Sun.COM [129.147.4.11])
	by sunmail5.uk.sun.com (8.13.8+Sun/8.13.8/ENSMAIL,v2.2) with ESMTP id m1RC12XW001390
	for <@sunmail2sca.sfbay.sun.com:psarc-ext@sun.com>; Wed, 27 Feb 2008 12:01:05 GMT
Received: from pmxchannel-daemon.brm-avmta-1.central.sun.com by
 brm-avmta-1.central.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0JWW00129C1QAA00@brm-avmta-1.central.sun.com> for psarc-ext@sun.com
 (ORCPT psarc-ext@sun.com); Wed, 27 Feb 2008 05:01:02 -0700 (MST)
Received: from gmp-eb-inf-1.sun.com ([192.18.6.21])
 by brm-avmta-1.central.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0JWW00HXBC1P3B30@brm-avmta-1.central.sun.com> for
 psarc-ext@sun.com (ORCPT psarc-ext@sun.com); Wed,
 27 Feb 2008 05:01:02 -0700 (MST)
Received: from fe-emea-09.sun.com (gmp-eb-lb-2-fe1.eu.sun.com [192.18.6.10])
	by gmp-eb-inf-1.sun.com (8.13.7+Sun/8.12.9) with ESMTP id m1RC11cL009127	for
 <psarc-ext@sun.com>; Wed, 27 Feb 2008 12:01:01 +0000 (GMT)
Received: from conversion-daemon.fe-emea-09.sun.com by fe-emea-09.sun.com
 (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007))
 id <0JWW00701BSQFY00@fe-emea-09.sun.com>
 (original mail from Darren.Moffat@Sun.COM)
 for psarc-ext@sun.com (ORCPT psarc-ext@sun.com); Wed,
 27 Feb 2008 12:01:01 +0000 (GMT)
Received: from [129.156.173.199] by fe-emea-09.sun.com
 (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007))
 with ESMTPSA id <0JWW006A8C08HH10@fe-emea-09.sun.com> for psarc-ext@sun.com
 (ORCPT psarc-ext@sun.com); Wed, 27 Feb 2008 12:00:08 +0000 (GMT)
Date: Wed, 27 Feb 2008 12:00:08 +0000
From: Darren J Moffat <Darren.Moffat@sun.com>
Subject: Re: Pluggable fwflash(1M) [PSARC/2008/151 FastTrack timeout	03/04/2008]
In-reply-to: <20080227214657.000036c6@knockout>
Sender: Darren.Moffat@sun.com
To: "James C. McPherson" <James.McPherson@sun.com>
Cc: Joerg Schilling <Joerg.Schilling@fokus.fraunhofer.de>, psarc-ext@sun.com,
        Tzongyu.Lee@sun.com
Message-id: <47C550C8.5040802@Sun.COM>
MIME-version: 1.0
Content-type: text/plain; format=flowed; charset=ISO-8859-1
Content-transfer-encoding: 7BIT
X-PMX-Version: 5.2.0.264296
References: <200802260924.m1Q9Oeor020180@sac.sfbay.sun.com>
 <47C4CACB.7040603@Sun.COM>
 <47c53f40.pkIsWV1+U/qbHClp%Joerg.Schilling@fokus.fraunhofer.de>
 <20080227212416.000066fe@knockout>
 <47c54ba8.48Kl0Iu3n6APM+tg%Joerg.Schilling@fokus.fraunhofer.de>
 <20080227214657.000036c6@knockout>
User-Agent: Thunderbird 2.0.0.9 (X11/20080116)
Status: RO
Content-Length: 580

James C. McPherson wrote:
> The name "fwflash" was suggested by PSARC in an earlier
> case and agreed to by that particular project team. 
> 
> In your opinion, which aspect of the name "fwflash" is
> not descriptive enough, and what do you suggest we call
> this utility instead?

I don't see changing the name of the already existing fwflash command is 
in scope for this project.  fwflash(1M) was declared as Stable in 
2005/126 which makes it Committed in the new taxonomy.  This case needs 
"patch" release binding so changing the name is not an option.

-- 
Darren J Moffat

From James.McPherson@sun.com Wed Feb 27 04:13:29 2008
Received: from sunmail5.uk.sun.com (sunmail5.UK.Sun.COM [129.156.85.165])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m1RCDSjF009770
	for <psarc-ext@sac.sfbay.sun.com>; Wed, 27 Feb 2008 04:13:29 -0800 (PST)
Received: from nwk-avmta-2.sfbay.sun.com (nwk-avmta-2.SFBay.Sun.COM [129.145.155.6])
	by sunmail5.uk.sun.com (8.13.8+Sun/8.13.8/ENSMAIL,v2.2) with ESMTP id m1RCDDkQ007096
	for <@sunmail2sca.sfbay.sun.com:psarc-ext@sun.com>; Wed, 27 Feb 2008 12:13:27 GMT
Received: from pmxchannel-daemon.nwk-avmta-2.sfbay.sun.com by
 nwk-avmta-2.sfbay.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0JWW00M0TCMCSG00@nwk-avmta-2.sfbay.sun.com> for psarc-ext@sun.com
 (ORCPT psarc-ext@sun.com); Wed, 27 Feb 2008 04:13:24 -0800 (PST)
Received: from sineb-mail-2.sun.com ([192.18.19.7])
 by nwk-avmta-2.sfbay.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0JWW00K27CMB3T20@nwk-avmta-2.sfbay.sun.com> for
 psarc-ext@sun.com (ORCPT psarc-ext@sun.com); Wed,
 27 Feb 2008 04:13:24 -0800 (PST)
Received: from fe-apac-01.sun.com
 (fe-apac-01.sun.com [192.18.19.172] (may be forged))
	by sineb-mail-2.sun.com (8.13.6+Sun/8.12.9) with ESMTP id m1RCDaJv008762	for
 <psarc-ext@sun.com>; Wed, 27 Feb 2008 12:13:36 +0000 (GMT)
Received: from conversion-daemon.mail-apac.sun.com by mail-apac.sun.com
 (Sun Java System Messaging Server 6.2-6.01 (built Apr  3 2006))
 id <0JWW00601BSML400@mail-apac.sun.com>
 (original mail from James.McPherson@Sun.COM)
 for psarc-ext@sun.com (ORCPT psarc-ext@sun.com); Wed,
 27 Feb 2008 20:13:22 +0800 (SGT)
Received: from knockout ([10.7.251.162])
 by mail-apac.sun.com (Sun Java System Messaging Server 6.2-6.01 (built Apr  3
 2006)) with ESMTPSA id <0JWW008M1CM5FBR1@mail-apac.sun.com> for
 psarc-ext@sun.com (ORCPT psarc-ext@sun.com); Wed,
 27 Feb 2008 20:13:22 +0800 (SGT)
Date: Wed, 27 Feb 2008 22:13:18 +1000
From: "James C. McPherson" <James.McPherson@sun.com>
Subject: Re: Pluggable fwflash(1M) [PSARC/2008/151 FastTrack timeout 03/04/2008]
In-reply-to: <47C550C8.5040802@Sun.COM>
Sender: James.McPherson@sun.com
To: Darren J Moffat <Darren.Moffat@sun.com>
Cc: Joerg Schilling <Joerg.Schilling@fokus.fraunhofer.de>, psarc-ext@sun.com,
        Tzongyu.Lee@sun.com
Message-id: <20080227221318.00003ac6@knockout>
Organization: Sun Microsystems
MIME-version: 1.0
X-Mailer: Claws Mail 3.3.0-csw (GTK+ 2.12.3; i386-pc-solaris2.8)
Content-type: text/plain; charset=US-ASCII
Content-transfer-encoding: 7BIT
X-PMX-Version: 5.2.0.264296
References: <200802260924.m1Q9Oeor020180@sac.sfbay.sun.com>
 <47C4CACB.7040603@Sun.COM>
 <47c53f40.pkIsWV1+U/qbHClp%Joerg.Schilling@fokus.fraunhofer.de>
 <20080227212416.000066fe@knockout>
 <47c54ba8.48Kl0Iu3n6APM+tg%Joerg.Schilling@fokus.fraunhofer.de>
 <20080227214657.000036c6@knockout> <47C550C8.5040802@Sun.COM>
Status: RO
Content-Length: 811

On Wed, 27 Feb 2008 12:00:08 +0000
Darren J Moffat <Darren.Moffat@Sun.COM> wrote:

> James C. McPherson wrote:
> > The name "fwflash" was suggested by PSARC in an earlier
> > case and agreed to by that particular project team. 
> > 
> > In your opinion, which aspect of the name "fwflash" is
> > not descriptive enough, and what do you suggest we call
> > this utility instead?
> 
> I don't see changing the name of the already existing fwflash command
> is in scope for this project.  fwflash(1M) was declared as Stable in 
> 2005/126 which makes it Committed in the new taxonomy.  This case
> needs "patch" release binding so changing the name is not an option.

I totally agree.


James
--
Senior Kernel Software Engineer, Solaris
Sun Microsystems
http://blogs.sun.com/jmcp	http://www.jmcp.homeunix.com/blog

From gdamore@sun.com Wed Feb 27 08:22:35 2008
Received: from sunmail4.singapore.sun.com (sunmail4.Singapore.Sun.COM [129.158.71.19])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m1RGMYjD016462
	for <psarc-ext@sac.sfbay.Sun.COM>; Wed, 27 Feb 2008 08:22:35 -0800 (PST)
Received: from brm-avmta-1.central.sun.com (brm-avmta-1.Central.Sun.COM [129.147.4.11])
	by sunmail4.singapore.sun.com (8.13.4+Sun/8.13.3/ENSMAIL,v2.2) with ESMTP id m1RGMOKi008466
	for <@sunmail2sca.sfbay.sun.com:PSARC-ext@sun.com>; Thu, 28 Feb 2008 00:22:33 +0800 (SGT)
Received: from pmxchannel-daemon.brm-avmta-1.central.sun.com by
 brm-avmta-1.central.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0JWW00K1PO5ISG00@brm-avmta-1.central.sun.com> for PSARC-ext@sun.com
 (ORCPT PSARC-ext@sun.com); Wed, 27 Feb 2008 09:22:30 -0700 (MST)
Received: from sca-es-mail-2.sun.com ([192.18.43.133])
 by brm-avmta-1.central.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0JWW00GYDO5GQOB0@brm-avmta-1.central.sun.com> for
 PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Wed,
 27 Feb 2008 09:22:29 -0700 (MST)
Received: from fe-sfbay-10.sun.com ([192.18.43.129])
	by sca-es-mail-2.sun.com (8.13.7+Sun/8.12.9) with ESMTP id m1RGMS3A025464	for
 <PSARC-ext@sun.com>; Wed, 27 Feb 2008 08:22:28 -0800 (PST)
Received: from conversion-daemon.fe-sfbay-10.sun.com by fe-sfbay-10.sun.com
 (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007))
 id <0JWW00101O542B00@fe-sfbay-10.sun.com> (original mail from gdamore@sun.com)
 for PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Wed,
 27 Feb 2008 08:22:28 -0800 (PST)
Received: from [192.168.251.106] ([76.174.83.55])
 by fe-sfbay-10.sun.com (Sun Java System Messaging Server 6.2-8.04 (built Feb
 28 2007)) with ESMTPSA id <0JWW008QFO5GTXE0@fe-sfbay-10.sun.com> for
 PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Wed,
 27 Feb 2008 08:22:28 -0800 (PST)
Date: Wed, 27 Feb 2008 08:20:35 -0800
From: "Garrett D'Amore" <gdamore@sun.com>
Subject: Re: Pluggable fwflash(1M) [PSARC/2008/151 FastTrack timeout 03/04/2008]
In-reply-to: <47C54F4E.3030508@Sun.COM>
Sender: Garrett.Damore@sun.com
To: Darren J Moffat <Darren.Moffat@sun.com>
Cc: Joerg Schilling <Joerg.Schilling@fokus.fraunhofer.de>, Tzongyu.Lee@sun.com,
        PSARC-ext@sun.com
Message-id: <47C58DD3.6090405@sun.com>
MIME-version: 1.0
Content-type: text/plain; format=flowed; charset=ISO-8859-1
Content-transfer-encoding: 7BIT
X-PMX-Version: 5.2.0.264296
References: <200802260924.m1Q9Oeor020180@sac.sfbay.sun.com>
 <47C4CACB.7040603@Sun.COM>
 <47c53f40.pkIsWV1+U/qbHClp%Joerg.Schilling@fokus.fraunhofer.de>
 <47C54F4E.3030508@Sun.COM>
User-Agent: Thunderbird 2.0.0.6 (X11/20071023)
Status: RO
Content-Length: 1769

Right.  I'm planning on making use of this architecture to help with 
flashing PRISM wifi devices. :-)

    -- Garrett

Darren J Moffat wrote:
> Joerg Schilling wrote:
>> That is the reason for trying to use a generic name for a utility that
>> only works with a limited subset of SCSI devices?
>
> The goal of the project is to allow this to be used by things other 
> than SCSI.
>
> Quoting from the case material:
>
> "This fasttrack addresses that request and in the process extends 
> fwflash(1M) to also provide a generic, pluggable interface for other 
> devices for which a firmware update mechanism might be required in the 
> future."
>
> The keywords here are "generic" and "other devices".
>
> Then later on in the material:
>
> "The existing InfiniBand functionality will be re-factored to work 
> within the proposed plugin framework."
>
> So not only does the case provide a framework for use by things other 
> than SCSI it actually mentions an non SCSI consumer.
>
> What is it about the above that isn't clear and makes you think that 
> fwflash(1M) applies only to a subset of SCSI ?
>
> I should also point out that the case material also says that 
> /usr/sbin/fwflash already exits and was approved and introduced by 
> PSARC/2005/126.
>
> So if anything I believe this case is actually the one that addresses 
> your concern that fwflash is a generic name and your issue would have 
> been relevant to PSARC/2005/126.  2005/126 was originally proposed as 
> ibflash(1M) because it was to be relevant only for InfiniBand, however 
> the then PSARC committee asked the project to to prepare for having a 
> generic interface for firmware flashing and rename it to fwflash(1M), 
> *this* case (2008/151) is that future one that makes it generic.
>


From Joerg.Schilling@fokus.fraunhofer.de Thu Feb 28 02:50:52 2008
Received: from sunmail5.uk.sun.com (sunmail5.UK.Sun.COM [129.156.85.165])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m1SAopis028346
	for <psarc-ext@sac.sfbay.sun.com>; Thu, 28 Feb 2008 02:50:52 -0800 (PST)
Received: from nwk-avmta-1.SFBay.Sun.COM (nwk-avmta-1.SFBay.Sun.COM [129.146.11.74])
	by sunmail5.uk.sun.com (8.13.8+Sun/8.13.8/ENSMAIL,v2.2) with ESMTP id m1SAoi5d008668;
	Thu, 28 Feb 2008 10:50:48 GMT
Received: from pmxchannel-daemon.nwk-avmta-1.sfbay.Sun.COM by
 nwk-avmta-1.sfbay.Sun.COM
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0JWY002053GNL300@nwk-avmta-1.sfbay.Sun.COM>; Thu,
 28 Feb 2008 02:50:47 -0800 (PST)
Received: from brmea-mail-3.sun.com ([192.18.98.34])
 by nwk-avmta-1.sfbay.Sun.COM
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0JWY00MT83GMZ750@nwk-avmta-1.sfbay.Sun.COM>; Thu,
 28 Feb 2008 02:50:47 -0800 (PST)
Received: from relay21.sun.com
 (ip192-12-251-24.block6.us.syntegra.com [192.12.251.24])
	by brmea-mail-3.sun.com (8.13.6+Sun/8.12.9) with ESMTP id m1SAokls003534; Thu,
 28 Feb 2008 10:50:46 +0000 (GMT)
Received: from mms22es.sun.com ([150.143.232.34] [150.143.232.34])
 by relay21i.sun.com with ESMTP id BT-MMP-1011246; Thu,
 28 Feb 2008 10:50:46 +0000 (Z)
Received: from relay23.sun.com (relay23.sun.com [192.12.251.54])
 by mms22es.sun.com with ESMTP id BT-MMP-2047062; Thu,
 28 Feb 2008 10:50:46 +0000 (Z)
Received: from mailgw2-out.fraunhofer.de ([153.96.1.28] [153.96.1.28])
 by relay23i.sun.com with ESMTP id BT-MMP-8056053; Thu,
 28 Feb 2008 10:50:45 +0000 (Z)
Received: from mailgw23.noc.fraunhofer.de (localhost [127.0.0.1])
	by mailgw2-out.fraunhofer.de[host mailgw23] (8.14.2+/8.14.2)
 with ESMTP id m1SAoiIh020173; Thu, 28 Feb 2008 11:50:44 +0100 (CET)
Received: from pluto.fokus.fraunhofer.de
 (pluto.fokus.fraunhofer.de [195.37.77.164])	by mailgw23.noc.fraunhofer.de
 (8.14.2+/8.14.2) with ESMTP id m1SAogMw020109
	(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu,
 28 Feb 2008 11:50:44 +0100 (CET)
Received: from EXCHSRV.fokus.fraunhofer.de (bohr [10.147.9.231])
	by pluto.fokus.fraunhofer.de (8.13.7/8.13.7) with SMTP id m1SAogBR006357; Thu,
 28 Feb 2008 11:50:42 +0100 (MET)
Received: from rigel ([10.147.65.195]) by EXCHSRV.fokus.fraunhofer.de with
 Microsoft SMTPSVC(6.0.3790.3959); Thu, 28 Feb 2008 11:50:43 +0100
Date: Thu, 28 Feb 2008 11:50:42 +0100
From: Joerg.Schilling@fokus.fraunhofer.de (Joerg Schilling)
Subject: Re: Pluggable fwflash(1M) [PSARC/2008/151 FastTrack timeout 03/04/2008]
In-reply-to: <47C54F4E.3030508@Sun.COM>
To: Darren.Moffat@sun.com
Cc: Tzongyu.Lee@sun.com, PSARC-ext@sun.com
Message-id: <47c69202.0dIYBuksvTnPnSXR%Joerg.Schilling@fokus.fraunhofer.de>
MIME-version: 1.0
Content-type: text/plain; charset=ISO-8859-1
Content-transfer-encoding: 8BIT
X-PMX-Version: 5.2.0.264296
X-Brightmail-Tracker: AAAAAA==
X-Fraunhofer-Email-Policy: accepted
X-Antispam: No, score=0.0/5.0, scanned in 0.191sec at (localhost [127.0.0.1])
	by smf-spamd v1.3.1 - http://smfs.sf.net/
References: <200802260924.m1Q9Oeor020180@sac.sfbay.sun.com>
 <47C4CACB.7040603@Sun.COM>
 <47c53f40.pkIsWV1+U/qbHClp%Joerg.Schilling@fokus.fraunhofer.de>
 <47C54F4E.3030508@Sun.COM>
X-Authentication-warning: mailgw23.noc.fraunhofer.de: Host localhost
 [127.0.0.1] claimed to be mailgw23.noc.fraunhofer.de
User-Agent: nail 11.22 3/20/05
X-OriginalArrivalTime: 28 Feb 2008 10:50:43.0816 (UTC)
 FILETIME=[C459C680:01C879F7]
Status: RO
Content-Length: 637

Darren J Moffat <Darren.Moffat@Sun.COM> wrote:

> Joerg Schilling wrote:
> > That is the reason for trying to use a generic name for a utility that
> > only works with a limited subset of SCSI devices?
>
> The goal of the project is to allow this to be used by things other than 
> SCSI.

Maybe I did missuundertand parts of the text....

J鰎g

-- 
 EMail:joerg@schily.isdn.cs.tu-berlin.de (home) J鰎g Schilling D-13353 Berlin
       js@cs.tu-berlin.de                (uni)  
       schilling@fokus.fraunhofer.de     (work) Blog: http://schily.blogspot.com/
 URL:  http://cdrecord.berlios.de/old/private/ ftp://ftp.berlios.de/pub/schily

From James.McPherson@sun.com Fri Feb 29 05:14:23 2008
Received: from sunmail2sca.sfbay.sun.com (sunmail2sca [129.145.155.234])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m1TDEN3M013046
	for <psarc-ext@sac.sfbay.sun.com>; Fri, 29 Feb 2008 05:14:23 -0800 (PST)
Received: from brm-avmta-1.central.sun.com (brm-avmta-1.Central.Sun.COM [129.147.4.11])
	by sunmail2sca.sfbay.sun.com (8.13.7+Sun/8.13.7/ENSMAIL,v2.2) with ESMTP id m1TDEMRY025775
	for <@sunmail2sca.sfbay.sun.com:PSARC-ext@sun.com>; Fri, 29 Feb 2008 05:14:22 -0800 (PST)
Received: from pmxchannel-daemon.brm-avmta-1.central.sun.com by
 brm-avmta-1.central.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0JX0004034RYGF00@brm-avmta-1.central.sun.com> for PSARC-ext@sun.com
 (ORCPT PSARC-ext@sun.com); Fri, 29 Feb 2008 06:14:22 -0700 (MST)
Received: from sineb-mail-1.sun.com ([192.18.19.6])
 by brm-avmta-1.central.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0JX0002M84RXF520@brm-avmta-1.central.sun.com> for
 PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Fri,
 29 Feb 2008 06:14:22 -0700 (MST)
Received: from fe-apac-02.sun.com
 (fe-apac-02.sun.com [192.18.19.173] (may be forged))
	by sineb-mail-1.sun.com (8.13.6+Sun/8.12.9) with ESMTP id m1TDEQxg017696	for
 <PSARC-ext@sun.com>; Fri, 29 Feb 2008 13:14:26 +0000 (GMT)
Received: from conversion-daemon.mail-apac.sun.com by mail-apac.sun.com
 (Sun Java System Messaging Server 6.2-6.01 (built Apr  3 2006))
 id <0JX000F013JG8700@mail-apac.sun.com>
 (original mail from James.McPherson@Sun.COM)
 for PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Fri,
 29 Feb 2008 21:14:20 +0800 (SGT)
Received: from knockout ([10.7.251.162])
 by mail-apac.sun.com (Sun Java System Messaging Server 6.2-6.01 (built Apr  3
 2006)) with ESMTPSA id <0JX000IY34RSP712@mail-apac.sun.com> for
 PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Fri,
 29 Feb 2008 21:14:20 +0800 (SGT)
Date: Fri, 29 Feb 2008 23:14:01 +1000
From: "James C. McPherson" <James.McPherson@sun.com>
Subject: Re: Pluggable fwflash(1M) [PSARC/2008/151 FastTrack timeout 03/04/2008]
In-reply-to: <47C4CACB.7040603@Sun.COM>
Sender: James.McPherson@sun.com
To: Tzongyu.Lee@sun.com
Cc: PSARC-ext@sun.com
Message-id: <20080229231401.00005bac@knockout>
Organization: Sun Microsystems
MIME-version: 1.0
X-Mailer: Claws Mail 3.3.0-csw (GTK+ 2.12.3; i386-pc-solaris2.8)
Content-type: multipart/mixed; boundary="Boundary_(ID_jOnL1BaAtLBYrQF1A/6qqA)"
X-PMX-Version: 5.2.0.264296
References: <200802260924.m1Q9Oeor020180@sac.sfbay.sun.com>
 <47C4CACB.7040603@Sun.COM>
Status: RO
Content-Length: 17669


--Boundary_(ID_jOnL1BaAtLBYrQF1A/6qqA)
Content-type: text/plain; charset=UTF-8
Content-transfer-encoding: QUOTED-PRINTABLE
Content-disposition: inline

On Wed, 27 Feb 2008 10:28:27 +0800
Tzongyu Paul Lee <Tzongyu.Lee@Sun.COM> wrote:

> (Forgot to attach the header/intro portion for the case..)
>=20
> I am sponsoring this fast-track for James C. McPherson.
> Requested release binding is patch, and the timer is set to
> 03/04/2008.
>=20
> T.Paul
> -------
>=20
> Tzongyu Paul Lee =E5=86=99=E9=81=93:
> > Template Version: @(#)sac_nextcase 1.64 07/13/07 SMI
> > This information is Copyright 2008 Sun Microsystems
> > 1. Introduction
> >     1.1. Project/Component Working Name:
> > =09 Pluggable fwflash(1M)


Ahem, I have a small modification to the spec - one grammatical
error and one additional structure member:


32c32
< identification and firmware verification requires. By keeping the
---
> identification and firmware verification requirements. By keeping t=
he
157a158,172
>        * We also store the name of the firmware file that
>        * we point to with *fwimage. This is needed in cases
>        * where we need to key off the name of the file to
>        * determine whether a different buffer in the target
>        * device should be targeted.=20
>        *
>        * For example, our "standard" firmware image (file.fw)
>        * might require use of buffer id 0, but a boot image
>        * (boot.fw) might require use of buffer id 17. In each
>        * case, it is the verifier plugin that determines the
>        * specific bufferid that is needed by that firmware image.
>        */
>       char *imgfile;
>=20
>       /*



The new version of the spec is attached.


James C. McPherson
--
Senior Kernel Software Engineer, Solaris
Sun Microsystems
http://blogs.sun.com/jmcp=09http://www.jmcp.homeunix.com/blog

--Boundary_(ID_jOnL1BaAtLBYrQF1A/6qqA)
Content-type: text/plain; name=pluggable_fwflash.txt
Content-transfer-encoding: 7BIT
Content-disposition: attachment; filename=pluggable_fwflash.txt



Title
-----


Pluggable fwflash(1M).





Problem
-------


PSARC/2005/126 introduced the fwflash(1M) Solaris firmware flashing
utility, and requested that fwflash(1M) become the preferred interface for
firmware flashing tools within Solaris. The initial release of fwflash(1M)
was targeted at InfiniBand (IB) adapters attached via the tavor(7D)
driver. 

Sun's Systems group has requested that fwflash(1M) be extended to provide
support for devices attached via ses(7D) - SCSI Enclosure Services. This
fasttrack addresses that request and in the process extends fwflash(1M) to
also provide a generic, pluggable interface for other devices for which a
firmware update mechanism might be required in the future.

Further, we separate out the firmware image verification process into a 
separate plugin. The reason for this is that we anticipate shipping devices
which attach to the host using the same driver, but which have different
identification and firmware verification requirements. By keeping the
identifier separate from the verifier we enable a decrease in the sustaining
effort over time. 

Separation also allows us to make most of the new fwflash(1M) Open, and
leave CDA- or NDA-covered knowledge required in the closed part of the
OpenSolaris source tree. 



The existing InfiniBand functionality will be re-factored to work within
the proposed plugin framework.





Binding
-------

We request a Patch binding for this RFE (6616085) since the business
requirement is for integration into Solaris 10 Update 6.



Exposure
--------

This is an Open fasttrack.






Interfaces
----------


We propose the following changes to the command line syntax of
fwflash(1M):


1. Remove the "device number" option to specify a device to be
   flashed, instead requiring the user to specify a device path.


   The option of using a "device number" to specify a device
   implicitly assumes that the system configuration is static
   between invocations of fwflash(1M). This assumption is not
   necessarily valid in a system which supports hotplug operation.

   (This change in the command line options was suggested by 
   Garrett D'Amore during pre-submission review and is one that
   I'm more than happy to accept).


2. Add the ability to push multiple firmware images onto a single
   device. If -f is the last option specified on the command line,
   then all following arguments will be deemed to be filenames for
   separate firmware images.

   

   While it is anticipated that the primary use case for multiple
   firmware images will be in manufacturing environments on a
   pre-release basis, it is also possible that devices such as
   WiFi devices might also wish to use these flags. 





For the plugin interface, we propose the following structures.

Firstly, the verification plugin:


struct vrfyplugin {

	/*
	 * fully-qualified filename in /usr/lib/fwflash/verify,
	 * made up of [drivername]-[vendorname].so
	 *
	 * eg  /usr/lib/fwflash/verify/ses-SUN.so
	 * is the verification plugin for ses-attached devices which
	 * have a vendorname of "SUN".
	 */ 
	char *filename;

	/*
	 * The vendor name, such as "SUN" or "MELLANOX"
	 */
	char *vendor;

	/*
	 * An opaque handle for dlopen()/dlclose() to use.
	 */
	void *handle;

	/*
	 * Firmware image size in bytes, as reported by 
	 * stat().
	 */
	unsigned int imgsize;

	/*
	 * Flashable devices frequently have different buffers
	 * to use for different image types. We track the buffer
	 * required for this particular image with this variable.
	 *
	 * Once the verifier has figured out what sort of image
	 * it's been passed, it will know what value to use for
	 * this variable.
	 */
	unsigned int flashbuf;

	/*
	 * Points to the entire firmware image in memory.
	 * We do this so we can avoid multiple open()/close()
	 * operations, and to make it easier for checksum
	 * calculations.
	 */
	int *fwimage;

	/*
	 * We also store the name of the firmware file that
	 * we point to with *fwimage. This is needed in cases
	 * where we need to key off the name of the file to
	 * determine whether a different buffer in the target
	 * device should be targeted. 
	 *
	 * For example, our "standard" firmware image (file.fw)
	 * might require use of buffer id 0, but a boot image
	 * (boot.fw) might require use of buffer id 17. In each
	 * case, it is the verifier plugin that determines the
	 * specific bufferid that is needed by that firmware image.
	 */
	char *imgfile;

	/*
	 * The verification function entry point. The code
	 * in fwflash.c calls this function to verify that
	 * the nominated firmware image file is valid for
	 * the selected devicenode.
	 *
	 * Note that if the verification fails, the image
	 * does _not_ get force-flashed to the device.
	 *
	 * All verification plugins must support this operation.
	 */
	int (*vendorvrfy)(struct devicelist *devicenode);
};


Verification plugins are delivered in /usr/lib/fwflash/verify.

There is only one verification plugin loaded for any flash
update operation. The verification plugin must be written so
that it can correctly identify different levels of firmware
for a device (eg primary, secondary, tertiary) and verify
each individually. 



In the case of the user requesting a firmware update for
multiple images, these are verified serially, and then flashed
to the device.



To provide the common code with a means of both verifying and flashing
the firmware, we pass that information using


struct fwfile {
       /*
        * The fully qualified filename. No default location for
	* for the firmware image file is mandated.
	*/
	char *filename;

	/* Pointer to the identification plugin required */
	struct fw_plugin *plugin;

	/* pointer to the identification summary structure */
	struct vpr *ident;
};



The struct vpr allows us to encapsulate device information such as
the Vendor ID, Product ID and Revision ID returned from a SCSI INQUIRY(6)
command, and additional information such as might be required for a tavor-
attached (IB) device.

If any of the fields are space-padded at the end, then the common code
will do the work to strip those spaces characters off the end of the string
before making use of the data.



struct vpr {
	/* vendor ID, eg "HITACHI " */
	char *vid;

 	/* product ID, eg "DK32EJ36NSUN36G " */
	char *pid;

	/* revision, eg "PQ08" */
	char *revid;

	/*
	 * Additional, encapsulated identifying information.
	 * This pointer allows us to add details such as the
	 * IB hba sector size, which command set should be
	 * used or a part number.
	 */
	void *encap_ident;
};





For the device identification and firmware update plugin:

struct fw_plugin {

	/*
	 * An opaque handle for dlopen()/dlclose() to use.
	 */
	void *handle;

	/*
	 * fully-qualified filename in /usr/lib/fwflash/identify
	 * made up of [drivername].so
	 *
	 * eg  /usr/lib/fwflash/identify/ses.so
	 * is the identification plugin for devices attached to
	 * the host using the ses(7D) driver.
	 */
	char *filename;

	/*
	 * The driver name that this plugin will search for in
	 * the device tree snapshot using di_drv_first_node(3DEVINFO)
	 * and di_drv_next_node(3DEVINFO).
	 */
	char *drvname; /* "ses" or "tavor" or .... */

	/*
	 * Function entry point to support the command-line "-r"
	 * option - read image from device to persistent storage.
	 *
	 * Not all plugins and devices will support this operation.
	 */
	int (*fw_readfw)(struct devicelist *device, char *filename);
	
	/*
	 * Function entry point to support the command-line "-f"
	 * option - writes from persistent storage to device
	 *
	 * All identification plugins must support this operation.
	 */
	int (*fw_writefw)(struct devicelist *device, char *filename);


	/*
	 * Function entry point used to build the list of valid, flashable
	 * devices attached to the system using the loadable module drvname.
	 * (Not all devices attached using drvname will be valid for this
	 * plugin to report.
	 *
	 * start allows us to display flashable devices attached with
	 * different drivers and provide the user with a visual clue
	 * that these devices are different to others that are detected.
	 * 
	 * All identification plugins must support this operation.
	 */
	int (*fw_identify)(int start);

	/*
	 * Function entry point to support the command-line "-l"
	 * option - list/report flashable devices attached to the system.
	 *
	 * All identification plugins must support this operation.
	 */	
	int (*fw_devinfo)(struct devicelist *thisdev);
};


Device identification and firmware update plugins are delivered in 
/usr/lib/fwflash/identify.


Once the identification plugin has found an acceptable device, it
adds a record to the global list fw_devices:



struct devicelist {
	/*
	 * fully qualified pathname, with /devices/.... prefix
	 */
	char *access_devname;

	/*
	 * Which drivername did we find this device attached with
	 * in our device tree walk? Eg, ses or tavor or sgen...
	 */
	char *drvname;

	/*
	 * What class of device is this? For tavor-attached devices,
	 * we set this to "IB". For other devices, unless there is
	 * a common name to use, just make this the same as the 
	 * drvname field.
	 */	 
	char *classname;

	/* pointer to the VPR structure */
	struct vpr *ident;

	/*
	 * In the original fwflash(1M), it was possible to select a
	 * device for flashing by using an index number called a 
	 * dev_num. We retain that concept for pluggable fwflash, with
	 * the following change - whenever our identification plugin has
	 * finished and found at least one acceptable device, we bump the
	 * index number by 100. This provides the user with another key
	 * to distinguish the desired device from a potentially very large
	 * list of similar-looking devices.
	 */
	unsigned int index;

	/*
	 * Contains SAS or FC Port-WWNs, or IB GUIDS. Both SAS and FC only
	 * need one entry in this array since they really only have one
	 * address which we should track. IB devices can have 4 GUIDs
	 * (System Image, Node Image, Port 1 and Port 2).
	 */
	char *addresses[4];

	/*
	 * Pointer to the plugin needed to flash this device, and
	 * to use for printing appropriate device-specific information
	 * as required by the "-l" option to fwflash(1M).
	 */
	struct fw_plugin *plugin;

	/* Next entry in the list */
	TAILQ_ENTRY(devicelist) nextdev;
};





As a way of assisting the common code to easily find an appropriate
plugin, we also have a pluginlist structure:



struct pluginlist {
	/*
	 * fully qualified filename in /usr/lib/fwflash/identify
	 * made up of fwflash-[drivername].so
	 *
	 * eg  /usr/lib/fwflash/identify/ses.so
	 * is the identification plugin for devices attached to
	 * the host using the ses(7D) driver.
	 */
	char *filename;

	/*
	 * The driver name that this plugin will search for in
	 * the device tree snapshot using di_drv_first_node(3DEVINFO)
	 * and di_drv_next_node(3DEVINFO).
	 */
	char *drvname; 

	/*
	 * pointer to the actual plugin, so we can access its
	 * function entry points
	 */
	struct fw_plugin *plugin;

	/* pointer to the next element in the list */	 
	TAILQ_ENTRY(pluginlist) nextplugin;
};





We do not mandate a specific filesystem location for firmware images.


In order for the system to add a valid flashable device to the list of 
devices, the TAILQ family of macros from <sys/queue.h> are used. Each
device is added to the end of the global list using TAILQ_INSERT_TAIL().

Once the global list of valid devices has been built, we use the
TAILQ_FOREACH() macro to access a specific device record, check whether
the device matches our criteria (eg, device class, or /devices path), and
then invoke the desired function entry point.

We initialise the global variables pluginlist and devicelist as follows:


TAILQ_HEAD(PLUGINLIST, pluginlist);
TAILQ_HEAD(DEVICELIST, devicelist);
struct PLUGINLIST *fw_pluginlist;
struct DEVICELIST *fw_devices;


The TAILQ_HEAD() macros wrap our variable structure (pluginlist, devicelist)
and transform them into a list. See <sys/queue.h> for more details, or
the OpenBSD manpage for QUEUE(3) at 
http://www.openbsd.org/cgi-bin/man.cgi?query=queue&manpath=OpenBSD+Current&format=html
(CR 6659566 has been logged requesting a Solaris manpage be delivered).





Each function entry point should use the defined success or failure
return codes of

FWFLASH_SUCCESS
FWFLASH_FAILURE



Identification mechanisms
-------------------------


For InfiniBand devices, the identification method has not changed, it has
merely been refactored from the existing code into the new plugin
architecture.


For ses(7D)-attached devices, we walk the devinfo tree (the common code
holds the devinfo root node pointer as di_node_t rootnode) looking for
devices attached using this driver. If we find a ses(7D) device, we query
using a simple uscsi(7I) GET DIAGNOSTIC(6) command to see whether the
devices supports the Download Microcode Diagnostic Control Page (0x0e).
If the device supports that page, then we attach the device to the global
devicelist and continue our search of the device tree. If the device
does not support that control page then we resume our search through
the device tree for nodes which are acceptable.





Stability classifications
-------------------------


	/usr/lib/fwflash		Committed
	/usr/lib/fwflash/identify	Committed
	/usr/lib/fwflash/verify		Committed
	
	struct fw_plugin		Committed
	struct vrfyplugin		Committed

	struct pluginlist		Committed
	struct vpr			Committed
	struct fwflash			Committed
	struct devicelist		Committed

	FWFLASH_SUCCESS			Committed
	FWFLASH_FAILURE			Committed




Manpage changes
---------------


An updated manpage reflecting the more generic nature of fwflash(1M) will
be submitted to the case log. This will mention the as-delivered list of
supported device identification plugins (presently IB and ses only). The
manpage will also incorporate instructions on how to provide multiple
firmware images as command line arguments, as well as the device specifier
that can be passed with the -d option.


The "-l" (list) option retains the same format as PSARC/2005/126, though
naturally each identification plugin will have its own mandatory information.

The plugin for ses(7D)-attached devices will report device information in
the following fashion:

+----------------------------------------------------------+
| # /usr/sbin/fwflash -l                                   |
| List of available devices:                               |
| Device[0] /devices/pci@7c0/pci@0/pci@2/scsi@0/ses@4,0:0  |
|   Class [ses]                                            |
|         Target port WWN  : 508002000031ad7d              |
|         Vendor           : LSILOGIC                      |
|         Product          : SASX36 A.0                    |
|         Firmware revision: 2020                          |
|                                                          |
| Device[1] /devices/pci@7c0/pci@0/pci@2/scsi@0/ses@6,0:0  |
|   Class [ses]                                            |
|         Target port WWN  : 50800200006f517d              |
|         Vendor           : LSILOGIC                      |
|         Product          : SASX28 A.0                    |
|         Firmware revision: 2020                          |
+----------------------------------------------------------+

The above example will be added to the manpage examples section.

An example of multiple image flashing will also be added to the
manpage.



References
----------

PSARC/2005/126 InfiniBand Flash Update Tool (ibflash)
PSARC/2002/539 Tavor IB-HCA Driver


CR 6616085 fwflash should be generic and pluggable

--Boundary_(ID_jOnL1BaAtLBYrQF1A/6qqA)--

From Tzongyu.Lee@sun.com Tue Mar  4 00:36:16 2008
Received: from newsunmail1brm.central.sun.com (newsunmail1brm.Central.Sun.COM [129.147.62.245])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m248aFdC005425
	for <psarc-ext@sac.sfbay.sun.com>; Tue, 4 Mar 2008 00:36:16 -0800 (PST)
Received: from nwk-avmta-1.SFBay.Sun.COM (nwk-avmta-1.SFBay.Sun.COM [129.146.11.74])
	by newsunmail1brm.central.sun.com (8.13.7+Sun/8.13.7/ENSMAIL,v2.2) with ESMTP id m248aEdG009299
	for <@sunmail2sca.sfbay.sun.com:PSARC-ext@sun.com>; Tue, 4 Mar 2008 01:36:15 -0700 (MST)
Received: from pmxchannel-daemon.nwk-avmta-1.sfbay.Sun.COM by
 nwk-avmta-1.sfbay.Sun.COM
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0JX700K036KDOX00@nwk-avmta-1.sfbay.Sun.COM> for PSARC-ext@sun.com
 (ORCPT PSARC-ext@sun.com); Tue, 04 Mar 2008 00:36:13 -0800 (PST)
Received: from sineb-mail-2.sun.com ([192.18.19.7])
 by nwk-avmta-1.sfbay.Sun.COM
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0JX700CD76KCYLC0@nwk-avmta-1.sfbay.Sun.COM> for
 PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Tue,
 04 Mar 2008 00:36:13 -0800 (PST)
Received: from fe-apac-05.sun.com
 (fe-apac-05.sun.com [192.18.19.176] (may be forged))
	by sineb-mail-2.sun.com (8.13.6+Sun/8.12.9) with ESMTP id m248aS9W013584	for
 <PSARC-ext@sun.com>; Tue, 04 Mar 2008 08:36:28 +0000 (GMT)
Received: from conversion-daemon.mail-apac.sun.com by mail-apac.sun.com
 (Sun Java System Messaging Server 6.2-6.01 (built Apr  3 2006))
 id <0JX7007016GEG300@mail-apac.sun.com>
 (original mail from Tzongyu.Lee@Sun.COM)
 for PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Tue,
 04 Mar 2008 16:36:11 +0800 (SGT)
Received: from [129.158.218.85] by mail-apac.sun.com
 (Sun Java System Messaging Server 6.2-6.01 (built Apr  3 2006))
 with ESMTPSA id <0JX7006V06KBKKBF@mail-apac.sun.com> for PSARC-ext@sun.com
 (ORCPT PSARC-ext@sun.com); Tue, 04 Mar 2008 16:36:11 +0800 (SGT)
Date: Tue, 04 Mar 2008 16:35:29 +0800
From: Tzongyu Paul Lee <Tzongyu.Lee@sun.com>
Subject: Re: Pluggable fwflash(1M) [PSARC/2008/151 FastTrack timeout 03/04/2008]
In-reply-to: <20080229231401.00005bac@knockout>
Sender: Tzongyu.Lee@sun.com
To: "James C. McPherson" <James.McPherson@sun.com>
Cc: PSARC-ext@sun.com
Reply-to: Tzongyu.Lee@sun.com
Message-id: <47CD09D1.1050401@Sun.COM>
MIME-version: 1.0
Content-type: text/plain; charset=GB2312
Content-transfer-encoding: 8BIT
X-PMX-Version: 5.2.0.264296
References: <200802260924.m1Q9Oeor020180@sac.sfbay.sun.com>
 <47C4CACB.7040603@Sun.COM> <20080229231401.00005bac@knockout>
User-Agent: Thunderbird 2.0.0.4 (X11/20070723)
Status: RO
Content-Length: 2061

Revision is incorporated and updated in the sac.sfbay case directory.

Regards,
Paul
----

James C. McPherson 写道:
> On Wed, 27 Feb 2008 10:28:27 +0800
> Tzongyu Paul Lee <Tzongyu.Lee@Sun.COM> wrote:
>
>   
>> (Forgot to attach the header/intro portion for the case..)
>>
>> I am sponsoring this fast-track for James C. McPherson.
>> Requested release binding is patch, and the timer is set to
>> 03/04/2008.
>>
>> T.Paul
>> -------
>>
>> Tzongyu Paul Lee 写道:
>>     
>>> Template Version: @(#)sac_nextcase 1.64 07/13/07 SMI
>>> This information is Copyright 2008 Sun Microsystems
>>> 1. Introduction
>>>     1.1. Project/Component Working Name:
>>> 	 Pluggable fwflash(1M)
>>>       
>
>
> Ahem, I have a small modification to the spec - one grammatical
> error and one additional structure member:
>
>
> 32c32
> < identification and firmware verification requires. By keeping the
> ---
>   
>> identification and firmware verification requirements. By keeping the
>>     
> 157a158,172
>   
>>        * We also store the name of the firmware file that
>>        * we point to with *fwimage. This is needed in cases
>>        * where we need to key off the name of the file to
>>        * determine whether a different buffer in the target
>>        * device should be targeted. 
>>        *
>>        * For example, our "standard" firmware image (file.fw)
>>        * might require use of buffer id 0, but a boot image
>>        * (boot.fw) might require use of buffer id 17. In each
>>        * case, it is the verifier plugin that determines the
>>        * specific bufferid that is needed by that firmware image.
>>        */
>>       char *imgfile;
>>
>>       /*
>>     
>
>
>
> The new version of the spec is attached.
>
>
> James C. McPherson
> --
> Senior Kernel Software Engineer, Solaris
> Sun Microsystems
> http://blogs.sun.com/jmcp	http://www.jmcp.homeunix.com/blog
>   


-- 
Tzongyu Paul Lee, Tzongyu.Lee@Sun.Com or Paul.Lee@Sun.COM
BJS05 7225, x84343
http://blogs.sun.com/tpaullee/  Feel the Pulses of China
http://tpaullee.blogspot.com/


From Tzongyu.Lee@sun.com Thu Mar  6 03:38:43 2008
Received: from sunmail4.singapore.sun.com (sunmail4.Singapore.Sun.COM [129.158.71.19])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m26Bcg6G012491
	for <psarc-ext@sac.sfbay.Sun.COM>; Thu, 6 Mar 2008 03:38:43 -0800 (PST)
Received: from brm-avmta-1.central.sun.com (brm-avmta-1.Central.Sun.COM [129.147.4.11])
	by sunmail4.singapore.sun.com (8.13.4+Sun/8.13.3/ENSMAIL,v2.2) with ESMTP id m26BceGa015379
	for <@sunmail2sca.sfbay.sun.com:PSARC-ext@sun.com>; Thu, 6 Mar 2008 19:38:41 +0800 (SGT)
Received: from pmxchannel-daemon.brm-avmta-1.central.sun.com by
 brm-avmta-1.central.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0JXB001054CF9H00@brm-avmta-1.central.sun.com> for PSARC-ext@sun.com
 (ORCPT PSARC-ext@Sun.COM); Thu, 06 Mar 2008 04:38:39 -0700 (MST)
Received: from sineb-mail-2.sun.com ([192.18.19.7])
 by brm-avmta-1.central.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0JXB00CJF4CEGOB0@brm-avmta-1.central.sun.com> for
 PSARC-ext@sun.com (ORCPT PSARC-ext@Sun.COM); Thu,
 06 Mar 2008 04:38:39 -0700 (MST)
Received: from fe-apac-05.sun.com
 (fe-apac-05.sun.com [192.18.19.176] (may be forged))
	by sineb-mail-2.sun.com (8.13.6+Sun/8.12.9) with ESMTP id m26BcsGc004430	for
 <PSARC-ext@Sun.COM>; Thu, 06 Mar 2008 11:38:54 +0000 (GMT)
Received: from conversion-daemon.mail-apac.sun.com by mail-apac.sun.com
 (Sun Java System Messaging Server 6.2-6.01 (built Apr  3 2006))
 id <0JXB00I0144T1U00@mail-apac.sun.com>
 (original mail from Tzongyu.Lee@Sun.COM)
 for PSARC-ext@Sun.COM (ORCPT PSARC-ext@Sun.COM); Thu,
 06 Mar 2008 19:38:37 +0800 (SGT)
Received: from [129.158.218.85] by mail-apac.sun.com
 (Sun Java System Messaging Server 6.2-6.01 (built Apr  3 2006))
 with ESMTPSA id <0JXB006DD4CDKK0M@mail-apac.sun.com> for PSARC-ext@Sun.COM
 (ORCPT PSARC-ext@Sun.COM); Thu, 06 Mar 2008 19:38:37 +0800 (SGT)
Date: Thu, 06 Mar 2008 19:37:54 +0800
From: Tzongyu Paul Lee <Tzongyu.Lee@sun.com>
Subject: Re: Pluggable fwflash(1M) [PSARC/2008/151 FastTrack timeout 03/04/2008]
In-reply-to: <47CD09D1.1050401@Sun.COM>
Sender: Tzongyu.Lee@sun.com
To: PSARC-ext@sun.com
Cc: "James C. McPherson" <James.McPherson@sun.com>
Reply-to: Tzongyu.Lee@sun.com
Message-id: <47CFD792.3030809@Sun.COM>
MIME-version: 1.0
Content-type: text/plain; charset=GB2312
Content-transfer-encoding: 8BIT
X-PMX-Version: 5.2.0.264296
References: <200802260924.m1Q9Oeor020180@sac.sfbay.sun.com>
 <47C4CACB.7040603@Sun.COM> <20080229231401.00005bac@knockout>
 <47CD09D1.1050401@Sun.COM>
User-Agent: Thunderbird 2.0.0.4 (X11/20070723)
Status: RO
Content-Length: 2300

The case was approved in the 3/5/2008 meeting.
T. Paul

---
Tzongyu Paul Lee 写道:
> Revision is incorporated and updated in the sac.sfbay case directory.
>
> Regards,
> Paul
> ----
>
> James C. McPherson 写道:
>   
>> On Wed, 27 Feb 2008 10:28:27 +0800
>> Tzongyu Paul Lee <Tzongyu.Lee@Sun.COM> wrote:
>>
>>   
>>     
>>> (Forgot to attach the header/intro portion for the case..)
>>>
>>> I am sponsoring this fast-track for James C. McPherson.
>>> Requested release binding is patch, and the timer is set to
>>> 03/04/2008.
>>>
>>> T.Paul
>>> -------
>>>
>>> Tzongyu Paul Lee 写道:
>>>     
>>>       
>>>> Template Version: @(#)sac_nextcase 1.64 07/13/07 SMI
>>>> This information is Copyright 2008 Sun Microsystems
>>>> 1. Introduction
>>>>     1.1. Project/Component Working Name:
>>>> 	 Pluggable fwflash(1M)
>>>>       
>>>>         
>> Ahem, I have a small modification to the spec - one grammatical
>> error and one additional structure member:
>>
>>
>> 32c32
>> < identification and firmware verification requires. By keeping the
>> ---
>>   
>>     
>>> identification and firmware verification requirements. By keeping the
>>>     
>>>       
>> 157a158,172
>>   
>>     
>>>        * We also store the name of the firmware file that
>>>        * we point to with *fwimage. This is needed in cases
>>>        * where we need to key off the name of the file to
>>>        * determine whether a different buffer in the target
>>>        * device should be targeted. 
>>>        *
>>>        * For example, our "standard" firmware image (file.fw)
>>>        * might require use of buffer id 0, but a boot image
>>>        * (boot.fw) might require use of buffer id 17. In each
>>>        * case, it is the verifier plugin that determines the
>>>        * specific bufferid that is needed by that firmware image.
>>>        */
>>>       char *imgfile;
>>>
>>>       /*
>>>     
>>>       
>>
>> The new version of the spec is attached.
>>
>>
>> James C. McPherson
>> --
>> Senior Kernel Software Engineer, Solaris
>> Sun Microsystems
>> http://blogs.sun.com/jmcp	http://www.jmcp.homeunix.com/blog
>>   
>>     
>
>
>   


-- 
Tzongyu Paul Lee, Tzongyu.Lee@Sun.Com or Paul.Lee@Sun.COM
BJS05 7225, x84343
http://blogs.sun.com/tpaullee/  Feel the Pulses of China
http://tpaullee.blogspot.com/


From James.McPherson@Sun.COM Sun Mar 30 16:24:54 2008
Received: from sunmail3mpk.sfbay.sun.com (sunmail3mpk.SFBay.Sun.COM [129.146.11.52])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m2UNOskL009023
	for <psarc-ext@sac.sfbay.sun.com>; Sun, 30 Mar 2008 16:24:54 -0700 (PDT)
Received: from nwk-avmta-2.sfbay.sun.com (nwk-avmta-2.SFBay.Sun.COM [129.145.155.6])
	by sunmail3mpk.sfbay.sun.com (8.13.7+Sun/8.13.7/ENSMAIL,v2.2) with ESMTP id m2UNOsSW009034
	for <@sunmail2sca.sfbay.sun.com:psarc-ext@sun.com>; Sun, 30 Mar 2008 16:24:54 -0700 (PDT)
Received: from pmxchannel-daemon.nwk-avmta-2.sfbay.sun.com by
 nwk-avmta-2.sfbay.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0JYK00603H1H4O00@nwk-avmta-2.sfbay.sun.com> for psarc-ext@sun.com
 (ORCPT psarc-ext@sun.com); Sun, 30 Mar 2008 16:24:53 -0700 (PDT)
Received: from sineb-mail-1.sun.com ([192.18.19.6])
 by nwk-avmta-2.sfbay.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0JYK00066H1G4650@nwk-avmta-2.sfbay.sun.com> for
 psarc-ext@sun.com (ORCPT psarc-ext@sun.com); Sun,
 30 Mar 2008 16:24:53 -0700 (PDT)
Received: from fe-apac-06.sun.com
 (fe-apac-06.sun.com [192.18.19.177] (may be forged))
	by sineb-mail-1.sun.com (8.13.6+Sun/8.12.9) with ESMTP id m2UNP3t3012666	for
 <psarc-ext@sun.com>; Sun, 30 Mar 2008 23:25:03 +0000 (GMT)
Received: from conversion-daemon.mail-apac.sun.com by mail-apac.sun.com
 (Sun Java System Messaging Server 6.2-6.01 (built Apr  3 2006))
 id <0JYK00401GQF2H00@mail-apac.sun.com>
 (original mail from James.McPherson@Sun.COM)
 for psarc-ext@sun.com (ORCPT psarc-ext@sun.com); Mon,
 31 Mar 2008 07:24:31 +0800 (SGT)
Received: from [192.168.1.35] ([220.157.71.44])
 by mail-apac.sun.com (Sun Java System Messaging Server 6.2-6.01 (built Apr  3
 2006)) with ESMTPSA id <0JYK00BP4H0SMN1F@mail-apac.sun.com> for
 psarc-ext@sun.com (ORCPT psarc-ext@sun.com); Mon,
 31 Mar 2008 07:24:30 +0800 (SGT)
Date: Mon, 31 Mar 2008 09:24:22 +1000
From: "James C. McPherson" <James.McPherson@Sun.COM>
Subject: Re: Pluggable fwflash(1M) [PSARC/2008/151 FastTrack timeout 03/04/2008]
Sender: James.McPherson@Sun.COM
To: psarc-ext@Sun.COM, Paul Lee <Tzongyu.Lee@Sun.COM>
Reply-to: James.McPherson@Sun.COM
Message-id: <47F02126.30202@Sun.COM>
Organization: Sun Microsystems
MIME-version: 1.0
Content-type: multipart/mixed; boundary="Boundary_(ID_MULOEhHp0ehhq1hbmuFfDA)"
X-PMX-Version: 5.4.1.325704
User-Agent: Thunderbird 2.0.0.9 (X11/20080128)
Status: RO
Content-Length: 36017

This is a multi-part message in MIME format.

--Boundary_(ID_MULOEhHp0ehhq1hbmuFfDA)
Content-type: text/plain; format=flowed; charset=UTF-8
Content-transfer-encoding: 7BIT


Hi all,
I forgot to provide an updated manpage for Pluggable fwflash
that mentions the new usage and supported plugins.

I've attached the plain text version, nroff version and
diffs from the existing version.

The CR tracking the changes is
6681880 fwflash(1m) manpage needs updating for Pluggable fwflash.



James C. McPherson
--
Senior Kernel Software Engineer, Solaris
Sun Microsystems
http://blogs.sun.com/jmcp	http://www.jmcp.homeunix.com/blog

--Boundary_(ID_MULOEhHp0ehhq1hbmuFfDA)
Content-type: text/plain; name=fwflash.txt
Content-transfer-encoding: 7BIT
Content-disposition: inline; filename=fwflash.txt

System Administration Commands                        fwflash(1M)



NAME
     fwflash - firmware query and update utility

SYNOPSIS
     /usr/sbin/fwflash  [-l [-c device_class | ALL ]]
         | [-v] | [-h]


     fwflash  [-f file1,file2,file3,... | -r file] [-y] [-d device_path]


DESCRIPTION
     The fwflash command writes a binary image file to  supported
     flashable  devices  attached to a Solaris host. It also pro-
     vides the ability to read firmware to a file if supported by
     the  device.  Because  changing the firmware in a device can
     have significant impact on the stability of a  system,  only
     users  with  the  privilege  All are allowed to execute this
     command. Users authorized to run fwflash can be granted  the
     "Firmware Flash Update" Rights Profile.


     The first form of the command, above,  provides  information
     about  devices.  It lists all devices currently available on
     the system and supported by fwflash  for  firmware  upgrade.
     You can filter the list operation, to display only specified
     classes of devices. The second form of the command  provides
     the  operations  to  read  or  write  the firmware images to
     specific devices.

OPTIONS
     The following options are supported:

     -c device_class
         An optional parameter, valid only when used with the  -l
         option. This option causes the command to list only dev-
         ices of  a  specific  class  type.  Currently  supported
         classes are IB, ses, sgen or ALL. If -c is not specified
         for the -l option, the class defaults to ALL.


     -d device_path
         The device_path is the absolute path name of the  device
         that  the user wants to modify with the -f operation. If
         the device cannot be found, the command  fails.  If  the
         -d-fR  flag is specified, then either -f or -r must also
         be specified.


     -f file1,file2,file3,...
         Specify the path to one or more  binary  firmware  image



SunOS 5.11          Last change: 12 Jun 2007                    1





System Administration Commands                        fwflash(1M)



         files you want to write to the device. fwflash will ver-
         ify that each file is a valid  firmware  image  for  the
         specified  device.  If it is not, the command fails with
         an appropriate error message.

         If multiple firmware image  files  are  specified,  each
         image is verified and flashed to the device in the order
         given on the command line. If any of the specified files
         can  not  be  successfully  flashed, then an appropriate
         message is printed.

         A reboot is required  after  a  new  firmware  image  is
         flashed  to a device, in order to correctly activate the
         new firmware.


     -h
         List the command line usage message for fwflash(1M).


     -l
         List the devices on  a  system  available  for  firmware
         upgrade  and display information specific to each device
         or device class.

         For  InfiniBand  (IB)  devices,   the   list   operation
         displays   the   guids   (Globally   Unique  Identifier)
         currently set for  the  HCA,  as  well  as  the  current
         firmware  revision  installed.  There  are four separate
         guids on the HCA; two of them can be  set  to  the  same
         value.

         For SCSI Enclosure Services (ses or  sgen)  devices,  an
         identifying target-port world wide name is displayed, if
         available.


     -r file
         Specify the name of a file to create  when  reading  the
         firmware  from  the  device.  The  -f and -r options are
         mutually exclusive.

         Not  all  flashable  devices  support  reading  firmware
         images back from the device. At present, only InfiniBand
         (IB) devices are supported for this operation. A message
         will  be printed if the selected device does not support
         this operation.






SunOS 5.11          Last change: 12 Jun 2007                    2






System Administration Commands                        fwflash(1M)



     -v
         Print fwflash version information and exit.


     -y
         Valid only when a flash read (-r) or write  (-f)  opera-
         tion  is  specified,  this  option causes fwflash not to
         prompt for confirmation  during  operation  and  operate
         non-interactively.  Note  that  there  is no option that
         will  allow  you  to  forcibly  flash  an   incompatible
         firmware image onto a device.


EXAMPLES
     Example 1 Entering Command Without Arguments


     The following command shows  fwflash  when  the  command  is
     entered without arguments.


       example# fwflash

       Usage:
               fwflash [-l [-c device_class | ALL]] | [-v] | [-h]
               fwflash [-f file1,file2,file3,... | -r file] [-y] -d device_path


               -l              list flashable devices in this system
               -c device_class limit search to a specific class
                               eg IB for InfiniBand, ses for SCSI Enclosures
               -v              print version number of fwflash utility
               -h              print this usage mesage

               -f file1,file2,file3,...
                               firmware image file list to flash
               -r file         file to dump device firmware to
               -y              answer Yes/Y/y to prompts
               -d device_path  pathname of device to be flashed

               If -d device_path is specified, then one of -f <files>
               or -r <file> must also be specified

               If multiple firmware images are required to be flashed
               they must be listed together, separated by commas. The
               images will be flashed in the order specified.



     Example 2 Listing Devices Available to Flash




SunOS 5.11          Last change: 12 Jun 2007                    3






System Administration Commands                        fwflash(1M)



     The following command lists the devices available to be flashed.


       example# fwflash -l
       List of available devices:
       Device[0],  /devices/pci@0,0/pci8086,3595@2/pci8086,32a@0,2/\
                  pci15b3,5a46@c/pci15b3,5a44@0:devctl
          Class [IB]
              GUID: System Image - 0002c901081e33b3
                    Node         - 0000000000003446
                    Port 1       - 0002c901081e33b1
                    Port 2       - 0002c901081e33b2
              Firmware revision: 3.3.0002
              No hardware information available for this device

       Device[1],  /devices/pci@0,0/pci8086,3597@4/pci15b3,6278@0:devctl
          Class [IB]
              GUID: System Image - 0002c9010a99e3b3
                    Node         - 0002c9010a99e3b0
                    Port 1       - 0002c9010a99e3b1
                    Port 2       - 0002c9010a99e3b2
              Firmware revision: 4.8.00c8
              Product           : MTLP25208-CF256T (Lion cub)
              PSID              : MT_00B0000001


     Alternatively, for a SAS Expander presented as a SCSI Enclo-
     sure Services device, we might see output such as this:


       example# fwflash -l
       List of available devices:
       Device[0] /devices/pci@0/pci@0/pci@2/scsi@0/ses@3,0:ses
         Class [sgen]
               Target port WWN  : 500605b00002453d
               Vendor           : SUN
               Product          : 16Disk Backplane
               Firmware revision: 5021



     Example 3 Flash Upgrading an IB HCA Device


     The following command flash upgrades an IB HCA device.


       example# fwflash -f ./version.3.2.0000 \
             -d /devices/pci@0,0/pci8086,3597@4/pci15b3,6278@0:devctl
       About to update firmware on:
        /devices/pci@0,0/pci8086,3597@4/pci15b3,6278@0:devctl
       Continue (Y/N): Y



SunOS 5.11          Last change: 12 Jun 2007                    4






System Administration Commands                        fwflash(1M)



       Updating . . . . . . . . . . . .
       Done.  New image will be active after the system is rebooted.




     Note that you are prompted before the upgrading proceeds and
     that it is mandatory to reboot your host to activate the new
     firmware image.



     The following example adds the -y option to the command:


       example# fwflash -y -f ./version.3.2.0000 \
             -d /devices/pci@0,0/pci8086,3597@4/pci15b3,6278@0:devctl
       About to update firmware on:
        /devices/pci@0,0/pci8086,3597@4/pci15b3,6278@0:devctl

       Updating . . . . . . . . . . . .
       Done.  New image will be active after the system is rebooted.



     Example 4 Reading Device Firmware to File


     The command shown below reads the device firmware to a file.
     The  command  uses  the -y option so that the read operation
     occurs without prompting.


       example# fwflash -y -r /firmware.bin \
             -d /devices/pci@1d,700000/pci@1/pci15b3,5a44@0:devctl
       About to read firmware on:
               /devices/pci@1d,700000/pci@1/pci15b3,5a44@0:devctl
       to filename: /firmware.bin

       Reading . . .
       Done.



     Example 5 No flashable devices found


     The command output shown below  reports  to  the  user  that
     there  are  no supported flashable devices found in the sys-
     tem:





SunOS 5.11          Last change: 12 Jun 2007                    5






System Administration Commands                        fwflash(1M)



       example# fwflash -l
       fwflash: No flashable devices attached with the ses driver in this system
       fwflash: No flashable devices attached with the sgen driver in this system
       fwflash: No flashable devices attached with the tavor driver in this system
       fwflash: No flashable devices in this system

     Each plugin found in /usr/lib/fwflash/identify is loaded in turn, and walks
     the system device tree determining whether any currently-attached devices
     exist that can be flashed. For the list of device types and drivers that are
     currently supported, please see the NOTES section below.




RETURN VALUES
     The fwflash command returns the following values:

     0 Success


     1 Failure


ATTRIBUTES
     See attributes(5) for descriptions of the following attri-
     butes:



     tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRI-
     BUTE TYPEATTRIBUTE VALUE _ AvailabilitySUNWfwflash


SEE ALSO
     attributes(5), ses(7D), sgen(7D), tavor(7D)

     The InfiniBand Trade Association website,
     http://www.infinibandta.org

     The SCSI Storage Interfaces committee website,
     http://www.t10.org

     SCSI Primary Commands-4, SPC4

     SCSI Enclosure Services-2, SES2

     Serial Attached SCSI-2, SAS2


NOTES
     The fwflash command supports




SunOS 5.11          Last change: 12 Jun 2007                    6






System Administration Commands                        fwflash(1M)



         * InfiniBand Host Channel Adapters (IB HCAs) containing
         either the AMD or the Intel parallel flash parts. The
         tavor(7D) HCA driver is required.


         * SCSI Enclosure Services devices such as SAS Expanders,
         attached with either the sgen(7D) or ses(7D) drivers.
















































SunOS 5.11          Last change: 12 Jun 2007                    7

--Boundary_(ID_MULOEhHp0ehhq1hbmuFfDA)
Content-type: text/plain; name=fwflash.1m
Content-transfer-encoding: 7BIT
Content-disposition: inline; filename=fwflash.1m

'\" te
.\" Copyright (c) 2007, Sun Microsystems, Inc. All Rights Reserved
.TH fwflash 1M "12 Jun 2007" "SunOS 5.11" "System Administration Commands"
.SH NAME
fwflash \- firmware query and update utility
.SH SYNOPSIS
.LP
.nf
\fB/usr/sbin/fwflash\fR  [\fB-l\fR [\fB-c\fR \fIdevice_class\fR | \fBALL\fR ]]
    | [\fB-v\fR] | [\fB-h\fR]
.fi

.LP
.nf
\fBfwflash\fR  [\fB-f\fR file1,file2,file3,... | \fB-r\fR file] [\fB-y\fR] [\fB-d\fR device_path]
.fi

.SH DESCRIPTION
.sp
.LP
The \fBfwflash\fR command writes a binary image file to supported flashable devices attached to a Solaris host. It also provides the ability to read firmware to a file if supported by the device. Because changing the firmware in a device can have significant impact on the stability of a system,
only users with the privilege \fBAll\fR are allowed to execute this command. Users authorized to run \fBfwflash\fR can be granted the "Firmware Flash Update" Rights Profile.
.sp
.LP
The first form of the command, above, provides information about devices. It lists all devices currently available on the system and supported by \fBfwflash\fR for firmware upgrade. You can filter the list operation, to display only specified classes of devices. The second form
of the command provides the operations to read or write the firmware images to specific devices.
.SH OPTIONS
.sp
.LP
The following options are supported: 
.sp
.ne 2
.mk
.na
\fB\fB-c\fR \fIdevice_class\fR\fR
.ad
.sp .6
.RS 4n
An optional parameter, valid only when used with the \fB-l\fR option. This option causes the command to list only devices of a specific class type. Currently supported classes are \fBIB\fR, \fBses\fR, \fBsgen\fR or \fBALL\fR. If \fB-c\fR is not specified
for the \fB-l\fR option, the class defaults to \fBALL\fR.
.RE

.sp
.ne 2
.mk
.na
\fB\fB-d\fR \fIdevice_path\fR\fR
.ad
.sp .6
.RS 4n
The \fIdevice_path\fR is the absolute path name of the device that the user wants to modify with the \fB-f\fR operation. If the device cannot be found, the command fails. If the \fB-d\-fR flag is specified, then either \fB-f\fR or \fB-r\fR must also be specified.
.RE

.sp
.ne 2
.mk
.na
\fB\fB-f\fR file1,file2,file3,...\fR
.ad
.sp .6
.RS 4n
Specify the path to one or more binary firmware image files you want to write to the device. \fBfwflash\fR will verify that each file is a valid firmware image for the specified device. If it is not, the command fails with an appropriate error message.

If multiple firmware image files are specified, each image is verified and flashed to the device in the order given on the command line. If any of the specified files can not be successfully flashed, then an appropriate message is printed. 

A reboot is required after a new firmware image is flashed to a device, in order to correctly activate the new firmware.
.RE

.sp
.ne 2
.mk
.na
\fB\fB-h\fR\fR
.ad
.sp .6
.RS 4n
List the command line usage message for \fBfwflash(1M)\fR.
.RE

.sp
.ne 2
.mk
.na
\fB\fB-l\fR\fR
.ad
.sp .6
.RS 4n
List the devices on a system available for firmware upgrade and display information specific to each device or device class.
.sp
For InfiniBand (IB) devices, the list operation  displays the \fBguid\fRs (Globally Unique Identifier) currently set for the HCA, as well as the current firmware revision installed. There are four separate \fBguid\fRs on the HCA; two of them can be set to the same value.

For SCSI Enclosure Services (ses or sgen) devices, an identifying target-port world wide name is displayed, if available. 
.RE

.sp
.ne 2
.mk
.na
\fB\fB-r\fR \fIfile\fR\fR
.ad
.sp .6
.RS 4n
Specify the name of a file to create when reading the firmware from the device. The \fB-f\fR and \fB-r\fR options are mutually exclusive. 

Not all flashable devices support reading firmware images back from the device. At present, only InfiniBand (IB) devices are supported for this operation. A message will be printed if the selected device does not support this operation.
.RE

.sp
.ne 2
.mk
.na
\fB\fB-v\fR\fR
.ad
.sp .6
.RS 4n
Print \fBfwflash\fR version information and exit.
.RE

.sp
.ne 2
.mk
.na
\fB\fB-y\fR\fR
.ad
.sp .6
.RS 4n
Valid only when a flash read (\fB-r\fR) or write (\fB-f\fR) operation is
specified, this option causes \fBfwflash\fR not to prompt for confirmation
during operation and operate non-interactively. Note that there is no option
that will allow you to forcibly flash an incompatible firmware image onto a
device. 
.RE

.SH EXAMPLES
.LP
\fBExample 1 \fREntering Command Without Arguments
.sp
.LP
The following command shows \fBfwflash\fR when the command is entered without arguments.

.sp
.in +2
.nf
example# \fBfwflash\fR

Usage:
        fwflash [-l [-c device_class | ALL]] | [-v] | [-h]
        fwflash [-f file1,file2,file3,... | -r file] [-y] -d device_path


        -l              list flashable devices in this system
        -c device_class limit search to a specific class
                        eg IB for InfiniBand, ses for SCSI Enclosures
        -v              print version number of fwflash utility
        -h              print this usage mesage

        -f file1,file2,file3,...
                        firmware image file list to flash
        -r file         file to dump device firmware to
        -y              answer Yes/Y/y to prompts
        -d device_path  pathname of device to be flashed

        If -d device_path is specified, then one of -f <files>
        or -r <file> must also be specified

        If multiple firmware images are required to be flashed
        they must be listed together, separated by commas. The
        images will be flashed in the order specified.


.LP
\fBExample 2 \fRListing Devices Available to Flash
.sp
.LP
The following command lists the devices available to be flashed.

.sp
.in +2
.nf
example# \fBfwflash -l\fR
List of available devices:
Device[0],  /devices/pci@0,0/pci8086,3595@2/pci8086,32a@0,2/\e
           pci15b3,5a46@c/pci15b3,5a44@0:devctl
   Class [IB]
       GUID: System Image - 0002c901081e33b3
             Node         - 0000000000003446
             Port 1       - 0002c901081e33b1
             Port 2       - 0002c901081e33b2
       Firmware revision: 3.3.0002
       No hardware information available for this device

Device[1],  /devices/pci@0,0/pci8086,3597@4/pci15b3,6278@0:devctl
   Class [IB]
       GUID: System Image - 0002c9010a99e3b3
             Node         - 0002c9010a99e3b0
             Port 1       - 0002c9010a99e3b1
             Port 2       - 0002c9010a99e3b2
       Firmware revision: 4.8.00c8
       Product           : MTLP25208-CF256T (Lion cub)
       PSID              : MT_00B0000001
.fi
.in -2
.sp

Alternatively, for a SAS Expander presented as a SCSI Enclosure Services device, we might see output such as this:

.sp
.in +2
.nf
example# \fBfwflash -l\fR
List of available devices:
Device[0] /devices/pci@0/pci@0/pci@2/scsi@0/ses@3,0:ses
  Class [sgen]
        Target port WWN  : 500605b00002453d
        Vendor           : SUN     
        Product          : 16Disk Backplane
        Firmware revision: 5021


.LP
\fBExample 3 \fRFlash Upgrading an IB HCA Device
.sp
.LP
The following command flash upgrades an IB HCA device.

.sp
.in +2
.nf
example# \fBfwflash -f ./version.3.2.0000 \\
	 -d /devices/pci@0,0/pci8086,3597@4/pci15b3,6278@0:devctl\fR
About to update firmware on:
 /devices/pci@0,0/pci8086,3597@4/pci15b3,6278@0:devctl
Continue (Y/N): \fBY\fR

Updating . . . . . . . . . . . .
Done.  New image will be active after the system is rebooted.
.fi
.in -2
.sp

.sp
.LP
Note that you are prompted before the upgrading proceeds and that it is
mandatory to reboot your host to activate the new firmware image. 

.sp
.LP
The following example adds the \fB-y\fR option to the command:

.sp
.in +2
.nf
example# \fBfwflash -y -f ./version.3.2.0000 \\
	 -d /devices/pci@0,0/pci8086,3597@4/pci15b3,6278@0:devctl\fR
About to update firmware on:
 /devices/pci@0,0/pci8086,3597@4/pci15b3,6278@0:devctl

Updating . . . . . . . . . . . .
Done.  New image will be active after the system is rebooted.
.fi
.in -2
.sp

.LP
\fBExample 4 \fRReading Device Firmware to File
.sp
.LP
The command shown below reads the device firmware to a file. The command uses
the \fB-y\fR option so that the read operation occurs without prompting.

.sp
.in +2
.nf
example# \fBfwflash -y -r /firmware.bin \\
	 -d /devices/pci@1d,700000/pci@1/pci15b3,5a44@0:devctl\fR
About to read firmware on:
        /devices/pci@1d,700000/pci@1/pci15b3,5a44@0:devctl
to filename: /firmware.bin

Reading . . .
Done.
.fi
.in -2
.sp

.LP
\fBExample 5 \fRNo flashable devices found
.sp
.LP
The command output shown below reports to the user that there are no supported
flashable devices found in the system:

.sp
.in +2
.nf
example# \fBfwflash -l\fR
fwflash: No flashable devices attached with the ses driver in this system
fwflash: No flashable devices attached with the sgen driver in this system
fwflash: No flashable devices attached with the tavor driver in this system
fwflash: No flashable devices in this system
.sp
.in -2
Each plugin found in /usr/lib/fwflash/identify is loaded in turn, and walks
the system device tree determining whether any currently-attached devices
exist that can be flashed. For the list of device types and drivers that are
currently supported, please see the NOTES section below.



.SH RETURN VALUES
.sp
.LP
The \fBfwflash\fR command returns the following values:
.sp
.ne 2
.mk
.na
\fB\fB0\fR\fR Success
.RE

.sp
.ne 2
.mk
.na
\fB\fB1\fR\fR Failure
.RE

.SH ATTRIBUTES
.sp
.LP
See \fBattributes\fR(5) for descriptions of the following attributes:
.sp

.sp
.TS
tab() box;
cw(2.75i) |cw(2.75i) 
lw(2.75i) |lw(2.75i) 
.
ATTRIBUTE TYPEATTRIBUTE VALUE
_
AvailabilitySUNWfwflash
.TE

.SH SEE ALSO
.sp
.LP
\fBattributes\fR(5), \fBses\fR(7D), \fBsgen\fR(7D), \fBtavor\fR(7D)
.sp
The InfiniBand Trade Association website, http://www.infinibandta.org
.sp
The SCSI Storage Interfaces committee website, http://www.t10.org
.sp
SCSI Primary Commands-4, SPC4
.sp
SCSI Enclosure Services-2, SES2
.sp
Serial Attached SCSI-2, SAS2
.sp
.LP
.SH NOTES
.sp
.LP
The \fBfwflash\fR command supports
.sp
.in +4
* InfiniBand Host Channel Adapters (IB HCAs) containing either the AMD or the
Intel parallel flash parts. The \fBtavor\fR(7D) HCA driver is required. 
.sp

* SCSI Enclosure Services devices such as SAS Expanders, attached with either
the \fBsgen\fR(7D) or \fBses\fR(7D) drivers.


--Boundary_(ID_MULOEhHp0ehhq1hbmuFfDA)
Content-type: text/plain; name=fwflash.1m.diffs
Content-transfer-encoding: 7BIT
Content-disposition: inline; filename=fwflash.1m.diffs

--- fwflash.1m.orig	Fri Mar 28 17:02:35 2008
+++ fwflash.1m	Mon Mar 31 09:07:09 2008
@@ -10,18 +10,17 @@
     | [\fB-v\fR] | [\fB-h\fR]
 .fi
 
 .LP
 .nf
-\fBfwflash\fR  [\fB-f\fR \fIfile\fR | \fB-r\fR \fIfile\fR]
-    [\fB-y\fR] [\fB-d\fR \fIdev_spec\fR]
+\fBfwflash\fR  [\fB-f\fR file1,file2,file3,... | \fB-r\fR file] [\fB-y\fR] [\fB-d\fR device_path]
 .fi
 
 .SH DESCRIPTION
 .sp
 .LP
-The \fBfwflash\fR command writes a binary image file to flash devices of an HBA or HCA device. It also provides the ability to read firmware to a file if supported by the device. Because changing the firmware in a device can have significant impact on the stability of a system,
+The \fBfwflash\fR command writes a binary image file to supported flashable devices attached to a Solaris host. It also provides the ability to read firmware to a file if supported by the device. Because changing the firmware in a device can have significant impact on the stability of a system,
 only users with the privilege \fBAll\fR are allowed to execute this command. Users authorized to run \fBfwflash\fR can be granted the "Firmware Flash Update" Rights Profile.
 .sp
 .LP
 The first form of the command, above, provides information about devices. It lists all devices currently available on the system and supported by \fBfwflash\fR for firmware upgrade. You can filter the list operation, to display only specified classes of devices. The second form
 of the command provides the operations to read or write the firmware images to specific devices.
@@ -35,35 +34,38 @@
 .na
 \fB\fB-c\fR \fIdevice_class\fR\fR
 .ad
 .sp .6
 .RS 4n
-An optional parameter, valid only when used with the \fB-l\fR option. This option causes the command to list only devices of a specific class type. Currently supported classes are \fBIB\fR or \fBALL\fR. If \fB-c\fR is not specified
+An optional parameter, valid only when used with the \fB-l\fR option. This option causes the command to list only devices of a specific class type. Currently supported classes are \fBIB\fR, \fBses\fR, \fBsgen\fR or \fBALL\fR. If \fB-c\fR is not specified
 for the \fB-l\fRoption, the class defaults to \fBALL\fR.
 .RE
 
 .sp
 .ne 2
 .mk
 .na
-\fB\fB-d\fR \fIdev_spec\fR\fR
+\fB\fB-d\fR \fIdevice_path\fR\fR
 .ad
 .sp .6
 .RS 4n
-The \fIdev_spec\fR is an identifier of the device that the user wants to modify with the \fB-f\fRor \fB-r\fR operation. \fIdev_spec\fR can be either the absolute path name as displayed in the \fB-l\fR listing
-or as the device number from the same listing. If the device cannot be found, the command fails.
+The \fIdevice_path\fR is the absolute path name of the device that the user wants to modify with the \fB-f\fR operation. If the device cannot be found, the command fails. If the \fB-d\-fR flag is specified, then either \fB-f\fR or \fB-r\fR must also be specified.
 .RE
 
 .sp
 .ne 2
 .mk
 .na
-\fB\fB-f\fR \fIfile\fR\fR
+\fB\fB-f\fR file1,file2,file3,...\fR
 .ad
 .sp .6
 .RS 4n
-Specify the path to a binary firmware file you want to write to the device. \fBfwflash\fR will verify that the file is a valid firmware binary for the \fIdev_spec\fR specified. If it is not, the command fails with an appropriate error message.
+Specify the path to one or more binary firmware image files you want to write to the device. \fBfwflash\fR will verify that each file is a valid firmware image for the specified device. If it is not, the command fails with an appropriate error message.
+
+If multiple firmware image files are specified, each image is verified and flashed to the device in the order given on the command line. If any of the specified files can not be successfully flashed, then an appropriate message is printed. 
+
+A reboot is required after a new firmware image is flashed to a device, in order to correctly activate the new firmware.
 .RE
 
 .sp
 .ne 2
 .mk
@@ -70,11 +72,11 @@
 .na
 \fB\fB-h\fR\fR
 .ad
 .sp .6
 .RS 4n
-List the command line help for \fBfwflash\fR.
+List the command line usage message for \fBfwflash(1M)\fR.
 .RE
 
 .sp
 .ne 2
 .mk
@@ -83,12 +85,13 @@
 .ad
 .sp .6
 .RS 4n
 List the devices on a system available for firmware upgrade and display information specific to each device or device class.
 .sp
-For InfiniBand (IB) devices, the list operation  displays the \fBguid\fRs (Globally Unique Identifier) currently set for the HCA, as well as the current firmware revision installed. There are four separate \fBguid\fRs on the HCA; two of them can be set with the
-same value.
+For InfiniBand (IB) devices, the list operation  displays the \fBguid\fRs (Globally Unique Identifier) currently set for the HCA, as well as the current firmware revision installed. There are four separate \fBguid\fRs on the HCA; two of them can be set to the same value.
+
+For SCSI Enclosure Services (ses or sgen) devices, an identifying target-port world wide name is displayed, if available. 
 .RE
 
 .sp
 .ne 2
 .mk
@@ -95,11 +98,13 @@
 .na
 \fB\fB-r\fR \fIfile\fR\fR
 .ad
 .sp .6
 .RS 4n
-Specify the path to a file to create when reading the firmware from the device. The \fB-f\fR and \fB-r\fR options are mutually exclusive.
+Specify the name of a file to create when reading the firmware from the device. The \fB-f\fR and \fB-r\fR options are mutually exclusive. 
+
+Not all flashable devices support reading firmware images back from the device. At present, only InfiniBand (IB) devices are supported for this operation. A message will be printed if the selected device does not support this operation.
 .RE
 
 .sp
 .ne 2
 .mk
@@ -106,11 +111,11 @@
 .na
 \fB\fB-v\fR\fR
 .ad
 .sp .6
 .RS 4n
-Output \fBfwflash\fR version information and exit.
+Print \fBfwflash\fR version information and exit.
 .RE
 
 .sp
 .ne 2
 .mk
@@ -117,11 +122,15 @@
 .na
 \fB\fB-y\fR\fR
 .ad
 .sp .6
 .RS 4n
-Valid during an \fB-f\fR or \fB-r\fR operation, causes \fBfwflash\fR not to prompt for confirmation during operation and operate non-interactively.
+Valid only when a flash read (\fB-r\fR) or write (\fB-f\fR) operation is
+specified, this option causes \fBfwflash\fR not to prompt for confirmation
+during operation and operate non-interactively. Note that there is no option
+that will allow you to forcibly flash an incompatible firmware image onto a
+device. 
 .RE
 
 .SH EXAMPLES
 .LP
 \fBExample 1 \fREntering Command Without Arguments
@@ -131,16 +140,36 @@
 
 .sp
 .in +2
 .nf
 example# \fBfwflash\fR
-Usage: fwflash [-l [-c <device_class> | ALL]] | [-v] | [-h]
-              [-f <file> | -r <file>]  [-y] [-d <dev_spec>]
-.fi
-.in -2
-.sp
 
+Usage:
+        fwflash [-l [-c device_class | ALL]] | [-v] | [-h]
+        fwflash [-f file1,file2,file3,... | -r file] [-y] -d device_path
+
+
+        -l              list flashable devices in this system
+        -c device_class limit search to a specific class
+                        eg IB for InfiniBand, ses for SCSI Enclosures
+        -v              print version number of fwflash utility
+        -h              print this usage mesage
+
+        -f file1,file2,file3,...
+                        firmware image file list to flash
+        -r file         file to dump device firmware to
+        -y              answer Yes/Y/y to prompts
+        -d device_path  pathname of device to be flashed
+
+        If -d device_path is specified, then one of -f <files>
+        or -r <file> must also be specified
+
+        If multiple firmware images are required to be flashed
+        they must be listed together, separated by commas. The
+        images will be flashed in the order specified.
+
+
 .LP
 \fBExample 2 \fRListing Devices Available to Flash
 .sp
 .LP
 The following command lists the devices available to be flashed.
@@ -156,11 +185,11 @@
        GUID: System Image - 0002c901081e33b3
              Node         - 0000000000003446
              Port 1       - 0002c901081e33b1
              Port 2       - 0002c901081e33b2
        Firmware revision: 3.3.0002
-       No HW information available
+       No hardware information available for this device
 
 Device[1],  /devices/pci@0,0/pci8086,3597@4/pci15b3,6278@0:devctl
    Class [IB]
        GUID: System Image - 0002c9010a99e3b3
              Node         - 0002c9010a99e3b0
@@ -171,22 +200,38 @@
        PSID              : MT_00B0000001
 .fi
 .in -2
 .sp
 
+Alternatively, for a SAS Expander presented as a SCSI Enclosure Services device, we might see output such as this:
+
+.sp
+.in +2
+.nf
+example# \fBfwflash -l\fR
+List of available devices:
+Device[0] /devices/pci@0/pci@0/pci@2/scsi@0/ses@3,0:ses
+  Class [sgen]
+        Target port WWN  : 500605b00002453d
+        Vendor           : SUN     
+        Product          : 16Disk Backplane
+        Firmware revision: 5021
+
+
 .LP
 \fBExample 3 \fRFlash Upgrading an IB HCA Device
 .sp
 .LP
 The following command flash upgrades an IB HCA device.
 
 .sp
 .in +2
 .nf
-example# \fBfwflash -f ./version.3.2.0000 -d 0\fR
+example# \fBfwflash -f ./version.3.2.0000 \\
+	 -d /devices/pci@0,0/pci8086,3597@4/pci15b3,6278@0:devctl\fR
 About to update firmware on:
- /devices/pci@1d,700000/pci@1/pci15b3,5a44@0:devctl
+ /devices/pci@0,0/pci8086,3597@4/pci15b3,6278@0:devctl
 Continue (Y/N): \fBY\fR
 
 Updating . . . . . . . . . . . .
 Done.  New image will be active after the system is rebooted.
 .fi
@@ -193,22 +238,24 @@
 .in -2
 .sp
 
 .sp
 .LP
-Note that you are prompted before the upgrading proceeds.
+Note that you are prompted before the upgrading proceeds and that it is
+mandatory to reboot your host to activate the new firmware image. 
 
 .sp
 .LP
-The following command adds the \fB-y\fR option to the preceding command.
+The following example adds the \fB-y\fR option to the command:
 
 .sp
 .in +2
 .nf
-example# \fBfwflash -y -f ./version.3.2.0000 -d 0\fR
+example# \fBfwflash -y -f ./version.3.2.0000 \\
+	 -d /devices/pci@0,0/pci8086,3597@4/pci15b3,6278@0:devctl\fR
 About to update firmware on:
- /devices/pci@1d,700000/pci@1/pci15b3,5a44@0:devctl
+ /devices/pci@0,0/pci8086,3597@4/pci15b3,6278@0:devctl
 
 Updating . . . . . . . . . . . .
 Done.  New image will be active after the system is rebooted.
 .fi
 .in -2
@@ -216,50 +263,68 @@
 
 .LP
 \fBExample 4 \fRReading Device Firmware to File
 .sp
 .LP
-The command shown below reads the device firmware to a file. The command uses the \fB-y\fR option so that read occurs without prompting.
+The command shown below reads the device firmware to a file. The command uses
+the \fB-y\fR option so that the read operation occurs without prompting.
 
 .sp
 .in +2
 .nf
-example# \fBfwflash -y -r /firmware.bin -d 1\fR
+example# \fBfwflash -y -r /firmware.bin \\
+	 -d /devices/pci@1d,700000/pci@1/pci15b3,5a44@0:devctl\fR
 About to read firmware on:
-        /devices/pci@0,0/pci8086,3596@3/pci15b3,6278@0:devctl
+        /devices/pci@1d,700000/pci@1/pci15b3,5a44@0:devctl
 to filename: /firmware.bin
 
 Reading . . .
 Done.
 .fi
 .in -2
 .sp
 
+.LP
+\fBExample 5 \fRNo flashable devices found
+.sp
+.LP
+The command output shown below reports to the user that there are no supported
+flashable devices found in the system:
+
+.sp
+.in +2
+.nf
+example# \fBfwflash -l\fR
+fwflash: No flashable devices attached with the ses driver in this system
+fwflash: No flashable devices attached with the sgen driver in this system
+fwflash: No flashable devices attached with the tavor driver in this system
+fwflash: No flashable devices in this system
+.sp
+.in -2
+Each plugin found in /usr/lib/fwflash/identify is loaded in turn, and walks
+the system device tree determining whether any currently-attached devices
+exist that can be flashed. For the list of device types and drivers that are
+currently supported, please see the NOTES section below.
+
+
+
 .SH RETURN VALUES
 .sp
 .LP
 The \fBfwflash\fR command returns the following values:
 .sp
 .ne 2
 .mk
 .na
-\fB\fB0\fR\fR
-.ad
-.sp .6
-.RS 4n
-Success
+\fB\fB0\fR\fR Success
 .RE
 
 .sp
 .ne 2
 .mk
 .na
-\fB\fB1\fR\fR
-.ad
-.sp .6
-.RS 4n
-Failure
+\fB\fB1\fR\fR Failure
 .RE
 
 .SH ATTRIBUTES
 .sp
 .LP
@@ -278,11 +343,31 @@
 .TE
 
 .SH SEE ALSO
 .sp
 .LP
-\fBattributes\fR(5), \fBtavor\fR(7D)
+\fBattributes\fR(5), \fBses\fR(7D), \fBsgen\fR(7D), \fBtavor\fR(7D)
+.sp
+The InfiniBand Trade Association website, http://www.infinibandta.org
+.sp
+The SCSI Storage Interfaces committee website, http://www.t10.org
+.sp
+SCSI Primary Commands-4, SPC4
+.sp
+SCSI Enclosure Services-2, SES2
+.sp
+Serial Attached SCSI-2, SAS2
+.sp
+.LP
 .SH NOTES
 .sp
 .LP
-The \fBfwflash\fR command supports IB class HCA cards containing either the AMD or the Intel parallel flash parts. The \fBtavor\fR(7D) HCA driver
-is required.
+The \fBfwflash\fR command supports
+.sp
+.in +4
+* InfiniBand Host Channel Adapters (IB HCAs) containing either the AMD or the
+Intel parallel flash parts. The \fBtavor\fR(7D) HCA driver is required. 
+.sp
+
+* SCSI Enclosure Services devices such as SAS Expanders, attached with either
+the \fBsgen\fR(7D) or \fBses\fR(7D) drivers.
+

--Boundary_(ID_MULOEhHp0ehhq1hbmuFfDA)--

From James.McPherson@sun.com Fri May 16 06:40:47 2008
Received: from sunmail4.singapore.sun.com (sunmail4.Singapore.Sun.COM [129.158.71.19])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id m4GDekSC024157
	for <psarc-ext@sac.sfbay.Sun.COM>; Fri, 16 May 2008 06:40:46 -0700 (PDT)
Received: from nwk-avmta-1.SFBay.Sun.COM (nwk-avmta-1.SFBay.Sun.COM [129.146.11.74])
	by sunmail4.singapore.sun.com (8.13.4+Sun/8.13.3/ENSMAIL,v2.2) with ESMTP id m4GDeeCn026830
	for <@sunmail2sca.sfbay.sun.com:psarc-ext@sun.com>; Fri, 16 May 2008 21:40:45 +0800 (SGT)
Received: from pmxchannel-daemon.nwk-avmta-1.sfbay.Sun.COM by
 nwk-avmta-1.sfbay.Sun.COM
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0K0Y0040TRBUCS00@nwk-avmta-1.sfbay.Sun.COM> for psarc-ext@sun.com
 (ORCPT psarc-ext@sun.com); Fri, 16 May 2008 06:40:42 -0700 (PDT)
Received: from sineb-mail-2.sun.com ([192.18.19.7])
 by nwk-avmta-1.sfbay.Sun.COM
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0K0Y002Z0RBTP200@nwk-avmta-1.sfbay.Sun.COM> for
 psarc-ext@sun.com (ORCPT psarc-ext@sun.com); Fri,
 16 May 2008 06:40:42 -0700 (PDT)
Received: from fe-apac-05.sun.com
 (fe-apac-05.sun.com [192.18.19.176] (may be forged))
	by sineb-mail-2.sun.com (8.13.6+Sun/8.12.9) with ESMTP id m4GDfP8R004758	for
 <psarc-ext@sun.com>; Fri, 16 May 2008 13:41:25 +0000 (GMT)
Received: from conversion-daemon.mail-apac.sun.com by mail-apac.sun.com
 (Sun Java System Messaging Server 6.2-6.01 (built Apr  3 2006))
 id <0K0Y00J01RB6JT00@mail-apac.sun.com>
 (original mail from James.McPherson@Sun.COM)
 for psarc-ext@sun.com (ORCPT psarc-ext@sun.com); Fri,
 16 May 2008 21:40:27 +0800 (SGT)
Received: from [192.168.1.35] ([220.157.71.44])
 by mail-apac.sun.com (Sun Java System Messaging Server 6.2-6.01 (built Apr  3
 2006)) with ESMTPSA id <0K0Y00403RBDPGR5@mail-apac.sun.com> for
 psarc-ext@sun.com (ORCPT psarc-ext@sun.com); Fri,
 16 May 2008 21:40:27 +0800 (SGT)
Date: Fri, 16 May 2008 23:40:39 +1000
From: "James C. McPherson" <James.McPherson@sun.com>
Subject: Re: Pluggable fwflash(1M) [PSARC/2008/151 FastTrack timeout 03/04/2008]
Sender: James.McPherson@sun.com
To: psarc-ext@sun.com
Reply-to: James.McPherson@sun.com
Message-id: <482D8ED7.4040909@Sun.COM>
Organization: Sun Microsystems
MIME-version: 1.0
Content-type: text/plain; format=flowed; charset=UTF-8
Content-transfer-encoding: 7BIT
X-PMX-Version: 5.4.1.325704
User-Agent: Thunderbird 2.0.0.12 (X11/20080422)
Status: RO
Content-Length: 451


Dear all,
One minor addition to the spec for Pluggable fwflash(1M):
delivery of 64bit entities for each of the verification and
identification plugins.

These will go into

usr/lib/fwflash/verify/$ISA and
usr/lib/fwflash/identify/$ISA


The CR tracking these changes is

6688492 fwflash needs 64bit plugins



James C. McPherson
--
Senior Kernel Software Engineer, Solaris
Sun Microsystems
http://blogs.sun.com/jmcp	http://www.jmcp.homeunix.com/blog

