dttable1.c (316303) | dttable1.c (322877) |
---|---|
1/****************************************************************************** 2 * 3 * Module Name: dttable1.c - handling for specific ACPI tables 4 * 5 *****************************************************************************/ 6 7/****************************************************************************** 8 * --- 1235 unchanged lines hidden (view full) --- 1244 InfoTable = AcpiDmTableInfoHest8; 1245 break; 1246 1247 case ACPI_HEST_TYPE_GENERIC_ERROR: 1248 1249 InfoTable = AcpiDmTableInfoHest9; 1250 break; 1251 | 1/****************************************************************************** 2 * 3 * Module Name: dttable1.c - handling for specific ACPI tables 4 * 5 *****************************************************************************/ 6 7/****************************************************************************** 8 * --- 1235 unchanged lines hidden (view full) --- 1244 InfoTable = AcpiDmTableInfoHest8; 1245 break; 1246 1247 case ACPI_HEST_TYPE_GENERIC_ERROR: 1248 1249 InfoTable = AcpiDmTableInfoHest9; 1250 break; 1251 |
1252 case ACPI_HEST_TYPE_GENERIC_ERROR_V2: 1253 1254 InfoTable = AcpiDmTableInfoHest10; 1255 break; 1256 1257 case ACPI_HEST_TYPE_IA32_DEFERRED_CHECK: 1258 1259 InfoTable = AcpiDmTableInfoHest11; 1260 break; 1261 |
|
1252 default: 1253 1254 /* Cannot continue on unknown type */ 1255 1256 DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "HEST"); 1257 return (AE_ERROR); 1258 } 1259 --- 18 unchanged lines hidden (view full) --- 1278 break; 1279 1280 case ACPI_HEST_TYPE_IA32_CORRECTED_CHECK: 1281 1282 BankCount = (ACPI_CAST_PTR (ACPI_HEST_IA_CORRECTED, 1283 Subtable->Buffer))->NumHardwareBanks; 1284 break; 1285 | 1262 default: 1263 1264 /* Cannot continue on unknown type */ 1265 1266 DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "HEST"); 1267 return (AE_ERROR); 1268 } 1269 --- 18 unchanged lines hidden (view full) --- 1288 break; 1289 1290 case ACPI_HEST_TYPE_IA32_CORRECTED_CHECK: 1291 1292 BankCount = (ACPI_CAST_PTR (ACPI_HEST_IA_CORRECTED, 1293 Subtable->Buffer))->NumHardwareBanks; 1294 break; 1295 |
1296 case ACPI_HEST_TYPE_IA32_DEFERRED_CHECK: 1297 1298 BankCount = (ACPI_CAST_PTR (ACPI_HEST_IA_DEFERRED_CHECK, 1299 Subtable->Buffer))->NumHardwareBanks; 1300 break; 1301 |
|
1286 default: 1287 1288 break; 1289 } 1290 1291 while (BankCount) 1292 { 1293 Status = DtCompileTable (PFieldList, AcpiDmTableInfoHestBank, --- 9 unchanged lines hidden (view full) --- 1303 } 1304 1305 return (AE_OK); 1306} 1307 1308 1309/****************************************************************************** 1310 * | 1302 default: 1303 1304 break; 1305 } 1306 1307 while (BankCount) 1308 { 1309 Status = DtCompileTable (PFieldList, AcpiDmTableInfoHestBank, --- 9 unchanged lines hidden (view full) --- 1319 } 1320 1321 return (AE_OK); 1322} 1323 1324 1325/****************************************************************************** 1326 * |
1327 * FUNCTION: DtCompileHmat 1328 * 1329 * PARAMETERS: List - Current field list pointer 1330 * 1331 * RETURN: Status 1332 * 1333 * DESCRIPTION: Compile HMAT. 1334 * 1335 *****************************************************************************/ 1336 1337ACPI_STATUS 1338DtCompileHmat ( 1339 void **List) 1340{ 1341 ACPI_STATUS Status; 1342 DT_SUBTABLE *Subtable; 1343 DT_SUBTABLE *ParentTable; 1344 DT_FIELD **PFieldList = (DT_FIELD **) List; 1345 DT_FIELD *SubtableStart; 1346 DT_FIELD *EntryStart; 1347 ACPI_HMAT_STRUCTURE *HmatStruct; 1348 ACPI_HMAT_LOCALITY *HmatLocality; 1349 ACPI_HMAT_CACHE *HmatCache; 1350 ACPI_DMTABLE_INFO *InfoTable; 1351 UINT32 IntPDNumber; 1352 UINT32 TgtPDNumber; 1353 UINT64 EntryNumber; 1354 UINT16 SMBIOSHandleNumber; 1355 1356 1357 ParentTable = DtPeekSubtable (); 1358 1359 Status = DtCompileTable (PFieldList, AcpiDmTableInfoHmat, 1360 &Subtable, TRUE); 1361 if (ACPI_FAILURE (Status)) 1362 { 1363 return (Status); 1364 } 1365 DtInsertSubtable (ParentTable, Subtable); 1366 1367 while (*PFieldList) 1368 { 1369 /* Compile HMAT structure header */ 1370 1371 SubtableStart = *PFieldList; 1372 Status = DtCompileTable (PFieldList, AcpiDmTableInfoHmatHdr, 1373 &Subtable, TRUE); 1374 if (ACPI_FAILURE (Status)) 1375 { 1376 return (Status); 1377 } 1378 DtInsertSubtable (ParentTable, Subtable); 1379 1380 HmatStruct = ACPI_CAST_PTR (ACPI_HMAT_STRUCTURE, Subtable->Buffer); 1381 HmatStruct->Length = Subtable->Length; 1382 1383 /* Compile HMAT structure body */ 1384 1385 switch (HmatStruct->Type) 1386 { 1387 case ACPI_HMAT_TYPE_ADDRESS_RANGE: 1388 1389 InfoTable = AcpiDmTableInfoHmat0; 1390 break; 1391 1392 case ACPI_HMAT_TYPE_LOCALITY: 1393 1394 InfoTable = AcpiDmTableInfoHmat1; 1395 break; 1396 1397 case ACPI_HMAT_TYPE_CACHE: 1398 1399 InfoTable = AcpiDmTableInfoHmat2; 1400 break; 1401 1402 default: 1403 1404 DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "HMAT"); 1405 return (AE_ERROR); 1406 } 1407 1408 Status = DtCompileTable (PFieldList, InfoTable, &Subtable, TRUE); 1409 if (ACPI_FAILURE (Status)) 1410 { 1411 return (Status); 1412 } 1413 DtInsertSubtable (ParentTable, Subtable); 1414 HmatStruct->Length += Subtable->Length; 1415 1416 /* Compile HMAT structure additionals */ 1417 1418 switch (HmatStruct->Type) 1419 { 1420 case ACPI_HMAT_TYPE_LOCALITY: 1421 1422 HmatLocality = ACPI_SUB_PTR (ACPI_HMAT_LOCALITY, 1423 Subtable->Buffer, sizeof (ACPI_HMAT_STRUCTURE)); 1424 1425 /* Compile initiator proximity domain list */ 1426 1427 IntPDNumber = 0; 1428 while (*PFieldList) 1429 { 1430 Status = DtCompileTable (PFieldList, 1431 AcpiDmTableInfoHmat1a, &Subtable, TRUE); 1432 if (ACPI_FAILURE (Status)) 1433 { 1434 return (Status); 1435 } 1436 if (!Subtable) 1437 { 1438 break; 1439 } 1440 DtInsertSubtable (ParentTable, Subtable); 1441 HmatStruct->Length += Subtable->Length; 1442 IntPDNumber++; 1443 } 1444 HmatLocality->NumberOfInitiatorPDs = IntPDNumber; 1445 1446 /* Compile target proximity domain list */ 1447 1448 TgtPDNumber = 0; 1449 while (*PFieldList) 1450 { 1451 Status = DtCompileTable (PFieldList, 1452 AcpiDmTableInfoHmat1b, &Subtable, TRUE); 1453 if (ACPI_FAILURE (Status)) 1454 { 1455 return (Status); 1456 } 1457 if (!Subtable) 1458 { 1459 break; 1460 } 1461 DtInsertSubtable (ParentTable, Subtable); 1462 HmatStruct->Length += Subtable->Length; 1463 TgtPDNumber++; 1464 } 1465 HmatLocality->NumberOfTargetPDs = TgtPDNumber; 1466 1467 /* Save start of the entries for reporting errors */ 1468 1469 EntryStart = *PFieldList; 1470 1471 /* Compile latency/bandwidth entries */ 1472 1473 EntryNumber = 0; 1474 while (*PFieldList) 1475 { 1476 Status = DtCompileTable (PFieldList, 1477 AcpiDmTableInfoHmat1c, &Subtable, TRUE); 1478 if (ACPI_FAILURE (Status)) 1479 { 1480 return (Status); 1481 } 1482 if (!Subtable) 1483 { 1484 break; 1485 } 1486 DtInsertSubtable (ParentTable, Subtable); 1487 HmatStruct->Length += Subtable->Length; 1488 EntryNumber++; 1489 } 1490 1491 /* Validate number of entries */ 1492 1493 if (EntryNumber != 1494 ((UINT64)IntPDNumber * (UINT64)TgtPDNumber)) 1495 { 1496 DtFatal (ASL_MSG_INVALID_EXPRESSION, EntryStart, "HMAT"); 1497 return (AE_ERROR); 1498 } 1499 break; 1500 1501 case ACPI_HMAT_TYPE_CACHE: 1502 1503 /* Compile SMBIOS handles */ 1504 1505 HmatCache = ACPI_SUB_PTR (ACPI_HMAT_CACHE, 1506 Subtable->Buffer, sizeof (ACPI_HMAT_STRUCTURE)); 1507 SMBIOSHandleNumber = 0; 1508 while (*PFieldList) 1509 { 1510 Status = DtCompileTable (PFieldList, 1511 AcpiDmTableInfoHmat2a, &Subtable, TRUE); 1512 if (ACPI_FAILURE (Status)) 1513 { 1514 return (Status); 1515 } 1516 if (!Subtable) 1517 { 1518 break; 1519 } 1520 DtInsertSubtable (ParentTable, Subtable); 1521 HmatStruct->Length += Subtable->Length; 1522 SMBIOSHandleNumber++; 1523 } 1524 HmatCache->NumberOfSMBIOSHandles = SMBIOSHandleNumber; 1525 break; 1526 1527 default: 1528 1529 break; 1530 } 1531 } 1532 1533 return (AE_OK); 1534} 1535 1536 1537/****************************************************************************** 1538 * |
|
1311 * FUNCTION: DtCompileIort 1312 * 1313 * PARAMETERS: List - Current field list pointer 1314 * 1315 * RETURN: Status 1316 * 1317 * DESCRIPTION: Compile IORT. 1318 * --- 478 unchanged lines hidden --- | 1539 * FUNCTION: DtCompileIort 1540 * 1541 * PARAMETERS: List - Current field list pointer 1542 * 1543 * RETURN: Status 1544 * 1545 * DESCRIPTION: Compile IORT. 1546 * --- 478 unchanged lines hidden --- |