
RELEASE NOTES FOR TIGER HSCBP T4HSC14 CODE  11/02/04



Hex file:  T4HSC14.hex 



Hex image Checksum  : 0x3042	Cmpl : 0xCFBE

Operational mode:       Major 1, Minor 14
Flash update mode:      Major 1, Minor 10
Config Version :	Major 1, Minor 10

Boot Code Address Range :  0x7C000 - 0x7FFFF
Op   Code Address Range :  0x61000 - 0x7A387

HEX CODE FILE:  T4HSC14.HEX   11/02/04  357,167 bytes


INFOBLOCK INFORMATION RETURNED BY: FWUPDATE T4HSC14.HEX /INFOBLOCK

OP CHECKSUM:		0x2CBE  (DIB ONLY)
BOOT CHECKSUM:		0x4C1B	(DIB ONLY)


*  The following checksum were calculated using the Firmware Range Checksum command. *

Utility Version 2.7 (Built: Sep 15 2004)

Boot code checksums (match data from Range Checksum command):
	Boot code (0x7C000 - 0x7FFFF): 0x6e0b

Operational code checksums (match data from Range Checksum command):
	Section 1 (0x61000 - 0x6FFFF): 0x6221
	Section 2 (0x70000 - 0x7A387): 0xd38a
	Overall   (0x61000 - 0x7A387): 0x135ab


==============
KNOWN ISSUES: 
==============

1)  The boot code is not update able due to our hardware implemetation for the HSBP.  
    Therefore, if you try to update the boot code, the FWupdate utilities will display an 
    error message to show that the boot code was not verified successfully.  

2)  This version should be used with BMC16 or latter to resolve the BMC/HSC 
    communication problems.

3)  This version only runs on Pre-beta or later HW with GEM359 controller.  Do not 
    install this version on Alpha SCSI BP, which does not have the GEM359 controller.  
    It might cause your Alpha HW to stop functioning. 

=============================================================================
                           ISSUES FIXED
=============================================================================
T4HSC14:
--------
1> Fixed DR #39472 (HSC: "Set Event Receiver" generates unexpected SEL entries).
   Drive Inserted/Presence and Drive Removed/Absent events will not be genearated
   on boot.

-----------------------------------------------------------------------------
The following are the release notes from Qlogic with changes that are included 
in this release.
------------------------------------------------------------------------------




                 QLogic(R) GEM359 SAF-TE/IPMI Firmware



                          SAF-TE/IPMI Firmware

     ========================================================

                            Version 1.10A5

                           (October 12, 2004)





------------

INTRODUCTION

------------



This file contains the following:



 - Product Enhancements

 - Recent Bug Fixes

 - Known Issues

 



Hex file:  



  I359V110A5SAFTEIPMIFlashimage.hex -   is the complete booter/runtime/configuration

                                          file in INTEL EXTENDED HEX Format for use 

                                          with an Intel PA28F400BX-T or compatible flash ram.

 

   NOTE: This Version is not compatible with previous versions.  Both Boot and Runtime

        code must be used.



--------------------

PRODUCT ENHANCEMENTS

-------------------- 



V1.00A1

-------   

     - Initial pre-release



V1.00A3

-------



1).  Added additional checks for errors when erasing and updating flash.



2).  Added a kickstart routine in the idle loop to speed up processing pending

     messages.  Was waiting for 50ms timer or other interrupt to kickstart this 

     process.



3).  Changed several one or two line functions to inline to speed up code execution.



4).  Changed the processing of a slave packet from being processed on a 50ms interrupt

     to being processed in the Idle loop.



V1.01

-------



5).  Added the following IPMI functions:

        Broadcast Get Device ID,

        Get/Set Sensor Threshold,

        Get/Set Event Receiver,

        Get/Set Sensor Hysteresis,

        Get/Set Sensor Event Enable,

        Get Sensor Event Status,

        Get Sensor Reading,

        Set Power Supply state,

        Get Fault Status.



6).  Added Event Generation code.



7).  Added foreground polling for LM75's.



8).  Added FRU processing.



9).  Added Function to read all tachs at the same time and save values in a buffer. 



10). Added SDRR's and cross reference to element table.



11). Added new config paramenters for INTEL to the default config.



12). Added capabilities to read/write EEPROMS.



