Changeset 87164 in vbox
- Timestamp:
- Jan 4, 2021 1:19:24 PM (4 years ago)
- svn:sync-xref-src-repo-rev:
- 142084
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Storage/DevLsiLogicSCSI.cpp
r87112 r87164 1118 1118 pReply->IOCFacts.u8MaxBuses = pThis->cMaxBuses; 1119 1119 1120 /* Check for a valid firmware image in the IOC memory which was downlaoded by tzhe guest earlier. */ 1120 pReply->IOCFacts.u16ProductID = 0xcafe; /* Our own product ID :) */ 1121 pReply->IOCFacts.u32FwImageSize = 0; /* No image needed. */ 1122 pReply->IOCFacts.u32FWVersion = 0; 1123 1124 /* Check for a valid firmware image in the IOC memory which was downloaded by the guest earlier and use that. */ 1121 1125 PLSILOGICMEMREGN pRegion = lsilogicR3MemRegionFindByAddr(pThisCC, LSILOGIC_FWIMGHDR_LOAD_ADDRESS); 1122 1123 1126 if (pRegion) 1124 1127 { 1125 uint32_t offImgHdr = (LSILOGIC_FWIMGHDR_LOAD_ADDRESS - pRegion->u32AddrStart) / 4; 1126 PFwImageHdr pFwImgHdr = (PFwImageHdr)&pRegion->au32Data[offImgHdr]; 1127 1128 /* Check for the signature. */ 1129 /** @todo Checksum validation. */ 1130 if ( pFwImgHdr->u32Signature1 == LSILOGIC_FWIMGHDR_SIGNATURE1 1131 && pFwImgHdr->u32Signature2 == LSILOGIC_FWIMGHDR_SIGNATURE2 1132 && pFwImgHdr->u32Signature3 == LSILOGIC_FWIMGHDR_SIGNATURE3) 1128 uint32_t offImgHdr = (LSILOGIC_FWIMGHDR_LOAD_ADDRESS - pRegion->u32AddrStart); 1129 if (pRegion->u32AddrEnd - offImgHdr + 1 >= sizeof(FwImageHdr)) /* End address is inclusive. */ 1133 1130 { 1134 LogFlowFunc(("IOC Facts: Found valid firmware image header in memory, using version (%#x), size (%d) and product ID (%#x) from there\n", 1135 pFwImgHdr->u32FwVersion, pFwImgHdr->u32ImageSize, pFwImgHdr->u16ProductId)); 1136 1137 pReply->IOCFacts.u16ProductID = pFwImgHdr->u16ProductId; 1138 pReply->IOCFacts.u32FwImageSize = pFwImgHdr->u32ImageSize; 1139 pReply->IOCFacts.u32FWVersion = pFwImgHdr->u32FwVersion; 1131 PFwImageHdr pFwImgHdr = (PFwImageHdr)&pRegion->au32Data[offImgHdr / 4]; 1132 1133 /* Check for the signature. */ 1134 /** @todo Checksum validation. */ 1135 if ( pFwImgHdr->u32Signature1 == LSILOGIC_FWIMGHDR_SIGNATURE1 1136 && pFwImgHdr->u32Signature2 == LSILOGIC_FWIMGHDR_SIGNATURE2 1137 && pFwImgHdr->u32Signature3 == LSILOGIC_FWIMGHDR_SIGNATURE3) 1138 { 1139 LogFlowFunc(("IOC Facts: Found valid firmware image header in memory, using version (%#x), size (%d) and product ID (%#x) from there\n", 1140 pFwImgHdr->u32FwVersion, pFwImgHdr->u32ImageSize, pFwImgHdr->u16ProductId)); 1141 1142 pReply->IOCFacts.u16ProductID = pFwImgHdr->u16ProductId; 1143 pReply->IOCFacts.u32FwImageSize = pFwImgHdr->u32ImageSize; 1144 pReply->IOCFacts.u32FWVersion = pFwImgHdr->u32FwVersion; 1145 } 1140 1146 } 1141 }1142 else1143 {1144 pReply->IOCFacts.u16ProductID = 0xcafe; /* Our own product ID :) */1145 pReply->IOCFacts.u32FwImageSize = 0; /* No image needed. */1146 pReply->IOCFacts.u32FWVersion = 0;1147 1147 } 1148 1148 break;
Note:
See TracChangeset
for help on using the changeset viewer.