[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] x86/boot: turn the selftests ASSERT into a warning
commit b03e568ea9eb609f85a0a496c83a5f27ce18498e Author: Stefano Stabellini <sstabellini@xxxxxxxxxx> AuthorDate: Fri Jan 26 09:19:31 2018 -0800 Commit: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> CommitDate: Fri Jan 26 18:28:47 2018 +0000 x86/boot: turn the selftests ASSERT into a warning On selftests failure, print a very visible warning instead of crashing over an ASSERT. Signed-off-by: Stefano Stabellini <sstabellini@xxxxxxxxxx> Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Adjust to print extra information in the case of a failure Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> --- xen/arch/x86/extable.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/xen/arch/x86/extable.c b/xen/arch/x86/extable.c index 72f30d9..a6430a6 100644 --- a/xen/arch/x86/extable.c +++ b/xen/arch/x86/extable.c @@ -9,6 +9,7 @@ #include <xen/domain_page.h> #include <xen/virtual_region.h> #include <xen/livepatch.h> +#include <xen/warning.h> #define EX_FIELD(ptr, field) ((unsigned long)&(ptr)->field + (ptr)->field) @@ -145,6 +146,7 @@ static int __init stub_selftest(void) }; unsigned long addr = this_cpu(stubs.addr) + STUB_BUF_SIZE / 2; unsigned int i; + bool fail = false; printk("Running stub recovery selftests...\n"); @@ -152,7 +154,7 @@ static int __init stub_selftest(void) { uint8_t *ptr = map_domain_page(_mfn(this_cpu(stubs.mfn))) + (addr & ~PAGE_MASK); - unsigned long res = ~0; + union stub_exception_token res = { .raw = ~0 }; memset(ptr, 0xcc, STUB_BUF_SIZE / 2); memcpy(ptr, tests[i].opc, ARRAY_SIZE(tests[i].opc)); @@ -168,9 +170,22 @@ static int __init stub_selftest(void) _ASM_EXTABLE(.Lret%=, .Lfix%=) : [exn] "+m" (res) : [stb] "r" (addr), "a" (tests[i].rax)); - ASSERT(res == tests[i].res.raw); + + if ( res.raw != tests[i].res.raw ) + { + printk("Selftest %u failed: Opc %*ph " + "expected %u[%04x], got %u[%04x]\n", + i, (int)ARRAY_SIZE(tests[i].opc), tests[i].opc, + tests[i].res.fields.trapnr, tests[i].res.fields.ec, + res.fields.trapnr, res.fields.ec); + + fail = true; + } } + if ( fail ) + warning_add("SELFTEST FAILURE: CORRECT BEHAVIOR CANNOT BE GUARANTEED\n"); + return 0; } __initcall(stub_selftest); -- generated by git-patchbot for /home/xen/git/xen.git#master _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |