US 7,617,391 B2
Method and apparatus for dynamically selecting one of multiple firmware images for booting an I/O controller
Lawrence James Rawe, Colorado Springs, Colo. (US); and Roy Wayne Wade, Colorado Springs, Colo. (US)
Assigned to LSI Logic Corporation, Milpitas, Calif. (US)
Filed on Dec. 15, 2005, as Appl. No. 11/305,180.
Prior Publication US 2007/0143589 A1, Jun. 21, 2007
Int. Cl. G06F 9/24 (2006.01); G06F 15/177 (2006.01)
U.S. Cl. 713—1  [713/2; 713/100; 709/203; 709/226; 709/232] 16 Claims
OG exemplary drawing
 
1. A method for dynamically selecting one of multiple different input/output (I/O) firmware images to boot an I/O controller, the method comprising:
storing a plurality of different I/O firmware images sequentially in a single file;
determining a configuration of the I/O controller;
determining a configuration that is supported by a first one of the plurality of different I/O firmware images in the single file to use to boot the I/O controller;
in response to determining that the first one of the plurality of different I/O firmware images in the single file does support the configuration of the I/O controller, selecting the first one of the plurality of different I/O firmware images in the file;
in response to determining that the first one of said plurality of different I/O firmware images in the file does not support the configuration of the I/O controller, determining a configuration that is supported by a second one of the plurality of different I/O firmware images in the file;
in response to determining that the second one of said plurality of different I/O firmware images in the file does support the configuration of the I/O controller, selecting the second one of the plurality of different I/O firmware images in the file;
storing a boot services driver, that is required in order for said I/O controller to be booted, in a first flash memory location;
storing the plurality of different I/O firmware images in a second flash memory location;
beginning a boot of the data processing system;
copying, by a system BIOS, the boot services driver from the first flash memory location to a first system memory location; and
copying, by the system BIOS, the plurality of different I/O firmware images from the second flash memory location to a second system memory location, wherein the plurality of different I/O firmware images and the boot services driver are stored separately in the system memory.