13). Added capability to get the I2C port attached to the LM75's from config parameters.



14). Added capability to get IPMB port for Event Generation from the config parameters.



V1.01A5

-------



15). Added MasterWriteReadI2C function.



V1.01A6

-------



16). Added code for get enclosure status, get enclosure configuration and get device 

     slot status.



V1.03A1

-------



17). Added default fan tach capabilities with SDRR's for 3 fan tachs. SDRR's for fan 

     installed were not implemented.



V1.03A4

-------



18). Added erase/update support for AMD AM29F400BT or Fujitsu MBM29F400TC flashes.



V1.04A2

-------



19). Added watchdog timer support.



20). Added SCSI to I2C pass-through support.



21). Added runtime file length to header.



22). Added support for up to 8 LM75's per I2C port.



23). Added support for SEEPROMs 24C01,24C04,24C08,24C16,24C17,24C32 and 24C64.

     Previously only supported 24C02's,



V1.06A1

-------



24). Added new LED flash rates and patterns.

 



V1.06A2

-------



25). Added new LED model select bit input Function Type and support for multiple 

     LED models. Models can be configured to be selectable at run time. 



V1.06A3

-------



26). Added booter FW revision information to run-time Get Device Id response.



V1.06B2

-------



27). Changed the method of processing sensor information. Now sensors are only read

     if the scan bit is active in the SDRR for the sensor.  If the scan bit is 

     inactive, and a read sensor command is received, the data returned is the value

     saved from the last read of the sensor with the scan bit active.  Previously

     the saved value was being updated by the SAF-TE element processing controlled 

     by the Polling enable flag in the configuration and/or the read once after 

     receiving a SAF-TE Enclosure Status command.



V1.08A1

-------



28). Added I2C SMB handler for processing the Intel Specific SMB commands - GetDeviceId, 

     Enter Firmware Transfer Mode, Exit Firmware Transfer Mode, GetSelfTestResults, 

     Firmware Program, Firmware Read, Get Firmware Range Checksum, and Set Program 

     Segment in Booter and Enter Firmware Transfer Mode, GetSelfTestResults, and 

     GetDeviceId in runtime.



29). Added I2C recovery and I2C keep alive capabilities.(Refered to as I2C WatchDog).



V1.09A1

-------



30). Changed SMBus handling from a Byte Write/Read protocol to a Block Write/Read 

     protocol.  This changed the SMBus handling to expect to receive a Block Write

     command to do something and then receive a Block Read command to return the 

     status of the Block Write command.  Previously the status was returned in the

     Read portion of the write/read command.



V1.10A2

-------



30). Changed the hardcoded Slot ID values from:

	ID_ON0 -> Slot ID's 0, 1, 2, 3, 4, 8, 9

        ID_ON1 -> Slot ID's 10, 11, 12, 13, 14, 15, 0

     to:

	ID_ON0 -> Slot ID's 0, 1, 2, 3, 4, 5, 0

        ID_ON1 -> Slot ID's 10, 11, 12, 13, 14, 15, 0



     per Intel Request





----------

BUG FIXES

----------

  

V1.00A2 

-------



1).  Corrected limits error checking in Get Firmware Range Checksum function.

     Now returns the proper error if input parameters are out of range.



2).  Corrected a problem with the RUNTIME error reported by the Get Self Test

     function. The error flag was being reset in the wrong place.



3).  Corrected a problem with the Enter Firmware Transfer function while in

     Booter.  This caused the a reset which cleared the stay in Booter flag.

      

4).  Corrected a problem where Booter only functions return the error code 0xD1

     if executed in RUNTIME.



5).  Changed I2C address configuration from the setting of the ID-ON jumper from

     selecting C0 when jumper installed to selecting C2 when jumper installed

     and C0 without jumper.

                 

V1.00A3

-------



6).  Fixed a problem where the flash suspend was not completed before placing 

     flash back on line when an I2C interrupt is detected during a flash erasure.



7).  Fixed a problem where flash parameter block 1 was not being erased when the INTEL

     firmware downloader updated the runtime and config code. This block is currently

     not being used and is reserved but the INTEL firmware downloader loads over 

     this region to load the configuration information in parameter block2.  This

     did not currently cause a problem but could if this block is used later.



