IP Library Granted Patent US 7,284,085
Granted Patent B2
US 7,284,085 · App. 10/978,801 · Granted Oct 16, 2007

Managing configuration data in a flash configuration space in flash memory within a host interface port

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,284,085
App. No.
10/978,801
Granted
Oct 16, 2007
Kind
B2
Abstract

A flash configuration space is disclosed for storing configuration data regions. Each configuration data region includes configuration data and a signature tag that identifies the configuration data with various levels of specificity. During a configuration data update, a header in each configuration data region is scanned to see if a valid matching configuration data region already exists. If no valid matching configuration data region exists, the signature tag and configuration data are written into the next available area in the flash configuration space. If a valid matching configuration data region is located, the header and configuration data are written into the next available area in the flash configuration space and the located configuration data region is invalidated. When the flash configuration space is full, all valid configuration data regions are saved, the flash configuration space is erased, and only current configuration data is written back into the flash configuration space in a priority order.

Claims (93)

1. A method for managing configuration data in a flash configuration space in flash memory within a host interface port, comprising:

selecting the flash configuration space to be an integer number of flash erase units;

writing the configuration data and a signature tag for identifying the configuration data in contiguous configuration data regions in the flash configuration space according to an order in which the configuration data is received such that most or all of the flash configuration space can be written before it becomes necessary to eliminate outdated configuration data.

2. The method as recited in claim 1 , further comprising:

writing an associated data depth indicator and a valid bit indicating whether the configuration data is valid along with the configuration data and the signature tag in the contiguous configuration data regions.

3. The method as recited in claim 2 , further comprising:

scanning the signature tag and the valid bit of each of the contiguous configuration data regions written in the flash configuration space in an attempt to locate a valid, previously stored configuration data region with a signature tag that matches the signature tag of updated configuration data to be stored in the configuration data region;

writing the updated configuration data and an associated signature tag, data depth indicator and a valid bit set to a valid state into the next available configuration data region in the flash configuration space; and

if any valid, previously stored configuration data region is located with a signature tag that matches the signature tag of the updated configuration data and with the valid bit set to the valid state, setting the valid bit of that configuration data region to an invalid state to indicate that the previously stored configuration data region is now outdated.

4. The method as recited in claim 2 , further comprising:

determining when the flash configuration space is full or nearly full;

scanning the valid bit of each of the contiguous configuration data regions written in the flash configuration space and locating all valid configuration data regions;

saving the valid configuration data regions to an area of memory outside the flash configuration space;

erasing the flash configuration space; and

writing the valid configuration data regions back into the flash configuration space.

5. The method as recited in claim 4 , further comprising writing the valid configuration data regions back into the flash configuration space in a specified order.

6. The method as recited in claim 5 , wherein the specified order is a priority order with the highest priority given to the configuration data region that is accessed most frequently.

7. The method as recited in claim 1 , wherein the signature tag is capable of identifying the configuration data with various levels of specificity according to a hierarchy of entities.

8. The method as recited in claim 7 , wherein the hierarchy of entities is, from highest to lowest, a region identifier, a processor core identifier, an interface software port index, a protocol port index, and a physical port index.

9. The method as recited in claim 7 , wherein the signature tag specifies an entity at a particular hierarchical level in the hierarchy of entities and a processing type parameter that indicates the particular hierarchical level.

10. The method as recited in claim 9 , further comprising:

receiving an update configuration data command including the region identifier, the protocol port index, the physical port index, the processing type parameter and the configuration data; and

appending the interface software port index and the processor core identifier to form the signature tag.

11. One or more storage media including a computer program which, when executed by one or more processors, causes the one or more processors to perform the steps of:

selecting flash configuration space to be an integer number of flash erase units;

writing configuration data and a signature tag for identifying the configuration data in contiguous configuration data regions in the flash configuration space according to an order in which the configuration data is received such that most or all of the flash configuration space can be written before it becomes necessary to eliminate outdated configuration data.

12. The one or more storage media as recited in claim 11 , wherein the computer program, when executed by one or more processors, causes the one or more processors to perform the step of:

