WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] tools: hvmloader: attempt to SHUTDOWN_cra

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] tools: hvmloader: attempt to SHUTDOWN_crash on BUG
From: Xen patchbot-unstable <patchbot@xxxxxxx>
Date: Thu, 21 Apr 2011 09:20:14 +0100
Delivery-date: Thu, 21 Apr 2011 01:21:23 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Keir Fraser <keir@xxxxxxx>
# Date 1303148085 -3600
# Node ID 3539ef956a378ad7fe39654ff9aca5b0e7bf8843
# Parent  024b06de81caad72465a942e0f2f7feb30e322a0
tools: hvmloader: attempt to SHUTDOWN_crash on BUG

Executing UD2 (invalid opcode) triggers a triple fault which signals
reboot to the toolstack, rather than crash.

Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
Signed-off-by: Keir Fraser <keir@xxxxxxx>
---


diff -r 024b06de81ca -r 3539ef956a37 tools/firmware/hvmloader/hvmloader.c
--- a/tools/firmware/hvmloader/hvmloader.c      Mon Apr 18 18:08:47 2011 +0100
+++ b/tools/firmware/hvmloader/hvmloader.c      Mon Apr 18 18:34:45 2011 +0100
@@ -370,6 +370,9 @@
     int option_rom_sz = 0, vgabios_sz = 0, etherboot_sz = 0, smbios_sz = 0;
     uint32_t etherboot_phys_addr, option_rom_phys_addr;
 
+    /* Initialise hypercall stubs with RET, rendering them no-ops. */
+    memset((void *)HYPERCALL_PHYSICAL_ADDRESS, 0xc3 /* RET */, PAGE_SIZE);
+
     printf("HVM Loader\n");
 
     init_hypercalls();
diff -r 024b06de81ca -r 3539ef956a37 tools/firmware/hvmloader/util.c
--- a/tools/firmware/hvmloader/util.c   Mon Apr 18 18:08:47 2011 +0100
+++ b/tools/firmware/hvmloader/util.c   Mon Apr 18 18:34:45 2011 +0100
@@ -24,6 +24,7 @@
 #include <stdint.h>
 #include <xen/xen.h>
 #include <xen/memory.h>
+#include <xen/sched.h>
 
 void wrmsr(uint32_t idx, uint64_t v)
 {
@@ -537,19 +538,27 @@
     return 0;
 }
 
+static void __attribute__((noreturn)) crash(void)
+{
+    struct sched_shutdown shutdown = { .reason = SHUTDOWN_crash };
+    printf("*** HVMLoader crashed.\n");
+    hypercall_sched_op(SCHEDOP_shutdown, &shutdown);
+    printf("*** Failed to crash. Halting.\n");
+    for ( ; ; )
+        asm volatile ( "hlt" );
+}
+
 void __assert_failed(char *assertion, char *file, int line)
 {
-    printf("HVMLoader assertion '%s' failed at %s:%d\n",
+    printf("*** HVMLoader assertion '%s' failed at %s:%d\n",
            assertion, file, line);
-    for ( ; ; )
-        asm volatile ( "ud2" );
+    crash();
 }
 
 void __bug(char *file, int line)
 {
-    printf("HVMLoader bug at %s:%d\n", file, line);
-    for ( ; ; )
-        asm volatile ( "ud2" );
+    printf("*** HVMLoader bug at %s:%d\n", file, line);
+    crash();
 }
 
 static void validate_hvm_info(struct hvm_info_table *t)

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] tools: hvmloader: attempt to SHUTDOWN_crash on BUG, Xen patchbot-unstable <=