8).  Fixed a problem where the BOOT code could have been updated erroneously by the 

     INTEL downloader. The erase function prevents erasing but the downloader could

     have tried to overwrite the block with download address error.       



9).  Fixed a problem in the I2C logic where the current I2C register selection could 

     have been lost by an I2C interrupt.  Added a save and restore I2C register 

     selection in interrupt handler.



10). Fixed several re-entry problems in the I2C driver which caused the GEM to hang.



V1.01

-------        



11). Changed get_NB_Data function to return data requested to the temp area or a

     location specified in parameter 2.



12). Changed SCSI interface to return NOT READY STATUS for Enclosure Status and 

     Enclosure Config requests until parameters are ready.



13). Changed firmware version numbers from version 2.00 to 1.01 for INTEL.



V1.01A4 

-------



14). V101A4 released to Intel was labeled V101A3 in VSS.



V1.01A5

-------

 

15). Changed the default configuration for the I2C port from 0 to 1.



16). Change default for FaultLightState to all LEDs off.



17). Reversed logic for FaultLightState to allow LEDs to operate normally when fault

     light state is off and just turn LED on when state is set to on.



18). Changed RdBuff to return error condition for unsupported buffer ID per spec. 



19). Fixed the check and error return for incorrect request data length in all IPMI

     functions.



20). Fixed the check and error return for invalid Safte buffer ID per spec.



21). Fixed the default to return error for unsupported or invalid Wr Buffer IDs. 



22). Corrected the data segment declaration for Sense buffers to match segment definition

     in the downloader code. This fixes incorrect sense key returns while in IPMI booter.



23). Changed Wr Buff length = 0 case to return good (per spec.) to avoid hanging SCSI Bus.



24). Fixed the Sense Error returns to match Sense, ASC, ASCQ values defined in Intel spec.



25). Fixed the Wr Buff FW Download code to return Sense, invalid command,  instead of

     setting Boot Flags.  Per Intel Spec, SCSI Firmware download is not supported

     with IPMI booter. 



26). Fixed the I2C tranfser code to prevent transfer while were are in "reset" or a 

     transition from booter or to booter.



27). Changed Error completion code for invalid sensor number to 0xCC

     (COMP_CODE_INVALID_DATA_FIELD) for

         GetFruInvAreaInfoReq,

         ReadFruInvDataReq,

         WriteFruInvDataReq,

         SetSensorHysteresis, 

         GetSensorHysteresis,

         SetSensorThreshold, 

         GetSensorThreshold, 

         SetSensorEventEnable, 

         GetSensorEventEnable, 

         GetSensorReadingReq, and 

         GetSensorEventStatus.



28). Fixed a problem where a short command ("Invalid" for example) is process just at the

     time a new command is received, the flag that keeps track of a command pending may be

     cleared. This causes the pending command to delay until a new command is received. 

     Changed the flag to an increment/decrement type operation to insure a command isn't 

     left pending.



29). Changed the Get/Set Hysteresis, Get/Set Thresholds, and Set Event Enable to return 

     0xCD (Illegal Request) error code, if the command is illegal for given sensor, based 

     on its capabilities defined in SDR.



30). Changed Get Event Enable to return "good" with minimum data (Overall byte) if All 

     Events were disabled on the sensor.



31). Changed Set Event Enable to return "good" after setting the overall byte if All events

     are disabled.



32). Changed loop to clear any bytes in request less than max in Set Event Enable to avoid

     incorrect setting of event message bits.  Per Spec, mask bytes not included in request

     are treated as 0x00. 



33). Corrected the defined value for IPMB_GET_SENS_HYST_REQ_LENGTH to include required 

     reserved byte.



34). Changed SetSensorHysteresis and GetSensorHysteresis to return an error code of 0xCC 

     (COMP_CODE_INVALID_DATA_FIELD) for an "invalid" reserved byte in request.



35). Changed FindSensorNumber to return 'Not Found' (Invalid Sensor Number) for Reserved 

     Sensor Number.



36). Changed InitEventReqXmitSvc to initialize the event receiver to the default value

     in configuration.



37). Changed GetFirmwareCheckSum to return "good", checksum equal to zero, in the case of 

     starting address larger that ending address.