writing an associated data depth indicator and a valid bit indicating whether the configuration data is valid along with the configuration data and the signature tag in the contiguous configuration data regions.

13. The one or more storage media as recited in claim 12 , wherein the computer program, when executed by one or more processors, causes the one or more processors to perform the steps of:

scanning the signature tag and the valid bit of each of the contiguous configuration data regions written in the flash configuration space in an attempt to locate a valid, previously stored configuration data region with a signature tag that matches the signature tag of updated configuration data to be stored in the configuration data region;

writing the updated configuration data and an associated signature tag, data depth indicator and a valid bit set to a valid state into the next available configuration data region in the flash configuration space; and

if any valid, previously stored configuration data region is located with a signature tag that matches the signature tag of the updated configuration data, setting the valid bit of that configuration data region to an invalid state to indicate that the previously stored configuration data region is now outdated.

14. The one or more storage media as recited in claim 12 , wherein the computer program, when executed by one or more processors, causes the one or more processors to perform the steps of:

determining when the flash configuration space is full or nearly full;

scanning the valid bit of each of the contiguous configuration data regions written in the flash configuration space and locating all valid configuration data regions;

saving the valid configuration data regions to an area of memory outside the flash configuration space;

erasing the flash configuration space; and

writing the valid configuration data regions back into the flash configuration space.

15. The one or more storage media as recited in claim 14 , wherein the computer program, when executed by one or more processors, causes the one or more processors to perform the step of:

writing the valid configuration data regions back into the flash configuration space in a specified order.

16. The one or more storage media as recited in claim 15 , wherein the specified order is a priority order with the highest priority given to the configuration data region that is accessed most frequently.

17. The one or more storage media as recited in claim 11 , wherein the signature tag is capable of identifying the configuration data with various levels of specificity according to a hierarchy of entities.

18. The one or more storage media as recited in claim 17 , wherein the hierarchy of entities is, from highest to lowest, a region identifier, a processor core identifier, an interface software port index, a protocol port index, and a physical port index.

19. The one or more storage media as recited in claim 17 , wherein the signature tag specifies an entity at a particular hierarchical level in the hierarchy of entities and a processing type parameter that indicates the particular hierarchical level.

20. The one or more storage media as recited in claim 19 , wherein the computer program, when executed by one or more processors, causes the one or more processors to perform the steps of:

receiving an update configuration data command including the region identifier, the protocol port index, the physical port index, the processing type parameter and the configuration data; and

appending the interface software port index and the processor core identifier to form the signature tag.

21. In a host interface port for managing configuration data in a flash configuration space in flash memory within the host interface port, one or more processors programmed for:

selecting flash configuration space to be an integer number of flash erase units; and

writing the configuration data and a signature tag for identifying the configuration data in contiguous configuration data regions in the flash configuration space according to an order in which the configuration data is received such that most or all of the flash configuration space can be written before it becomes necessary to eliminate outdated configuration data.

22. The one or more programmed processors as recited in claim 21 , further programmed for:

writing an associated data depth indicator and a valid bit indicating whether the configuration data is valid along with the configuration data and the signature tag in the contiguous configuration data regions.

23. The one or more, programmed processors as recited in claim 22 , further programmed for:

scanning the signature tag and the valid bit of each of the contiguous configuration data regions written in the flash configuration space in an attempt to locate a valid, previously stored configuration data region with a signature tag that matches the signature tag of updated configuration data to be stored in the configuration data region;

writing the updated configuration data and an associated signature tag, data depth indicator and a valid bit set to a valid state into the next available configuration data region in the flash configuration space; and

if any valid, previously stored configuration data region is located with a signature tag that matches the signature tag of the updated configuration data, setting the valid bit of that configuration data region to an invalid state to indicate that the previously stored configuration data region is now outdated.

24. The one or more programmed processors as recited in claim 22 , further programmed for:

determining when the flash configuration space is full or nearly full;

scanning the valid bit of each of the contiguous configuration data regions written in the flash configuration space and locating all valid configuration data regions;

saving the valid configuration data regions to an area of memory outside the flash configuration space;

