Changeset 25697 in vbox
- Timestamp:
- Jan 8, 2010 8:26:16 PM (15 years ago)
- svn:sync-xref-src-repo-rev:
- 56432
- Location:
- trunk/src/VBox/Devices/Storage
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Storage/DevLsiLogicSCSI.cpp
r25677 r25697 515 515 if (pThis->enmCtrlType == LSILOGICCTRLTYPE_SCSI_SAS) 516 516 { 517 PMptSASDevice pSASDeviceCurr = pThis->pConfigurationPages->u.SasPages.pSASDeviceHead; 517 PMptConfigurationPagesSas pSasPages = &pThis->pConfigurationPages->u.SasPages; 518 PMptSASDevice pSASDeviceCurr = pSasPages->pSASDeviceHead; 518 519 519 520 while (pSASDeviceCurr) … … 524 525 RTMemFree(pFree); 525 526 } 527 if (pSasPages->paPHYs) 528 RTMemFree(pSasPages->paPHYs); 529 if (pSasPages->pManufacturingPage7) 530 RTMemFree(pSasPages->pManufacturingPage7); 531 if (pSasPages->pSASIOUnitPage0) 532 RTMemFree(pSasPages->pSASIOUnitPage0); 533 if (pSasPages->pSASIOUnitPage1) 534 RTMemFree(pSasPages->pSASIOUnitPage1); 526 535 } 527 536 … … 2174 2183 break; 2175 2184 case 7: 2176 *ppPageHeader = &pPages->ManufacturingPage7.u.fields.Header; 2177 *ppbPageData = pPages->ManufacturingPage7.u.abPageData; 2178 *pcbPage = sizeof(pPages->ManufacturingPage7); 2185 if (pLsiLogic->enmCtrlType == LSILOGICCTRLTYPE_SCSI_SAS) 2186 { 2187 *ppPageHeader = &pPages->u.SasPages.pManufacturingPage7->u.fields.Header; 2188 *ppbPageData = pPages->u.SasPages.pManufacturingPage7->u.abPageData; 2189 *pcbPage = pPages->u.SasPages.cbManufacturingPage7; 2190 } 2191 else 2192 rc = VERR_NOT_FOUND; 2179 2193 break; 2180 2194 case 8: … … 2923 2937 LogFlowFunc(("pThis=%#p\n", pThis)); 2924 2938 2939 /* Manufacturing Page 7 - Connector settings. */ 2940 pPages->cbManufacturingPage7 = LSILOGICSCSI_MANUFACTURING7_GET_SIZE(pThis->cPorts); 2941 PMptConfigurationPageManufacturing7 pManufacturingPage7 = (PMptConfigurationPageManufacturing7)RTMemAllocZ(pPages->cbManufacturingPage7); 2942 AssertPtr(pManufacturingPage7); 2943 MPT_CONFIG_PAGE_HEADER_INIT_MANUFACTURING(pManufacturingPage7, 2944 0, 7, 2945 MPT_CONFIGURATION_PAGE_ATTRIBUTE_PERSISTENT_READONLY); 2946 /* Set size manually. */ 2947 if (pPages->cbManufacturingPage7 / 4 > 255) 2948 pManufacturingPage7->u.fields.Header.u8PageLength = 255; 2949 else 2950 pManufacturingPage7->u.fields.Header.u8PageLength = pPages->cbManufacturingPage7 / 4; 2951 pManufacturingPage7->u.fields.u8NumPhys = pThis->cPorts; 2952 pPages->pManufacturingPage7 = pManufacturingPage7; 2953 2925 2954 /* SAS I/O unit page 0 - Port specific informations. */ 2926 2955 pPages->cbSASIOUnitPage0 = LSILOGICSCSI_SASIOUNIT0_GET_SIZE(pThis->cPorts); … … 2970 2999 PMptPHY pPHYPages = &pPages->paPHYs[i]; 2971 3000 uint16_t u16ControllerHandle = lsilogicGetHandle(pThis); 3001 3002 pManufacturingPage7->u.fields.aPHY[i].u8Location = LSILOGICSCSI_MANUFACTURING7_LOCATION_AUTO; 2972 3003 2973 3004 pSASPage0->u.fields.aPHY[i].u8Port = i; … … 3167 3198 MptConfigurationPageManufacturing6, 6, 3168 3199 MPT_CONFIGURATION_PAGE_ATTRIBUTE_CHANGEABLE); 3169 3170 /* Manufacturing Page 7 - Connector settings. */3171 MPT_CONFIG_PAGE_HEADER_INIT_MANUFACTURING(&pPages->ManufacturingPage7,3172 MptConfigurationPageManufacturing7, 7,3173 MPT_CONFIGURATION_PAGE_ATTRIBUTE_PERSISTENT_READONLY);3174 3200 3175 3201 /* Manufacturing Page 8 - Product sepcific settings. */ … … 3777 3803 SSMR3PutMem (pSSM, &pPages->ManufacturingPage5, sizeof(MptConfigurationPageManufacturing5)); 3778 3804 SSMR3PutMem (pSSM, &pPages->ManufacturingPage6, sizeof(MptConfigurationPageManufacturing6)); 3779 SSMR3PutMem (pSSM, &pPages->ManufacturingPage7, sizeof(MptConfigurationPageManufacturing7));3780 3805 SSMR3PutMem (pSSM, &pPages->ManufacturingPage8, sizeof(MptConfigurationPageManufacturing8)); 3781 3806 SSMR3PutMem (pSSM, &pPages->ManufacturingPage9, sizeof(MptConfigurationPageManufacturing9)); … … 3817 3842 PMptConfigurationPagesSas pSasPages = &pPages->u.SasPages; 3818 3843 3844 SSMR3PutU32(pSSM, pSasPages->cbManufacturingPage7); 3819 3845 SSMR3PutU32(pSSM, pSasPages->cbSASIOUnitPage0); 3820 3846 SSMR3PutU32(pSSM, pSasPages->cbSASIOUnitPage1); 3821 3847 3848 SSMR3PutMem(pSSM, pSasPages->pManufacturingPage7, pSasPages->cbManufacturingPage7); 3822 3849 SSMR3PutMem(pSSM, pSasPages->pSASIOUnitPage0, pSasPages->cbSASIOUnitPage0); 3823 3850 SSMR3PutMem(pSSM, pSasPages->pSASIOUnitPage1, pSasPages->cbSASIOUnitPage1); … … 4017 4044 SSMR3GetMem(pSSM, &pPages->ManufacturingPage5, sizeof(MptConfigurationPageManufacturing5)); 4018 4045 SSMR3GetMem(pSSM, &pPages->ManufacturingPage6, sizeof(MptConfigurationPageManufacturing6)); 4019 SSMR3GetMem(pSSM, &pPages->ManufacturingPage7, sizeof(MptConfigurationPageManufacturing7));4020 4046 SSMR3GetMem(pSSM, &pPages->ManufacturingPage8, sizeof(MptConfigurationPageManufacturing8)); 4021 4047 SSMR3GetMem(pSSM, &pPages->ManufacturingPage9, sizeof(MptConfigurationPageManufacturing9)); … … 4055 4081 else if (pLsiLogic->enmCtrlType == LSILOGICCTRLTYPE_SCSI_SAS) 4056 4082 { 4057 uint32_t cbPage0, cbPage1, cPHYs ;4083 uint32_t cbPage0, cbPage1, cPHYs, cbManufacturingPage7; 4058 4084 PMptConfigurationPagesSas pSasPages = &pPages->u.SasPages; 4059 4085 4086 SSMR3GetU32(pSSM, &cbManufacturingPage7); 4060 4087 SSMR3GetU32(pSSM, &cbPage0); 4061 4088 SSMR3GetU32(pSSM, &cbPage1); 4062 4089 4063 4090 if ( (cbPage0 != pSasPages->cbSASIOUnitPage0) 4064 || (cbPage1 != pSasPages->cbSASIOUnitPage1)) 4091 || (cbPage1 != pSasPages->cbSASIOUnitPage1) 4092 || (cbManufacturingPage7 != pSasPages->cbManufacturingPage7)) 4065 4093 return VERR_SSM_LOAD_CONFIG_MISMATCH; 4066 4094 4095 AssertPtr(pSasPages->pManufacturingPage7); 4067 4096 AssertPtr(pSasPages->pSASIOUnitPage0); 4068 4097 AssertPtr(pSasPages->pSASIOUnitPage1); 4069 4098 4099 SSMR3GetMem(pSSM, pSasPages->pManufacturingPage7, pSasPages->cbManufacturingPage7); 4070 4100 SSMR3GetMem(pSSM, pSasPages->pSASIOUnitPage0, pSasPages->cbSASIOUnitPage0); 4071 4101 SSMR3GetMem(pSSM, pSasPages->pSASIOUnitPage1, pSasPages->cbSASIOUnitPage1); -
trunk/src/VBox/Devices/Storage/DevLsiLogicSCSI.h
r25675 r25697 1328 1328 1329 1329 /** 1330 * Manufacutring page 7 - PHY element. 1331 */ 1332 #pragma pack(1) 1333 typedef struct MptConfigurationPageManufacturing7PHY 1334 { 1335 /** Pinout */ 1336 uint32_t u32Pinout; 1337 /** Connector name */ 1338 uint8_t szConnector[16]; 1339 /** Location */ 1340 uint8_t u8Location; 1341 /** reserved */ 1342 uint8_t u8Reserved; 1343 /** Slot */ 1344 uint16_t u16Slot; 1345 } MptConfigurationPageManufacturing7PHY, *PMptConfigurationPageManufacturing7PHY; 1346 #pragma pack() 1347 AssertCompileSize(MptConfigurationPageManufacturing7PHY, 24); 1348 1349 /** 1330 1350 * Manufacturing page 7 - Readonly. 1331 1351 */ … … 1337 1357 { 1338 1358 /** Byte view. */ 1339 uint8_t abPageData[ 228];1359 uint8_t abPageData[1]; 1340 1360 /** Field view. */ 1341 1361 struct … … 1353 1373 /** Reserved */ 1354 1374 uint8_t au8Reserved[3]; 1355 /** PHY list for the SAS controller */ 1356 struct 1357 { 1358 /** Pinout */ 1359 uint32_t u32Pinout; 1360 /** Connector name */ 1361 uint8_t szConnector[16]; 1362 /** Location */ 1363 uint8_t u8Location; 1364 /** reserved */ 1365 uint8_t u8Reserved; 1366 /** Slot */ 1367 uint16_t u16Slot; 1368 } aPHYs[LSILOGICSCSI_PCI_SAS_PORTS_MAX]; 1375 /** PHY list for the SAS controller - variable depending on the number of ports */ 1376 MptConfigurationPageManufacturing7PHY aPHY[1]; 1369 1377 } fields; 1370 1378 } u; 1371 1379 } MptConfigurationPageManufacturing7, *PMptConfigurationPageManufacturing7; 1372 1380 #pragma pack() 1373 AssertCompileSize(MptConfigurationPageManufacturing7, 36+(LSILOGICSCSI_PCI_SAS_PORTS_MAX * 24)); 1381 AssertCompileSize(MptConfigurationPageManufacturing7, 36+sizeof(MptConfigurationPageManufacturing7PHY)); 1382 1383 #define LSILOGICSCSI_MANUFACTURING7_GET_SIZE(ports) (sizeof(MptConfigurationPageManufacturing7) + ((ports) - 1) * sizeof(MptConfigurationPageManufacturing7PHY)) 1374 1384 1375 1385 /** Flags for the flags field */ … … 3185 3195 typedef struct MptConfigurationPagesSas 3186 3196 { 3197 /** Size of the manufacturing page 7 */ 3198 uint32_t cbManufacturingPage7; 3199 /** Pointer to the manufacturing page 7 */ 3200 PMptConfigurationPageManufacturing7 pManufacturingPage7; 3187 3201 /** Size of the I/O unit page 0 */ 3188 3202 uint32_t cbSASIOUnitPage0; … … 3224 3238 MptConfigurationPageManufacturing5 ManufacturingPage5; 3225 3239 MptConfigurationPageManufacturing6 ManufacturingPage6; 3226 MptConfigurationPageManufacturing7 ManufacturingPage7;3227 3240 MptConfigurationPageManufacturing8 ManufacturingPage8; 3228 3241 MptConfigurationPageManufacturing9 ManufacturingPage9;
Note:
See TracChangeset
for help on using the changeset viewer.