38). Changed GetFaultState to ignore sensor types other that those which have fault status

     explicitly maintained. This prevents returning an error for other sensor types defined

     in SDR.



39). Changed initialization of event receiver from POR/RESET Init time to Set Event Receiver

     command.



V1.01A6

-------



40). Changed pre-irqhandler back to V1.00A3 version for runtime compatibility with Booter. 

     This fix along with the fix in the C-code interrupt handler fixed the busy problem 

     when executing V1.01A5 Runtime with V1.00A3 Booter.



41). Changed saving the compiler activated library function variables, from being saved in 

     the pre-irqhandler to the Common "C-code" interrupt handler.  This keeps the mirrored

     pre-irqhandler the same in runtime and booter for backwards compatibility.



V1.01A7

-------



42). Test version



V1.01A8

-------



43). Test version



V1.02A1

-------



44). Changed runtime Get Device ID to get Configuration Area Revision values. 



45). Changed Get Device ID to use indexed addressing when building the response packet

     instead of a local pointer (saves about 250 bytes and 11 lib calls). 



V1.02A2

-------



46). Corrected revision number.



47). Changed net function from 0x06 to 0x30 on: 

         Get/Set Fault State,

         Get Enclosure Configuration,

         Get Slot Status,

         Get Enclosure Status.



48). Changed completion code for an invalid IPMI command in runtime from 0xD1 to 0xC1.



49). Corrected bug in Firmware Check Sum generation that occurs when data is shorter than

     buffer length of 0xff. 



50). Changed slot power control to function per instruction from INTEL.



51). Changed to a 250-500 msec delay between device insertion and slot power being applied.



V1.03A1

-------



52). Fixed RearmSensorEvents to rearm and generate a message whenever a new SetEventReceiver

     cmd is received.



53). Changed Event Data Bytes sent in platform message for Discrete sensor to match spec.



54). Changed initialization of the GPIO's used for Slot Power (for INTEL) to power off

     at the beginning of booter.  Then after ~250ms delay look for each slot occupied

     and activate slot power to that slot delaying 50ms between slots.



55). Changed door lock status returned to 0x01, when the door lock is not installed.



56). Fixed a problem which occurred when an incorrect odd length range checksum was requested.



57). Fixed a problem which occurred when an incorrect range checksum for requested lengths

     greater that 254 bytes.



58). Changed the code to return a 1 byte checksum when the starting address == ending address.



59). Corrected intermittant checksum error which occurred when

       starting address > ending address > 0xff18.



60). Fixed Get_FW_Data function to prevent read wrap-arounds. Also it now returns good,

     with no data, on a zero length read. 



61). Changed Get_Device_ID to use the common defined version labels.



62). Changed Read Buffer upload configuration, while in booter, from returning data to 

     returning an error based on IPMI boot code.



63). Relocated Boot jumper check, for Intel code only, to allow checksum test to run when

     Boot jumper is installed.  This provides correct POR status to a GetSelfTestResults

     command even with Boot jumper installed.



64). Added slot ids for INTEL code based on SCSI Jumper setting.



65). Added saving library declared variable(FP_L00) to stack on an interrupt.

     Variable is current not being used in our code.



66). Fixed a problem where the Diagpoll function cleared the tach registers before they 

     could be read and used by the event generation code. 



67). Changed code to get the upper and lower fan tach values from the SDR instead of from

     the configuration file.



V1.03A2

-------



68). Changed SCSI Invalid Buffer ID error response from	05,26,02 to 05,24,00.



69). Changed unsupported SCSI command error response from 05,26,02 to 05,20,00.



70). Changed Inquiry reported firmware version from MajorMajorMinorMinor to

     Major"."MinorMinor.



71). Changed the automatic generation of events at POR and SetEventReceiver. Now sets

     compare parameters to current read values and will only generate events if a 

     change is detected.  Note: If an event is failing at POR or SetEventReceiver the

     error condition will never be generated.



72). Changed to a one time reading of temperature sensors when the disable polling 

     temperature sensors flag is active, and a request enclosure status is received.



V1.03A3

-------



73). Fixed firmware revision returned in inquiry from MajorMajorMinorMinor to 

     Major"."MinorMinor.  Entry 110 above changed it for the SES version not the Intel

     version.



74). Changed flash fetch waitstates from 2 to 3 for SPECIAL TEST..



