Deleted Added
full compact
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 ---