- bnc#803712 - after live migration rcu_sched_state detected stalls xen.migrate.tools-xend_move_assert_to_exception_block.patch xen.migrate.tools-libxc_print_stats_if_migration_is_aborted.patch xen.migrate.tools_set_number_of_dirty_pages_during_migration.patch xen.migrate.tools_notify_restore_to_hangup_during_migration_--abort_if_busy.patch - bnc#811764 - XEN (hypervisor or kernel) has a problem with EFI variable services x86-EFI-set-variable-permit-attrs.patch - Upstream patches from Jan 26060-ACPI-ERST-table-size-checks.patch 26692-x86-fully-protect-MSI-X-table-from-PV-guest-accesses.patch 26702-powernow-add-fixups-for-AMD-P-state-figures.patch 26704-x86-MCA-suppress-bank-clearing-for-certain-injected-events.patch (bnc#805579) 26731-AMD-IOMMU-Process-softirqs-while-building-dom0-iommu-mappings.patch 26733-VT-d-Enumerate-IOMMUs-when-listing-capabilities.patch 26734-ACPI-ERST-Name-table-in-otherwise-opaque-error-messages.patch 26736-ACPI-APEI-Unlock-apei_iomaps_lock-on-error-path.patch 26737-ACPI-APEI-Add-apei_exec_run_optional.patch 26742-IOMMU-properly-check-whether-interrupt-remapping-is-enabled.patch 26743-VT-d-deal-with-5500-5520-X58-errata.patch (bnc#801910) 26744-AMD-IOMMU-allow-disabling-only-interrupt-remapping.patch - PVonHVM: __devinit was removed in linux-3.8 OBS-URL: https://build.opensuse.org/package/show/Virtualization/xen?expand=0&rev=234
71 lines
2.4 KiB
Diff
71 lines
2.4 KiB
Diff
References: bnc#785211
|
|
|
|
# Commit 72af01bf6f7489e54ad59270222a29d3e8c501d1
|
|
# Date 2013-03-22 12:46:25 +0100
|
|
# Author Huang Ying <ying.huang@intel.com>
|
|
# Committer Jan Beulich <jbeulich@suse.com>
|
|
ACPI, APEI: Add apei_exec_run_optional
|
|
|
|
Some actions in APEI ERST and EINJ tables are optional, for example,
|
|
ACPI_EINJ_BEGIN_OPERATION action is used to do some preparation for
|
|
error injection, and firmware may choose to do nothing here. While
|
|
some other actions are mandatory, for example, firmware must provide
|
|
ACPI_EINJ_GET_ERROR_TYPE implementation.
|
|
|
|
Original implementation treats all actions as optional (that is, can
|
|
have no instructions), that may cause issue if firmware does not
|
|
provide some mandatory actions. To fix this, this patch adds
|
|
apei_exec_run_optional, which should be used for optional actions.
|
|
The original apei_exec_run should be used for mandatory actions.
|
|
|
|
Signed-off-by: Huang Ying <ying.huang@intel.com>
|
|
Signed-off-by: Jan Beulich <jbeulich@suse.com>
|
|
Tested-by: Andrew Cooper <andrew.cooper3@citrix.com>
|
|
|
|
--- a/xen/drivers/acpi/apei/apei-base.c
|
|
+++ b/xen/drivers/acpi/apei/apei-base.c
|
|
@@ -154,9 +154,10 @@ int apei_exec_noop(struct apei_exec_cont
|
|
* Interpret the specified action. Go through whole action table,
|
|
* 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_t optional)
|
|
{
|
|
- int rc;
|
|
+ int rc = -ENOENT;
|
|
u32 i, ip;
|
|
struct acpi_whea_header *entry;
|
|
apei_exec_ins_func_t run;
|
|
@@ -195,7 +196,7 @@ rewind:
|
|
goto rewind;
|
|
}
|
|
|
|
- return 0;
|
|
+ return !optional && rc < 0 ? rc : 0;
|
|
}
|
|
|
|
typedef int (*apei_exec_entry_func_t)(struct apei_exec_context *ctx,
|
|
--- a/xen/drivers/acpi/apei/apei-internal.h
|
|
+++ b/xen/drivers/acpi/apei/apei-internal.h
|
|
@@ -48,7 +48,18 @@ static inline u64 apei_exec_ctx_get_outp
|
|
return ctx->value;
|
|
}
|
|
|
|
-int apei_exec_run(struct apei_exec_context *ctx, u8 action);
|
|
+int __apei_exec_run(struct apei_exec_context *ctx, u8 action, bool_t optional);
|
|
+
|
|
+static inline int apei_exec_run(struct apei_exec_context *ctx, u8 action)
|
|
+{
|
|
+ return __apei_exec_run(ctx, action, 0);
|
|
+}
|
|
+
|
|
+/* It is optional whether the firmware provides the action */
|
|
+static inline int apei_exec_run_optional(struct apei_exec_context *ctx, u8 action)
|
|
+{
|
|
+ return __apei_exec_run(ctx, action, 1);
|
|
+}
|
|
|
|
/* Common instruction implementation */
|
|
|