V1.03A4

-------



76). Changed flash fetch waitstates from 3 back to 2, the normal configuration.



77). Changed IPMI version from 1.0 to 1.5



V1.04A1

-------



78). Corrected a loop terminator problem that overwrote ext_reg0_Mask, which controls

     GPIOG[0-7] output, after I2C pass through operation.



79). Fixed an I2C problem caused by reading an I2C register immediately after writing

     to it.  The value read contained the old value before the update.



80). Fixed an I2C problem caused by Enabling slave access to the FIFOs during 

     W_SERVICE.  This causes the loss of the incoming message. 



81). Fixed an I2C problem where the MS_CMD_DONE disappears during a slave transaction.             

     During a slave transaction the I2CMS_CMD_DONE bit is masked away, but the interrupt

     still occurs.



82). Fixed an I2C problem caused by Setting I2CSC_I_NACK while Slave is ACKing a byte. 

     This terminates the ACK.  Setting the I2CSC_I_NACK bit will force a releasing of the

     SDA line by the core.



83). Changed Firmware Revisions returned in GetDeviceId and Inquiry from a defined

     value to the Firmware Version area in the booter or runtime header.



84). Removed extra pin assignment for device insert in default config and adjusted

     offsets for remaining entries.



85). Changed the code to update new_drvinsert to true upon new device insertion.  This bit 

     is used to update the unconfigured drive bit on a Read Slot Status request.



86). Fixed a problem with handling of multiple Device Element Type Descriptor Headers

     in the config parameter block. The index was being reset at the beginning of each

     header therefore the Device Element count was only the count of the last Device 

     Element group.

	  

87). Fixed a problem with the GLOBAL_FAIL_TOOR bit.  It was being incorrectly cleared

     when multiple Type Descriptor Headers for temperature sensor elements were defined

     in the configuration block.



V1.04A2

-------



88). Fixed a problem with the SDRR search routine which caused an error in tach status

     reporting in configurations other than the default configuration.



89). Fixed a problem where the sensors with thresholds were being processed correctly 

     if the SDRR for the sensor did not exist.  Now defaults thresholds to MIN and MAX

     if no SDRR exists and returns an IPMI error code if sensor parameters are requested.



90). Fixed a problem with an index pointer into the SDRR table when the sensor numbers 

     were not sequencial.



91). Fixed a problem with runtime inquiry reporting the firmware version from the Intel

     header instead of the Qlogic header.



92). Fixed a problem where an error code returned from the MasterWriteReadI2C function

     was the result of a logical expression instead of an assigned value.		



93). Added support for Sensor type 0x04, ER Type 0x06 (Fans with a Fan Fail Indicator).



94). Fixed a bug where the global alarm was being toggled with disk fault.  Now is just

     on with disk fault.



95). Fixed a problem with the temperature sensor logic which caused a lockup if no 

     temperature sensors were assigned.  This problem also occurred with no devices

     assigned.



V1.04A3

-------

96). Fixed a problem which caused the firmware to stay in booter if the number of 

     devices were less than or more than 6. This test was originally put in to keep slot

     power active when going from runtime to booter.



V1.05A1

-------

97). Fixed a problem where the GetSensorReading command would not get valid temperature

     data if the disable polling flag was set.  Now reads the temperature sensor once after

     receiving the command.



98). Corrected Event Message Enable Bit handling for sensors with Global Disable Only

     capability. Now is set/cleared at Init time or from the SetEventReceiver command

     based on a valid or invalid Event Receiver ID.

 

99). Fixed a problem with the SensorTriggeredThresholdEvent generation which caused 

     incorrect handling of Low-Going Upper Assertions & Lower Deassertions and High-Going

	 Lower Assertions & Upper deassertions when all bits in the AEM/DEM are set.



100). Fixed a problem with the GetSensorEventEnable command for Threshold sensors. The 

      upper nibble returned 0x7? instead of 0x0?.



101). Corrected the initialization of Enable All Messages and Enable Sensor Scan from

      the Enable/Disable state info of the sensor SDR.



102). Fixed a problem where the watchdog timer caused the Gem to locks up when a large 

      configuration is loaded and the Gem begins POR sequence.

      