erasing the flash configuration space; and

writing the valid configuration data regions back into the flash configuration space.

25. The one or more programmed processors as recited in claim 24 , further programmed for:

writing the valid configuration data regions back into the flash configuration space in a specified order.

26. The one or more programmed processors as recited in claim 25 , wherein the specified order is a priority order with the highest priority given to the configuration data region that is accessed most frequently.

27. The one or more programmed processors as recited in claim 21 , wherein the signature tag is capable of identifying the configuration data with various levels of specificity according to a hierarchy of entities.

28. The one or more programmed processors as recited in claim 27 , wherein the hierarchy of entities is, from highest to lowest, a region identifier, a processor core identifier, an interface software port index, a protocol port index, and a physical port index.

29. The one or more programmed processors as recited in claim 27 , wherein the signature tag specifies an entity at a particular hierarchical level in the hierarchy of entities and a processing type parameter that indicates the particular hierarchical level.

30. The one or more programmed processors as recited in claim 29 , further programmed for:

receiving an update configuration data command including the region identifier, the protocol port index, the physical port index, the processing type parameter and the configuration data; and

appending the interface software port index and the processor core identifier to form the signature tag.

31. A host bus adapter (HBA) comprising the one or more programmed processors of claim 21 .

32. A server computer comprising the HBA of claim 31 .

33. A storage area network (SAN) comprising the server computer of claim 32 .

34. A host interface port for managing configuration data in a flash configuration space in flash memory within the host interface port, comprising:

means for selecting flash configuration space to be an integer number of flash erase units; and

means for writing the configuration data and a signature tag for identifying the configuration data in contiguous configuration data regions in the flash configuration space according to an order in which the configuration data is received such that most or all of the flash configuration space can be written before it becomes necessary to eliminate outdated configuration data.

35. The host interface port as recited in claim 34 , further comprising:

means for writing an associated data depth indicator and a valid bit indicating whether the configuration data is valid along with the configuration data and the signature tag in the contiguous configuration data regions.

36. The host interface port as recited in claim 35 , further comprising:

means for scanning the signature tag and the valid bit of each of the contiguous configuration data regions written in the flash configuration space in an attempt to locate a valid, previously stored configuration data region with a signature tag that matches the signature tag of updated configuration data to be stored in the configuration data region;

means for writing the updated configuration data and an associated signature tag, data depth indicator and a valid bit set to a valid state into the next available configuration data region in the flash configuration space; and

if any valid, previously stored configuration data region is located with a signature tag that matches the signature tag of the updated configuration data, means for setting the valid bit of that configuration data region to an invalid state to indicate that the previously stored configuration data region is now outdated.

37. The host interface port as recited in claim 35 , further comprising:

means for determining when the flash configuration space is full or nearly full;

means for scanning the valid bit of each of the contiguous configuration data regions written in the flash configuration space and locating all valid configuration data regions;

means for saving the valid configuration data regions to an area of memory outside the flash configuration space;

means for erasing the flash configuration space; and

means for writing the valid configuration data regions back into the flash configuration space.

38. The host interface port as recited in claim 34 , wherein the signature tag is capable of identifying the configuration data with various levels of specificity according to a hierarchy of entities.

39. A host bus adapter (HBA) comprising the host interface port of claim 34 .

40. A server computer comprising the HBA of claim 39 .

41. A storage area network (SAN) comprising the server computer of claim 40 .

Assignments (6)
CORRECTIVE ASSIGNMENT TO CORRECT THE EXECUTION DATE PREVIOUSLY RECORDED AT REEL: 047422 FRAME: 0464. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Mar 6, 2019
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 048883/0702 →
MERGER Recorded Oct 5, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047422/0464 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 3, 2017
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 041710/0001 →
PATENT SECURITY AGREEMENT Recorded Feb 11, 2016
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037808/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 23, 2015
From: EMULEX CORPORATION
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 036942/0213 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 17, 2014
From: EMULEX DESIGN AND MANUFACTURING CORPORATION
To: EMULEX CORPORATION
Reel/Frame 032087/0842 →