|
@@ -157,9 +157,10 @@ EXPORT_SYMBOL_GPL(apei_exec_noop);
|
|
* Interpret the specified action. Go through whole action table,
|
|
* Interpret the specified action. Go through whole action table,
|
|
* execute all instructions belong to the action.
|
|
* execute all instructions belong to the action.
|
|
*/
|
|
*/
|
|
-int apei_exec_run(struct apei_exec_context *ctx, u8 action)
|
|
|
|
|
|
+int __apei_exec_run(struct apei_exec_context *ctx, u8 action,
|
|
|
|
+ bool optional)
|
|
{
|
|
{
|
|
- int rc;
|
|
|
|
|
|
+ int rc = -ENOENT;
|
|
u32 i, ip;
|
|
u32 i, ip;
|
|
struct acpi_whea_header *entry;
|
|
struct acpi_whea_header *entry;
|
|
apei_exec_ins_func_t run;
|
|
apei_exec_ins_func_t run;
|
|
@@ -198,9 +199,9 @@ rewind:
|
|
goto rewind;
|
|
goto rewind;
|
|
}
|
|
}
|
|
|
|
|
|
- return 0;
|
|
|
|
|
|
+ return !optional && rc < 0 ? rc : 0;
|
|
}
|
|
}
|
|
-EXPORT_SYMBOL_GPL(apei_exec_run);
|
|
|
|
|
|
+EXPORT_SYMBOL_GPL(__apei_exec_run);
|
|
|
|
|
|
typedef int (*apei_exec_entry_func_t)(struct apei_exec_context *ctx,
|
|
typedef int (*apei_exec_entry_func_t)(struct apei_exec_context *ctx,
|
|
struct acpi_whea_header *entry,
|
|
struct acpi_whea_header *entry,
|