103). Fixed a problem where the alarm was being turned off in response to an absence of 

      drive fault condition when the alarm is muted.

      

104). Added check of IPMI UTRM/LTRM for Temperature and Tachometer sensors to verify 

      existance of a valid IPMI Critical threshold before using it for the Saf_Te 

      threshold.  If no valid critical threshold is available, Saf_Te threshold is set to 

      Max or Min to avoid false falures.



105). Fixed a problem where the SCSI SEL was not being handled correctly which caused the

      Gem to ignore SCSI processing.



106). Fixed a problem where the Prep For Operation returned an Incorrect Get Sensor Reading

      Status.



107). Fixed a problem where No Unconfigured Drive Offset was Received in Get Sensor Reading 

      Status.



109). Fixed a problem where Get Sensor Event Enable Status returned incorrect values for 

      Threshold Based Sensors.



110). Fixed a problem where the Initial Update in Progress bit not being cleared after read 

      of the sensor.



V1.05A2

-------

111). Fixed a problem where the	SCSI I/O control signal was randomly active during the 

      selection process which some controllers assumed we are in a reselect state.



112). Added NMI interrupt handler for watchdog handling in banked code memory.  Ocassionally 

      if the watchdog timed out the gem would lockup or reset.



113). Added reset of NMI bit(caused by a watchdog timeout) in interrupt handler.  This 

      caused a multiple resets if watchdog expired.



114). Fixed a problem where the interrupts were enabled before the correct runtime interrupt

      vector was hooked.  This occasionally caused gem to lockup after reset.



115). Changed the Read Slot Status function to return the No Error bit of byte zero as set by

      user regardless of the state of the other bits.  This is required for compatability 

      with some RAID controllers.



116). Changed the Write Slot Status function to set the No Error bit of byte zero as defined

      by the sent data regardless of the state of the other bits.  This is required for 

      compatability with some RAID controllers.



117). Changed the SetEventReciever, GetSensorReading, GetSensorEventEnable, and 

      RearmSensorEvents handlers to improve performance and avoid intermittent watchdog 

      time-outs.



118). Fixed a problem where the Global alarm activated by a set_drive_fault did not 

      deactivate when the drive fault was removed.



119). Changed the additional sense data returned for sense Not Ready from 

      ASC = 35 ASCQ = 02 to ASC = 00 ASCQ = 00, per spec.



120). Changed the status response logic to return currently stored values if a status

      is requested immediately after an update request which may not have completed.

      Previously a SCSI Not Ready was sent until the update request had completed.



121). Fixed a problem where a search pointer was not being reset correctly which prevented

      subsequent sensor re-arms and initial event generation after the first re-arm.



122). Fixed a problem where the GEM would lock up, under heavy I2C requests, during reset.

      The WatchDog timer intemittently expired during initialization and caused a re-entrant

      condition and the return path was lost.  This is not seen in V1.05A1 because the 

      Watchdog was activated after all initialization was completed.  



V1.06A1

-------



123). Fixed a problem with initialization of the SAF-TE NO ERROR flag. Now set by the Write

      Slot Status command.  The Read Slot Status command returns the set condition stored.



124). Fixed a problem with event generation logic where all descrete assertion/deassertion 

      events were not being generated.  Now generates assertion/deassertion events based on 

      sensor conditions and the masks.



125). Changed SCSI ASCQ sense returned for invalid Slot ID to 02.



V1.06A3

-------



126). Reverted booter FW revision from 1.06A3 to 1.06A2.





V1.06B1

-------



127). Reversed the sequence of the Configuration revision and Boot FW revision reported in 

      the extended ID data of a Get Device ID response so that the Boot FW revision is 

      reported first (in bytes 13 and 14) followed by the Configuration revision (in bytes 

      15 and 16.)



V1.07A1

--------

128). Fixed a problem with the global alarm blinking repeatedly instead of toggling once 

      on drive swap.



129). Fixed a problem Global Only capable IPMI sensors refusing a Set Sensor Event Enable 

      command which is attempting to modify only the sensor scaning enable/disable of the

      sensor.



130). Fixed a problem with the incorrect Event Code Offset being reported in Events

      generated for Fan Performance type sensors.





131). Fixed a problem in the SCSI handler. The SCSI Bus Reset status flag was being read

      in the data transfer loops after it had been cleared in the interrupt handler.  This

      caused the data transfer loop to continue waiting for data after a bus reset occurred.



