[SCSI] qla2xxx: Verify the RISC is not in ROM code if firmware-load is disabled.

Add an additional check to verify that the current executing
firmware is in fact non-ROM code. The non-ROM Get-ID mailbox
command is used for verification.

Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>

authored by

Andrew Vasquez and committed by
James Bottomley
42e421b1 e792121e

+9
+7
drivers/scsi/qla2xxx/qla_init.c
··· 334 334 qla2x00_isp_firmware(scsi_qla_host_t *ha) 335 335 { 336 336 int rval; 337 + uint16_t loop_id, topo, sw_cap; 338 + uint8_t domain, area, al_pa; 337 339 338 340 /* Assume loading risc code */ 339 341 rval = QLA_FUNCTION_FAILED; ··· 347 345 348 346 /* Verify checksum of loaded RISC code. */ 349 347 rval = qla2x00_verify_checksum(ha, ha->fw_srisc_address); 348 + if (rval == QLA_SUCCESS) { 349 + /* And, verify we are not in ROM code. */ 350 + rval = qla2x00_get_adapter_id(ha, &loop_id, &al_pa, 351 + &area, &domain, &topo, &sw_cap); 352 + } 350 353 } 351 354 352 355 if (rval) {
+2
drivers/scsi/qla2xxx/qla_mbx.c
··· 919 919 rval = qla2x00_mailbox_command(ha, mcp); 920 920 if (mcp->mb[0] == MBS_COMMAND_ERROR) 921 921 rval = QLA_COMMAND_ERROR; 922 + else if (mcp->mb[0] == MBS_INVALID_COMMAND) 923 + rval = QLA_INVALID_COMMAND; 922 924 923 925 /* Return data. */ 924 926 *id = mcp->mb[1];