diff --git a/drivers/bus/acpi/acpica/dispatcher/dscontrol.c b/drivers/bus/acpi/acpica/dispatcher/dscontrol.c index b2bec503330..d78f765d7c2 100644 --- a/drivers/bus/acpi/acpica/dispatcher/dscontrol.c +++ b/drivers/bus/acpi/acpica/dispatcher/dscontrol.c @@ -127,7 +127,7 @@ AcpiDsExecBeginControlOp ( ControlState->Control.Opcode = Op->Common.AmlOpcode; ControlState->Control.LoopTimeout = AcpiOsGetTimer () + - (UINT64) (AcpiGbl_MaxLoopIterations * ACPI_100NSEC_PER_SEC); + ((UINT64) AcpiGbl_MaxLoopIterations * ACPI_100NSEC_PER_SEC); /* Push the control state on this walk's control stack */ diff --git a/drivers/bus/acpi/acpica/dispatcher/dsfield.c b/drivers/bus/acpi/acpica/dispatcher/dsfield.c index 43c1fe4fa1c..4c3c7ff22f3 100644 --- a/drivers/bus/acpi/acpica/dispatcher/dsfield.c +++ b/drivers/bus/acpi/acpica/dispatcher/dsfield.c @@ -201,7 +201,6 @@ AcpiDsCreateBufferField ( if (WalkState->DeferredNode) { Node = WalkState->DeferredNode; - Status = AE_OK; } else { @@ -327,7 +326,6 @@ AcpiDsGetFieldNames ( ACPI_PARSE_OBJECT *Child; #ifdef ACPI_EXEC_APP - UINT64 Value = 0; ACPI_OPERAND_OBJECT *ResultDesc; ACPI_OPERAND_OBJECT *ObjDesc; char *NamePath; @@ -469,14 +467,13 @@ AcpiDsGetFieldNames ( } #ifdef ACPI_EXEC_APP NamePath = AcpiNsGetExternalPathname (Info->FieldNode); - ObjDesc = AcpiUtCreateIntegerObject (Value); - if (ACPI_SUCCESS (AeLookupInitFileEntry (NamePath, &Value))) + if (ACPI_SUCCESS (AeLookupInitFileEntry (NamePath, &ObjDesc))) { AcpiExWriteDataToField (ObjDesc, AcpiNsGetAttachedObject (Info->FieldNode), &ResultDesc); + AcpiUtRemoveReference (ObjDesc); } - AcpiUtRemoveReference (ObjDesc); ACPI_FREE (NamePath); #endif } @@ -705,8 +702,6 @@ AcpiDsInitFieldObjects ( } /* Name already exists, just ignore this error */ - - Status = AE_OK; } Arg->Common.Node = Node; diff --git a/drivers/bus/acpi/acpica/events/evgpeblk.c b/drivers/bus/acpi/acpica/events/evgpeblk.c index b523bbf50a9..283b5ffedd2 100644 --- a/drivers/bus/acpi/acpica/events/evgpeblk.c +++ b/drivers/bus/acpi/acpica/events/evgpeblk.c @@ -164,6 +164,10 @@ AcpiEvDeleteGpeBlock ( /* Disable all GPEs in this block */ Status = AcpiHwDisableGpeBlock (GpeBlock->XruptBlock, GpeBlock, NULL); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } if (!GpeBlock->Previous && !GpeBlock->Next) { @@ -434,7 +438,7 @@ AcpiEvCreateGpeBlock ( WalkInfo.GpeDevice = GpeDevice; WalkInfo.ExecuteByOwnerId = FALSE; - Status = AcpiNsWalkNamespace (ACPI_TYPE_METHOD, GpeDevice, + (void) AcpiNsWalkNamespace (ACPI_TYPE_METHOD, GpeDevice, ACPI_UINT32_MAX, ACPI_NS_WALK_NO_UNLOCK, AcpiEvMatchGpeMethod, NULL, &WalkInfo, NULL); diff --git a/drivers/bus/acpi/acpica/events/evgpeinit.c b/drivers/bus/acpi/acpica/events/evgpeinit.c index 9b2d5ce928c..82d3e0c6efe 100644 --- a/drivers/bus/acpi/acpica/events/evgpeinit.c +++ b/drivers/bus/acpi/acpica/events/evgpeinit.c @@ -194,8 +194,6 @@ AcpiEvGpeInitialize ( * GPE0 and GPE1 do not have to be contiguous in the GPE number * space. However, GPE0 always starts at GPE number zero. */ - GpeNumberMax = AcpiGbl_FADT.Gpe1Base + - ((RegisterCount1 * ACPI_GPE_REGISTER_WIDTH) - 1); } } @@ -207,7 +205,6 @@ AcpiEvGpeInitialize ( ACPI_DEBUG_PRINT ((ACPI_DB_INIT, "There are no GPE blocks defined in the FADT\n")); - Status = AE_OK; goto Cleanup; } diff --git a/drivers/bus/acpi/acpica/events/evmisc.c b/drivers/bus/acpi/acpica/events/evmisc.c index 37132d41bb6..b9bf22e44ad 100644 --- a/drivers/bus/acpi/acpica/events/evmisc.c +++ b/drivers/bus/acpi/acpica/events/evmisc.c @@ -292,11 +292,16 @@ AcpiEvTerminate ( /* Disable all GPEs in all GPE blocks */ Status = AcpiEvWalkGpeList (AcpiHwDisableGpeBlock, NULL); + if (ACPI_FAILURE (Status)) + { + ACPI_EXCEPTION ((AE_INFO, Status, + "Could not disable GPEs in GPE block")); + } Status = AcpiEvRemoveGlobalLockHandler (); - if (ACPI_FAILURE(Status)) + if (ACPI_FAILURE (Status)) { - ACPI_ERROR ((AE_INFO, + ACPI_EXCEPTION ((AE_INFO, Status, "Could not remove Global Lock handler")); } @@ -306,7 +311,7 @@ AcpiEvTerminate ( /* Remove SCI handlers */ Status = AcpiEvRemoveAllSciHandlers (); - if (ACPI_FAILURE(Status)) + if (ACPI_FAILURE (Status)) { ACPI_ERROR ((AE_INFO, "Could not remove SCI handler")); @@ -315,6 +320,12 @@ AcpiEvTerminate ( /* Deallocate all handler objects installed within GPE info structs */ Status = AcpiEvWalkGpeList (AcpiEvDeleteGpeHandlers, NULL); + if (ACPI_FAILURE (Status)) + { + ACPI_EXCEPTION ((AE_INFO, Status, + "Could not delete GPE handlers")); + } + /* Return to original mode if necessary */ diff --git a/drivers/bus/acpi/acpica/events/evregion.c b/drivers/bus/acpi/acpica/events/evregion.c index ea774e27b18..209bde717e4 100644 --- a/drivers/bus/acpi/acpica/events/evregion.c +++ b/drivers/bus/acpi/acpica/events/evregion.c @@ -929,11 +929,11 @@ AcpiEvOrphanEcRegMethod ( Objects[1].Type = ACPI_TYPE_INTEGER; Objects[1].Integer.Value = ACPI_REG_CONNECT; - Status = AcpiEvaluateObject (RegMethod, NULL, &Args, NULL); + (void) AcpiEvaluateObject (RegMethod, NULL, &Args, NULL); Exit: /* We ignore all errors from above, don't care */ - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + (void) AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); return_VOID; } diff --git a/drivers/bus/acpi/acpica/events/evrgnini.c b/drivers/bus/acpi/acpica/events/evrgnini.c index 063afaa3055..5210a719d0d 100644 --- a/drivers/bus/acpi/acpica/events/evrgnini.c +++ b/drivers/bus/acpi/acpica/events/evrgnini.c @@ -255,7 +255,6 @@ AcpiEvPciConfigRegionSetup ( * root bridge. Still need to return a context object * for the new PCI_Config operation region, however. */ - Status = AE_OK; } else { diff --git a/drivers/bus/acpi/acpica/hardware/hwxfsleep.c b/drivers/bus/acpi/acpica/hardware/hwxfsleep.c index 6531d0174b8..d1c35c5a11d 100644 --- a/drivers/bus/acpi/acpica/hardware/hwxfsleep.c +++ b/drivers/bus/acpi/acpica/hardware/hwxfsleep.c @@ -249,6 +249,10 @@ AcpiEnterSleepStateS4bios ( Status = AcpiHwWritePort (AcpiGbl_FADT.SmiCommand, (UINT32) AcpiGbl_FADT.S4BiosRequest, 8); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } do { AcpiOsStall (ACPI_USEC_PER_MSEC); diff --git a/drivers/bus/acpi/acpica/include/acdebug.h b/drivers/bus/acpi/acpica/include/acdebug.h index 6db3e3626c0..c8bdf774f8d 100644 --- a/drivers/bus/acpi/acpica/include/acdebug.h +++ b/drivers/bus/acpi/acpica/include/acdebug.h @@ -284,6 +284,10 @@ void AcpiDbGetBusInfo ( void); +ACPI_STATUS +AcpiDbDisplayFields ( + UINT32 AddressSpaceId); + /* * dbdisply - debug display commands diff --git a/drivers/bus/acpi/acpica/include/acpixf.h b/drivers/bus/acpi/acpica/include/acpixf.h index d84c008daf9..bf88d566950 100644 --- a/drivers/bus/acpi/acpica/include/acpixf.h +++ b/drivers/bus/acpi/acpica/include/acpixf.h @@ -46,7 +46,7 @@ /* Current ACPICA subsystem version in YYYYMMDD format */ -#define ACPI_CA_VERSION 0x20190816 +#define ACPI_CA_VERSION 0x20191018 #include "acconfig.h" #include "actypes.h" @@ -556,7 +556,13 @@ AcpiInstallTable ( ACPI_EXTERNAL_RETURN_STATUS ( ACPI_STATUS AcpiLoadTable ( - ACPI_TABLE_HEADER *Table)) + ACPI_TABLE_HEADER *Table, + UINT32 *TableIdx)) + +ACPI_EXTERNAL_RETURN_STATUS ( +ACPI_STATUS +AcpiUnloadTable ( + UINT32 TableIndex)) ACPI_EXTERNAL_RETURN_STATUS ( ACPI_STATUS diff --git a/drivers/bus/acpi/acpica/include/acstruct.h b/drivers/bus/acpi/acpica/include/acstruct.h index ae168d75780..755df603c0f 100644 --- a/drivers/bus/acpi/acpica/include/acstruct.h +++ b/drivers/bus/acpi/acpica/include/acstruct.h @@ -249,6 +249,19 @@ typedef struct acpi_device_walk_info } ACPI_DEVICE_WALK_INFO; +/* Info used by Acpi AcpiDbDisplayFields */ + +typedef struct acpi_region_walk_info +{ + UINT32 DebugLevel; + UINT32 Count; + ACPI_OWNER_ID OwnerId; + UINT8 DisplayType; + UINT32 AddressSpaceId; + +} ACPI_REGION_WALK_INFO; + + /* TBD: [Restructure] Merge with struct above */ typedef struct acpi_walk_info diff --git a/drivers/bus/acpi/acpica/include/acutils.h b/drivers/bus/acpi/acpica/include/acutils.h index 7e4922f810f..1bf5fd157f6 100644 --- a/drivers/bus/acpi/acpica/include/acutils.h +++ b/drivers/bus/acpi/acpica/include/acutils.h @@ -182,10 +182,11 @@ typedef struct acpi_pkg_info /* AcpiUtDumpBuffer */ -#define DB_BYTE_DISPLAY 1 -#define DB_WORD_DISPLAY 2 -#define DB_DWORD_DISPLAY 4 -#define DB_QWORD_DISPLAY 8 +#define DB_BYTE_DISPLAY 0x01 +#define DB_WORD_DISPLAY 0x02 +#define DB_DWORD_DISPLAY 0x04 +#define DB_QWORD_DISPLAY 0x08 +#define DB_DISPLAY_DATA_ONLY 0x10 /* diff --git a/drivers/bus/acpi/acpica/include/platform/acfreebsd.h b/drivers/bus/acpi/acpica/include/platform/acfreebsd.h index 40da5b0a177..d49393890c8 100644 --- a/drivers/bus/acpi/acpica/include/platform/acfreebsd.h +++ b/drivers/bus/acpi/acpica/include/platform/acfreebsd.h @@ -95,6 +95,10 @@ #define DEBUGGER_THREADING 0 /* integrated with DDB */ +#ifdef INVARIANTS +#define ACPI_MUTEX_DEBUG +#endif + #else /* _KERNEL */ #if __STDC_HOSTED__ diff --git a/drivers/bus/acpi/acpica/namespace/nsconvert.c b/drivers/bus/acpi/acpica/namespace/nsconvert.c index a96ff5bd4d9..fe854747ce6 100644 --- a/drivers/bus/acpi/acpica/namespace/nsconvert.c +++ b/drivers/bus/acpi/acpica/namespace/nsconvert.c @@ -562,5 +562,5 @@ AcpiNsConvertToReference ( ErrorExit: ACPI_FREE (Name); *ReturnObject = NewObject; - return (AE_OK); + return (Status); } diff --git a/drivers/bus/acpi/acpica/namespace/nsdump.c b/drivers/bus/acpi/acpica/namespace/nsdump.c index 67ff9369587..085630c8a76 100644 --- a/drivers/bus/acpi/acpica/namespace/nsdump.c +++ b/drivers/bus/acpi/acpica/namespace/nsdump.c @@ -369,7 +369,7 @@ AcpiNsDumpOneObject ( AcpiOsPrintf (" ="); for (i = 0; (i < ObjDesc->Buffer.Length && i < 12); i++) { - AcpiOsPrintf (" %.2hX", ObjDesc->Buffer.Pointer[i]); + AcpiOsPrintf (" %2.2X", ObjDesc->Buffer.Pointer[i]); } } AcpiOsPrintf ("\n"); @@ -466,7 +466,7 @@ AcpiNsDumpOneObject ( case ACPI_TYPE_LOCAL_BANK_FIELD: case ACPI_TYPE_LOCAL_INDEX_FIELD: - AcpiOsPrintf (" Off %.3X Len %.2X Acc %.2hd\n", + AcpiOsPrintf (" Off %.3X Len %.2X Acc %.2X\n", (ObjDesc->CommonField.BaseByteOffset * 8) + ObjDesc->CommonField.StartFieldBitOffset, ObjDesc->CommonField.BitLength, @@ -651,8 +651,6 @@ AcpiNsDumpOneObject ( goto Cleanup; } - - ObjType = ACPI_TYPE_INVALID; /* Terminate loop after next pass */ } Cleanup: diff --git a/drivers/bus/acpi/acpica/namespace/nsxfname.c b/drivers/bus/acpi/acpica/namespace/nsxfname.c index 1d44670ef38..8c7e3710fb5 100644 --- a/drivers/bus/acpi/acpica/namespace/nsxfname.c +++ b/drivers/bus/acpi/acpica/namespace/nsxfname.c @@ -503,7 +503,7 @@ AcpiGetObjectInfo ( if (Cls) { - NextIdString = AcpiNsCopyDeviceId (&Info->ClassCode, + (void) AcpiNsCopyDeviceId (&Info->ClassCode, Cls, NextIdString); } diff --git a/drivers/bus/acpi/acpica/parser/psobject.c b/drivers/bus/acpi/acpica/parser/psobject.c index fb9652ec85a..252c13fe580 100644 --- a/drivers/bus/acpi/acpica/parser/psobject.c +++ b/drivers/bus/acpi/acpica/parser/psobject.c @@ -544,7 +544,7 @@ AcpiPsCompleteOp ( WalkState->Opcode = (*Op)->Common.AmlOpcode; Status = WalkState->AscendingCallback (WalkState); - Status = AcpiPsNextParseState (WalkState, *Op, Status); + (void) AcpiPsNextParseState (WalkState, *Op, Status); Status2 = AcpiPsCompleteThisOp (WalkState, *Op); if (ACPI_FAILURE (Status2)) @@ -553,7 +553,6 @@ AcpiPsCompleteOp ( } } - Status = AE_OK; break; case AE_CTRL_BREAK: @@ -574,7 +573,7 @@ AcpiPsCompleteOp ( WalkState->Opcode = (*Op)->Common.AmlOpcode; Status = WalkState->AscendingCallback (WalkState); - Status = AcpiPsNextParseState (WalkState, *Op, Status); + (void) AcpiPsNextParseState (WalkState, *Op, Status); Status2 = AcpiPsCompleteThisOp (WalkState, *Op); if (ACPI_FAILURE (Status2)) @@ -582,7 +581,6 @@ AcpiPsCompleteOp ( return_ACPI_STATUS (Status2); } - Status = AE_OK; break; case AE_CTRL_TERMINATE: diff --git a/drivers/bus/acpi/acpica/resources/rscreate.c b/drivers/bus/acpi/acpica/resources/rscreate.c index 5f8d5351abc..67ae548d2a9 100644 --- a/drivers/bus/acpi/acpica/resources/rscreate.c +++ b/drivers/bus/acpi/acpica/resources/rscreate.c @@ -373,6 +373,10 @@ AcpiRsCreatePciRoutingTable ( Status = AcpiNsHandleToPathname ( (ACPI_HANDLE) Node, &PathBuffer, FALSE); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } /* +1 to include null terminator */ diff --git a/drivers/bus/acpi/acpica/tables/tbdata.c b/drivers/bus/acpi/acpica/tables/tbdata.c index e6ac5bb1130..b4b6bb87e5e 100644 --- a/drivers/bus/acpi/acpica/tables/tbdata.c +++ b/drivers/bus/acpi/acpica/tables/tbdata.c @@ -1082,6 +1082,10 @@ AcpiTbLoadTable ( } Status = AcpiNsLoadTable (TableIndex, ParentNode); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } /* * Update GPEs for any new _Lxx/_Exx methods. Ignore errors. The host is diff --git a/drivers/bus/acpi/acpica/tables/tbxfload.c b/drivers/bus/acpi/acpica/tables/tbxfload.c index 4db4f522fe3..bca66fee1ec 100644 --- a/drivers/bus/acpi/acpica/tables/tbxfload.c +++ b/drivers/bus/acpi/acpica/tables/tbxfload.c @@ -337,6 +337,8 @@ ACPI_EXPORT_SYMBOL_INIT (AcpiInstallTable) * * PARAMETERS: Table - Pointer to a buffer containing the ACPI * table to be loaded. + * TableIdx - Pointer to a UINT32 for storing the table + * index, might be NULL * * RETURN: Status * @@ -350,7 +352,8 @@ ACPI_EXPORT_SYMBOL_INIT (AcpiInstallTable) ACPI_STATUS AcpiLoadTable ( - ACPI_TABLE_HEADER *Table) + ACPI_TABLE_HEADER *Table, + UINT32 *TableIdx) { ACPI_STATUS Status; UINT32 TableIndex; @@ -371,6 +374,11 @@ AcpiLoadTable ( ACPI_INFO (("Host-directed Dynamic ACPI Table Load:")); Status = AcpiTbInstallAndLoadTable (ACPI_PTR_TO_PHYSADDR (Table), ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL, FALSE, &TableIndex); + if (TableIdx) + { + *TableIdx = TableIndex; + } + if (ACPI_SUCCESS (Status)) { /* Complete the initialization/resolution of new objects */ @@ -474,3 +482,42 @@ AcpiUnloadParentTable ( } ACPI_EXPORT_SYMBOL (AcpiUnloadParentTable) + + +/******************************************************************************* + * + * FUNCTION: AcpiUnloadTable + * + * PARAMETERS: TableIndex - Index as returned by AcpiLoadTable + * + * RETURN: Status + * + * DESCRIPTION: Via the TableIndex representing an SSDT or OEMx table, unloads + * the table and deletes all namespace objects associated with + * that table. Unloading of the DSDT is not allowed. + * Note: Mainly intended to support hotplug removal of SSDTs. + * + ******************************************************************************/ + +ACPI_STATUS +AcpiUnloadTable ( + UINT32 TableIndex) +{ + ACPI_STATUS Status; + + + ACPI_FUNCTION_TRACE (AcpiUnloadTable); + + + if (TableIndex == 1) + { + /* TableIndex==1 means DSDT is the owner. DSDT cannot be unloaded */ + + return_ACPI_STATUS (AE_TYPE); + } + + Status = AcpiTbUnloadTable (TableIndex); + return_ACPI_STATUS (Status); +} + +ACPI_EXPORT_SYMBOL (AcpiUnloadTable) diff --git a/drivers/bus/acpi/acpica/utilities/utbuffer.c b/drivers/bus/acpi/acpica/utilities/utbuffer.c index e1fdc01ed2e..09d4bbe4c60 100644 --- a/drivers/bus/acpi/acpica/utilities/utbuffer.c +++ b/drivers/bus/acpi/acpica/utilities/utbuffer.c @@ -78,8 +78,10 @@ AcpiUtDumpBuffer ( UINT32 j; UINT32 Temp32; UINT8 BufChar; + UINT32 DisplayDataOnly = Display & DB_DISPLAY_DATA_ONLY; + Display &= ~DB_DISPLAY_DATA_ONLY; if (!Buffer) { AcpiOsPrintf ("Null Buffer Pointer in DumpBuffer!\n"); @@ -97,7 +99,10 @@ AcpiUtDumpBuffer ( { /* Print current offset */ - AcpiOsPrintf ("%8.4X: ", (BaseOffset + i)); + if (!DisplayDataOnly) + { + AcpiOsPrintf ("%8.4X: ", (BaseOffset + i)); + } /* Print 16 hex chars */ @@ -149,38 +154,41 @@ AcpiUtDumpBuffer ( * Print the ASCII equivalent characters but watch out for the bad * unprintable ones (printable chars are 0x20 through 0x7E) */ - AcpiOsPrintf (" "); - for (j = 0; j < 16; j++) + if (!DisplayDataOnly) { - if (i + j >= Count) + AcpiOsPrintf (" "); + for (j = 0; j < 16; j++) { - AcpiOsPrintf ("\n"); - return; + if (i + j >= Count) + { + AcpiOsPrintf ("\n"); + return; + } + + /* + * Add comment characters so rest of line is ignored when + * compiled + */ + if (j == 0) + { + AcpiOsPrintf ("// "); + } + + BufChar = Buffer[(ACPI_SIZE) i + j]; + if (isprint (BufChar)) + { + AcpiOsPrintf ("%c", BufChar); + } + else + { + AcpiOsPrintf ("."); + } } - /* - * Add comment characters so rest of line is ignored when - * compiled - */ - if (j == 0) - { - AcpiOsPrintf ("// "); - } + /* Done with that line. */ - BufChar = Buffer[(ACPI_SIZE) i + j]; - if (isprint (BufChar)) - { - AcpiOsPrintf ("%c", BufChar); - } - else - { - AcpiOsPrintf ("."); - } + AcpiOsPrintf ("\n"); } - - /* Done with that line. */ - - AcpiOsPrintf ("\n"); i += 16; } diff --git a/drivers/bus/acpi/acpica/utilities/uttrack.c b/drivers/bus/acpi/acpica/utilities/uttrack.c index a3e50a18d1a..998b3d17b9b 100644 --- a/drivers/bus/acpi/acpica/utilities/uttrack.c +++ b/drivers/bus/acpi/acpica/utilities/uttrack.c @@ -756,7 +756,7 @@ AcpiUtDumpAllocations ( case ACPI_DESC_TYPE_PARSER: - AcpiOsPrintf ("AmlOpcode 0x%04hX\n", + AcpiOsPrintf ("AmlOpcode 0x%04X\n", Descriptor->Op.Asl.AmlOpcode); break; diff --git a/media/doc/3rd Party Files.txt b/media/doc/3rd Party Files.txt index 419672d3c3f..7863c686f99 100644 --- a/media/doc/3rd Party Files.txt +++ b/media/doc/3rd Party Files.txt @@ -91,5 +91,5 @@ Used Version: 1.6.37 Website: http://libpng.sourceforge.net/ Title: ACPICA -Used Version: 20190509 +Used Version: 20191018 Website: https://acpica.org/