132). Fixed a problem with the GEM locking up, instead of remaining in booter, after 

      downloading a bad configuration with a mismatch between the SDRR and the Sensor Map.



133). Fixed a problem with the GEM returning less than the requested number of bytes in

      response to a Read Buffer SAF-TE command  or less than 63 bytes in response to a Read

      Enclosure Configuration command.    



V1.07A1.1

----------

134). Fixed a problem with Read Buffer, Enclosure Configuration returning 63 bytes instead 

      of 64 bytes.



V1.07A1.2

----------

135). Fixed a problem with the GEM hanging the SCSI bus after a Read Buffer command with

      a transfer length greater than 1024 bytes requested.



V1.08A1

----------

136). Added ScsiSelect function to check for SCSI reset while interrupts are disabled.



137). Added check for I2C NACK in I2C read/write wait timeout loops to shorten the wait 

      delays.



138). Changed algorithm in SensorTriggeredThresholdEvent to correctly assert neg going 

      events at reading = threshold, and handle deassertions at < or > threshold.



139). Fixed a problem in SCSI handler where ATN & ACK occurring together during data 

      transfer phase was not working correctly.



140). Fixed a problem in enclosure configuration response. Now returns the value in 3 bits

      instead of 4 bits. 



141). Changed MonitorNextSensor and SensorTriggeredThresholdEvent to reset individual 

      event status and so regenerate event on next pass and avoid losing the event in

      the case of event Queue full.



142.) Changed initial setting of Get Sensor Event Status return in byte 2 from "|=" to

      "=" to fix incorrect event status returned.



143). Change startup to set Slave ID to FEh at POR to force NACK of external masters 

      until initialization is complete.



144). Changed polling of Temperature Sensors to poll sensor one time in each polling 

      loop.  Previously would retry a sensor 5 times, if it received no response, before

      going to next sensor in loop.     





V1.08A2

----------

145). Fixed a problem with an incoming IPMI slave message being ignored while both I2c ports 

      are receiving slave messages simultaneously.



146). Fixed a problem with the I2C bus check operation in which the I2C port being checked is 

      switched from the idle port to the other port while the other port has an operation in 

      progress.



147). Changed Booter to respond to IPMI Get Device ID command with Product ID value kept in  

      the Boot header. 



148). Changed SMB supporting Runtime Image to be backward compatible with booter version

      1.06A2.



149). Fixed an issue with I2C port intermittently returning only busy responses to all SMB 

      commands.



150). Fixed an issue with SMB Firmware Program not failing write of 1 byte oversize.



151). Changed Set Event Enable to ignore IPMI command length and reject invalid command 

      based on attempted operation as defined by overall status byte sent and sensor 

      capabilities defined.



152). Fixed an issue with Event Receiver and Event Generator being incorrectly initialized 

      from configuration.



153). Fixed an issue with IPMI Sensor Capabilities being initialized incorrectly after the 

      event receiver is set.



154). Fixed an issue with stale event being generated on first status change following 

      initialization with sensor reading in non-nominal range.



155). Fixed an issue with Temperature sensor handling if number of direct I2C pins defined 

      is greater that number of temperature sensors defined in Type Descriptor Headers.



V1.09A2

----------



156). Reversed the byte order of the Product_ID value returned with the GetDeviceID in Booter.



157). Changed the returned completion code for a flash write/erase failure from returning 

      a "0" completion code with "0" bytes written to defined error codes with "0" bytes

      written. 



V1.09A3

----------



158). Changed the completion code for a flash write/erase to Booter from returning 

      a good completion code with the number of bytes written -- to the defined flash error

      codes with "0" bytes written.  Previously the firmware checked for the boot segment 

      and address range and skipped the flash write process and reported good completion code.



159). Modified runtime code to shorten the amount of time the processor was executing with

      interrupts disabled. (found a place where interrupts were disabled for approx. 42ms

      which occasionally caused the SMBus I2C port to be inactive greater than the 25ms 

      timeout required by the SMBus protocol which would lock up the I2C bus.



V1.09A4

----------



160). Fixed a problem with the F/W update function which required the address passed in the 

      download packet to be segment 0 offset 0x1000 to cause an erase of the runtime flash

      and segment 1 offset 0x8000 or 0xA000 to cause an erase of the 2 parameter blocks.

      Now the erase for the 2 parameter blocks will occurr when a byte of data is written

      to segment 1 offset 0x8000 or 0xA000 (with the flash in program mode and VPP enabled)

      even if the packet address was less than the 0x8000 or 0xA000.

      eg. packet address 0x7FFx or 0x9FFx with 24 bytes to write to flash. This will also

      cause an erase of runtime code if a write to segment 0 offset 0x1000 with the flash

      in program mode and VPP enabled. Item #40.



161). Fixed a problem where the response data returned from a Get Sensor Status command was

      returning "F5" (should have been "1A") after a FURSDR utility was executed.  This "F5"

      was used to indicate an error where the temperature sensors had not been read.  Now

      returns a completion code of "CE".  A retry of the command should return good data.

      Item #41  This problem was not duplicated on a Intel hardware.



V1.09A5

----------



162). Changed POR/RESET logic to Initialize the Power Supply State to a Default condition 

      after waiting 5 seconds if a Set Power Supply State command is not received.  

      Previously waited for the Set Power Supply command before the normal SCSI commands

      were processed.



163). Changed the response to "0xCE" for I2C Enclosure Status and Enclosure Configuration

      commands received before the Set Power Supply State command was received or the Default

      timeout occurred.



164). Changed the event generation initial state to use values from the NOMINAL byte in Full

      SDRR and OEM byte in compact SDRR to prevent generating an event message and/or event

      status on the first reading of the sensor unless the sensor was out of range.

 

165). Changed a count used for detection of a byte wrap in the firmware update function. 

      This would cause a problem with odd numbered byte packets being downloaded over a flash

      erase boundry.  This problem was only produced with with our test tools, it did not 

      occur with the FWPIAUPD Utility using the various packet sizes allowed. 



V1.10A1

----------



166). Changed IPMI completion code responses to synchronize with responses from the Gem424.



167). Fixed a problem where the I2C clock speed was not correctly selected from the config 

      file entry.



V1.10A2

----------



168). Fixed a problem where the GEM359 stopped reading the LM75 temperature sensor after 

      responding to an IPMI Read FRU Inventory Data command with a FRU Inventory Offset

      LSB other than zero.



V1.10A3

----------



169). FIxed a problem where Get Slot Status returned wrong data in byte 4 of the response

      when an inserted drive was removed.



170). Fixed a problem in the event generation logic where an event was being transmitted

      multiple times in certain cases.



V1.10A4

----------



171). FIxed a problem where event generation logic missed sending a deassertion of a

      non-critical event when the deassertion of a critical and non critical event 

      occurred at the same sampling time.



V1.10A5

----------



172). Fixed a problem where slot power enable control flag was not being set after reset 

      in runtime.  This caused slot power state to remain in the hardcoded

      (not configuration) state.



------------

AREAS TESTED

------------



Note: The following tests were performed as individual commands, using an Iport I2C Device

      connected to an I2C port, used as the SMBus port, on the Gem359 Evaluation board. These

      tests were performed while in Booter and Runtime. Over and under size limits are also

      checked.



1).   Issued SMBus Block Write commands followed by SMBus Block Read Data Status commands 

      for all the defined Gem359 SMBus commands and verified returned status.



2).   Issued invalid SMBus Block Write commands followed by SMBus Block Read Data Status 

      commands and verified returned status.



3).   Issued all defined Gem359 IPMI commands and verified returned status.



4).   Issued invalid IPMI commands and verified returned statuses.



5).   Issued SCSI SAF-TE commands and verified returned results. 



6).   Verified Event Generation.



7).   Downloaded a complete configuration parameters using the Intel Specific IPMI format

      protocol.



8).   SMBus protocol using the Intel Box ICHx controller and the Gem359 board with the

      FWPIAUPD 16 byte utility.



--------------

AREAS UNTESTED

--------------







------------

KNOWN ISSUES

------------



1).   An incorrect I2CMAP element index in the config parameters causes the GEM to lockup.



=========================================================================

Copyright(c) 2002-2004 QLogic Corporation.  All rights reserved.



_________________________________________________________________________

_________________________________________________________________________

